@xpert-ai/chatkit-react 0.0.4 → 0.1.1

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/useStableOptions.ts","../src/useChatKit.ts","../../web-component/dist/xpert-chatkit.js","../src/chatkit.tsx"],"sourcesContent":["import React from 'react';\n\nfunction isPlainObjectOrArray(\n obj: unknown,\n): obj is Record<string, unknown> | unknown[] {\n return (\n (obj !== null &&\n typeof obj === 'object' &&\n [null, Object.prototype].includes(Object.getPrototypeOf(obj))) ||\n Array.isArray(obj)\n );\n}\n\nexport function deepEqualIgnoringFns(\n a: unknown,\n b: unknown,\n seen = new WeakMap<WeakKey, unknown>(),\n): boolean {\n if (Object.is(a, b)) return true;\n\n // Functions: ignore identity/body differences entirely\n if (typeof a === 'function' && typeof b === 'function') {\n return typeof a === typeof b;\n }\n\n if (!isPlainObjectOrArray(a) || !isPlainObjectOrArray(b)) {\n return false;\n }\n\n // Cycles\n const mapped = seen.get(a);\n if (mapped && mapped === b) return true;\n seen.set(a, b);\n\n // Arrays\n if (Array.isArray(a) || Array.isArray(b)) {\n if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length)\n return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqualIgnoringFns(a[i], b[i], seen)) return false;\n }\n return true;\n }\n\n // Plain objects (Maps/Sets/Dates: treat as unequal unless same ref)\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n\n for (let i = 0; i < aKeys.length; i++) {\n const k = aKeys[i];\n if (!Object.prototype.hasOwnProperty.call(b, k)) return false;\n\n const av = (a as Record<string, unknown>)[k];\n const bv = (b as Record<string, unknown>)[k];\n\n if (!deepEqualIgnoringFns(av, bv, seen)) return false;\n }\n\n return true;\n}\n\nexport function withLatestFunctionWrappers<T extends Record<string, any>>(ref: {\n current: T;\n}): T {\n const path: (string | number)[] = [];\n\n const getByPath = (root: any, p: (string | number)[]) =>\n p.reduce((acc, k) => (acc == null ? acc : acc[k]), root);\n\n const wrap = (parentPath: (string | number)[], key: string | number) => {\n return (...args: any[]) => {\n const latestParent = getByPath(ref.current, parentPath);\n const latestFn: any = latestParent?.[key];\n if (typeof latestFn === 'function') {\n return latestFn.apply(latestParent, args);\n }\n };\n };\n\n const visit = (v: any): any => {\n if (typeof v === 'function') {\n const key = path[path.length - 1];\n const parentPath = path.slice(0, -1);\n return wrap(parentPath, key);\n }\n if (Array.isArray(v)) {\n const base = path.length;\n const out = new Array(v.length);\n for (let i = 0; i < v.length; i++) {\n path[base] = i;\n out[i] = visit(v[i]);\n }\n path.length = base;\n return out as any;\n }\n if (v && typeof v === 'object') {\n const base = path.length;\n const out: Record<string, any> = {};\n for (const k of Object.keys(v)) {\n path[base] = k;\n out[k] = visit(v[k]);\n }\n path.length = base;\n return out as any;\n }\n return v;\n };\n\n return visit(ref.current);\n}\n\nexport function useStableOptions<T extends Record<string, any>>(options: T): T {\n const latestOptions = React.useRef(options);\n latestOptions.current = options;\n const cache = React.useRef<{ snapshot: T; shaped: T } | null>(null);\n\n if (\n !cache.current ||\n !deepEqualIgnoringFns(cache.current.snapshot, options)\n ) {\n cache.current = {\n snapshot: options,\n shaped: withLatestFunctionWrappers(latestOptions),\n };\n }\n\n return cache.current.shaped;\n}\n","import * as React from 'react';\nimport { ChatKitEvents, ChatKitOptions, XpertAIChatKit } from '@xpert-ai/chatkit-types';\nimport { useStableOptions } from './useStableOptions';\n\n\ntype DotToCamelCase<S extends string> = S extends `${infer Head}.${infer Tail}`\n ? `${Head}${Capitalize<DotToCamelCase<Tail>>}`\n : S;\n\nconst CHATKIT_METHOD_NAMES = Object.freeze([\n 'focusComposer',\n 'setThreadId',\n 'sendUserMessage',\n 'setComposerValue',\n 'fetchUpdates',\n 'sendCustomAction',\n] as const);\n\ntype ChatKitMethod = (typeof CHATKIT_METHOD_NAMES)[number];\n\ntype ChatKitMethods = {\n [K in ChatKitMethod]: XpertAIChatKit[K];\n};\n\nexport type ToEventHandlerKey<K extends keyof ChatKitEvents> =\n DotToCamelCase<K> extends `chatkit${infer EventName}`\n ? `on${Capitalize<EventName>}`\n : never;\ntype ChatKitEventHandlers = Partial<{\n [K in keyof ChatKitEvents as ToEventHandlerKey<K>]: ChatKitEvents[K] extends CustomEvent<\n infer Detail\n >\n ? Detail extends undefined\n ? () => void\n : (event: Detail) => void\n : never;\n}>;\n\nexport type UseChatKitOptions = ChatKitOptions & ChatKitEventHandlers;\n\nexport type ChatKitControl = {\n setInstance: (instance: XpertAIChatKit | null) => void;\n options: ChatKitOptions;\n handlers: ChatKitEventHandlers;\n};\n\nexport type UseChatKitReturn = ChatKitMethods & {\n control: ChatKitControl;\n ref: React.RefObject<XpertAIChatKit | null>;\n};\n\n\nexport function useChatKit(options: UseChatKitOptions): UseChatKitReturn {\n const ref = React.useRef<XpertAIChatKit | null>(null);\n const stableOptions = useStableOptions(options);\n\n const methods: ChatKitMethods = React.useMemo(() => {\n return CHATKIT_METHOD_NAMES.reduce((acc, key) => {\n acc[key] = (...args: any[]) => {\n if (!ref.current) {\n console.warn('ChatKit element is not mounted');\n return;\n }\n\n return (ref.current as any)[key](...args);\n };\n return acc;\n }, {} as ChatKitMethods);\n }, []);\n\n const setInstance = React.useCallback(\n (instance: XpertAIChatKit | null): void => {\n ref.current = instance;\n },\n [],\n );\n\n const control: ChatKitControl = React.useMemo(() => {\n const options = {} as ChatKitOptions;\n const handlers: ChatKitEventHandlers = {};\n\n for (const [key, value] of Object.entries(stableOptions)) {\n if (/^on[A-Z]/.test(key) && key !== 'onClientTool') {\n // @ts-expect-error - too dynamic for TypeScript\n handlers[key] = value;\n } else {\n // @ts-expect-error - too dynamic for TypeScript\n options[key] = value;\n }\n }\n\n return {\n setInstance,\n options,\n handlers,\n };\n }, [stableOptions, setInstance]);\n\n return React.useMemo(\n () => ({ ...methods, control, ref }),\n [methods, control],\n );\n}","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol(\"metadata\")]) ?? null)];\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== void 0 && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null)) });\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {\n return __privateGet(this, extra);\n }, set [name](x) {\n return __privateSet(this, extra, x);\n } }, name));\n k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n for (var i = decorators.length - 1; i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n if (k) {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };\n if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n }\n it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;\n if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n else if (typeof it !== \"object\" || it === null) __typeError(\"Object expected\");\n else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\nvar _setTrainingOptOut_dec, _hideHistory_dec, _showHistory_dec, _sendCustomAction_dec, _shareThread_dec, _setThreadId_dec, _setComposerValue_dec, _sendUserMessage_dec, _fetchUpdates_dec, _focusComposer_dec, _a2, _opts, _frameUrl, _frame, _wrapper, _shadow, _resolveLoaded, _loaded, _messenger, _ChatKitElementBase_instances, emitAndThrow_fn, setOptionsDataAttributes_fn, getFrameUrl_fn, setFrameUrl_fn, consumeFrameUrl_fn, _handleFrameLoad, _initialized, maybeInit_fn, _init;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a, _b;\nclass EventEmitter {\n constructor() {\n __publicField(this, \"callbacks\", /* @__PURE__ */ new Map());\n }\n on(event, callback) {\n if (!this.callbacks.has(event)) {\n this.callbacks.set(event, /* @__PURE__ */ new Set());\n }\n this.callbacks.get(event).add(callback);\n }\n emit(event, ...args) {\n var _a22;\n const data = args[0];\n (_a22 = this.callbacks.get(event)) == null ? void 0 : _a22.forEach((callback) => callback(data));\n }\n off(event, callback) {\n var _a22;\n if (!callback) {\n this.callbacks.delete(event);\n } else {\n (_a22 = this.callbacks.get(event)) == null ? void 0 : _a22.delete(callback);\n }\n }\n allOff() {\n this.callbacks.clear();\n }\n}\nasync function getBytes(stream, onChunk) {\n const reader = stream.getReader();\n let result;\n while (!(result = await reader.read()).done) {\n onChunk(result.value);\n }\n}\nfunction getLines(onLine) {\n let buffer;\n let position;\n let fieldLength;\n let discardTrailingNewline = false;\n return function onChunk(arr) {\n if (buffer === void 0) {\n buffer = arr;\n position = 0;\n fieldLength = -1;\n } else {\n buffer = concat(buffer, arr);\n }\n const bufLength = buffer.length;\n let lineStart = 0;\n while (position < bufLength) {\n if (discardTrailingNewline) {\n if (buffer[position] === 10) {\n lineStart = ++position;\n }\n discardTrailingNewline = false;\n }\n let lineEnd = -1;\n for (; position < bufLength && lineEnd === -1; ++position) {\n switch (buffer[position]) {\n case 58:\n if (fieldLength === -1) {\n fieldLength = position - lineStart;\n }\n break;\n case 13:\n discardTrailingNewline = true;\n case 10:\n lineEnd = position;\n break;\n }\n }\n if (lineEnd === -1) {\n break;\n }\n onLine(buffer.subarray(lineStart, lineEnd), fieldLength);\n lineStart = position;\n fieldLength = -1;\n }\n if (lineStart === bufLength) {\n buffer = void 0;\n } else if (lineStart !== 0) {\n buffer = buffer.subarray(lineStart);\n position -= lineStart;\n }\n };\n}\nfunction getMessages(onId, onRetry, onMessage) {\n let message = newMessage();\n const decoder = new TextDecoder();\n return function onLine(line, fieldLength) {\n if (line.length === 0) {\n onMessage === null || onMessage === void 0 ? void 0 : onMessage(message);\n message = newMessage();\n } else if (fieldLength > 0) {\n const field = decoder.decode(line.subarray(0, fieldLength));\n const valueOffset = fieldLength + (line[fieldLength + 1] === 32 ? 2 : 1);\n const value = decoder.decode(line.subarray(valueOffset));\n switch (field) {\n case \"data\":\n message.data = message.data ? message.data + \"\\n\" + value : value;\n break;\n case \"event\":\n message.event = value;\n break;\n case \"id\":\n onId(message.id = value);\n break;\n case \"retry\":\n const retry = parseInt(value, 10);\n if (!isNaN(retry)) {\n onRetry(message.retry = retry);\n }\n break;\n }\n }\n };\n}\nfunction concat(a, b) {\n const res = new Uint8Array(a.length + b.length);\n res.set(a);\n res.set(b, a.length);\n return res;\n}\nfunction newMessage() {\n return {\n data: \"\",\n event: \"\",\n id: \"\",\n retry: void 0\n };\n}\nvar __rest = function(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nconst EventStreamContentType = \"text/event-stream\";\nconst DefaultRetryInterval = 1e3;\nconst LastEventId = \"last-event-id\";\nfunction fetchEventSource(input, _a22) {\n var { signal: inputSignal, headers: inputHeaders, onopen: inputOnOpen, onmessage, onclose, onerror, openWhenHidden, fetch: inputFetch } = _a22, rest = __rest(_a22, [\"signal\", \"headers\", \"onopen\", \"onmessage\", \"onclose\", \"onerror\", \"openWhenHidden\", \"fetch\"]);\n return new Promise((resolve, reject) => {\n const headers = Object.assign({}, inputHeaders);\n if (!headers.accept) {\n headers.accept = EventStreamContentType;\n }\n let curRequestController;\n function onVisibilityChange() {\n curRequestController.abort();\n if (!document.hidden) {\n create();\n }\n }\n if (!openWhenHidden) {\n document.addEventListener(\"visibilitychange\", onVisibilityChange);\n }\n let retryInterval = DefaultRetryInterval;\n let retryTimer = 0;\n function dispose() {\n document.removeEventListener(\"visibilitychange\", onVisibilityChange);\n window.clearTimeout(retryTimer);\n curRequestController.abort();\n }\n inputSignal === null || inputSignal === void 0 ? void 0 : inputSignal.addEventListener(\"abort\", () => {\n dispose();\n resolve();\n });\n const fetch2 = inputFetch !== null && inputFetch !== void 0 ? inputFetch : window.fetch;\n const onopen = inputOnOpen !== null && inputOnOpen !== void 0 ? inputOnOpen : defaultOnOpen;\n async function create() {\n var _a3;\n curRequestController = new AbortController();\n try {\n const response = await fetch2(input, Object.assign(Object.assign({}, rest), { headers, signal: curRequestController.signal }));\n await onopen(response);\n await getBytes(response.body, getLines(getMessages((id) => {\n if (id) {\n headers[LastEventId] = id;\n } else {\n delete headers[LastEventId];\n }\n }, (retry) => {\n retryInterval = retry;\n }, onmessage)));\n onclose === null || onclose === void 0 ? void 0 : onclose();\n dispose();\n resolve();\n } catch (err) {\n if (!curRequestController.signal.aborted) {\n try {\n const interval = (_a3 = onerror === null || onerror === void 0 ? void 0 : onerror(err)) !== null && _a3 !== void 0 ? _a3 : retryInterval;\n window.clearTimeout(retryTimer);\n retryTimer = window.setTimeout(create, interval);\n } catch (innerErr) {\n dispose();\n reject(innerErr);\n }\n }\n }\n }\n create();\n });\n}\nfunction defaultOnOpen(response) {\n const contentType = response.headers.get(\"content-type\");\n if (!(contentType === null || contentType === void 0 ? void 0 : contentType.startsWith(EventStreamContentType))) {\n throw new Error(`Expected content-type to be ${EventStreamContentType}, Actual: ${contentType}`);\n }\n}\nconst FRAME_SAFE_ERROR_KEY = \"__chatkit_error__\";\nclass HttpError extends Error {\n constructor(message, res, metadata) {\n super(message);\n __publicField(this, \"status\");\n __publicField(this, \"statusText\");\n __publicField(this, \"metadata\");\n this.name = \"HttpError\";\n this.statusText = res.statusText;\n this.status = res.status;\n this.metadata = metadata;\n }\n static fromPossibleFrameSafeError(error) {\n if (error instanceof HttpError) {\n return error;\n }\n if (error && typeof error === \"object\" && FRAME_SAFE_ERROR_KEY in error && error[FRAME_SAFE_ERROR_KEY] === \"HttpError\") {\n const safeError = error;\n const parsedError = new HttpError(\n safeError.message,\n {\n status: safeError.status,\n statusText: safeError.statusText\n },\n safeError.metadata\n );\n parsedError.stack = safeError.stack;\n return parsedError;\n }\n return null;\n }\n}\n_a = FRAME_SAFE_ERROR_KEY;\nconst _FrameSafeHttpError = class _FrameSafeHttpError2 {\n constructor(message, res, metadata) {\n __publicField(this, _a, \"HttpError\");\n __publicField(this, \"message\");\n __publicField(this, \"stack\");\n __publicField(this, \"status\");\n __publicField(this, \"statusText\");\n __publicField(this, \"metadata\");\n this.message = message;\n this.stack = new Error(message).stack;\n this.status = res.status;\n this.statusText = res.statusText;\n this.metadata = metadata;\n }\n static fromHttpError(error) {\n return new _FrameSafeHttpError2(\n error.message,\n {\n status: error.status,\n statusText: error.statusText\n },\n error.metadata\n );\n }\n};\nlet FrameSafeHttpError = _FrameSafeHttpError;\nconst BASE_RETRY_DELAY_MS = 1e3;\nconst MAX_RETRY_DELAY_MS = 1e4;\nconst MAX_RETRY_ATTEMPTS = 5;\nconst nextDelay = (attempt, maxRetryDelay = MAX_RETRY_DELAY_MS, baseDelayMs = BASE_RETRY_DELAY_MS) => {\n const max = Math.min(maxRetryDelay, baseDelayMs * 2 ** attempt);\n return Math.floor(max * (0.5 + Math.random() * 0.5));\n};\nclass RetryableError extends Error {\n constructor(cause) {\n super();\n this.cause = cause;\n }\n}\nconst fetchEventSourceWithRetry = async (url, params) => {\n let retryAttempt = 0;\n const { onopen, ...restParams } = params;\n await fetchEventSource(url, {\n ...restParams,\n onopen: async (res) => {\n var _a22;\n onopen == null ? void 0 : onopen(res);\n if (res.ok && ((_a22 = res.headers.get(\"content-type\")) == null ? void 0 : _a22.startsWith(\"text/event-stream\"))) {\n retryAttempt = 0;\n return;\n }\n const httpError = new FrameSafeHttpError(`Streaming failed: ${res.statusText}`, res);\n if (res.status >= 400 && res.status < 500) {\n throw httpError;\n } else {\n throw new RetryableError(httpError);\n }\n },\n onerror: (error) => {\n if (error instanceof RetryableError) {\n if (retryAttempt >= MAX_RETRY_ATTEMPTS) {\n throw error.cause;\n }\n retryAttempt += 1;\n return nextDelay(retryAttempt);\n }\n throw error;\n }\n });\n};\nlet IntegrationError$1 = class IntegrationError extends Error {\n constructor(message) {\n super(message);\n __publicField(this, \"_name\");\n this.name = \"IntegrationError\";\n this._name = this.name;\n }\n static fromPossibleFrameSafeError(error) {\n if (error && typeof error === \"object\" && FRAME_SAFE_ERROR_KEY in error && error[FRAME_SAFE_ERROR_KEY] === \"IntegrationError\") {\n const safeError = error;\n const parsedError = new IntegrationError(safeError.message);\n parsedError.stack = safeError.stack;\n return parsedError;\n }\n return null;\n }\n};\n_b = FRAME_SAFE_ERROR_KEY;\nclass FrameSafeIntegrationError {\n constructor(message) {\n __publicField(this, _b, \"IntegrationError\");\n __publicField(this, \"message\");\n __publicField(this, \"stack\");\n this.message = message;\n this.stack = new Error(message).stack;\n }\n}\nclass BaseMessenger {\n constructor({\n handlers,\n target,\n targetOrigin,\n fetch: fetch2 = window.fetch\n }) {\n __publicField(this, \"targetOrigin\");\n __publicField(this, \"target\");\n __publicField(this, \"commandHandlers\");\n __publicField(this, \"_fetch\");\n __publicField(this, \"emitter\", new EventEmitter());\n __publicField(this, \"handlers\", /* @__PURE__ */ new Map());\n __publicField(this, \"fetchEventSourceHandlers\", /* @__PURE__ */ new Map());\n __publicField(this, \"abortControllers\", /* @__PURE__ */ new Map());\n __publicField(this, \"commands\", new Proxy(\n {},\n {\n get: (_, command) => {\n return (data, transfer) => {\n return new Promise((resolve, reject) => {\n const nonce = crypto.randomUUID();\n this.handlers.set(nonce, { resolve, reject, stack: new Error().stack || \"\" });\n this.sendMessage(\n {\n type: \"command\",\n nonce,\n command: `on${command.charAt(0).toUpperCase()}${command.slice(1)}`,\n data\n },\n transfer\n );\n });\n };\n }\n }\n ));\n __publicField(this, \"handleMessage\", async (event) => {\n var _a22, _b2, _c, _d;\n if (!event.data || event.data.__xpaiChatKit !== true || event.origin !== this.targetOrigin || event.source !== this.target()) {\n return;\n }\n const data = event.data;\n switch (data.type) {\n case \"event\": {\n this.emitter.emit(data.event, data.data);\n break;\n }\n case \"fetch\": {\n try {\n if (data.formData) {\n const formData = new FormData();\n for (const [key, value] of Object.entries(data.formData)) {\n formData.append(key, value);\n }\n data.params.body = formData;\n }\n const controller = new AbortController();\n this.abortControllers.set(data.nonce, controller);\n data.params.signal = controller.signal;\n const res = await this._fetch(data.url, data.params);\n if (!res.ok) {\n const message = await res.json().then((json2) => json2.message || res.statusText).catch(() => res.statusText);\n throw new FrameSafeHttpError(message, res);\n }\n const json = await res.json().catch(() => ({}));\n this.sendMessage({\n type: \"response\",\n response: json,\n nonce: data.nonce\n });\n } catch (error) {\n this.sendMessage({\n type: \"response\",\n error,\n nonce: data.nonce\n });\n }\n break;\n }\n case \"fetchEventSource\": {\n try {\n const controller = new AbortController();\n this.abortControllers.set(data.nonce, controller);\n await fetchEventSourceWithRetry(data.url, {\n ...data.params,\n signal: controller.signal,\n fetch: this._fetch,\n onmessage: (message) => {\n this.sendMessage({\n type: \"fetchEventSourceMessage\",\n message,\n nonce: data.nonce\n });\n }\n });\n this.sendMessage({\n type: \"response\",\n response: void 0,\n nonce: data.nonce\n });\n } catch (error) {\n this.sendMessage({\n type: \"response\",\n error,\n nonce: data.nonce\n });\n }\n break;\n }\n case \"command\": {\n if (!this.canReceiveCommand(data.command)) {\n this.sendMessage({\n type: \"response\",\n error: new FrameSafeIntegrationError(`Command ${data.command} not supported`),\n nonce: data.nonce\n });\n return;\n }\n try {\n const response = await ((_b2 = (_a22 = this.commandHandlers)[data.command]) == null ? void 0 : _b2.call(_a22, data.data));\n this.sendMessage({\n type: \"response\",\n response,\n nonce: data.nonce\n });\n } catch (error) {\n this.sendMessage({\n type: \"response\",\n error,\n nonce: data.nonce\n });\n }\n break;\n }\n case \"response\": {\n const handler = this.handlers.get(data.nonce);\n if (!handler) {\n console.error(\"No handler found for nonce\", data.nonce);\n return;\n }\n if (data.error) {\n const integrationError = IntegrationError$1.fromPossibleFrameSafeError(data.error);\n const httpError = HttpError.fromPossibleFrameSafeError(data.error);\n if (integrationError) {\n integrationError.stack = handler.stack;\n handler.reject(integrationError);\n } else if (httpError) {\n handler.reject(httpError);\n } else {\n handler.reject(data.error);\n }\n } else {\n handler.resolve(data.response);\n }\n this.handlers.delete(data.nonce);\n break;\n }\n case \"fetchEventSourceMessage\": {\n const handler = this.fetchEventSourceHandlers.get(data.nonce);\n if (!handler) {\n console.error(\"No handler found for nonce\", data.nonce);\n return;\n }\n (_d = (_c = this.fetchEventSourceHandlers.get(data.nonce)) == null ? void 0 : _c.onmessage) == null ? void 0 : _d.call(_c, data.message);\n break;\n }\n case \"abortSignal\": {\n const controller = this.abortControllers.get(data.nonce);\n if (controller) {\n controller.abort(data.reason);\n this.abortControllers.delete(data.nonce);\n }\n break;\n }\n }\n });\n this.commandHandlers = handlers;\n this.target = target;\n this.targetOrigin = targetOrigin;\n this._fetch = (...args) => fetch2(...args);\n }\n setTargetOrigin(targetOrigin) {\n this.targetOrigin = targetOrigin;\n }\n sendMessage(data, transfer) {\n var _a22;\n const message = {\n __xpaiChatKit: true,\n ...data\n };\n (_a22 = this.target()) == null ? void 0 : _a22.postMessage(message, this.targetOrigin, transfer);\n }\n connect() {\n window.addEventListener(\"message\", this.handleMessage);\n }\n disconnect() {\n window.removeEventListener(\"message\", this.handleMessage);\n }\n fetch(url, params) {\n return new Promise((resolve, reject) => {\n const nonce = crypto.randomUUID();\n this.handlers.set(nonce, { resolve, reject, stack: new Error().stack || \"\" });\n let formData;\n if (params.body instanceof FormData) {\n formData = {};\n for (const [key, value] of params.body.entries()) {\n formData[key] = value;\n }\n params.body = void 0;\n }\n if (params.signal) {\n params.signal.addEventListener(\"abort\", () => {\n var _a22;\n this.sendMessage({\n type: \"abortSignal\",\n nonce,\n reason: (_a22 = params.signal) == null ? void 0 : _a22.reason\n });\n });\n params.signal = void 0;\n }\n this.sendMessage({ type: \"fetch\", nonce, params, formData, url });\n });\n }\n // Supporting onopen would require a good way for us to serialize the Response object\n // across the iframe boundary, which is not trivial and also not really necessary.\n fetchEventSource(url, params) {\n return new Promise((resolve, reject) => {\n const { onmessage, signal, ...rest } = params;\n const nonce = crypto.randomUUID();\n this.handlers.set(nonce, { resolve, reject, stack: new Error().stack || \"\" });\n this.fetchEventSourceHandlers.set(nonce, {\n onmessage\n });\n if (signal) {\n signal.addEventListener(\"abort\", () => {\n this.sendMessage({\n type: \"abortSignal\",\n nonce,\n reason: signal.reason\n });\n });\n }\n this.sendMessage({ type: \"fetchEventSource\", nonce, params: rest, url });\n });\n }\n emit(...[event, data, transfer]) {\n this.sendMessage(\n {\n type: \"event\",\n event,\n data\n },\n transfer\n );\n }\n on(...[event, callback]) {\n this.emitter.on(event, callback);\n }\n destroy() {\n window.removeEventListener(\"message\", this.handleMessage);\n this.emitter.allOff();\n this.handlers.clear();\n }\n}\nconst toUrlBase64 = (bin) => btoa(bin).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\nconst encodeBase64 = (value) => {\n if (value === void 0) {\n throw new TypeError(\n \"encodeBase64: `undefined` cannot be encoded to valid JSON. Pass null instead.\"\n );\n }\n const json = JSON.stringify(value);\n const bytes = new TextEncoder().encode(json);\n let bin = \"\";\n for (const b of bytes) bin += String.fromCharCode(b);\n return toUrlBase64(bin);\n};\nclass IntegrationError2 extends Error {\n}\nfunction fromPossibleFrameSafeError(err) {\n return err.message;\n}\nconst BASE_CAPABILITY_ALLOWLIST = [\n // commands\n \"command.setOptions\",\n \"command.sendUserMessage\",\n \"command.setComposerValue\",\n \"command.setThreadId\",\n \"command.focusComposer\",\n \"command.fetchUpdates\",\n \"command.sendCustomAction\",\n \"command.showHistory\",\n \"command.hideHistory\",\n // events\n \"event.ready\",\n \"event.error\",\n \"event.log\",\n \"event.response.start\",\n \"event.response.end\",\n \"event.response.stop\",\n \"event.thread.change\",\n \"event.tool.change\",\n \"event.thread.load.start\",\n \"event.thread.load.end\",\n \"event.deeplink\",\n \"event.effect\",\n // errors\n \"error.StreamError\",\n \"error.StreamEventParsingError\",\n \"error.WidgetItemError\",\n \"error.InitialThreadLoadError\",\n \"error.FileAttachmentError\",\n \"error.HistoryViewError\",\n \"error.FatalAppError\",\n \"error.IntegrationError\",\n \"error.EntitySearchError\",\n \"error.DomainVerificationRequestError\",\n // backend\n \"backend.threads.get_by_id\",\n \"backend.threads.list\",\n \"backend.threads.update\",\n \"backend.threads.delete\",\n \"backend.threads.create\",\n \"backend.threads.add_user_message\",\n \"backend.threads.add_client_tool_output\",\n \"backend.threads.retry_after_item\",\n \"backend.threads.custom_action\",\n \"backend.attachments.create\",\n \"backend.attachments.get_preview\",\n \"backend.attachments.delete\",\n \"backend.items.list\",\n \"backend.items.feedback\",\n // thread item types\n \"thread.item.generated_image\",\n \"thread.item.user_message\",\n \"thread.item.assistant_message\",\n \"thread.item.client_tool_call\",\n \"thread.item.widget\",\n \"thread.item.task\",\n \"thread.item.workflow\",\n \"thread.item.end_of_turn\",\n \"thread.item.image_generation\",\n // widgets\n \"widget.Basic\",\n \"widget.Card\",\n \"widget.ListView\",\n \"widget.ListViewItem\",\n \"widget.Badge\",\n \"widget.Box\",\n \"widget.Row\",\n \"widget.Col\",\n \"widget.Button\",\n \"widget.Caption\",\n \"widget.Chart\",\n \"widget.Checkbox\",\n \"widget.DatePicker\",\n \"widget.Divider\",\n \"widget.Form\",\n \"widget.Icon\",\n \"widget.Image\",\n \"widget.Input\",\n \"widget.Label\",\n \"widget.Markdown\",\n \"widget.RadioGroup\",\n \"widget.Select\",\n \"widget.Spacer\",\n \"widget.Text\",\n \"widget.Textarea\",\n \"widget.Title\",\n \"widget.Transition\"\n];\nconst BASE_CAPABILITY_DENYLIST = [\n // --- commands\n \"command.shareThread\",\n \"command.setTrainingOptOut\",\n // --- events\n \"event.thread.restore\",\n \"event.message.share\",\n \"event.image.download\",\n \"event.history.open\",\n \"event.history.close\",\n \"event.log.chatgpt\",\n // --- errors\n // These errors considered internal and are not exposed to the user by default.\n \"error.HttpError\",\n \"error.NetworkError\",\n \"error.UnhandledError\",\n \"error.UnhandledPromiseRejectionError\",\n \"error.StreamEventHandlingError\",\n \"error.StreamStopError\",\n \"error.ThreadRenderingError\",\n \"error.IntlError\",\n \"error.AppError\",\n // --- backend\n \"backend.threads.stop\",\n \"backend.threads.share\",\n \"backend.threads.create_from_shared\",\n \"backend.threads.init\",\n \"backend.attachments.process\",\n // widgets\n \"widget.CardCarousel\",\n \"widget.Favicon\",\n \"widget.CardLinkItem\",\n \"widget.Map\"\n];\nconst PROFILE_TO_RULES = {\n \"chatkit\": {\n allow: [...BASE_CAPABILITY_ALLOWLIST, \"thread.item.image_generation\"],\n deny: BASE_CAPABILITY_DENYLIST\n }\n};\nconst getCapabilities = (profile) => {\n const rules = PROFILE_TO_RULES[profile];\n const effective = new Set(rules.allow);\n for (const capability of rules.deny ?? []) {\n effective.delete(capability);\n }\n const commands = /* @__PURE__ */ new Set();\n const events = /* @__PURE__ */ new Set();\n const backend = /* @__PURE__ */ new Set();\n const threadItems = /* @__PURE__ */ new Set();\n const errors = /* @__PURE__ */ new Set();\n const widgets = /* @__PURE__ */ new Set();\n for (const capability of effective) {\n if (capability.startsWith(\"command.\")) {\n commands.add(capability.slice(\"command.\".length));\n continue;\n }\n if (capability.startsWith(\"event.\")) {\n events.add(capability.slice(\"event.\".length));\n continue;\n }\n if (capability.startsWith(\"backend.\")) {\n backend.add(capability.slice(\"backend.\".length));\n continue;\n }\n if (capability.startsWith(\"thread.item.\")) {\n threadItems.add(capability.slice(\"thread.item.\".length));\n }\n if (capability.startsWith(\"error.\")) {\n errors.add(capability.slice(\"error.\".length));\n continue;\n }\n if (capability.startsWith(\"widget.\")) {\n widgets.add(capability.slice(\"widget.\".length));\n continue;\n }\n }\n return { commands, events, backend, threadItems, errors, widgets };\n};\nclass ChatFrameMessenger extends BaseMessenger {\n // Messenger running in outer can always handle commands coming from inner\n canReceiveCommand(_) {\n return true;\n }\n}\nconst removeMethods = (obj, seen = /* @__PURE__ */ new WeakSet()) => {\n if (typeof obj === \"function\") return \"[ChatKitMethod]\";\n if (typeof obj !== \"object\" || obj === null) return obj;\n if (seen.has(obj)) return obj;\n seen.add(obj);\n if (Array.isArray(obj)) {\n return obj.map((c) => removeMethods(c, seen));\n }\n const result = {};\n for (const [key, value] of Object.entries(obj)) {\n if (typeof value !== \"function\") {\n result[key] = removeMethods(value, seen);\n } else {\n result[key] = \"[ChatKitMethod]\";\n }\n }\n return result;\n};\nfunction getInnerOptions(options) {\n return removeMethods(options);\n}\nfunction requireCommandCapability(value, context) {\n const command = String(context.name);\n return function(...args) {\n if (!this.capabilities.commands.has(command)) {\n throw new IntegrationError2(\n `ChatKit command \"${String(command)}\" is not available for the \"${this.profile}\" profile.`\n );\n }\n return value.apply(this, args);\n };\n}\nclass ChatKitElementBase extends (_a2 = HTMLElement, _focusComposer_dec = [requireCommandCapability], _fetchUpdates_dec = [requireCommandCapability], _sendUserMessage_dec = [requireCommandCapability], _setComposerValue_dec = [requireCommandCapability], _setThreadId_dec = [requireCommandCapability], _shareThread_dec = [requireCommandCapability], _sendCustomAction_dec = [requireCommandCapability], _showHistory_dec = [requireCommandCapability], _hideHistory_dec = [requireCommandCapability], _setTrainingOptOut_dec = [requireCommandCapability], _a2) {\n constructor({ profile }) {\n super();\n __runInitializers(_init, 5, this);\n __privateAdd(this, _ChatKitElementBase_instances);\n __privateAdd(this, _opts);\n __privateAdd(this, _frameUrl);\n __privateAdd(this, _frame);\n __privateAdd(this, _wrapper);\n __privateAdd(this, _shadow, this.attachShadow({ mode: \"open\" }));\n __privateAdd(this, _resolveLoaded);\n __privateAdd(this, _loaded, new Promise((resolve) => {\n __privateSet(this, _resolveLoaded, resolve);\n }));\n __privateAdd(this, _messenger, new ChatFrameMessenger({\n fetch: (...args) => {\n var _a3;\n const customFetch = ((_a3 = __privateGet(this, _opts)) == null ? void 0 : _a3.api) && \"fetch\" in __privateGet(this, _opts).api && __privateGet(this, _opts).api.fetch;\n return customFetch ? customFetch(...args) : fetch(...args);\n },\n target: () => {\n var _a3;\n return ((_a3 = __privateGet(this, _frame)) == null ? void 0 : _a3.contentWindow) ?? null;\n },\n targetOrigin: window.location.origin,\n handlers: {\n onFileInputClick: ({ inputAttributes }) => {\n return new Promise((resolve) => {\n const input = document.createElement(\"input\");\n for (const [key, value] of Object.entries(inputAttributes)) {\n input.setAttribute(key, String(value));\n }\n const respond = () => {\n resolve(Array.from(input.files || []));\n if (__privateGet(this, _shadow).contains(input)) {\n __privateGet(this, _shadow).removeChild(input);\n }\n };\n input.addEventListener(\"cancel\", respond);\n input.addEventListener(\"change\", respond);\n __privateGet(this, _shadow).appendChild(input);\n input.click();\n });\n },\n onClientToolCall: async ({\n name,\n params,\n id,\n tool_call_id\n }) => {\n var _a3;\n const onClientTool = (_a3 = __privateGet(this, _opts)) == null ? void 0 : _a3.onClientTool;\n if (!onClientTool) {\n __privateMethod(this, _ChatKitElementBase_instances, emitAndThrow_fn).call(this, new IntegrationError2(\n `No handler for client tool calls. You'll need to add onClientTool to your ChatKit options.`\n ));\n }\n return onClientTool({ name, params, id, tool_call_id });\n },\n onWidgetAction: async ({ action, widgetItem }) => {\n var _a3, _b2;\n const onAction = (_b2 = (_a3 = __privateGet(this, _opts)) == null ? void 0 : _a3.widgets) == null ? void 0 : _b2.onAction;\n if (!onAction) {\n __privateMethod(this, _ChatKitElementBase_instances, emitAndThrow_fn).call(this, new IntegrationError2(\n `No handler for widget actions. You'll need to add widgets.onAction to your ChatKit options.`\n ));\n }\n return onAction(action, widgetItem);\n },\n onEntitySearch: async ({ query }) => {\n var _a3, _b2, _c;\n return ((_c = (_b2 = (_a3 = __privateGet(this, _opts)) == null ? void 0 : _a3.entities) == null ? void 0 : _b2.onTagSearch) == null ? void 0 : _c.call(_b2, query)) ?? [];\n },\n onEntityClick: async ({ entity }) => {\n var _a3, _b2, _c;\n return (_c = (_b2 = (_a3 = __privateGet(this, _opts)) == null ? void 0 : _a3.entities) == null ? void 0 : _b2.onClick) == null ? void 0 : _c.call(_b2, entity);\n },\n onEntityPreview: async ({ entity }) => {\n var _a3, _b2, _c;\n return ((_c = (_b2 = (_a3 = __privateGet(this, _opts)) == null ? void 0 : _a3.entities) == null ? void 0 : _b2.onRequestPreview) == null ? void 0 : _c.call(_b2, entity)) ?? { preview: null };\n },\n onGetClientSecret: async (currentClientSecret) => {\n if (!__privateGet(this, _opts) || !(\"getClientSecret\" in __privateGet(this, _opts).api) || !__privateGet(this, _opts).api.getClientSecret) {\n __privateMethod(this, _ChatKitElementBase_instances, emitAndThrow_fn).call(this, new IntegrationError2(\n \"Could not refresh the session because ChatKitOptions.api.getClientSecret is not configured.\"\n ));\n }\n return __privateGet(this, _opts).api.getClientSecret(currentClientSecret ?? null);\n },\n onAddMetadataToRequest: ({\n op,\n params\n }) => {\n throw new IntegrationError2(\"ChatKit: onAddMetadataToRequest is unimplemented.\");\n }\n }\n }));\n __privateAdd(this, _handleFrameLoad, () => {\n var _a3;\n this.dataset.loaded = \"true\";\n this.dispatchEvent(new CustomEvent(\"chatkit.ready\", { bubbles: true, composed: true }));\n (_a3 = __privateGet(this, _resolveLoaded)) == null ? void 0 : _a3.call(this);\n });\n __privateAdd(this, _initialized, false);\n this.profile = profile;\n this.capabilities = getCapabilities(profile);\n }\n setProfile(profile) {\n this.profile = profile;\n this.capabilities = getCapabilities(profile);\n }\n connectedCallback() {\n const style = document.createElement(\"style\");\n style.textContent = `\n :host {\n display: block;\n position: relative;\n height: 100%;\n width: 100%;\n }\n .ck-iframe {\n border: none;\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n color-scheme: light only;\n }\n .ck-wrapper {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n opacity: 0;\n }\n :host([data-color-scheme=\"dark\"]) .ck-iframe {\n color-scheme: dark only;\n }\n :host([data-loaded=\"true\"]) .ck-wrapper {\n opacity: 1;\n }\n `;\n const frame = document.createElement(\"iframe\");\n frame.className = \"ck-iframe\";\n frame.name = \"chatkit\";\n frame.role = \"presentation\";\n frame.tabIndex = 0;\n frame.setAttribute(\"allowtransparency\", \"true\");\n frame.setAttribute(\"frameborder\", \"0\");\n frame.setAttribute(\"scrolling\", \"no\");\n frame.setAttribute(\"allow\", \"clipboard-read; clipboard-write\");\n __privateSet(this, _frame, frame);\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"ck-wrapper\";\n wrapper.appendChild(frame);\n __privateSet(this, _wrapper, wrapper);\n __privateGet(this, _shadow).append(style);\n __privateGet(this, _messenger).on(\"left_header_icon_click\", () => {\n var _a3, _b2, _c;\n (_c = (_b2 = (_a3 = __privateGet(this, _opts)) == null ? void 0 : _a3.header) == null ? void 0 : _b2.leftAction) == null ? void 0 : _c.onClick();\n });\n __privateGet(this, _messenger).on(\"right_header_icon_click\", () => {\n var _a3, _b2, _c;\n (_c = (_b2 = (_a3 = __privateGet(this, _opts)) == null ? void 0 : _a3.header) == null ? void 0 : _b2.rightAction) == null ? void 0 : _c.onClick();\n });\n __privateGet(this, _messenger).on(\"public_event\", ([event, data]) => {\n if (!this.capabilities.events.has(event)) return;\n if (event === \"error\" && \"error\" in data) {\n const error = fromPossibleFrameSafeError(data.error);\n this.dispatchEvent(new CustomEvent(\"chatkit.error\", { detail: { error } }));\n if (error instanceof IntegrationError2) {\n throw error;\n }\n return;\n }\n this.dispatchEvent(new CustomEvent(`chatkit.${event}`, { detail: data }));\n });\n __privateGet(this, _messenger).on(\"unmount\", () => {\n if (__privateGet(this, _wrapper) && __privateGet(this, _shadow).contains(__privateGet(this, _wrapper))) {\n __privateGet(this, _shadow).removeChild(__privateGet(this, _wrapper));\n __privateSet(this, _wrapper, void 0);\n __privateSet(this, _frame, void 0);\n }\n });\n __privateGet(this, _messenger).on(\n \"capabilities_profile_change\",\n ({ profile }) => {\n this.setProfile(profile);\n }\n );\n frame.addEventListener(\"load\", __privateGet(this, _handleFrameLoad), { once: true });\n try {\n __privateMethod(this, _ChatKitElementBase_instances, maybeInit_fn).call(this);\n } catch (error) {\n console.error(error);\n __privateMethod(this, _ChatKitElementBase_instances, emitAndThrow_fn).call(this, error instanceof Error ? error : new IntegrationError2(\"Failed to initialize ChatKit\"));\n }\n }\n disconnectedCallback() {\n var _a3;\n (_a3 = __privateGet(this, _frame)) == null ? void 0 : _a3.removeEventListener(\"load\", __privateGet(this, _handleFrameLoad));\n __privateGet(this, _messenger).disconnect();\n }\n applySanitizedOptions(newOptions) {\n __privateSet(this, _opts, newOptions);\n if (__privateGet(this, _initialized)) {\n __privateMethod(this, _ChatKitElementBase_instances, setOptionsDataAttributes_fn).call(this, __privateGet(this, _opts));\n __privateGet(this, _loaded).then(() => {\n __privateGet(this, _messenger).commands.setOptions(getInnerOptions(newOptions));\n });\n } else {\n __privateMethod(this, _ChatKitElementBase_instances, maybeInit_fn).call(this);\n }\n }\n setOptions(newOptions) {\n try {\n const sanitized = this.sanitizeOptions(newOptions);\n __privateMethod(this, _ChatKitElementBase_instances, consumeFrameUrl_fn).call(this, sanitized);\n this.applySanitizedOptions(sanitized);\n } catch (error) {\n __privateMethod(this, _ChatKitElementBase_instances, emitAndThrow_fn).call(this, error instanceof Error ? error : new IntegrationError2(\"Failed to parse options\"));\n }\n }\n async focusComposer() {\n var _a3, _b2;\n await __privateGet(this, _loaded);\n (_a3 = __privateGet(this, _frame)) == null ? void 0 : _a3.focus();\n await ((_b2 = __privateGet(this, _messenger)) == null ? void 0 : _b2.commands.focusComposer());\n }\n async fetchUpdates() {\n var _a3;\n await __privateGet(this, _loaded);\n await ((_a3 = __privateGet(this, _messenger)) == null ? void 0 : _a3.commands.fetchUpdates());\n }\n async sendUserMessage(params) {\n var _a3;\n await __privateGet(this, _loaded);\n await ((_a3 = __privateGet(this, _messenger)) == null ? void 0 : _a3.commands.sendUserMessage(params));\n }\n async setComposerValue(params) {\n var _a3;\n await __privateGet(this, _loaded);\n await ((_a3 = __privateGet(this, _messenger)) == null ? void 0 : _a3.commands.setComposerValue(params));\n }\n async setThreadId(threadId) {\n var _a3;\n await __privateGet(this, _loaded);\n await ((_a3 = __privateGet(this, _messenger)) == null ? void 0 : _a3.commands.setThreadId({ threadId }));\n }\n async shareThread() {\n var _a3;\n await __privateGet(this, _loaded);\n return (_a3 = __privateGet(this, _messenger)) == null ? void 0 : _a3.commands.shareThread();\n }\n async sendCustomAction(action, itemId) {\n var _a3;\n await __privateGet(this, _loaded);\n return (_a3 = __privateGet(this, _messenger)) == null ? void 0 : _a3.commands.sendCustomAction({ action, itemId });\n }\n async showHistory() {\n var _a3;\n await __privateGet(this, _loaded);\n return (_a3 = __privateGet(this, _messenger)) == null ? void 0 : _a3.commands.showHistory();\n }\n async hideHistory() {\n var _a3;\n await __privateGet(this, _loaded);\n return (_a3 = __privateGet(this, _messenger)) == null ? void 0 : _a3.commands.hideHistory();\n }\n async setTrainingOptOut(value) {\n var _a3;\n await __privateGet(this, _loaded);\n return (_a3 = __privateGet(this, _messenger)) == null ? void 0 : _a3.commands.setTrainingOptOut({ value });\n }\n}\n_init = __decoratorStart(_a2);\n_opts = new WeakMap();\n_frameUrl = new WeakMap();\n_frame = new WeakMap();\n_wrapper = new WeakMap();\n_shadow = new WeakMap();\n_resolveLoaded = new WeakMap();\n_loaded = new WeakMap();\n_messenger = new WeakMap();\n_ChatKitElementBase_instances = new WeakSet();\nemitAndThrow_fn = function(error) {\n this.dispatchEvent(new CustomEvent(\"chatkit.error\", { detail: { error } }));\n throw error;\n};\nsetOptionsDataAttributes_fn = function(options) {\n var _a3;\n this.dataset.colorScheme = typeof options.theme === \"string\" ? options.theme : ((_a3 = options.theme) == null ? void 0 : _a3.colorScheme) ?? \"light\";\n};\ngetFrameUrl_fn = function() {\n if (!__privateGet(this, _frameUrl)) {\n throw new IntegrationError2(\n \"ChatKit frameUrl is not configured. Provide it via setOptions({ frameUrl }) before mounting.\"\n );\n }\n return __privateGet(this, _frameUrl);\n};\nsetFrameUrl_fn = function(frameUrl) {\n if (__privateGet(this, _initialized) && __privateGet(this, _frameUrl) && __privateGet(this, _frameUrl) !== frameUrl) {\n throw new IntegrationError2(\n \"ChatKit frameUrl cannot be changed after initialization. Create a new element to use a different URL.\"\n );\n }\n __privateSet(this, _frameUrl, frameUrl);\n};\nconsumeFrameUrl_fn = function(options) {\n if (!(\"frameUrl\" in options)) return;\n const frameUrl = options.frameUrl;\n delete options.frameUrl;\n if (frameUrl == null) return;\n if (typeof frameUrl !== \"string\" || frameUrl.trim() === \"\") {\n throw new IntegrationError2(\"ChatKit frameUrl must be a non-empty string.\");\n }\n __privateMethod(this, _ChatKitElementBase_instances, setFrameUrl_fn).call(this, frameUrl);\n};\n_handleFrameLoad = new WeakMap();\n_initialized = new WeakMap();\nmaybeInit_fn = function() {\n if (__privateGet(this, _initialized) || !__privateGet(this, _frame) || !__privateGet(this, _opts)) {\n return;\n }\n __privateSet(this, _initialized, true);\n __privateMethod(this, _ChatKitElementBase_instances, setOptionsDataAttributes_fn).call(this, __privateGet(this, _opts));\n const frameURL = new URL(__privateMethod(this, _ChatKitElementBase_instances, getFrameUrl_fn).call(this), window.location.origin);\n __privateGet(this, _messenger).setTargetOrigin(frameURL.origin);\n frameURL.hash = encodeBase64({\n options: getInnerOptions(__privateGet(this, _opts)),\n referrer: window.location.origin,\n profile: this.profile\n });\n __privateGet(this, _messenger).connect();\n __privateGet(this, _frame).src = frameURL.toString();\n if (__privateGet(this, _wrapper)) {\n __privateGet(this, _shadow).append(__privateGet(this, _wrapper));\n }\n};\n__decorateElement(_init, 1, \"focusComposer\", _focusComposer_dec, ChatKitElementBase);\n__decorateElement(_init, 1, \"fetchUpdates\", _fetchUpdates_dec, ChatKitElementBase);\n__decorateElement(_init, 1, \"sendUserMessage\", _sendUserMessage_dec, ChatKitElementBase);\n__decorateElement(_init, 1, \"setComposerValue\", _setComposerValue_dec, ChatKitElementBase);\n__decorateElement(_init, 1, \"setThreadId\", _setThreadId_dec, ChatKitElementBase);\n__decorateElement(_init, 1, \"shareThread\", _shareThread_dec, ChatKitElementBase);\n__decorateElement(_init, 1, \"sendCustomAction\", _sendCustomAction_dec, ChatKitElementBase);\n__decorateElement(_init, 1, \"showHistory\", _showHistory_dec, ChatKitElementBase);\n__decorateElement(_init, 1, \"hideHistory\", _hideHistory_dec, ChatKitElementBase);\n__decorateElement(_init, 1, \"setTrainingOptOut\", _setTrainingOptOut_dec, ChatKitElementBase);\n__decoratorMetadata(_init, ChatKitElementBase);\nclass ChatKitElement extends ChatKitElementBase {\n constructor() {\n super({ profile: \"chatkit\" });\n }\n sanitizeOptions(options) {\n var _a3;\n (_a3 = options.threadItemActions) == null ? true : delete _a3.share;\n return options;\n }\n}\nfunction registerChatKitElement(tag = \"xpertai-chatkit\") {\n if (!(\"customElements\" in globalThis)) return;\n if (!customElements.get(tag)) {\n customElements.define(tag, ChatKitElement);\n }\n}\nregisterChatKitElement();\n//# sourceMappingURL=xpert-chatkit.js.map\n","import * as React from 'react';\nimport { XpertAIChatKit, ChatKitEvents } from '@xpert-ai/chatkit-types';\n\n// Import web component side effect\nimport '@xpert-ai/chatkit-web-component';\nimport { ChatKitControl, ToEventHandlerKey } from './useChatKit';\n\ndeclare module 'react' {\n namespace JSX {\n interface IntrinsicElements {\n 'xpertai-chatkit': React.DetailedHTMLProps<\n React.HTMLAttributes<XpertAIChatKit>,\n XpertAIChatKit\n >;\n }\n }\n}\n\nexport interface ChatKitProps extends React.HTMLAttributes<XpertAIChatKit> {\n control: ChatKitControl;\n}\n\nconst EVENT_HANDLER_MAP: {\n [K in keyof ChatKitEvents]: ToEventHandlerKey<K>;\n} = {\n 'chatkit.error': 'onError',\n 'chatkit.response.end': 'onResponseEnd',\n 'chatkit.response.start': 'onResponseStart',\n 'chatkit.log': 'onLog',\n 'chatkit.thread.change': 'onThreadChange',\n 'chatkit.thread.load.start': 'onThreadLoadStart',\n 'chatkit.thread.load.end': 'onThreadLoadEnd',\n 'chatkit.ready': 'onReady',\n 'chatkit.effect': 'onEffect',\n};\n\nconst EVENT_NAMES = Object.keys(EVENT_HANDLER_MAP) as (keyof ChatKitEvents)[];\n\nexport const ChatKit = React.forwardRef<XpertAIChatKit, ChatKitProps>(\n function ChatKit({ control, ...htmlProps }, forwardedRef) {\n const ref = React.useRef<XpertAIChatKit | null>(null);\n\n React.useLayoutEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n // Fast path: element is already defined\n if (customElements.get('xpertai-chatkit')) {\n el.setOptions(control.options);\n return;\n }\n // Fallback path: wait for definition\n let active = true;\n customElements.whenDefined('xpertai-chatkit').then(() => {\n if (active) {\n el.setOptions(control.options);\n }\n });\n return () => {\n active = false;\n };\n }, [control.options]);\n\n React.useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n const controller = new AbortController();\n for (const eventName of EVENT_NAMES) {\n el.addEventListener(\n eventName,\n (e) => {\n const handlerName = EVENT_HANDLER_MAP[eventName];\n const handler = control.handlers[handlerName];\n if (typeof handler === 'function') {\n handler(e.detail as any);\n }\n },\n { signal: controller.signal },\n );\n }\n return () => {\n controller.abort();\n };\n }, [control.handlers]);\n\n return (\n <xpertai-chatkit\n ref={(chatKit) => {\n ref.current = chatKit;\n\n control.setInstance(chatKit);\n\n if (typeof forwardedRef === 'function') {\n forwardedRef(chatKit);\n } else if (forwardedRef) {\n forwardedRef.current = chatKit;\n }\n\n if (!ref.current) {\n return;\n }\n }}\n {...htmlProps}\n />\n );\n },\n);\n"],"names":["React","options","ChatKit"],"mappings":";;;AAEA,SAAS,qBACP,KAC4C;AAC5C,SACG,QAAQ,QACP,OAAO,QAAQ,YACf,CAAC,MAAM,OAAO,SAAS,EAAE,SAAS,OAAO,eAAe,GAAG,CAAC,KAC9D,MAAM,QAAQ,GAAG;AAErB;AAEO,SAAS,qBACd,GACA,GACA,OAAO,oBAAI,WACF;AACT,MAAI,OAAO,GAAG,GAAG,CAAC,EAAG,QAAO;AAG5B,MAAI,OAAO,MAAM,cAAc,OAAO,MAAM,YAAY;AACtD,WAAO,OAAO,MAAM,OAAO;AAAA,EAC7B;AAEA,MAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG;AACxD,WAAO;AAAA,EACT;AAGA,QAAM,SAAS,KAAK,IAAI,CAAC;AACzB,MAAI,UAAU,WAAW,EAAG,QAAO;AACnC,OAAK,IAAI,GAAG,CAAC;AAGb,MAAI,MAAM,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,GAAG;AACxC,QAAI,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE;AAC3D,aAAO;AACT,aAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,UAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,EAAG,QAAO;AAAA,IACtD;AACA,WAAO;AAAA,EACT;AAGA,QAAM,QAAQ,OAAO,KAAK,CAAC;AAC3B,QAAM,QAAQ,OAAO,KAAK,CAAC;AAC3B,MAAI,MAAM,WAAW,MAAM,OAAQ,QAAO;AAE1C,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,UAAM,IAAI,MAAM,CAAC;AACjB,QAAI,CAAC,OAAO,UAAU,eAAe,KAAK,GAAG,CAAC,EAAG,QAAO;AAExD,UAAM,KAAM,EAA8B,CAAC;AAC3C,UAAM,KAAM,EAA8B,CAAC;AAE3C,QAAI,CAAC,qBAAqB,IAAI,IAAI,IAAI,EAAG,QAAO;AAAA,EAClD;AAEA,SAAO;AACT;AAEO,SAAS,2BAA0D,KAEpE;AACJ,QAAM,OAA4B,CAAA;AAElC,QAAM,YAAY,CAAC,MAAW,MAC5B,EAAE,OAAO,CAAC,KAAK,MAAO,OAAO,OAAO,MAAM,IAAI,CAAC,GAAI,IAAI;AAEzD,QAAM,OAAO,CAAC,YAAiC,QAAyB;AACtE,WAAO,IAAI,SAAgB;AACzB,YAAM,eAAe,UAAU,IAAI,SAAS,UAAU;AACtD,YAAM,WAAgB,6CAAe;AACrC,UAAI,OAAO,aAAa,YAAY;AAClC,eAAO,SAAS,MAAM,cAAc,IAAI;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ,CAAC,MAAgB;AAC7B,QAAI,OAAO,MAAM,YAAY;AAC3B,YAAM,MAAM,KAAK,KAAK,SAAS,CAAC;AAChC,YAAM,aAAa,KAAK,MAAM,GAAG,EAAE;AACnC,aAAO,KAAK,YAAY,GAAG;AAAA,IAC7B;AACA,QAAI,MAAM,QAAQ,CAAC,GAAG;AACpB,YAAM,OAAO,KAAK;AAClB,YAAM,MAAM,IAAI,MAAM,EAAE,MAAM;AAC9B,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,aAAK,IAAI,IAAI;AACb,YAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;AAAA,MACrB;AACA,WAAK,SAAS;AACd,aAAO;AAAA,IACT;AACA,QAAI,KAAK,OAAO,MAAM,UAAU;AAC9B,YAAM,OAAO,KAAK;AAClB,YAAM,MAA2B,CAAA;AACjC,iBAAW,KAAK,OAAO,KAAK,CAAC,GAAG;AAC9B,aAAK,IAAI,IAAI;AACb,YAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;AAAA,MACrB;AACA,WAAK,SAAS;AACd,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAEA,SAAO,MAAM,IAAI,OAAO;AAC1B;AAEO,SAAS,iBAAgD,SAAe;AAC7E,QAAM,gBAAgBA,eAAM,OAAO,OAAO;AAC1C,gBAAc,UAAU;AACxB,QAAM,QAAQA,eAAM,OAA0C,IAAI;AAElE,MACE,CAAC,MAAM,WACP,CAAC,qBAAqB,MAAM,QAAQ,UAAU,OAAO,GACrD;AACA,UAAM,UAAU;AAAA,MACd,UAAU;AAAA,MACV,QAAQ,2BAA2B,aAAa;AAAA,IAAA;AAAA,EAEpD;AAEA,SAAO,MAAM,QAAQ;AACvB;ACvHA,MAAM,uBAAuB,OAAO,OAAO;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAU;AAoCH,SAAS,WAAW,SAA8C;AACvE,QAAM,MAAM,MAAM,OAA8B,IAAI;AACpD,QAAM,gBAAgB,iBAAiB,OAAO;AAE9C,QAAM,UAA0B,MAAM,QAAQ,MAAM;AAClD,WAAO,qBAAqB,OAAO,CAAC,KAAK,QAAQ;AAC/C,UAAI,GAAG,IAAI,IAAI,SAAgB;AAC7B,YAAI,CAAC,IAAI,SAAS;AAChB,kBAAQ,KAAK,gCAAgC;AAC7C;AAAA,QACF;AAEA,eAAQ,IAAI,QAAgB,GAAG,EAAE,GAAG,IAAI;AAAA,MAC1C;AACA,aAAO;AAAA,IACT,GAAG,CAAA,CAAoB;AAAA,EACzB,GAAG,CAAA,CAAE;AAEL,QAAM,cAAc,MAAM;AAAA,IACxB,CAAC,aAA0C;AACzC,UAAI,UAAU;AAAA,IAChB;AAAA,IACA,CAAA;AAAA,EAAC;AAGH,QAAM,UAA0B,MAAM,QAAQ,MAAM;AAClD,UAAMC,WAAU,CAAA;AAChB,UAAM,WAAiC,CAAA;AAEvC,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,aAAa,GAAG;AACxD,UAAI,WAAW,KAAK,GAAG,KAAK,QAAQ,gBAAgB;AAElD,iBAAS,GAAG,IAAI;AAAA,MAClB,OAAO;AAELA,iBAAQ,GAAG,IAAI;AAAA,MACjB;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA,SAAAA;AAAAA,MACA;AAAA,IAAA;AAAA,EAEJ,GAAG,CAAC,eAAe,WAAW,CAAC;AAE/B,SAAO,MAAM;AAAA,IACX,OAAO,EAAE,GAAG,SAAS,SAAS,IAAA;AAAA,IAC9B,CAAC,SAAS,OAAO;AAAA,EAAA;AAErB;ACtGA,IAAI,WAAW,OAAO;AACtB,IAAI,YAAY,OAAO;AACvB,IAAI,mBAAmB,OAAO;AAC9B,IAAI,gBAAgB,CAAC,MAAM,YAAY,SAAS,OAAO,IAAI,KAAK,SAAS,OAAO,IAAI,YAAY,IAAI;AACpG,IAAI,cAAc,CAAC,QAAQ;AACzB,QAAM,UAAU,GAAG;AACrB;AACA,IAAI,kBAAkB,CAAC,KAAK,KAAK,UAAU,OAAO,MAAM,UAAU,KAAK,KAAK,EAAE,YAAY,MAAM,cAAc,MAAM,UAAU,MAAM,MAAK,CAAE,IAAI,IAAI,GAAG,IAAI;AAE1J,IAAI,mBAAmB,CAAC,SAAS,OAAO,UAAU,QAAQ,OAAO,SAAS,KAAK,cAAc,UAAU,CAAC,MAAM,IAAI,CAAC;AACnH,IAAI,qBAAqB,CAAC,SAAS,UAAU,UAAU,UAAU,YAAY,SAAS,SAAS,OAAO,KAAK;AAC3G,IAAI,aAAa,CAAC,OAAO,OAAO,UAAU,OAAO,OAAO,aAAa,YAAY,mBAAmB,IAAI;AACxG,IAAI,qBAAqB,CAAC,MAAM,MAAM,MAAM,UAAU,SAAS,EAAE,MAAM,mBAAmB,IAAI,GAAG,MAAM,UAAU,gBAAgB,CAAC,OAAO,KAAK,IAAI,YAAY,qBAAqB,IAAI,IAAI,KAAK,WAAW,MAAM,IAAI,CAAC,EAAC;AACvN,IAAI,sBAAsB,CAAC,OAAO,WAAW,gBAAgB,QAAQ,cAAc,UAAU,GAAG,MAAM,CAAC,CAAC;AACxG,IAAI,oBAAoB,CAAC,OAAO,OAAO,MAAM,UAAU;AACrD,WAAS,IAAI,GAAG,MAAM,MAAM,SAAS,CAAC,GAAG,IAAI,OAAO,IAAI,QAAQ,IAAI,GAAG,IAAiB,KAAI,CAAC,EAAE,KAAK,IAAI;AACxG,SAAO;AACT;AACA,IAAI,oBAAoB,CAAC,OAAO,OAAO,MAAM,YAAY,QAAQ,UAAU;AACtE,MAAK,IAAI,MAAM,KAAK,QAAQ,IAAI,QAAQ,GAAG,IAAI,OAAe,IAAI;AACrE,MAAI,IAA2C,GAAO,MAAM,mBAAmB,IAAI,CAAC;AACjF,MAA8C,oBAAoB,MAAM,CAAC,MAAM,MAAM,CAAC,IAAI,CAAA;AAC7F,MAAI,QAA0B,SAAS,OAAO,WAAsC,iBAAyB,QAIxG,IAAI;AAET,WAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,KAAK;AAC/C,UAAM,mBAAmB,GAAG,MAAM,OAAO,CAAA,GAAI,MAAM,CAAC,GAAG,iBAAiB;AACjE;AACL,UAAI,SAAS,GAAG,IAAI,UAAU,GAAG,SAAS,IAAI,SAAS,EAAE,KAAyC,CAAC,MAAM,QAAQ,EAAC;AACvG,aAAO,MAAiG,CAAC,MAAM,EAAE,IAAI;AAAA,IAElI;AACA,UAAK,GAAI,WAAW,CAAC,GAA2B,KAAK,GAAG,GAAgE,GAAG,GAAG,KAAK,IAAI;AAC3G,eAAW,EAAE,MAA8D,KAAK,GAAG,IAAI;AAAA,EAGrH;AACA,SAAgD,QAAQ,UAAU,QAAQ,MAAM,IAAI,GAA8B;AACpH;AACA,IAAI,gBAAgB,CAAC,KAAK,QAAQ,QAAQ,OAAO,IAAI,GAAG,KAAK,YAAY,YAAY,GAAG;AAExF,IAAI,eAAe,CAAC,KAAK,QAAQ,YAAY,cAAc,KAAK,QAAQ,yBAAyB,GAAG,SAAS,OAAO,KAAK,GAAG,IAAI,OAAO,IAAI,GAAG;AAC9I,IAAI,eAAe,CAAC,KAAK,QAAQ,UAAU,OAAO,IAAI,GAAG,IAAI,YAAY,mDAAmD,IAAI,kBAAkB,UAAU,OAAO,IAAI,GAAG,IAAI,OAAO,IAAI,KAAK,KAAK;AACnM,IAAI,eAAe,CAAC,KAAK,QAAQ,OAAO,YAAY,cAAc,KAAK,QAAQ,wBAAwB,GAAsC,OAAO,IAAI,KAAK,KAAK,GAAG;AACrK,IAAI,kBAAkB,CAAC,KAAK,QAAQ,YAAY,cAAc,KAAK,QAAQ,uBAAuB,GAAG;AACrG,IAAI,wBAAwB,kBAAkB,kBAAkB,uBAAuB,kBAAkB,kBAAkB,uBAAuB,sBAAsB,mBAAmB,oBAAoB,KAAK,OAAO,WAAW,QAAQ,UAAU,SAAS,gBAAgB,SAAS,YAAY,+BAA+B,iBAAiB,6BAA6B,gBAAgB,gBAAgB,oBAAoB,kBAAkB,cAAc,cAAc;AACrd,IAAI,aAAa,OAAO;AACxB,IAAI,mBAAmB,CAAC,KAAK,KAAK,UAAU,OAAO,MAAM,WAAW,KAAK,KAAK,EAAE,YAAY,MAAM,cAAc,MAAM,UAAU,MAAM,MAAK,CAAE,IAAI,IAAI,GAAG,IAAI;AAC5J,IAAI,gBAAgB,CAAC,KAAK,KAAK,UAAU,iBAAiB,KAAK,OAAO,QAAQ,WAAW,MAAM,KAAK,KAAK,KAAK;AAC9G,IAAI,IAAI;AACR,MAAM,aAAa;AAAA,EACjB,cAAc;AACZ,kBAAc,MAAM,aAA6B,oBAAI,IAAG,CAAE;AAAA,EAC5D;AAAA,EACA,GAAG,OAAO,UAAU;AAClB,QAAI,CAAC,KAAK,UAAU,IAAI,KAAK,GAAG;AAC9B,WAAK,UAAU,IAAI,OAAuB,oBAAI,IAAG,CAAE;AAAA,IACrD;AACA,SAAK,UAAU,IAAI,KAAK,EAAE,IAAI,QAAQ;AAAA,EACxC;AAAA,EACA,KAAK,UAAU,MAAM;AACnB,QAAI;AACJ,UAAM,OAAO,KAAK,CAAC;AACnB,KAAC,OAAO,KAAK,UAAU,IAAI,KAAK,MAAM,OAAO,SAAS,KAAK,QAAQ,CAAC,aAAa,SAAS,IAAI,CAAC;AAAA,EACjG;AAAA,EACA,IAAI,OAAO,UAAU;AACnB,QAAI;AACJ,QAAI,CAAC,UAAU;AACb,WAAK,UAAU,OAAO,KAAK;AAAA,IAC7B,OAAO;AACL,OAAC,OAAO,KAAK,UAAU,IAAI,KAAK,MAAM,OAAO,SAAS,KAAK,OAAO,QAAQ;AAAA,IAC5E;AAAA,EACF;AAAA,EACA,SAAS;AACP,SAAK,UAAU,MAAK;AAAA,EACtB;AACF;AACA,eAAe,SAAS,QAAQ,SAAS;AACvC,QAAM,SAAS,OAAO,UAAS;AAC/B,MAAI;AACJ,SAAO,EAAE,SAAS,MAAM,OAAO,KAAI,GAAI,MAAM;AAC3C,YAAQ,OAAO,KAAK;AAAA,EACtB;AACF;AACA,SAAS,SAAS,QAAQ;AACxB,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,yBAAyB;AAC7B,SAAO,SAAS,QAAQ,KAAK;AAC3B,QAAI,WAAW,QAAQ;AACrB,eAAS;AACT,iBAAW;AACX,oBAAc;AAAA,IAChB,OAAO;AACL,eAAS,OAAO,QAAQ,GAAG;AAAA,IAC7B;AACA,UAAM,YAAY,OAAO;AACzB,QAAI,YAAY;AAChB,WAAO,WAAW,WAAW;AAC3B,UAAI,wBAAwB;AAC1B,YAAI,OAAO,QAAQ,MAAM,IAAI;AAC3B,sBAAY,EAAE;AAAA,QAChB;AACA,iCAAyB;AAAA,MAC3B;AACA,UAAI,UAAU;AACd,aAAO,WAAW,aAAa,YAAY,IAAI,EAAE,UAAU;AACzD,gBAAQ,OAAO,QAAQ,GAAC;AAAA,UACtB,KAAK;AACH,gBAAI,gBAAgB,IAAI;AACtB,4BAAc,WAAW;AAAA,YAC3B;AACA;AAAA,UACF,KAAK;AACH,qCAAyB;AAAA,UAC3B,KAAK;AACH,sBAAU;AACV;AAAA,QACZ;AAAA,MACM;AACA,UAAI,YAAY,IAAI;AAClB;AAAA,MACF;AACA,aAAO,OAAO,SAAS,WAAW,OAAO,GAAG,WAAW;AACvD,kBAAY;AACZ,oBAAc;AAAA,IAChB;AACA,QAAI,cAAc,WAAW;AAC3B,eAAS;AAAA,IACX,WAAW,cAAc,GAAG;AAC1B,eAAS,OAAO,SAAS,SAAS;AAClC,kBAAY;AAAA,IACd;AAAA,EACF;AACF;AACA,SAAS,YAAY,MAAM,SAAS,WAAW;AAC7C,MAAI,UAAU,WAAU;AACxB,QAAM,UAAU,IAAI,YAAW;AAC/B,SAAO,SAAS,OAAO,MAAM,aAAa;AACxC,QAAI,KAAK,WAAW,GAAG;AACrB,oBAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,OAAO;AACvE,gBAAU,WAAU;AAAA,IACtB,WAAW,cAAc,GAAG;AAC1B,YAAM,QAAQ,QAAQ,OAAO,KAAK,SAAS,GAAG,WAAW,CAAC;AAC1D,YAAM,cAAc,eAAe,KAAK,cAAc,CAAC,MAAM,KAAK,IAAI;AACtE,YAAM,QAAQ,QAAQ,OAAO,KAAK,SAAS,WAAW,CAAC;AACvD,cAAQ,OAAK;AAAA,QACX,KAAK;AACH,kBAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,OAAO,QAAQ;AAC5D;AAAA,QACF,KAAK;AACH,kBAAQ,QAAQ;AAChB;AAAA,QACF,KAAK;AACH,eAAK,QAAQ,KAAK,KAAK;AACvB;AAAA,QACF,KAAK;AACH,gBAAM,QAAQ,SAAS,OAAO,EAAE;AAChC,cAAI,CAAC,MAAM,KAAK,GAAG;AACjB,oBAAQ,QAAQ,QAAQ,KAAK;AAAA,UAC/B;AACA;AAAA,MACV;AAAA,IACI;AAAA,EACF;AACF;AACA,SAAS,OAAO,GAAG,GAAG;AACpB,QAAM,MAAM,IAAI,WAAW,EAAE,SAAS,EAAE,MAAM;AAC9C,MAAI,IAAI,CAAC;AACT,MAAI,IAAI,GAAG,EAAE,MAAM;AACnB,SAAO;AACT;AACA,SAAS,aAAa;AACpB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,EACX;AACA;AACA,IAAI,SAAS,SAAS,GAAG,GAAG;AAC1B,MAAI,IAAI,CAAA;AACR,WAAS,KAAK,EAAG,KAAI,OAAO,UAAU,eAAe,KAAK,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI;AAChF,MAAE,CAAC,IAAI,EAAE,CAAC;AACZ,MAAI,KAAK,QAAQ,OAAO,OAAO,0BAA0B;AACvD,aAAS,IAAI,GAAG,IAAI,OAAO,sBAAsB,CAAC,GAAG,IAAI,EAAE,QAAQ,KAAK;AACtE,UAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,KAAK,OAAO,UAAU,qBAAqB,KAAK,GAAG,EAAE,CAAC,CAAC;AAC3E,UAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAAA,IACpB;AACF,SAAO;AACT;AACA,MAAM,yBAAyB;AAC/B,MAAM,uBAAuB;AAC7B,MAAM,cAAc;AACpB,SAAS,iBAAiB,OAAO,MAAM;AACrC,MAAI,EAAE,QAAQ,aAAa,SAAS,cAAc,QAAQ,aAAa,WAAW,SAAS,SAAS,gBAAgB,OAAO,WAAU,IAAK,MAAM,OAAO,OAAO,MAAM,CAAC,UAAU,WAAW,UAAU,aAAa,WAAW,WAAW,kBAAkB,OAAO,CAAC;AACjQ,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,UAAU,OAAO,OAAO,CAAA,GAAI,YAAY;AAC9C,QAAI,CAAC,QAAQ,QAAQ;AACnB,cAAQ,SAAS;AAAA,IACnB;AACA,QAAI;AACJ,aAAS,qBAAqB;AAC5B,2BAAqB,MAAK;AAC1B,UAAI,CAAC,SAAS,QAAQ;AACpB,eAAM;AAAA,MACR;AAAA,IACF;AACA,QAAI,CAAC,gBAAgB;AACnB,eAAS,iBAAiB,oBAAoB,kBAAkB;AAAA,IAClE;AACA,QAAI,gBAAgB;AACpB,QAAI,aAAa;AACjB,aAAS,UAAU;AACjB,eAAS,oBAAoB,oBAAoB,kBAAkB;AACnE,aAAO,aAAa,UAAU;AAC9B,2BAAqB,MAAK;AAAA,IAC5B;AACA,oBAAgB,QAAQ,gBAAgB,SAAS,SAAS,YAAY,iBAAiB,SAAS,MAAM;AACpG,cAAO;AACP,cAAO;AAAA,IACT,CAAC;AACD,UAAM,SAAS,eAAe,QAAQ,eAAe,SAAS,aAAa,OAAO;AAClF,UAAM,SAAS,gBAAgB,QAAQ,gBAAgB,SAAS,cAAc;AAC9E,mBAAe,SAAS;AACtB,UAAI;AACJ,6BAAuB,IAAI,gBAAe;AAC1C,UAAI;AACF,cAAM,WAAW,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAA,GAAI,IAAI,GAAG,EAAE,SAAS,QAAQ,qBAAqB,OAAM,CAAE,CAAC;AAC7H,cAAM,OAAO,QAAQ;AACrB,cAAM,SAAS,SAAS,MAAM,SAAS,YAAY,CAAC,OAAO;AACzD,cAAI,IAAI;AACN,oBAAQ,WAAW,IAAI;AAAA,UACzB,OAAO;AACL,mBAAO,QAAQ,WAAW;AAAA,UAC5B;AAAA,QACF,GAAG,CAAC,UAAU;AACZ,0BAAgB;AAAA,QAClB,GAAG,SAAS,CAAC,CAAC;AACd,oBAAY,QAAQ,YAAY,SAAS,SAAS,QAAO;AACzD,gBAAO;AACP,gBAAO;AAAA,MACT,SAAS,KAAK;AACZ,YAAI,CAAC,qBAAqB,OAAO,SAAS;AACxC,cAAI;AACF,kBAAM,YAAY,MAAM,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,GAAG,OAAO,QAAQ,QAAQ,SAAS,MAAM;AAC3H,mBAAO,aAAa,UAAU;AAC9B,yBAAa,OAAO,WAAW,QAAQ,QAAQ;AAAA,UACjD,SAAS,UAAU;AACjB,oBAAO;AACP,mBAAO,QAAQ;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAM;AAAA,EACR,CAAC;AACH;AACA,SAAS,cAAc,UAAU;AAC/B,QAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,MAAI,EAAE,gBAAgB,QAAQ,gBAAgB,SAAS,SAAS,YAAY,WAAW,sBAAsB,IAAI;AAC/G,UAAM,IAAI,MAAM,+BAA+B,sBAAsB,aAAa,WAAW,EAAE;AAAA,EACjG;AACF;AACA,MAAM,uBAAuB;AAC7B,MAAM,kBAAkB,MAAM;AAAA,EAC5B,YAAY,SAAS,KAAK,UAAU;AAClC,UAAM,OAAO;AACb,kBAAc,MAAM,QAAQ;AAC5B,kBAAc,MAAM,YAAY;AAChC,kBAAc,MAAM,UAAU;AAC9B,SAAK,OAAO;AACZ,SAAK,aAAa,IAAI;AACtB,SAAK,SAAS,IAAI;AAClB,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,OAAO,2BAA2B,OAAO;AACvC,QAAI,iBAAiB,WAAW;AAC9B,aAAO;AAAA,IACT;AACA,QAAI,SAAS,OAAO,UAAU,YAAY,wBAAwB,SAAS,MAAM,oBAAoB,MAAM,aAAa;AACtH,YAAM,YAAY;AAClB,YAAM,cAAc,IAAI;AAAA,QACtB,UAAU;AAAA,QACV;AAAA,UACE,QAAQ,UAAU;AAAA,UAClB,YAAY,UAAU;AAAA,QAChC;AAAA,QACQ,UAAU;AAAA,MAClB;AACM,kBAAY,QAAQ,UAAU;AAC9B,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACF;AACA,KAAK;AACL,MAAM,sBAAsB,MAAM,qBAAqB;AAAA,EACrD,YAAY,SAAS,KAAK,UAAU;AAClC,kBAAc,MAAM,IAAI,WAAW;AACnC,kBAAc,MAAM,SAAS;AAC7B,kBAAc,MAAM,OAAO;AAC3B,kBAAc,MAAM,QAAQ;AAC5B,kBAAc,MAAM,YAAY;AAChC,kBAAc,MAAM,UAAU;AAC9B,SAAK,UAAU;AACf,SAAK,QAAQ,IAAI,MAAM,OAAO,EAAE;AAChC,SAAK,SAAS,IAAI;AAClB,SAAK,aAAa,IAAI;AACtB,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,OAAO,cAAc,OAAO;AAC1B,WAAO,IAAI;AAAA,MACT,MAAM;AAAA,MACN;AAAA,QACE,QAAQ,MAAM;AAAA,QACd,YAAY,MAAM;AAAA,MAC1B;AAAA,MACM,MAAM;AAAA,IACZ;AAAA,EACE;AACF;AACA,IAAI,qBAAqB;AACzB,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,qBAAqB;AAC3B,MAAM,YAAY,CAAC,SAAS,gBAAgB,oBAAoB,cAAc,wBAAwB;AACpG,QAAM,MAAM,KAAK,IAAI,eAAe,cAAc,KAAK,OAAO;AAC9D,SAAO,KAAK,MAAM,OAAO,MAAM,KAAK,OAAM,IAAK,IAAI;AACrD;AACA,MAAM,uBAAuB,MAAM;AAAA,EACjC,YAAY,OAAO;AACjB,UAAK;AACL,SAAK,QAAQ;AAAA,EACf;AACF;AACA,MAAM,4BAA4B,OAAO,KAAK,WAAW;AACvD,MAAI,eAAe;AACnB,QAAM,EAAE,QAAQ,GAAG,WAAU,IAAK;AAClC,QAAM,iBAAiB,KAAK;AAAA,IAC1B,GAAG;AAAA,IACH,QAAQ,OAAO,QAAQ;AACrB,UAAI;AACJ,gBAAU,OAAO,SAAS,OAAO,GAAG;AACpC,UAAI,IAAI,QAAQ,OAAO,IAAI,QAAQ,IAAI,cAAc,MAAM,OAAO,SAAS,KAAK,WAAW,mBAAmB,IAAI;AAChH,uBAAe;AACf;AAAA,MACF;AACA,YAAM,YAAY,IAAI,mBAAmB,qBAAqB,IAAI,UAAU,IAAI,GAAG;AACnF,UAAI,IAAI,UAAU,OAAO,IAAI,SAAS,KAAK;AACzC,cAAM;AAAA,MACR,OAAO;AACL,cAAM,IAAI,eAAe,SAAS;AAAA,MACpC;AAAA,IACF;AAAA,IACA,SAAS,CAAC,UAAU;AAClB,UAAI,iBAAiB,gBAAgB;AACnC,YAAI,gBAAgB,oBAAoB;AACtC,gBAAM,MAAM;AAAA,QACd;AACA,wBAAgB;AAChB,eAAO,UAAU,YAAY;AAAA,MAC/B;AACA,YAAM;AAAA,IACR;AAAA,EACJ,CAAG;AACH;AACA,IAAI,qBAAqB,MAAM,yBAAyB,MAAM;AAAA,EAC5D,YAAY,SAAS;AACnB,UAAM,OAAO;AACb,kBAAc,MAAM,OAAO;AAC3B,SAAK,OAAO;AACZ,SAAK,QAAQ,KAAK;AAAA,EACpB;AAAA,EACA,OAAO,2BAA2B,OAAO;AACvC,QAAI,SAAS,OAAO,UAAU,YAAY,wBAAwB,SAAS,MAAM,oBAAoB,MAAM,oBAAoB;AAC7H,YAAM,YAAY;AAClB,YAAM,cAAc,IAAI,iBAAiB,UAAU,OAAO;AAC1D,kBAAY,QAAQ,UAAU;AAC9B,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACF;AACA,KAAK;AACL,MAAM,0BAA0B;AAAA,EAC9B,YAAY,SAAS;AACnB,kBAAc,MAAM,IAAI,kBAAkB;AAC1C,kBAAc,MAAM,SAAS;AAC7B,kBAAc,MAAM,OAAO;AAC3B,SAAK,UAAU;AACf,SAAK,QAAQ,IAAI,MAAM,OAAO,EAAE;AAAA,EAClC;AACF;AACA,MAAM,cAAc;AAAA,EAClB,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,SAAS,OAAO;AAAA,EAC3B,GAAK;AACD,kBAAc,MAAM,cAAc;AAClC,kBAAc,MAAM,QAAQ;AAC5B,kBAAc,MAAM,iBAAiB;AACrC,kBAAc,MAAM,QAAQ;AAC5B,kBAAc,MAAM,WAAW,IAAI,aAAY,CAAE;AACjD,kBAAc,MAAM,YAA4B,oBAAI,IAAG,CAAE;AACzD,kBAAc,MAAM,4BAA4C,oBAAI,IAAG,CAAE;AACzE,kBAAc,MAAM,oBAAoC,oBAAI,IAAG,CAAE;AACjE,kBAAc,MAAM,YAAY,IAAI;AAAA,MAClC,CAAA;AAAA,MACA;AAAA,QACE,KAAK,CAAC,GAAG,YAAY;AACnB,iBAAO,CAAC,MAAM,aAAa;AACzB,mBAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,oBAAM,QAAQ,OAAO,WAAU;AAC/B,mBAAK,SAAS,IAAI,OAAO,EAAE,SAAS,QAAQ,OAAO,IAAI,MAAK,EAAG,SAAS,GAAE,CAAE;AAC5E,mBAAK;AAAA,gBACH;AAAA,kBACE,MAAM;AAAA,kBACN;AAAA,kBACA,SAAS,KAAK,QAAQ,OAAO,CAAC,EAAE,YAAW,CAAE,GAAG,QAAQ,MAAM,CAAC,CAAC;AAAA,kBAChE;AAAA,gBAClB;AAAA,gBACgB;AAAA,cAChB;AAAA,YACY,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACR;AAAA,IACA,CAAK;AACD,kBAAc,MAAM,iBAAiB,OAAO,UAAU;AACpD,UAAI,MAAM,KAAK,IAAI;AACnB,UAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,kBAAkB,QAAQ,MAAM,WAAW,KAAK,gBAAgB,MAAM,WAAW,KAAK,UAAU;AAC5H;AAAA,MACF;AACA,YAAM,OAAO,MAAM;AACnB,cAAQ,KAAK,MAAI;AAAA,QACf,KAAK,SAAS;AACZ,eAAK,QAAQ,KAAK,KAAK,OAAO,KAAK,IAAI;AACvC;AAAA,QACF;AAAA,QACA,KAAK,SAAS;AACZ,cAAI;AACF,gBAAI,KAAK,UAAU;AACjB,oBAAM,WAAW,IAAI,SAAQ;AAC7B,yBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,QAAQ,GAAG;AACxD,yBAAS,OAAO,KAAK,KAAK;AAAA,cAC5B;AACA,mBAAK,OAAO,OAAO;AAAA,YACrB;AACA,kBAAM,aAAa,IAAI,gBAAe;AACtC,iBAAK,iBAAiB,IAAI,KAAK,OAAO,UAAU;AAChD,iBAAK,OAAO,SAAS,WAAW;AAChC,kBAAM,MAAM,MAAM,KAAK,OAAO,KAAK,KAAK,KAAK,MAAM;AACnD,gBAAI,CAAC,IAAI,IAAI;AACX,oBAAM,UAAU,MAAM,IAAI,KAAI,EAAG,KAAK,CAAC,UAAU,MAAM,WAAW,IAAI,UAAU,EAAE,MAAM,MAAM,IAAI,UAAU;AAC5G,oBAAM,IAAI,mBAAmB,SAAS,GAAG;AAAA,YAC3C;AACA,kBAAM,OAAO,MAAM,IAAI,KAAI,EAAG,MAAM,OAAO,CAAA,EAAG;AAC9C,iBAAK,YAAY;AAAA,cACf,MAAM;AAAA,cACN,UAAU;AAAA,cACV,OAAO,KAAK;AAAA,YAC1B,CAAa;AAAA,UACH,SAAS,OAAO;AACd,iBAAK,YAAY;AAAA,cACf,MAAM;AAAA,cACN;AAAA,cACA,OAAO,KAAK;AAAA,YAC1B,CAAa;AAAA,UACH;AACA;AAAA,QACF;AAAA,QACA,KAAK,oBAAoB;AACvB,cAAI;AACF,kBAAM,aAAa,IAAI,gBAAe;AACtC,iBAAK,iBAAiB,IAAI,KAAK,OAAO,UAAU;AAChD,kBAAM,0BAA0B,KAAK,KAAK;AAAA,cACxC,GAAG,KAAK;AAAA,cACR,QAAQ,WAAW;AAAA,cACnB,OAAO,KAAK;AAAA,cACZ,WAAW,CAAC,YAAY;AACtB,qBAAK,YAAY;AAAA,kBACf,MAAM;AAAA,kBACN;AAAA,kBACA,OAAO,KAAK;AAAA,gBAC9B,CAAiB;AAAA,cACH;AAAA,YACd,CAAa;AACD,iBAAK,YAAY;AAAA,cACf,MAAM;AAAA,cACN,UAAU;AAAA,cACV,OAAO,KAAK;AAAA,YAC1B,CAAa;AAAA,UACH,SAAS,OAAO;AACd,iBAAK,YAAY;AAAA,cACf,MAAM;AAAA,cACN;AAAA,cACA,OAAO,KAAK;AAAA,YAC1B,CAAa;AAAA,UACH;AACA;AAAA,QACF;AAAA,QACA,KAAK,WAAW;AACd,cAAI,CAAC,KAAK,kBAAkB,KAAK,OAAO,GAAG;AACzC,iBAAK,YAAY;AAAA,cACf,MAAM;AAAA,cACN,OAAO,IAAI,0BAA0B,WAAW,KAAK,OAAO,gBAAgB;AAAA,cAC5E,OAAO,KAAK;AAAA,YAC1B,CAAa;AACD;AAAA,UACF;AACA,cAAI;AACF,kBAAM,WAAW,QAAQ,OAAO,OAAO,KAAK,iBAAiB,KAAK,OAAO,MAAM,OAAO,SAAS,IAAI,KAAK,MAAM,KAAK,IAAI;AACvH,iBAAK,YAAY;AAAA,cACf,MAAM;AAAA,cACN;AAAA,cACA,OAAO,KAAK;AAAA,YAC1B,CAAa;AAAA,UACH,SAAS,OAAO;AACd,iBAAK,YAAY;AAAA,cACf,MAAM;AAAA,cACN;AAAA,cACA,OAAO,KAAK;AAAA,YAC1B,CAAa;AAAA,UACH;AACA;AAAA,QACF;AAAA,QACA,KAAK,YAAY;AACf,gBAAM,UAAU,KAAK,SAAS,IAAI,KAAK,KAAK;AAC5C,cAAI,CAAC,SAAS;AACZ,oBAAQ,MAAM,8BAA8B,KAAK,KAAK;AACtD;AAAA,UACF;AACA,cAAI,KAAK,OAAO;AACd,kBAAM,mBAAmB,mBAAmB,2BAA2B,KAAK,KAAK;AACjF,kBAAM,YAAY,UAAU,2BAA2B,KAAK,KAAK;AACjE,gBAAI,kBAAkB;AACpB,+BAAiB,QAAQ,QAAQ;AACjC,sBAAQ,OAAO,gBAAgB;AAAA,YACjC,WAAW,WAAW;AACpB,sBAAQ,OAAO,SAAS;AAAA,YAC1B,OAAO;AACL,sBAAQ,OAAO,KAAK,KAAK;AAAA,YAC3B;AAAA,UACF,OAAO;AACL,oBAAQ,QAAQ,KAAK,QAAQ;AAAA,UAC/B;AACA,eAAK,SAAS,OAAO,KAAK,KAAK;AAC/B;AAAA,QACF;AAAA,QACA,KAAK,2BAA2B;AAC9B,gBAAM,UAAU,KAAK,yBAAyB,IAAI,KAAK,KAAK;AAC5D,cAAI,CAAC,SAAS;AACZ,oBAAQ,MAAM,8BAA8B,KAAK,KAAK;AACtD;AAAA,UACF;AACA,WAAC,MAAM,KAAK,KAAK,yBAAyB,IAAI,KAAK,KAAK,MAAM,OAAO,SAAS,GAAG,cAAc,OAAO,SAAS,GAAG,KAAK,IAAI,KAAK,OAAO;AACvI;AAAA,QACF;AAAA,QACA,KAAK,eAAe;AAClB,gBAAM,aAAa,KAAK,iBAAiB,IAAI,KAAK,KAAK;AACvD,cAAI,YAAY;AACd,uBAAW,MAAM,KAAK,MAAM;AAC5B,iBAAK,iBAAiB,OAAO,KAAK,KAAK;AAAA,UACzC;AACA;AAAA,QACF;AAAA,MACR;AAAA,IACI,CAAC;AACD,SAAK,kBAAkB;AACvB,SAAK,SAAS;AACd,SAAK,eAAe;AACpB,SAAK,SAAS,IAAI,SAAS,OAAO,GAAG,IAAI;AAAA,EAC3C;AAAA,EACA,gBAAgB,cAAc;AAC5B,SAAK,eAAe;AAAA,EACtB;AAAA,EACA,YAAY,MAAM,UAAU;AAC1B,QAAI;AACJ,UAAM,UAAU;AAAA,MACd,eAAe;AAAA,MACf,GAAG;AAAA,IACT;AACI,KAAC,OAAO,KAAK,OAAM,MAAO,OAAO,SAAS,KAAK,YAAY,SAAS,KAAK,cAAc,QAAQ;AAAA,EACjG;AAAA,EACA,UAAU;AACR,WAAO,iBAAiB,WAAW,KAAK,aAAa;AAAA,EACvD;AAAA,EACA,aAAa;AACX,WAAO,oBAAoB,WAAW,KAAK,aAAa;AAAA,EAC1D;AAAA,EACA,MAAM,KAAK,QAAQ;AACjB,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,YAAM,QAAQ,OAAO,WAAU;AAC/B,WAAK,SAAS,IAAI,OAAO,EAAE,SAAS,QAAQ,OAAO,IAAI,MAAK,EAAG,SAAS,GAAE,CAAE;AAC5E,UAAI;AACJ,UAAI,OAAO,gBAAgB,UAAU;AACnC,mBAAW,CAAA;AACX,mBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,KAAK,WAAW;AAChD,mBAAS,GAAG,IAAI;AAAA,QAClB;AACA,eAAO,OAAO;AAAA,MAChB;AACA,UAAI,OAAO,QAAQ;AACjB,eAAO,OAAO,iBAAiB,SAAS,MAAM;AAC5C,cAAI;AACJ,eAAK,YAAY;AAAA,YACf,MAAM;AAAA,YACN;AAAA,YACA,SAAS,OAAO,OAAO,WAAW,OAAO,SAAS,KAAK;AAAA,UACnE,CAAW;AAAA,QACH,CAAC;AACD,eAAO,SAAS;AAAA,MAClB;AACA,WAAK,YAAY,EAAE,MAAM,SAAS,OAAO,QAAQ,UAAU,KAAK;AAAA,IAClE,CAAC;AAAA,EACH;AAAA;AAAA;AAAA,EAGA,iBAAiB,KAAK,QAAQ;AAC5B,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,YAAM,EAAE,WAAW,QAAQ,GAAG,KAAI,IAAK;AACvC,YAAM,QAAQ,OAAO,WAAU;AAC/B,WAAK,SAAS,IAAI,OAAO,EAAE,SAAS,QAAQ,OAAO,IAAI,MAAK,EAAG,SAAS,GAAE,CAAE;AAC5E,WAAK,yBAAyB,IAAI,OAAO;AAAA,QACvC;AAAA,MACR,CAAO;AACD,UAAI,QAAQ;AACV,eAAO,iBAAiB,SAAS,MAAM;AACrC,eAAK,YAAY;AAAA,YACf,MAAM;AAAA,YACN;AAAA,YACA,QAAQ,OAAO;AAAA,UAC3B,CAAW;AAAA,QACH,CAAC;AAAA,MACH;AACA,WAAK,YAAY,EAAE,MAAM,oBAAoB,OAAO,QAAQ,MAAM,KAAK;AAAA,IACzE,CAAC;AAAA,EACH;AAAA,EACA,QAAQ,CAAC,OAAO,MAAM,QAAQ,GAAG;AAC/B,SAAK;AAAA,MACH;AAAA,QACE,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACR;AAAA,MACM;AAAA,IACN;AAAA,EACE;AAAA,EACA,MAAM,CAAC,OAAO,QAAQ,GAAG;AACvB,SAAK,QAAQ,GAAG,OAAO,QAAQ;AAAA,EACjC;AAAA,EACA,UAAU;AACR,WAAO,oBAAoB,WAAW,KAAK,aAAa;AACxD,SAAK,QAAQ,OAAM;AACnB,SAAK,SAAS,MAAK;AAAA,EACrB;AACF;AACA,MAAM,cAAc,CAAC,QAAQ,KAAK,GAAG,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,EAAE;AAChG,MAAM,eAAe,CAAC,UAAU;AAC9B,MAAI,UAAU,QAAQ;AACpB,UAAM,IAAI;AAAA,MACR;AAAA,IACN;AAAA,EACE;AACA,QAAM,OAAO,KAAK,UAAU,KAAK;AACjC,QAAM,QAAQ,IAAI,cAAc,OAAO,IAAI;AAC3C,MAAI,MAAM;AACV,aAAW,KAAK,MAAO,QAAO,OAAO,aAAa,CAAC;AACnD,SAAO,YAAY,GAAG;AACxB;AACA,MAAM,0BAA0B,MAAM;AACtC;AACA,SAAS,2BAA2B,KAAK;AACvC,SAAO,IAAI;AACb;AACA,MAAM,4BAA4B;AAAA;AAAA,EAEhC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,MAAM,2BAA2B;AAAA;AAAA,EAE/B;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,MAAM,mBAAmB;AAAA,EACvB,WAAW;AAAA,IACT,OAAO,CAAC,GAAG,2BAA2B,8BAA8B;AAAA,IACpE,MAAM;AAAA,EACV;AACA;AACA,MAAM,kBAAkB,CAAC,YAAY;AACnC,QAAM,QAAQ,iBAAiB,OAAO;AACtC,QAAM,YAAY,IAAI,IAAI,MAAM,KAAK;AACrC,aAAW,cAAc,MAAM,QAAQ,CAAA,GAAI;AACzC,cAAU,OAAO,UAAU;AAAA,EAC7B;AACA,QAAM,WAA2B,oBAAI,IAAG;AACxC,QAAM,SAAyB,oBAAI,IAAG;AACtC,QAAM,UAA0B,oBAAI,IAAG;AACvC,QAAM,cAA8B,oBAAI,IAAG;AAC3C,QAAM,SAAyB,oBAAI,IAAG;AACtC,QAAM,UAA0B,oBAAI,IAAG;AACvC,aAAW,cAAc,WAAW;AAClC,QAAI,WAAW,WAAW,UAAU,GAAG;AACrC,eAAS,IAAI,WAAW,MAAM,WAAW,MAAM,CAAC;AAChD;AAAA,IACF;AACA,QAAI,WAAW,WAAW,QAAQ,GAAG;AACnC,aAAO,IAAI,WAAW,MAAM,SAAS,MAAM,CAAC;AAC5C;AAAA,IACF;AACA,QAAI,WAAW,WAAW,UAAU,GAAG;AACrC,cAAQ,IAAI,WAAW,MAAM,WAAW,MAAM,CAAC;AAC/C;AAAA,IACF;AACA,QAAI,WAAW,WAAW,cAAc,GAAG;AACzC,kBAAY,IAAI,WAAW,MAAM,eAAe,MAAM,CAAC;AAAA,IACzD;AACA,QAAI,WAAW,WAAW,QAAQ,GAAG;AACnC,aAAO,IAAI,WAAW,MAAM,SAAS,MAAM,CAAC;AAC5C;AAAA,IACF;AACA,QAAI,WAAW,WAAW,SAAS,GAAG;AACpC,cAAQ,IAAI,WAAW,MAAM,UAAU,MAAM,CAAC;AAC9C;AAAA,IACF;AAAA,EACF;AACA,SAAO,EAAE,UAAU,QAAQ,SAAS,aAAa,QAAQ,QAAO;AAClE;AACA,MAAM,2BAA2B,cAAc;AAAA;AAAA,EAE7C,kBAAkB,GAAG;AACnB,WAAO;AAAA,EACT;AACF;AACA,MAAM,gBAAgB,CAAC,KAAK,OAAuB,oBAAI,QAAO,MAAO;AACnE,MAAI,OAAO,QAAQ,WAAY,QAAO;AACtC,MAAI,OAAO,QAAQ,YAAY,QAAQ,KAAM,QAAO;AACpD,MAAI,KAAK,IAAI,GAAG,EAAG,QAAO;AAC1B,OAAK,IAAI,GAAG;AACZ,MAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,WAAO,IAAI,IAAI,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAAA,EAC9C;AACA,QAAM,SAAS,CAAA;AACf,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC9C,QAAI,OAAO,UAAU,YAAY;AAC/B,aAAO,GAAG,IAAI,cAAc,OAAO,IAAI;AAAA,IACzC,OAAO;AACL,aAAO,GAAG,IAAI;AAAA,IAChB;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,gBAAgB,SAAS;AAChC,SAAO,cAAc,OAAO;AAC9B;AACA,SAAS,yBAAyB,OAAO,SAAS;AAChD,QAAM,UAAU,OAAO,QAAQ,IAAI;AACnC,SAAO,YAAY,MAAM;AACvB,QAAI,CAAC,KAAK,aAAa,SAAS,IAAI,OAAO,GAAG;AAC5C,YAAM,IAAI;AAAA,QACR,oBAAoB,OAAO,OAAO,CAAC,+BAA+B,KAAK,OAAO;AAAA,MACtF;AAAA,IACI;AACA,WAAO,MAAM,MAAM,MAAM,IAAI;AAAA,EAC/B;AACF;AACA,MAAM,4BAA4B,MAAM,aAAa,qBAAqB,CAAC,wBAAwB,GAAG,oBAAoB,CAAC,wBAAwB,GAAG,uBAAuB,CAAC,wBAAwB,GAAG,wBAAwB,CAAC,wBAAwB,GAAG,mBAAmB,CAAC,wBAAwB,GAAG,mBAAmB,CAAC,wBAAwB,GAAG,wBAAwB,CAAC,wBAAwB,GAAG,mBAAmB,CAAC,wBAAwB,GAAG,mBAAmB,CAAC,wBAAwB,GAAG,yBAAyB,CAAC,wBAAwB,GAAG,KAAK;AAAA,EACriB,YAAY,EAAE,WAAW;AACvB,UAAK;AACL,sBAAkB,OAAO,GAAG,IAAI;AAChC,iBAAa,MAAM,6BAA6B;AAChD,iBAAa,MAAM,KAAK;AACxB,iBAAa,MAAM,SAAS;AAC5B,iBAAa,MAAM,MAAM;AACzB,iBAAa,MAAM,QAAQ;AAC3B,iBAAa,MAAM,SAAS,KAAK,aAAa,EAAE,MAAM,OAAM,CAAE,CAAC;AAC/D,iBAAa,MAAM,cAAc;AACjC,iBAAa,MAAM,SAAS,IAAI,QAAQ,CAAC,YAAY;AACnD,mBAAa,MAAM,gBAAgB,OAAO;AAAA,IAC5C,CAAC,CAAC;AACF,iBAAa,MAAM,YAAY,IAAI,mBAAmB;AAAA,MACpD,OAAO,IAAI,SAAS;AAClB,YAAI;AACJ,cAAM,gBAAgB,MAAM,aAAa,MAAM,KAAK,MAAM,OAAO,SAAS,IAAI,QAAQ,WAAW,aAAa,MAAM,KAAK,EAAE,OAAO,aAAa,MAAM,KAAK,EAAE,IAAI;AAChK,eAAO,cAAc,YAAY,GAAG,IAAI,IAAI,MAAM,GAAG,IAAI;AAAA,MAC3D;AAAA,MACA,QAAQ,MAAM;AACZ,YAAI;AACJ,iBAAS,MAAM,aAAa,MAAM,MAAM,MAAM,OAAO,SAAS,IAAI,kBAAkB;AAAA,MACtF;AAAA,MACA,cAAc,OAAO,SAAS;AAAA,MAC9B,UAAU;AAAA,QACR,kBAAkB,CAAC,EAAE,sBAAsB;AACzC,iBAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,kBAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,uBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,eAAe,GAAG;AAC1D,oBAAM,aAAa,KAAK,OAAO,KAAK,CAAC;AAAA,YACvC;AACA,kBAAM,UAAU,MAAM;AACpB,sBAAQ,MAAM,KAAK,MAAM,SAAS,CAAA,CAAE,CAAC;AACrC,kBAAI,aAAa,MAAM,OAAO,EAAE,SAAS,KAAK,GAAG;AAC/C,6BAAa,MAAM,OAAO,EAAE,YAAY,KAAK;AAAA,cAC/C;AAAA,YACF;AACA,kBAAM,iBAAiB,UAAU,OAAO;AACxC,kBAAM,iBAAiB,UAAU,OAAO;AACxC,yBAAa,MAAM,OAAO,EAAE,YAAY,KAAK;AAC7C,kBAAM,MAAK;AAAA,UACb,CAAC;AAAA,QACH;AAAA,QACA,kBAAkB,OAAO;AAAA,UACvB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACV,MAAc;AACJ,cAAI;AACJ,gBAAM,gBAAgB,MAAM,aAAa,MAAM,KAAK,MAAM,OAAO,SAAS,IAAI;AAC9E,cAAI,CAAC,cAAc;AACjB,4BAAgB,MAAM,+BAA+B,eAAe,EAAE,KAAK,MAAM,IAAI;AAAA,cACnF;AAAA,YACd,CAAa;AAAA,UACH;AACA,iBAAO,aAAa,EAAE,MAAM,QAAQ,IAAI,aAAY,CAAE;AAAA,QACxD;AAAA,QACA,gBAAgB,OAAO,EAAE,QAAQ,iBAAiB;AAChD,cAAI,KAAK;AACT,gBAAM,YAAY,OAAO,MAAM,aAAa,MAAM,KAAK,MAAM,OAAO,SAAS,IAAI,YAAY,OAAO,SAAS,IAAI;AACjH,cAAI,CAAC,UAAU;AACb,4BAAgB,MAAM,+BAA+B,eAAe,EAAE,KAAK,MAAM,IAAI;AAAA,cACnF;AAAA,YACd,CAAa;AAAA,UACH;AACA,iBAAO,SAAS,QAAQ,UAAU;AAAA,QACpC;AAAA,QACA,gBAAgB,OAAO,EAAE,YAAY;AACnC,cAAI,KAAK,KAAK;AACd,mBAAS,MAAM,OAAO,MAAM,aAAa,MAAM,KAAK,MAAM,OAAO,SAAS,IAAI,aAAa,OAAO,SAAS,IAAI,gBAAgB,OAAO,SAAS,GAAG,KAAK,KAAK,KAAK,MAAM,CAAA;AAAA,QACzK;AAAA,QACA,eAAe,OAAO,EAAE,aAAa;AACnC,cAAI,KAAK,KAAK;AACd,kBAAQ,MAAM,OAAO,MAAM,aAAa,MAAM,KAAK,MAAM,OAAO,SAAS,IAAI,aAAa,OAAO,SAAS,IAAI,YAAY,OAAO,SAAS,GAAG,KAAK,KAAK,MAAM;AAAA,QAC/J;AAAA,QACA,iBAAiB,OAAO,EAAE,aAAa;AACrC,cAAI,KAAK,KAAK;AACd,mBAAS,MAAM,OAAO,MAAM,aAAa,MAAM,KAAK,MAAM,OAAO,SAAS,IAAI,aAAa,OAAO,SAAS,IAAI,qBAAqB,OAAO,SAAS,GAAG,KAAK,KAAK,MAAM,MAAM,EAAE,SAAS,KAAI;AAAA,QAC9L;AAAA,QACA,mBAAmB,OAAO,wBAAwB;AAChD,cAAI,CAAC,aAAa,MAAM,KAAK,KAAK,EAAE,qBAAqB,aAAa,MAAM,KAAK,EAAE,QAAQ,CAAC,aAAa,MAAM,KAAK,EAAE,IAAI,iBAAiB;AACzI,4BAAgB,MAAM,+BAA+B,eAAe,EAAE,KAAK,MAAM,IAAI;AAAA,cACnF;AAAA,YACd,CAAa;AAAA,UACH;AACA,iBAAO,aAAa,MAAM,KAAK,EAAE,IAAI,gBAAgB,uBAAuB,IAAI;AAAA,QAClF;AAAA,QACA,wBAAwB,CAAC;AAAA,UACvB;AAAA,UACA;AAAA,QACV,MAAc;AACJ,gBAAM,IAAI,kBAAkB,mDAAmD;AAAA,QACjF;AAAA,MACR;AAAA,IACA,CAAK,CAAC;AACF,iBAAa,MAAM,kBAAkB,MAAM;AACzC,UAAI;AACJ,WAAK,QAAQ,SAAS;AACtB,WAAK,cAAc,IAAI,YAAY,iBAAiB,EAAE,SAAS,MAAM,UAAU,KAAI,CAAE,CAAC;AACtF,OAAC,MAAM,aAAa,MAAM,cAAc,MAAM,OAAO,SAAS,IAAI,KAAK,IAAI;AAAA,IAC7E,CAAC;AACD,iBAAa,MAAM,cAAc,KAAK;AACtC,SAAK,UAAU;AACf,SAAK,eAAe,gBAAgB,OAAO;AAAA,EAC7C;AAAA,EACA,WAAW,SAAS;AAClB,SAAK,UAAU;AACf,SAAK,eAAe,gBAAgB,OAAO;AAAA,EAC7C;AAAA,EACA,oBAAoB;AAClB,UAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,UAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BpB,UAAM,QAAQ,SAAS,cAAc,QAAQ;AAC7C,UAAM,YAAY;AAClB,UAAM,OAAO;AACb,UAAM,OAAO;AACb,UAAM,WAAW;AACjB,UAAM,aAAa,qBAAqB,MAAM;AAC9C,UAAM,aAAa,eAAe,GAAG;AACrC,UAAM,aAAa,aAAa,IAAI;AACpC,UAAM,aAAa,SAAS,iCAAiC;AAC7D,iBAAa,MAAM,QAAQ,KAAK;AAChC,UAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,YAAQ,YAAY;AACpB,YAAQ,YAAY,KAAK;AACzB,iBAAa,MAAM,UAAU,OAAO;AACpC,iBAAa,MAAM,OAAO,EAAE,OAAO,KAAK;AACxC,iBAAa,MAAM,UAAU,EAAE,GAAG,0BAA0B,MAAM;AAChE,UAAI,KAAK,KAAK;AACd,OAAC,MAAM,OAAO,MAAM,aAAa,MAAM,KAAK,MAAM,OAAO,SAAS,IAAI,WAAW,OAAO,SAAS,IAAI,eAAe,OAAO,SAAS,GAAG,QAAO;AAAA,IAChJ,CAAC;AACD,iBAAa,MAAM,UAAU,EAAE,GAAG,2BAA2B,MAAM;AACjE,UAAI,KAAK,KAAK;AACd,OAAC,MAAM,OAAO,MAAM,aAAa,MAAM,KAAK,MAAM,OAAO,SAAS,IAAI,WAAW,OAAO,SAAS,IAAI,gBAAgB,OAAO,SAAS,GAAG,QAAO;AAAA,IACjJ,CAAC;AACD,iBAAa,MAAM,UAAU,EAAE,GAAG,gBAAgB,CAAC,CAAC,OAAO,IAAI,MAAM;AACnE,UAAI,CAAC,KAAK,aAAa,OAAO,IAAI,KAAK,EAAG;AAC1C,UAAI,UAAU,WAAW,WAAW,MAAM;AACxC,cAAM,QAAQ,2BAA2B,KAAK,KAAK;AACnD,aAAK,cAAc,IAAI,YAAY,iBAAiB,EAAE,QAAQ,EAAE,MAAK,EAAE,CAAE,CAAC;AAC1E,YAAI,iBAAiB,mBAAmB;AACtC,gBAAM;AAAA,QACR;AACA;AAAA,MACF;AACA,WAAK,cAAc,IAAI,YAAY,WAAW,KAAK,IAAI,EAAE,QAAQ,KAAI,CAAE,CAAC;AAAA,IAC1E,CAAC;AACD,iBAAa,MAAM,UAAU,EAAE,GAAG,WAAW,MAAM;AACjD,UAAI,aAAa,MAAM,QAAQ,KAAK,aAAa,MAAM,OAAO,EAAE,SAAS,aAAa,MAAM,QAAQ,CAAC,GAAG;AACtG,qBAAa,MAAM,OAAO,EAAE,YAAY,aAAa,MAAM,QAAQ,CAAC;AACpE,qBAAa,MAAM,UAAU,MAAM;AACnC,qBAAa,MAAM,QAAQ,MAAM;AAAA,MACnC;AAAA,IACF,CAAC;AACD,iBAAa,MAAM,UAAU,EAAE;AAAA,MAC7B;AAAA,MACA,CAAC,EAAE,QAAO,MAAO;AACf,aAAK,WAAW,OAAO;AAAA,MACzB;AAAA,IACN;AACI,UAAM,iBAAiB,QAAQ,aAAa,MAAM,gBAAgB,GAAG,EAAE,MAAM,MAAM;AACnF,QAAI;AACF,sBAAgB,MAAM,+BAA+B,YAAY,EAAE,KAAK,IAAI;AAAA,IAC9E,SAAS,OAAO;AACd,cAAQ,MAAM,KAAK;AACnB,sBAAgB,MAAM,+BAA+B,eAAe,EAAE,KAAK,MAAM,iBAAiB,QAAQ,QAAQ,IAAI,kBAAkB,8BAA8B,CAAC;AAAA,IACzK;AAAA,EACF;AAAA,EACA,uBAAuB;AACrB,QAAI;AACJ,KAAC,MAAM,aAAa,MAAM,MAAM,MAAM,OAAO,SAAS,IAAI,oBAAoB,QAAQ,aAAa,MAAM,gBAAgB,CAAC;AAC1H,iBAAa,MAAM,UAAU,EAAE,WAAU;AAAA,EAC3C;AAAA,EACA,sBAAsB,YAAY;AAChC,iBAAa,MAAM,OAAO,UAAU;AACpC,QAAI,aAAa,MAAM,YAAY,GAAG;AACpC,sBAAgB,MAAM,+BAA+B,2BAA2B,EAAE,KAAK,MAAM,aAAa,MAAM,KAAK,CAAC;AACtH,mBAAa,MAAM,OAAO,EAAE,KAAK,MAAM;AACrC,qBAAa,MAAM,UAAU,EAAE,SAAS,WAAW,gBAAgB,UAAU,CAAC;AAAA,MAChF,CAAC;AAAA,IACH,OAAO;AACL,sBAAgB,MAAM,+BAA+B,YAAY,EAAE,KAAK,IAAI;AAAA,IAC9E;AAAA,EACF;AAAA,EACA,WAAW,YAAY;AACrB,QAAI;AACF,YAAM,YAAY,KAAK,gBAAgB,UAAU;AACjD,sBAAgB,MAAM,+BAA+B,kBAAkB,EAAE,KAAK,MAAM,SAAS;AAC7F,WAAK,sBAAsB,SAAS;AAAA,IACtC,SAAS,OAAO;AACd,sBAAgB,MAAM,+BAA+B,eAAe,EAAE,KAAK,MAAM,iBAAiB,QAAQ,QAAQ,IAAI,kBAAkB,yBAAyB,CAAC;AAAA,IACpK;AAAA,EACF;AAAA,EACA,MAAM,gBAAgB;AACpB,QAAI,KAAK;AACT,UAAM,aAAa,MAAM,OAAO;AAChC,KAAC,MAAM,aAAa,MAAM,MAAM,MAAM,OAAO,SAAS,IAAI,MAAK;AAC/D,YAAQ,MAAM,aAAa,MAAM,UAAU,MAAM,OAAO,SAAS,IAAI,SAAS,cAAa;AAAA,EAC7F;AAAA,EACA,MAAM,eAAe;AACnB,QAAI;AACJ,UAAM,aAAa,MAAM,OAAO;AAChC,YAAQ,MAAM,aAAa,MAAM,UAAU,MAAM,OAAO,SAAS,IAAI,SAAS,aAAY;AAAA,EAC5F;AAAA,EACA,MAAM,gBAAgB,QAAQ;AAC5B,QAAI;AACJ,UAAM,aAAa,MAAM,OAAO;AAChC,YAAQ,MAAM,aAAa,MAAM,UAAU,MAAM,OAAO,SAAS,IAAI,SAAS,gBAAgB,MAAM;AAAA,EACtG;AAAA,EACA,MAAM,iBAAiB,QAAQ;AAC7B,QAAI;AACJ,UAAM,aAAa,MAAM,OAAO;AAChC,YAAQ,MAAM,aAAa,MAAM,UAAU,MAAM,OAAO,SAAS,IAAI,SAAS,iBAAiB,MAAM;AAAA,EACvG;AAAA,EACA,MAAM,YAAY,UAAU;AAC1B,QAAI;AACJ,UAAM,aAAa,MAAM,OAAO;AAChC,YAAQ,MAAM,aAAa,MAAM,UAAU,MAAM,OAAO,SAAS,IAAI,SAAS,YAAY,EAAE,SAAQ,CAAE;AAAA,EACxG;AAAA,EACA,MAAM,cAAc;AAClB,QAAI;AACJ,UAAM,aAAa,MAAM,OAAO;AAChC,YAAQ,MAAM,aAAa,MAAM,UAAU,MAAM,OAAO,SAAS,IAAI,SAAS,YAAW;AAAA,EAC3F;AAAA,EACA,MAAM,iBAAiB,QAAQ,QAAQ;AACrC,QAAI;AACJ,UAAM,aAAa,MAAM,OAAO;AAChC,YAAQ,MAAM,aAAa,MAAM,UAAU,MAAM,OAAO,SAAS,IAAI,SAAS,iBAAiB,EAAE,QAAQ,OAAM,CAAE;AAAA,EACnH;AAAA,EACA,MAAM,cAAc;AAClB,QAAI;AACJ,UAAM,aAAa,MAAM,OAAO;AAChC,YAAQ,MAAM,aAAa,MAAM,UAAU,MAAM,OAAO,SAAS,IAAI,SAAS,YAAW;AAAA,EAC3F;AAAA,EACA,MAAM,cAAc;AAClB,QAAI;AACJ,UAAM,aAAa,MAAM,OAAO;AAChC,YAAQ,MAAM,aAAa,MAAM,UAAU,MAAM,OAAO,SAAS,IAAI,SAAS,YAAW;AAAA,EAC3F;AAAA,EACA,MAAM,kBAAkB,OAAO;AAC7B,QAAI;AACJ,UAAM,aAAa,MAAM,OAAO;AAChC,YAAQ,MAAM,aAAa,MAAM,UAAU,MAAM,OAAO,SAAS,IAAI,SAAS,kBAAkB,EAAE,MAAK,CAAE;AAAA,EAC3G;AACF;AACA,QAAQ,iBAAiB,GAAG;AAC5B,QAAQ,oBAAI,QAAO;AACnB,YAAY,oBAAI,QAAO;AACvB,SAAS,oBAAI,QAAO;AACpB,WAAW,oBAAI,QAAO;AACtB,UAAU,oBAAI,QAAO;AACrB,iBAAiB,oBAAI,QAAO;AAC5B,UAAU,oBAAI,QAAO;AACrB,aAAa,oBAAI,QAAO;AACxB,gCAAgC,oBAAI,QAAO;AAC3C,kBAAkB,SAAS,OAAO;AAChC,OAAK,cAAc,IAAI,YAAY,iBAAiB,EAAE,QAAQ,EAAE,MAAK,EAAE,CAAE,CAAC;AAC1E,QAAM;AACR;AACA,8BAA8B,SAAS,SAAS;AAC9C,MAAI;AACJ,OAAK,QAAQ,cAAc,OAAO,QAAQ,UAAU,WAAW,QAAQ,UAAU,MAAM,QAAQ,UAAU,OAAO,SAAS,IAAI,gBAAgB;AAC/I;AACA,iBAAiB,WAAW;AAC1B,MAAI,CAAC,aAAa,MAAM,SAAS,GAAG;AAClC,UAAM,IAAI;AAAA,MACR;AAAA,IACN;AAAA,EACE;AACA,SAAO,aAAa,MAAM,SAAS;AACrC;AACA,iBAAiB,SAAS,UAAU;AAClC,MAAI,aAAa,MAAM,YAAY,KAAK,aAAa,MAAM,SAAS,KAAK,aAAa,MAAM,SAAS,MAAM,UAAU;AACnH,UAAM,IAAI;AAAA,MACR;AAAA,IACN;AAAA,EACE;AACA,eAAa,MAAM,WAAW,QAAQ;AACxC;AACA,qBAAqB,SAAS,SAAS;AACrC,MAAI,EAAE,cAAc,SAAU;AAC9B,QAAM,WAAW,QAAQ;AACzB,SAAO,QAAQ;AACf,MAAI,YAAY,KAAM;AACtB,MAAI,OAAO,aAAa,YAAY,SAAS,KAAI,MAAO,IAAI;AAC1D,UAAM,IAAI,kBAAkB,8CAA8C;AAAA,EAC5E;AACA,kBAAgB,MAAM,+BAA+B,cAAc,EAAE,KAAK,MAAM,QAAQ;AAC1F;AACA,mBAAmB,oBAAI,QAAO;AAC9B,eAAe,oBAAI,QAAO;AAC1B,eAAe,WAAW;AACxB,MAAI,aAAa,MAAM,YAAY,KAAK,CAAC,aAAa,MAAM,MAAM,KAAK,CAAC,aAAa,MAAM,KAAK,GAAG;AACjG;AAAA,EACF;AACA,eAAa,MAAM,cAAc,IAAI;AACrC,kBAAgB,MAAM,+BAA+B,2BAA2B,EAAE,KAAK,MAAM,aAAa,MAAM,KAAK,CAAC;AACtH,QAAM,WAAW,IAAI,IAAI,gBAAgB,MAAM,+BAA+B,cAAc,EAAE,KAAK,IAAI,GAAG,OAAO,SAAS,MAAM;AAChI,eAAa,MAAM,UAAU,EAAE,gBAAgB,SAAS,MAAM;AAC9D,WAAS,OAAO,aAAa;AAAA,IAC3B,SAAS,gBAAgB,aAAa,MAAM,KAAK,CAAC;AAAA,IAClD,UAAU,OAAO,SAAS;AAAA,IAC1B,SAAS,KAAK;AAAA,EAClB,CAAG;AACD,eAAa,MAAM,UAAU,EAAE,QAAO;AACtC,eAAa,MAAM,MAAM,EAAE,MAAM,SAAS,SAAQ;AAClD,MAAI,aAAa,MAAM,QAAQ,GAAG;AAChC,iBAAa,MAAM,OAAO,EAAE,OAAO,aAAa,MAAM,QAAQ,CAAC;AAAA,EACjE;AACF;AACA,kBAAkB,OAAO,GAAG,iBAAiB,oBAAoB,kBAAkB;AACnF,kBAAkB,OAAO,GAAG,gBAAgB,mBAAmB,kBAAkB;AACjF,kBAAkB,OAAO,GAAG,mBAAmB,sBAAsB,kBAAkB;AACvF,kBAAkB,OAAO,GAAG,oBAAoB,uBAAuB,kBAAkB;AACzF,kBAAkB,OAAO,GAAG,eAAe,kBAAkB,kBAAkB;AAC/E,kBAAkB,OAAO,GAAG,eAAe,kBAAkB,kBAAkB;AAC/E,kBAAkB,OAAO,GAAG,oBAAoB,uBAAuB,kBAAkB;AACzF,kBAAkB,OAAO,GAAG,eAAe,kBAAkB,kBAAkB;AAC/E,kBAAkB,OAAO,GAAG,eAAe,kBAAkB,kBAAkB;AAC/E,kBAAkB,OAAO,GAAG,qBAAqB,wBAAwB,kBAAkB;AAC3F,oBAAoB,OAAO,kBAAkB;AAC7C,MAAM,uBAAuB,mBAAmB;AAAA,EAC9C,cAAc;AACZ,UAAM,EAAE,SAAS,WAAW;AAAA,EAC9B;AAAA,EACA,gBAAgB,SAAS;AACvB,QAAI;AACJ,KAAC,MAAM,QAAQ,sBAAsB,OAAO,OAAO,OAAO,IAAI;AAC9D,WAAO;AAAA,EACT;AACF;AACA,SAAS,uBAAuB,MAAM,mBAAmB;AACvD,MAAI,EAAE,oBAAoB,YAAa;AACvC,MAAI,CAAC,eAAe,IAAI,GAAG,GAAG;AAC5B,mBAAe,OAAO,KAAK,cAAc;AAAA,EAC3C;AACF;AACA,uBAAsB;ACntCtB,MAAM,oBAEF;AAAA,EACF,iBAAiB;AAAA,EACjB,wBAAwB;AAAA,EACxB,0BAA0B;AAAA,EAC1B,eAAe;AAAA,EACf,yBAAyB;AAAA,EACzB,6BAA6B;AAAA,EAC7B,2BAA2B;AAAA,EAC3B,iBAAiB;AAAA,EACjB,kBAAkB;AACpB;AAEA,MAAM,cAAc,OAAO,KAAK,iBAAiB;AAE1C,MAAM,UAAU,MAAM;AAAA,EAC3B,SAASC,SAAQ,EAAE,SAAS,GAAG,UAAA,GAAa,cAAc;AACxD,UAAM,MAAM,MAAM,OAA8B,IAAI;AAEpD,UAAM,gBAAgB,MAAM;AAC1B,YAAM,KAAK,IAAI;AACf,UAAI,CAAC,GAAI;AAGT,UAAI,eAAe,IAAI,iBAAiB,GAAG;AACzC,WAAG,WAAW,QAAQ,OAAO;AAC7B;AAAA,MACF;AAEA,UAAI,SAAS;AACb,qBAAe,YAAY,iBAAiB,EAAE,KAAK,MAAM;AACvD,YAAI,QAAQ;AACV,aAAG,WAAW,QAAQ,OAAO;AAAA,QAC/B;AAAA,MACF,CAAC;AACD,aAAO,MAAM;AACX,iBAAS;AAAA,MACX;AAAA,IACF,GAAG,CAAC,QAAQ,OAAO,CAAC;AAEpB,UAAM,UAAU,MAAM;AACpB,YAAM,KAAK,IAAI;AACf,UAAI,CAAC,GAAI;AAET,YAAM,aAAa,IAAI,gBAAA;AACvB,iBAAW,aAAa,aAAa;AACnC,WAAG;AAAA,UACD;AAAA,UACA,CAAC,MAAM;AACL,kBAAM,cAAc,kBAAkB,SAAS;AAC/C,kBAAM,UAAU,QAAQ,SAAS,WAAW;AAC5C,gBAAI,OAAO,YAAY,YAAY;AACjC,sBAAQ,EAAE,MAAa;AAAA,YACzB;AAAA,UACF;AAAA,UACA,EAAE,QAAQ,WAAW,OAAA;AAAA,QAAO;AAAA,MAEhC;AACA,aAAO,MAAM;AACX,mBAAW,MAAA;AAAA,MACb;AAAA,IACF,GAAG,CAAC,QAAQ,QAAQ,CAAC;AAErB,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAK,CAAC,YAAY;AAChB,cAAI,UAAU;AAEd,kBAAQ,YAAY,OAAO;AAE3B,cAAI,OAAO,iBAAiB,YAAY;AACtC,yBAAa,OAAO;AAAA,UACtB,WAAW,cAAc;AACvB,yBAAa,UAAU;AAAA,UACzB;AAEA,cAAI,CAAC,IAAI,SAAS;AAChB;AAAA,UACF;AAAA,QACF;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;"}
1
+ {"version":3,"file":"index.js","sources":["../src/useStableOptions.ts","../src/useChatKit.ts","../src/chatkit.tsx"],"sourcesContent":["import React from 'react';\n\nfunction isPlainObjectOrArray(\n obj: unknown,\n): obj is Record<string, unknown> | unknown[] {\n return (\n (obj !== null &&\n typeof obj === 'object' &&\n [null, Object.prototype].includes(Object.getPrototypeOf(obj))) ||\n Array.isArray(obj)\n );\n}\n\nexport function deepEqualIgnoringFns(\n a: unknown,\n b: unknown,\n seen = new WeakMap<WeakKey, unknown>(),\n): boolean {\n if (Object.is(a, b)) return true;\n\n // Functions: ignore identity/body differences entirely\n if (typeof a === 'function' && typeof b === 'function') {\n return typeof a === typeof b;\n }\n\n if (!isPlainObjectOrArray(a) || !isPlainObjectOrArray(b)) {\n return false;\n }\n\n // Cycles\n const mapped = seen.get(a);\n if (mapped && mapped === b) return true;\n seen.set(a, b);\n\n // Arrays\n if (Array.isArray(a) || Array.isArray(b)) {\n if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length)\n return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqualIgnoringFns(a[i], b[i], seen)) return false;\n }\n return true;\n }\n\n // Plain objects (Maps/Sets/Dates: treat as unequal unless same ref)\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n\n for (let i = 0; i < aKeys.length; i++) {\n const k = aKeys[i];\n if (!Object.prototype.hasOwnProperty.call(b, k)) return false;\n\n const av = (a as Record<string, unknown>)[k];\n const bv = (b as Record<string, unknown>)[k];\n\n if (!deepEqualIgnoringFns(av, bv, seen)) return false;\n }\n\n return true;\n}\n\nexport function withLatestFunctionWrappers<T extends Record<string, any>>(ref: {\n current: T;\n}): T {\n const path: (string | number)[] = [];\n\n const getByPath = (root: any, p: (string | number)[]) =>\n p.reduce((acc, k) => (acc == null ? acc : acc[k]), root);\n\n const wrap = (parentPath: (string | number)[], key: string | number) => {\n return (...args: any[]) => {\n const latestParent = getByPath(ref.current, parentPath);\n const latestFn: any = latestParent?.[key];\n if (typeof latestFn === 'function') {\n return latestFn.apply(latestParent, args);\n }\n };\n };\n\n const visit = (v: any): any => {\n if (typeof v === 'function') {\n const key = path[path.length - 1];\n const parentPath = path.slice(0, -1);\n return wrap(parentPath, key);\n }\n if (Array.isArray(v)) {\n const base = path.length;\n const out = new Array(v.length);\n for (let i = 0; i < v.length; i++) {\n path[base] = i;\n out[i] = visit(v[i]);\n }\n path.length = base;\n return out as any;\n }\n if (v && typeof v === 'object') {\n const base = path.length;\n const out: Record<string, any> = {};\n for (const k of Object.keys(v)) {\n path[base] = k;\n out[k] = visit(v[k]);\n }\n path.length = base;\n return out as any;\n }\n return v;\n };\n\n return visit(ref.current);\n}\n\nexport function useStableOptions<T extends Record<string, any>>(options: T): T {\n const latestOptions = React.useRef(options);\n latestOptions.current = options;\n const cache = React.useRef<{ snapshot: T; shaped: T } | null>(null);\n\n if (\n !cache.current ||\n !deepEqualIgnoringFns(cache.current.snapshot, options)\n ) {\n cache.current = {\n snapshot: options,\n shaped: withLatestFunctionWrappers(latestOptions),\n };\n }\n\n return cache.current.shaped;\n}\n","import * as React from 'react';\nimport { ChatKitEvents, ChatKitOptions, XpertAIChatKit } from '@xpert-ai/chatkit-types';\nimport { useStableOptions } from './useStableOptions';\n\n\ntype DotToCamelCase<S extends string> = S extends `${infer Head}.${infer Tail}`\n ? `${Head}${Capitalize<DotToCamelCase<Tail>>}`\n : S;\n\nconst CHATKIT_METHOD_NAMES = Object.freeze([\n 'focusComposer',\n 'setThreadId',\n 'sendUserMessage',\n 'setComposerValue',\n 'fetchUpdates',\n 'sendCustomAction',\n] as const);\n\ntype ChatKitMethod = (typeof CHATKIT_METHOD_NAMES)[number];\n\ntype ChatKitMethods = {\n [K in ChatKitMethod]: XpertAIChatKit[K];\n};\n\nexport type ToEventHandlerKey<K extends keyof ChatKitEvents> =\n DotToCamelCase<K> extends `chatkit${infer EventName}`\n ? `on${Capitalize<EventName>}`\n : never;\nexport type ChatKitEventHandlers = Partial<{\n [K in keyof ChatKitEvents as ToEventHandlerKey<K>]: ChatKitEvents[K] extends CustomEvent<\n infer Detail\n >\n ? Detail extends undefined\n ? () => void\n : (event: Detail) => void\n : never;\n}>;\n\nexport type UseChatKitOptions = ChatKitOptions & ChatKitEventHandlers;\n\nexport type ChatKitControl = {\n setInstance: (instance: XpertAIChatKit | null) => void;\n options: ChatKitOptions;\n handlers: ChatKitEventHandlers;\n};\n\nexport type UseChatKitReturn = ChatKitMethods & {\n control: ChatKitControl;\n ref: React.RefObject<XpertAIChatKit | null>;\n};\n\n\nexport function useChatKit(options: UseChatKitOptions): UseChatKitReturn {\n const ref = React.useRef<XpertAIChatKit | null>(null);\n const stableOptions = useStableOptions(options);\n\n const methods: ChatKitMethods = React.useMemo(() => {\n return CHATKIT_METHOD_NAMES.reduce((acc, key) => {\n acc[key] = (...args: any[]) => {\n if (!ref.current) {\n console.warn('ChatKit element is not mounted');\n return;\n }\n\n return (ref.current as any)[key](...args);\n };\n return acc;\n }, {} as ChatKitMethods);\n }, []);\n\n const setInstance = React.useCallback(\n (instance: XpertAIChatKit | null): void => {\n ref.current = instance;\n },\n [],\n );\n\n const control: ChatKitControl = React.useMemo(() => {\n const options = {} as ChatKitOptions;\n const handlers: ChatKitEventHandlers = {};\n\n for (const [key, value] of Object.entries(stableOptions)) {\n if (/^on[A-Z]/.test(key) && key !== 'onClientTool') {\n // @ts-expect-error - too dynamic for TypeScript\n handlers[key] = value;\n } else {\n // @ts-expect-error - too dynamic for TypeScript\n options[key] = value;\n }\n }\n\n return {\n setInstance,\n options,\n handlers,\n };\n }, [stableOptions, setInstance]);\n\n return React.useMemo(\n () => ({ ...methods, control, ref }),\n [methods, control],\n );\n}","import * as React from 'react';\nimport { XpertAIChatKit, ChatKitEvents } from '@xpert-ai/chatkit-types';\n\n// Import web component side effect\nimport '@xpert-ai/chatkit-web-component';\nimport { ChatKitControl, ToEventHandlerKey } from './useChatKit';\n\ndeclare module 'react' {\n namespace JSX {\n interface IntrinsicElements {\n 'xpertai-chatkit': React.DetailedHTMLProps<\n React.HTMLAttributes<XpertAIChatKit>,\n XpertAIChatKit\n >;\n }\n }\n}\n\nexport interface ChatKitProps extends React.HTMLAttributes<XpertAIChatKit> {\n control: ChatKitControl;\n}\n\nconst EVENT_HANDLER_MAP: {\n [K in keyof ChatKitEvents]: ToEventHandlerKey<K>;\n} = {\n 'chatkit.error': 'onError',\n 'chatkit.response.end': 'onResponseEnd',\n 'chatkit.response.start': 'onResponseStart',\n 'chatkit.log': 'onLog',\n 'chatkit.thread.change': 'onThreadChange',\n 'chatkit.thread.load.start': 'onThreadLoadStart',\n 'chatkit.thread.load.end': 'onThreadLoadEnd',\n 'chatkit.ready': 'onReady',\n 'chatkit.effect': 'onEffect',\n};\n\nconst EVENT_NAMES = Object.keys(EVENT_HANDLER_MAP) as (keyof ChatKitEvents)[];\n\nexport const ChatKit = React.forwardRef<XpertAIChatKit, ChatKitProps>(\n function ChatKit({ control, ...htmlProps }, forwardedRef) {\n const ref = React.useRef<XpertAIChatKit | null>(null);\n\n React.useLayoutEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n // Fast path: element is already defined\n if (customElements.get('xpertai-chatkit')) {\n el.setOptions(control.options);\n return;\n }\n // Fallback path: wait for definition\n let active = true;\n customElements.whenDefined('xpertai-chatkit').then(() => {\n if (active) {\n el.setOptions(control.options);\n }\n });\n return () => {\n active = false;\n };\n }, [control.options]);\n\n React.useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n const controller = new AbortController();\n for (const eventName of EVENT_NAMES) {\n el.addEventListener(\n eventName,\n (e) => {\n const handlerName = EVENT_HANDLER_MAP[eventName];\n const handler = control.handlers[handlerName];\n if (typeof handler === 'function') {\n handler(e.detail as any);\n }\n },\n { signal: controller.signal },\n );\n }\n return () => {\n controller.abort();\n };\n }, [control.handlers]);\n\n return (\n <xpertai-chatkit\n ref={(chatKit) => {\n ref.current = chatKit;\n\n control.setInstance(chatKit);\n\n if (typeof forwardedRef === 'function') {\n forwardedRef(chatKit);\n } else if (forwardedRef) {\n forwardedRef.current = chatKit;\n }\n\n if (!ref.current) {\n return;\n }\n }}\n {...htmlProps}\n />\n );\n },\n);\n"],"names":["React","options","ChatKit"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xpert-ai/chatkit-react",
3
- "version": "0.0.4",
3
+ "version": "0.1.1",
4
4
  "description": "React bindings for Xpert Chatkit",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -21,8 +21,8 @@
21
21
  "react-dom": ">=18"
22
22
  },
23
23
  "dependencies": {
24
- "@xpert-ai/chatkit-types": "~0.0.10",
25
- "@xpert-ai/chatkit-web-component": "~0.0.3"
24
+ "@xpert-ai/chatkit-web-component": "~0.2.0",
25
+ "@xpert-ai/chatkit-types": "~0.2.0"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/react": "^18.3.0",
@@ -37,8 +37,7 @@
37
37
  "xpert"
38
38
  ],
39
39
  "publishConfig": {
40
- "access": "public",
41
- "provenance": false
40
+ "access": "public"
42
41
  },
43
42
  "repository": {
44
43
  "type": "git",