diff --git a/README.md b/README.md index f8f3e89c7..bad5f2659 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,7 @@ You can also customize chatbot with different configuration Chatbot.init({ chatflowid: '91e9c803-5169-4db9-8207-3c0915d71c5f', apiHost: 'http://localhost:3000', + pageTitle: 'Flowise Chatbot Widget', // Optional: browser tab title. Empty string falls back to "Flowise Chatbot Widget" chatflowConfig: { // topK: 2 }, diff --git a/dist/components/Bot.d.ts b/dist/components/Bot.d.ts index a8c1bad40..95a35bde9 100644 --- a/dist/components/Bot.d.ts +++ b/dist/components/Bot.d.ts @@ -86,6 +86,7 @@ export type observersConfigType = Record<'observeUserInput' | 'observeLoading' | export type BotProps = { chatflowid: string; apiHost?: string; + pageTitle?: string; onRequest?: (request: RequestInit) => Promise; chatflowConfig?: Record; backgroundColor?: string; diff --git a/dist/components/Bot.d.ts.map b/dist/components/Bot.d.ts.map index f48262d72..5296afdca 100644 --- a/dist/components/Bot.d.ts.map +++ b/dist/components/Bot.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Bot.d.ts","sourceRoot":"","sources":["../../src/components/Bot.tsx"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Bot.d.ts","sourceRoot":"","sources":["../../src/components/Bot.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/web.d.ts b/dist/web.d.ts index fb9b57535..28d2d0ad5 100644 --- a/dist/web.d.ts +++ b/dist/web.d.ts @@ -2,6 +2,7 @@ declare const chatbot: { initFull: (props: { chatflowid: string; apiHost?: string | undefined; + pageTitle?: string | undefined; onRequest?: ((request: RequestInit) => Promise) | undefined; chatflowConfig?: Record | undefined; observersConfig?: import("./components/Bot").observersConfigType | undefined; @@ -12,6 +13,7 @@ declare const chatbot: { init: (props: { chatflowid: string; apiHost?: string | undefined; + pageTitle?: string | undefined; onRequest?: ((request: RequestInit) => Promise) | undefined; chatflowConfig?: Record | undefined; observersConfig?: import("./components/Bot").observersConfigType | undefined; diff --git a/dist/web.d.ts.map b/dist/web.d.ts.map index df6ba909a..88281532b 100644 --- a/dist/web.d.ts.map +++ b/dist/web.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;CAAiB,CAAC;AAI/B,eAAe,OAAO,CAAC"} \ No newline at end of file +{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;CAAiB,CAAC;AAI/B,eAAe,OAAO,CAAC"} \ No newline at end of file diff --git a/dist/web.js b/dist/web.js index a4df5dcca..74f4e8f4e 100644 --- a/dist/web.js +++ b/dist/web.js @@ -1,84332 +1 @@ - -(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); -function cloneProps(props) { - const propKeys = Object.keys(props); - return propKeys.reduce((memo, k) => { - const prop = props[k]; - memo[k] = Object.assign({}, prop); - if (isObject(prop.value) && !isFunction(prop.value) && !Array.isArray(prop.value)) memo[k].value = Object.assign({}, prop.value); - if (Array.isArray(prop.value)) memo[k].value = prop.value.slice(0); - return memo; - }, {}); -} - -function normalizePropDefs(props) { - if (!props) return {}; - const propKeys = Object.keys(props); - return propKeys.reduce((memo, k) => { - const v = props[k]; - memo[k] = !(isObject(v) && "value" in v) ? { - value: v - } : v; - memo[k].attribute || (memo[k].attribute = toAttribute(k)); - memo[k].parse = "parse" in memo[k] ? memo[k].parse : typeof memo[k].value !== "string"; - return memo; - }, {}); -} -function propValues(props) { - const propKeys = Object.keys(props); - return propKeys.reduce((memo, k) => { - memo[k] = props[k].value; - return memo; - }, {}); -} -function initializeProps(element, propDefinition) { - const props = cloneProps(propDefinition), - propKeys = Object.keys(propDefinition); - propKeys.forEach(key => { - const prop = props[key], - attr = element.getAttribute(prop.attribute), - value = element[key]; - if (attr) prop.value = prop.parse ? parseAttributeValue(attr) : attr; - if (value != null) prop.value = Array.isArray(value) ? value.slice(0) : value; - prop.reflect && reflect(element, prop.attribute, prop.value); - Object.defineProperty(element, key, { - get() { - return prop.value; - }, - - set(val) { - const oldValue = prop.value; - prop.value = val; - prop.reflect && reflect(this, prop.attribute, prop.value); - - for (let i = 0, l = this.__propertyChangedCallbacks.length; i < l; i++) { - this.__propertyChangedCallbacks[i](key, val, oldValue); - } - }, - - enumerable: true, - configurable: true - }); - }); - return props; -} -function parseAttributeValue(value) { - if (!value) return; - - try { - return JSON.parse(value); - } catch (err) { - return value; - } -} -function reflect(node, attribute, value) { - if (value == null || value === false) return node.removeAttribute(attribute); - let reflect = JSON.stringify(value); - node.__updating[attribute] = true; - if (reflect === "true") reflect = ""; - node.setAttribute(attribute, reflect); - Promise.resolve().then(() => delete node.__updating[attribute]); -} -function toAttribute(propName) { - return propName.replace(/\.?([A-Z]+)/g, (x, y) => "-" + y.toLowerCase()).replace("_", "-").replace(/^-/, ""); -} -function isObject(obj) { - return obj != null && (typeof obj === "object" || typeof obj === "function"); -} -function isFunction(val) { - return Object.prototype.toString.call(val) === "[object Function]"; -} -function isConstructor(f) { - return typeof f === "function" && f.toString().indexOf("class") === 0; -} - -let currentElement; -function createElementType(BaseElement, propDefinition) { - const propKeys = Object.keys(propDefinition); - return class CustomElement extends BaseElement { - static get observedAttributes() { - return propKeys.map(k => propDefinition[k].attribute); - } - - constructor() { - super(); - this.__initialized = false; - this.__released = false; - this.__releaseCallbacks = []; - this.__propertyChangedCallbacks = []; - this.__updating = {}; - this.props = {}; - } - - connectedCallback() { - if (this.__initialized) return; - this.__releaseCallbacks = []; - this.__propertyChangedCallbacks = []; - this.__updating = {}; - this.props = initializeProps(this, propDefinition); - const props = propValues(this.props), - ComponentType = this.Component, - outerElement = currentElement; - - try { - currentElement = this; - this.__initialized = true; - if (isConstructor(ComponentType)) new ComponentType(props, { - element: this - });else ComponentType(props, { - element: this - }); - } finally { - currentElement = outerElement; - } - } - - async disconnectedCallback() { - // prevent premature releasing when element is only temporarely removed from DOM - await Promise.resolve(); - if (this.isConnected) return; - this.__propertyChangedCallbacks.length = 0; - let callback = null; - - while (callback = this.__releaseCallbacks.pop()) callback(this); - - delete this.__initialized; - this.__released = true; - } - - attributeChangedCallback(name, oldVal, newVal) { - if (!this.__initialized) return; - if (this.__updating[name]) return; - name = this.lookupProp(name); - - if (name in propDefinition) { - if (newVal == null && !this[name]) return; - this[name] = propDefinition[name].parse ? parseAttributeValue(newVal) : newVal; - } - } - - lookupProp(attrName) { - if (!propDefinition) return; - return propKeys.find(k => attrName === k || attrName === propDefinition[k].attribute); - } - - get renderRoot() { - return this.shadowRoot || this.attachShadow({ - mode: "open" - }); - } - - addReleaseCallback(fn) { - this.__releaseCallbacks.push(fn); - } - - addPropertyChangedCallback(fn) { - this.__propertyChangedCallbacks.push(fn); - } - - }; -} - -function register(tag, props = {}, options = {}) { - const { - BaseElement = HTMLElement, - extension - } = options; - return ComponentType => { - if (!tag) throw new Error("tag is required to register a Component"); - let ElementType = customElements.get(tag); - - if (ElementType) { - // Consider disabling this in a production mode - ElementType.prototype.Component = ComponentType; - return ElementType; - } - - ElementType = createElementType(BaseElement, normalizePropDefs(props)); - ElementType.prototype.Component = ComponentType; - ElementType.prototype.registeredTag = tag; - customElements.define(tag, ElementType, extension); - return ElementType; - }; -} - -const equalFn = (a, b) => a === b; -const $PROXY = Symbol("solid-proxy"); -const $TRACK = Symbol("solid-track"); -const $DEVCOMP = Symbol("solid-dev-component"); -const signalOptions = { - equals: equalFn -}; -let runEffects = runQueue; -const STALE = 1; -const PENDING = 2; -const UNOWNED = { - owned: null, - cleanups: null, - context: null, - owner: null -}; -var Owner = null; -let Transition = null; -let Listener = null; -let Updates = null; -let Effects = null; -let ExecCount = 0; -function createRoot(fn, detachedOwner) { - const listener = Listener, - owner = Owner, - unowned = fn.length === 0, - root = unowned ? UNOWNED : { - owned: null, - cleanups: null, - context: null, - owner: detachedOwner === undefined ? owner : detachedOwner - }, - updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root))); - Owner = root; - Listener = null; - try { - return runUpdates(updateFn, true); - } finally { - Listener = listener; - Owner = owner; - } -} -function createSignal(value, options) { - options = options ? Object.assign({}, signalOptions, options) : signalOptions; - const s = { - value, - observers: null, - observerSlots: null, - comparator: options.equals || undefined - }; - const setter = value => { - if (typeof value === "function") { - value = value(s.value); - } - return writeSignal(s, value); - }; - return [readSignal.bind(s), setter]; -} -function createRenderEffect(fn, value, options) { - const c = createComputation(fn, value, false, STALE); - updateComputation(c); -} -function createEffect(fn, value, options) { - runEffects = runUserEffects; - const c = createComputation(fn, value, false, STALE); - c.user = true; - Effects ? Effects.push(c) : updateComputation(c); -} -function createMemo(fn, value, options) { - options = options ? Object.assign({}, signalOptions, options) : signalOptions; - const c = createComputation(fn, value, true, 0); - c.observers = null; - c.observerSlots = null; - c.comparator = options.equals || undefined; - updateComputation(c); - return readSignal.bind(c); -} -function batch(fn) { - return runUpdates(fn, false); -} -function untrack(fn) { - if (Listener === null) return fn(); - const listener = Listener; - Listener = null; - try { - return fn(); - } finally { - Listener = listener; - } -} -function on(deps, fn, options) { - const isArray = Array.isArray(deps); - let prevInput; - let defer = options && options.defer; - return prevValue => { - let input; - if (isArray) { - input = Array(deps.length); - for (let i = 0; i < deps.length; i++) input[i] = deps[i](); - } else input = deps(); - if (defer) { - defer = false; - return undefined; - } - const result = untrack(() => fn(input, prevInput, prevValue)); - prevInput = input; - return result; - }; -} -function onMount(fn) { - createEffect(() => untrack(fn)); -} -function onCleanup(fn) { - if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn); - return fn; -} -function getListener() { - return Listener; -} -function getOwner() { - return Owner; -} -function runWithOwner(o, fn) { - const prev = Owner; - const prevListener = Listener; - Owner = o; - Listener = null; - try { - return runUpdates(fn, true); - } catch (err) { - handleError(err); - } finally { - Owner = prev; - Listener = prevListener; - } -} -function createContext(defaultValue, options) { - const id = Symbol("context"); - return { - id, - Provider: createProvider(id), - defaultValue - }; -} -function useContext(context) { - let ctx; - return (ctx = lookup(Owner, context.id)) !== undefined ? ctx : context.defaultValue; -} -function children(fn) { - const children = createMemo(fn); - const memo = createMemo(() => resolveChildren(children())); - memo.toArray = () => { - const c = memo(); - return Array.isArray(c) ? c : c != null ? [c] : []; - }; - return memo; -} -function readSignal() { - if (this.sources && (this.state)) { - if ((this.state) === STALE) updateComputation(this);else { - const updates = Updates; - Updates = null; - runUpdates(() => lookUpstream(this), false); - Updates = updates; - } - } - if (Listener) { - const sSlot = this.observers ? this.observers.length : 0; - if (!Listener.sources) { - Listener.sources = [this]; - Listener.sourceSlots = [sSlot]; - } else { - Listener.sources.push(this); - Listener.sourceSlots.push(sSlot); - } - if (!this.observers) { - this.observers = [Listener]; - this.observerSlots = [Listener.sources.length - 1]; - } else { - this.observers.push(Listener); - this.observerSlots.push(Listener.sources.length - 1); - } - } - return this.value; -} -function writeSignal(node, value, isComp) { - let current = node.value; - if (!node.comparator || !node.comparator(current, value)) { - node.value = value; - if (node.observers && node.observers.length) { - runUpdates(() => { - for (let i = 0; i < node.observers.length; i += 1) { - const o = node.observers[i]; - const TransitionRunning = Transition && Transition.running; - if (TransitionRunning && Transition.disposed.has(o)) ; - if (TransitionRunning ? !o.tState : !o.state) { - if (o.pure) Updates.push(o);else Effects.push(o); - if (o.observers) markDownstream(o); - } - if (!TransitionRunning) o.state = STALE; - } - if (Updates.length > 10e5) { - Updates = []; - if (false) ; - throw new Error(); - } - }, false); - } - } - return value; -} -function updateComputation(node) { - if (!node.fn) return; - cleanNode(node); - const owner = Owner, - listener = Listener, - time = ExecCount; - Listener = Owner = node; - runComputation(node, node.value, time); - Listener = listener; - Owner = owner; -} -function runComputation(node, value, time) { - let nextValue; - try { - nextValue = node.fn(value); - } catch (err) { - if (node.pure) { - { - node.state = STALE; - node.owned && node.owned.forEach(cleanNode); - node.owned = null; - } - } - node.updatedAt = time + 1; - return handleError(err); - } - if (!node.updatedAt || node.updatedAt <= time) { - if (node.updatedAt != null && "observers" in node) { - writeSignal(node, nextValue); - } else node.value = nextValue; - node.updatedAt = time; - } -} -function createComputation(fn, init, pure, state = STALE, options) { - const c = { - fn, - state: state, - updatedAt: null, - owned: null, - sources: null, - sourceSlots: null, - cleanups: null, - value: init, - owner: Owner, - context: null, - pure - }; - if (Owner === null) ;else if (Owner !== UNOWNED) { - { - if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c); - } - } - return c; -} -function runTop(node) { - if ((node.state) === 0) return; - if ((node.state) === PENDING) return lookUpstream(node); - if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node); - const ancestors = [node]; - while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) { - if (node.state) ancestors.push(node); - } - for (let i = ancestors.length - 1; i >= 0; i--) { - node = ancestors[i]; - if ((node.state) === STALE) { - updateComputation(node); - } else if ((node.state) === PENDING) { - const updates = Updates; - Updates = null; - runUpdates(() => lookUpstream(node, ancestors[0]), false); - Updates = updates; - } - } -} -function runUpdates(fn, init) { - if (Updates) return fn(); - let wait = false; - if (!init) Updates = []; - if (Effects) wait = true;else Effects = []; - ExecCount++; - try { - const res = fn(); - completeUpdates(wait); - return res; - } catch (err) { - if (!wait) Effects = null; - Updates = null; - handleError(err); - } -} -function completeUpdates(wait) { - if (Updates) { - runQueue(Updates); - Updates = null; - } - if (wait) return; - const e = Effects; - Effects = null; - if (e.length) runUpdates(() => runEffects(e), false); -} -function runQueue(queue) { - for (let i = 0; i < queue.length; i++) runTop(queue[i]); -} -function runUserEffects(queue) { - let i, - userLength = 0; - for (i = 0; i < queue.length; i++) { - const e = queue[i]; - if (!e.user) runTop(e);else queue[userLength++] = e; - } - for (i = 0; i < userLength; i++) runTop(queue[i]); -} -function lookUpstream(node, ignore) { - node.state = 0; - for (let i = 0; i < node.sources.length; i += 1) { - const source = node.sources[i]; - if (source.sources) { - const state = source.state; - if (state === STALE) { - if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount)) runTop(source); - } else if (state === PENDING) lookUpstream(source, ignore); - } - } -} -function markDownstream(node) { - for (let i = 0; i < node.observers.length; i += 1) { - const o = node.observers[i]; - if (!o.state) { - o.state = PENDING; - if (o.pure) Updates.push(o);else Effects.push(o); - o.observers && markDownstream(o); - } - } -} -function cleanNode(node) { - let i; - if (node.sources) { - while (node.sources.length) { - const source = node.sources.pop(), - index = node.sourceSlots.pop(), - obs = source.observers; - if (obs && obs.length) { - const n = obs.pop(), - s = source.observerSlots.pop(); - if (index < obs.length) { - n.sourceSlots[s] = index; - obs[index] = n; - source.observerSlots[index] = s; - } - } - } - } - if (node.owned) { - for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]); - node.owned = null; - } - if (node.cleanups) { - for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i](); - node.cleanups = null; - } - node.state = 0; - node.context = null; -} -function handleError(err) { - throw err; -} -function lookup(owner, key) { - return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined; -} -function resolveChildren(children) { - if (typeof children === "function" && !children.length) return resolveChildren(children()); - if (Array.isArray(children)) { - const results = []; - for (let i = 0; i < children.length; i++) { - const result = resolveChildren(children[i]); - Array.isArray(result) ? results.push.apply(results, result) : results.push(result); - } - return results; - } - return children; -} -function createProvider(id, options) { - return function provider(props) { - let res; - createRenderEffect(() => res = untrack(() => { - Owner.context = { - [id]: props.value - }; - return children(() => props.children); - }), undefined); - return res; - }; -} - -const FALLBACK = Symbol("fallback"); -function dispose(d) { - for (let i = 0; i < d.length; i++) d[i](); -} -function mapArray(list, mapFn, options = {}) { - let items = [], - mapped = [], - disposers = [], - len = 0, - indexes = mapFn.length > 1 ? [] : null; - onCleanup(() => dispose(disposers)); - return () => { - let newItems = list() || [], - i, - j; - newItems[$TRACK]; - return untrack(() => { - let newLen = newItems.length, - newIndices, - newIndicesNext, - temp, - tempdisposers, - tempIndexes, - start, - end, - newEnd, - item; - if (newLen === 0) { - if (len !== 0) { - dispose(disposers); - disposers = []; - items = []; - mapped = []; - len = 0; - indexes && (indexes = []); - } - if (options.fallback) { - items = [FALLBACK]; - mapped[0] = createRoot(disposer => { - disposers[0] = disposer; - return options.fallback(); - }); - len = 1; - } - } - else if (len === 0) { - mapped = new Array(newLen); - for (j = 0; j < newLen; j++) { - items[j] = newItems[j]; - mapped[j] = createRoot(mapper); - } - len = newLen; - } else { - temp = new Array(newLen); - tempdisposers = new Array(newLen); - indexes && (tempIndexes = new Array(newLen)); - for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++); - for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) { - temp[newEnd] = mapped[end]; - tempdisposers[newEnd] = disposers[end]; - indexes && (tempIndexes[newEnd] = indexes[end]); - } - newIndices = new Map(); - newIndicesNext = new Array(newEnd + 1); - for (j = newEnd; j >= start; j--) { - item = newItems[j]; - i = newIndices.get(item); - newIndicesNext[j] = i === undefined ? -1 : i; - newIndices.set(item, j); - } - for (i = start; i <= end; i++) { - item = items[i]; - j = newIndices.get(item); - if (j !== undefined && j !== -1) { - temp[j] = mapped[i]; - tempdisposers[j] = disposers[i]; - indexes && (tempIndexes[j] = indexes[i]); - j = newIndicesNext[j]; - newIndices.set(item, j); - } else disposers[i](); - } - for (j = start; j < newLen; j++) { - if (j in temp) { - mapped[j] = temp[j]; - disposers[j] = tempdisposers[j]; - if (indexes) { - indexes[j] = tempIndexes[j]; - indexes[j](j); - } - } else mapped[j] = createRoot(mapper); - } - mapped = mapped.slice(0, len = newLen); - items = newItems.slice(0); - } - return mapped; - }); - function mapper(disposer) { - disposers[j] = disposer; - if (indexes) { - const [s, set] = createSignal(j); - indexes[j] = set; - return mapFn(newItems[j], s); - } - return mapFn(newItems[j]); - } - }; -} -function createComponent(Comp, props) { - return untrack(() => Comp(props || {})); -} -function trueFn() { - return true; -} -const propTraps = { - get(_, property, receiver) { - if (property === $PROXY) return receiver; - return _.get(property); - }, - has(_, property) { - if (property === $PROXY) return true; - return _.has(property); - }, - set: trueFn, - deleteProperty: trueFn, - getOwnPropertyDescriptor(_, property) { - return { - configurable: true, - enumerable: true, - get() { - return _.get(property); - }, - set: trueFn, - deleteProperty: trueFn - }; - }, - ownKeys(_) { - return _.keys(); - } -}; -function resolveSource(s) { - return !(s = typeof s === "function" ? s() : s) ? {} : s; -} -function mergeProps(...sources) { - let proxy = false; - for (let i = 0; i < sources.length; i++) { - const s = sources[i]; - proxy = proxy || !!s && $PROXY in s; - sources[i] = typeof s === "function" ? (proxy = true, createMemo(s)) : s; - } - if (proxy) { - return new Proxy({ - get(property) { - for (let i = sources.length - 1; i >= 0; i--) { - const v = resolveSource(sources[i])[property]; - if (v !== undefined) return v; - } - }, - has(property) { - for (let i = sources.length - 1; i >= 0; i--) { - if (property in resolveSource(sources[i])) return true; - } - return false; - }, - keys() { - const keys = []; - for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i]))); - return [...new Set(keys)]; - } - }, propTraps); - } - const target = {}; - for (let i = sources.length - 1; i >= 0; i--) { - if (sources[i]) { - const descriptors = Object.getOwnPropertyDescriptors(sources[i]); - for (const key in descriptors) { - if (key in target) continue; - Object.defineProperty(target, key, { - enumerable: true, - get() { - for (let i = sources.length - 1; i >= 0; i--) { - const v = (sources[i] || {})[key]; - if (v !== undefined) return v; - } - } - }); - } - } - } - return target; -} -function splitProps(props, ...keys) { - const blocked = new Set(keys.flat()); - if ($PROXY in props) { - const res = keys.map(k => { - return new Proxy({ - get(property) { - return k.includes(property) ? props[property] : undefined; - }, - has(property) { - return k.includes(property) && property in props; - }, - keys() { - return k.filter(property => property in props); - } - }, propTraps); - }); - res.push(new Proxy({ - get(property) { - return blocked.has(property) ? undefined : props[property]; - }, - has(property) { - return blocked.has(property) ? false : property in props; - }, - keys() { - return Object.keys(props).filter(k => !blocked.has(k)); - } - }, propTraps)); - return res; - } - const descriptors = Object.getOwnPropertyDescriptors(props); - keys.push(Object.keys(descriptors).filter(k => !blocked.has(k))); - return keys.map(k => { - const clone = {}; - for (let i = 0; i < k.length; i++) { - const key = k[i]; - if (!(key in props)) continue; - Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : { - get() { - return props[key]; - }, - set() { - return true; - }, - enumerable: true - }); - } - return clone; - }); -} - -const narrowedError = name => `Stale read from <${name}>.`; -function For(props) { - const fallback = "fallback" in props && { - fallback: () => props.fallback - }; - return createMemo(mapArray(() => props.each, props.children, fallback || undefined)); -} -function Show(props) { - const keyed = props.keyed; - const condition = createMemo(() => props.when, undefined, { - equals: (a, b) => keyed ? a === b : !a === !b - }); - return createMemo(() => { - const c = condition(); - if (c) { - const child = props.children; - const fn = typeof child === "function" && child.length > 0; - return fn ? untrack(() => child(keyed ? c : () => { - if (!untrack(condition)) throw narrowedError("Show"); - return props.when; - })) : child; - } - return props.fallback; - }, undefined, undefined); -} - -const booleans = ["allowfullscreen", "async", "autofocus", "autoplay", "checked", "controls", "default", "disabled", "formnovalidate", "hidden", "indeterminate", "ismap", "loop", "multiple", "muted", "nomodule", "novalidate", "open", "playsinline", "readonly", "required", "reversed", "seamless", "selected"]; -const Properties = /*#__PURE__*/new Set(["className", "value", "readOnly", "formNoValidate", "isMap", "noModule", "playsInline", ...booleans]); -const ChildProperties = /*#__PURE__*/new Set(["innerHTML", "textContent", "innerText", "children"]); -const Aliases = /*#__PURE__*/Object.assign(Object.create(null), { - className: "class", - htmlFor: "for" -}); -const PropAliases = /*#__PURE__*/Object.assign(Object.create(null), { - class: "className", - formnovalidate: { - $: "formNoValidate", - BUTTON: 1, - INPUT: 1 - }, - ismap: { - $: "isMap", - IMG: 1 - }, - nomodule: { - $: "noModule", - SCRIPT: 1 - }, - playsinline: { - $: "playsInline", - VIDEO: 1 - }, - readonly: { - $: "readOnly", - INPUT: 1, - TEXTAREA: 1 - } -}); -function getPropAlias(prop, tagName) { - const a = PropAliases[prop]; - return typeof a === "object" ? a[tagName] ? a["$"] : undefined : a; -} -const DelegatedEvents = /*#__PURE__*/new Set(["beforeinput", "click", "dblclick", "contextmenu", "focusin", "focusout", "input", "keydown", "keyup", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup", "pointerdown", "pointermove", "pointerout", "pointerover", "pointerup", "touchend", "touchmove", "touchstart"]); -const SVGElements = /*#__PURE__*/new Set([ -"altGlyph", "altGlyphDef", "altGlyphItem", "animate", "animateColor", "animateMotion", "animateTransform", "circle", "clipPath", "color-profile", "cursor", "defs", "desc", "ellipse", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence", "filter", "font", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "foreignObject", "g", "glyph", "glyphRef", "hkern", "image", "line", "linearGradient", "marker", "mask", "metadata", "missing-glyph", "mpath", "path", "pattern", "polygon", "polyline", "radialGradient", "rect", -"set", "stop", -"svg", "switch", "symbol", "text", "textPath", -"tref", "tspan", "use", "view", "vkern"]); -const SVGNamespace = { - xlink: "http://www.w3.org/1999/xlink", - xml: "http://www.w3.org/XML/1998/namespace" -}; - -function reconcileArrays(parentNode, a, b) { - let bLength = b.length, - aEnd = a.length, - bEnd = bLength, - aStart = 0, - bStart = 0, - after = a[aEnd - 1].nextSibling, - map = null; - while (aStart < aEnd || bStart < bEnd) { - if (a[aStart] === b[bStart]) { - aStart++; - bStart++; - continue; - } - while (a[aEnd - 1] === b[bEnd - 1]) { - aEnd--; - bEnd--; - } - if (aEnd === aStart) { - const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after; - while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node); - } else if (bEnd === bStart) { - while (aStart < aEnd) { - if (!map || !map.has(a[aStart])) a[aStart].remove(); - aStart++; - } - } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) { - const node = a[--aEnd].nextSibling; - parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling); - parentNode.insertBefore(b[--bEnd], node); - a[aEnd] = b[bEnd]; - } else { - if (!map) { - map = new Map(); - let i = bStart; - while (i < bEnd) map.set(b[i], i++); - } - const index = map.get(a[aStart]); - if (index != null) { - if (bStart < index && index < bEnd) { - let i = aStart, - sequence = 1, - t; - while (++i < aEnd && i < bEnd) { - if ((t = map.get(a[i])) == null || t !== index + sequence) break; - sequence++; - } - if (sequence > index - bStart) { - const node = a[aStart]; - while (bStart < index) parentNode.insertBefore(b[bStart++], node); - } else parentNode.replaceChild(b[bStart++], a[aStart++]); - } else aStart++; - } else a[aStart++].remove(); - } - } -} - -const $$EVENTS = "_$DX_DELEGATE"; -function template(html, isCE, isSVG) { - let node; - const create = () => { - const t = document.createElement("template"); - t.innerHTML = html; - return isSVG ? t.content.firstChild.firstChild : t.content.firstChild; - }; - const fn = isCE ? () => (node || (node = create())).cloneNode(true) : () => untrack(() => document.importNode(node || (node = create()), true)); - fn.cloneNode = fn; - return fn; -} -function delegateEvents(eventNames, document = window.document) { - const e = document[$$EVENTS] || (document[$$EVENTS] = new Set()); - for (let i = 0, l = eventNames.length; i < l; i++) { - const name = eventNames[i]; - if (!e.has(name)) { - e.add(name); - document.addEventListener(name, eventHandler); - } - } -} -function setAttribute(node, name, value) { - if (value == null) node.removeAttribute(name);else node.setAttribute(name, value); -} -function setAttributeNS(node, namespace, name, value) { - if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value); -} -function className(node, value) { - if (value == null) node.removeAttribute("class");else node.className = value; -} -function addEventListener(node, name, handler, delegate) { - if (delegate) { - if (Array.isArray(handler)) { - node[`$$${name}`] = handler[0]; - node[`$$${name}Data`] = handler[1]; - } else node[`$$${name}`] = handler; - } else if (Array.isArray(handler)) { - const handlerFn = handler[0]; - node.addEventListener(name, handler[0] = e => handlerFn.call(node, handler[1], e)); - } else node.addEventListener(name, handler); -} -function classList(node, value, prev = {}) { - const classKeys = Object.keys(value || {}), - prevKeys = Object.keys(prev); - let i, len; - for (i = 0, len = prevKeys.length; i < len; i++) { - const key = prevKeys[i]; - if (!key || key === "undefined" || value[key]) continue; - toggleClassKey(node, key, false); - delete prev[key]; - } - for (i = 0, len = classKeys.length; i < len; i++) { - const key = classKeys[i], - classValue = !!value[key]; - if (!key || key === "undefined" || prev[key] === classValue || !classValue) continue; - toggleClassKey(node, key, true); - prev[key] = classValue; - } - return prev; -} -function style(node, value, prev) { - if (!value) return prev ? setAttribute(node, "style") : value; - const nodeStyle = node.style; - if (typeof value === "string") return nodeStyle.cssText = value; - typeof prev === "string" && (nodeStyle.cssText = prev = undefined); - prev || (prev = {}); - value || (value = {}); - let v, s; - for (s in prev) { - value[s] == null && nodeStyle.removeProperty(s); - delete prev[s]; - } - for (s in value) { - v = value[s]; - if (v !== prev[s]) { - nodeStyle.setProperty(s, v); - prev[s] = v; - } - } - return prev; -} -function spread(node, props = {}, isSVG, skipChildren) { - const prevProps = {}; - if (!skipChildren) { - createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children)); - } - createRenderEffect(() => props.ref && props.ref(node)); - createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true)); - return prevProps; -} -function use(fn, element, arg) { - return untrack(() => fn(element, arg)); -} -function insert(parent, accessor, marker, initial) { - if (marker !== undefined && !initial) initial = []; - if (typeof accessor !== "function") return insertExpression(parent, accessor, initial, marker); - createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial); -} -function assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) { - props || (props = {}); - for (const prop in prevProps) { - if (!(prop in props)) { - if (prop === "children") continue; - prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef); - } - } - for (const prop in props) { - if (prop === "children") { - if (!skipChildren) insertExpression(node, props.children); - continue; - } - const value = props[prop]; - prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef); - } -} -function toPropertyName(name) { - return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase()); -} -function toggleClassKey(node, key, value) { - const classNames = key.trim().split(/\s+/); - for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value); -} -function assignProp(node, prop, value, prev, isSVG, skipRef) { - let isCE, isProp, isChildProp, propAlias, forceProp; - if (prop === "style") return style(node, value, prev); - if (prop === "classList") return classList(node, value, prev); - if (value === prev) return prev; - if (prop === "ref") { - if (!skipRef) value(node); - } else if (prop.slice(0, 3) === "on:") { - const e = prop.slice(3); - prev && node.removeEventListener(e, prev); - value && node.addEventListener(e, value); - } else if (prop.slice(0, 10) === "oncapture:") { - const e = prop.slice(10); - prev && node.removeEventListener(e, prev, true); - value && node.addEventListener(e, value, true); - } else if (prop.slice(0, 2) === "on") { - const name = prop.slice(2).toLowerCase(); - const delegate = DelegatedEvents.has(name); - if (!delegate && prev) { - const h = Array.isArray(prev) ? prev[0] : prev; - node.removeEventListener(name, h); - } - if (delegate || value) { - addEventListener(node, name, value, delegate); - delegate && delegateEvents([name]); - } - } else if (prop.slice(0, 5) === "attr:") { - setAttribute(node, prop.slice(5), value); - } else if ((forceProp = prop.slice(0, 5) === "prop:") || (isChildProp = ChildProperties.has(prop)) || !isSVG && ((propAlias = getPropAlias(prop, node.tagName)) || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes("-"))) { - if (forceProp) { - prop = prop.slice(5); - isProp = true; - } - if (prop === "class" || prop === "className") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[propAlias || prop] = value; - } else { - const ns = isSVG && prop.indexOf(":") > -1 && SVGNamespace[prop.split(":")[0]]; - if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value); - } - return value; -} -function eventHandler(e) { - const key = `$$${e.type}`; - let node = e.composedPath && e.composedPath()[0] || e.target; - if (e.target !== node) { - Object.defineProperty(e, "target", { - configurable: true, - value: node - }); - } - Object.defineProperty(e, "currentTarget", { - configurable: true, - get() { - return node || document; - } - }); - while (node) { - const handler = node[key]; - if (handler && !node.disabled) { - const data = node[`${key}Data`]; - data !== undefined ? handler.call(node, data, e) : handler.call(node, e); - if (e.cancelBubble) return; - } - node = node._$host || node.parentNode || node.host; - } -} -function insertExpression(parent, value, current, marker, unwrapArray) { - while (typeof current === "function") current = current(); - if (value === current) return current; - const t = typeof value, - multi = marker !== undefined; - parent = multi && current[0] && current[0].parentNode || parent; - if (t === "string" || t === "number") { - if (t === "number") value = value.toString(); - if (multi) { - let node = current[0]; - if (node && node.nodeType === 3) { - node.data = value; - } else node = document.createTextNode(value); - current = cleanChildren(parent, current, marker, node); - } else { - if (current !== "" && typeof current === "string") { - current = parent.firstChild.data = value; - } else current = parent.textContent = value; - } - } else if (value == null || t === "boolean") { - current = cleanChildren(parent, current, marker); - } else if (t === "function") { - createRenderEffect(() => { - let v = value(); - while (typeof v === "function") v = v(); - current = insertExpression(parent, v, current, marker); - }); - return () => current; - } else if (Array.isArray(value)) { - const array = []; - const currentArray = current && Array.isArray(current); - if (normalizeIncomingArray(array, value, current, unwrapArray)) { - createRenderEffect(() => current = insertExpression(parent, array, current, marker, true)); - return () => current; - } - if (array.length === 0) { - current = cleanChildren(parent, current, marker); - if (multi) return current; - } else if (currentArray) { - if (current.length === 0) { - appendNodes(parent, array, marker); - } else reconcileArrays(parent, current, array); - } else { - current && cleanChildren(parent); - appendNodes(parent, array); - } - current = array; - } else if (value instanceof Node) { - if (Array.isArray(current)) { - if (multi) return current = cleanChildren(parent, current, marker, value); - cleanChildren(parent, current, null, value); - } else if (current == null || current === "" || !parent.firstChild) { - parent.appendChild(value); - } else parent.replaceChild(value, parent.firstChild); - current = value; - } else console.warn(`Unrecognized value. Skipped inserting`, value); - return current; -} -function normalizeIncomingArray(normalized, array, current, unwrap) { - let dynamic = false; - for (let i = 0, len = array.length; i < len; i++) { - let item = array[i], - prev = current && current[i]; - if (item instanceof Node) { - normalized.push(item); - } else if (item == null || item === true || item === false) ; else if (Array.isArray(item)) { - dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic; - } else if ((typeof item) === "function") { - if (unwrap) { - while (typeof item === "function") item = item(); - dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item], Array.isArray(prev) ? prev : [prev]) || dynamic; - } else { - normalized.push(item); - dynamic = true; - } - } else { - const value = String(item); - if (prev && prev.nodeType === 3) { - prev.data = value; - normalized.push(prev); - } else normalized.push(document.createTextNode(value)); - } - } - return dynamic; -} -function appendNodes(parent, array, marker = null) { - for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker); -} -function cleanChildren(parent, current, marker, replacement) { - if (marker === undefined) return parent.textContent = ""; - const node = replacement || document.createTextNode(""); - if (current.length) { - let inserted = false; - for (let i = current.length - 1; i >= 0; i--) { - const el = current[i]; - if (node !== el) { - const isParent = el.parentNode === parent; - if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove(); - } else inserted = true; - } - } else parent.insertBefore(node, marker); - return [node]; -} -const SVG_NAMESPACE = "http://www.w3.org/2000/svg"; -function createElement(tagName, isSVG = false) { - return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName); -} -function Portal(props) { - const { - useShadow - } = props, - marker = document.createTextNode(""), - mount = () => props.mount || document.body, - owner = getOwner(); - let content; - createEffect(() => { - content || (content = runWithOwner(owner, () => props.children)); - const el = mount(); - if (el instanceof HTMLHeadElement) { - const [clean, setClean] = createSignal(false); - const cleanup = () => setClean(true); - createRoot(dispose => insert(el, () => !clean() ? content : dispose(), null)); - onCleanup(cleanup); - } else { - const container = createElement(props.isSVG ? "g" : "div", props.isSVG), - renderRoot = useShadow && container.attachShadow ? container.attachShadow({ - mode: "open" - }) : container; - Object.defineProperty(container, "_$host", { - get() { - return marker.parentNode; - }, - configurable: true - }); - insert(renderRoot, content); - el.appendChild(container); - props.ref && props.ref(container); - onCleanup(() => el.removeChild(container)); - } - }); - return marker; -} -function Dynamic(props) { - const [p, others] = splitProps(props, ["component"]); - const cached = createMemo(() => p.component); - return createMemo(() => { - const component = cached(); - switch (typeof component) { - case "function": - Object.assign(component, { - [$DEVCOMP]: true - }); - return untrack(() => component(others)); - case "string": - const isSvg = SVGElements.has(component); - const el = createElement(component, isSvg); - spread(el, others, isSvg); - return el; - } - }); -} - -function createProps(raw) { - const keys = Object.keys(raw); - const props = {}; - for (let i = 0; i < keys.length; i++) { - const [get, set] = createSignal(raw[keys[i]]); - Object.defineProperty(props, keys[i], { - get, - set(v) { - set(() => v); - } - }); - } - return props; -} -function lookupContext(el) { - if (el.assignedSlot && el.assignedSlot._$owner) - return el.assignedSlot._$owner; - let next = el.parentNode; - while (next && - !next._$owner && - !(next.assignedSlot && next.assignedSlot._$owner)) - next = next.parentNode; - return next && next.assignedSlot - ? next.assignedSlot._$owner - : el._$owner; -} -function withSolid(ComponentType) { - return (rawProps, options) => { - const { element } = options; - return createRoot((dispose) => { - const props = createProps(rawProps); - element.addPropertyChangedCallback((key, val) => (props[key] = val)); - element.addReleaseCallback(() => { - element.renderRoot.textContent = ""; - dispose(); - }); - const comp = ComponentType(props, options); - return insert(element.renderRoot, comp); - }, lookupContext(element)); - }; -} -function customElement(tag, props, ComponentType) { - if (arguments.length === 2) { - ComponentType = props; - props = {}; - } - return register(tag, props)(withSolid(ComponentType)); -} - -const defaultBotProps = { - chatflowid: '', - apiHost: undefined, - onRequest: undefined, - chatflowConfig: undefined, - theme: undefined, - observersConfig: undefined -}; -const CHAT_HEADER_HEIGHT = 50; - -var css_248z = "/*\n! tailwindcss v3.3.1 | MIT License | https://tailwindcss.com\n*//*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n*/\n\nhtml {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured `mono` font family by default.\n2. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n[hidden] {\n display: none;\n}\n\n*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n.container {\n width: 100%;\n}\n@media (min-width: 640px) {\n\n .container {\n max-width: 640px;\n }\n}\n@media (min-width: 768px) {\n\n .container {\n max-width: 768px;\n }\n}\n@media (min-width: 1024px) {\n\n .container {\n max-width: 1024px;\n }\n}\n@media (min-width: 1280px) {\n\n .container {\n max-width: 1280px;\n }\n}\n@media (min-width: 1536px) {\n\n .container {\n max-width: 1536px;\n }\n}\n.prose {\n color: var(--tw-prose-body);\n max-width: 65ch;\n}\n.prose :where(p):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n}\n.prose :where([class~=\"lead\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-lead);\n font-size: 1.25em;\n line-height: 1.6;\n margin-top: 1.2em;\n margin-bottom: 1.2em;\n}\n.prose :where(a):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-links);\n text-decoration: underline;\n font-weight: 500;\n}\n.prose :where(strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-bold);\n font-weight: 600;\n}\n.prose :where(a strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n}\n.prose :where(blockquote strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n}\n.prose :where(thead th strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n}\n.prose :where(ol):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: decimal;\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n padding-left: 1.625em;\n}\n.prose :where(ol[type=\"A\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: upper-alpha;\n}\n.prose :where(ol[type=\"a\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: lower-alpha;\n}\n.prose :where(ol[type=\"A\" s]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: upper-alpha;\n}\n.prose :where(ol[type=\"a\" s]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: lower-alpha;\n}\n.prose :where(ol[type=\"I\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: upper-roman;\n}\n.prose :where(ol[type=\"i\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: lower-roman;\n}\n.prose :where(ol[type=\"I\" s]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: upper-roman;\n}\n.prose :where(ol[type=\"i\" s]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: lower-roman;\n}\n.prose :where(ol[type=\"1\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: decimal;\n}\n.prose :where(ul):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: disc;\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n padding-left: 1.625em;\n}\n.prose :where(ol > li):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *))::marker {\n font-weight: 400;\n color: var(--tw-prose-counters);\n}\n.prose :where(ul > li):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *))::marker {\n color: var(--tw-prose-bullets);\n}\n.prose :where(dt):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 600;\n margin-top: 1.25em;\n}\n.prose :where(hr):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-color: var(--tw-prose-hr);\n border-top-width: 1px;\n margin-top: 3em;\n margin-bottom: 3em;\n}\n.prose :where(blockquote):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-weight: 500;\n font-style: italic;\n color: var(--tw-prose-quotes);\n border-left-width: 0.25rem;\n border-left-color: var(--tw-prose-quote-borders);\n quotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n margin-top: 1.6em;\n margin-bottom: 1.6em;\n padding-left: 1em;\n}\n.prose :where(blockquote p:first-of-type):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *))::before {\n content: open-quote;\n}\n.prose :where(blockquote p:last-of-type):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *))::after {\n content: close-quote;\n}\n.prose :where(h1):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 800;\n font-size: 2.25em;\n margin-top: 0;\n margin-bottom: 0.8888889em;\n line-height: 1.1111111;\n}\n.prose :where(h1 strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-weight: 900;\n color: inherit;\n}\n.prose :where(h2):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 700;\n font-size: 1.5em;\n margin-top: 2em;\n margin-bottom: 1em;\n line-height: 1.3333333;\n}\n.prose :where(h2 strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-weight: 800;\n color: inherit;\n}\n.prose :where(h3):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 600;\n font-size: 1.25em;\n margin-top: 1.6em;\n margin-bottom: 0.6em;\n line-height: 1.6;\n}\n.prose :where(h3 strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-weight: 700;\n color: inherit;\n}\n.prose :where(h4):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 600;\n margin-top: 1.5em;\n margin-bottom: 0.5em;\n line-height: 1.5;\n}\n.prose :where(h4 strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-weight: 700;\n color: inherit;\n}\n.prose :where(img):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose :where(picture):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n display: block;\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose :where(kbd):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-weight: 500;\n font-family: inherit;\n color: var(--tw-prose-kbd);\n box-shadow: 0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);\n font-size: 0.875em;\n border-radius: 0.3125rem;\n padding-top: 0.1875em;\n padding-right: 0.375em;\n padding-bottom: 0.1875em;\n padding-left: 0.375em;\n}\n.prose :where(code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-code);\n font-weight: 600;\n font-size: 0.875em;\n}\n.prose :where(code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *))::before {\n content: \"`\";\n}\n.prose :where(code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *))::after {\n content: \"`\";\n}\n.prose :where(a code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n}\n.prose :where(h1 code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n}\n.prose :where(h2 code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n font-size: 0.875em;\n}\n.prose :where(h3 code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n font-size: 0.9em;\n}\n.prose :where(h4 code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n}\n.prose :where(blockquote code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n}\n.prose :where(thead th code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n}\n.prose :where(pre):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-pre-code);\n background-color: var(--tw-prose-pre-bg);\n overflow-x: auto;\n font-weight: 400;\n font-size: 0.875em;\n line-height: 1.7142857;\n margin-top: 1.7142857em;\n margin-bottom: 1.7142857em;\n border-radius: 0.375rem;\n padding-top: 0.8571429em;\n padding-right: 1.1428571em;\n padding-bottom: 0.8571429em;\n padding-left: 1.1428571em;\n}\n.prose :where(pre code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n background-color: transparent;\n border-width: 0;\n border-radius: 0;\n padding: 0;\n font-weight: inherit;\n color: inherit;\n font-size: inherit;\n font-family: inherit;\n line-height: inherit;\n}\n.prose :where(pre code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *))::before {\n content: none;\n}\n.prose :where(pre code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *))::after {\n content: none;\n}\n.prose :where(table):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n width: 100%;\n table-layout: auto;\n text-align: left;\n margin-top: 2em;\n margin-bottom: 2em;\n font-size: 0.875em;\n line-height: 1.7142857;\n}\n.prose :where(thead):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-bottom-width: 1px;\n border-bottom-color: var(--tw-prose-th-borders);\n}\n.prose :where(thead th):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 600;\n vertical-align: bottom;\n padding-right: 0.5714286em;\n padding-bottom: 0.5714286em;\n padding-left: 0.5714286em;\n}\n.prose :where(tbody tr):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-bottom-width: 1px;\n border-bottom-color: var(--tw-prose-td-borders);\n}\n.prose :where(tbody tr:last-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-bottom-width: 0;\n}\n.prose :where(tbody td):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n vertical-align: baseline;\n}\n.prose :where(tfoot):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-top-width: 1px;\n border-top-color: var(--tw-prose-th-borders);\n}\n.prose :where(tfoot td):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n vertical-align: top;\n}\n.prose :where(figure > *):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n}\n.prose :where(figcaption):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-captions);\n font-size: 0.875em;\n line-height: 1.4285714;\n margin-top: 0.8571429em;\n}\n.prose {\n --tw-prose-body: #374151;\n --tw-prose-headings: #111827;\n --tw-prose-lead: #4b5563;\n --tw-prose-links: #111827;\n --tw-prose-bold: #111827;\n --tw-prose-counters: #6b7280;\n --tw-prose-bullets: #d1d5db;\n --tw-prose-hr: #e5e7eb;\n --tw-prose-quotes: #111827;\n --tw-prose-quote-borders: #e5e7eb;\n --tw-prose-captions: #6b7280;\n --tw-prose-kbd: #111827;\n --tw-prose-kbd-shadows: 17 24 39;\n --tw-prose-code: #111827;\n --tw-prose-pre-code: #e5e7eb;\n --tw-prose-pre-bg: #1f2937;\n --tw-prose-th-borders: #d1d5db;\n --tw-prose-td-borders: #e5e7eb;\n --tw-prose-invert-body: #d1d5db;\n --tw-prose-invert-headings: #fff;\n --tw-prose-invert-lead: #9ca3af;\n --tw-prose-invert-links: #fff;\n --tw-prose-invert-bold: #fff;\n --tw-prose-invert-counters: #9ca3af;\n --tw-prose-invert-bullets: #4b5563;\n --tw-prose-invert-hr: #374151;\n --tw-prose-invert-quotes: #f3f4f6;\n --tw-prose-invert-quote-borders: #374151;\n --tw-prose-invert-captions: #9ca3af;\n --tw-prose-invert-kbd: #fff;\n --tw-prose-invert-kbd-shadows: 255 255 255;\n --tw-prose-invert-code: #fff;\n --tw-prose-invert-pre-code: #d1d5db;\n --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\n --tw-prose-invert-th-borders: #4b5563;\n --tw-prose-invert-td-borders: #374151;\n font-size: 1rem;\n line-height: 1.75;\n}\n.prose :where(picture > img):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n}\n.prose :where(video):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose :where(li):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n}\n.prose :where(ol > li):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n padding-left: 0.375em;\n}\n.prose :where(ul > li):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n padding-left: 0.375em;\n}\n.prose :where(.prose > ul > li p):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0.75em;\n margin-bottom: 0.75em;\n}\n.prose :where(.prose > ul > li > *:first-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 1.25em;\n}\n.prose :where(.prose > ul > li > *:last-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-bottom: 1.25em;\n}\n.prose :where(.prose > ol > li > *:first-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 1.25em;\n}\n.prose :where(.prose > ol > li > *:last-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-bottom: 1.25em;\n}\n.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0.75em;\n margin-bottom: 0.75em;\n}\n.prose :where(dl):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n}\n.prose :where(dd):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0.5em;\n padding-left: 1.625em;\n}\n.prose :where(hr + *):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n}\n.prose :where(h2 + *):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n}\n.prose :where(h3 + *):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n}\n.prose :where(h4 + *):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n}\n.prose :where(thead th:first-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n padding-left: 0;\n}\n.prose :where(thead th:last-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n padding-right: 0;\n}\n.prose :where(tbody td, tfoot td):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n padding-top: 0.5714286em;\n padding-right: 0.5714286em;\n padding-bottom: 0.5714286em;\n padding-left: 0.5714286em;\n}\n.prose :where(tbody td:first-child, tfoot td:first-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n padding-left: 0;\n}\n.prose :where(tbody td:last-child, tfoot td:last-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n padding-right: 0;\n}\n.prose :where(figure):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n}\n.prose :where(.prose > :first-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n}\n.prose :where(.prose > :last-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-bottom: 0;\n}\n.pointer-events-none {\n pointer-events: none;\n}\n.visible {\n visibility: visible;\n}\n.collapse {\n visibility: collapse;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.inset-0 {\n inset: 0px;\n}\n.bottom-0 {\n bottom: 0px;\n}\n.bottom-\\[140px\\] {\n bottom: 140px;\n}\n.left-0 {\n left: 0px;\n}\n.left-1\\/2 {\n left: 50%;\n}\n.right-0 {\n right: 0px;\n}\n.right-\\[-8px\\] {\n right: -8px;\n}\n.top-0 {\n top: 0px;\n}\n.z-0 {\n z-index: 0;\n}\n.z-10 {\n z-index: 10;\n}\n.z-40 {\n z-index: 40;\n}\n.z-50 {\n z-index: 50;\n}\n.z-\\[1001\\] {\n z-index: 1001;\n}\n.z-\\[1002\\] {\n z-index: 1002;\n}\n.float-right {\n float: right;\n}\n.m-0 {\n margin: 0px;\n}\n.m-\\[6px\\] {\n margin: 6px;\n}\n.m-auto {\n margin: auto;\n}\n.mx-4 {\n margin-left: 16px;\n margin-right: 16px;\n}\n.my-2 {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.my-6 {\n margin-top: 24px;\n margin-bottom: 24px;\n}\n.-ml-1 {\n margin-left: -4px;\n}\n.mb-1 {\n margin-bottom: 4px;\n}\n.mb-2 {\n margin-bottom: 8px;\n}\n.mb-4 {\n margin-bottom: 16px;\n}\n.mb-6 {\n margin-bottom: 24px;\n}\n.ml-1 {\n margin-left: 4px;\n}\n.ml-1\\.5 {\n margin-left: 6px;\n}\n.ml-10 {\n margin-left: 40px;\n}\n.ml-2 {\n margin-left: 8px;\n}\n.ml-auto {\n margin-left: auto;\n}\n.mr-1 {\n margin-right: 4px;\n}\n.mr-2 {\n margin-right: 8px;\n}\n.mr-3 {\n margin-right: 12px;\n}\n.mr-\\[10px\\] {\n margin-right: 10px;\n}\n.mt-2 {\n margin-top: 8px;\n}\n.block {\n display: block;\n}\n.inline-block {\n display: inline-block;\n}\n.flex {\n display: flex;\n}\n.inline-flex {\n display: inline-flex;\n}\n.table {\n display: table;\n}\n.hidden {\n display: none;\n}\n.h-10 {\n height: 40px;\n}\n.h-12 {\n height: 48px;\n}\n.h-14 {\n height: 56px;\n}\n.h-2 {\n height: 8px;\n}\n.h-4 {\n height: 16px;\n}\n.h-5 {\n height: 20px;\n}\n.h-6 {\n height: 24px;\n}\n.h-7 {\n height: 28px;\n}\n.h-8 {\n height: 32px;\n}\n.h-\\[58px\\] {\n height: 58px;\n}\n.h-auto {\n height: auto;\n}\n.h-full {\n height: 100%;\n}\n.max-h-\\[128px\\] {\n max-height: 128px;\n}\n.max-h-\\[192px\\] {\n max-height: 192px;\n}\n.min-h-0 {\n min-height: 0px;\n}\n.min-h-\\[56px\\] {\n min-height: 56px;\n}\n.min-h-full {\n min-height: 100%;\n}\n.w-10 {\n width: 40px;\n}\n.w-12 {\n width: 48px;\n}\n.w-2 {\n width: 8px;\n}\n.w-4 {\n width: 16px;\n}\n.w-5 {\n width: 20px;\n}\n.w-6 {\n width: 24px;\n}\n.w-64 {\n width: 256px;\n}\n.w-7 {\n width: 28px;\n}\n.w-8 {\n width: 32px;\n}\n.w-\\[200px\\] {\n width: 200px;\n}\n.w-full {\n width: 100%;\n}\n.min-w-full {\n min-width: 100%;\n}\n.max-w-3xl {\n max-width: 768px;\n}\n.max-w-\\[128px\\] {\n max-width: 128px;\n}\n.max-w-full {\n max-width: 100%;\n}\n.max-w-max {\n max-width: -moz-max-content;\n max-width: max-content;\n}\n.max-w-md {\n max-width: 448px;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.flex-auto {\n flex: 1 1 auto;\n}\n.flex-none {\n flex: none;\n}\n.flex-shrink {\n flex-shrink: 1;\n}\n.flex-shrink-0 {\n flex-shrink: 0;\n}\n.flex-grow {\n flex-grow: 1;\n}\n.flex-grow-0 {\n flex-grow: 0;\n}\n.basis-auto {\n flex-basis: auto;\n}\n.border-collapse {\n border-collapse: collapse;\n}\n.-translate-x-1\\/2 {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-rotate-180 {\n --tw-rotate: -180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-0 {\n --tw-rotate: 0deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.scale-0 {\n --tw-scale-x: 0;\n --tw-scale-y: 0;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.scale-100 {\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n@keyframes fade-in {\n\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n.animate-fade-in {\n animation: fade-in 0.3s ease-out;\n}\n@keyframes spin {\n\n to {\n transform: rotate(360deg);\n }\n}\n.animate-spin {\n animation: spin 1s linear infinite;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.resize {\n resize: both;\n}\n.flex-row {\n flex-direction: row;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-wrap {\n flex-wrap: wrap;\n}\n.items-start {\n align-items: flex-start;\n}\n.items-end {\n align-items: flex-end;\n}\n.items-center {\n align-items: center;\n}\n.justify-start {\n justify-content: flex-start;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.gap-1 {\n gap: 4px;\n}\n.gap-2 {\n gap: 8px;\n}\n.gap-3 {\n gap: 12px;\n}\n.space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(8px * var(--tw-space-x-reverse));\n margin-left: calc(8px * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(16px * var(--tw-space-x-reverse));\n margin-left: calc(16px * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-y-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(8px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(8px * var(--tw-space-y-reverse));\n}\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(16px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(16px * var(--tw-space-y-reverse));\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-y-auto {\n overflow-y: auto;\n}\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n.overflow-y-scroll {\n overflow-y: scroll;\n}\n.whitespace-pre-wrap {\n white-space: pre-wrap;\n}\n.rounded {\n border-radius: 4px;\n}\n.rounded-\\[10px\\] {\n border-radius: 10px;\n}\n.rounded-\\[6px\\] {\n border-radius: 6px;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-lg {\n border-radius: 8px;\n}\n.rounded-md {\n border-radius: 6px;\n}\n.rounded-none {\n border-radius: 0px;\n}\n.rounded-xl {\n border-radius: 12px;\n}\n.rounded-b {\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.rounded-t {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n.border {\n border-width: 1px;\n}\n.border-0 {\n border-width: 0px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-4 {\n border-width: 4px;\n}\n.border-b {\n border-bottom-width: 1px;\n}\n.border-t {\n border-top-width: 1px;\n}\n.border-t-4 {\n border-top-width: 4px;\n}\n.border-solid {\n border-style: solid;\n}\n.border-dashed {\n border-style: dashed;\n}\n.border-\\[\\#eeeeee\\] {\n --tw-border-opacity: 1;\n border-color: rgb(238 238 238 / var(--tw-border-opacity));\n}\n.border-current {\n border-color: currentColor;\n}\n.border-gray-200 {\n --tw-border-opacity: 1;\n border-color: rgb(229 231 235 / var(--tw-border-opacity));\n}\n.border-gray-300 {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity));\n}\n.border-green-600 {\n --tw-border-opacity: 1;\n border-color: rgb(22 163 74 / var(--tw-border-opacity));\n}\n.border-red-300 {\n --tw-border-opacity: 1;\n border-color: rgb(252 165 165 / var(--tw-border-opacity));\n}\n.border-red-600 {\n --tw-border-opacity: 1;\n border-color: rgb(220 38 38 / var(--tw-border-opacity));\n}\n.border-yellow-300 {\n --tw-border-opacity: 1;\n border-color: rgb(253 224 71 / var(--tw-border-opacity));\n}\n.border-t-transparent {\n border-top-color: transparent;\n}\n.border-t-white {\n --tw-border-opacity: 1;\n border-top-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n.bg-\\[rgba\\(0\\2c 0\\2c 0\\2c 0\\.3\\)\\] {\n background-color: rgba(0,0,0,0.3);\n}\n.bg-\\[rgba\\(0\\2c 0\\2c 0\\2c 0\\.4\\)\\] {\n background-color: rgba(0,0,0,0.4);\n}\n.bg-black {\n --tw-bg-opacity: 1;\n background-color: rgb(0 0 0 / var(--tw-bg-opacity));\n}\n.bg-black\\/10 {\n background-color: rgb(0 0 0 / 0.1);\n}\n.bg-black\\/60 {\n background-color: rgb(0 0 0 / 0.6);\n}\n.bg-emerald-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(16 185 129 / var(--tw-bg-opacity));\n}\n.bg-gray-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(107 114 128 / var(--tw-bg-opacity));\n}\n.bg-red-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(254 226 226 / var(--tw-bg-opacity));\n}\n.bg-red-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(239 68 68 / var(--tw-bg-opacity));\n}\n.bg-transparent {\n background-color: transparent;\n}\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.bg-yellow-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(254 249 195 / var(--tw-bg-opacity));\n}\n.bg-opacity-50 {\n --tw-bg-opacity: 0.5;\n}\n.bg-cover {\n background-size: cover;\n}\n.bg-center {\n background-position: center;\n}\n.fill-transparent {\n fill: transparent;\n}\n.stroke-2 {\n stroke-width: 2;\n}\n.object-cover {\n -o-object-fit: cover;\n object-fit: cover;\n}\n.p-0 {\n padding: 0px;\n}\n.p-1 {\n padding: 4px;\n}\n.p-10 {\n padding: 40px;\n}\n.p-2 {\n padding: 8px;\n}\n.p-2\\.5 {\n padding: 10px;\n}\n.p-3 {\n padding: 12px;\n}\n.p-4 {\n padding: 16px;\n}\n.p-5 {\n padding: 20px;\n}\n.p-6 {\n padding: 24px;\n}\n.px-1 {\n padding-left: 4px;\n padding-right: 4px;\n}\n.px-12 {\n padding-left: 48px;\n padding-right: 48px;\n}\n.px-2 {\n padding-left: 8px;\n padding-right: 8px;\n}\n.px-3 {\n padding-left: 12px;\n padding-right: 12px;\n}\n.px-4 {\n padding-left: 16px;\n padding-right: 16px;\n}\n.px-5 {\n padding-left: 20px;\n padding-right: 20px;\n}\n.px-6 {\n padding-left: 24px;\n padding-right: 24px;\n}\n.px-\\[10px\\] {\n padding-left: 10px;\n padding-right: 10px;\n}\n.py-1 {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.py-2 {\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.py-4 {\n padding-top: 16px;\n padding-bottom: 16px;\n}\n.py-8 {\n padding-top: 32px;\n padding-bottom: 32px;\n}\n.py-\\[10px\\] {\n padding-top: 10px;\n padding-bottom: 10px;\n}\n.pb-1 {\n padding-bottom: 4px;\n}\n.pb-2 {\n padding-bottom: 8px;\n}\n.pb-\\[10px\\] {\n padding-bottom: 10px;\n}\n.pl-4 {\n padding-left: 16px;\n}\n.pr-0 {\n padding-right: 0px;\n}\n.pr-3 {\n padding-right: 12px;\n}\n.pt-2 {\n padding-top: 8px;\n}\n.pt-4 {\n padding-top: 16px;\n}\n.pt-\\[6px\\] {\n padding-top: 6px;\n}\n.pt-\\[70px\\] {\n padding-top: 70px;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.font-sans {\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n}\n.text-2xl {\n font-size: 24px;\n line-height: 32px;\n}\n.text-\\[13px\\] {\n font-size: 13px;\n}\n.text-base {\n font-size: 16px;\n line-height: 24px;\n}\n.text-sm {\n font-size: 14px;\n line-height: 20px;\n}\n.text-xl {\n font-size: 20px;\n line-height: 28px;\n}\n.font-bold {\n font-weight: 700;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-normal {\n font-weight: 400;\n}\n.font-semibold {\n font-weight: 600;\n}\n.italic {\n font-style: italic;\n}\n.leading-none {\n line-height: 1;\n}\n.text-black {\n --tw-text-opacity: 1;\n color: rgb(0 0 0 / var(--tw-text-opacity));\n}\n.text-blue-600 {\n --tw-text-opacity: 1;\n color: rgb(37 99 235 / var(--tw-text-opacity));\n}\n.text-gray-500 {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity));\n}\n.text-gray-600 {\n --tw-text-opacity: 1;\n color: rgb(75 85 99 / var(--tw-text-opacity));\n}\n.text-gray-700 {\n --tw-text-opacity: 1;\n color: rgb(55 65 81 / var(--tw-text-opacity));\n}\n.text-green-600 {\n --tw-text-opacity: 1;\n color: rgb(22 163 74 / var(--tw-text-opacity));\n}\n.text-inherit {\n color: inherit;\n}\n.text-red-500 {\n --tw-text-opacity: 1;\n color: rgb(239 68 68 / var(--tw-text-opacity));\n}\n.text-red-600 {\n --tw-text-opacity: 1;\n color: rgb(220 38 38 / var(--tw-text-opacity));\n}\n.text-red-700 {\n --tw-text-opacity: 1;\n color: rgb(185 28 28 / var(--tw-text-opacity));\n}\n.text-transparent {\n color: transparent;\n}\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.text-yellow-700 {\n --tw-text-opacity: 1;\n color: rgb(161 98 7 / var(--tw-text-opacity));\n}\n.underline {\n text-decoration-line: underline;\n}\n.opacity-0 {\n opacity: 0;\n}\n.opacity-100 {\n opacity: 1;\n}\n.opacity-25 {\n opacity: 0.25;\n}\n.opacity-75 {\n opacity: 0.75;\n}\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-sm {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-xl {\n --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.outline {\n outline-style: solid;\n}\n.blur-\\[2px\\] {\n --tw-blur: blur(2px);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.blur-none {\n --tw-blur: blur(0);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.backdrop-blur-sm {\n --tw-backdrop-blur: blur(4px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-150 {\n transition-duration: 150ms;\n}\n.duration-200 {\n transition-duration: 200ms;\n}\n.duration-300 {\n transition-duration: 300ms;\n}\n.ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ease-linear {\n transition-timing-function: linear;\n}\n.ease-out {\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n}\n\n:host {\n --chatbot-container-bg-image: none;\n --chatbot-container-bg-color: transparent;\n --chatbot-container-font-family: 'Open Sans';\n\n --chatbot-button-bg-color: #0042da;\n --chatbot-button-color: #ffffff;\n\n --chatbot-host-bubble-bg-color: #f7f8ff;\n --chatbot-host-bubble-color: #303235;\n\n --chatbot-guest-bubble-bg-color: #3b81f6;\n --chatbot-guest-bubble-color: #ffffff;\n\n --chatbot-input-bg-color: #ffffff;\n --chatbot-input-color: #303235;\n --chatbot-input-placeholder-color: #9095a0;\n\n --chatbot-header-bg-color: #ffffff;\n --chatbot-header-color: #303235;\n\n --chatbot-border-radius: 6px;\n\n /* Phone input */\n --PhoneInputCountryFlag-borderColor: transparent;\n --PhoneInput-color--focus: transparent;\n}\n\na {\n color: #16bed7;\n font-weight: 500;\n}\n\na:hover {\n text-decoration: underline;\n}\n\npre {\n padding: 5px;\n font-size: 13px;\n margin: 5px;\n width: auto;\n overflow: auto;\n white-space: pre-wrap; /* css-3 */\n white-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n white-space: -pre-wrap; /* Opera 4-6 */\n white-space: -o-pre-wrap; /* Opera 7 */\n word-wrap: break-word; /* Internet Explorer 5.5+ */\n}\n.string {\n color: green;\n}\n.number {\n color: darkorange;\n}\n.boolean {\n color: blue;\n}\n.null {\n color: magenta;\n}\n.key {\n color: rgb(0, 43, 54);\n}\n\n/* Thin scrollbar for Firefox */\n.scrollable-container {\n scrollbar-width: thin;\n scrollbar-color: rgba(0, 0, 0, 0.2) transparent;\n}\n\n/* Thin scrollbar for Chrome, Safari and Opera */\n.scrollable-container::-webkit-scrollbar {\n width: 4px;\n}\n\n.scrollable-container::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.scrollable-container::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0.2);\n border-radius: 4px;\n}\n\n.scrollable-container::-webkit-scrollbar-thumb:hover {\n background-color: rgba(0, 0, 0, 0.35);\n}\n\n/* Auto-hide scrollbar on touch devices */\n@media (hover: none) and (pointer: coarse) {\n .scrollable-container {\n scrollbar-width: none;\n }\n .scrollable-container::-webkit-scrollbar {\n display: none;\n }\n}\n\n.text-fade-in {\n transition: opacity 400ms ease-in 200ms;\n}\n\n.bubble-typing {\n transition:\n width 400ms ease-out,\n height 400ms ease-out;\n}\n\n.bubble1,\n.bubble2,\n.bubble3 {\n background-color: var(--chatbot-host-bubble-color);\n opacity: 0.5;\n}\n\n.bubble1 {\n animation: chatBubbles 1s ease-in-out infinite;\n}\n\n.bubble2 {\n animation: chatBubbles 1s ease-in-out infinite;\n animation-delay: 0.3s;\n}\n\n.bubble3 {\n animation: chatBubbles 1s ease-in-out infinite;\n animation-delay: 0.5s;\n}\n\n@keyframes chatBubbles {\n 0% {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(-5px);\n }\n 100% {\n transform: translateY(0);\n }\n}\n\nbutton,\ninput,\ntextarea {\n font-weight: 300;\n}\n\n.slate-a {\n text-decoration: underline;\n}\n\n.slate-html-container > div {\n min-height: 24px;\n}\n\n.slate-bold {\n font-weight: bold;\n}\n\n.slate-italic {\n font-style: oblique;\n}\n\n.slate-underline {\n text-decoration: underline;\n}\n.text-input::-moz-placeholder {\n color: #9095a0 !important;\n opacity: 1 !important;\n}\n.text-input::placeholder {\n color: #9095a0 !important;\n opacity: 1 !important;\n}\n\n.chatbot-container {\n background-image: var(--chatbot-container-bg-image);\n background-color: var(--chatbot-container-bg-color);\n font-family:\n 'Open Sans',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n Helvetica,\n Arial,\n sans-serif,\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol';\n}\n\n.file-annotation-button {\n color: var(--chatbot-button-color);\n background-color: #02a0a0c2;\n border: 1px solid #02a0a0c2;\n border-radius: var(--chatbot-border-radius);\n}\n\n.chatbot-button {\n color: var(--chatbot-button-color);\n background-color: #0042da;\n border: 1px solid #0042da;\n border-radius: var(--chatbot-border-radius);\n}\n\n.chatbot-button.selectable {\n color: var(--chatbot-host-bubble-color);\n background-color: #f7f8ff;\n border: 1px solid #0042da;\n}\n\n.chatbot-host-bubble {\n color: var(--chatbot-host-bubble-color);\n background-color: #f7f8ff;\n /* force wrapping of long text or links */\n overflow-wrap: break-word;\n word-wrap: break-word;\n word-break: break-word;\n /* ensure it actually wraps instead of running off the screen */\n white-space: normal;\n}\n\n.chatbot-host-bubble > .bubble-typing {\n background-color: #f7f8ff;\n border: var(--chatbot-host-bubble-border);\n border-radius: 6px;\n}\n\n.chatbot-host-bubble img,\n.chatbot-host-bubble iframe,\n.chatbot-host-bubble video {\n border-radius: var(--chatbot-border-radius);\n}\n\n.chatbot-guest-bubble {\n color: var(--chatbot-guest-bubble-color);\n background-color: #3b81f6;\n border-radius: 6px;\n /* force wrapping of long text or links */\n overflow-wrap: break-word;\n word-wrap: break-word;\n word-break: break-word;\n /* ensure it actually wraps instead of running off the screen */\n white-space: normal;\n}\n\n.chatbot-input,\n.feedback-input {\n color: #303235;\n background-color: #ffffff;\n box-shadow: 0 2px 6px -1px rgba(0, 0, 0, 0.1);\n border-radius: var(--chatbot-border-radius);\n}\n\n.chatbot-input-error-message {\n color: #303235;\n}\n\n.chatbot-button > .send-icon {\n fill: var(--chatbot-button-color);\n stroke: var(--chatbot-button-color);\n}\n\n.chatbot-chat-view {\n max-width: 800px;\n}\n\n.ping span {\n background-color: #0042da;\n}\n\n.rating-icon-container svg {\n width: 42px;\n height: 42px;\n stroke: #0042da;\n fill: #f7f8ff;\n transition: fill 100ms ease-out;\n}\n\n.rating-icon-container.selected svg {\n fill: #0042da;\n}\n\n.rating-icon-container:hover svg {\n filter: brightness(0.9);\n}\n\n.rating-icon-container:active svg {\n filter: brightness(0.75);\n}\n\n.upload-progress-bar {\n background-color: #0042da;\n border-radius: var(--chatbot-border-radius);\n}\n\n.total-files-indicator {\n background-color: #0042da;\n color: var(--chatbot-button-color);\n font-size: 10px;\n}\n\n.chatbot-upload-input {\n transition: border-color 100ms ease-out;\n}\n\n.chatbot-upload-input.dragging-over {\n border-color: #0042da;\n}\n\n.secondary-button {\n background-color: #f7f8ff;\n color: var(--chatbot-host-bubble-color);\n border-radius: var(--chatbot-border-radius);\n}\n\n.chatbot-country-select {\n color: #303235;\n background-color: #ffffff;\n border-radius: var(--chatbot-border-radius);\n}\n\n.chatbot-date-input {\n color-scheme: light;\n color: #303235;\n background-color: #ffffff;\n border-radius: var(--chatbot-border-radius);\n}\n\n.chatbot-popup-blocked-toast {\n border-radius: var(--chatbot-border-radius);\n}\n\n.messagelist {\n width: 100%;\n height: 100%;\n overflow-y: scroll;\n border-radius: 0.5rem;\n}\n\n.messagelistloading {\n display: flex;\n width: 100%;\n justify-content: center;\n margin-top: 1rem;\n}\n\n.usermessage {\n padding: 1rem 1.5rem 1rem 1.5rem;\n}\n\n.usermessagewaiting-light {\n padding: 1rem 1.5rem 1rem 1.5rem;\n background: linear-gradient(to left, #ede7f6, #e3f2fd, #ede7f6);\n background-size: 200% 200%;\n background-position: -100% 0;\n animation: loading-gradient 2s ease-in-out infinite;\n animation-direction: alternate;\n animation-name: loading-gradient;\n}\n\n.usermessagewaiting-dark {\n padding: 1rem 1.5rem 1rem 1.5rem;\n color: #ececf1;\n background: linear-gradient(to left, #2e2352, #1d3d60, #2e2352);\n background-size: 200% 200%;\n background-position: -100% 0;\n animation: loading-gradient 2s ease-in-out infinite;\n animation-direction: alternate;\n animation-name: loading-gradient;\n}\n\n@keyframes loading-gradient {\n 0% {\n background-position: -100% 0;\n }\n 100% {\n background-position: 100% 0;\n }\n}\n\n.apimessage {\n padding: 1rem 1.5rem 1rem 1.5rem;\n animation: fadein 0.5s;\n}\n\n@keyframes fadein {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n.apimessage,\n.usermessage,\n.usermessagewaiting {\n display: flex;\n}\n\n.markdownanswer {\n line-height: 1.75;\n}\n\n.markdownanswer a:hover {\n opacity: 0.8;\n}\n\n.markdownanswer a {\n color: #16bed7;\n font-weight: 500;\n}\n\n.markdownanswer code {\n color: #15cb19;\n font-weight: 500;\n white-space: pre-wrap !important;\n}\n\n.markdownanswer ol,\n.markdownanswer ul {\n margin: 1rem;\n}\n\n.boticon,\n.usericon {\n margin-right: 1rem;\n border-radius: 1rem;\n}\n\n.markdownanswer h1,\n.markdownanswer h2,\n.markdownanswer h3 {\n font-size: inherit;\n}\n\n.center {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n flex-direction: column;\n padding: 10px;\n}\n\n.cloud {\n width: 400px;\n height: calc(100% - 50px);\n border-radius: 0.5rem;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\ninput,\ntextarea {\n background-color: transparent;\n border: none;\n padding: 10px 10px;\n font-family: 'Poppins', sans-serif;\n}\n@media (max-width: 640px) {\n div[part='bot'] {\n width: 100% !important;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n max-width: unset !important;\n max-height: unset !important;\n height: 100% !important;\n overflow: auto; \n overflow-x: hidden; /* Prevent horizontal scrolling */\n }\n\n div[part='button'], div[class='flex flex-row items-center w-full h-[50px] absolute top-0 left-0 z-10'], .chatbot-container, .rounded-lg {\n border-radius: 0px !important;\n }\n\nbutton {\n cursor: default !important;\n}\n\n}\n.tooltip {\n position: fixed;\n background: var(--tooltip-background-color, black);\n color: var(--tooltip-text-color, white);\n padding: 5px 10px;\n border-radius: 5px;\n z-index: 42424242;\n white-space: pre-wrap;\n word-break: break-word;\n max-width: calc(100vw - 20px);\n font-size: var(--tooltip-font-size, 12px);\n transition: opacity 0.3s ease-in-out;\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.spinner {\n border: 4px solid rgba(255, 255, 255, 0.3); /* Light gray border */\n border-top: 4px solid white; /* White spinner */\n border-radius: 50%;\n width: 24px;\n height: 24px;\n animation: spin 1s linear infinite;\n}\n\n.hover\\:scale-110:hover {\n --tw-scale-x: 1.1;\n --tw-scale-y: 1.1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.hover\\:bg-gray-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-green-600:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(22 163 74 / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-red-600:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(220 38 38 / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-transparent:hover {\n background-color: transparent;\n}\n\n.hover\\:text-gray-700:hover {\n --tw-text-opacity: 1;\n color: rgb(55 65 81 / var(--tw-text-opacity));\n}\n\n.hover\\:text-white:hover {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.hover\\:shadow-lg:hover {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.hover\\:brightness-90:hover {\n --tw-brightness: brightness(.9);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.focus\\:border-blue-500:focus {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity));\n}\n\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n.focus\\:ring-blue-500:focus {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));\n}\n\n.active\\:scale-95:active {\n --tw-scale-x: .95;\n --tw-scale-y: .95;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.active\\:bg-emerald-600:active {\n --tw-bg-opacity: 1;\n background-color: rgb(5 150 105 / var(--tw-bg-opacity));\n}\n\n.active\\:brightness-75:active {\n --tw-brightness: brightness(.75);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n\n.disabled\\:opacity-50:disabled {\n opacity: 0.5;\n}\n\n.disabled\\:brightness-100:disabled {\n --tw-brightness: brightness(1);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.group:hover .group-hover\\:flex {\n display: flex;\n}\n\n@media (min-width: 640px) {\n\n .sm\\:right-5 {\n right: 20px;\n }\n\n .sm\\:my-8 {\n margin-top: 32px;\n margin-bottom: 32px;\n }\n\n .sm\\:w-\\[400px\\] {\n width: 400px;\n }\n\n .sm\\:w-full {\n width: 100%;\n }\n\n .sm\\:max-w-lg {\n max-width: 512px;\n }\n\n .sm\\:p-0 {\n padding: 0px;\n }\n}"; - -const isNotDefined = value => value === undefined || value === null; -const isDefined = value => value !== undefined && value !== null; -const isNotEmpty = value => value !== undefined && value !== null && value !== ''; -const sendRequest = async params => { - try { - const url = typeof params === 'string' ? params : params.url; - const headers = typeof params !== 'string' && isDefined(params.body) ? { - 'Content-Type': 'application/json', - ...params.headers - } : undefined; - let body = typeof params !== 'string' && isDefined(params.body) ? JSON.stringify(params.body) : undefined; - if (typeof params !== 'string' && params.formData) body = params.formData; - const requestInfo = { - method: typeof params === 'string' ? 'GET' : params.method, - mode: 'cors', - headers, - body, - signal: typeof params !== 'string' ? params.signal : undefined - }; - if (typeof params !== 'string' && params.onRequest) { - await params.onRequest(requestInfo); - } - const response = await fetch(url, requestInfo); - let data; - const contentType = response.headers.get('Content-Type'); - if (contentType && contentType.includes('application/json')) { - data = await response.json(); - } else if (typeof params !== 'string' && params.type === 'blob') { - data = await response.blob(); - } else { - data = await response.text(); - } - if (!response.ok) { - let errorMessage; - if (typeof data === 'object' && 'error' in data) { - errorMessage = data.error; - } else { - errorMessage = data || response.statusText; - } - throw errorMessage; - } - return { - data - }; - } catch (e) { - console.error(e); - return { - error: e - }; - } -}; -const setLocalStorageChatflow = (chatflowid, chatId, saveObj = {}) => { - const chatDetails = localStorage.getItem(`${chatflowid}_EXTERNAL`); - const obj = { - ...saveObj - }; - if (chatId) obj.chatId = chatId; - if (!chatDetails) { - localStorage.setItem(`${chatflowid}_EXTERNAL`, JSON.stringify(obj)); - } else { - try { - const parsedChatDetails = JSON.parse(chatDetails); - localStorage.setItem(`${chatflowid}_EXTERNAL`, JSON.stringify({ - ...parsedChatDetails, - ...obj - })); - } catch (e) { - const chatId = chatDetails; - obj.chatId = chatId; - localStorage.setItem(`${chatflowid}_EXTERNAL`, JSON.stringify(obj)); - } - } -}; -const getLocalStorageChatflow = chatflowid => { - const chatDetails = localStorage.getItem(`${chatflowid}_EXTERNAL`); - if (!chatDetails) return {}; - try { - return JSON.parse(chatDetails); - } catch (e) { - return {}; - } -}; -const removeLocalStorageChatHistory = chatflowid => { - const chatDetails = localStorage.getItem(`${chatflowid}_EXTERNAL`); - if (!chatDetails) return; - try { - const parsedChatDetails = JSON.parse(chatDetails); - if (parsedChatDetails.lead) { - // Dont remove lead when chat is cleared - const obj = { - lead: parsedChatDetails.lead - }; - localStorage.removeItem(`${chatflowid}_EXTERNAL`); - localStorage.setItem(`${chatflowid}_EXTERNAL`, JSON.stringify(obj)); - } else { - localStorage.removeItem(`${chatflowid}_EXTERNAL`); - } - } catch (e) { - return; - } -}; -const getBubbleButtonSize = size => { - if (!size) return 48; - if (typeof size === 'number') return size; - if (size === 'small') return 32; - if (size === 'medium') return 48; - if (size === 'large') return 64; - return 48; -}; -const setCookie = (cname, cvalue, exdays) => { - const d = new Date(); - d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000); - const expires = 'expires=' + d.toUTCString(); - document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/'; -}; -const getCookie = cname => { - const name = cname + '='; - const decodedCookie = decodeURIComponent(document.cookie); - const ca = decodedCookie.split(';'); - for (let i = 0; i < ca.length; i++) { - let c = ca[i]; - while (c.charAt(0) === ' ') { - c = c.substring(1); - } - if (c.indexOf(name) === 0) { - return c.substring(name.length, c.length); - } - } - return ''; -}; -const getRecordingExtensionForMime = mime => { - const mimeToExt = { - 'audio/webm': 'webm', - 'audio/mp4': 'm4a', - 'audio/x-m4a': 'm4a', - 'audio/ogg': 'ogg', - 'audio/oga': 'ogg', - 'audio/wav': 'wav', - 'audio/wave': 'wav', - 'audio/x-wav': 'wav' - }; - const extension = mimeToExt[mime]; - if (extension) { - return extension; - } - console.warn(`Unsupported audio MIME type: ${mime}. Defaulting to 'webm'.`); - return 'webm'; -}; - -const _tmpl$$O = /*#__PURE__*/template(``), - _tmpl$2$q = /*#__PURE__*/template(`Bubble button icon`), - _tmpl$3$f = /*#__PURE__*/template(`