@fusioni/client-sdk 1.1.5 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/index.js","../src/services/ApiClient.ts","../src/services/ConversationService.ts","../src/services/PipelineService.ts","../src/services/MessageService.ts","../src/services/SDKClientService.ts","../src/i18n/en.ts","../src/i18n/el.ts","../src/i18n/index.ts","../src/hooks/useTranslation.ts","../src/assets/logo-base64.ts","../src/components/ConversationList.tsx","../src/components/UrlPreview.tsx","../src/components/Map.tsx","../src/components/PaginatedGalleryStrip.tsx","../src/components/Message.tsx","../src/components/Spotlight.tsx","../src/components/MessageStreamLoading.tsx","../src/components/ImageGallery.tsx","../src/components/MessageList.tsx","../src/components/AudioRecorder.tsx","../src/components/ChatInput.tsx","../src/components/FloatingButton.tsx","../src/components/ChatPanel.tsx","../src/components/LanguageSwitcher.tsx","../src/components/ConfirmationDialog.tsx","../src/hooks/useChatState.ts","../src/hooks/useSSE.ts","../src/hooks/useTheme.ts","../src/hooks/useIsMobileLayout.ts","../src/components/ChatWidget.tsx","../src/components/FileUpload.tsx","../src/components/ChatLoader.tsx"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)){\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless, skipUndefined} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n const msg = error && error.message ? error.message : 'Error';\n\n // Prefer explicit code; otherwise copy the low-level error's code (e.g. ECONNREFUSED)\n const errCode = code == null && error ? error.code : code;\n AxiosError.call(axiosError, msg, errCode, config, request, response);\n\n // Chain the original error on the standard field; non-enumerable to avoid JSON noise\n if (error && axiosError.cause == null) {\n Object.defineProperty(axiosError, 'cause', { value: error, configurable: true });\n }\n\n axiosError.name = (error && error.name) || 'Error';\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n } \n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n \n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n Request, Response\n}))(utils.global);\n\nconst {\n ReadableStream, TextEncoder\n} = utils.global;\n\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst factory = (env) => {\n env = utils.merge.call({\n skipUndefined: true\n }, globalFetchAPI, env);\n\n const {fetch: envFetch, Request, Response} = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n );\n\n const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n };\n\n isFetchSupported && ((() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n })());\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n }\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n }\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request = null;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n }\n}\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = config ? config.env : {};\n const {fetch, Request, Response} = env;\n const seeds = [\n Request, Response, fetch\n ];\n\n let len = seeds.length, i = len,\n seed, target, map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, target = (i ? new Map() : factory(env)))\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n }\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters, config) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.12.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import axios, {AxiosInstance} from 'axios';\n\n/** Decode SSE `event.data` (plain text or JSON with a `data` field), matching fusioni-web chat usage. */\nfunction normalizeSsePayload(raw: string): string | null {\n const s = raw?.trim() ?? '';\n if (!s) {\n return null;\n }\n try {\n const parsed = JSON.parse(s) as unknown;\n if (parsed !== null && typeof parsed === 'object' && 'data' in parsed) {\n const inner = (parsed as {data: unknown}).data;\n if (inner === undefined || inner === null) {\n return null;\n }\n if (typeof inner === 'string') {\n return inner;\n }\n if (typeof inner === 'number' || typeof inner === 'boolean') {\n return String(inner);\n }\n return JSON.stringify(inner);\n }\n } catch {\n /* use raw string */\n }\n return s;\n}\n\nexport class ApiClient {\n private client: AxiosInstance;\n private baseUrl: string;\n private accessToken?: string;\n\n constructor(baseUrl: string, accessToken?: string) {\n this.baseUrl = baseUrl.replace(/\\/$/, ''); // Remove trailing slash\n this.accessToken = accessToken;\n \n this.client = axios.create({\n baseURL: this.baseUrl,\n timeout: 30000,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n // Add request interceptor for authentication\n this.client.interceptors.request.use(\n (config: any) => {\n console.log('Request interceptor - config:', config);\n if (this.accessToken) {\n config.headers.Authorization = `ApiKey ${this.accessToken}`;\n console.log('Authorization header set:', config.headers.Authorization);\n } else {\n throw new Error('No access token provided');\n }\n return config;\n },\n (error: any) => {\n return Promise.reject(error);\n }\n );\n\n // Add response interceptor for error handling\n this.client.interceptors.response.use(\n (response: any) => response,\n (error: any) => {\n console.error('API Error:', error.response?.data || error.message);\n return Promise.reject(error);\n }\n );\n }\n\n setAccessToken(token: string) {\n this.accessToken = token;\n }\n\n // HTTP method wrappers to isolate axios client\n async get<T = any>(url: string, config?: any): Promise<T> {\n const response = await this.client.get(url, config);\n return response.data;\n }\n\n async post<T = any>(url: string, data?: any, config?: any): Promise<T> {\n console.log('ApiClient POST request:', { url, data, config });\n const response = await this.client.post(url, data, config);\n return response.data;\n }\n\n async put<T = any>(url: string, data?: any, config?: any): Promise<T> {\n const response = await this.client.put(url, data, config);\n return response.data;\n }\n\n async delete<T = any>(url: string, config?: any): Promise<T> {\n const response = await this.client.delete(url, config);\n return response.data;\n }\n\n async options<T = any>(url: string, config?: any): Promise<T> {\n const response = await this.client.options(url, config);\n return response.data;\n }\n\n // Server-Sent Events for real-time updates\n connectToSSE(agencyId: string, onMessage: (data: any) => void): EventSource {\n const token = this.accessToken || 'test';\n const url = `${this.baseUrl}/sse/connect?agency_id=${agencyId}&token=${token}`;\n const eventSource = new EventSource(url, { withCredentials: false });\n\n const deliver = (eventName: string, event: Event) => {\n try {\n const me = event as MessageEvent;\n const normalized = normalizeSsePayload(String(me.data ?? ''));\n if (normalized === null) {\n return;\n }\n onMessage({event: eventName, data: normalized});\n } catch (error) {\n console.error('Error handling SSE event:', eventName, error);\n }\n };\n\n // fusioni-web EventSourceService uses ['chat_stream'] for chat execution progress\n eventSource.addEventListener('chat_stream', (e) => deliver('chat_stream', e));\n eventSource.addEventListener('process_info', (e) => deliver('process_info', e));\n\n eventSource.onerror = (error) => {\n console.error('SSE connection error:', error);\n };\n\n return eventSource;\n }\n\n\n // Health check\n async healthCheck(): Promise<boolean> {\n try {\n await this.get('/health');\n return true;\n } catch (error) {\n return false;\n }\n }\n}\n\n// Singleton instance\nlet apiClientInstance: ApiClient | null = null;\n\nexport const getApiClient = (baseUrl?: string, accessToken?: string): ApiClient => {\n if (!apiClientInstance) {\n if (baseUrl) {\n apiClientInstance = new ApiClient(baseUrl, accessToken);\n } else {\n throw new Error('ApiClient not initialized. Call getApiClient with baseUrl first.');\n }\n }\n return apiClientInstance;\n};\n\nexport const initializeApiClient = (baseUrl: string, accessToken?: string): ApiClient => {\n apiClientInstance = new ApiClient(baseUrl, accessToken);\n return apiClientInstance;\n};\n","import {Conversation, FusioniPayload} from '../types';\nimport {getApiClient} from './ApiClient';\n\nexport interface IConversationService {\n getConversation(conversationId: string): Promise<Conversation | undefined>;\n\n getConversationsByAgency(agencyId: string, page: number, size: number): Promise<Conversation[]>;\n\n getConversationsByIdsAndAgency(agencyId: string, ids: string[]): Promise<Conversation[]>;\n\n deleteConversation(conversationId: string): Promise<void>;\n\n createConversation(conversation: Omit<Conversation, 'id'>): Promise<string>;\n}\n\nexport class LocalConversationService implements IConversationService {\n\n conversationService: RemoteConversationService;\n\n constructor(conversationService: RemoteConversationService) {\n this.conversationService = conversationService;\n }\n\n async createConversation(conversation: Omit<Conversation, \"id\">): Promise<string> {\n if (!conversation) {\n let reason = \"No conversation was provided to create\";\n console.error(reason)\n return Promise.reject(reason)\n }\n let conversationId = this.conversationService.createConversation(conversation);\n conversationId.then(value => this.saveToLocalStorage(value))\n return Promise.resolve(conversationId)\n }\n\n async deleteConversation(conversationId: string): Promise<void> {\n let conversations = this.loadConversations();\n conversations = conversations.filter(conv => conv !== conversationId)\n this.saveConversations(conversations);\n return Promise.resolve();\n }\n\n private saveToLocalStorage(conversationId: string): void {\n if (!conversationId) {\n console.warn(\"No conversation was provided\")\n return;\n }\n let conversations: string[] = this.loadConversations();\n const existingIndex = conversations.indexOf(conversationId);\n if (existingIndex === -1) {\n conversations.push(conversationId);\n }\n this.saveConversations(conversations);\n }\n\n private saveConversations(conversations: string[]) {\n try {\n let conversationsStr = JSON.stringify(conversations)\n localStorage.setItem(\"conversations\", conversationsStr)\n } catch (e) {\n console.log(e)\n }\n }\n\n private loadConversations() {\n let conversations: string[] = [];\n let conversationsStr = localStorage.getItem(\"conversations\");\n console.log(\"conversationsStr\", conversationsStr);\n if (conversationsStr) {\n try {\n conversations = JSON.parse(conversationsStr)\n console.log(\"conversations array\", conversations);\n } catch (e) {\n console.error(e)\n conversations = [];\n }\n }\n return conversations;\n }\n\n async getConversation(conversationId: string): Promise<Conversation | undefined> {\n return this.conversationService.getConversation(conversationId);\n }\n\n async getConversationsByAgency(agencyId: string, page: number, size: number): Promise<Conversation[]> {\n let conversationIds = this.loadConversations();\n return this.conversationService.getConversationsByIdsAndAgency(agencyId, conversationIds);\n }\n\n async getConversationsByIdsAndAgency(agencyId: string, ids: string[]): Promise<Conversation[]> {\n return this.conversationService.getConversationsByIdsAndAgency(agencyId, ids);\n }\n\n}\n\nexport class RemoteConversationService implements IConversationService {\n private getApiClient() {\n return getApiClient();\n }\n\n /**\n * Create a new conversation\n */\n async createConversation(conversation: Omit<Conversation, 'id'>): Promise<string> {\n try {\n const apiClient = this.getApiClient();\n console.log('Creating conversation with data:', conversation);\n\n // ApiClient.post returns the data directly, not the full response\n const responseData: any = await apiClient.post('/conversation', conversation);\n\n // Handle different response formats\n let conversationId: string = responseData.trim();\n\n if (!conversationId || conversationId === '') {\n return Promise.reject(\"No conversation id was received!\")\n }\n\n return conversationId;\n } catch (error) {\n console.error(error)\n return Promise.reject(error)\n }\n }\n\n /**\n * Get a specific conversation by ID\n */\n async getConversation(conversationId: string): Promise<Conversation | undefined> {\n const apiClient = this.getApiClient();\n return await apiClient.get('/conversation', {\n params: {item_id: conversationId}\n });\n }\n\n /**\n * Get conversations for a specific agency with pagination\n */\n async getConversationsByAgency(\n agencyId: string,\n page: number = 0,\n size: number = 25\n ): Promise<Conversation[]> {\n const apiClient = this.getApiClient();\n const responseData: FusioniPayload<Conversation> = await apiClient.get(\n '/conversation/list',\n {\n params: {\n agency_id: agencyId,\n page,\n size\n }\n }\n );\n\n if (responseData) {\n return responseData.body || [];\n }\n\n return [];\n }\n\n /**\n * Get conversations by IDs and agency ID\n */\n async getConversationsByIdsAndAgency(\n agencyId: string,\n ids: string[]\n ): Promise<Conversation[]> {\n const apiClient = this.getApiClient();\n const responseData: Conversation[] = await apiClient.get(\n '/conversation/by_ids_and_agency_id',\n {\n params: {\n agency_id: agencyId,\n ids: ids\n },\n paramsSerializer: { indexes: null },\n }\n );\n\n return responseData || [];\n }\n\n /**\n * Delete a conversation\n */\n async deleteConversation(conversationId: string): Promise<void> {\n const apiClient = this.getApiClient();\n await apiClient.delete('/conversation', {\n params: {item_id: conversationId}\n });\n }\n}\n\n// Singleton instance\nlet conversationServiceInstance: IConversationService | null = null;\n\nexport const getConversationService = (): IConversationService => {\n if (!conversationServiceInstance) {\n conversationServiceInstance = new LocalConversationService(new RemoteConversationService());\n }\n return conversationServiceInstance;\n};\n","import { AxiosResponse } from 'axios';\nimport {\n PipelineRequest,\n PipelineResponse\n} from '../types';\nimport { getApiClient } from './ApiClient';\n\nexport class PipelineService {\n private getApiClient() {\n return getApiClient();\n }\n\n /**\n * Execute a pipeline request.\n *\n * The API typically returns `messages` with the full turn batch for the exchange,\n * including the persisted **user** message that matches the request. Clients that\n * optimistically append a local user bubble should remove that row from state when\n * merging `response.messages` (ChatWidget tags it with `fusion_sdk_optimistic_user`\n * in `extra_data` and strips it—same pattern as removing the loading message).\n */\n async executePipeline(request: PipelineRequest): Promise<PipelineResponse> {\n // Debug logging to track conversation_id\n console.log('🔍 PipelineService.executePipeline - Request received:', {\n conversation_id: request.conversation_id,\n agency_id: request.agency_id,\n inp: request.inp?.substring(0, 100) + (request && request.inp && request.inp?.length > 100 ? '...' : ''),\n hasImage: !!request.image,\n hasAudio: !!request.audio,\n agent_id: request.agent_id,\n fullRequest: request\n });\n\n // Validate required fields\n if (!request.conversation_id) {\n console.error('❌ PipelineService.executePipeline - conversation_id is missing!', request);\n throw new Error('conversation_id is required for pipeline execution');\n }\n\n if (!request.agency_id) {\n console.error('❌ PipelineService.executePipeline - agency_id is missing!', request);\n throw new Error('agency_id is required for pipeline execution');\n }\n\n const apiClient = this.getApiClient();\n const response: AxiosResponse<PipelineResponse> = await (apiClient as any).client.post(\n `/journey/${request.agency_id}/exec`,\n request\n );\n \n console.log('✅ PipelineService.executePipeline - Response received:', {\n answerCount: response.data.answer?.length || 0,\n messagesCount: response.data.messages?.length || 0,\n thoughtsCount: response.data.thoughts?.length || 0\n });\n \n return response.data;\n }\n}\n\n// Singleton instance\nlet pipelineServiceInstance: PipelineService | null = null;\n\nexport const getPipelineService = (): PipelineService => {\n if (!pipelineServiceInstance) {\n pipelineServiceInstance = new PipelineService();\n }\n return pipelineServiceInstance;\n};\n","import {getApiClient} from './ApiClient';\nimport {FusioniMemoryMessage, FusioniPayload} from \"../types\";\nimport {AxiosResponse} from \"axios\";\n\nexport class MessageService {\n private getApiClient() {\n return getApiClient();\n }\n\n /**\n * Delete Message\n * @param messageId\n * @param agencyId\n */\n async deleteMessage(messageId: string, agencyId: string): Promise<void> {\n const apiClient = this.getApiClient();\n await (apiClient as any).client.delete('/mem', {\n params: {\n item_id: messageId,\n agency_id: agencyId\n }\n });\n }\n\n /**\n * Get Messages\n * @param conversationId\n * @param agencyId\n */\n async getMessages(conversationId: string, agencyId: string): Promise<FusioniMemoryMessage[]> {\n const apiClient = this.getApiClient();\n const response: AxiosResponse<FusioniPayload<FusioniMemoryMessage>> = await (apiClient as any).client.get(\n '/mem/messages',\n {\n params: {\n agency_id: agencyId,\n conversation_id: conversationId\n }\n }\n );\n\n if (response.data) {\n return response.data.body || [];\n }\n\n return [];\n }\n}\n\n// Singleton instance\nlet messageServiceInstance: MessageService | null = null;\n\nexport const getMessageService = (): MessageService => {\n if (!messageServiceInstance) {\n messageServiceInstance = new MessageService();\n }\n return messageServiceInstance;\n};\n","import {getApiClient} from './ApiClient';\nimport {FusioniSDKConfig} from '../types';\n\nexport interface SDKClientResponse {\n id?: string;\n website_url?: string;\n agency_id?: string;\n theme?: 'light' | 'dark' | 'auto' | null;\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' | null;\n primary_color?: string | null;\n show_conversation_list?: boolean;\n enable_audio_recording?: boolean;\n enable_file_upload?: boolean;\n max_file_size?: number | null;\n allowed_file_types?: string[] | null;\n language?: 'en' | 'el';\n button_variant?: 'minimal' | 'glass' | 'solid';\n}\n\nexport class SDKClientService {\n private getApiClient() {\n return getApiClient();\n }\n\n /**\n * Get SDK Client configuration by agency ID\n * @param agencyId\n */\n async getClientConfig(agencyId: string): Promise<SDKClientResponse | null> {\n const apiClient = this.getApiClient();\n const response = await (apiClient as any).client.get('/sdk-client/agency/website', {\n params: {\n agency_id: agencyId\n }\n });\n return response.data || null;\n }\n\n /**\n * Merge server configuration with user configuration\n * Server config takes precedence for non-null values\n */\n mergeConfig(userConfig: FusioniSDKConfig, serverConfig: SDKClientResponse | null): FusioniSDKConfig {\n if (!serverConfig) {\n return userConfig;\n }\n\n return {\n ...userConfig,\n // Only override if server value is not null\n theme: serverConfig.theme !== null && serverConfig.theme !== undefined \n ? serverConfig.theme \n : userConfig.theme,\n position: serverConfig.position !== null && serverConfig.position !== undefined \n ? serverConfig.position \n : userConfig.position,\n primaryColor: serverConfig.primary_color !== null && serverConfig.primary_color !== undefined \n ? serverConfig.primary_color \n : userConfig.primaryColor,\n showConversationList: serverConfig.show_conversation_list !== undefined \n ? serverConfig.show_conversation_list \n : userConfig.showConversationList,\n enableAudioRecording: serverConfig.enable_audio_recording !== undefined \n ? serverConfig.enable_audio_recording \n : userConfig.enableAudioRecording,\n enableFileUpload: serverConfig.enable_file_upload !== undefined \n ? serverConfig.enable_file_upload \n : userConfig.enableFileUpload,\n maxFileSize: serverConfig.max_file_size !== null && serverConfig.max_file_size !== undefined \n ? serverConfig.max_file_size \n : userConfig.maxFileSize,\n allowedFileTypes: serverConfig.allowed_file_types !== null && serverConfig.allowed_file_types !== undefined \n ? serverConfig.allowed_file_types \n : userConfig.allowedFileTypes,\n language: serverConfig.language !== undefined \n ? serverConfig.language \n : userConfig.language,\n buttonVariant: serverConfig.button_variant !== undefined \n ? serverConfig.button_variant \n : userConfig.buttonVariant,\n };\n }\n}\n\n// Singleton instance\nlet sdkClientServiceInstance: SDKClientService | null = null;\n\nexport const getSDKClientService = (): SDKClientService => {\n if (!sdkClientServiceInstance) {\n sdkClientServiceInstance = new SDKClientService();\n }\n return sdkClientServiceInstance;\n};\n\n","export const en = {\n // Chat Interface\n chat: {\n title: 'Fusioni AI',\n subtitle: 'AI Assistant',\n welcome: {\n title: 'Welcome to Fusioni',\n description: 'Start a new conversation to begin chatting with AI',\n startButton: 'Start New Conversation',\n creating: 'Creating...'\n },\n input: {\n placeholder: 'Type your message...',\n send: 'Send',\n upload: 'Upload',\n record: 'Record'\n },\n conversations: {\n title: 'Conversations',\n search: 'Search conversations...',\n newConversation: 'New Conversation',\n noConversations: 'No conversations yet',\n delete: 'Delete conversation',\n newIndicator: 'New conversation - will be saved when you send a message',\n deleteConfirm: {\n title: 'Delete Conversation',\n message: 'Are you sure you want to delete this conversation? This action cannot be undone.',\n confirm: 'Delete',\n cancel: 'Cancel'\n }\n },\n attachedImages: 'Images',\n attachedVideos: 'Videos',\n messages: {\n loading: 'Working on it...',\n error: 'Oops! Something went wrong. Please try again later.',\n delete: 'Delete message',\n deleteConfirm: {\n title: 'Delete Message',\n message: 'Are you sure you want to delete this message? This action cannot be undone.',\n confirm: 'Delete',\n cancel: 'Cancel'\n }\n },\n connection: {\n connected: 'Real-time updates connected',\n disconnected: 'Real-time updates disconnected'\n },\n fullscreen: {\n enter: 'Enter fullscreen',\n exit: 'Exit fullscreen'\n },\n theme: {\n light: 'Switch to light theme',\n dark: 'Switch to dark theme'\n },\n errors: {\n failedToCreateConversation: 'Failed to create conversation',\n failedToLoadConversation: 'Failed to load conversation',\n failedToDeleteConversation: 'Failed to delete conversation',\n failedToSendMessage: 'Failed to send message',\n failedToDeleteMessage: 'Failed to delete message',\n failedToUploadFile: 'Failed to upload file',\n failedToInitialize: 'Failed to initialize chat service',\n retry: 'Retry'\n }\n },\n \n // Language Switcher\n language: {\n english: 'English',\n greek: 'Ελληνικά',\n switchLanguage: 'Switch Language'\n },\n \n // Common\n common: {\n close: 'Close',\n open: 'Open',\n cancel: 'Cancel',\n confirm: 'Confirm',\n save: 'Save',\n delete: 'Delete',\n edit: 'Edit',\n search: 'Search',\n clear: 'Clear',\n loading: 'Loading...',\n error: 'Error',\n success: 'Success',\n warning: 'Warning',\n info: 'Info',\n yes: 'Yes',\n no: 'No'\n }\n} as const;\n","export const el = {\n // Chat Interface\n chat: {\n title: 'Fusioni AI',\n subtitle: 'AI Βοηθός',\n welcome: {\n title: 'Καλώς ήρθατε στο Fusioni AI',\n description: 'Ξεκινήστε μια νέα συνομιλία για να αρχίσετε να συνομιλείτε με AI',\n startButton: 'Ξεκινήστε Νέα Συνομιλία',\n creating: 'Δημιουργία...'\n },\n input: {\n placeholder: 'Πληκτρολογήστε το μήνυμά σας...',\n send: 'Αποστολή',\n upload: 'Ανέβασμα',\n record: 'Εγγραφή'\n },\n conversations: {\n title: 'Συνομιλίες',\n search: 'Αναζήτηση συνομιλιών...',\n newConversation: 'Νέα Συνομιλία',\n noConversations: 'Δεν υπάρχουν συνομιλίες ακόμα',\n delete: 'Διαγραφή συνομιλίας',\n newIndicator: 'Νέα συνομιλία - θα αποθηκευτεί όταν στείλετε μήνυμα',\n deleteConfirm: {\n title: 'Διαγραφή Συνομιλίας',\n message: 'Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή τη συνομιλία; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.',\n confirm: 'Διαγραφή',\n cancel: 'Ακύρωση'\n }\n },\n attachedImages: 'Εικόνες',\n attachedVideos: 'Βίντεο',\n messages: {\n loading: 'Εργάζομαι...',\n error: 'Ουπς! Κάτι πήγε στραβά. Παρακαλώ δοκιμάστε ξανά αργότερα.',\n delete: 'Διαγραφή μηνύματος',\n deleteConfirm: {\n title: 'Διαγραφή Μηνύματος',\n message: 'Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το μήνυμα; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.',\n confirm: 'Διαγραφή',\n cancel: 'Ακύρωση'\n }\n },\n connection: {\n connected: 'Συνδεδεμένο για ενημερώσεις σε πραγματικό χρόνο',\n disconnected: 'Αποσυνδεδεμένο από ενημερώσεις σε πραγματικό χρόνο'\n },\n fullscreen: {\n enter: 'Πλήρης οθόνη',\n exit: 'Έξοδος από πλήρη οθόνη'\n },\n theme: {\n light: 'Εναλλαγή σε φωτεινό θέμα',\n dark: 'Εναλλαγή σε σκοτεινό θέμα'\n },\n errors: {\n failedToCreateConversation: 'Αποτυχία δημιουργίας συνομιλίας',\n failedToLoadConversation: 'Αποτυχία φόρτωσης συνομιλίας',\n failedToDeleteConversation: 'Αποτυχία διαγραφής συνομιλίας',\n failedToSendMessage: 'Αποτυχία αποστολής μηνύματος',\n failedToDeleteMessage: 'Αποτυχία διαγραφής μηνύματος',\n failedToUploadFile: 'Αποτυχία ανεβάσματος αρχείου',\n failedToInitialize: 'Αποτυχία αρχικοποίησης υπηρεσίας συνομιλίας',\n retry: 'Επανάληψη'\n }\n },\n \n // Language Switcher\n language: {\n english: 'English',\n greek: 'Ελληνικά',\n switchLanguage: 'Αλλαγή Γλώσσας'\n },\n \n // Common\n common: {\n close: 'Κλείσιμο',\n open: 'Άνοιγμα',\n cancel: 'Ακύρωση',\n confirm: 'Επιβεβαίωση',\n save: 'Αποθήκευση',\n delete: 'Διαγραφή',\n edit: 'Επεξεργασία',\n search: 'Αναζήτηση',\n clear: 'Εκκαθάριση',\n loading: 'Φόρτωση...',\n error: 'Σφάλμα',\n success: 'Επιτυχία',\n warning: 'Προειδοποίηση',\n info: 'Πληροφορία',\n yes: 'Ναι',\n no: 'Όχι'\n }\n} as const;\n","import { en } from './en';\nimport { el } from './el';\n\nexport type Language = 'en' | 'el';\n\nexport type TranslationKeys = typeof en;\n\nexport const translations = {\n en,\n el\n} as const;\n\nexport const getTranslation = (language: Language, key: string): string => {\n const keys = key.split('.');\n let value: any = translations[language];\n \n for (const k of keys) {\n if (value && typeof value === 'object' && k in value) {\n value = value[k];\n } else {\n // Fallback to English if key not found\n value = translations.en;\n for (const fallbackKey of keys) {\n if (value && typeof value === 'object' && fallbackKey in value) {\n value = value[fallbackKey];\n } else {\n return key; // Return the key if not found in fallback\n }\n }\n break;\n }\n }\n \n return typeof value === 'string' ? value : key;\n};\n\nexport const getAvailableLanguages = (): Array<{ code: Language; name: string }> => {\n return [\n { code: 'en', name: 'English' },\n { code: 'el', name: 'Ελληνικά' }\n ];\n};\n\nexport const isValidLanguage = (language: string): language is Language => {\n return language === 'en' || language === 'el';\n};\n","import { useState, useCallback, useMemo, useEffect } from 'react';\nimport { Language, getTranslation, getAvailableLanguages, isValidLanguage } from '../i18n';\n\nexport const useTranslation = (defaultLanguage: Language = 'en') => {\n const [currentLanguage, setCurrentLanguage] = useState<Language>(defaultLanguage);\n \n // Update internal language state when defaultLanguage prop changes\n useEffect(() => {\n setCurrentLanguage(defaultLanguage);\n }, [defaultLanguage]);\n\n const t = useCallback((key: string): string => {\n return getTranslation(currentLanguage, key);\n }, [currentLanguage]);\n\n const changeLanguage = useCallback((language: Language) => {\n setCurrentLanguage(language);\n }, []);\n\n const availableLanguages = useMemo(() => getAvailableLanguages(), []);\n\n const isValidLang = useCallback((lang: string): lang is Language => {\n return isValidLanguage(lang);\n }, []);\n\n return {\n t,\n currentLanguage,\n changeLanguage,\n availableLanguages,\n isValidLanguage: isValidLang\n };\n};\n","// Auto-generated file - do not edit manually\n// This file is generated during the build process from Fusioni_Logo@120.png\n\nexport const FUSIONI_LOGO_BASE64 = 'data:image/png;base64,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';\n","import React, { useState } from 'react';\nimport { ConversationListProps } from '../types';\nimport { useTranslation } from '../hooks/useTranslation';\nimport { FUSIONI_LOGO_BASE64 } from '../assets/logo-base64';\n\nexport const ConversationList: React.FC<ConversationListProps> = ({\n conversations,\n selectedConversationId,\n onSelectConversation,\n onDeleteConversation,\n onCreateConversation,\n searchQuery = '',\n onSearchChange,\n isOpen = false,\n currentLanguage = 'en'\n}) => {\n const [searchTerm, setSearchTerm] = useState(searchQuery);\n const { t } = useTranslation(currentLanguage);\n\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n setSearchTerm(value);\n onSearchChange?.(value);\n };\n\n const filteredConversations = conversations\n .filter(conversation =>\n conversation.title.toLowerCase().includes(searchTerm.toLowerCase())\n )\n .sort((a, b) => {\n // Sort by created date in descending order (latest first)\n // If no created date, treat as oldest (put at bottom)\n const dateA = a.created ? new Date(a.created).getTime() : 0;\n const dateB = b.created ? new Date(b.created).getTime() : 0;\n return dateB - dateA;\n });\n\n const formatDate = (date: Date | null | undefined): string => {\n if (!date) return '';\n \n const now = new Date();\n const diffInMilliseconds = now.getTime() - new Date(date).getTime();\n const diffInHours = diffInMilliseconds / (1000 * 60 * 60);\n \n if (diffInHours < 24) {\n if (diffInHours < 1) {\n const diffInMinutes = diffInMilliseconds / (1000 * 60);\n if (diffInMinutes < 1) {\n return 'Just now';\n }\n return `${Math.floor(diffInMinutes)} minutes ago`;\n } else {\n return `${Math.floor(diffInHours)} hours ago`;\n }\n }\n \n return new Date(date).toLocaleString('en-GB', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n });\n };\n\n return (\n <div className={`fusioni-conversation-list ${isOpen ? 'open' : ''}`}>\n {/* Header */}\n <div className=\"fusioni-conversation-header\">\n <div className=\"fusioni-conversation-title\">\n <div className=\"fusioni-conversation-logo\">\n <img \n src={FUSIONI_LOGO_BASE64} \n alt=\"Fusioni Logo\" \n width=\"32\" \n height=\"32\"\n />\n </div>\n <div className=\"fusioni-conversation-info\">\n <h3>{t('chat.title')}</h3>\n <p>{t('chat.subtitle')}</p>\n </div>\n </div>\n <button\n onClick={onCreateConversation}\n className=\"fusioni-btn fusioni-btn-icon\"\n title={t('chat.conversations.newConversation')}\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M12 5V19M5 12H19\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n\n {/* Search */}\n <div className=\"fusioni-conversation-search\">\n <div className=\"fusioni-search-input\">\n <input\n type=\"text\"\n placeholder={t('chat.conversations.search')}\n value={searchTerm}\n onChange={handleSearchChange}\n className=\"fusioni-input\"\n />\n <div className=\"fusioni-search-icon\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n cx=\"11\"\n cy=\"11\"\n r=\"8\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <path\n d=\"M21 21L16.65 16.65\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n </div>\n\n {/* Divider */}\n <div className=\"fusioni-divider\" />\n\n {/* Conversations */}\n <div className=\"fusioni-conversations\">\n {filteredConversations.length === 0 ? (\n <div className=\"fusioni-empty-state\">\n <p>{t('chat.conversations.noConversations')}</p>\n {searchTerm && (\n <button\n onClick={() => setSearchTerm('')}\n className=\"fusioni-btn fusioni-btn-text\"\n >\n{t('common.clear')}\n </button>\n )}\n </div>\n ) : (\n filteredConversations.map((conversation) => (\n <div\n key={conversation.id}\n className={`fusioni-conversation-item ${\n conversation.id === selectedConversationId ? 'active' : ''\n }`}\n onClick={() => onSelectConversation(conversation)}\n >\n {/* Neural Network Background Animation */}\n <div className=\"fusioni-conversation-neural-bg\">\n <div className=\"fusioni-neural-node fusioni-neural-node-1\"></div>\n <div className=\"fusioni-neural-node fusioni-neural-node-2\"></div>\n <div className=\"fusioni-neural-node fusioni-neural-node-3\"></div>\n <div className=\"fusioni-neural-connection fusioni-neural-connection-1\"></div>\n <div className=\"fusioni-neural-connection fusioni-neural-connection-2\"></div>\n </div>\n\n <div className=\"fusioni-conversation-content\">\n <div className=\"fusioni-conversation-main\">\n <div className=\"fusioni-conversation-title-section\">\n <h4 className=\"fusioni-conversation-title-text\">\n {conversation.title}\n {!conversation.id && (\n <span className=\"fusioni-conversation-temp-indicator\" title={t('chat.conversations.newIndicator')}>\n <div className=\"fusioni-new-badge\">\n <span className=\"fusioni-new-text\">NEW</span>\n <div className=\"fusioni-new-pulse\"></div>\n </div>\n </span>\n )}\n </h4>\n {conversation.created && (\n <div className=\"fusioni-conversation-meta\">\n <div className=\"fusioni-conversation-date\">\n {formatDate(conversation.created)}\n </div>\n <div className=\"fusioni-conversation-status\">\n <div className=\"fusioni-status-dot\"></div>\n <span>Active</span>\n </div>\n </div>\n )}\n </div>\n \n <div className=\"fusioni-conversation-actions\">\n <button\n onClick={(e) => {\n e.stopPropagation();\n if (conversation.id) {\n onDeleteConversation(conversation.id);\n }\n }}\n className=\"fusioni-btn fusioni-btn-icon fusioni-btn-danger fusioni-delete-btn\"\n title={t('chat.conversations.delete')}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5H21\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M19 6V20C19 20.5304 18.7893 21.0391 18.4142 21.4142C18.0391 21.7893 17.5304 22 17 22H7C6.46957 22 5.96086 21.7893 5.58579 21.4142C5.21071 21.0391 5 20.5304 5 20V6H19Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n </div>\n \n {/* Data Flow Animation */}\n <div className=\"fusioni-conversation-data-flow\">\n <div className=\"fusioni-data-stream\"></div>\n </div>\n </div>\n </div>\n ))\n )}\n </div>\n </div>\n );\n};\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\n\nexport interface LinkPreviewData {\n url: string;\n title: string;\n description: string;\n image: string;\n domain: string;\n}\n\nexport interface UrlPreviewProps {\n url: string;\n agencyId: string;\n showCloseButton?: boolean;\n compact?: boolean;\n autoFetch?: boolean;\n apiBaseUrl?: string;\n apiKey?: string;\n onClose?: () => void;\n}\n\nexport const UrlPreview: React.FC<UrlPreviewProps> = ({\n url,\n agencyId,\n showCloseButton = true,\n compact = false,\n autoFetch = true,\n apiBaseUrl,\n apiKey,\n onClose\n}) => {\n const [linkPreview, setLinkPreview] = useState<LinkPreviewData | null>(null);\n const [showLinkPreview, setShowLinkPreview] = useState(false);\n const [isFetchingPreview, setIsFetchingPreview] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const abortControllerRef = useRef<AbortController | null>(null);\n const fetchedUrlsRef = useRef<Set<string>>(new Set());\n\n const extractMetaContent = (doc: Document, property: string): string | null => {\n const meta = doc.querySelector(`meta[property=\"${property}\"], meta[name=\"${property}\"]`);\n return meta?.getAttribute('content') || null;\n };\n\n const fetchLinkPreview = useCallback(async (targetUrl: string): Promise<void> => {\n // Prevent duplicate fetches for the same URL\n if (fetchedUrlsRef.current.has(targetUrl)) {\n return;\n }\n\n // Abort any in-flight request\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n\n // Create new AbortController for this request\n const abortController = new AbortController();\n abortControllerRef.current = abortController;\n fetchedUrlsRef.current.add(targetUrl);\n\n try {\n setIsFetchingPreview(true);\n setError(null);\n\n // Use the Fusioni internal proxy to fetch the link metadata\n const base = apiBaseUrl ? apiBaseUrl.replace(/\\/+$/, '') : '';\n const proxyUrl = base\n ? `${base}/proxy/${agencyId}/web?agency_id=${agencyId}&url=${encodeURIComponent(targetUrl)}`\n : `/api/proxy/${agencyId}/web?agency_id=${agencyId}&url=${encodeURIComponent(targetUrl)}`;\n const headers: Record<string, string> = {};\n if (apiKey) {\n headers['Authorization'] = `ApiKey ${apiKey}`;\n }\n const response = await fetch(proxyUrl, { \n headers,\n signal: abortController.signal\n });\n \n // Check if request was aborted\n if (abortController.signal.aborted) {\n return;\n }\n\n const data = await response.text();\n \n // Check again if request was aborted after async operation\n if (abortController.signal.aborted) {\n return;\n }\n \n if (data) {\n const parser = new DOMParser();\n const doc = parser.parseFromString(data, 'text/html');\n \n const title = extractMetaContent(doc, 'og:title') || \n extractMetaContent(doc, 'twitter:title') || \n doc.querySelector('title')?.textContent || \n 'Untitled';\n \n const description = extractMetaContent(doc, 'og:description') || \n extractMetaContent(doc, 'twitter:description') || \n extractMetaContent(doc, 'description') || \n '';\n \n let image = extractMetaContent(doc, 'og:image') || \n extractMetaContent(doc, 'twitter:image') || \n '';\n \n // Handle relative image URLs\n if (image && !image.startsWith('http')) {\n try {\n const baseUrl = new URL(targetUrl);\n image = new URL(image, baseUrl.origin).href;\n } catch (e) {\n image = '';\n }\n }\n \n const domain = new URL(targetUrl).hostname;\n\n // Final check before setting state\n if (!abortController.signal.aborted) {\n setLinkPreview({\n url: targetUrl,\n title: title.trim(),\n description: description.trim(),\n image: image.trim(),\n domain\n });\n \n setShowLinkPreview(true);\n }\n } else {\n if (!abortController.signal.aborted) {\n setError('Unable to fetch link preview');\n }\n }\n } catch (error: any) {\n // Don't set error if request was aborted\n if (error.name === 'AbortError' || abortController.signal.aborted) {\n return;\n }\n console.error('Error fetching link preview:', error);\n if (!abortController.signal.aborted) {\n setError('Failed to load preview');\n }\n } finally {\n if (!abortController.signal.aborted) {\n setIsFetchingPreview(false);\n }\n // Clear the abort controller if it's the current one\n if (abortControllerRef.current === abortController) {\n abortControllerRef.current = null;\n }\n }\n }, [apiBaseUrl, agencyId, apiKey]);\n\n useEffect(() => {\n // Clear the fetched URLs cache when URL changes\n fetchedUrlsRef.current.clear();\n \n if (autoFetch && url) {\n fetchLinkPreview(url);\n }\n\n // Cleanup: abort any in-flight request when component unmounts or dependencies change\n return () => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = null;\n }\n };\n }, [url, autoFetch, fetchLinkPreview]);\n\n const handleImageError = (event: React.SyntheticEvent<HTMLImageElement>) => {\n const target = event.target as HTMLImageElement;\n if (target) {\n target.style.display = 'none';\n }\n };\n\n const handleCloseClick = () => {\n setLinkPreview(null);\n setShowLinkPreview(false);\n setIsFetchingPreview(false);\n setError(null);\n onClose?.();\n };\n\n if (!showLinkPreview && !isFetchingPreview && !error) {\n return null;\n }\n\n return (\n <div className={`fusioni-url-preview ${compact ? 'fusioni-url-preview-compact' : ''}`}>\n {isFetchingPreview && (\n <div className=\"fusioni-url-preview-loading\">\n <div className=\"fusioni-url-preview-spinner\"></div>\n <span>Loading preview...</span>\n </div>\n )}\n\n {error && (\n <div className=\"fusioni-url-preview-error\">\n <span>Failed to load preview</span>\n {showCloseButton && (\n <button \n className=\"fusioni-url-preview-close\"\n onClick={handleCloseClick}\n aria-label=\"Close preview\"\n >\n ×\n </button>\n )}\n </div>\n )}\n\n {linkPreview && (\n <div className=\"fusioni-url-preview-content\">\n {showCloseButton && (\n <button \n className=\"fusioni-url-preview-close\"\n onClick={handleCloseClick}\n aria-label=\"Close preview\"\n >\n ×\n </button>\n )}\n \n <a \n href={linkPreview.url} \n target=\"_blank\" \n rel=\"noopener noreferrer\"\n className=\"fusioni-url-preview-link\"\n >\n {linkPreview.image && (\n <div className=\"fusioni-url-preview-image\">\n <img\n src={linkPreview.image}\n alt={linkPreview.title}\n onError={handleImageError}\n />\n </div>\n )}\n \n <div className=\"fusioni-url-preview-text\">\n <div className=\"fusioni-url-preview-title\">\n {linkPreview.title}\n </div>\n \n {linkPreview.description && (\n <div className=\"fusioni-url-preview-description\">\n {linkPreview.description}\n </div>\n )}\n \n <div className=\"fusioni-url-preview-domain\">\n {linkPreview.domain}\n </div>\n </div>\n </a>\n </div>\n )}\n </div>\n );\n};\n","import React, { useState, useEffect } from 'react';\n\nexport interface MapProps {\n lat: string | number;\n lng: string | number;\n zoom?: string | number;\n staticMap?: boolean;\n width?: number;\n height?: number;\n apiBaseUrl?: string;\n apiKey?: string;\n agencyId: string;\n}\n\nexport const Map: React.FC<MapProps> = ({\n lat,\n lng,\n zoom = 10,\n staticMap = true,\n width = 600,\n height = 400,\n apiBaseUrl = '',\n apiKey,\n agencyId\n}) => {\n const [mapUrl, setMapUrl] = useState<string>('');\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n const getStaticMap = async (latNum: number, lngNum: number, zoomNum: number): Promise<void> => {\n try {\n const params = new URLSearchParams({\n lat: latNum.toString(),\n lng: lngNum.toString(),\n zoom: zoomNum.toString(),\n agency_id: agencyId\n });\n\n const headers: HeadersInit = {\n 'Accept': 'image/*'\n };\n\n // Add Authorization header with ApiKey format if API key is provided\n if (apiKey) {\n headers['Authorization'] = `ApiKey ${apiKey}`;\n }\n\n const response = await fetch(`${apiBaseUrl}/map/static?${params}`, {\n method: 'GET',\n headers\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch static map: ${response.status} ${response.statusText}`);\n }\n\n const blob = await response.blob();\n const objectUrl = URL.createObjectURL(blob);\n setMapUrl(objectUrl);\n } catch (err) {\n console.error('Error fetching static map:', err);\n setError(`Failed to load map: ${err instanceof Error ? err.message : 'Unknown error'}`);\n }\n };\n\n useEffect(() => {\n if (!lat || !lng) {\n setError('Invalid coordinates provided');\n setIsLoading(false);\n return;\n }\n\n const latNum = typeof lat === 'string' ? parseFloat(lat) : lat;\n const lngNum = typeof lng === 'string' ? parseFloat(lng) : lng;\n const zoomNum = typeof zoom === 'string' ? parseInt(zoom) : zoom;\n\n if (isNaN(latNum) || isNaN(lngNum)) {\n setError('Invalid coordinate format');\n setIsLoading(false);\n return;\n }\n\n const loadMap = async () => {\n setIsLoading(true);\n setError(null);\n\n if (staticMap) {\n // Use the relative endpoint for static maps\n await getStaticMap(latNum, lngNum, zoomNum);\n } else {\n // For interactive maps, use Google Maps embed\n setMapUrl(`https://maps.google.com/maps?q=${latNum},${lngNum}&output=embed`);\n }\n\n setIsLoading(false);\n };\n\n loadMap();\n }, [lat, lng, zoom, staticMap, width, height, apiBaseUrl, apiKey]);\n\n // Cleanup blob URL on unmount to prevent memory leaks\n useEffect(() => {\n return () => {\n if (mapUrl && mapUrl.startsWith('blob:')) {\n URL.revokeObjectURL(mapUrl);\n }\n };\n }, [mapUrl]);\n\n if (error) {\n return (\n <div className=\"fusioni-map-error\">\n <div className=\"fusioni-map-error-content\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <line\n x1=\"15\"\n y1=\"9\"\n x2=\"9\"\n y2=\"15\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <line\n x1=\"9\"\n y1=\"9\"\n x2=\"15\"\n y2=\"15\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n </svg>\n <span>{error}</span>\n </div>\n </div>\n );\n }\n\n if (isLoading) {\n return (\n <div className=\"fusioni-map-loading\">\n <div className=\"fusioni-map-loading-content\">\n <div className=\"fusioni-map-loading-spinner\"></div>\n <span>Loading map...</span>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"fusioni-map-container\">\n {staticMap ? (\n <div className=\"fusioni-map-static\">\n <img\n src={mapUrl}\n alt={`Map showing location at ${lat}, ${lng}`}\n width={width}\n height={height}\n className=\"fusioni-map-image\"\n onError={() => setError('Failed to load map image')}\n />\n </div>\n ) : (\n <div className=\"fusioni-map-interactive\">\n <iframe\n src={mapUrl}\n width={width}\n height={height}\n style={{ border: 0 }}\n loading=\"lazy\"\n allowFullScreen\n title={`Map showing location at ${lat}, ${lng}`}\n className=\"fusioni-map-iframe\"\n />\n </div>\n )}\n </div>\n );\n};\n","import React, { useEffect, useState } from 'react';\n\nexport const GALLERY_STRIP_MAX_ROWS = 2;\n\nexport interface PaginatedGalleryStripProps {\n itemCount: number;\n columns: number;\n page: number;\n onPageChange: (page: number) => void;\n /** Render one cell for global index `globalIndex` (0 .. itemCount-1) */\n renderCell: (globalIndex: number) => React.ReactNode;\n /** BEM-style modifier: \"document\" | \"lightbox\" for theme-specific dots/buttons */\n variant: 'document' | 'lightbox';\n}\n\n/**\n * Horizontal slide of pages, each a grid with `columns` × {@link GALLERY_STRIP_MAX_ROWS} cells.\n * Dot indicators when there is more than one page (fusioni-web assistant bubble pattern).\n */\nexport const PaginatedGalleryStrip: React.FC<PaginatedGalleryStripProps> = ({\n itemCount,\n columns,\n page,\n onPageChange,\n renderCell,\n variant,\n}) => {\n const pageSize = columns * GALLERY_STRIP_MAX_ROWS;\n const pageCount = itemCount > 0 ? Math.ceil(itemCount / pageSize) : 0;\n\n if (pageCount === 0) return null;\n\n const pageIndexes = Array.from({ length: pageCount }, (_, pi) => {\n const start = pi * pageSize;\n const len = Math.min(pageSize, itemCount - start);\n return Array.from({ length: len }, (_, j) => start + j);\n });\n\n const rootMod = `fusioni-gallery-strip--${variant}`;\n\n return (\n <div className={`fusioni-gallery-strip ${rootMod}`}>\n <div className=\"fusioni-gallery-strip-viewport\">\n <div\n className=\"fusioni-gallery-strip-track\"\n style={{ marginLeft: `-${page * 100}%` }}\n >\n {pageIndexes.map((globalIndices, pi) => (\n <div key={pi} className=\"fusioni-gallery-strip-page\">\n <div\n className=\"fusioni-gallery-strip-grid\"\n style={{\n gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`,\n }}\n >\n {globalIndices.map((gi) => (\n <div key={gi} className=\"fusioni-gallery-strip-cell\">\n {renderCell(gi)}\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n {pageCount > 1 && (\n <div className=\"fusioni-gallery-strip-dots\" role=\"tablist\" aria-label=\"Image pages\">\n {Array.from({ length: pageCount }, (_, i) => (\n <button\n key={i}\n type=\"button\"\n role=\"tab\"\n aria-selected={i === page}\n aria-label={`Go to page ${i + 1} of ${pageCount}`}\n className={`fusioni-gallery-strip-dot ${i === page ? 'fusioni-gallery-strip-dot-active' : ''}`}\n onClick={() => onPageChange(i)}\n />\n ))}\n </div>\n )}\n </div>\n );\n};\n\n/** Match fusioni-web / Tailwind `sm`: 2 columns below 640px, 3 at 640px+. */\nexport function useGalleryStripColumns(): 2 | 3 {\n const [cols, setCols] = useState<2 | 3>(2);\n useEffect(() => {\n const mq = window.matchMedia('(min-width: 640px)');\n const update = () => setCols(mq.matches ? 3 : 2);\n update();\n mq.addEventListener('change', update);\n return () => mq.removeEventListener('change', update);\n }, []);\n return cols;\n}\n","import React, {useEffect, useMemo, useRef, useState} from 'react';\nimport {MessageProps} from '../types';\nimport {UrlPreview} from './UrlPreview';\nimport {Map} from './Map';\nimport {useTranslation} from '../hooks/useTranslation';\nimport {GALLERY_STRIP_MAX_ROWS, PaginatedGalleryStrip, useGalleryStripColumns} from './PaginatedGalleryStrip';\n\ninterface DocumentImageGridProps {\n images: string[];\n onOpenGallery: (payload: { images: string[]; index: number }) => void;\n attachedImagesLabel: string;\n}\n\ninterface DocumentVideoGridProps {\n videos: string[];\n attachedVideosLabel: string;\n}\n\nconst DocumentImageGrid: React.FC<DocumentImageGridProps> = ({\n images,\n onOpenGallery,\n attachedImagesLabel,\n}) => {\n const cols = useGalleryStripColumns();\n const [visible, setVisible] = useState<string[]>(images);\n const [page, setPage] = useState(0);\n const pageSize = cols * GALLERY_STRIP_MAX_ROWS;\n const pageCount = visible.length > 0 ? Math.ceil(visible.length / pageSize) : 0;\n const prevPageSizeRef = useRef(pageSize);\n\n useEffect(() => setVisible(images), [images]);\n\n useEffect(() => {\n const old = prevPageSizeRef.current;\n if (old !== pageSize && old > 0 && pageSize > 0) {\n setPage((p) => {\n const firstGlobal = p * old;\n const np = Math.floor(firstGlobal / pageSize);\n const pc = visible.length > 0 ? Math.ceil(visible.length / pageSize) : 0;\n return pc <= 0 ? 0 : Math.min(Math.max(0, np), pc - 1);\n });\n }\n prevPageSizeRef.current = pageSize;\n }, [pageSize, visible.length]);\n\n useEffect(() => {\n setPage((p) => {\n if (pageCount <= 0) return 0;\n return Math.min(p, pageCount - 1);\n });\n }, [pageCount]);\n\n if (!visible.length) return null;\n\n return (\n <div className=\"fusioni-document-images\">\n <div className=\"fusioni-document-images-header\">\n <span className=\"fusioni-document-images-header-label\">\n <svg\n className=\"fusioni-document-images-header-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n aria-hidden=\"true\"\n >\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\" />\n <path d=\"M21 15l-5-5L5 21\" />\n </svg>\n {attachedImagesLabel}\n </span>\n </div>\n <PaginatedGalleryStrip\n variant=\"document\"\n itemCount={visible.length}\n columns={cols}\n page={page}\n onPageChange={setPage}\n renderCell={(gi) => {\n const img = visible[gi];\n return (\n <button\n type=\"button\"\n className=\"fusioni-document-image-btn\"\n aria-label={`Preview attached image ${gi + 1}`}\n onClick={() => onOpenGallery({images: visible, index: gi})}\n >\n <div className=\"fusioni-document-image-aspect\">\n <img\n src={img}\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n referrerPolicy=\"no-referrer\"\n onError={() => setVisible((v) => v.filter((u) => u !== img))}\n />\n </div>\n </button>\n );\n }}\n />\n </div>\n );\n};\n\nconst DocumentVideoGrid: React.FC<DocumentVideoGridProps> = ({\n videos,\n attachedVideosLabel,\n}) => {\n const cols = useGalleryStripColumns();\n const [visible, setVisible] = useState<string[]>(videos);\n const [page, setPage] = useState(0);\n const pageSize = cols * GALLERY_STRIP_MAX_ROWS;\n const pageCount = visible.length > 0 ? Math.ceil(visible.length / pageSize) : 0;\n const prevPageSizeRef = useRef(pageSize);\n\n useEffect(() => setVisible(videos), [videos]);\n\n useEffect(() => {\n const old = prevPageSizeRef.current;\n if (old !== pageSize && old > 0 && pageSize > 0) {\n setPage((p) => {\n const firstGlobal = p * old;\n const np = Math.floor(firstGlobal / pageSize);\n const pc = visible.length > 0 ? Math.ceil(visible.length / pageSize) : 0;\n return pc <= 0 ? 0 : Math.min(Math.max(0, np), pc - 1);\n });\n }\n prevPageSizeRef.current = pageSize;\n }, [pageSize, visible.length]);\n\n useEffect(() => {\n setPage((p) => {\n if (pageCount <= 0) return 0;\n return Math.min(p, pageCount - 1);\n });\n }, [pageCount]);\n\n if (!visible.length) return null;\n\n return (\n <div className=\"fusioni-document-videos\">\n <div className=\"fusioni-document-videos-header\">\n <span className=\"fusioni-document-videos-header-label\">\n <svg\n className=\"fusioni-document-videos-header-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n aria-hidden=\"true\"\n >\n <polygon points=\"23 7 16 12 23 17 23 7\" />\n <rect x=\"1\" y=\"5\" width=\"15\" height=\"14\" rx=\"2\" ry=\"2\" />\n </svg>\n {attachedVideosLabel}\n </span>\n </div>\n <PaginatedGalleryStrip\n variant=\"document\"\n itemCount={visible.length}\n columns={cols}\n page={page}\n onPageChange={setPage}\n renderCell={(gi) => {\n const vid = visible[gi];\n return (\n <div className=\"fusioni-document-video-wrap\" aria-label={`Attached video ${gi + 1}`}>\n <div className=\"fusioni-document-video-aspect\">\n <video\n src={vid}\n controls\n preload=\"metadata\"\n playsInline\n onError={() => setVisible((v) => v.filter((u) => u !== vid))}\n />\n </div>\n </div>\n );\n }}\n />\n </div>\n );\n};\n\n// Module-level Set to track which message IDs have been animated\n// This persists across component unmounts/remounts (e.g., when chat closes and reopens)\nconst animatedMessageIds = new Set<string>();\n\nexport const Message: React.FC<MessageProps> = ({\n message,\n showThoughts = false,\n fontSize = 'text-sm',\n onDelete,\n onConfirmation,\n enableButtons = true,\n streamLoading,\n apiBaseUrl,\n apiKey,\n agencyId,\n currentLanguage = 'en',\n onOpenGallery\n }) => {\n const {t} = useTranslation(currentLanguage);\n const [displayedContent, setDisplayedContent] = useState<string>('');\n const typingIntervalRef = useRef<NodeJS.Timeout | null>(null);\n const typingSpeed = 15; // milliseconds per character\n\n const enhanceMessageContent = (content: string): string => {\n if (!content) return content;\n\n // Check if content contains <pre> <code> blocks with escaped HTML\n const preCodeRegex = /<pre><code>([\\s\\S]*?)<\\/code><\\/pre>/gi;\n\n // Use replace it with a callback to handle all matches\n return content.replace(preCodeRegex, (match, escapedHtml) => {\n // Decode HTML entities: decode &amp; last to avoid interfering with other entities\n // &lt; -> <, &gt; -> >, &quot; -> \", &#39; -> ', &amp; -> &\n // Replace the <pre> <code> block with the decoded HTML\n return escapedHtml\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&quot;/g, '\"')\n .replace(/&#39;/g, \"'\")\n .replace(/&amp;/g, '&');\n });\n\n };\n\n const extractUrlsFromContent = (content: string): string[] => {\n if (!content) return [];\n\n // URL regex pattern that matches http/https URLs\n const urlRegex = /(https?:\\/\\/[^\\s<>\"{}|\\\\^`[\\]]+)/gi;\n const urls = content.match(urlRegex) || [];\n\n // Remove duplicates and return\n return [...new Set(urls)];\n };\n\n const renderImage = (imageUrl: string) => {\n if (!imageUrl) return null;\n const imgEl = (\n <img\n src={imageUrl}\n alt=\"Uploaded image\"\n className={`fusioni-image${onOpenGallery ? ' fusioni-image-clickable' : ''}`}\n onError={(e) => {\n const target = e.target as HTMLImageElement;\n target.style.display = 'none';\n }}\n />\n );\n return (\n <div className=\"fusioni-message-image\">\n {onOpenGallery ? (\n <button\n type=\"button\"\n className=\"fusioni-image-clickable-wrap\"\n aria-label=\"Open image in gallery\"\n onClick={() => onOpenGallery({images: [imageUrl], index: 0})}\n >\n {imgEl}\n </button>\n ) : (\n imgEl\n )}\n </div>\n );\n };\n\n const renderAudio = (audioRef: string, duration?: number) => {\n return (\n <div className=\"fusioni-message-audio\">\n <div className=\"fusioni-audio-header\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M12 1C10.34 1 9 2.34 9 4V12C9 13.66 10.34 15 12 15C13.66 15 15 13.66 15 12V4C15 2.34 13.66 1 12 1Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M19 10V12C19 15.87 15.87 19 12 19C8.13 19 5 15.87 5 12V10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"12\"\n y1=\"19\"\n x2=\"12\"\n y2=\"23\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"8\"\n y1=\"23\"\n x2=\"16\"\n y2=\"23\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <span>Audio Message</span>\n {duration && <span className=\"fusioni-audio-duration\">({duration}s)</span>}\n </div>\n <audio\n src={audioRef}\n controls\n className=\"fusioni-audio-player\"\n preload=\"metadata\"\n >\n Your browser does not support the audio element.\n </audio>\n </div>\n );\n };\n\n const renderMap = (coordinates: { lat: number; lon: number; zoom?: number }) => {\n // For now, we'll show coordinates. In a real implementation, you'd integrate with a map service\n return (\n <div className=\"fusioni-message-map\">\n <div className=\"fusioni-map-placeholder\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M21 10C21 17 12 23 12 23S3 17 3 10C3 7.61305 3.94821 5.32387 5.63604 3.63604C7.32387 1.94821 9.61305 1 12 1C14.3869 1 16.6761 1.94821 18.3639 3.63604C20.0518 5.32387 21 7.61305 21 10Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle\n cx=\"12\"\n cy=\"10\"\n r=\"3\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n </svg>\n <p>Location: {coordinates.lat.toFixed(4)}, {coordinates.lon.toFixed(4)}</p>\n </div>\n </div>\n );\n };\n\n const getMessageClasses = () => {\n const baseClasses = `fusioni-message-bubble ${fontSize}`;\n const roleClasses = message.role === 'user'\n ? 'fusioni-message-user'\n : 'fusioni-message-assistant';\n const errorClasses = message.has_error ? 'fusioni-message-error' : '';\n\n return `${baseClasses} ${roleClasses} ${errorClasses}`.trim();\n };\n\n const sendConfirmation = (confirmed: 'Confirmed' | 'NotConfirmed', key?: string) => {\n if (onConfirmation && key) {\n onConfirmation({\n confirmed,\n key\n });\n }\n };\n\n // Typing effect implementation\n useEffect(() => {\n // Clear any existing typing animation\n if (typingIntervalRef.current) {\n clearTimeout(typingIntervalRef.current);\n }\n\n // Safety check: ensure message exists\n if (!message) {\n setDisplayedContent('');\n return;\n }\n\n // If a message is loading or has no content, reset displayed content\n if (message.loading || !message.content) {\n setDisplayedContent('');\n return;\n }\n\n // Check if this message has already been animated\n const messageId = message.id || '';\n \n // Only animate if shouldAnimate flag is set AND we haven't animated this message yet\n // This prevents re-animation when chat is closed and reopened\n // The animatedMessageIds Set persists across component unmounts/remounts\n if (!message.shouldAnimate || animatedMessageIds.has(messageId)) {\n setDisplayedContent(message.content);\n return;\n }\n\n // Reset displayed content\n setDisplayedContent('');\n // Type the same HTML string that will be rendered (after any transformations),\n // otherwise we can end up animating an HTML-escaped variant.\n const fullContent = enhanceMessageContent(message.content);\n\n // Parse content into segments: text segments and HTML tag segments.\n // Important: this parser is quote-aware so it won't break on `>` inside quoted attributes.\n const segments: Array<{ type: 'text' | 'tag'; content: string }> = [];\n const readTagAt = (html: string, start: number): { tag: string; end: number } | null => {\n if (html[start] !== '<') return null;\n\n // Handle comments: <!-- ... -->\n if (html.startsWith('<!--', start)) {\n const endIdx = html.indexOf('-->', start + 4);\n if (endIdx === -1) return { tag: html.slice(start), end: html.length };\n return { tag: html.slice(start, endIdx + 3), end: endIdx + 3 };\n }\n\n let i = start + 1;\n let quote: '\"' | \"'\" | null = null;\n\n while (i < html.length) {\n const ch = html[i];\n if (quote) {\n if (ch === quote) quote = null;\n i++;\n continue;\n }\n if (ch === '\"' || ch === \"'\") {\n quote = ch;\n i++;\n continue;\n }\n if (ch === '>') {\n return { tag: html.slice(start, i + 1), end: i + 1 };\n }\n i++;\n }\n\n // No closing `>` found; treat the remainder as text to avoid exposing partial tags.\n return null;\n };\n\n let currentIndex = 0;\n while (currentIndex < fullContent.length) {\n const nextLt = fullContent.indexOf('<', currentIndex);\n if (nextLt === -1) {\n segments.push({ type: 'text', content: fullContent.slice(currentIndex) });\n break;\n }\n if (nextLt > currentIndex) {\n segments.push({ type: 'text', content: fullContent.slice(currentIndex, nextLt) });\n }\n const maybeTag = readTagAt(fullContent, nextLt);\n if (maybeTag) {\n segments.push({ type: 'tag', content: maybeTag.tag });\n currentIndex = maybeTag.end;\n } else {\n // Not a valid tag; emit the `<` as text and keep going.\n segments.push({ type: 'text', content: '<' });\n currentIndex = nextLt + 1;\n }\n }\n\n // Now animate through segments\n let segmentIndex = 0;\n let textIndex = 0;\n\n const nextTextStep = (text: string, index: number): { nextIndex: number; slice: string } => {\n if (index >= text.length) return { nextIndex: index, slice: '' };\n const ch = text[index];\n\n // Treat HTML entities as atomic \"characters\" so we don't type partial `&...;`.\n if (ch === '&') {\n const rest = text.slice(index);\n const entityMatch = rest.match(/^&(#\\d+|#x[0-9a-fA-F]+|[a-zA-Z][a-zA-Z0-9]+);/);\n if (entityMatch) {\n return { nextIndex: index + entityMatch[0].length, slice: text.slice(0, index + entityMatch[0].length) };\n }\n }\n\n return { nextIndex: index + 1, slice: text.slice(0, index + 1) };\n };\n\n const typeNextChar = () => {\n if (segmentIndex >= segments.length) {\n // Typing complete - mark this message as animated in the persistent Set\n setDisplayedContent(fullContent);\n animatedMessageIds.add(messageId);\n return;\n }\n\n const segment = segments[segmentIndex];\n\n if (segment.type === 'tag') {\n // HTML tags are added immediately without animation\n // Build content up to and including this tag\n let content = '';\n for (let i = 0; i <= segmentIndex; i++) {\n content += segments[i].content;\n }\n setDisplayedContent(content);\n segmentIndex++;\n textIndex = 0;\n // Continue immediately for tags (no delay)\n typingIntervalRef.current = setTimeout(typeNextChar, 0);\n } else {\n // Text segments are typed character by character\n if (textIndex < segment.content.length) {\n const step = nextTextStep(segment.content, textIndex);\n if (!step.slice) {\n segmentIndex++;\n textIndex = 0;\n typingIntervalRef.current = setTimeout(typeNextChar, 0);\n return;\n }\n\n // Build content: all previous segments + current segment slice\n let content = '';\n for (let i = 0; i < segmentIndex; i++) {\n content += segments[i].content;\n }\n content += step.slice;\n setDisplayedContent(content);\n textIndex = step.nextIndex;\n typingIntervalRef.current = setTimeout(typeNextChar, typingSpeed);\n } else {\n // Current text segment is complete, move to next segment\n segmentIndex++;\n textIndex = 0;\n typingIntervalRef.current = setTimeout(typeNextChar, 0);\n }\n }\n };\n\n // Start typing\n typeNextChar();\n\n // Cleanup function\n return () => {\n if (typingIntervalRef.current) {\n clearTimeout(typingIntervalRef.current);\n }\n };\n }, [message?.content, message?.shouldAnimate, message?.loading, typingSpeed]);\n\n // Determine which content to display\n // If animating, use displayedContent (which starts empty and fills up)\n // If not animating, always use message.content directly\n const contentToDisplay = message.shouldAnimate\n ? displayedContent\n : message.content;\n const extractedUrls = useMemo(() => extractUrlsFromContent(message.content), [message.content]);\n\n return (\n <div className={getMessageClasses()}>\n {/* Main content — hidden while loading (parity with Angular assistant bubble) */}\n {message.content && !message.loading && (\n <div\n className=\"fusioni-message-text\"\n dangerouslySetInnerHTML={{\n __html: enhanceMessageContent(contentToDisplay)\n }}\n />\n )}\n\n {message.loading && streamLoading}\n\n {/* URL Previews for message content */}\n {!message.loading && extractedUrls.length > 0 && message.role !== 'user' && (\n <div className=\"fusioni-message-url-previews\">\n {extractedUrls.map((url) => (\n <UrlPreview\n key={url}\n url={url}\n agencyId={agencyId}\n showCloseButton={false}\n compact={true}\n autoFetch={true}\n apiBaseUrl={apiBaseUrl}\n apiKey={apiKey}\n />\n ))}\n </div>\n )}\n\n {/* Extra data rendering */}\n {message.extra_data && (\n <div className=\"fusioni-message-extra m2\">\n {message.extra_data.document_images &&\n message.extra_data.document_images.length > 0 &&\n onOpenGallery && (\n <DocumentImageGrid\n images={message.extra_data.document_images}\n onOpenGallery={onOpenGallery}\n attachedImagesLabel={t('chat.attachedImages')}\n />\n )}\n\n {message.extra_data.document_videos &&\n message.extra_data.document_videos.length > 0 && (\n <DocumentVideoGrid\n videos={message.extra_data.document_videos}\n attachedVideosLabel={t('chat.attachedVideos')}\n />\n )}\n\n {message.extra_data.image && renderImage(message.extra_data.image)}\n\n {message.extra_data.image_ref && renderImage(message.extra_data.image_ref)}\n\n {message.extra_data.audio_ref && renderAudio(\n message.extra_data.audio_ref,\n message.extra_data.duration\n )}\n\n {message.extra_data.coordinates && renderMap(message.extra_data.coordinates)}\n\n {message.extra_data.map && (\n <div className=\"fusioni-message-map\">\n <Map\n lat={message.extra_data.map.lat}\n lng={message.extra_data.map.lng}\n zoom={message.extra_data.map.zoom}\n staticMap={true}\n width={600}\n height={400}\n apiBaseUrl={apiBaseUrl}\n apiKey={apiKey}\n agencyId={agencyId}\n />\n </div>\n )}\n </div>\n )}\n\n {/* Confirmation Widget */}\n {message.extra_data?.widget === 'Confirmation' && (\n <div className=\"fusioni-confirmation-widget\">\n <button\n type=\"button\"\n disabled={!enableButtons}\n onClick={() => sendConfirmation('Confirmed', message.extra_data?.key)}\n className=\"fusioni-btn fusioni-btn-primary fusioni-btn-confirm\"\n >\n {t('common.yes')}\n </button>\n <button\n type=\"button\"\n disabled={!enableButtons}\n onClick={() => sendConfirmation('NotConfirmed', message.extra_data?.key)}\n className=\"fusioni-btn fusioni-btn-secondary fusioni-btn-cancel\"\n >\n {t('common.no')}\n </button>\n </div>\n )}\n\n {/* Thoughts (if enabled) */}\n {showThoughts && message.thoughts && (\n <div className=\"fusioni-message-thoughts\">\n <details>\n <summary>AI Thoughts</summary>\n <p>{message.thoughts}</p>\n </details>\n </div>\n )}\n\n {/* Error state */}\n {message.has_error && (\n <div className=\"fusioni-message-error-indicator\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <line\n x1=\"15\"\n y1=\"9\"\n x2=\"9\"\n y2=\"15\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <line\n x1=\"9\"\n y1=\"9\"\n x2=\"15\"\n y2=\"15\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n </svg>\n <span>Error occurred</span>\n </div>\n )}\n </div>\n );\n};\n","import React, { useEffect, useRef } from 'react';\n\nexport interface SpotlightProps {\n text: string;\n className?: string;\n}\n\nconst DURATION_MS = 2500;\n\nexport const Spotlight: React.FC<SpotlightProps> = ({ text, className }) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const startRef = useRef(0);\n const frameRef = useRef<number | null>(null);\n\n useEffect(() => {\n startRef.current = performance.now();\n const tick = (): void => {\n const elapsed = performance.now() - startRef.current;\n const period = DURATION_MS * 2;\n const t = (elapsed % period) / DURATION_MS;\n const x = t <= 1 ? t * 100 : (2 - t) * 100;\n const el = rootRef.current;\n if (el) {\n el.style.setProperty('--mask-x', `${x}%`);\n el.style.setProperty('--mask-y', '50%');\n }\n frameRef.current = requestAnimationFrame(tick);\n };\n frameRef.current = requestAnimationFrame(tick);\n return () => {\n if (frameRef.current != null) {\n cancelAnimationFrame(frameRef.current);\n }\n };\n }, []);\n\n return (\n <div ref={rootRef} className={className ? `fusioni-spotlight ${className}` : 'fusioni-spotlight'}>\n <div className=\"fusioni-spotlight-title\">\n <span className=\"fusioni-spotlight-text-base\">{text}</span>\n <span className=\"fusioni-spotlight-text-overlay\" aria-hidden=\"true\">\n {text}\n </span>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport {Spotlight} from './Spotlight';\nimport {FUSIONI_LOGO_BASE64} from '../assets/logo-base64';\n\nexport interface MessageStreamLoadingProps {\n streamMessages: string[];\n loadingLabel: string;\n}\n\n/** Logo + Spotlight: SSE stream lines, or loading label until first stream event */\nexport const MessageStreamLoading: React.FC<MessageStreamLoadingProps> = ({\n streamMessages,\n loadingLabel,\n}) => {\n const lines = streamMessages.length > 0 ? streamMessages : [loadingLabel];\n\n return (\n <div className=\"fusioni-stream-messages\">\n {lines.map((line, index) => (\n <div\n key={streamMessages.length > 0 ? `${index}-${line}` : 'loading-placeholder'}\n className=\"fusioni-stream-message-item\"\n >\n <div className=\"fusioni-stream-message-logo-wrap\">\n <div className=\"fusioni-stream-message-logo-frame\">\n <img\n className=\"fusioni-stream-message-logo-img\"\n src={FUSIONI_LOGO_BASE64}\n alt=\"\"\n width={32}\n height={32}\n />\n </div>\n </div>\n <Spotlight className=\"fusioni-stream-message-spotlight\" text={line} />\n </div>\n ))}\n </div>\n );\n};\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { GALLERY_STRIP_MAX_ROWS, PaginatedGalleryStrip, useGalleryStripColumns } from './PaginatedGalleryStrip';\n\nexport interface ImageGalleryProps {\n images: string[];\n initialIndex?: number;\n onClose: () => void;\n /** Used for overlay gradient when rendered outside `.fusioni-chat-widget` (e.g. portal). */\n theme?: 'light' | 'dark';\n}\n\n/**\n * Full-screen image lightbox: main image + prev/next, keyboard nav,\n * and a two-row thumbnail strip with horizontal pages and dot indicators (fusioni-web parity).\n */\nexport const ImageGallery: React.FC<ImageGalleryProps> = ({\n images,\n initialIndex = 0,\n onClose,\n theme = 'light',\n}) => {\n const cols = useGalleryStripColumns();\n const pageSize = cols * GALLERY_STRIP_MAX_ROWS;\n\n const [currentIndex, setCurrentIndex] = useState(() => {\n if (!images?.length) return 0;\n return Math.max(0, Math.min(initialIndex, images.length - 1));\n });\n const [isTransitioning, setIsTransitioning] = useState(false);\n const galleryStateRef = useRef({ index: currentIndex, images });\n galleryStateRef.current = { index: currentIndex, images };\n\n const pageCount = useMemo(\n () => (images.length > 0 ? Math.ceil(images.length / pageSize) : 0),\n [images.length, pageSize]\n );\n\n const thumbPage =\n pageCount > 0 ? Math.min(Math.floor(currentIndex / pageSize), pageCount - 1) : 0;\n\n useEffect(() => {\n document.body.style.overflow = 'hidden';\n return () => {\n document.body.style.overflow = '';\n };\n }, []);\n\n const currentImage =\n images?.length && currentIndex >= 0 && currentIndex < images.length\n ? images[currentIndex]\n : null;\n\n const hasPrevious = (images?.length ?? 0) > 1 && currentIndex > 0;\n const hasNext = (images?.length ?? 0) > 1 && currentIndex < images.length - 1;\n const counterText =\n images?.length ? `${currentIndex + 1} / ${images.length}` : '';\n\n const resetTransitionFlag = useCallback(() => {\n window.setTimeout(() => setIsTransitioning(false), 300);\n }, []);\n\n const goPrevious = useCallback(() => {\n if (!hasPrevious || isTransitioning) return;\n setIsTransitioning(true);\n setCurrentIndex((i) => i - 1);\n resetTransitionFlag();\n }, [hasPrevious, isTransitioning, resetTransitionFlag]);\n\n const goNext = useCallback(() => {\n if (!hasNext || isTransitioning) return;\n setIsTransitioning(true);\n setCurrentIndex((i) => i + 1);\n resetTransitionFlag();\n }, [hasNext, isTransitioning, resetTransitionFlag]);\n\n const close = useCallback(() => {\n onClose();\n }, [onClose]);\n\n const onBackdropClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if ((event.target as HTMLElement).hasAttribute('data-gallery-backdrop')) {\n close();\n }\n };\n\n const onImageError = useCallback(() => {\n const { index: idx, images: imgs } = galleryStateRef.current;\n const len = imgs.length;\n if (len > 1 && idx < len - 1) {\n setIsTransitioning(true);\n setCurrentIndex(idx + 1);\n resetTransitionFlag();\n } else if (len > 1 && idx > 0) {\n setIsTransitioning(true);\n setCurrentIndex(idx - 1);\n resetTransitionFlag();\n } else {\n close();\n }\n }, [close, resetTransitionFlag]);\n\n useEffect(() => {\n const onKeydown = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'Escape':\n close();\n break;\n case 'ArrowLeft':\n event.preventDefault();\n goPrevious();\n break;\n case 'ArrowRight':\n event.preventDefault();\n goNext();\n break;\n default:\n break;\n }\n };\n document.addEventListener('keydown', onKeydown);\n return () => document.removeEventListener('keydown', onKeydown);\n }, [close, goPrevious, goNext]);\n\n const showThumbStrip = (images?.length ?? 0) > 1;\n\n if (!images?.length || !currentImage) {\n return null;\n }\n\n return (\n <div\n data-gallery-backdrop\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Image gallery\"\n className={`fusioni-image-gallery-overlay fusioni-image-gallery-theme-${theme} ${\n showThumbStrip ? 'fusioni-image-gallery-has-thumbs' : ''\n }`}\n onClick={onBackdropClick}\n >\n <div className=\"fusioni-image-gallery-topbar\">\n <div className=\"fusioni-image-gallery-topbar-spacer\" aria-hidden=\"true\" />\n <span className=\"fusioni-image-gallery-counter\">{counterText}</span>\n <button\n type=\"button\"\n className=\"fusioni-image-gallery-close\"\n onClick={close}\n aria-label=\"Close gallery\"\n >\n <svg className=\"fusioni-image-gallery-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <div className=\"fusioni-image-gallery-body\">\n <div className=\"fusioni-image-gallery-stage\">\n {hasPrevious && (\n <button\n type=\"button\"\n className=\"fusioni-image-gallery-nav fusioni-image-gallery-nav-prev\"\n onClick={(e) => {\n e.stopPropagation();\n goPrevious();\n }}\n aria-label=\"Previous image\"\n >\n <svg className=\"fusioni-image-gallery-icon-lg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 19l-7-7 7-7\" />\n </svg>\n </button>\n )}\n\n <div className=\"fusioni-image-gallery-content\" onClick={(e) => e.stopPropagation()} role=\"presentation\">\n <img\n src={currentImage}\n alt={`Gallery image ${currentIndex + 1} of ${images.length}`}\n className=\"fusioni-image-gallery-img\"\n referrerPolicy=\"no-referrer\"\n onError={onImageError}\n />\n </div>\n\n {hasNext && (\n <button\n type=\"button\"\n className=\"fusioni-image-gallery-nav fusioni-image-gallery-nav-next\"\n onClick={(e) => {\n e.stopPropagation();\n goNext();\n }}\n aria-label=\"Next image\"\n >\n <svg className=\"fusioni-image-gallery-icon-lg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n </svg>\n </button>\n )}\n </div>\n\n {showThumbStrip && (\n <div\n className=\"fusioni-image-gallery-thumbs-wrap\"\n onClick={(e) => e.stopPropagation()}\n role=\"presentation\"\n >\n <PaginatedGalleryStrip\n variant=\"lightbox\"\n itemCount={images.length}\n columns={cols}\n page={thumbPage}\n onPageChange={(p) => {\n setIsTransitioning(true);\n setCurrentIndex(p * pageSize);\n resetTransitionFlag();\n }}\n renderCell={(gi) => (\n <button\n type=\"button\"\n className={`fusioni-image-gallery-thumb ${\n gi === currentIndex ? 'fusioni-image-gallery-thumb-selected' : ''\n }`}\n aria-label={`Show image ${gi + 1}`}\n aria-current={gi === currentIndex ? 'true' : undefined}\n onClick={() => {\n if (gi === currentIndex) return;\n setIsTransitioning(true);\n setCurrentIndex(gi);\n resetTransitionFlag();\n }}\n >\n <img src={images[gi]} alt=\"\" loading=\"lazy\" referrerPolicy=\"no-referrer\" />\n </button>\n )}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { FusioniMemoryMessage } from '../types';\nimport { Message } from './Message';\nimport { MessageStreamLoading } from './MessageStreamLoading';\nimport { ChatLoader } from './ChatLoader';\nimport { useTranslation } from '../hooks/useTranslation';\nimport { ImageGallery } from './ImageGallery';\nimport { FUSIONI_LOGO_BASE64 } from '../assets/logo-base64';\n\ninterface MessageListProps {\n messages: FusioniMemoryMessage[];\n streamMessages: string[];\n showThoughts?: boolean;\n onDeleteMessage?: (messageId: string) => void;\n onEditMessage?: (payload: { messageId: string; content: string }) => void;\n onConfirmation?: (result: { confirmed: 'Confirmed' | 'NotConfirmed'; key?: string }) => void;\n enableButtons?: boolean;\n apiBaseUrl?: string;\n apiKey?: string;\n agencyId: string;\n currentLanguage?: 'en' | 'el';\n theme?: 'light' | 'dark';\n}\n\nexport const MessageList: React.FC<MessageListProps> = ({\n messages,\n streamMessages,\n showThoughts = false,\n onDeleteMessage,\n onEditMessage,\n onConfirmation,\n enableButtons = true,\n apiBaseUrl,\n apiKey,\n agencyId,\n currentLanguage = 'en',\n theme = 'light'\n}) => {\n const { t } = useTranslation(currentLanguage);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const editRef = useRef<HTMLDivElement>(null);\n const [editingMessageId, setEditingMessageId] = useState<string | null>(null);\n const [editingContent, setEditingContent] = useState('');\n const [gallerySession, setGallerySession] = useState<{\n key: number;\n images: string[];\n index: number;\n } | null>(null);\n\n const openGallery = useCallback((payload: { images: string[]; index: number }) => {\n setGallerySession((prev) => ({\n key: (prev?.key ?? 0) + 1,\n images: payload.images,\n index: payload.index,\n }));\n }, []);\n\n const scrollToBottom = () => {\n // Use double requestAnimationFrame to ensure DOM and layout have fully updated\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (scrollContainerRef.current) {\n // Scroll to the very bottom with smooth animation\n // This ensures the last message is fully visible\n const container = scrollContainerRef.current;\n container.scrollTo({\n top: container.scrollHeight,\n behavior: 'smooth'\n });\n }\n });\n });\n };\n\n useEffect(() => {\n scrollToBottom();\n }, [messages, streamMessages]);\n\n const formatDate = (date: Date): string => {\n const now = new Date();\n const diffInMilliseconds = now.getTime() - new Date(date).getTime();\n const diffInHours = diffInMilliseconds / (1000 * 60 * 60);\n \n if (diffInHours < 24) {\n if (diffInHours < 1) {\n const diffInMinutes = diffInMilliseconds / (1000 * 60);\n if (diffInMinutes < 1) {\n return 'Just now';\n }\n return `${Math.floor(diffInMinutes)} minutes ago`;\n } else {\n return `${Math.floor(diffInHours)} hours ago`;\n }\n }\n \n return new Date(date).toLocaleString('en-GB', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n });\n };\n\n const startEdit = (message: FusioniMemoryMessage) => {\n if (!message.id || message.loading || !onEditMessage) {\n return;\n }\n setEditingMessageId(message.id);\n setEditingContent(message.content ?? '');\n };\n\n const cancelEdit = () => {\n setEditingMessageId(null);\n setEditingContent('');\n };\n\n const confirmEdit = () => {\n if (!editingMessageId || !onEditMessage) {\n cancelEdit();\n return;\n }\n const updatedContent = editRef.current?.innerHTML ?? editingContent;\n if (updatedContent.trim() !== '') {\n onEditMessage({ messageId: editingMessageId, content: updatedContent });\n }\n cancelEdit();\n };\n\n useEffect(() => {\n if (!editingMessageId || !editRef.current) {\n return;\n }\n editRef.current.innerHTML = editingContent;\n editRef.current.focus();\n const selection = window.getSelection();\n if (selection) {\n const range = document.createRange();\n range.selectNodeContents(editRef.current);\n range.collapse(false);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }, [editingMessageId, editingContent]);\n\n return (\n <>\n <div className=\"fusioni-message-list\" ref={scrollContainerRef}>\n <div className=\"fusioni-messages-container\">\n {messages.length === 0 ? (\n <div className=\"fusioni-empty-messages\">\n <div className=\"fusioni-empty-messages-content\">\n <svg\n width=\"64\"\n height=\"64\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n className=\"fusioni-empty-icon\"\n >\n <path\n d=\"M21 15C21 15.5304 20.7893 16.0391 20.4142 16.4142C20.0391 16.7893 19.5304 17 19 17H7L3 21V5C3 4.46957 3.21071 3.96086 3.58579 3.58579C3.96086 3.21071 4.46957 3 5 3H19C19.5304 3 20.0391 3.21071 20.4142 3.58579C20.7893 3.96086 21 4.46957 21 5V15Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <h3>Start a conversation</h3>\n <p>Send a message to begin chatting with the AI assistant</p>\n </div>\n </div>\n ) : (\n <div className=\"fusioni-messages\">\n {messages.map((message, index) => {\n const isLastMessage = index === messages.length - 1;\n const messageKey =\n message.id ??\n `msg-fallback-${index}-${message.role}-${message.created instanceof Date ? message.created.getTime() : 0}`;\n return (\n <div key={messageKey} className=\"fusioni-message-wrapper\">\n <div className={`fusioni-message ${message.role}`}>\n <div className=\"fusioni-message-avatar\">\n {message.role === 'user' ? (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M20 21V19C20 17.9391 19.5786 16.9217 18.8284 16.1716C18.0783 15.4214 17.0609 15 16 15H8C6.93913 15 5.92172 15.4214 5.17157 16.1716C4.42143 16.9217 4 17.9391 4 19V21\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle\n cx=\"12\"\n cy=\"7\"\n r=\"4\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n </svg>\n ) : (\n <img \n src={FUSIONI_LOGO_BASE64} \n alt=\"Fusioni Logo\" \n width=\"24\" \n height=\"24\"\n />\n )}\n </div>\n \n <div className=\"fusioni-message-content\">\n \n \n <div className=\"fusioni-message-body\">\n {message.role === 'user' && editingMessageId === message.id ? (\n <div\n ref={editRef}\n className=\"fusioni-message-text\"\n contentEditable\n suppressContentEditableWarning\n spellCheck\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n cancelEdit();\n }\n }}\n />\n ) : (\n <Message\n message={message}\n showThoughts={showThoughts}\n onDelete={onDeleteMessage}\n onConfirmation={onConfirmation}\n enableButtons={enableButtons && isLastMessage}\n streamLoading={\n message.loading ? (\n <MessageStreamLoading\n streamMessages={streamMessages}\n loadingLabel={t('chat.messages.loading')}\n />\n ) : undefined\n }\n apiBaseUrl={apiBaseUrl}\n apiKey={apiKey}\n agencyId={agencyId}\n currentLanguage={currentLanguage}\n onOpenGallery={openGallery}\n />\n )}\n </div>\n\n <div className=\"fusioni-message-footer\">\n {/* <span className=\"fusioni-message-role\">\n {message.role === 'user' ? '' : 'Fusioni'}\n </span> */}\n <span className=\"fusioni-message-time\">\n {formatDate(message.created)}\n </span>\n {message.id && (onDeleteMessage || (message.role === 'user' && onEditMessage)) && (\n <div className=\"fusioni-message-actions\">\n {message.role === 'user' && editingMessageId === message.id ? (\n <>\n <button\n onClick={confirmEdit}\n className=\"fusioni-btn fusioni-btn-icon\"\n title=\"Save edit\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <polyline points=\"20 6 9 17 4 12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <button\n onClick={cancelEdit}\n className=\"fusioni-btn fusioni-btn-icon\"\n title=\"Cancel edit\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n </>\n ) : (\n <>\n {message.role === 'user' && onEditMessage && (\n <button\n onClick={() => startEdit(message)}\n className=\"fusioni-btn fusioni-btn-icon\"\n title=\"Edit message\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M12 20H21\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M16.5 3.5C16.8978 3.10218 17.4374 2.87868 18 2.87868C18.5626 2.87868 19.1022 3.10218 19.5 3.5C19.8978 3.89782 20.1213 4.43739 20.1213 5C20.1213 5.56261 19.8978 6.10218 19.5 6.5L7 19L3 20L4 16L16.5 3.5Z\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n )}\n {onDeleteMessage && (\n <button\n onClick={() => onDeleteMessage(message.id!)}\n className=\"fusioni-btn fusioni-btn-icon\"\n title=\"Delete message\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5H21\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M19 6V20C19 20.5304 18.7893 21.0391 18.4142 21.4142C18.0391 21.7893 17.5304 22 17 22H7C6.46957 22 5.96086 21.7893 5.58579 21.4142C5.21071 21.0391 5 20.5304 5 20V6H19Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n )}\n </>\n )}\n </div>\n )}\n </div>\n \n {showThoughts && message.thoughts && (\n <div className=\"fusioni-message-thoughts\">\n <details>\n <summary>Thoughts</summary>\n <p>{message.thoughts}</p>\n </details>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n <div ref={messagesEndRef} />\n </div>\n </div>\n {gallerySession &&\n typeof document !== 'undefined' &&\n createPortal(\n <ImageGallery\n key={gallerySession.key}\n images={gallerySession.images}\n initialIndex={gallerySession.index}\n theme={theme}\n onClose={() => setGallerySession(null)}\n />,\n document.body\n )}\n </>\n );\n};\n","import React, { useState, useRef, useCallback, useEffect } from 'react';\n\ninterface AudioRecorderProps {\n onRecordingComplete: (audioBlob: Blob, duration: number) => void;\n disabled?: boolean;\n className?: string;\n}\n\nexport const AudioRecorder: React.FC<AudioRecorderProps> = ({\n onRecordingComplete,\n disabled = false,\n className = ''\n}) => {\n const [isRecording, setIsRecording] = useState(false);\n const [isSupported, setIsSupported] = useState(false);\n const [recordingDuration, setRecordingDuration] = useState(0);\n const [error, setError] = useState<string | null>(null);\n \n const mediaRecorderRef = useRef<MediaRecorder | null>(null);\n const audioChunksRef = useRef<Blob[]>([]);\n const streamRef = useRef<MediaStream | null>(null);\n const timerRef = useRef<NodeJS.Timeout | null>(null);\n\n // Check microphone support\n useEffect(() => {\n const checkSupport = () => {\n const isSupported = !!(\n navigator.mediaDevices &&\n typeof navigator.mediaDevices.getUserMedia === 'function' &&\n window.isSecureContext\n );\n setIsSupported(isSupported);\n };\n\n checkSupport();\n }, []);\n\n const startTimer = useCallback(() => {\n setRecordingDuration(0);\n timerRef.current = setInterval(() => {\n setRecordingDuration(prev => prev + 1);\n }, 1000);\n }, []);\n\n const stopTimer = useCallback(() => {\n if (timerRef.current) {\n clearInterval(timerRef.current);\n timerRef.current = null;\n }\n }, []);\n\n const startRecording = useCallback(async () => {\n try {\n setError(null);\n \n if (!navigator.mediaDevices || typeof navigator.mediaDevices.getUserMedia !== 'function') {\n throw new Error('MediaDevices API is not supported in this browser');\n }\n\n if (!window.isSecureContext) {\n throw new Error('Microphone access requires a secure context (HTTPS or localhost)');\n }\n\n const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n streamRef.current = stream;\n\n const mediaRecorder = new MediaRecorder(stream);\n mediaRecorderRef.current = mediaRecorder;\n audioChunksRef.current = [];\n\n mediaRecorder.ondataavailable = (event) => {\n if (event.data.size > 0) {\n audioChunksRef.current.push(event.data);\n }\n };\n\n mediaRecorder.onstop = () => {\n const audioBlob = new Blob(audioChunksRef.current, { \n type: mediaRecorder.mimeType || 'audio/webm' \n });\n onRecordingComplete(audioBlob, recordingDuration);\n \n // Clean up\n if (streamRef.current) {\n streamRef.current.getTracks().forEach(track => track.stop());\n streamRef.current = null;\n }\n audioChunksRef.current = [];\n mediaRecorderRef.current = null;\n };\n\n mediaRecorder.start();\n setIsRecording(true);\n startTimer();\n } catch (err) {\n console.error('Error starting recording:', err);\n \n let errorMessage = 'Unable to access microphone. ';\n \n if (err instanceof Error) {\n if (err.message.includes('secure context')) {\n errorMessage += 'Please access this page over HTTPS or localhost.';\n } else if (err.message.includes('not supported')) {\n errorMessage += 'Your browser does not support microphone access.';\n } else if (err.name === 'NotAllowedError') {\n errorMessage += 'Microphone permission was denied. Please allow microphone access and try again.';\n } else if (err.name === 'NotFoundError') {\n errorMessage += 'No microphone found. Please connect a microphone and try again.';\n } else {\n errorMessage += 'Please check your microphone permissions and try again.';\n }\n }\n \n setError(errorMessage);\n }\n }, [onRecordingComplete, recordingDuration, startTimer]);\n\n const stopRecording = useCallback(() => {\n if (mediaRecorderRef.current && isRecording) {\n mediaRecorderRef.current.stop();\n setIsRecording(false);\n stopTimer();\n }\n }, [isRecording, stopTimer]);\n\n const toggleRecording = useCallback(() => {\n if (isRecording) {\n stopRecording();\n } else {\n startRecording();\n }\n }, [isRecording, startRecording, stopRecording]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n stopTimer();\n if (streamRef.current) {\n streamRef.current.getTracks().forEach(track => track.stop());\n }\n };\n }, [stopTimer]);\n\n if (!isSupported) {\n return null;\n }\n\n const formatDuration = (seconds: number): string => {\n const mins = Math.floor(seconds / 60);\n const secs = seconds % 60;\n return `${mins}:${secs.toString().padStart(2, '0')}`;\n };\n\n return (\n <div className={`fusioni-audio-recorder ${className}`}>\n <button\n onClick={toggleRecording}\n disabled={disabled}\n className={`fusioni-btn fusioni-btn-icon ${\n isRecording ? 'fusioni-btn-recording' : ''\n }`}\n title={isRecording ? 'Stop recording' : 'Start recording'}\n >\n {isRecording ? (\n <div className=\"fusioni-recording-indicator\">\n <div className=\"fusioni-recording-dot\" />\n </div>\n ) : (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M12 1C10.34 1 9 2.34 9 4V12C9 13.66 10.34 15 12 15C13.66 15 15 13.66 15 12V4C15 2.34 13.66 1 12 1Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M19 10V12C19 15.87 15.87 19 12 19C8.13 19 5 15.87 5 12V10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"12\"\n y1=\"19\"\n x2=\"12\"\n y2=\"23\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"8\"\n y1=\"23\"\n x2=\"16\"\n y2=\"23\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </button>\n \n {isRecording && (\n <div className=\"fusioni-recording-timer\">\n {formatDuration(recordingDuration)}\n </div>\n )}\n \n {error && (\n <div className=\"fusioni-audio-error\">\n <p>{error}</p>\n <button onClick={() => setError(null)}>Dismiss</button>\n </div>\n )}\n </div>\n );\n};\n","import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport {ChatInputProps} from '../types';\nimport {AudioRecorder} from './AudioRecorder';\nimport {useTranslation} from '../hooks/useTranslation';\n\nconst ChatInput: React.FC<ChatInputProps> = ({\n onSendMessage,\n onFileUpload,\n disabled = false,\n placeholder,\n enableAudioRecording = true,\n enableFileUpload = true,\n maxFileSize = 10,\n allowedFileTypes = ['image/*'],\n currentLanguage = 'en'\n }) => {\n const {t} = useTranslation(currentLanguage);\n const [message, setMessage] = useState('');\n const [isRecording, setIsRecording] = useState(false);\n const [audioPreview, setAudioPreview] = useState<string | null>(null);\n const [showAudioPreview, setShowAudioPreview] = useState(false);\n const [isProcessingAudio, setIsProcessingAudio] = useState(false);\n const [imagePreview, setImagePreview] = useState<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const adjustTextareaHeight = useCallback(() => {\n const textarea = textareaRef.current;\n if (textarea) {\n textarea.style.height = 'auto';\n textarea.style.height = Math.min(textarea.scrollHeight, 128) + 'px';\n }\n }, []);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setMessage(e.target.value);\n adjustTextareaHeight();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleSendMessage();\n }\n };\n\n const handleSendMessage = useCallback(() => {\n if (disabled || (!message.trim() && !audioPreview)) return;\n\n const content = message.trim();\n onSendMessage(content, imagePreview || undefined, audioPreview || undefined);\n\n // Reset state\n setMessage('');\n setAudioPreview(null);\n setShowAudioPreview(false);\n setImagePreview(null);\n\n // Reset textarea height\n if (textareaRef.current) {\n textareaRef.current.style.height = 'auto';\n }\n }, [message, audioPreview, imagePreview, disabled, onSendMessage]);\n\n const handleFileSelect = useCallback(async (file: File) => {\n if (!enableFileUpload) return;\n\n try {\n setIsUploading(true);\n\n // Validate file size\n // TODO handle this without throwing an error\n if (file.size > maxFileSize * 1024 * 1024) {\n throw new Error(`File size must be less than ${maxFileSize}MB`);\n }\n\n // Validate file type\n const isValidType = allowedFileTypes.some(type => {\n if (type.endsWith('/*')) {\n const category = type.split('/')[0];\n return file.type.startsWith(category + '/');\n }\n return file.type === type;\n });\n\n // TODO handle this without throwing an error\n if (!isValidType) {\n throw new Error(`File type not allowed. Allowed types: ${allowedFileTypes.join(', ')}`);\n }\n\n // Convert file to base64 (onFileUpload now returns base64 directly)\n const base64Data = await onFileUpload(file);\n console.log('File converted to base64:', base64Data);\n\n // Set preview\n setImagePreview(base64Data);\n } catch (error) {\n console.error('File upload error:', error);\n alert(error instanceof Error ? error.message : 'Failed to upload file');\n } finally {\n setIsUploading(false);\n }\n }, [enableFileUpload, maxFileSize, allowedFileTypes, onFileUpload]);\n\n const handleAudioRecorded = useCallback((audioBlob: Blob, duration: number) => {\n const reader = new FileReader();\n reader.onload = () => {\n const base64Audio = reader.result as string;\n setAudioPreview(base64Audio);\n setShowAudioPreview(true);\n };\n reader.readAsDataURL(audioBlob);\n }, []);\n\n const handleClearAudioPreview = useCallback(() => {\n setAudioPreview(null);\n setShowAudioPreview(false);\n }, []);\n\n const handleClearImagePreview = useCallback(() => {\n setImagePreview(null);\n }, []);\n\n const handleFileInputClick = () => {\n if (enableFileUpload && fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n\n // Auto-adjust textarea height on mount\n useEffect(() => {\n adjustTextareaHeight();\n }, [adjustTextareaHeight]);\n\n return (\n <div className=\"fusioni-chat-input\">\n {/* Image Preview */}\n {imagePreview && (\n <div className=\"fusioni-image-preview\">\n <div className=\"fusioni-image-preview-content\">\n <img src={imagePreview} alt=\"Preview\" className=\"fusioni-preview-image\"/>\n <button\n onClick={handleClearImagePreview}\n className=\"fusioni-btn fusioni-btn-icon fusioni-btn-danger\"\n title=\"Remove image\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M18 6L6 18M6 6L18 18\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n </div>\n )}\n\n {/* Audio Preview */}\n {showAudioPreview && audioPreview && (\n <div className=\"fusioni-audio-preview\">\n <div className=\"fusioni-audio-preview-content\">\n <div className=\"fusioni-audio-preview-header\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M12 1C10.34 1 9 2.34 9 4V12C9 13.66 10.34 15 12 15C13.66 15 15 13.66 15 12V4C15 2.34 13.66 1 12 1Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <span>Audio Preview</span>\n <button\n onClick={handleClearAudioPreview}\n className=\"fusioni-btn fusioni-btn-icon fusioni-btn-danger\"\n title=\"Remove audio\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M18 6L6 18M6 6L18 18\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n <audio\n src={audioPreview}\n controls\n className=\"fusioni-audio-preview-player\"\n preload=\"metadata\"\n >\n Your browser does not support the audio element.\n </audio>\n <p className=\"fusioni-audio-preview-text\">\n Click send to send this audio message\n </p>\n </div>\n </div>\n )}\n\n {/* Main Input */}\n <div className=\"fusioni-input-container\">\n <div className=\"fusioni-input-wrapper\">\n <textarea\n ref={textareaRef}\n value={message}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n className=\"fusioni-textarea\"\n rows={1}\n />\n\n <div className=\"fusioni-input-actions\">\n {/* File Upload */}\n {enableFileUpload && (\n <button\n onClick={handleFileInputClick}\n disabled={disabled || isUploading}\n className=\"fusioni-btn fusioni-btn-icon\"\n title=\"Upload file\"\n >\n {isUploading ? (\n <div className=\"fusioni-spinner\"/>\n ) : (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M21 15V19C21 19.5304 20.7893 20.0391 20.4142 20.4142C20.0391 20.7893 19.5304 21 19 21H5C4.46957 21 3.96086 20.7893 3.58579 20.4142C3.21071 20.0391 3 19.5304 3 19V15\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <polyline\n points=\"7,10 12,15 17,10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"12\"\n y1=\"15\"\n x2=\"12\"\n y2=\"3\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </button>\n )}\n\n {/* Audio Recording */}\n {enableAudioRecording && (\n <AudioRecorder\n onRecordingComplete={handleAudioRecorded}\n disabled={disabled}\n />\n )}\n\n {/* Send Button */}\n <button\n onClick={handleSendMessage}\n disabled={disabled || (!message.trim() && !audioPreview)}\n className={`fusioni-btn fusioni-btn-icon fusioni-btn-send ${\n audioPreview ? 'fusioni-btn-send-audio' : ''\n }`}\n title={audioPreview ? 'Send audio message' : 'Send message'}\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M22 2L11 13M22 2L15 22L11 13M22 2L2 9L11 13\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n </div>\n </div>\n\n {/* Hidden file input */}\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={allowedFileTypes.join(',')}\n onChange={(e) => {\n const file = e.target.files?.[0];\n if (file) {\n handleFileSelect(file);\n }\n }}\n style={{display: 'none'}}\n />\n </div>\n );\n};\nexport { ChatInput };\nexport default ChatInput;\n","import React, { useState, useEffect } from 'react';\nimport { Position } from '../types';\n\ninterface FloatingButtonProps {\n isOpen: boolean;\n onClick: () => void;\n position?: Position;\n primaryColor?: string;\n buttonRef?: React.RefObject<HTMLButtonElement>;\n showNotification?: boolean;\n notificationCount?: number;\n variant?: 'minimal' | 'glass' | 'solid';\n shouldDisplay?: boolean;\n}\n\nexport const FloatingButton: React.FC<FloatingButtonProps> = ({\n isOpen,\n onClick,\n position = 'bottom-right',\n primaryColor = '#6366f1',\n buttonRef,\n showNotification = false,\n notificationCount = 0,\n variant = 'glass',\n shouldDisplay = true\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n const [showAttentionSequence, setShowAttentionSequence] = useState(false);\n const [isAttentionActive, setIsAttentionActive] = useState(false);\n\n useEffect(() => {\n // Sophisticated entrance animation\n const entranceTimer = setTimeout(() => {\n setIsVisible(true);\n }, 200);\n\n // Periodic attention sequence (every 15 seconds)\n const attentionInterval = setInterval(() => {\n if (!isHovered && !isOpen) {\n setShowAttentionSequence(true);\n setIsAttentionActive(true);\n \n setTimeout(() => {\n setShowAttentionSequence(false);\n setIsAttentionActive(false);\n }, 3000);\n }\n }, 15000);\n\n return () => {\n clearTimeout(entranceTimer);\n clearInterval(attentionInterval);\n };\n }, [isHovered, isOpen]);\n const getPositionClasses = () => {\n switch (position) {\n case 'bottom-left':\n return 'fusioni-floating-button-bottom-left';\n case 'top-right':\n return 'fusioni-floating-button-top-right';\n case 'top-left':\n return 'fusioni-floating-button-top-left';\n default:\n return 'fusioni-floating-button-bottom-right';\n }\n };\n\n if (!shouldDisplay) {\n return null;\n }\n\n return (\n <button\n ref={buttonRef}\n onClick={onClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={`fusioni-floating-button fusioni-floating-button-${variant} ${getPositionClasses()} ${isVisible ? 'fusioni-floating-button-visible fusioni-floating-button-entering' : ''} ${showNotification ? 'fusioni-floating-button-notification' : ''} ${isHovered ? 'fusioni-floating-button-hovered' : ''} ${isAttentionActive ? 'fusioni-floating-button-attention-active' : ''}`}\n style={{ '--primary-color': primaryColor } as React.CSSProperties}\n aria-label={isOpen ? 'Close chat' : 'Open chat'}\n >\n \n {/* Pulsing Attention Rings */}\n <div className=\"fusioni-floating-button-attention-ring\"></div>\n <div className=\"fusioni-floating-button-attention-ring-2\"></div>\n <div className=\"fusioni-floating-button-attention-ring-3\"></div>\n\n {/* Neural Network Particle Effects */}\n <div className=\"fusioni-floating-button-neural-particles\">\n <div className=\"fusioni-neural-particle\"></div>\n <div className=\"fusioni-neural-particle\"></div>\n <div className=\"fusioni-neural-particle\"></div>\n <div className=\"fusioni-neural-particle\"></div>\n <div className=\"fusioni-neural-particle\"></div>\n <div className=\"fusioni-neural-particle\"></div>\n </div>\n\n {/* AI Brain Activity Indicator */}\n <div className=\"fusioni-floating-button-brain-activity\"></div>\n\n {/* Attention Sequence Animation */}\n {showAttentionSequence && (\n <div className=\"fusioni-floating-button-attention-sequence\">\n <div className=\"fusioni-attention-wave\"></div>\n <div className=\"fusioni-attention-wave\"></div>\n <div className=\"fusioni-attention-wave\"></div>\n </div>\n )}\n\n {/* Periodic Attention Pulse */}\n <div className=\"fusioni-floating-button-periodic-pulse\"></div>\n\n {/* Enhanced Glow Effect */}\n <div className=\"fusioni-floating-button-glow\"></div>\n\n {/* Magnetic Field Effect */}\n <div className=\"fusioni-floating-button-magnetic-field\"></div>\n\n {/* Professional Notification Indicator */}\n {showNotification && (\n <div className=\"fusioni-floating-button-indicator\">\n <div className=\"fusioni-floating-button-indicator-dot\"></div>\n </div>\n )}\n\n <div className=\"fusioni-floating-button-content\">\n {isOpen ? (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"fusioni-floating-button-icon\"\n >\n <path\n d=\"M18 6L6 18M6 6L18 18\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ) : (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"fusioni-floating-button-icon\"\n >\n <path\n d=\"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n </button>\n );\n};\n","import React, { useRef } from 'react';\nimport { Position } from '../types';\n\ninterface ChatPanelProps {\n isOpen: boolean;\n onClose: () => void;\n position?: Position;\n isFullscreen?: boolean;\n floatingButtonRef?: React.RefObject<HTMLButtonElement>;\n children: React.ReactNode;\n}\n\nexport const ChatPanel: React.FC<ChatPanelProps> = ({\n isOpen,\n onClose,\n position = 'bottom-right',\n isFullscreen = false,\n floatingButtonRef,\n children\n}) => {\n const panelRef = useRef<HTMLDivElement>(null);\n\n const getPositionClasses = () => {\n switch (position) {\n case 'bottom-left':\n return 'fusioni-chat-panel-bottom-left';\n case 'top-right':\n return 'fusioni-chat-panel-top-right';\n case 'top-left':\n return 'fusioni-chat-panel-top-left';\n default:\n return 'fusioni-chat-panel-bottom-right';\n }\n };\n\n if (!isOpen) return null;\n\n return (\n <>\n \n {/* Panel */}\n <div\n ref={panelRef}\n className={`fusioni-chat-panel ${getPositionClasses()} ${isFullscreen ? 'fusioni-chat-panel-fullscreen' : ''}`}\n >\n <div className=\"fusioni-chat-panel-content\">\n {children}\n </div>\n </div>\n </>\n );\n};\n","import React, { useState, useRef, useEffect } from 'react';\nimport { Language } from '../i18n';\nimport { useTranslation } from '../hooks/useTranslation';\n\ninterface LanguageSwitcherProps {\n currentLanguage: Language;\n onLanguageChange: (language: Language) => void;\n className?: string;\n}\n\nexport const LanguageSwitcher: React.FC<LanguageSwitcherProps> = ({\n currentLanguage,\n onLanguageChange,\n className = ''\n}) => {\n const { t, availableLanguages } = useTranslation(currentLanguage);\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const currentLang = availableLanguages.find(lang => lang.code === currentLanguage);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, []);\n\n const handleLanguageSelect = (language: Language) => {\n onLanguageChange(language);\n setIsOpen(false);\n };\n\n return (\n <div className={`fusioni-language-switcher ${className}`} ref={dropdownRef}>\n <button\n className=\"fusioni-language-button\"\n onClick={() => setIsOpen(!isOpen)}\n title={t('language.switchLanguage')}\n >\n <span className=\"fusioni-language-flag\">\n {currentLanguage === 'en' ? '🇺🇸' : '🇬🇷'}\n </span>\n <span className=\"fusioni-language-name\">\n {currentLang?.name}\n </span>\n <svg \n className={`fusioni-language-arrow ${isOpen ? 'open' : ''}`}\n width=\"12\" \n height=\"12\" \n viewBox=\"0 0 24 24\" \n fill=\"none\" \n stroke=\"currentColor\" \n strokeWidth=\"2\"\n >\n <path d=\"M6 9l6 6 6-6\"/>\n </svg>\n </button>\n\n {isOpen && (\n <div className=\"fusioni-language-dropdown\">\n {availableLanguages.map((language) => (\n <button\n key={language.code}\n className={`fusioni-language-option ${\n language.code === currentLanguage ? 'active' : ''\n }`}\n onClick={() => handleLanguageSelect(language.code)}\n >\n <span className=\"fusioni-language-flag\">\n {language.code === 'en' ? '🇺🇸' : '🇬🇷'}\n </span>\n <span className=\"fusioni-language-name\">\n {language.name}\n </span>\n {language.code === currentLanguage && (\n <svg \n className=\"fusioni-language-check\"\n width=\"16\" \n height=\"16\" \n viewBox=\"0 0 24 24\" \n fill=\"none\" \n stroke=\"currentColor\" \n strokeWidth=\"2\"\n >\n <path d=\"M20 6L9 17l-5-5\"/>\n </svg>\n )}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useTranslation } from '../hooks/useTranslation';\n\nexport interface ConfirmationDialogProps {\n isOpen: boolean;\n title: string;\n message: string;\n confirmText?: string;\n cancelText?: string;\n onConfirm: () => void;\n onCancel: () => void;\n currentLanguage?: 'en' | 'el';\n variant?: 'danger' | 'warning' | 'info';\n}\n\nexport const ConfirmationDialog: React.FC<ConfirmationDialogProps> = ({\n isOpen,\n title,\n message,\n confirmText,\n cancelText,\n onConfirm,\n onCancel,\n currentLanguage = 'en',\n variant = 'danger'\n}) => {\n const { t } = useTranslation(currentLanguage);\n\n if (!isOpen) return null;\n\n return (\n <>\n <div \n className=\"fusioni-dialog-backdrop\"\n onClick={onCancel}\n />\n <div className=\"fusioni-dialog-container\">\n <div className=\"fusioni-dialog\">\n <div className=\"fusioni-dialog-header\">\n <h3 className=\"fusioni-dialog-title\">{title}</h3>\n </div>\n <div className=\"fusioni-dialog-body\">\n <p className=\"fusioni-dialog-message\">{message}</p>\n </div>\n <div className=\"fusioni-dialog-footer\">\n <button\n onClick={onCancel}\n className=\"fusioni-btn fusioni-btn-secondary fusioni-dialog-cancel\"\n >\n {cancelText || t('common.cancel')}\n </button>\n <button\n onClick={onConfirm}\n className={`fusioni-btn fusioni-dialog-confirm fusioni-dialog-confirm-${variant}`}\n >\n {confirmText || t('common.delete')}\n </button>\n </div>\n </div>\n </div>\n </>\n );\n};\n","import {useCallback, useState} from 'react';\nimport {Conversation, FusioniMemoryMessage} from '../types';\nimport {getConversationService} from '../services/ConversationService';\nimport {getMessageService} from \"../services/MessageService\";\n\n/** Set on `extra_data` for the local user bubble before pipeline exec; used to drop it when the server echoes the turn. */\nexport const FUSIONI_SDK_OPTIMISTIC_USER = 'fusion_sdk_optimistic_user' as const;\n\nexport function isFusioniSdkOptimisticUserMessage(m: FusioniMemoryMessage): boolean {\n return m.role === 'user' && m.extra_data?.[FUSIONI_SDK_OPTIMISTIC_USER] === true;\n}\n\nexport const useChatState = (agencyId: string) => {\n const [conversations, setConversations] = useState<Conversation[]>([]);\n const [currentConversation, setCurrentConversation] = useState<Conversation | null>(null);\n const [messages, setMessages] = useState<FusioniMemoryMessage[]>([]);\n const [streamMessages, setStreamMessages] = useState<string[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n\n const loadConversations = useCallback(async (page: number = 0, size: number = 25) => {\n if (!agencyId) return;\n\n try {\n setIsLoading(true);\n const conversationService = getConversationService();\n const conversations = await conversationService.getConversationsByAgency(agencyId, page, size);\n console.log(\"Loaded conversations\", conversations);\n setConversations(conversations);\n\n } catch (error) {\n console.error('Failed to load conversations:', error);\n } finally {\n setIsLoading(false);\n }\n }, [agencyId]);\n\n const loadMessages = useCallback(async (conversationId: string) => {\n if (!agencyId) return;\n\n try {\n setIsLoading(true);\n const messageService = getMessageService();\n const messages = await messageService.getMessages(conversationId, agencyId);\n \n // Ensure loaded messages don't have shouldAnimate flag (only new pipeline exec responses should animate)\n const messagesWithoutAnimation = messages.map(msg => ({\n ...msg,\n shouldAnimate: false\n }));\n \n setMessages(messagesWithoutAnimation);\n\n } catch (error) {\n console.error('Failed to load messages:', error);\n } finally {\n setIsLoading(false);\n }\n }, [agencyId]);\n\n const addMessage = useCallback((message: FusioniMemoryMessage) => {\n setMessages(prev => [...prev, message]);\n }, []);\n\n const updateMessage = useCallback((messageId: string, updates: Partial<FusioniMemoryMessage>) => {\n setMessages(prev => prev.map(msg => \n msg.id === messageId ? { ...msg, ...updates } : msg\n ));\n }, []);\n\n const removeMessage = useCallback((messageId: string) => {\n setMessages(prev => prev.filter(msg => msg.id !== messageId));\n }, []);\n\n /** Removes local user rows tagged with {@link FUSIONI_SDK_OPTIMISTIC_USER} (same idea as removing the loading row by id). */\n const removeOptimisticUserMessages = useCallback(() => {\n setMessages((prev) => prev.filter((m) => !isFusioniSdkOptimisticUserMessage(m)));\n }, []);\n\n /** Keeps messages up to and including `messageId` (used when editing a prior user turn). */\n const truncateMessagesAt = useCallback((messageId: string) => {\n setMessages((prev) => {\n const index = prev.findIndex((m) => m.id === messageId);\n if (index === -1) {\n return prev;\n }\n return prev.slice(0, index + 1);\n });\n }, []);\n\n const addConversation = useCallback((conversation: Conversation) => {\n setConversations(prev => [conversation, ...prev]);\n }, []);\n\n const removeConversation = useCallback((conversationId: string) => {\n setConversations(prev => prev.filter(conv => conv.id !== conversationId));\n if (currentConversation?.id === conversationId) {\n setCurrentConversation(null);\n setMessages([]);\n }\n }, [currentConversation]);\n\n const updateConversation = useCallback((conversationId: string | null, updatedConversation: Conversation) => {\n setConversations(prev => prev.map(conv => \n conv.id === conversationId ? updatedConversation : conv\n ));\n }, []);\n\n const clearStreamMessages = useCallback(() => {\n setStreamMessages([]);\n }, []);\n\n const clearMessages = useCallback(() => {\n setMessages([]);\n }, []);\n\n return {\n conversations,\n currentConversation,\n messages,\n streamMessages,\n isLoading,\n setCurrentConversation,\n setStreamMessages,\n addMessage,\n updateMessage,\n removeMessage,\n removeOptimisticUserMessages,\n truncateMessagesAt,\n addConversation,\n updateConversation,\n removeConversation,\n loadConversations,\n loadMessages,\n clearStreamMessages,\n clearMessages\n };\n};\n","import { useEffect, useRef, useCallback } from 'react';\nimport { getApiClient } from '../services/ApiClient';\n\nexport const useSSE = (agencyId: string, onMessage: (data: any) => void, isConnected: boolean = true, accessToken?: string) => {\n const eventSourceRef = useRef<EventSource | null>(null);\n const onMessageRef = useRef(onMessage);\n\n // Keep the callback ref up to date\n useEffect(() => {\n onMessageRef.current = onMessage;\n }, [onMessage]);\n\n // Stable callback that uses the ref\n const stableOnMessage = useCallback((data: any) => {\n onMessageRef.current(data);\n }, []);\n\n useEffect(() => {\n if (!agencyId || !isConnected) {\n // Disconnect if not connected or no agency ID\n if (eventSourceRef.current) {\n console.log('Disconnecting SSE (panel closed or no agency ID)...');\n eventSourceRef.current.close();\n eventSourceRef.current = null;\n }\n return;\n }\n\n // Only connect if we don't already have a connection\n if (eventSourceRef.current) {\n return;\n }\n\n try {\n const apiClient = getApiClient();\n if (!apiClient) {\n console.error('API client not initialized for SSE connection');\n return;\n }\n \n // Update access token if provided\n if (accessToken) {\n apiClient.setAccessToken(accessToken);\n }\n \n console.log('Connecting to SSE (panel opened)...');\n const eventSource = apiClient.connectToSSE(agencyId, stableOnMessage);\n eventSourceRef.current = eventSource;\n\n eventSource.onopen = () => {\n console.log('SSE connection opened');\n };\n\n eventSource.onerror = (error) => {\n console.error('SSE connection error:', error);\n // Close the connection on error\n if (eventSourceRef.current) {\n eventSourceRef.current.close();\n eventSourceRef.current = null;\n }\n };\n\n } catch (error) {\n console.error('Failed to connect to SSE:', error);\n }\n }, [agencyId, stableOnMessage, isConnected, accessToken]);\n\n // Cleanup effect\n useEffect(() => {\n return () => {\n if (eventSourceRef.current) {\n console.log('Disconnecting SSE...');\n eventSourceRef.current.close();\n eventSourceRef.current = null;\n }\n };\n }, []);\n\n return eventSourceRef.current;\n};\n","import { useState, useEffect } from 'react';\nimport { Theme } from '../types';\n\nconst THEME_STORAGE_KEY = 'fusioni-chat-theme';\n\nexport const useTheme = (initialTheme?: Theme) => {\n const [currentTheme, setCurrentTheme] = useState<'light' | 'dark'>('light');\n const [isManualOverride, setIsManualOverride] = useState(false);\n\n // Load theme from localStorage on initialization\n useEffect(() => {\n try {\n const savedTheme = localStorage.getItem(THEME_STORAGE_KEY);\n if (savedTheme === 'light' || savedTheme === 'dark') {\n setCurrentTheme(savedTheme);\n setIsManualOverride(true);\n return;\n }\n } catch (error) {\n console.warn('Failed to load theme from localStorage:', error);\n }\n }, []);\n\n const toggleTheme = () => {\n const newTheme = currentTheme === 'light' ? 'dark' : 'light';\n setCurrentTheme(newTheme);\n setIsManualOverride(true);\n \n // Save to localStorage\n try {\n localStorage.setItem(THEME_STORAGE_KEY, newTheme);\n } catch (error) {\n console.warn('Failed to save theme to localStorage:', error);\n }\n };\n\n useEffect(() => {\n // Check if we have a saved theme first\n const savedTheme = localStorage.getItem(THEME_STORAGE_KEY);\n if (savedTheme === 'light' || savedTheme === 'dark') {\n return; // Don't override saved theme\n }\n\n if (isManualOverride) return; // Don't auto-update if user manually changed theme\n\n const updateTheme = () => {\n if (initialTheme === 'auto') {\n // Check system preference\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n setCurrentTheme(prefersDark ? 'dark' : 'light');\n } else if (initialTheme === 'dark' || initialTheme === 'light') {\n setCurrentTheme(initialTheme);\n } else {\n // Default to light theme\n setCurrentTheme('light');\n }\n };\n\n updateTheme();\n\n if (initialTheme === 'auto') {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleChange = () => updateTheme();\n \n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }\n }, [initialTheme, isManualOverride]);\n\n return { \n theme: currentTheme, \n toggleTheme,\n isManualOverride \n };\n};\n\n// Utility function to clear saved theme (useful for debugging or reset)\nexport const clearSavedTheme = () => {\n try {\n localStorage.removeItem(THEME_STORAGE_KEY);\n } catch (error) {\n console.warn('Failed to clear theme from localStorage:', error);\n }\n};\n","import { useEffect, useState } from 'react';\n\n/** Matches `index.css` mobile breakpoint for chat layout. */\nconst MOBILE_MEDIA_QUERY = '(max-width: 768px)';\n\nexport function useIsMobileLayout(): boolean {\n const [isMobile, setIsMobile] = useState(() => {\n if (typeof window === 'undefined') return false;\n return window.matchMedia(MOBILE_MEDIA_QUERY).matches;\n });\n\n useEffect(() => {\n const mq = window.matchMedia(MOBILE_MEDIA_QUERY);\n const onChange = () => setIsMobile(mq.matches);\n onChange();\n mq.addEventListener('change', onChange);\n return () => mq.removeEventListener('change', onChange);\n }, []);\n\n return isMobile;\n}\n","import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport {ChatWidgetProps, Conversation, FusioniMemoryMessage, FusioniSDKConfig} from '../types';\nimport {initializeApiClient} from '../services/ApiClient';\nimport {getConversationService} from '../services/ConversationService';\nimport {getPipelineService} from '../services/PipelineService';\nimport {getMessageService} from '../services/MessageService';\nimport {getSDKClientService} from '../services/SDKClientService';\nimport {ConversationList} from './ConversationList';\nimport {MessageList} from './MessageList';\nimport {ChatInput} from './ChatInput';\nimport {FloatingButton} from './FloatingButton';\nimport {ChatPanel} from './ChatPanel';\nimport {LanguageSwitcher} from './LanguageSwitcher';\nimport {ConfirmationDialog} from './ConfirmationDialog';\nimport {FUSIONI_SDK_OPTIMISTIC_USER, useChatState} from '../hooks/useChatState';\nimport {useSSE} from '../hooks/useSSE';\nimport {useTheme} from '../hooks/useTheme';\nimport {useTranslation} from '../hooks/useTranslation';\nimport {useIsMobileLayout} from '../hooks/useIsMobileLayout';\nimport '../styles/index.css';\n\nexport const ChatWidget: React.FC<ChatWidgetProps> = ({\n config,\n onMessageSent,\n onMessageReceived,\n onConversationCreated,\n onConversationDeleted,\n onError\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isConversationListOpen, setIsConversationListOpen] = useState(false);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [mergedConfig, setMergedConfig] = useState<FusioniSDKConfig | null>(null);\n const [isConfigReady, setIsConfigReady] = useState(false);\n const [hasConfigError, setHasConfigError] = useState(false);\n const [conversationToDelete, setConversationToDelete] = useState<string | null>(null);\n const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false);\n const [messageToDelete, setMessageToDelete] = useState<string | null>(null);\n const [isDeleteMessageDialogOpen, setIsDeleteMessageDialogOpen] = useState(false);\n \n // Refs\n const floatingButtonRef = useRef<HTMLButtonElement>(null);\n \n // Translation and language management - use merged config or fallback to user config\n const { t, currentLanguage, changeLanguage } = useTranslation(mergedConfig?.language || config.language || 'en');\n \n const {\n conversations,\n currentConversation,\n messages,\n streamMessages,\n setCurrentConversation,\n setStreamMessages,\n addMessage,\n updateMessage,\n removeMessage,\n removeOptimisticUserMessages,\n truncateMessagesAt,\n addConversation,\n updateConversation,\n removeConversation,\n loadConversations,\n loadMessages,\n clearMessages\n } = useChatState(mergedConfig?.agencyId || config.agencyId);\n\n const { theme, toggleTheme } = useTheme(mergedConfig?.theme || config.theme);\n const isMobileLayout = useIsMobileLayout();\n \n // Initialize API client and fetch server configuration\n useEffect(() => {\n const initializeAndFetchConfig = async () => {\n try {\n // Initialize API client first\n initializeApiClient(config.apiBaseUrl, config.accessToken);\n \n // Fetch server configuration if agencyId is available\n if (config.agencyId) {\n try {\n const sdkClientService = getSDKClientService();\n const serverConfig = await sdkClientService.getClientConfig(config.agencyId);\n \n if (serverConfig) {\n // Merge server config with user config\n const merged = sdkClientService.mergeConfig(config, serverConfig);\n setMergedConfig(merged);\n setHasConfigError(false);\n } else {\n // If no server config, use user config as-is (no error, just no data)\n setMergedConfig(config);\n setHasConfigError(false);\n }\n } catch (configError) {\n // If fetching config fails, mark as error and hide FloatingButton\n console.warn('Failed to fetch server configuration, using user config:', configError);\n setHasConfigError(true);\n setMergedConfig(config);\n }\n } else {\n setMergedConfig(config);\n setHasConfigError(false);\n }\n \n // Mark config as ready after fetching (or if no fetch needed)\n setIsConfigReady(true);\n } catch (err) {\n const error = new Error(t('chat.errors.failedToInitialize'));\n onError?.(error);\n setError(t('chat.errors.failedToInitialize'));\n // Still set config and mark as ready so the widget can render with user config\n setMergedConfig(config);\n setIsConfigReady(true);\n }\n };\n \n initializeAndFetchConfig().then();\n\n }, [config, onError, t]);\n\n // Load initial conversations\n useEffect(() => {\n if (mergedConfig?.agencyId) {\n loadConversations().then();\n }\n }, [mergedConfig?.agencyId, loadConversations]);\n\n // SSE connection for real-time updates - only when a chat panel is open\n const eventSource = useSSE(mergedConfig?.agencyId || config.agencyId, (data) => {\n // Same as fusioni-web chat.component: latest SSE line replaces stream (single loading row updates)\n if (data?.data != null && String(data.data).trim() !== '') {\n setStreamMessages([String(data.data)]);\n }\n }, isOpen, mergedConfig?.accessToken || config.accessToken);\n\n // Cleanup: Close a chat panel when component unmounts\n useEffect(() => {\n return () => {\n setIsOpen(false);\n };\n }, []);\n\n const handleToggleChat = useCallback(() => {\n setIsOpen(prev => !prev);\n }, []);\n\n const handleToggleConversationList = useCallback(() => {\n setIsConversationListOpen(prev => !prev);\n }, []);\n\n const handleToggleFullscreen = useCallback(() => {\n setIsFullscreen(prev => !prev);\n }, []);\n\n const handleCreateConversation = useCallback(() => {\n if (!mergedConfig) return;\n \n // Create a new conversation with null ID - will be created on server when first message is sent\n const newConversation: Conversation = {\n id: null,\n title: t('chat.conversations.newConversation'),\n agency_id: mergedConfig.agencyId,\n messages: []\n };\n\n addConversation(newConversation);\n setCurrentConversation(newConversation);\n \n // Clear messages when switching to new conversation\n clearMessages();\n setStreamMessages([]);\n \n // Auto-hide conversation list when a new conversation is created\n setIsConversationListOpen(false);\n \n onConversationCreated?.(newConversation);\n }, [mergedConfig, addConversation, setCurrentConversation, clearMessages, onConversationCreated, t]);\n\n const handleSelectConversation = useCallback(async (conversation: Conversation) => {\n try {\n setIsLoading(true);\n \n // Clear messages immediately when switching conversations\n clearMessages();\n setStreamMessages([]);\n \n setCurrentConversation(conversation);\n \n // Auto-hide conversation list when a conversation is selected\n setIsConversationListOpen(false);\n \n if (conversation.id) {\n await loadMessages(conversation.id);\n }\n } catch (err) {\n const error = new Error(t('chat.errors.failedToLoadConversation'));\n onError?.(error);\n setError(t('chat.errors.failedToLoadConversation'));\n } finally {\n setIsLoading(false);\n }\n }, [setCurrentConversation, loadMessages, clearMessages, onError]);\n\n const handleDeleteConversation = useCallback((conversationId: string) => {\n setConversationToDelete(conversationId);\n setIsDeleteDialogOpen(true);\n }, []);\n\n const confirmDeleteConversation = useCallback(async () => {\n if (!conversationToDelete) return;\n \n try {\n setIsLoading(true);\n const conversationService = getConversationService();\n await conversationService.deleteConversation(conversationToDelete);\n \n removeConversation(conversationToDelete);\n if (currentConversation?.id === conversationToDelete) {\n setCurrentConversation(null);\n clearMessages();\n setStreamMessages([]);\n }\n onConversationDeleted?.(conversationToDelete);\n \n // Close dialog\n setIsDeleteDialogOpen(false);\n setConversationToDelete(null);\n } catch (err) {\n const error = new Error(t('chat.errors.failedToDeleteConversation'));\n onError?.(error);\n setError(t('chat.errors.failedToDeleteConversation'));\n // Close dialog even on error\n setIsDeleteDialogOpen(false);\n setConversationToDelete(null);\n } finally {\n setIsLoading(false);\n }\n }, [conversationToDelete, removeConversation, currentConversation, setCurrentConversation, clearMessages, setStreamMessages, onConversationDeleted, onError, t]);\n\n const cancelDeleteConversation = useCallback(() => {\n setIsDeleteDialogOpen(false);\n setConversationToDelete(null);\n }, []);\n\n const handleSendMessage = useCallback(async (\n content: string, \n image?: string, \n audio?: string,\n messageId?: string | null\n ) => {\n if (!mergedConfig) return;\n \n // Debug logging for conversation state\n console.log('🔍 ChatWidget.handleSendMessage - Starting message send:', {\n currentConversation: currentConversation,\n conversationId: currentConversation?.id,\n content: content?.substring(0, 100) + (content?.length > 100 ? '...' : ''),\n hasImage: !!image,\n hasAudio: !!audio,\n agencyId: mergedConfig.agencyId\n });\n\n if (!currentConversation || (!content.trim() && !audio)) {\n console.warn('⚠️ ChatWidget.handleSendMessage - Early return:', {\n hasCurrentConversation: !!currentConversation,\n hasContent: !!content?.trim(),\n hasAudio: !!audio\n });\n return;\n }\n\n try {\n setIsLoading(true);\n\n let conversationId = currentConversation.id;\n \n // If this is a new conversation (null ID), create it on the server first\n if (!conversationId) {\n console.log('🔍 ChatWidget.handleSendMessage - Creating server conversation for new conversation:', {\n agencyId: mergedConfig.agencyId\n });\n\n const conversationService = getConversationService();\n conversationId = await conversationService.createConversation({\n title: t('chat.conversations.newConversation'),\n agency_id: mergedConfig.agencyId,\n });\n\n console.log('🔍 ChatWidget.handleSendMessage - Server conversation created:', {\n conversationId: conversationId,\n conversationIdType: typeof conversationId\n });\n\n // Update the conversation with the real server ID\n const updatedConversation = {\n ...currentConversation,\n id: conversationId\n };\n \n // Update the conversation in the list and set as current\n updateConversation(updatedConversation.id, updatedConversation);\n setCurrentConversation(updatedConversation);\n \n console.log('🔍 ChatWidget.handleSendMessage - Conversation ID updated:', {\n conversationId: conversationId,\n updatedConversation: updatedConversation\n });\n }\n\n // Clear stream messages for new conversation\n setStreamMessages([]);\n \n let userMessage: FusioniMemoryMessage | null = null;\n if (!messageId) {\n const userExtra: Record<string, unknown> = {[FUSIONI_SDK_OPTIMISTIC_USER]: true};\n if (image) {\n userExtra.image_ref = image;\n userExtra.image_base64 = true;\n } else if (audio) {\n userExtra.audio_ref = audio;\n userExtra.audio_base64 = true;\n }\n\n // Add user message (tagged so we can remove it from the list when the server returns the persisted turn)\n userMessage = {\n agency_id: mergedConfig.agencyId,\n conversation_id: conversationId,\n shouldAnimate: false,\n role: 'user',\n content: content.trim(),\n mem_type: 'short',\n keywords: [],\n thoughts: null,\n created: new Date(),\n loading: false,\n extra_data: userExtra as FusioniMemoryMessage['extra_data']\n };\n\n addMessage(userMessage);\n } else {\n // Match Angular behavior: keep messages only up to edited user turn.\n truncateMessagesAt(messageId);\n }\n\n // Add a loading message (UI: logo + Spotlight in Message; no plain-text bubble like Angular)\n const loadingMessage: FusioniMemoryMessage = {\n id: `loading-${Date.now()}`,\n agency_id: mergedConfig.agencyId,\n shouldAnimate: false,\n conversation_id: conversationId,\n role: 'assistant',\n content: '',\n mem_type: 'short',\n keywords: [],\n thoughts: null,\n created: new Date(),\n loading: true,\n has_error: false\n };\n\n addMessage(loadingMessage);\n if (userMessage) {\n onMessageSent?.(userMessage);\n }\n\n // Debug logging before pipeline execution\n const pipelineRequest = {\n conversation_id: conversationId,\n agency_id: mergedConfig.agencyId,\n inp: content || (audio ? `Audio message` : ''),\n image,\n audio,\n message_id: messageId\n };\n \n console.log('🔍 ChatWidget.handleSendMessage - About to call executePipeline:', {\n conversationId: conversationId,\n conversationIdType: typeof conversationId,\n conversationIdLength: conversationId?.length,\n isNewConversation: !conversationId,\n pipelineRequest: pipelineRequest,\n currentConversation: currentConversation\n });\n\n // Execute pipeline - this calls /pipeline/${agency_id}/exec\n const pipelineService = getPipelineService();\n const response = await pipelineService.executePipeline(pipelineRequest);\n\n // Remove loading message and add response messages\n removeMessage(loadingMessage.id!);\n\n // Server usually echoes the user turn in `response.messages`; drop the optimistic local row (not keyed by id)\n const serverIncludesUserTurn =\n response.messages?.some((m) => m.role === 'user') ?? false;\n if (serverIncludesUserTurn) {\n removeOptimisticUserMessages();\n // Edit flow keeps the local edited user row until pipeline returns.\n // Drop that local row when server echoes the persisted user turn.\n if (messageId) {\n removeMessage(messageId);\n }\n }\n\n // Only trigger typing effect for messages received from /pipeline/${agency_id}/exec response\n if (response.messages && response.messages.length > 0) {\n response.messages.forEach(message => {\n // Mark assistant messages from pipeline exec response as needing animation\n const messageWithAnimation = {\n ...message,\n shouldAnimate: message.role === 'assistant' && !message.loading\n };\n addMessage(messageWithAnimation);\n onMessageReceived?.(messageWithAnimation);\n });\n }\n\n // Reload conversations to update titles\n loadConversations();\n } catch (err) {\n const error = new Error(t('chat.errors.failedToSendMessage'));\n onError?.(error);\n setError(t('chat.errors.failedToSendMessage'));\n \n // Update loading message with error\n const loadingMessages = messages.filter(m => m.loading);\n if (loadingMessages.length > 0) {\n const loadingMessage = loadingMessages[0];\n updateMessage(loadingMessage.id!, {\n ...loadingMessage,\n loading: false,\n has_error: true,\n content: t('chat.messages.error')\n });\n }\n } finally {\n setIsLoading(false);\n }\n }, [\n currentConversation,\n mergedConfig,\n messages,\n addMessage,\n removeMessage,\n removeOptimisticUserMessages,\n truncateMessagesAt,\n updateMessage,\n updateConversation,\n setCurrentConversation,\n loadConversations,\n onMessageSent,\n onMessageReceived,\n onError\n ]);\n\n const handleDeleteMessage = useCallback((messageId: string) => {\n setMessageToDelete(messageId);\n setIsDeleteMessageDialogOpen(true);\n }, []);\n\n const handleEditMessage = useCallback((payload: { messageId: string; content: string }) => {\n updateMessage(payload.messageId, { content: payload.content });\n handleSendMessage(payload.content, undefined, undefined, payload.messageId);\n }, [updateMessage, handleSendMessage]);\n\n const confirmDeleteMessage = useCallback(async () => {\n if (!messageToDelete || !mergedConfig) return;\n \n try {\n const messageService = getMessageService();\n await messageService.deleteMessage(messageToDelete, mergedConfig.agencyId);\n removeMessage(messageToDelete);\n \n // Close dialog\n setIsDeleteMessageDialogOpen(false);\n setMessageToDelete(null);\n } catch (err) {\n const error = new Error(t('chat.errors.failedToDeleteMessage'));\n onError?.(error);\n setError(t('chat.errors.failedToDeleteMessage'));\n // Close dialog even on error\n setIsDeleteMessageDialogOpen(false);\n setMessageToDelete(null);\n }\n }, [messageToDelete, mergedConfig, removeMessage, onError, t]);\n\n const cancelDeleteMessage = useCallback(() => {\n setIsDeleteMessageDialogOpen(false);\n setMessageToDelete(null);\n }, []);\n\n const handleConfirmation = useCallback(async (result: { confirmed: 'Confirmed' | 'NotConfirmed'; key?: string }) => {\n if (!mergedConfig || !currentConversation) return;\n\n try {\n setIsLoading(true);\n\n const conversationId = currentConversation.id;\n if (!conversationId) {\n console.warn('Cannot handle confirmation: conversation has no ID');\n return;\n }\n\n // Create a working message\n const workingMessage: FusioniMemoryMessage = {\n id: `loading-${Date.now()}`,\n shouldAnimate: false,\n agency_id: mergedConfig.agencyId,\n conversation_id: conversationId,\n role: 'assistant',\n content: '',\n mem_type: 'short',\n keywords: [],\n thoughts: null,\n created: new Date(),\n loading: true,\n has_error: false\n };\n\n addMessage(workingMessage);\n\n const confirmed = 'Confirmed';\n const notConfirmingMessage = t('common.no');\n\n // Set up context\n const ctx: Record<string, string> = {};\n if (result.key && result.confirmed === confirmed) {\n ctx[result.key] = confirmed;\n }\n\n // Execute pipeline with context - this calls /pipeline/${agency_id}/exec\n const pipelineService = getPipelineService();\n const pipelineRequest = {\n conversation_id: conversationId,\n agency_id: mergedConfig.agencyId,\n context: Object.keys(ctx).length > 0 ? ctx : null,\n inp: result.confirmed !== confirmed ? notConfirmingMessage : null\n };\n\n const response = await pipelineService.executePipeline(pipelineRequest);\n\n // Remove working message and add response messages\n removeMessage(workingMessage.id!);\n \n // Only trigger typing effect for messages received from /pipeline/${agency_id}/exec response\n if (response.messages && response.messages.length > 0) {\n response.messages.forEach(message => {\n // Mark assistant messages from pipeline exec response as needing animation\n const messageWithAnimation = {\n ...message,\n shouldAnimate: message.role === 'assistant' && !message.loading\n };\n addMessage(messageWithAnimation);\n onMessageReceived?.(messageWithAnimation);\n });\n }\n\n // Reload conversations to update titles\n loadConversations();\n } catch (err) {\n const error = new Error(t('chat.errors.failedToSendMessage'));\n onError?.(error);\n setError(t('chat.errors.failedToSendMessage'));\n \n // Update working message with error\n const loadingMessages = messages.filter(m => m.loading);\n if (loadingMessages.length > 0) {\n const loadingMessage = loadingMessages[0];\n updateMessage(loadingMessage.id!, {\n ...loadingMessage,\n loading: false,\n has_error: true,\n content: t('chat.messages.error')\n });\n }\n } finally {\n setIsLoading(false);\n }\n }, [\n mergedConfig,\n currentConversation,\n messages,\n addMessage,\n removeMessage,\n updateMessage,\n loadConversations,\n onMessageReceived,\n onError,\n t\n ]);\n\n const handleFileUpload = useCallback(async (file: File): Promise<string> => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n \n reader.onload = () => {\n const base64String = reader.result as string;\n resolve(base64String);\n };\n \n reader.onerror = () => {\n const error = new Error(t('chat.errors.failedToUploadFile'));\n onError?.(error);\n setError(t('chat.errors.failedToUploadFile'));\n reject(error);\n };\n \n reader.readAsDataURL(file);\n });\n }, [onError]);\n\n // Don't render until config is ready\n if (!isConfigReady || !mergedConfig) {\n return null;\n }\n\n if (error) {\n return (\n <div className=\"fusioni-chat-error\">\n <p>{t('common.error')}: {error}</p>\n <button onClick={() => setError(null)}>{t('chat.errors.retry')}</button>\n </div>\n );\n }\n\n // Debug: Log the primary color and button variant being applied\n console.log('Primary color being applied:', mergedConfig.primaryColor || '#6366f1');\n console.log('Button variant being applied:', mergedConfig.buttonVariant || 'glass');\n\n return (\n <div \n className={`fusioni-chat-widget ${theme}`}\n style={{ '--primary-color': mergedConfig.primaryColor || '#6366f1' } as React.CSSProperties}\n >\n \n <FloatingButton\n isOpen={isOpen}\n onClick={handleToggleChat}\n position={mergedConfig.position || 'bottom-right'}\n primaryColor={mergedConfig.primaryColor}\n buttonRef={floatingButtonRef}\n variant={mergedConfig.buttonVariant || 'glass'}\n shouldDisplay={!hasConfigError && (!isMobileLayout || !isOpen)}\n />\n \n {isOpen && (\n <ChatPanel\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n position={mergedConfig.position || 'bottom-right'}\n isFullscreen={isFullscreen}\n floatingButtonRef={floatingButtonRef}\n >\n <div className=\"fusioni-chat-container\">\n {mergedConfig.showConversationList !== false && (\n <>\n <div \n className={`fusioni-conversation-backdrop ${isConversationListOpen ? 'open' : ''}`}\n onClick={() => setIsConversationListOpen(false)}\n />\n <ConversationList\n conversations={conversations}\n selectedConversationId={currentConversation?.id || undefined}\n onSelectConversation={handleSelectConversation}\n onDeleteConversation={handleDeleteConversation}\n onCreateConversation={handleCreateConversation}\n isOpen={isConversationListOpen}\n currentLanguage={currentLanguage}\n />\n </>\n )}\n \n <div className=\"fusioni-chat-main\">\n <div className=\"fusioni-chat-main-header\">\n {mergedConfig.showConversationList !== false ? (\n <button\n type=\"button\"\n onClick={handleToggleConversationList}\n className={`fusioni-conversation-toggle ${isConversationListOpen ? 'open' : ''}`}\n >\n <svg className=\"fusioni-conversation-toggle-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M3 12h18M3 6h18M3 18h18\"/>\n </svg>\n {t('chat.conversations.title')}\n </button>\n ) : (\n <span className=\"fusioni-chat-main-header-title\">{t('chat.title')}</span>\n )}\n <div className=\"fusioni-header-actions\">\n {isMobileLayout && (\n <button\n type=\"button\"\n onClick={() => setIsOpen(false)}\n className=\"fusioni-btn fusioni-btn-icon fusioni-chat-toolbar-close-mobile\"\n title={t('common.close')}\n aria-label={t('common.close')}\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6L18 18\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n </button>\n )}\n <button\n type=\"button\"\n onClick={toggleTheme}\n className=\"fusioni-btn fusioni-btn-icon\"\n title={theme === 'dark' ? t('chat.theme.light') : t('chat.theme.dark')}\n >\n {theme === 'dark' ? (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"5\"/>\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"/>\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"/>\n <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"/>\n <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"/>\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"/>\n <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"/>\n <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"/>\n <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"/>\n </svg>\n ) : (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"/>\n </svg>\n )}\n </button>\n <button\n type=\"button\"\n onClick={handleToggleFullscreen}\n className=\"fusioni-btn fusioni-btn-icon\"\n title={isFullscreen ? t('chat.fullscreen.exit') : t('chat.fullscreen.enter')}\n >\n {isFullscreen ? (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M8 3V5M8 3H5M8 3L3 8M16 3V5M16 3H19M16 3L21 8M8 21V19M8 21H5M8 21L3 16M16 21V19M16 21H19M16 21L21 16\"/>\n </svg>\n ) : (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M8 3H5C4.46957 3 3.96086 3.21071 3.58579 3.58579C3.21071 3.96086 3 4.46957 3 5V8M21 8V5C21 4.46957 20.7893 3.96086 20.4142 3.58579C20.0391 3.21071 19.5304 3 19 3H16M16 21H19C19.5304 21 20.0391 20.7893 20.4142 20.4142C20.7893 20.0391 21 19.5304 21 19V16M3 16V19C3 19.5304 3.21071 20.0391 3.58579 20.4142C3.96086 20.7893 4.46957 21 5 21H8\"/>\n </svg>\n )}\n </button>\n <LanguageSwitcher\n currentLanguage={currentLanguage}\n onLanguageChange={changeLanguage}\n />\n </div>\n </div>\n \n {currentConversation ? (\n <>\n <MessageList\n messages={messages}\n streamMessages={streamMessages}\n showThoughts={false}\n onDeleteMessage={handleDeleteMessage}\n onEditMessage={handleEditMessage}\n onConfirmation={handleConfirmation}\n enableButtons={!isLoading}\n apiBaseUrl={mergedConfig.apiBaseUrl}\n apiKey={mergedConfig.accessToken}\n agencyId={mergedConfig.agencyId}\n currentLanguage={currentLanguage}\n theme={theme}\n />\n <ChatInput\n onSendMessage={handleSendMessage}\n onFileUpload={handleFileUpload}\n disabled={isLoading}\n placeholder={t('chat.input.placeholder')}\n enableAudioRecording={mergedConfig.enableAudioRecording !== false}\n enableFileUpload={mergedConfig.enableFileUpload !== false}\n maxFileSize={mergedConfig.maxFileSize || 10}\n allowedFileTypes={mergedConfig.allowedFileTypes || ['image/*']}\n currentLanguage={currentLanguage}\n />\n </>\n ) : (\n <div className=\"fusioni-chat-welcome\">\n <div className=\"fusioni-chat-welcome-content\">\n <h3>{t('chat.welcome.title')}</h3>\n <p>{t('chat.welcome.description')}</p>\n <button \n onClick={handleCreateConversation}\n disabled={isLoading}\n className=\"fusioni-btn fusioni-btn-primary\"\n >\n {isLoading ? t('chat.welcome.creating') : t('chat.welcome.startButton')}\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n </ChatPanel>\n )}\n\n {/* Delete Conversation Confirmation Dialog */}\n <ConfirmationDialog\n isOpen={isDeleteDialogOpen}\n title={t('chat.conversations.deleteConfirm.title')}\n message={t('chat.conversations.deleteConfirm.message')}\n confirmText={t('chat.conversations.deleteConfirm.confirm')}\n cancelText={t('chat.conversations.deleteConfirm.cancel')}\n onConfirm={confirmDeleteConversation}\n onCancel={cancelDeleteConversation}\n currentLanguage={currentLanguage}\n variant=\"danger\"\n />\n\n {/* Delete Message Confirmation Dialog */}\n <ConfirmationDialog\n isOpen={isDeleteMessageDialogOpen}\n title={t('chat.messages.deleteConfirm.title')}\n message={t('chat.messages.deleteConfirm.message')}\n confirmText={t('chat.messages.deleteConfirm.confirm')}\n cancelText={t('chat.messages.deleteConfirm.cancel')}\n onConfirm={confirmDeleteMessage}\n onCancel={cancelDeleteMessage}\n currentLanguage={currentLanguage}\n variant=\"danger\"\n />\n </div>\n );\n};\n","import React, { useRef, useCallback } from 'react';\n\ninterface FileUploadProps {\n onFileSelect: (file: File) => void;\n accept?: string;\n maxSize?: number; // in MB\n disabled?: boolean;\n className?: string;\n}\n\nexport const FileUpload: React.FC<FileUploadProps> = ({\n onFileSelect,\n accept = 'image/*',\n maxSize = 10,\n disabled = false,\n className = ''\n}) => {\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const handleFileChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (file) {\n // Validate file size\n if (file.size > maxSize * 1024 * 1024) {\n alert(`File size must be less than ${maxSize}MB`);\n return;\n }\n\n onFileSelect(file);\n }\n\n // Reset input value to allow selecting the same file again\n if (fileInputRef.current) {\n fileInputRef.current.value = '';\n }\n }, [onFileSelect, maxSize]);\n\n const handleClick = useCallback(() => {\n if (!disabled && fileInputRef.current) {\n fileInputRef.current.click();\n }\n }, [disabled]);\n\n return (\n <div className={`fusioni-file-upload ${className}`}>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n onChange={handleFileChange}\n style={{ display: 'none' }}\n disabled={disabled}\n />\n <button\n onClick={handleClick}\n disabled={disabled}\n className=\"fusioni-btn fusioni-btn-icon\"\n title=\"Upload file\"\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M21 15V19C21 19.5304 20.7893 20.0391 20.4142 20.4142C20.0391 20.7893 19.5304 21 19 21H5C4.46957 21 3.96086 20.7893 3.58579 20.4142C3.21071 20.0391 3 19.5304 3 19V15\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <polyline\n points=\"7,10 12,15 17,10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"12\"\n y1=\"15\"\n x2=\"12\"\n y2=\"3\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n );\n};\n","import React from 'react';\n\nexport const ChatLoader: React.FC = () => {\n return (\n <div className=\"fusioni-chat-loader\">\n <div className=\"fusioni-loader-content\">\n <div className=\"fusioni-loader-dots\">\n <div className=\"fusioni-loader-dot\" />\n <div className=\"fusioni-loader-dot\" />\n <div className=\"fusioni-loader-dot\" />\n </div>\n <span className=\"fusioni-loader-text\">AI is thinking...</span>\n </div>\n </div>\n );\n};\n"],"names":["isFunction","AxiosError","utils","prototype","toFormData","encode","URLSearchParams","FormData","Blob","platform","AxiosHeaders","isCancel","CanceledError","mergeConfig","ReadableStream","fetchAdapter.getFetch","VERSION","validators","Axios","spread","isAxiosError","HttpStatusCode","CancelToken","useState","useEffect","useCallback","useMemo","_jsxs","_jsx","useRef","Map","_Fragment","createPortal"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49]}
1
+ {"version":3,"file":"index.js","sources":["../src/i18n/en.ts","../src/i18n/el.ts","../src/i18n/index.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/index.js","../src/services/ApiClient.ts","../src/services/ConversationService.ts","../src/services/PipelineService.ts","../src/services/MessageService.ts","../src/services/SDKClientService.ts","../src/hooks/useTranslation.ts","../src/assets/logo-base64.ts","../src/components/ConversationList.tsx","../src/components/UrlPreview.tsx","../src/components/Map.tsx","../src/components/PaginatedGalleryStrip.tsx","../src/components/Message.tsx","../src/components/Spotlight.tsx","../src/components/MessageStreamLoading.tsx","../src/components/ImageGallery.tsx","../src/components/MessageList.tsx","../src/components/AudioRecorder.tsx","../src/components/ChatInput.tsx","../src/components/FloatingButton.tsx","../src/components/ChatPanel.tsx","../src/components/LanguageSwitcher.tsx","../src/components/ConfirmationDialog.tsx","../src/hooks/useChatState.ts","../src/hooks/useSSE.ts","../src/hooks/useTheme.ts","../src/hooks/useIsMobileLayout.ts","../src/components/ChatWidget.tsx","../src/components/FileUpload.tsx","../src/components/ChatLoader.tsx"],"sourcesContent":["export const en = {\n // Chat Interface\n chat: {\n title: 'Fusioni AI',\n subtitle: 'AI Assistant',\n welcome: {\n title: 'Welcome to Fusioni',\n description: 'Start a new conversation to begin chatting with AI',\n startButton: 'Start New Conversation',\n creating: 'Creating...'\n },\n input: {\n placeholder: 'Type your message...',\n send: 'Send',\n upload: 'Upload',\n record: 'Record'\n },\n conversations: {\n title: 'Conversations',\n search: 'Search conversations...',\n newConversation: 'New Conversation',\n noConversations: 'No conversations yet',\n delete: 'Delete conversation',\n newIndicator: 'New conversation - will be saved when you send a message',\n deleteConfirm: {\n title: 'Delete Conversation',\n message: 'Are you sure you want to delete this conversation? This action cannot be undone.',\n confirm: 'Delete',\n cancel: 'Cancel'\n }\n },\n attachedImages: 'Images',\n attachedVideos: 'Videos',\n messages: {\n loading: 'Working on it...',\n error: 'Oops! Something went wrong. Please try again later.',\n delete: 'Delete message',\n deleteConfirm: {\n title: 'Delete Message',\n message: 'Are you sure you want to delete this message? This action cannot be undone.',\n confirm: 'Delete',\n cancel: 'Cancel'\n }\n },\n connection: {\n connected: 'Real-time updates connected',\n disconnected: 'Real-time updates disconnected'\n },\n fullscreen: {\n enter: 'Enter fullscreen',\n exit: 'Exit fullscreen'\n },\n theme: {\n light: 'Switch to light theme',\n dark: 'Switch to dark theme'\n },\n errors: {\n failedToCreateConversation: 'Failed to create conversation',\n failedToLoadConversation: 'Failed to load conversation',\n failedToDeleteConversation: 'Failed to delete conversation',\n failedToSendMessage: 'Failed to send message',\n failedToDeleteMessage: 'Failed to delete message',\n failedToUploadFile: 'Failed to upload file',\n failedToInitialize: 'Failed to initialize chat service',\n retry: 'Retry'\n }\n },\n \n // Language Switcher\n language: {\n english: 'English',\n greek: 'Ελληνικά',\n switchLanguage: 'Switch Language'\n },\n \n // Common\n common: {\n close: 'Close',\n open: 'Open',\n cancel: 'Cancel',\n confirm: 'Confirm',\n save: 'Save',\n delete: 'Delete',\n edit: 'Edit',\n search: 'Search',\n clear: 'Clear',\n loading: 'Loading...',\n error: 'Error',\n success: 'Success',\n warning: 'Warning',\n info: 'Info',\n yes: 'Yes',\n no: 'No'\n }\n} as const;\n","export const el = {\n // Chat Interface\n chat: {\n title: 'Fusioni AI',\n subtitle: 'AI Βοηθός',\n welcome: {\n title: 'Καλώς ήρθατε στο Fusioni AI',\n description: 'Ξεκινήστε μια νέα συνομιλία για να αρχίσετε να συνομιλείτε με AI',\n startButton: 'Ξεκινήστε Νέα Συνομιλία',\n creating: 'Δημιουργία...'\n },\n input: {\n placeholder: 'Πληκτρολογήστε το μήνυμά σας...',\n send: 'Αποστολή',\n upload: 'Ανέβασμα',\n record: 'Εγγραφή'\n },\n conversations: {\n title: 'Συνομιλίες',\n search: 'Αναζήτηση συνομιλιών...',\n newConversation: 'Νέα Συνομιλία',\n noConversations: 'Δεν υπάρχουν συνομιλίες ακόμα',\n delete: 'Διαγραφή συνομιλίας',\n newIndicator: 'Νέα συνομιλία - θα αποθηκευτεί όταν στείλετε μήνυμα',\n deleteConfirm: {\n title: 'Διαγραφή Συνομιλίας',\n message: 'Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή τη συνομιλία; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.',\n confirm: 'Διαγραφή',\n cancel: 'Ακύρωση'\n }\n },\n attachedImages: 'Εικόνες',\n attachedVideos: 'Βίντεο',\n messages: {\n loading: 'Εργάζομαι...',\n error: 'Ουπς! Κάτι πήγε στραβά. Παρακαλώ δοκιμάστε ξανά αργότερα.',\n delete: 'Διαγραφή μηνύματος',\n deleteConfirm: {\n title: 'Διαγραφή Μηνύματος',\n message: 'Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το μήνυμα; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.',\n confirm: 'Διαγραφή',\n cancel: 'Ακύρωση'\n }\n },\n connection: {\n connected: 'Συνδεδεμένο για ενημερώσεις σε πραγματικό χρόνο',\n disconnected: 'Αποσυνδεδεμένο από ενημερώσεις σε πραγματικό χρόνο'\n },\n fullscreen: {\n enter: 'Πλήρης οθόνη',\n exit: 'Έξοδος από πλήρη οθόνη'\n },\n theme: {\n light: 'Εναλλαγή σε φωτεινό θέμα',\n dark: 'Εναλλαγή σε σκοτεινό θέμα'\n },\n errors: {\n failedToCreateConversation: 'Αποτυχία δημιουργίας συνομιλίας',\n failedToLoadConversation: 'Αποτυχία φόρτωσης συνομιλίας',\n failedToDeleteConversation: 'Αποτυχία διαγραφής συνομιλίας',\n failedToSendMessage: 'Αποτυχία αποστολής μηνύματος',\n failedToDeleteMessage: 'Αποτυχία διαγραφής μηνύματος',\n failedToUploadFile: 'Αποτυχία ανεβάσματος αρχείου',\n failedToInitialize: 'Αποτυχία αρχικοποίησης υπηρεσίας συνομιλίας',\n retry: 'Επανάληψη'\n }\n },\n \n // Language Switcher\n language: {\n english: 'English',\n greek: 'Ελληνικά',\n switchLanguage: 'Αλλαγή Γλώσσας'\n },\n \n // Common\n common: {\n close: 'Κλείσιμο',\n open: 'Άνοιγμα',\n cancel: 'Ακύρωση',\n confirm: 'Επιβεβαίωση',\n save: 'Αποθήκευση',\n delete: 'Διαγραφή',\n edit: 'Επεξεργασία',\n search: 'Αναζήτηση',\n clear: 'Εκκαθάριση',\n loading: 'Φόρτωση...',\n error: 'Σφάλμα',\n success: 'Επιτυχία',\n warning: 'Προειδοποίηση',\n info: 'Πληροφορία',\n yes: 'Ναι',\n no: 'Όχι'\n }\n} as const;\n","import { en } from './en';\nimport { el } from './el';\n\nexport type Language = 'en' | 'el';\n\nexport type TranslationKeys = typeof en;\n\nexport const translations = {\n en,\n el\n} as const;\n\nexport const getTranslation = (language: Language, key: string): string => {\n const keys = key.split('.');\n let value: any = translations[language];\n \n for (const k of keys) {\n if (value && typeof value === 'object' && k in value) {\n value = value[k];\n } else {\n // Fallback to English if key not found\n value = translations.en;\n for (const fallbackKey of keys) {\n if (value && typeof value === 'object' && fallbackKey in value) {\n value = value[fallbackKey];\n } else {\n return key; // Return the key if not found in fallback\n }\n }\n break;\n }\n }\n \n return typeof value === 'string' ? value : key;\n};\n\nexport const getAvailableLanguages = (): Array<{ code: Language; name: string }> => {\n return [\n { code: 'en', name: 'English' },\n { code: 'el', name: 'Ελληνικά' }\n ];\n};\n\nexport const isValidLanguage = (language: string): language is Language => {\n return language === 'en' || language === 'el';\n};\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)){\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless, skipUndefined} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n const msg = error && error.message ? error.message : 'Error';\n\n // Prefer explicit code; otherwise copy the low-level error's code (e.g. ECONNREFUSED)\n const errCode = code == null && error ? error.code : code;\n AxiosError.call(axiosError, msg, errCode, config, request, response);\n\n // Chain the original error on the standard field; non-enumerable to avoid JSON noise\n if (error && axiosError.cause == null) {\n Object.defineProperty(axiosError, 'cause', { value: error, configurable: true });\n }\n\n axiosError.name = (error && error.name) || 'Error';\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n } \n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n \n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n Request, Response\n}))(utils.global);\n\nconst {\n ReadableStream, TextEncoder\n} = utils.global;\n\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst factory = (env) => {\n env = utils.merge.call({\n skipUndefined: true\n }, globalFetchAPI, env);\n\n const {fetch: envFetch, Request, Response} = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n );\n\n const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n };\n\n isFetchSupported && ((() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n })());\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n }\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n }\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request = null;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n }\n}\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = config ? config.env : {};\n const {fetch, Request, Response} = env;\n const seeds = [\n Request, Response, fetch\n ];\n\n let len = seeds.length, i = len,\n seed, target, map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, target = (i ? new Map() : factory(env)))\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n }\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters, config) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.12.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import axios, {AxiosInstance} from 'axios';\n\n/** Decode SSE `event.data` (plain text or JSON with a `data` field), matching fusioni-web chat usage. */\nfunction normalizeSsePayload(raw: string): string | null {\n const s = raw?.trim() ?? '';\n if (!s) {\n return null;\n }\n try {\n const parsed = JSON.parse(s) as unknown;\n if (parsed !== null && typeof parsed === 'object' && 'data' in parsed) {\n const inner = (parsed as {data: unknown}).data;\n if (inner === undefined || inner === null) {\n return null;\n }\n if (typeof inner === 'string') {\n return inner;\n }\n if (typeof inner === 'number' || typeof inner === 'boolean') {\n return String(inner);\n }\n return JSON.stringify(inner);\n }\n } catch {\n /* use raw string */\n }\n return s;\n}\n\nexport class ApiClient {\n private client: AxiosInstance;\n private baseUrl: string;\n private accessToken?: string;\n\n constructor(baseUrl: string, accessToken?: string) {\n this.baseUrl = baseUrl.replace(/\\/$/, ''); // Remove trailing slash\n this.accessToken = accessToken;\n \n this.client = axios.create({\n baseURL: this.baseUrl,\n timeout: 30000,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n // Add request interceptor for authentication\n this.client.interceptors.request.use(\n (config: any) => {\n console.log('Request interceptor - config:', config);\n if (this.accessToken) {\n config.headers.Authorization = `ApiKey ${this.accessToken}`;\n console.log('Authorization header set:', config.headers.Authorization);\n } else {\n throw new Error('No access token provided');\n }\n return config;\n },\n (error: any) => {\n return Promise.reject(error);\n }\n );\n\n // Add response interceptor for error handling\n this.client.interceptors.response.use(\n (response: any) => response,\n (error: any) => {\n console.error('API Error:', error.response?.data || error.message);\n return Promise.reject(error);\n }\n );\n }\n\n setAccessToken(token: string) {\n this.accessToken = token;\n }\n\n // HTTP method wrappers to isolate axios client\n async get<T = any>(url: string, config?: any): Promise<T> {\n const response = await this.client.get(url, config);\n return response.data;\n }\n\n async post<T = any>(url: string, data?: any, config?: any): Promise<T> {\n console.log('ApiClient POST request:', { url, data, config });\n const response = await this.client.post(url, data, config);\n return response.data;\n }\n\n async put<T = any>(url: string, data?: any, config?: any): Promise<T> {\n const response = await this.client.put(url, data, config);\n return response.data;\n }\n\n async delete<T = any>(url: string, config?: any): Promise<T> {\n const response = await this.client.delete(url, config);\n return response.data;\n }\n\n async options<T = any>(url: string, config?: any): Promise<T> {\n const response = await this.client.options(url, config);\n return response.data;\n }\n\n // Server-Sent Events for real-time updates\n connectToSSE(agencyId: string, onMessage: (data: any) => void): EventSource {\n const token = this.accessToken || 'test';\n const url = `${this.baseUrl}/sse/connect?agency_id=${agencyId}&token=${token}`;\n const eventSource = new EventSource(url, { withCredentials: false });\n\n const deliver = (eventName: string, event: Event) => {\n try {\n const me = event as MessageEvent;\n const normalized = normalizeSsePayload(String(me.data ?? ''));\n if (normalized === null) {\n return;\n }\n onMessage({event: eventName, data: normalized});\n } catch (error) {\n console.error('Error handling SSE event:', eventName, error);\n }\n };\n\n // fusioni-web EventSourceService uses ['chat_stream'] for chat execution progress\n eventSource.addEventListener('chat_stream', (e) => deliver('chat_stream', e));\n eventSource.addEventListener('process_info', (e) => deliver('process_info', e));\n\n eventSource.onerror = (error) => {\n console.error('SSE connection error:', error);\n };\n\n return eventSource;\n }\n\n\n // Health check\n async healthCheck(): Promise<boolean> {\n try {\n await this.get('/health');\n return true;\n } catch (error) {\n return false;\n }\n }\n}\n\n// Singleton instance\nlet apiClientInstance: ApiClient | null = null;\n\nexport const getApiClient = (baseUrl?: string, accessToken?: string): ApiClient => {\n if (!apiClientInstance) {\n if (baseUrl) {\n apiClientInstance = new ApiClient(baseUrl, accessToken);\n } else {\n throw new Error('ApiClient not initialized. Call getApiClient with baseUrl first.');\n }\n }\n return apiClientInstance;\n};\n\nexport const initializeApiClient = (baseUrl: string, accessToken?: string): ApiClient => {\n apiClientInstance = new ApiClient(baseUrl, accessToken);\n return apiClientInstance;\n};\n","import {Conversation, FusioniPayload} from '../types';\nimport {getApiClient} from './ApiClient';\n\nexport interface IConversationService {\n getConversation(conversationId: string): Promise<Conversation | undefined>;\n\n getConversationsByAgency(agencyId: string, page: number, size: number): Promise<Conversation[]>;\n\n getConversationsByIdsAndAgency(agencyId: string, ids: string[]): Promise<Conversation[]>;\n\n deleteConversation(conversationId: string): Promise<void>;\n\n createConversation(conversation: Omit<Conversation, 'id'>): Promise<string>;\n}\n\nexport class LocalConversationService implements IConversationService {\n\n conversationService: RemoteConversationService;\n\n constructor(conversationService: RemoteConversationService) {\n this.conversationService = conversationService;\n }\n\n async createConversation(conversation: Omit<Conversation, \"id\">): Promise<string> {\n if (!conversation) {\n let reason = \"No conversation was provided to create\";\n console.error(reason)\n return Promise.reject(reason)\n }\n let conversationId = this.conversationService.createConversation(conversation);\n conversationId.then(value => this.saveToLocalStorage(value))\n return Promise.resolve(conversationId)\n }\n\n async deleteConversation(conversationId: string): Promise<void> {\n let conversations = this.loadConversations();\n conversations = conversations.filter(conv => conv !== conversationId)\n this.saveConversations(conversations);\n return Promise.resolve();\n }\n\n private saveToLocalStorage(conversationId: string): void {\n if (!conversationId) {\n console.warn(\"No conversation was provided\")\n return;\n }\n let conversations: string[] = this.loadConversations();\n const existingIndex = conversations.indexOf(conversationId);\n if (existingIndex === -1) {\n conversations.push(conversationId);\n }\n this.saveConversations(conversations);\n }\n\n private saveConversations(conversations: string[]) {\n try {\n let conversationsStr = JSON.stringify(conversations)\n localStorage.setItem(\"conversations\", conversationsStr)\n } catch (e) {\n console.log(e)\n }\n }\n\n private loadConversations() {\n let conversations: string[] = [];\n let conversationsStr = localStorage.getItem(\"conversations\");\n console.log(\"conversationsStr\", conversationsStr);\n if (conversationsStr) {\n try {\n conversations = JSON.parse(conversationsStr)\n console.log(\"conversations array\", conversations);\n } catch (e) {\n console.error(e)\n conversations = [];\n }\n }\n return conversations;\n }\n\n async getConversation(conversationId: string): Promise<Conversation | undefined> {\n return this.conversationService.getConversation(conversationId);\n }\n\n async getConversationsByAgency(agencyId: string, page: number, size: number): Promise<Conversation[]> {\n let conversationIds = this.loadConversations();\n return this.conversationService.getConversationsByIdsAndAgency(agencyId, conversationIds);\n }\n\n async getConversationsByIdsAndAgency(agencyId: string, ids: string[]): Promise<Conversation[]> {\n return this.conversationService.getConversationsByIdsAndAgency(agencyId, ids);\n }\n\n}\n\nexport class RemoteConversationService implements IConversationService {\n private getApiClient() {\n return getApiClient();\n }\n\n /**\n * Create a new conversation\n */\n async createConversation(conversation: Omit<Conversation, 'id'>): Promise<string> {\n try {\n const apiClient = this.getApiClient();\n console.log('Creating conversation with data:', conversation);\n\n // ApiClient.post returns the data directly, not the full response\n const responseData: any = await apiClient.post('/conversation', conversation);\n\n // Handle different response formats\n let conversationId: string = responseData.trim();\n\n if (!conversationId || conversationId === '') {\n return Promise.reject(\"No conversation id was received!\")\n }\n\n return conversationId;\n } catch (error) {\n console.error(error)\n return Promise.reject(error)\n }\n }\n\n /**\n * Get a specific conversation by ID\n */\n async getConversation(conversationId: string): Promise<Conversation | undefined> {\n const apiClient = this.getApiClient();\n return await apiClient.get('/conversation', {\n params: {item_id: conversationId}\n });\n }\n\n /**\n * Get conversations for a specific agency with pagination\n */\n async getConversationsByAgency(\n agencyId: string,\n page: number = 0,\n size: number = 25\n ): Promise<Conversation[]> {\n const apiClient = this.getApiClient();\n const responseData: FusioniPayload<Conversation> = await apiClient.get(\n '/conversation/list',\n {\n params: {\n agency_id: agencyId,\n page,\n size\n }\n }\n );\n\n if (responseData) {\n return responseData.body || [];\n }\n\n return [];\n }\n\n /**\n * Get conversations by IDs and agency ID\n */\n async getConversationsByIdsAndAgency(\n agencyId: string,\n ids: string[]\n ): Promise<Conversation[]> {\n const apiClient = this.getApiClient();\n const responseData: Conversation[] = await apiClient.get(\n '/conversation/by_ids_and_agency_id',\n {\n params: {\n agency_id: agencyId,\n ids: ids\n },\n paramsSerializer: { indexes: null },\n }\n );\n\n return responseData || [];\n }\n\n /**\n * Delete a conversation\n */\n async deleteConversation(conversationId: string): Promise<void> {\n const apiClient = this.getApiClient();\n await apiClient.delete('/conversation', {\n params: {item_id: conversationId}\n });\n }\n}\n\n// Singleton instance\nlet conversationServiceInstance: IConversationService | null = null;\n\nexport const getConversationService = (): IConversationService => {\n if (!conversationServiceInstance) {\n conversationServiceInstance = new LocalConversationService(new RemoteConversationService());\n }\n return conversationServiceInstance;\n};\n","import { AxiosResponse } from 'axios';\nimport {\n PipelineRequest,\n PipelineResponse\n} from '../types';\nimport { getApiClient } from './ApiClient';\n\nexport class PipelineService {\n private getApiClient() {\n return getApiClient();\n }\n\n /**\n * Execute a pipeline request.\n *\n * The API typically returns `messages` with the full turn batch for the exchange,\n * including the persisted **user** message that matches the request. Clients that\n * optimistically append a local user bubble should remove that row from state when\n * merging `response.messages` (ChatWidget tags it with `fusion_sdk_optimistic_user`\n * in `extra_data` and strips it—same pattern as removing the loading message).\n */\n async executePipeline(request: PipelineRequest): Promise<PipelineResponse> {\n // Debug logging to track conversation_id\n console.log('🔍 PipelineService.executePipeline - Request received:', {\n conversation_id: request.conversation_id,\n agency_id: request.agency_id,\n inp: request.inp?.substring(0, 100) + (request && request.inp && request.inp?.length > 100 ? '...' : ''),\n hasImage: !!request.image,\n hasAudio: !!request.audio,\n agent_id: request.agent_id,\n fullRequest: request\n });\n\n // Validate required fields\n if (!request.conversation_id) {\n console.error('❌ PipelineService.executePipeline - conversation_id is missing!', request);\n throw new Error('conversation_id is required for pipeline execution');\n }\n\n if (!request.agency_id) {\n console.error('❌ PipelineService.executePipeline - agency_id is missing!', request);\n throw new Error('agency_id is required for pipeline execution');\n }\n\n const apiClient = this.getApiClient();\n const response: AxiosResponse<PipelineResponse> = await (apiClient as any).client.post(\n `/journey/${request.agency_id}/exec`,\n request\n );\n \n console.log('✅ PipelineService.executePipeline - Response received:', {\n answerCount: response.data.answer?.length || 0,\n messagesCount: response.data.messages?.length || 0,\n thoughtsCount: response.data.thoughts?.length || 0\n });\n \n return response.data;\n }\n}\n\n// Singleton instance\nlet pipelineServiceInstance: PipelineService | null = null;\n\nexport const getPipelineService = (): PipelineService => {\n if (!pipelineServiceInstance) {\n pipelineServiceInstance = new PipelineService();\n }\n return pipelineServiceInstance;\n};\n","import {getApiClient} from './ApiClient';\nimport {FusioniMemoryMessage, FusioniPayload} from \"../types\";\nimport {AxiosResponse} from \"axios\";\n\nexport class MessageService {\n private getApiClient() {\n return getApiClient();\n }\n\n /**\n * Delete Message\n * @param messageId\n * @param agencyId\n */\n async deleteMessage(messageId: string, agencyId: string): Promise<void> {\n const apiClient = this.getApiClient();\n await (apiClient as any).client.delete('/mem', {\n params: {\n item_id: messageId,\n agency_id: agencyId\n }\n });\n }\n\n /**\n * Get Messages\n * @param conversationId\n * @param agencyId\n */\n async getMessages(conversationId: string, agencyId: string): Promise<FusioniMemoryMessage[]> {\n const apiClient = this.getApiClient();\n const response: AxiosResponse<FusioniPayload<FusioniMemoryMessage>> = await (apiClient as any).client.get(\n '/mem/messages',\n {\n params: {\n agency_id: agencyId,\n conversation_id: conversationId\n }\n }\n );\n\n if (response.data) {\n return response.data.body || [];\n }\n\n return [];\n }\n}\n\n// Singleton instance\nlet messageServiceInstance: MessageService | null = null;\n\nexport const getMessageService = (): MessageService => {\n if (!messageServiceInstance) {\n messageServiceInstance = new MessageService();\n }\n return messageServiceInstance;\n};\n","import {getApiClient} from './ApiClient';\nimport {FusioniSDKConfig} from '../types';\n\nexport interface SDKClientResponse {\n id?: string;\n website_url?: string;\n agency_id?: string;\n theme?: 'light' | 'dark' | 'auto' | null;\n show_theme_toggle?: boolean;\n show_fullscreen_toggle?: boolean;\n show_language_switcher?: boolean;\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' | null;\n primary_color?: string | null;\n show_conversation_list?: boolean | null;\n enable_audio_recording?: boolean | null;\n enable_file_upload?: boolean | null;\n max_file_size?: number | null;\n allowed_file_types?: string[] | null;\n language?: 'en' | 'el';\n button_variant?: 'minimal' | 'glass' | 'solid';\n}\n\nexport class SDKClientService {\n private getApiClient() {\n return getApiClient();\n }\n\n /**\n * Get SDK Client configuration by agency ID\n * @param agencyId\n */\n async getClientConfig(agencyId: string): Promise<SDKClientResponse | null> {\n const apiClient = this.getApiClient();\n const response = await (apiClient as any).client.get('/sdk-client/agency/website', {\n params: {\n agency_id: agencyId\n }\n });\n return response.data || null;\n }\n\n /**\n * Merge server configuration with user configuration\n * Server config takes precedence for non-null values\n */\n mergeConfig(userConfig: FusioniSDKConfig, serverConfig: SDKClientResponse | null): FusioniSDKConfig {\n if (!serverConfig) {\n return userConfig;\n }\n\n return {\n ...userConfig,\n // Only override if server value is not null\n theme: serverConfig.theme !== null && serverConfig.theme !== undefined \n ? serverConfig.theme \n : userConfig.theme,\n showThemeToggle: serverConfig.show_theme_toggle !== undefined\n ? serverConfig.show_theme_toggle\n : userConfig.showThemeToggle,\n showFullscreenToggle: serverConfig.show_fullscreen_toggle !== undefined\n ? serverConfig.show_fullscreen_toggle\n : userConfig.showFullscreenToggle,\n showLanguageSwitcher: serverConfig.show_language_switcher !== undefined\n ? serverConfig.show_language_switcher\n : userConfig.showLanguageSwitcher,\n position: serverConfig.position !== null && serverConfig.position !== undefined \n ? serverConfig.position \n : userConfig.position,\n primaryColor: serverConfig.primary_color !== null && serverConfig.primary_color !== undefined \n ? serverConfig.primary_color \n : userConfig.primaryColor,\n showConversationList: typeof serverConfig.show_conversation_list === 'boolean'\n ? serverConfig.show_conversation_list \n : userConfig.showConversationList,\n enableAudioRecording: typeof serverConfig.enable_audio_recording === 'boolean'\n ? serverConfig.enable_audio_recording \n : userConfig.enableAudioRecording,\n enableFileUpload: typeof serverConfig.enable_file_upload === 'boolean'\n ? serverConfig.enable_file_upload \n : userConfig.enableFileUpload,\n maxFileSize: serverConfig.max_file_size !== null && serverConfig.max_file_size !== undefined \n ? serverConfig.max_file_size \n : userConfig.maxFileSize,\n allowedFileTypes: serverConfig.allowed_file_types !== null && serverConfig.allowed_file_types !== undefined \n ? serverConfig.allowed_file_types \n : userConfig.allowedFileTypes,\n language: serverConfig.language !== undefined \n ? serverConfig.language \n : userConfig.language,\n buttonVariant: serverConfig.button_variant !== undefined \n ? serverConfig.button_variant \n : userConfig.buttonVariant,\n };\n }\n}\n\n// Singleton instance\nlet sdkClientServiceInstance: SDKClientService | null = null;\n\nexport const getSDKClientService = (): SDKClientService => {\n if (!sdkClientServiceInstance) {\n sdkClientServiceInstance = new SDKClientService();\n }\n return sdkClientServiceInstance;\n};\n\n","import { useState, useCallback, useMemo, useEffect } from 'react';\nimport { Language, getTranslation, getAvailableLanguages, isValidLanguage } from '../i18n';\n\nexport const useTranslation = (defaultLanguage: Language = 'en') => {\n const [currentLanguage, setCurrentLanguage] = useState<Language>(defaultLanguage);\n \n // Update internal language state when defaultLanguage prop changes\n useEffect(() => {\n setCurrentLanguage(defaultLanguage);\n }, [defaultLanguage]);\n\n const t = useCallback((key: string): string => {\n return getTranslation(currentLanguage, key);\n }, [currentLanguage]);\n\n const changeLanguage = useCallback((language: Language) => {\n setCurrentLanguage(language);\n }, []);\n\n const availableLanguages = useMemo(() => getAvailableLanguages(), []);\n\n const isValidLang = useCallback((lang: string): lang is Language => {\n return isValidLanguage(lang);\n }, []);\n\n return {\n t,\n currentLanguage,\n changeLanguage,\n availableLanguages,\n isValidLanguage: isValidLang\n };\n};\n","// Auto-generated file - do not edit manually\n// This file is generated during the build process from Fusioni_Logo@120.png\n\nexport const FUSIONI_LOGO_BASE64 = 'data:image/png;base64,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';\n","import React, { useState } from 'react';\nimport { ConversationListProps } from '../types';\nimport { useTranslation } from '../hooks/useTranslation';\nimport { FUSIONI_LOGO_BASE64 } from '../assets/logo-base64';\n\nexport const ConversationList: React.FC<ConversationListProps> = ({\n conversations,\n selectedConversationId,\n onSelectConversation,\n onDeleteConversation,\n onCreateConversation,\n searchQuery = '',\n onSearchChange,\n isOpen = false,\n currentLanguage = 'en'\n}) => {\n const [searchTerm, setSearchTerm] = useState(searchQuery);\n const { t } = useTranslation(currentLanguage);\n\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n setSearchTerm(value);\n onSearchChange?.(value);\n };\n\n const filteredConversations = conversations\n .filter(conversation =>\n conversation.title.toLowerCase().includes(searchTerm.toLowerCase())\n )\n .sort((a, b) => {\n // Sort by created date in descending order (latest first)\n // If no created date, treat as oldest (put at bottom)\n const dateA = a.created ? new Date(a.created).getTime() : 0;\n const dateB = b.created ? new Date(b.created).getTime() : 0;\n return dateB - dateA;\n });\n\n const formatDate = (date: Date | null | undefined): string => {\n if (!date) return '';\n \n const now = new Date();\n const diffInMilliseconds = now.getTime() - new Date(date).getTime();\n const diffInHours = diffInMilliseconds / (1000 * 60 * 60);\n \n if (diffInHours < 24) {\n if (diffInHours < 1) {\n const diffInMinutes = diffInMilliseconds / (1000 * 60);\n if (diffInMinutes < 1) {\n return 'Just now';\n }\n return `${Math.floor(diffInMinutes)} minutes ago`;\n } else {\n return `${Math.floor(diffInHours)} hours ago`;\n }\n }\n \n return new Date(date).toLocaleString('en-GB', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n });\n };\n\n return (\n <div className={`fusioni-conversation-list ${isOpen ? 'open' : ''}`}>\n {/* Header */}\n <div className=\"fusioni-conversation-header\">\n <div className=\"fusioni-conversation-title\">\n <div className=\"fusioni-conversation-logo\">\n <img \n src={FUSIONI_LOGO_BASE64} \n alt=\"Fusioni Logo\" \n width=\"32\" \n height=\"32\"\n />\n </div>\n <div className=\"fusioni-conversation-info\">\n <h3>{t('chat.title')}</h3>\n <p>{t('chat.subtitle')}</p>\n </div>\n </div>\n <button\n onClick={onCreateConversation}\n className=\"fusioni-btn fusioni-btn-icon\"\n title={t('chat.conversations.newConversation')}\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M12 5V19M5 12H19\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n\n {/* Search */}\n <div className=\"fusioni-conversation-search\">\n <div className=\"fusioni-search-input\">\n <input\n type=\"text\"\n placeholder={t('chat.conversations.search')}\n value={searchTerm}\n onChange={handleSearchChange}\n className=\"fusioni-input\"\n />\n <div className=\"fusioni-search-icon\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n cx=\"11\"\n cy=\"11\"\n r=\"8\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <path\n d=\"M21 21L16.65 16.65\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n </div>\n\n {/* Divider */}\n <div className=\"fusioni-divider\" />\n\n {/* Conversations */}\n <div className=\"fusioni-conversations\">\n {filteredConversations.length === 0 ? (\n <div className=\"fusioni-empty-state\">\n <p>{t('chat.conversations.noConversations')}</p>\n {searchTerm && (\n <button\n onClick={() => setSearchTerm('')}\n className=\"fusioni-btn fusioni-btn-text\"\n >\n{t('common.clear')}\n </button>\n )}\n </div>\n ) : (\n filteredConversations.map((conversation) => (\n <div\n key={conversation.id}\n className={`fusioni-conversation-item ${\n conversation.id === selectedConversationId ? 'active' : ''\n }`}\n onClick={() => onSelectConversation(conversation)}\n >\n {/* Neural Network Background Animation */}\n <div className=\"fusioni-conversation-neural-bg\">\n <div className=\"fusioni-neural-node fusioni-neural-node-1\"></div>\n <div className=\"fusioni-neural-node fusioni-neural-node-2\"></div>\n <div className=\"fusioni-neural-node fusioni-neural-node-3\"></div>\n <div className=\"fusioni-neural-connection fusioni-neural-connection-1\"></div>\n <div className=\"fusioni-neural-connection fusioni-neural-connection-2\"></div>\n </div>\n\n <div className=\"fusioni-conversation-content\">\n <div className=\"fusioni-conversation-main\">\n <div className=\"fusioni-conversation-title-section\">\n <h4 className=\"fusioni-conversation-title-text\">\n {conversation.title}\n {!conversation.id && (\n <span className=\"fusioni-conversation-temp-indicator\" title={t('chat.conversations.newIndicator')}>\n <div className=\"fusioni-new-badge\">\n <span className=\"fusioni-new-text\">NEW</span>\n <div className=\"fusioni-new-pulse\"></div>\n </div>\n </span>\n )}\n </h4>\n {conversation.created && (\n <div className=\"fusioni-conversation-meta\">\n <div className=\"fusioni-conversation-date\">\n {formatDate(conversation.created)}\n </div>\n <div className=\"fusioni-conversation-status\">\n <div className=\"fusioni-status-dot\"></div>\n <span>Active</span>\n </div>\n </div>\n )}\n </div>\n \n <div className=\"fusioni-conversation-actions\">\n <button\n onClick={(e) => {\n e.stopPropagation();\n if (conversation.id) {\n onDeleteConversation(conversation.id);\n }\n }}\n className=\"fusioni-btn fusioni-btn-icon fusioni-btn-danger fusioni-delete-btn\"\n title={t('chat.conversations.delete')}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5H21\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M19 6V20C19 20.5304 18.7893 21.0391 18.4142 21.4142C18.0391 21.7893 17.5304 22 17 22H7C6.46957 22 5.96086 21.7893 5.58579 21.4142C5.21071 21.0391 5 20.5304 5 20V6H19Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n </div>\n \n {/* Data Flow Animation */}\n <div className=\"fusioni-conversation-data-flow\">\n <div className=\"fusioni-data-stream\"></div>\n </div>\n </div>\n </div>\n ))\n )}\n </div>\n </div>\n );\n};\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\n\nexport interface LinkPreviewData {\n url: string;\n title: string;\n description: string;\n image: string;\n domain: string;\n}\n\nexport interface UrlPreviewProps {\n url: string;\n agencyId: string;\n showCloseButton?: boolean;\n compact?: boolean;\n autoFetch?: boolean;\n apiBaseUrl?: string;\n apiKey?: string;\n onClose?: () => void;\n}\n\nexport const UrlPreview: React.FC<UrlPreviewProps> = ({\n url,\n agencyId,\n showCloseButton = true,\n compact = false,\n autoFetch = true,\n apiBaseUrl,\n apiKey,\n onClose\n}) => {\n const [linkPreview, setLinkPreview] = useState<LinkPreviewData | null>(null);\n const [showLinkPreview, setShowLinkPreview] = useState(false);\n const [isFetchingPreview, setIsFetchingPreview] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const abortControllerRef = useRef<AbortController | null>(null);\n const fetchedUrlsRef = useRef<Set<string>>(new Set());\n\n const extractMetaContent = (doc: Document, property: string): string | null => {\n const meta = doc.querySelector(`meta[property=\"${property}\"], meta[name=\"${property}\"]`);\n return meta?.getAttribute('content') || null;\n };\n\n const fetchLinkPreview = useCallback(async (targetUrl: string): Promise<void> => {\n // Prevent duplicate fetches for the same URL\n if (fetchedUrlsRef.current.has(targetUrl)) {\n return;\n }\n\n // Abort any in-flight request\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n\n // Create new AbortController for this request\n const abortController = new AbortController();\n abortControllerRef.current = abortController;\n fetchedUrlsRef.current.add(targetUrl);\n\n try {\n setIsFetchingPreview(true);\n setError(null);\n\n // Use the Fusioni internal proxy to fetch the link metadata\n const base = apiBaseUrl ? apiBaseUrl.replace(/\\/+$/, '') : '';\n const proxyUrl = base\n ? `${base}/proxy/${agencyId}/web?agency_id=${agencyId}&url=${encodeURIComponent(targetUrl)}`\n : `/api/proxy/${agencyId}/web?agency_id=${agencyId}&url=${encodeURIComponent(targetUrl)}`;\n const headers: Record<string, string> = {};\n if (apiKey) {\n headers['Authorization'] = `ApiKey ${apiKey}`;\n }\n const response = await fetch(proxyUrl, { \n headers,\n signal: abortController.signal\n });\n \n // Check if request was aborted\n if (abortController.signal.aborted) {\n return;\n }\n\n const data = await response.text();\n \n // Check again if request was aborted after async operation\n if (abortController.signal.aborted) {\n return;\n }\n \n if (data) {\n const parser = new DOMParser();\n const doc = parser.parseFromString(data, 'text/html');\n \n const title = extractMetaContent(doc, 'og:title') || \n extractMetaContent(doc, 'twitter:title') || \n doc.querySelector('title')?.textContent || \n 'Untitled';\n \n const description = extractMetaContent(doc, 'og:description') || \n extractMetaContent(doc, 'twitter:description') || \n extractMetaContent(doc, 'description') || \n '';\n \n let image = extractMetaContent(doc, 'og:image') || \n extractMetaContent(doc, 'twitter:image') || \n '';\n \n // Handle relative image URLs\n if (image && !image.startsWith('http')) {\n try {\n const baseUrl = new URL(targetUrl);\n image = new URL(image, baseUrl.origin).href;\n } catch (e) {\n image = '';\n }\n }\n \n const domain = new URL(targetUrl).hostname;\n\n // Final check before setting state\n if (!abortController.signal.aborted) {\n setLinkPreview({\n url: targetUrl,\n title: title.trim(),\n description: description.trim(),\n image: image.trim(),\n domain\n });\n \n setShowLinkPreview(true);\n }\n } else {\n if (!abortController.signal.aborted) {\n setError('Unable to fetch link preview');\n }\n }\n } catch (error: any) {\n // Don't set error if request was aborted\n if (error.name === 'AbortError' || abortController.signal.aborted) {\n return;\n }\n console.error('Error fetching link preview:', error);\n if (!abortController.signal.aborted) {\n setError('Failed to load preview');\n }\n } finally {\n if (!abortController.signal.aborted) {\n setIsFetchingPreview(false);\n }\n // Clear the abort controller if it's the current one\n if (abortControllerRef.current === abortController) {\n abortControllerRef.current = null;\n }\n }\n }, [apiBaseUrl, agencyId, apiKey]);\n\n useEffect(() => {\n // Clear the fetched URLs cache when URL changes\n fetchedUrlsRef.current.clear();\n \n if (autoFetch && url) {\n fetchLinkPreview(url);\n }\n\n // Cleanup: abort any in-flight request when component unmounts or dependencies change\n return () => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = null;\n }\n };\n }, [url, autoFetch, fetchLinkPreview]);\n\n const handleImageError = (event: React.SyntheticEvent<HTMLImageElement>) => {\n const target = event.target as HTMLImageElement;\n if (target) {\n target.style.display = 'none';\n }\n };\n\n const handleCloseClick = () => {\n setLinkPreview(null);\n setShowLinkPreview(false);\n setIsFetchingPreview(false);\n setError(null);\n onClose?.();\n };\n\n if (!showLinkPreview && !isFetchingPreview && !error) {\n return null;\n }\n\n return (\n <div className={`fusioni-url-preview ${compact ? 'fusioni-url-preview-compact' : ''}`}>\n {isFetchingPreview && (\n <div className=\"fusioni-url-preview-loading\">\n <div className=\"fusioni-url-preview-spinner\"></div>\n <span>Loading preview...</span>\n </div>\n )}\n\n {error && (\n <div className=\"fusioni-url-preview-error\">\n <span>Failed to load preview</span>\n {showCloseButton && (\n <button \n className=\"fusioni-url-preview-close\"\n onClick={handleCloseClick}\n aria-label=\"Close preview\"\n >\n ×\n </button>\n )}\n </div>\n )}\n\n {linkPreview && (\n <div className=\"fusioni-url-preview-content\">\n {showCloseButton && (\n <button \n className=\"fusioni-url-preview-close\"\n onClick={handleCloseClick}\n aria-label=\"Close preview\"\n >\n ×\n </button>\n )}\n \n <a \n href={linkPreview.url} \n target=\"_blank\" \n rel=\"noopener noreferrer\"\n className=\"fusioni-url-preview-link\"\n >\n {linkPreview.image && (\n <div className=\"fusioni-url-preview-image\">\n <img\n src={linkPreview.image}\n alt={linkPreview.title}\n onError={handleImageError}\n />\n </div>\n )}\n \n <div className=\"fusioni-url-preview-text\">\n <div className=\"fusioni-url-preview-title\">\n {linkPreview.title}\n </div>\n \n {linkPreview.description && (\n <div className=\"fusioni-url-preview-description\">\n {linkPreview.description}\n </div>\n )}\n \n <div className=\"fusioni-url-preview-domain\">\n {linkPreview.domain}\n </div>\n </div>\n </a>\n </div>\n )}\n </div>\n );\n};\n","import React, { useState, useEffect } from 'react';\n\nexport interface MapProps {\n lat: string | number;\n lng: string | number;\n zoom?: string | number;\n staticMap?: boolean;\n width?: number;\n height?: number;\n apiBaseUrl?: string;\n apiKey?: string;\n agencyId: string;\n}\n\nexport const Map: React.FC<MapProps> = ({\n lat,\n lng,\n zoom = 10,\n staticMap = true,\n width = 600,\n height = 400,\n apiBaseUrl = '',\n apiKey,\n agencyId\n}) => {\n const [mapUrl, setMapUrl] = useState<string>('');\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n const getStaticMap = async (latNum: number, lngNum: number, zoomNum: number): Promise<void> => {\n try {\n const params = new URLSearchParams({\n lat: latNum.toString(),\n lng: lngNum.toString(),\n zoom: zoomNum.toString(),\n agency_id: agencyId\n });\n\n const headers: HeadersInit = {\n 'Accept': 'image/*'\n };\n\n // Add Authorization header with ApiKey format if API key is provided\n if (apiKey) {\n headers['Authorization'] = `ApiKey ${apiKey}`;\n }\n\n const response = await fetch(`${apiBaseUrl}/map/static?${params}`, {\n method: 'GET',\n headers\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch static map: ${response.status} ${response.statusText}`);\n }\n\n const blob = await response.blob();\n const objectUrl = URL.createObjectURL(blob);\n setMapUrl(objectUrl);\n } catch (err) {\n console.error('Error fetching static map:', err);\n setError(`Failed to load map: ${err instanceof Error ? err.message : 'Unknown error'}`);\n }\n };\n\n useEffect(() => {\n if (!lat || !lng) {\n setError('Invalid coordinates provided');\n setIsLoading(false);\n return;\n }\n\n const latNum = typeof lat === 'string' ? parseFloat(lat) : lat;\n const lngNum = typeof lng === 'string' ? parseFloat(lng) : lng;\n const zoomNum = typeof zoom === 'string' ? parseInt(zoom) : zoom;\n\n if (isNaN(latNum) || isNaN(lngNum)) {\n setError('Invalid coordinate format');\n setIsLoading(false);\n return;\n }\n\n const loadMap = async () => {\n setIsLoading(true);\n setError(null);\n\n if (staticMap) {\n // Use the relative endpoint for static maps\n await getStaticMap(latNum, lngNum, zoomNum);\n } else {\n // For interactive maps, use Google Maps embed\n setMapUrl(`https://maps.google.com/maps?q=${latNum},${lngNum}&output=embed`);\n }\n\n setIsLoading(false);\n };\n\n loadMap();\n }, [lat, lng, zoom, staticMap, width, height, apiBaseUrl, apiKey]);\n\n // Cleanup blob URL on unmount to prevent memory leaks\n useEffect(() => {\n return () => {\n if (mapUrl && mapUrl.startsWith('blob:')) {\n URL.revokeObjectURL(mapUrl);\n }\n };\n }, [mapUrl]);\n\n if (error) {\n return (\n <div className=\"fusioni-map-error\">\n <div className=\"fusioni-map-error-content\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <line\n x1=\"15\"\n y1=\"9\"\n x2=\"9\"\n y2=\"15\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <line\n x1=\"9\"\n y1=\"9\"\n x2=\"15\"\n y2=\"15\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n </svg>\n <span>{error}</span>\n </div>\n </div>\n );\n }\n\n if (isLoading) {\n return (\n <div className=\"fusioni-map-loading\">\n <div className=\"fusioni-map-loading-content\">\n <div className=\"fusioni-map-loading-spinner\"></div>\n <span>Loading map...</span>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"fusioni-map-container\">\n {staticMap ? (\n <div className=\"fusioni-map-static\">\n <img\n src={mapUrl}\n alt={`Map showing location at ${lat}, ${lng}`}\n width={width}\n height={height}\n className=\"fusioni-map-image\"\n onError={() => setError('Failed to load map image')}\n />\n </div>\n ) : (\n <div className=\"fusioni-map-interactive\">\n <iframe\n src={mapUrl}\n width={width}\n height={height}\n style={{ border: 0 }}\n loading=\"lazy\"\n allowFullScreen\n title={`Map showing location at ${lat}, ${lng}`}\n className=\"fusioni-map-iframe\"\n />\n </div>\n )}\n </div>\n );\n};\n","import React, { useEffect, useState } from 'react';\n\nexport const GALLERY_STRIP_MAX_ROWS = 2;\n\nexport interface PaginatedGalleryStripProps {\n itemCount: number;\n columns: number;\n page: number;\n onPageChange: (page: number) => void;\n /** Render one cell for global index `globalIndex` (0 .. itemCount-1) */\n renderCell: (globalIndex: number) => React.ReactNode;\n /** BEM-style modifier: \"document\" | \"lightbox\" for theme-specific dots/buttons */\n variant: 'document' | 'lightbox';\n}\n\n/**\n * Horizontal slide of pages, each a grid with `columns` × {@link GALLERY_STRIP_MAX_ROWS} cells.\n * Dot indicators when there is more than one page (fusioni-web assistant bubble pattern).\n */\nexport const PaginatedGalleryStrip: React.FC<PaginatedGalleryStripProps> = ({\n itemCount,\n columns,\n page,\n onPageChange,\n renderCell,\n variant,\n}) => {\n const pageSize = columns * GALLERY_STRIP_MAX_ROWS;\n const pageCount = itemCount > 0 ? Math.ceil(itemCount / pageSize) : 0;\n\n if (pageCount === 0) return null;\n\n const pageIndexes = Array.from({ length: pageCount }, (_, pi) => {\n const start = pi * pageSize;\n const len = Math.min(pageSize, itemCount - start);\n return Array.from({ length: len }, (_, j) => start + j);\n });\n\n const rootMod = `fusioni-gallery-strip--${variant}`;\n\n return (\n <div className={`fusioni-gallery-strip ${rootMod}`}>\n <div className=\"fusioni-gallery-strip-viewport\">\n <div\n className=\"fusioni-gallery-strip-track\"\n style={{ marginLeft: `-${page * 100}%` }}\n >\n {pageIndexes.map((globalIndices, pi) => (\n <div key={pi} className=\"fusioni-gallery-strip-page\">\n <div\n className=\"fusioni-gallery-strip-grid\"\n style={{\n gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`,\n }}\n >\n {globalIndices.map((gi) => (\n <div key={gi} className=\"fusioni-gallery-strip-cell\">\n {renderCell(gi)}\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n {pageCount > 1 && (\n <div className=\"fusioni-gallery-strip-dots\" role=\"tablist\" aria-label=\"Image pages\">\n {Array.from({ length: pageCount }, (_, i) => (\n <button\n key={i}\n type=\"button\"\n role=\"tab\"\n aria-selected={i === page}\n aria-label={`Go to page ${i + 1} of ${pageCount}`}\n className={`fusioni-gallery-strip-dot ${i === page ? 'fusioni-gallery-strip-dot-active' : ''}`}\n onClick={() => onPageChange(i)}\n />\n ))}\n </div>\n )}\n </div>\n );\n};\n\n/** Match fusioni-web / Tailwind `sm`: 2 columns below 640px, 3 at 640px+. */\nexport function useGalleryStripColumns(): 2 | 3 {\n const [cols, setCols] = useState<2 | 3>(2);\n useEffect(() => {\n const mq = window.matchMedia('(min-width: 640px)');\n const update = () => setCols(mq.matches ? 3 : 2);\n update();\n mq.addEventListener('change', update);\n return () => mq.removeEventListener('change', update);\n }, []);\n return cols;\n}\n","import React, {useEffect, useMemo, useRef, useState} from 'react';\nimport {MessageProps} from '../types';\nimport {UrlPreview} from './UrlPreview';\nimport {Map} from './Map';\nimport {useTranslation} from '../hooks/useTranslation';\nimport {GALLERY_STRIP_MAX_ROWS, PaginatedGalleryStrip, useGalleryStripColumns} from './PaginatedGalleryStrip';\n\ninterface DocumentImageGridProps {\n images: string[];\n onOpenGallery: (payload: { images: string[]; index: number }) => void;\n attachedImagesLabel: string;\n}\n\ninterface DocumentVideoGridProps {\n videos: string[];\n attachedVideosLabel: string;\n}\n\nconst DocumentImageGrid: React.FC<DocumentImageGridProps> = ({\n images,\n onOpenGallery,\n attachedImagesLabel,\n}) => {\n const cols = useGalleryStripColumns();\n const [visible, setVisible] = useState<string[]>(images);\n const [page, setPage] = useState(0);\n const pageSize = cols * GALLERY_STRIP_MAX_ROWS;\n const pageCount = visible.length > 0 ? Math.ceil(visible.length / pageSize) : 0;\n const prevPageSizeRef = useRef(pageSize);\n\n useEffect(() => setVisible(images), [images]);\n\n useEffect(() => {\n const old = prevPageSizeRef.current;\n if (old !== pageSize && old > 0 && pageSize > 0) {\n setPage((p) => {\n const firstGlobal = p * old;\n const np = Math.floor(firstGlobal / pageSize);\n const pc = visible.length > 0 ? Math.ceil(visible.length / pageSize) : 0;\n return pc <= 0 ? 0 : Math.min(Math.max(0, np), pc - 1);\n });\n }\n prevPageSizeRef.current = pageSize;\n }, [pageSize, visible.length]);\n\n useEffect(() => {\n setPage((p) => {\n if (pageCount <= 0) return 0;\n return Math.min(p, pageCount - 1);\n });\n }, [pageCount]);\n\n if (!visible.length) return null;\n\n return (\n <div className=\"fusioni-document-images\">\n <div className=\"fusioni-document-images-header\">\n <span className=\"fusioni-document-images-header-label\">\n <svg\n className=\"fusioni-document-images-header-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n aria-hidden=\"true\"\n >\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\" />\n <path d=\"M21 15l-5-5L5 21\" />\n </svg>\n {attachedImagesLabel}\n </span>\n </div>\n <PaginatedGalleryStrip\n variant=\"document\"\n itemCount={visible.length}\n columns={cols}\n page={page}\n onPageChange={setPage}\n renderCell={(gi) => {\n const img = visible[gi];\n return (\n <button\n type=\"button\"\n className=\"fusioni-document-image-btn\"\n aria-label={`Preview attached image ${gi + 1}`}\n onClick={() => onOpenGallery({images: visible, index: gi})}\n >\n <div className=\"fusioni-document-image-aspect\">\n <img\n src={img}\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n referrerPolicy=\"no-referrer\"\n onError={() => setVisible((v) => v.filter((u) => u !== img))}\n />\n </div>\n </button>\n );\n }}\n />\n </div>\n );\n};\n\nconst DocumentVideoGrid: React.FC<DocumentVideoGridProps> = ({\n videos,\n attachedVideosLabel,\n}) => {\n const cols = useGalleryStripColumns();\n const [visible, setVisible] = useState<string[]>(videos);\n const [page, setPage] = useState(0);\n const pageSize = cols * GALLERY_STRIP_MAX_ROWS;\n const pageCount = visible.length > 0 ? Math.ceil(visible.length / pageSize) : 0;\n const prevPageSizeRef = useRef(pageSize);\n\n useEffect(() => setVisible(videos), [videos]);\n\n useEffect(() => {\n const old = prevPageSizeRef.current;\n if (old !== pageSize && old > 0 && pageSize > 0) {\n setPage((p) => {\n const firstGlobal = p * old;\n const np = Math.floor(firstGlobal / pageSize);\n const pc = visible.length > 0 ? Math.ceil(visible.length / pageSize) : 0;\n return pc <= 0 ? 0 : Math.min(Math.max(0, np), pc - 1);\n });\n }\n prevPageSizeRef.current = pageSize;\n }, [pageSize, visible.length]);\n\n useEffect(() => {\n setPage((p) => {\n if (pageCount <= 0) return 0;\n return Math.min(p, pageCount - 1);\n });\n }, [pageCount]);\n\n if (!visible.length) return null;\n\n return (\n <div className=\"fusioni-document-videos\">\n <div className=\"fusioni-document-videos-header\">\n <span className=\"fusioni-document-videos-header-label\">\n <svg\n className=\"fusioni-document-videos-header-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n aria-hidden=\"true\"\n >\n <polygon points=\"23 7 16 12 23 17 23 7\" />\n <rect x=\"1\" y=\"5\" width=\"15\" height=\"14\" rx=\"2\" ry=\"2\" />\n </svg>\n {attachedVideosLabel}\n </span>\n </div>\n <PaginatedGalleryStrip\n variant=\"document\"\n itemCount={visible.length}\n columns={cols}\n page={page}\n onPageChange={setPage}\n renderCell={(gi) => {\n const vid = visible[gi];\n return (\n <div className=\"fusioni-document-video-wrap\" aria-label={`Attached video ${gi + 1}`}>\n <div className=\"fusioni-document-video-aspect\">\n <video\n src={vid}\n controls\n preload=\"metadata\"\n playsInline\n onError={() => setVisible((v) => v.filter((u) => u !== vid))}\n />\n </div>\n </div>\n );\n }}\n />\n </div>\n );\n};\n\n// Module-level Set to track which message IDs have been animated\n// This persists across component unmounts/remounts (e.g., when chat closes and reopens)\nconst animatedMessageIds = new Set<string>();\n\nexport const Message: React.FC<MessageProps> = ({\n message,\n showThoughts = false,\n fontSize = 'text-sm',\n onDelete,\n onConfirmation,\n enableButtons = true,\n apiBaseUrl,\n apiKey,\n agencyId,\n currentLanguage = 'en',\n onOpenGallery\n }) => {\n const {t} = useTranslation(currentLanguage);\n const [displayedContent, setDisplayedContent] = useState<string>('');\n const typingIntervalRef = useRef<NodeJS.Timeout | null>(null);\n const typingSpeed = 15; // milliseconds per character\n\n const enhanceMessageContent = (content: string): string => {\n if (!content) return content;\n\n // Check if content contains <pre> <code> blocks with escaped HTML\n const preCodeRegex = /<pre><code>([\\s\\S]*?)<\\/code><\\/pre>/gi;\n\n // Use replace it with a callback to handle all matches\n return content.replace(preCodeRegex, (match, escapedHtml) => {\n // Decode HTML entities: decode &amp; last to avoid interfering with other entities\n // &lt; -> <, &gt; -> >, &quot; -> \", &#39; -> ', &amp; -> &\n // Replace the <pre> <code> block with the decoded HTML\n return escapedHtml\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&quot;/g, '\"')\n .replace(/&#39;/g, \"'\")\n .replace(/&amp;/g, '&');\n });\n\n };\n\n const extractUrlsFromContent = (content: string): string[] => {\n if (!content) return [];\n\n // URL regex pattern that matches http/https URLs\n const urlRegex = /(https?:\\/\\/[^\\s<>\"{}|\\\\^`[\\]]+)/gi;\n const urls = content.match(urlRegex) || [];\n\n // Remove duplicates and return\n return [...new Set(urls)];\n };\n\n const renderImage = (imageUrl: string) => {\n if (!imageUrl) return null;\n const imgEl = (\n <img\n src={imageUrl}\n alt=\"Uploaded image\"\n className={`fusioni-image${onOpenGallery ? ' fusioni-image-clickable' : ''}`}\n onError={(e) => {\n const target = e.target as HTMLImageElement;\n target.style.display = 'none';\n }}\n />\n );\n return (\n <div className=\"fusioni-message-image\">\n {onOpenGallery ? (\n <button\n type=\"button\"\n className=\"fusioni-image-clickable-wrap\"\n aria-label=\"Open image in gallery\"\n onClick={() => onOpenGallery({images: [imageUrl], index: 0})}\n >\n {imgEl}\n </button>\n ) : (\n imgEl\n )}\n </div>\n );\n };\n\n const renderAudio = (audioRef: string, duration?: number) => {\n return (\n <div className=\"fusioni-message-audio\">\n <div className=\"fusioni-audio-header\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M12 1C10.34 1 9 2.34 9 4V12C9 13.66 10.34 15 12 15C13.66 15 15 13.66 15 12V4C15 2.34 13.66 1 12 1Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M19 10V12C19 15.87 15.87 19 12 19C8.13 19 5 15.87 5 12V10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"12\"\n y1=\"19\"\n x2=\"12\"\n y2=\"23\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"8\"\n y1=\"23\"\n x2=\"16\"\n y2=\"23\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <span>Audio Message</span>\n {duration && <span className=\"fusioni-audio-duration\">({duration}s)</span>}\n </div>\n <audio\n src={audioRef}\n controls\n className=\"fusioni-audio-player\"\n preload=\"metadata\"\n >\n Your browser does not support the audio element.\n </audio>\n </div>\n );\n };\n\n const renderMap = (coordinates: { lat: number; lon: number; zoom?: number }) => {\n // For now, we'll show coordinates. In a real implementation, you'd integrate with a map service\n return (\n <div className=\"fusioni-message-map\">\n <div className=\"fusioni-map-placeholder\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M21 10C21 17 12 23 12 23S3 17 3 10C3 7.61305 3.94821 5.32387 5.63604 3.63604C7.32387 1.94821 9.61305 1 12 1C14.3869 1 16.6761 1.94821 18.3639 3.63604C20.0518 5.32387 21 7.61305 21 10Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle\n cx=\"12\"\n cy=\"10\"\n r=\"3\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n </svg>\n <p>Location: {coordinates.lat.toFixed(4)}, {coordinates.lon.toFixed(4)}</p>\n </div>\n </div>\n );\n };\n\n const getMessageClasses = () => {\n const baseClasses = `fusioni-message-bubble ${fontSize}`;\n const roleClasses = message.role === 'user'\n ? 'fusioni-message-user'\n : 'fusioni-message-assistant';\n const errorClasses = message.has_error ? 'fusioni-message-error' : '';\n\n return `${baseClasses} ${roleClasses} ${errorClasses}`.trim();\n };\n\n const sendConfirmation = (confirmed: 'Confirmed' | 'NotConfirmed', key?: string) => {\n if (onConfirmation && key) {\n onConfirmation({\n confirmed,\n key\n });\n }\n };\n\n // Typing effect implementation\n useEffect(() => {\n // Clear any existing typing animation\n if (typingIntervalRef.current) {\n clearTimeout(typingIntervalRef.current);\n }\n\n // Safety check: ensure message exists\n if (!message) {\n setDisplayedContent('');\n return;\n }\n\n // If a message is loading or has no content, reset displayed content\n if (message.loading || !message.content) {\n setDisplayedContent('');\n return;\n }\n\n // Check if this message has already been animated\n const messageId = message.id || '';\n \n // Only animate if shouldAnimate flag is set AND we haven't animated this message yet\n // This prevents re-animation when chat is closed and reopened\n // The animatedMessageIds Set persists across component unmounts/remounts\n if (!message.shouldAnimate || animatedMessageIds.has(messageId)) {\n setDisplayedContent(message.content);\n return;\n }\n\n // Reset displayed content\n setDisplayedContent('');\n // Type the same HTML string that will be rendered (after any transformations),\n // otherwise we can end up animating an HTML-escaped variant.\n const fullContent = enhanceMessageContent(message.content);\n\n // Parse content into segments: text segments and HTML tag segments.\n // Important: this parser is quote-aware so it won't break on `>` inside quoted attributes.\n const segments: Array<{ type: 'text' | 'tag'; content: string }> = [];\n const readTagAt = (html: string, start: number): { tag: string; end: number } | null => {\n if (html[start] !== '<') return null;\n\n // Handle comments: <!-- ... -->\n if (html.startsWith('<!--', start)) {\n const endIdx = html.indexOf('-->', start + 4);\n if (endIdx === -1) return { tag: html.slice(start), end: html.length };\n return { tag: html.slice(start, endIdx + 3), end: endIdx + 3 };\n }\n\n let i = start + 1;\n let quote: '\"' | \"'\" | null = null;\n\n while (i < html.length) {\n const ch = html[i];\n if (quote) {\n if (ch === quote) quote = null;\n i++;\n continue;\n }\n if (ch === '\"' || ch === \"'\") {\n quote = ch;\n i++;\n continue;\n }\n if (ch === '>') {\n return { tag: html.slice(start, i + 1), end: i + 1 };\n }\n i++;\n }\n\n // No closing `>` found; treat the remainder as text to avoid exposing partial tags.\n return null;\n };\n\n let currentIndex = 0;\n while (currentIndex < fullContent.length) {\n const nextLt = fullContent.indexOf('<', currentIndex);\n if (nextLt === -1) {\n segments.push({ type: 'text', content: fullContent.slice(currentIndex) });\n break;\n }\n if (nextLt > currentIndex) {\n segments.push({ type: 'text', content: fullContent.slice(currentIndex, nextLt) });\n }\n const maybeTag = readTagAt(fullContent, nextLt);\n if (maybeTag) {\n segments.push({ type: 'tag', content: maybeTag.tag });\n currentIndex = maybeTag.end;\n } else {\n // Not a valid tag; emit the `<` as text and keep going.\n segments.push({ type: 'text', content: '<' });\n currentIndex = nextLt + 1;\n }\n }\n\n // Now animate through segments\n let segmentIndex = 0;\n let textIndex = 0;\n\n const nextTextStep = (text: string, index: number): { nextIndex: number; slice: string } => {\n if (index >= text.length) return { nextIndex: index, slice: '' };\n const ch = text[index];\n\n // Treat HTML entities as atomic \"characters\" so we don't type partial `&...;`.\n if (ch === '&') {\n const rest = text.slice(index);\n const entityMatch = rest.match(/^&(#\\d+|#x[0-9a-fA-F]+|[a-zA-Z][a-zA-Z0-9]+);/);\n if (entityMatch) {\n return { nextIndex: index + entityMatch[0].length, slice: text.slice(0, index + entityMatch[0].length) };\n }\n }\n\n return { nextIndex: index + 1, slice: text.slice(0, index + 1) };\n };\n\n const typeNextChar = () => {\n if (segmentIndex >= segments.length) {\n // Typing complete - mark this message as animated in the persistent Set\n setDisplayedContent(fullContent);\n animatedMessageIds.add(messageId);\n return;\n }\n\n const segment = segments[segmentIndex];\n\n if (segment.type === 'tag') {\n // HTML tags are added immediately without animation\n // Build content up to and including this tag\n let content = '';\n for (let i = 0; i <= segmentIndex; i++) {\n content += segments[i].content;\n }\n setDisplayedContent(content);\n segmentIndex++;\n textIndex = 0;\n // Continue immediately for tags (no delay)\n typingIntervalRef.current = setTimeout(typeNextChar, 0);\n } else {\n // Text segments are typed character by character\n if (textIndex < segment.content.length) {\n const step = nextTextStep(segment.content, textIndex);\n if (!step.slice) {\n segmentIndex++;\n textIndex = 0;\n typingIntervalRef.current = setTimeout(typeNextChar, 0);\n return;\n }\n\n // Build content: all previous segments + current segment slice\n let content = '';\n for (let i = 0; i < segmentIndex; i++) {\n content += segments[i].content;\n }\n content += step.slice;\n setDisplayedContent(content);\n textIndex = step.nextIndex;\n typingIntervalRef.current = setTimeout(typeNextChar, typingSpeed);\n } else {\n // Current text segment is complete, move to next segment\n segmentIndex++;\n textIndex = 0;\n typingIntervalRef.current = setTimeout(typeNextChar, 0);\n }\n }\n };\n\n // Start typing\n typeNextChar();\n\n // Cleanup function\n return () => {\n if (typingIntervalRef.current) {\n clearTimeout(typingIntervalRef.current);\n }\n };\n }, [message?.content, message?.shouldAnimate, message?.loading, typingSpeed]);\n\n // Determine which content to display\n // If animating, use displayedContent (which starts empty and fills up)\n // If not animating, always use message.content directly\n const contentToDisplay = message.shouldAnimate\n ? displayedContent\n : message.content;\n const extractedUrls = useMemo(() => extractUrlsFromContent(message.content), [message.content]);\n\n const hasVisibleWhileLoading =\n Boolean(message.extra_data) ||\n (showThoughts && Boolean(message.thoughts)) ||\n Boolean(message.has_error);\n const collapseEmptyLoadingBubble = Boolean(message.loading) && !hasVisibleWhileLoading;\n\n return (\n <div\n className={`${getMessageClasses()}${\n collapseEmptyLoadingBubble ? ' fusioni-message-bubble--loading-empty' : ''\n }`.trim()}\n >\n {/* Main content — hidden while loading (parity with Angular assistant bubble) */}\n {message.content && !message.loading && (\n <div\n className=\"fusioni-message-text\"\n dangerouslySetInnerHTML={{\n __html: enhanceMessageContent(contentToDisplay)\n }}\n />\n )}\n\n {/* URL Previews for message content */}\n {!message.loading && extractedUrls.length > 0 && message.role !== 'user' && (\n <div className=\"fusioni-message-url-previews\">\n {extractedUrls.map((url) => (\n <UrlPreview\n key={url}\n url={url}\n agencyId={agencyId}\n showCloseButton={false}\n compact={true}\n autoFetch={true}\n apiBaseUrl={apiBaseUrl}\n apiKey={apiKey}\n />\n ))}\n </div>\n )}\n\n {/* Extra data rendering */}\n {message.extra_data && (\n <div className=\"fusioni-message-extra m2\">\n {message.extra_data.document_images &&\n message.extra_data.document_images.length > 0 &&\n onOpenGallery && (\n <DocumentImageGrid\n images={message.extra_data.document_images}\n onOpenGallery={onOpenGallery}\n attachedImagesLabel={t('chat.attachedImages')}\n />\n )}\n\n {message.extra_data.document_videos &&\n message.extra_data.document_videos.length > 0 && (\n <DocumentVideoGrid\n videos={message.extra_data.document_videos}\n attachedVideosLabel={t('chat.attachedVideos')}\n />\n )}\n\n {message.extra_data.image && renderImage(message.extra_data.image)}\n\n {message.extra_data.image_ref && renderImage(message.extra_data.image_ref)}\n\n {message.extra_data.audio_ref && renderAudio(\n message.extra_data.audio_ref,\n message.extra_data.duration\n )}\n\n {message.extra_data.coordinates && renderMap(message.extra_data.coordinates)}\n\n {message.extra_data.map && (\n <div className=\"fusioni-message-map\">\n <Map\n lat={message.extra_data.map.lat}\n lng={message.extra_data.map.lng}\n zoom={message.extra_data.map.zoom}\n staticMap={true}\n width={600}\n height={400}\n apiBaseUrl={apiBaseUrl}\n apiKey={apiKey}\n agencyId={agencyId}\n />\n </div>\n )}\n </div>\n )}\n\n {/* Confirmation Widget */}\n {message.extra_data?.widget === 'Confirmation' && (\n <div className=\"fusioni-confirmation-widget\">\n <button\n type=\"button\"\n disabled={!enableButtons}\n onClick={() => sendConfirmation('Confirmed', message.extra_data?.key)}\n className=\"fusioni-btn fusioni-btn-primary fusioni-btn-confirm\"\n >\n {t('common.yes')}\n </button>\n <button\n type=\"button\"\n disabled={!enableButtons}\n onClick={() => sendConfirmation('NotConfirmed', message.extra_data?.key)}\n className=\"fusioni-btn fusioni-btn-secondary fusioni-btn-cancel\"\n >\n {t('common.no')}\n </button>\n </div>\n )}\n\n {/* Thoughts (if enabled) */}\n {showThoughts && message.thoughts && (\n <div className=\"fusioni-message-thoughts\">\n <details>\n <summary>AI Thoughts</summary>\n <p>{message.thoughts}</p>\n </details>\n </div>\n )}\n\n {/* Error state */}\n {message.has_error && (\n <div className=\"fusioni-message-error-indicator\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <line\n x1=\"15\"\n y1=\"9\"\n x2=\"9\"\n y2=\"15\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <line\n x1=\"9\"\n y1=\"9\"\n x2=\"15\"\n y2=\"15\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n </svg>\n <span>Error occurred</span>\n </div>\n )}\n </div>\n );\n};\n","import React, { useEffect, useRef } from 'react';\n\nexport interface SpotlightProps {\n text: string;\n className?: string;\n}\n\nconst DURATION_MS = 2500;\n\nexport const Spotlight: React.FC<SpotlightProps> = ({ text, className }) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const startRef = useRef(0);\n const frameRef = useRef<number | null>(null);\n\n useEffect(() => {\n startRef.current = performance.now();\n const tick = (): void => {\n const elapsed = performance.now() - startRef.current;\n const period = DURATION_MS * 2;\n const t = (elapsed % period) / DURATION_MS;\n const x = t <= 1 ? t * 100 : (2 - t) * 100;\n const el = rootRef.current;\n if (el) {\n el.style.setProperty('--mask-x', `${x}%`);\n el.style.setProperty('--mask-y', '50%');\n }\n frameRef.current = requestAnimationFrame(tick);\n };\n frameRef.current = requestAnimationFrame(tick);\n return () => {\n if (frameRef.current != null) {\n cancelAnimationFrame(frameRef.current);\n }\n };\n }, []);\n\n return (\n <div ref={rootRef} className={className ? `fusioni-spotlight ${className}` : 'fusioni-spotlight'}>\n <div className=\"fusioni-spotlight-title\">\n <span className=\"fusioni-spotlight-text-base\">{text}</span>\n <span className=\"fusioni-spotlight-text-overlay\" aria-hidden=\"true\">\n {text}\n </span>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport {Spotlight} from './Spotlight';\nimport {FUSIONI_LOGO_BASE64} from '../assets/logo-base64';\n\nexport interface MessageStreamLoadingProps {\n streamMessages: string[];\n loadingLabel: string;\n}\n\n/** Logo + Spotlight: SSE stream lines, or loading label until first stream event */\nexport const MessageStreamLoading: React.FC<MessageStreamLoadingProps> = ({\n streamMessages,\n loadingLabel,\n}) => {\n const lines = streamMessages.length > 0 ? streamMessages : [loadingLabel];\n\n return (\n <div className=\"fusioni-stream-messages\">\n {lines.map((line, index) => (\n <div\n key={streamMessages.length > 0 ? `${index}-${line}` : 'loading-placeholder'}\n className=\"fusioni-stream-message-item\"\n >\n <div className=\"fusioni-stream-message-logo-wrap\">\n <div className=\"fusioni-stream-message-logo-frame\">\n <img\n className=\"fusioni-stream-message-logo-img\"\n src={FUSIONI_LOGO_BASE64}\n alt=\"\"\n width={32}\n height={32}\n />\n </div>\n </div>\n <Spotlight className=\"fusioni-stream-message-spotlight\" text={line} />\n </div>\n ))}\n </div>\n );\n};\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { GALLERY_STRIP_MAX_ROWS, PaginatedGalleryStrip, useGalleryStripColumns } from './PaginatedGalleryStrip';\n\nexport interface ImageGalleryProps {\n images: string[];\n initialIndex?: number;\n onClose: () => void;\n /** Used for overlay gradient when rendered outside `.fusioni-chat-widget` (e.g. portal). */\n theme?: 'light' | 'dark';\n}\n\n/**\n * Full-screen image lightbox: main image + prev/next, keyboard nav,\n * and a two-row thumbnail strip with horizontal pages and dot indicators (fusioni-web parity).\n */\nexport const ImageGallery: React.FC<ImageGalleryProps> = ({\n images,\n initialIndex = 0,\n onClose,\n theme = 'light',\n}) => {\n const cols = useGalleryStripColumns();\n const pageSize = cols * GALLERY_STRIP_MAX_ROWS;\n\n const [currentIndex, setCurrentIndex] = useState(() => {\n if (!images?.length) return 0;\n return Math.max(0, Math.min(initialIndex, images.length - 1));\n });\n const [isTransitioning, setIsTransitioning] = useState(false);\n const galleryStateRef = useRef({ index: currentIndex, images });\n galleryStateRef.current = { index: currentIndex, images };\n\n const pageCount = useMemo(\n () => (images.length > 0 ? Math.ceil(images.length / pageSize) : 0),\n [images.length, pageSize]\n );\n\n const thumbPage =\n pageCount > 0 ? Math.min(Math.floor(currentIndex / pageSize), pageCount - 1) : 0;\n\n useEffect(() => {\n document.body.style.overflow = 'hidden';\n return () => {\n document.body.style.overflow = '';\n };\n }, []);\n\n const currentImage =\n images?.length && currentIndex >= 0 && currentIndex < images.length\n ? images[currentIndex]\n : null;\n\n const hasPrevious = (images?.length ?? 0) > 1 && currentIndex > 0;\n const hasNext = (images?.length ?? 0) > 1 && currentIndex < images.length - 1;\n const counterText =\n images?.length ? `${currentIndex + 1} / ${images.length}` : '';\n\n const resetTransitionFlag = useCallback(() => {\n window.setTimeout(() => setIsTransitioning(false), 300);\n }, []);\n\n const goPrevious = useCallback(() => {\n if (!hasPrevious || isTransitioning) return;\n setIsTransitioning(true);\n setCurrentIndex((i) => i - 1);\n resetTransitionFlag();\n }, [hasPrevious, isTransitioning, resetTransitionFlag]);\n\n const goNext = useCallback(() => {\n if (!hasNext || isTransitioning) return;\n setIsTransitioning(true);\n setCurrentIndex((i) => i + 1);\n resetTransitionFlag();\n }, [hasNext, isTransitioning, resetTransitionFlag]);\n\n const close = useCallback(() => {\n onClose();\n }, [onClose]);\n\n const onBackdropClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if ((event.target as HTMLElement).hasAttribute('data-gallery-backdrop')) {\n close();\n }\n };\n\n const onImageError = useCallback(() => {\n const { index: idx, images: imgs } = galleryStateRef.current;\n const len = imgs.length;\n if (len > 1 && idx < len - 1) {\n setIsTransitioning(true);\n setCurrentIndex(idx + 1);\n resetTransitionFlag();\n } else if (len > 1 && idx > 0) {\n setIsTransitioning(true);\n setCurrentIndex(idx - 1);\n resetTransitionFlag();\n } else {\n close();\n }\n }, [close, resetTransitionFlag]);\n\n useEffect(() => {\n const onKeydown = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'Escape':\n close();\n break;\n case 'ArrowLeft':\n event.preventDefault();\n goPrevious();\n break;\n case 'ArrowRight':\n event.preventDefault();\n goNext();\n break;\n default:\n break;\n }\n };\n document.addEventListener('keydown', onKeydown);\n return () => document.removeEventListener('keydown', onKeydown);\n }, [close, goPrevious, goNext]);\n\n const showThumbStrip = (images?.length ?? 0) > 1;\n\n if (!images?.length || !currentImage) {\n return null;\n }\n\n return (\n <div\n data-gallery-backdrop\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Image gallery\"\n className={`fusioni-image-gallery-overlay fusioni-image-gallery-theme-${theme} ${\n showThumbStrip ? 'fusioni-image-gallery-has-thumbs' : ''\n }`}\n onClick={onBackdropClick}\n >\n <div className=\"fusioni-image-gallery-topbar\">\n <div className=\"fusioni-image-gallery-topbar-spacer\" aria-hidden=\"true\" />\n <span className=\"fusioni-image-gallery-counter\">{counterText}</span>\n <button\n type=\"button\"\n className=\"fusioni-image-gallery-close\"\n onClick={close}\n aria-label=\"Close gallery\"\n >\n <svg className=\"fusioni-image-gallery-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <div className=\"fusioni-image-gallery-body\">\n <div className=\"fusioni-image-gallery-stage\">\n {hasPrevious && (\n <button\n type=\"button\"\n className=\"fusioni-image-gallery-nav fusioni-image-gallery-nav-prev\"\n onClick={(e) => {\n e.stopPropagation();\n goPrevious();\n }}\n aria-label=\"Previous image\"\n >\n <svg className=\"fusioni-image-gallery-icon-lg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 19l-7-7 7-7\" />\n </svg>\n </button>\n )}\n\n <div className=\"fusioni-image-gallery-content\" onClick={(e) => e.stopPropagation()} role=\"presentation\">\n <img\n src={currentImage}\n alt={`Gallery image ${currentIndex + 1} of ${images.length}`}\n className=\"fusioni-image-gallery-img\"\n referrerPolicy=\"no-referrer\"\n onError={onImageError}\n />\n </div>\n\n {hasNext && (\n <button\n type=\"button\"\n className=\"fusioni-image-gallery-nav fusioni-image-gallery-nav-next\"\n onClick={(e) => {\n e.stopPropagation();\n goNext();\n }}\n aria-label=\"Next image\"\n >\n <svg className=\"fusioni-image-gallery-icon-lg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n </svg>\n </button>\n )}\n </div>\n\n {showThumbStrip && (\n <div\n className=\"fusioni-image-gallery-thumbs-wrap\"\n onClick={(e) => e.stopPropagation()}\n role=\"presentation\"\n >\n <PaginatedGalleryStrip\n variant=\"lightbox\"\n itemCount={images.length}\n columns={cols}\n page={thumbPage}\n onPageChange={(p) => {\n setIsTransitioning(true);\n setCurrentIndex(p * pageSize);\n resetTransitionFlag();\n }}\n renderCell={(gi) => (\n <button\n type=\"button\"\n className={`fusioni-image-gallery-thumb ${\n gi === currentIndex ? 'fusioni-image-gallery-thumb-selected' : ''\n }`}\n aria-label={`Show image ${gi + 1}`}\n aria-current={gi === currentIndex ? 'true' : undefined}\n onClick={() => {\n if (gi === currentIndex) return;\n setIsTransitioning(true);\n setCurrentIndex(gi);\n resetTransitionFlag();\n }}\n >\n <img src={images[gi]} alt=\"\" loading=\"lazy\" referrerPolicy=\"no-referrer\" />\n </button>\n )}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { FusioniMemoryMessage } from '../types';\nimport { Message } from './Message';\nimport { MessageStreamLoading } from './MessageStreamLoading';\nimport { ChatLoader } from './ChatLoader';\nimport { useTranslation } from '../hooks/useTranslation';\nimport { ImageGallery } from './ImageGallery';\nimport { FUSIONI_LOGO_BASE64 } from '../assets/logo-base64';\n\ninterface MessageListProps {\n messages: FusioniMemoryMessage[];\n streamMessages: string[];\n showThoughts?: boolean;\n onDeleteMessage?: (messageId: string) => void;\n onEditMessage?: (payload: { messageId: string; content: string }) => void;\n onConfirmation?: (result: { confirmed: 'Confirmed' | 'NotConfirmed'; key?: string }) => void;\n enableButtons?: boolean;\n apiBaseUrl?: string;\n apiKey?: string;\n agencyId: string;\n currentLanguage?: 'en' | 'el';\n theme?: 'light' | 'dark';\n}\n\nexport const MessageList: React.FC<MessageListProps> = ({\n messages,\n streamMessages,\n showThoughts = false,\n onDeleteMessage,\n onEditMessage,\n onConfirmation,\n enableButtons = true,\n apiBaseUrl,\n apiKey,\n agencyId,\n currentLanguage = 'en',\n theme = 'light'\n}) => {\n const { t } = useTranslation(currentLanguage);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const editRef = useRef<HTMLDivElement>(null);\n const [editingMessageId, setEditingMessageId] = useState<string | null>(null);\n const [editingContent, setEditingContent] = useState('');\n const [gallerySession, setGallerySession] = useState<{\n key: number;\n images: string[];\n index: number;\n } | null>(null);\n\n const openGallery = useCallback((payload: { images: string[]; index: number }) => {\n setGallerySession((prev) => ({\n key: (prev?.key ?? 0) + 1,\n images: payload.images,\n index: payload.index,\n }));\n }, []);\n\n const scrollToBottom = () => {\n // Use double requestAnimationFrame to ensure DOM and layout have fully updated\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (scrollContainerRef.current) {\n // Scroll to the very bottom with smooth animation\n // This ensures the last message is fully visible\n const container = scrollContainerRef.current;\n container.scrollTo({\n top: container.scrollHeight,\n behavior: 'smooth'\n });\n }\n });\n });\n };\n\n useEffect(() => {\n scrollToBottom();\n }, [messages, streamMessages]);\n\n const formatDate = (date: Date): string => {\n const now = new Date();\n const diffInMilliseconds = now.getTime() - new Date(date).getTime();\n const diffInHours = diffInMilliseconds / (1000 * 60 * 60);\n \n if (diffInHours < 24) {\n if (diffInHours < 1) {\n const diffInMinutes = diffInMilliseconds / (1000 * 60);\n if (diffInMinutes < 1) {\n return 'Just now';\n }\n return `${Math.floor(diffInMinutes)} minutes ago`;\n } else {\n return `${Math.floor(diffInHours)} hours ago`;\n }\n }\n \n return new Date(date).toLocaleString('en-GB', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n });\n };\n\n const startEdit = (message: FusioniMemoryMessage) => {\n if (!message.id || message.loading || !onEditMessage) {\n return;\n }\n setEditingMessageId(message.id);\n setEditingContent(message.content ?? '');\n };\n\n const cancelEdit = () => {\n setEditingMessageId(null);\n setEditingContent('');\n };\n\n const confirmEdit = () => {\n if (!editingMessageId || !onEditMessage) {\n cancelEdit();\n return;\n }\n const updatedContent = editRef.current?.innerHTML ?? editingContent;\n if (updatedContent.trim() !== '') {\n onEditMessage({ messageId: editingMessageId, content: updatedContent });\n }\n cancelEdit();\n };\n\n useEffect(() => {\n if (!editingMessageId || !editRef.current) {\n return;\n }\n editRef.current.innerHTML = editingContent;\n editRef.current.focus();\n const selection = window.getSelection();\n if (selection) {\n const range = document.createRange();\n range.selectNodeContents(editRef.current);\n range.collapse(false);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }, [editingMessageId, editingContent]);\n\n return (\n <>\n <div className=\"fusioni-message-list\" ref={scrollContainerRef}>\n <div className=\"fusioni-messages-container\">\n {messages.length === 0 ? (\n <div className=\"fusioni-empty-messages\">\n <div className=\"fusioni-empty-messages-content\">\n <svg\n width=\"64\"\n height=\"64\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n className=\"fusioni-empty-icon\"\n >\n <path\n d=\"M21 15C21 15.5304 20.7893 16.0391 20.4142 16.4142C20.0391 16.7893 19.5304 17 19 17H7L3 21V5C3 4.46957 3.21071 3.96086 3.58579 3.58579C3.96086 3.21071 4.46957 3 5 3H19C19.5304 3 20.0391 3.21071 20.4142 3.58579C20.7893 3.96086 21 4.46957 21 5V15Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <h3>Start a conversation</h3>\n <p>Send a message to begin chatting with the AI assistant</p>\n </div>\n </div>\n ) : (\n <div className=\"fusioni-messages\">\n {messages.map((message, index) => {\n const isLastMessage = index === messages.length - 1;\n const messageKey =\n message.id ??\n `msg-fallback-${index}-${message.role}-${message.created instanceof Date ? message.created.getTime() : 0}`;\n return (\n <div key={messageKey} className=\"fusioni-message-wrapper\">\n <div className={`fusioni-message ${message.role}`}>\n {!(message.role === 'assistant' && message.loading) && (\n <div className=\"fusioni-message-avatar\">\n {message.role === 'user' ? (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M20 21V19C20 17.9391 19.5786 16.9217 18.8284 16.1716C18.0783 15.4214 17.0609 15 16 15H8C6.93913 15 5.92172 15.4214 5.17157 16.1716C4.42143 16.9217 4 17.9391 4 19V21\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle\n cx=\"12\"\n cy=\"7\"\n r=\"4\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n </svg>\n ) : (\n <img \n src={FUSIONI_LOGO_BASE64} \n alt=\"Fusioni Logo\" \n width=\"24\" \n height=\"24\"\n />\n )}\n </div>\n )}\n \n <div className=\"fusioni-message-content\">\n \n \n <div className=\"fusioni-message-body\">\n {message.role === 'user' && editingMessageId === message.id ? (\n <div\n ref={editRef}\n className=\"fusioni-message-text\"\n contentEditable\n suppressContentEditableWarning\n spellCheck\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n cancelEdit();\n }\n }}\n />\n ) : (\n <>\n {message.loading && (\n <MessageStreamLoading\n streamMessages={streamMessages}\n loadingLabel={t('chat.messages.loading')}\n />\n )}\n {!message.loading && (\n <Message\n message={message}\n showThoughts={showThoughts}\n onDelete={onDeleteMessage}\n onConfirmation={onConfirmation}\n enableButtons={enableButtons && isLastMessage}\n apiBaseUrl={apiBaseUrl}\n apiKey={apiKey}\n agencyId={agencyId}\n currentLanguage={currentLanguage}\n onOpenGallery={openGallery}\n />\n )}\n </>\n )}\n </div>\n\n {!message.loading && (\n <div className=\"fusioni-message-footer\">\n {/* <span className=\"fusioni-message-role\">\n {message.role === 'user' ? '' : 'Fusioni'}\n </span> */}\n <span className=\"fusioni-message-time\">\n {formatDate(message.created)}\n </span>\n {message.id && (onDeleteMessage || (message.role === 'user' && onEditMessage)) && (\n <div className=\"fusioni-message-actions\">\n {message.role === 'user' && editingMessageId === message.id ? (\n <>\n <button\n onClick={confirmEdit}\n className=\"fusioni-btn fusioni-btn-icon\"\n title=\"Save edit\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <polyline points=\"20 6 9 17 4 12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <button\n onClick={cancelEdit}\n className=\"fusioni-btn fusioni-btn-icon\"\n title=\"Cancel edit\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n </>\n ) : (\n <>\n {message.role === 'user' && onEditMessage && (\n <button\n onClick={() => startEdit(message)}\n className=\"fusioni-btn fusioni-btn-icon\"\n title=\"Edit message\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M12 20H21\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M16.5 3.5C16.8978 3.10218 17.4374 2.87868 18 2.87868C18.5626 2.87868 19.1022 3.10218 19.5 3.5C19.8978 3.89782 20.1213 4.43739 20.1213 5C20.1213 5.56261 19.8978 6.10218 19.5 6.5L7 19L3 20L4 16L16.5 3.5Z\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n )}\n {onDeleteMessage && (\n <button\n onClick={() => onDeleteMessage(message.id!)}\n className=\"fusioni-btn fusioni-btn-icon\"\n title=\"Delete message\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5H21\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M19 6V20C19 20.5304 18.7893 21.0391 18.4142 21.4142C18.0391 21.7893 17.5304 22 17 22H7C6.46957 22 5.96086 21.7893 5.58579 21.4142C5.21071 21.0391 5 20.5304 5 20V6H19Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n )}\n </>\n )}\n </div>\n )}\n </div>\n )}\n \n {showThoughts && message.thoughts && (\n <div className=\"fusioni-message-thoughts\">\n <details>\n <summary>Thoughts</summary>\n <p>{message.thoughts}</p>\n </details>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n <div ref={messagesEndRef} />\n </div>\n </div>\n {gallerySession &&\n typeof document !== 'undefined' &&\n createPortal(\n <ImageGallery\n key={gallerySession.key}\n images={gallerySession.images}\n initialIndex={gallerySession.index}\n theme={theme}\n onClose={() => setGallerySession(null)}\n />,\n document.body\n )}\n </>\n );\n};\n","import React, { useState, useRef, useCallback, useEffect } from 'react';\n\ninterface AudioRecorderProps {\n onRecordingComplete: (audioBlob: Blob, duration: number) => void;\n disabled?: boolean;\n className?: string;\n}\n\nexport const AudioRecorder: React.FC<AudioRecorderProps> = ({\n onRecordingComplete,\n disabled = false,\n className = ''\n}) => {\n const [isRecording, setIsRecording] = useState(false);\n const [isSupported, setIsSupported] = useState(false);\n const [recordingDuration, setRecordingDuration] = useState(0);\n const [error, setError] = useState<string | null>(null);\n \n const mediaRecorderRef = useRef<MediaRecorder | null>(null);\n const audioChunksRef = useRef<Blob[]>([]);\n const streamRef = useRef<MediaStream | null>(null);\n const timerRef = useRef<NodeJS.Timeout | null>(null);\n\n // Check microphone support\n useEffect(() => {\n const checkSupport = () => {\n const isSupported = !!(\n navigator.mediaDevices &&\n typeof navigator.mediaDevices.getUserMedia === 'function' &&\n window.isSecureContext\n );\n setIsSupported(isSupported);\n };\n\n checkSupport();\n }, []);\n\n const startTimer = useCallback(() => {\n setRecordingDuration(0);\n timerRef.current = setInterval(() => {\n setRecordingDuration(prev => prev + 1);\n }, 1000);\n }, []);\n\n const stopTimer = useCallback(() => {\n if (timerRef.current) {\n clearInterval(timerRef.current);\n timerRef.current = null;\n }\n }, []);\n\n const startRecording = useCallback(async () => {\n try {\n setError(null);\n \n if (!navigator.mediaDevices || typeof navigator.mediaDevices.getUserMedia !== 'function') {\n throw new Error('MediaDevices API is not supported in this browser');\n }\n\n if (!window.isSecureContext) {\n throw new Error('Microphone access requires a secure context (HTTPS or localhost)');\n }\n\n const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n streamRef.current = stream;\n\n const mediaRecorder = new MediaRecorder(stream);\n mediaRecorderRef.current = mediaRecorder;\n audioChunksRef.current = [];\n\n mediaRecorder.ondataavailable = (event) => {\n if (event.data.size > 0) {\n audioChunksRef.current.push(event.data);\n }\n };\n\n mediaRecorder.onstop = () => {\n const audioBlob = new Blob(audioChunksRef.current, { \n type: mediaRecorder.mimeType || 'audio/webm' \n });\n onRecordingComplete(audioBlob, recordingDuration);\n \n // Clean up\n if (streamRef.current) {\n streamRef.current.getTracks().forEach(track => track.stop());\n streamRef.current = null;\n }\n audioChunksRef.current = [];\n mediaRecorderRef.current = null;\n };\n\n mediaRecorder.start();\n setIsRecording(true);\n startTimer();\n } catch (err) {\n console.error('Error starting recording:', err);\n \n let errorMessage = 'Unable to access microphone. ';\n \n if (err instanceof Error) {\n if (err.message.includes('secure context')) {\n errorMessage += 'Please access this page over HTTPS or localhost.';\n } else if (err.message.includes('not supported')) {\n errorMessage += 'Your browser does not support microphone access.';\n } else if (err.name === 'NotAllowedError') {\n errorMessage += 'Microphone permission was denied. Please allow microphone access and try again.';\n } else if (err.name === 'NotFoundError') {\n errorMessage += 'No microphone found. Please connect a microphone and try again.';\n } else {\n errorMessage += 'Please check your microphone permissions and try again.';\n }\n }\n \n setError(errorMessage);\n }\n }, [onRecordingComplete, recordingDuration, startTimer]);\n\n const stopRecording = useCallback(() => {\n if (mediaRecorderRef.current && isRecording) {\n mediaRecorderRef.current.stop();\n setIsRecording(false);\n stopTimer();\n }\n }, [isRecording, stopTimer]);\n\n const toggleRecording = useCallback(() => {\n if (isRecording) {\n stopRecording();\n } else {\n startRecording();\n }\n }, [isRecording, startRecording, stopRecording]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n stopTimer();\n if (streamRef.current) {\n streamRef.current.getTracks().forEach(track => track.stop());\n }\n };\n }, [stopTimer]);\n\n if (!isSupported) {\n return null;\n }\n\n const formatDuration = (seconds: number): string => {\n const mins = Math.floor(seconds / 60);\n const secs = seconds % 60;\n return `${mins}:${secs.toString().padStart(2, '0')}`;\n };\n\n return (\n <div className={`fusioni-audio-recorder ${className}`}>\n <button\n onClick={toggleRecording}\n disabled={disabled}\n className={`fusioni-btn fusioni-btn-icon ${\n isRecording ? 'fusioni-btn-recording' : ''\n }`}\n title={isRecording ? 'Stop recording' : 'Start recording'}\n >\n {isRecording ? (\n <div className=\"fusioni-recording-indicator\">\n <div className=\"fusioni-recording-dot\" />\n </div>\n ) : (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M12 1C10.34 1 9 2.34 9 4V12C9 13.66 10.34 15 12 15C13.66 15 15 13.66 15 12V4C15 2.34 13.66 1 12 1Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M19 10V12C19 15.87 15.87 19 12 19C8.13 19 5 15.87 5 12V10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"12\"\n y1=\"19\"\n x2=\"12\"\n y2=\"23\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"8\"\n y1=\"23\"\n x2=\"16\"\n y2=\"23\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </button>\n \n {isRecording && (\n <div className=\"fusioni-recording-timer\">\n {formatDuration(recordingDuration)}\n </div>\n )}\n \n {error && (\n <div className=\"fusioni-audio-error\">\n <p>{error}</p>\n <button onClick={() => setError(null)}>Dismiss</button>\n </div>\n )}\n </div>\n );\n};\n","import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport {ChatInputProps} from '../types';\nimport {AudioRecorder} from './AudioRecorder';\nimport {useTranslation} from '../hooks/useTranslation';\n\nconst ChatInput: React.FC<ChatInputProps> = ({\n onSendMessage,\n onFileUpload,\n disabled = false,\n placeholder,\n enableAudioRecording = true,\n enableFileUpload = true,\n maxFileSize = 10,\n allowedFileTypes = ['image/*'],\n currentLanguage = 'en'\n }) => {\n const {t} = useTranslation(currentLanguage);\n const [message, setMessage] = useState('');\n const [isRecording, setIsRecording] = useState(false);\n const [audioPreview, setAudioPreview] = useState<string | null>(null);\n const [showAudioPreview, setShowAudioPreview] = useState(false);\n const [isProcessingAudio, setIsProcessingAudio] = useState(false);\n const [imagePreview, setImagePreview] = useState<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const adjustTextareaHeight = useCallback(() => {\n const textarea = textareaRef.current;\n if (textarea) {\n textarea.style.height = 'auto';\n textarea.style.height = Math.min(textarea.scrollHeight, 128) + 'px';\n }\n }, []);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setMessage(e.target.value);\n adjustTextareaHeight();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleSendMessage();\n }\n };\n\n const handleSendMessage = useCallback(() => {\n if (disabled || (!message.trim() && !audioPreview)) return;\n\n const content = message.trim();\n onSendMessage(content, imagePreview || undefined, audioPreview || undefined);\n\n // Reset state\n setMessage('');\n setAudioPreview(null);\n setShowAudioPreview(false);\n setImagePreview(null);\n\n // Reset textarea height\n if (textareaRef.current) {\n textareaRef.current.style.height = 'auto';\n }\n }, [message, audioPreview, imagePreview, disabled, onSendMessage]);\n\n const handleFileSelect = useCallback(async (file: File) => {\n if (!enableFileUpload) return;\n\n try {\n setIsUploading(true);\n\n // Validate file size\n // TODO handle this without throwing an error\n if (file.size > maxFileSize * 1024 * 1024) {\n throw new Error(`File size must be less than ${maxFileSize}MB`);\n }\n\n // Validate file type\n const isValidType = allowedFileTypes.some(type => {\n if (type.endsWith('/*')) {\n const category = type.split('/')[0];\n return file.type.startsWith(category + '/');\n }\n return file.type === type;\n });\n\n // TODO handle this without throwing an error\n if (!isValidType) {\n throw new Error(`File type not allowed. Allowed types: ${allowedFileTypes.join(', ')}`);\n }\n\n // Convert file to base64 (onFileUpload now returns base64 directly)\n const base64Data = await onFileUpload(file);\n console.log('File converted to base64:', base64Data);\n\n // Set preview\n setImagePreview(base64Data);\n } catch (error) {\n console.error('File upload error:', error);\n alert(error instanceof Error ? error.message : 'Failed to upload file');\n } finally {\n setIsUploading(false);\n }\n }, [enableFileUpload, maxFileSize, allowedFileTypes, onFileUpload]);\n\n const handleAudioRecorded = useCallback((audioBlob: Blob, duration: number) => {\n const reader = new FileReader();\n reader.onload = () => {\n const base64Audio = reader.result as string;\n setAudioPreview(base64Audio);\n setShowAudioPreview(true);\n };\n reader.readAsDataURL(audioBlob);\n }, []);\n\n const handleClearAudioPreview = useCallback(() => {\n setAudioPreview(null);\n setShowAudioPreview(false);\n }, []);\n\n const handleClearImagePreview = useCallback(() => {\n setImagePreview(null);\n }, []);\n\n const handleFileInputClick = () => {\n if (enableFileUpload && fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n\n // Auto-adjust textarea height on mount\n useEffect(() => {\n adjustTextareaHeight();\n }, [adjustTextareaHeight]);\n\n return (\n <div className=\"fusioni-chat-input\">\n {/* Image Preview */}\n {imagePreview && (\n <div className=\"fusioni-image-preview\">\n <div className=\"fusioni-image-preview-content\">\n <img src={imagePreview} alt=\"Preview\" className=\"fusioni-preview-image\"/>\n <button\n onClick={handleClearImagePreview}\n className=\"fusioni-btn fusioni-btn-icon fusioni-btn-danger\"\n title=\"Remove image\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M18 6L6 18M6 6L18 18\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n </div>\n )}\n\n {/* Audio Preview */}\n {showAudioPreview && audioPreview && (\n <div className=\"fusioni-audio-preview\">\n <div className=\"fusioni-audio-preview-content\">\n <div className=\"fusioni-audio-preview-header\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M12 1C10.34 1 9 2.34 9 4V12C9 13.66 10.34 15 12 15C13.66 15 15 13.66 15 12V4C15 2.34 13.66 1 12 1Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <span>Audio Preview</span>\n <button\n onClick={handleClearAudioPreview}\n className=\"fusioni-btn fusioni-btn-icon fusioni-btn-danger\"\n title=\"Remove audio\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M18 6L6 18M6 6L18 18\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n <audio\n src={audioPreview}\n controls\n className=\"fusioni-audio-preview-player\"\n preload=\"metadata\"\n >\n Your browser does not support the audio element.\n </audio>\n <p className=\"fusioni-audio-preview-text\">\n Click send to send this audio message\n </p>\n </div>\n </div>\n )}\n\n {/* Main Input */}\n <div className=\"fusioni-input-container\">\n <div className=\"fusioni-input-wrapper\">\n <textarea\n ref={textareaRef}\n value={message}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n className=\"fusioni-textarea\"\n rows={1}\n />\n\n <div className=\"fusioni-input-actions\">\n {/* File Upload */}\n {enableFileUpload && (\n <button\n onClick={handleFileInputClick}\n disabled={disabled || isUploading}\n className=\"fusioni-btn fusioni-btn-icon\"\n title=\"Upload file\"\n >\n {isUploading ? (\n <div className=\"fusioni-spinner\"/>\n ) : (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M21 15V19C21 19.5304 20.7893 20.0391 20.4142 20.4142C20.0391 20.7893 19.5304 21 19 21H5C4.46957 21 3.96086 20.7893 3.58579 20.4142C3.21071 20.0391 3 19.5304 3 19V15\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <polyline\n points=\"7,10 12,15 17,10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"12\"\n y1=\"15\"\n x2=\"12\"\n y2=\"3\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </button>\n )}\n\n {/* Audio Recording */}\n {enableAudioRecording && (\n <AudioRecorder\n onRecordingComplete={handleAudioRecorded}\n disabled={disabled}\n />\n )}\n\n {/* Send Button */}\n <button\n onClick={handleSendMessage}\n disabled={disabled || (!message.trim() && !audioPreview)}\n className={`fusioni-btn fusioni-btn-icon fusioni-btn-send ${\n audioPreview ? 'fusioni-btn-send-audio' : ''\n }`}\n title={audioPreview ? 'Send audio message' : 'Send message'}\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M22 2L11 13M22 2L15 22L11 13M22 2L2 9L11 13\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n </div>\n </div>\n\n {/* Hidden file input */}\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={allowedFileTypes.join(',')}\n onChange={(e) => {\n const file = e.target.files?.[0];\n if (file) {\n handleFileSelect(file);\n }\n }}\n style={{display: 'none'}}\n />\n </div>\n );\n};\nexport { ChatInput };\nexport default ChatInput;\n","import React, { useState, useEffect } from 'react';\nimport { Position } from '../types';\n\ninterface FloatingButtonProps {\n isOpen: boolean;\n onClick: () => void;\n position?: Position;\n primaryColor?: string;\n buttonRef?: React.RefObject<HTMLButtonElement>;\n showNotification?: boolean;\n notificationCount?: number;\n variant?: 'minimal' | 'glass' | 'solid';\n shouldDisplay?: boolean;\n}\n\nexport const FloatingButton: React.FC<FloatingButtonProps> = ({\n isOpen,\n onClick,\n position = 'bottom-right',\n primaryColor = '#6366f1',\n buttonRef,\n showNotification = false,\n notificationCount = 0,\n variant = 'glass',\n shouldDisplay = true\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n const [showAttentionSequence, setShowAttentionSequence] = useState(false);\n const [isAttentionActive, setIsAttentionActive] = useState(false);\n\n useEffect(() => {\n // Sophisticated entrance animation\n const entranceTimer = setTimeout(() => {\n setIsVisible(true);\n }, 200);\n\n // Periodic attention sequence (every 15 seconds)\n const attentionInterval = setInterval(() => {\n if (!isHovered && !isOpen) {\n setShowAttentionSequence(true);\n setIsAttentionActive(true);\n \n setTimeout(() => {\n setShowAttentionSequence(false);\n setIsAttentionActive(false);\n }, 3000);\n }\n }, 15000);\n\n return () => {\n clearTimeout(entranceTimer);\n clearInterval(attentionInterval);\n };\n }, [isHovered, isOpen]);\n const getPositionClasses = () => {\n switch (position) {\n case 'bottom-left':\n return 'fusioni-floating-button-bottom-left';\n case 'top-right':\n return 'fusioni-floating-button-top-right';\n case 'top-left':\n return 'fusioni-floating-button-top-left';\n default:\n return 'fusioni-floating-button-bottom-right';\n }\n };\n\n if (!shouldDisplay) {\n return null;\n }\n\n return (\n <button\n ref={buttonRef}\n onClick={onClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={`fusioni-floating-button fusioni-floating-button-${variant} ${getPositionClasses()} ${isVisible ? 'fusioni-floating-button-visible fusioni-floating-button-entering' : ''} ${showNotification ? 'fusioni-floating-button-notification' : ''} ${isHovered ? 'fusioni-floating-button-hovered' : ''} ${isAttentionActive ? 'fusioni-floating-button-attention-active' : ''}`}\n style={{ '--primary-color': primaryColor } as React.CSSProperties}\n aria-label={isOpen ? 'Close chat' : 'Open chat'}\n >\n \n {/* Pulsing Attention Rings */}\n <div className=\"fusioni-floating-button-attention-ring\"></div>\n <div className=\"fusioni-floating-button-attention-ring-2\"></div>\n <div className=\"fusioni-floating-button-attention-ring-3\"></div>\n\n {/* Neural Network Particle Effects */}\n <div className=\"fusioni-floating-button-neural-particles\">\n <div className=\"fusioni-neural-particle\"></div>\n <div className=\"fusioni-neural-particle\"></div>\n <div className=\"fusioni-neural-particle\"></div>\n <div className=\"fusioni-neural-particle\"></div>\n <div className=\"fusioni-neural-particle\"></div>\n <div className=\"fusioni-neural-particle\"></div>\n </div>\n\n {/* AI Brain Activity Indicator */}\n <div className=\"fusioni-floating-button-brain-activity\"></div>\n\n {/* Attention Sequence Animation */}\n {showAttentionSequence && (\n <div className=\"fusioni-floating-button-attention-sequence\">\n <div className=\"fusioni-attention-wave\"></div>\n <div className=\"fusioni-attention-wave\"></div>\n <div className=\"fusioni-attention-wave\"></div>\n </div>\n )}\n\n {/* Periodic Attention Pulse */}\n <div className=\"fusioni-floating-button-periodic-pulse\"></div>\n\n {/* Enhanced Glow Effect */}\n <div className=\"fusioni-floating-button-glow\"></div>\n\n {/* Magnetic Field Effect */}\n <div className=\"fusioni-floating-button-magnetic-field\"></div>\n\n {/* Professional Notification Indicator */}\n {showNotification && (\n <div className=\"fusioni-floating-button-indicator\">\n <div className=\"fusioni-floating-button-indicator-dot\"></div>\n </div>\n )}\n\n <div className=\"fusioni-floating-button-content\">\n {isOpen ? (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"fusioni-floating-button-icon\"\n >\n <path\n d=\"M18 6L6 18M6 6L18 18\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ) : (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"fusioni-floating-button-icon\"\n >\n <path\n d=\"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n </button>\n );\n};\n","import React, { useRef } from 'react';\nimport { Position } from '../types';\n\ninterface ChatPanelProps {\n isOpen: boolean;\n onClose: () => void;\n position?: Position;\n isFullscreen?: boolean;\n floatingButtonRef?: React.RefObject<HTMLButtonElement>;\n children: React.ReactNode;\n}\n\nexport const ChatPanel: React.FC<ChatPanelProps> = ({\n isOpen,\n onClose,\n position = 'bottom-right',\n isFullscreen = false,\n floatingButtonRef,\n children\n}) => {\n const panelRef = useRef<HTMLDivElement>(null);\n\n const getPositionClasses = () => {\n switch (position) {\n case 'bottom-left':\n return 'fusioni-chat-panel-bottom-left';\n case 'top-right':\n return 'fusioni-chat-panel-top-right';\n case 'top-left':\n return 'fusioni-chat-panel-top-left';\n default:\n return 'fusioni-chat-panel-bottom-right';\n }\n };\n\n if (!isOpen) return null;\n\n return (\n <>\n \n {/* Panel */}\n <div\n ref={panelRef}\n className={`fusioni-chat-panel ${getPositionClasses()} ${isFullscreen ? 'fusioni-chat-panel-fullscreen' : ''}`}\n >\n <div className=\"fusioni-chat-panel-content\">\n {children}\n </div>\n </div>\n </>\n );\n};\n","import React, { useState, useRef, useEffect } from 'react';\nimport { Language } from '../i18n';\nimport { useTranslation } from '../hooks/useTranslation';\n\ninterface LanguageSwitcherProps {\n currentLanguage: Language;\n onLanguageChange: (language: Language) => void;\n className?: string;\n}\n\nexport const LanguageSwitcher: React.FC<LanguageSwitcherProps> = ({\n currentLanguage,\n onLanguageChange,\n className = ''\n}) => {\n const { t, availableLanguages } = useTranslation(currentLanguage);\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const currentLang = availableLanguages.find(lang => lang.code === currentLanguage);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, []);\n\n const handleLanguageSelect = (language: Language) => {\n onLanguageChange(language);\n setIsOpen(false);\n };\n\n return (\n <div className={`fusioni-language-switcher ${className}`} ref={dropdownRef}>\n <button\n className=\"fusioni-language-button\"\n onClick={() => setIsOpen(!isOpen)}\n title={t('language.switchLanguage')}\n >\n <span className=\"fusioni-language-flag\">\n {currentLanguage === 'en' ? '🇺🇸' : '🇬🇷'}\n </span>\n <span className=\"fusioni-language-name\">\n {currentLang?.name}\n </span>\n <svg \n className={`fusioni-language-arrow ${isOpen ? 'open' : ''}`}\n width=\"12\" \n height=\"12\" \n viewBox=\"0 0 24 24\" \n fill=\"none\" \n stroke=\"currentColor\" \n strokeWidth=\"2\"\n >\n <path d=\"M6 9l6 6 6-6\"/>\n </svg>\n </button>\n\n {isOpen && (\n <div className=\"fusioni-language-dropdown\">\n {availableLanguages.map((language) => (\n <button\n key={language.code}\n className={`fusioni-language-option ${\n language.code === currentLanguage ? 'active' : ''\n }`}\n onClick={() => handleLanguageSelect(language.code)}\n >\n <span className=\"fusioni-language-flag\">\n {language.code === 'en' ? '🇺🇸' : '🇬🇷'}\n </span>\n <span className=\"fusioni-language-name\">\n {language.name}\n </span>\n {language.code === currentLanguage && (\n <svg \n className=\"fusioni-language-check\"\n width=\"16\" \n height=\"16\" \n viewBox=\"0 0 24 24\" \n fill=\"none\" \n stroke=\"currentColor\" \n strokeWidth=\"2\"\n >\n <path d=\"M20 6L9 17l-5-5\"/>\n </svg>\n )}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useTranslation } from '../hooks/useTranslation';\n\nexport interface ConfirmationDialogProps {\n isOpen: boolean;\n title: string;\n message: string;\n confirmText?: string;\n cancelText?: string;\n onConfirm: () => void;\n onCancel: () => void;\n currentLanguage?: 'en' | 'el';\n variant?: 'danger' | 'warning' | 'info';\n}\n\nexport const ConfirmationDialog: React.FC<ConfirmationDialogProps> = ({\n isOpen,\n title,\n message,\n confirmText,\n cancelText,\n onConfirm,\n onCancel,\n currentLanguage = 'en',\n variant = 'danger'\n}) => {\n const { t } = useTranslation(currentLanguage);\n\n if (!isOpen) return null;\n\n return (\n <>\n <div \n className=\"fusioni-dialog-backdrop\"\n onClick={onCancel}\n />\n <div className=\"fusioni-dialog-container\">\n <div className=\"fusioni-dialog\">\n <div className=\"fusioni-dialog-header\">\n <h3 className=\"fusioni-dialog-title\">{title}</h3>\n </div>\n <div className=\"fusioni-dialog-body\">\n <p className=\"fusioni-dialog-message\">{message}</p>\n </div>\n <div className=\"fusioni-dialog-footer\">\n <button\n onClick={onCancel}\n className=\"fusioni-btn fusioni-btn-secondary fusioni-dialog-cancel\"\n >\n {cancelText || t('common.cancel')}\n </button>\n <button\n onClick={onConfirm}\n className={`fusioni-btn fusioni-dialog-confirm fusioni-dialog-confirm-${variant}`}\n >\n {confirmText || t('common.delete')}\n </button>\n </div>\n </div>\n </div>\n </>\n );\n};\n","import {useCallback, useState} from 'react';\nimport {Conversation, FusioniMemoryMessage} from '../types';\nimport {getConversationService} from '../services/ConversationService';\nimport {getMessageService} from \"../services/MessageService\";\n\n/** Set on `extra_data` for the local user bubble before pipeline exec; used to drop it when the server echoes the turn. */\nexport const FUSIONI_SDK_OPTIMISTIC_USER = 'fusion_sdk_optimistic_user' as const;\n\nexport function isFusioniSdkOptimisticUserMessage(m: FusioniMemoryMessage): boolean {\n return m.role === 'user' && m.extra_data?.[FUSIONI_SDK_OPTIMISTIC_USER] === true;\n}\n\nexport const useChatState = (agencyId: string) => {\n const [conversations, setConversations] = useState<Conversation[]>([]);\n const [currentConversation, setCurrentConversation] = useState<Conversation | null>(null);\n const [messages, setMessages] = useState<FusioniMemoryMessage[]>([]);\n const [streamMessages, setStreamMessages] = useState<string[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n\n const loadConversations = useCallback(async (page: number = 0, size: number = 25) => {\n if (!agencyId) return;\n\n try {\n setIsLoading(true);\n const conversationService = getConversationService();\n const conversations = await conversationService.getConversationsByAgency(agencyId, page, size);\n console.log(\"Loaded conversations\", conversations);\n setConversations(conversations);\n\n } catch (error) {\n console.error('Failed to load conversations:', error);\n } finally {\n setIsLoading(false);\n }\n }, [agencyId]);\n\n const loadMessages = useCallback(async (conversationId: string) => {\n if (!agencyId) return;\n\n try {\n setIsLoading(true);\n const messageService = getMessageService();\n const messages = await messageService.getMessages(conversationId, agencyId);\n \n // Ensure loaded messages don't have shouldAnimate flag (only new pipeline exec responses should animate)\n const messagesWithoutAnimation = messages.map(msg => ({\n ...msg,\n shouldAnimate: false\n }));\n \n setMessages(messagesWithoutAnimation);\n\n } catch (error) {\n console.error('Failed to load messages:', error);\n } finally {\n setIsLoading(false);\n }\n }, [agencyId]);\n\n const addMessage = useCallback((message: FusioniMemoryMessage) => {\n setMessages(prev => [...prev, message]);\n }, []);\n\n const updateMessage = useCallback((messageId: string, updates: Partial<FusioniMemoryMessage>) => {\n setMessages(prev => prev.map(msg => \n msg.id === messageId ? { ...msg, ...updates } : msg\n ));\n }, []);\n\n const removeMessage = useCallback((messageId: string) => {\n setMessages(prev => prev.filter(msg => msg.id !== messageId));\n }, []);\n\n /** Removes local user rows tagged with {@link FUSIONI_SDK_OPTIMISTIC_USER} (same idea as removing the loading row by id). */\n const removeOptimisticUserMessages = useCallback(() => {\n setMessages((prev) => prev.filter((m) => !isFusioniSdkOptimisticUserMessage(m)));\n }, []);\n\n /** Keeps messages up to and including `messageId` (used when editing a prior user turn). */\n const truncateMessagesAt = useCallback((messageId: string) => {\n setMessages((prev) => {\n const index = prev.findIndex((m) => m.id === messageId);\n if (index === -1) {\n return prev;\n }\n return prev.slice(0, index + 1);\n });\n }, []);\n\n const addConversation = useCallback((conversation: Conversation) => {\n setConversations(prev => [conversation, ...prev]);\n }, []);\n\n const removeConversation = useCallback((conversationId: string) => {\n setConversations(prev => prev.filter(conv => conv.id !== conversationId));\n if (currentConversation?.id === conversationId) {\n setCurrentConversation(null);\n setMessages([]);\n }\n }, [currentConversation]);\n\n const updateConversation = useCallback((conversationId: string | null, updatedConversation: Conversation) => {\n setConversations(prev => prev.map(conv => \n conv.id === conversationId ? updatedConversation : conv\n ));\n }, []);\n\n const clearStreamMessages = useCallback(() => {\n setStreamMessages([]);\n }, []);\n\n const clearMessages = useCallback(() => {\n setMessages([]);\n }, []);\n\n return {\n conversations,\n currentConversation,\n messages,\n streamMessages,\n isLoading,\n setCurrentConversation,\n setStreamMessages,\n addMessage,\n updateMessage,\n removeMessage,\n removeOptimisticUserMessages,\n truncateMessagesAt,\n addConversation,\n updateConversation,\n removeConversation,\n loadConversations,\n loadMessages,\n clearStreamMessages,\n clearMessages\n };\n};\n","import { useEffect, useRef, useCallback } from 'react';\nimport { getApiClient } from '../services/ApiClient';\n\nexport const useSSE = (agencyId: string, onMessage: (data: any) => void, isConnected: boolean = true, accessToken?: string) => {\n const eventSourceRef = useRef<EventSource | null>(null);\n const onMessageRef = useRef(onMessage);\n\n // Keep the callback ref up to date\n useEffect(() => {\n onMessageRef.current = onMessage;\n }, [onMessage]);\n\n // Stable callback that uses the ref\n const stableOnMessage = useCallback((data: any) => {\n onMessageRef.current(data);\n }, []);\n\n useEffect(() => {\n if (!agencyId || !isConnected) {\n // Disconnect if not connected or no agency ID\n if (eventSourceRef.current) {\n console.log('Disconnecting SSE (panel closed or no agency ID)...');\n eventSourceRef.current.close();\n eventSourceRef.current = null;\n }\n return;\n }\n\n // Only connect if we don't already have a connection\n if (eventSourceRef.current) {\n return;\n }\n\n try {\n const apiClient = getApiClient();\n if (!apiClient) {\n console.error('API client not initialized for SSE connection');\n return;\n }\n \n // Update access token if provided\n if (accessToken) {\n apiClient.setAccessToken(accessToken);\n }\n \n console.log('Connecting to SSE (panel opened)...');\n const eventSource = apiClient.connectToSSE(agencyId, stableOnMessage);\n eventSourceRef.current = eventSource;\n\n eventSource.onopen = () => {\n console.log('SSE connection opened');\n };\n\n eventSource.onerror = (error) => {\n console.error('SSE connection error:', error);\n // Close the connection on error\n if (eventSourceRef.current) {\n eventSourceRef.current.close();\n eventSourceRef.current = null;\n }\n };\n\n } catch (error) {\n console.error('Failed to connect to SSE:', error);\n }\n }, [agencyId, stableOnMessage, isConnected, accessToken]);\n\n // Cleanup effect\n useEffect(() => {\n return () => {\n if (eventSourceRef.current) {\n console.log('Disconnecting SSE...');\n eventSourceRef.current.close();\n eventSourceRef.current = null;\n }\n };\n }, []);\n\n return eventSourceRef.current;\n};\n","import { useState, useEffect, useCallback } from 'react';\nimport { Theme } from '../types';\n\nconst THEME_STORAGE_KEY = 'fusioni-chat-theme';\n\nfunction resolveDisplayTheme(setting: Theme | undefined): 'light' | 'dark' {\n if (setting === 'auto') {\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n if (setting === 'dark' || setting === 'light') {\n return setting;\n }\n return 'light';\n}\n\nexport const useTheme = (initialTheme?: Theme) => {\n const [currentTheme, setCurrentTheme] = useState<'light' | 'dark'>('light');\n const [isManualOverride, setIsManualOverride] = useState(false);\n const [programmaticTheme, setProgrammaticTheme] = useState<Theme | null>(null);\n\n const persistThemeSetting = useCallback((setting: Theme) => {\n try {\n if (setting === 'auto') {\n localStorage.removeItem(THEME_STORAGE_KEY);\n } else {\n localStorage.setItem(THEME_STORAGE_KEY, setting);\n }\n } catch (error) {\n console.warn('Failed to persist theme to localStorage:', error);\n }\n }, []);\n\n const setTheme = useCallback((theme: Theme) => {\n setProgrammaticTheme(theme);\n setCurrentTheme(resolveDisplayTheme(theme));\n setIsManualOverride(true);\n persistThemeSetting(theme);\n }, [persistThemeSetting]);\n\n // Load theme from localStorage on initialization (unless SDK / caller already set a theme)\n useEffect(() => {\n if (programmaticTheme != null) {\n return;\n }\n try {\n const savedTheme = localStorage.getItem(THEME_STORAGE_KEY);\n if (savedTheme === 'light' || savedTheme === 'dark') {\n setCurrentTheme(savedTheme);\n setIsManualOverride(true);\n }\n } catch (error) {\n console.warn('Failed to load theme from localStorage:', error);\n }\n }, [programmaticTheme]);\n\n const toggleTheme = useCallback(() => {\n setCurrentTheme((prev) => {\n const next: 'light' | 'dark' = prev === 'light' ? 'dark' : 'light';\n setProgrammaticTheme(next);\n setIsManualOverride(true);\n try {\n localStorage.setItem(THEME_STORAGE_KEY, next);\n } catch (error) {\n console.warn('Failed to save theme to localStorage:', error);\n }\n return next;\n });\n }, []);\n\n useEffect(() => {\n if (programmaticTheme != null) {\n if (programmaticTheme === 'auto') {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleChange = () => {\n setCurrentTheme(resolveDisplayTheme('auto'));\n };\n handleChange();\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }\n return;\n }\n\n const savedTheme = localStorage.getItem(THEME_STORAGE_KEY);\n if (savedTheme === 'light' || savedTheme === 'dark') {\n return;\n }\n\n if (isManualOverride) {\n return;\n }\n\n const updateTheme = () => {\n setCurrentTheme(resolveDisplayTheme(initialTheme));\n };\n\n updateTheme();\n\n if (initialTheme === 'auto') {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleChange = () => updateTheme();\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }\n }, [initialTheme, isManualOverride, programmaticTheme]);\n\n return {\n theme: currentTheme,\n toggleTheme,\n setTheme,\n isManualOverride,\n };\n};\n\n// Utility function to clear saved theme (useful for debugging or reset)\nexport const clearSavedTheme = () => {\n try {\n localStorage.removeItem(THEME_STORAGE_KEY);\n } catch (error) {\n console.warn('Failed to clear theme from localStorage:', error);\n }\n};\n","import { useEffect, useState } from 'react';\n\n/** Matches `index.css` mobile breakpoint for chat layout. */\nconst MOBILE_MEDIA_QUERY = '(max-width: 768px)';\n\nexport function useIsMobileLayout(): boolean {\n const [isMobile, setIsMobile] = useState(() => {\n if (typeof window === 'undefined') return false;\n return window.matchMedia(MOBILE_MEDIA_QUERY).matches;\n });\n\n useEffect(() => {\n const mq = window.matchMedia(MOBILE_MEDIA_QUERY);\n const onChange = () => setIsMobile(mq.matches);\n onChange();\n mq.addEventListener('change', onChange);\n return () => mq.removeEventListener('change', onChange);\n }, []);\n\n return isMobile;\n}\n","import React, {forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState} from 'react';\nimport {\n ChatWidgetProps,\n Conversation,\n FusioniChatWidgetHandle,\n FusioniMemoryMessage,\n FusioniSDKConfig\n} from '../types';\nimport {Language, isValidLanguage} from '../i18n';\nimport {initializeApiClient} from '../services/ApiClient';\nimport {getConversationService} from '../services/ConversationService';\nimport {getPipelineService} from '../services/PipelineService';\nimport {getMessageService} from '../services/MessageService';\nimport {getSDKClientService} from '../services/SDKClientService';\nimport {ConversationList} from './ConversationList';\nimport {MessageList} from './MessageList';\nimport {ChatInput} from './ChatInput';\nimport {FloatingButton} from './FloatingButton';\nimport {ChatPanel} from './ChatPanel';\nimport {LanguageSwitcher} from './LanguageSwitcher';\nimport {ConfirmationDialog} from './ConfirmationDialog';\nimport {FUSIONI_SDK_OPTIMISTIC_USER, useChatState} from '../hooks/useChatState';\nimport {useSSE} from '../hooks/useSSE';\nimport {useTheme} from '../hooks/useTheme';\nimport {useTranslation} from '../hooks/useTranslation';\nimport {useIsMobileLayout} from '../hooks/useIsMobileLayout';\nimport '../styles/index.css';\n\nexport const ChatWidget = forwardRef<FusioniChatWidgetHandle, ChatWidgetProps>(function ChatWidget(\n {\n config,\n onMessageSent,\n onMessageReceived,\n onConversationCreated,\n onConversationDeleted,\n onError\n },\n ref\n) {\n const [languageOverride, setLanguageOverride] = useState<Language | null>(null);\n const [isOpen, setIsOpen] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isConversationListOpen, setIsConversationListOpen] = useState(false);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [mergedConfig, setMergedConfig] = useState<FusioniSDKConfig | null>(null);\n const [isConfigReady, setIsConfigReady] = useState(false);\n const [hasConfigError, setHasConfigError] = useState(false);\n const [conversationToDelete, setConversationToDelete] = useState<string | null>(null);\n const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false);\n const [messageToDelete, setMessageToDelete] = useState<string | null>(null);\n const [isDeleteMessageDialogOpen, setIsDeleteMessageDialogOpen] = useState(false);\n \n // Refs\n const floatingButtonRef = useRef<HTMLButtonElement>(null);\n \n const translationDefault: Language =\n languageOverride ?? mergedConfig?.language ?? config.language ?? 'en';\n\n // Translation and language management - use merged config or fallback to user config\n const { t, currentLanguage, changeLanguage } = useTranslation(translationDefault);\n \n const {\n conversations,\n currentConversation,\n messages,\n streamMessages,\n setCurrentConversation,\n setStreamMessages,\n addMessage,\n updateMessage,\n removeMessage,\n removeOptimisticUserMessages,\n truncateMessagesAt,\n addConversation,\n updateConversation,\n removeConversation,\n loadConversations,\n loadMessages,\n clearMessages\n } = useChatState(mergedConfig?.agencyId || config.agencyId);\n\n const { theme, toggleTheme, setTheme } = useTheme(mergedConfig?.theme || config.theme);\n const isMobileLayout = useIsMobileLayout();\n\n const handleLanguageChange = useCallback(\n (language: Language) => {\n setLanguageOverride(language);\n changeLanguage(language);\n },\n [changeLanguage]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n setLanguage: (language: Language) => {\n if (!isValidLanguage(language)) {\n return;\n }\n setLanguageOverride(language);\n changeLanguage(language);\n },\n setTheme,\n }),\n [changeLanguage, setTheme]\n );\n \n // Initialize API client and fetch server configuration\n useEffect(() => {\n const initializeAndFetchConfig = async () => {\n try {\n // Initialize API client first\n initializeApiClient(config.apiBaseUrl, config.accessToken);\n \n // Fetch server configuration if agencyId is available\n if (config.agencyId) {\n try {\n const sdkClientService = getSDKClientService();\n const serverConfig = await sdkClientService.getClientConfig(config.agencyId);\n \n if (serverConfig) {\n // Merge server config with user config\n const merged = sdkClientService.mergeConfig(config, serverConfig);\n setMergedConfig(merged);\n setHasConfigError(false);\n } else {\n // If no server config, use user config as-is (no error, just no data)\n setMergedConfig(config);\n setHasConfigError(false);\n }\n } catch (configError) {\n // If fetching config fails, mark as error and hide FloatingButton\n console.warn('Failed to fetch server configuration, using user config:', configError);\n setHasConfigError(true);\n setMergedConfig(config);\n }\n } else {\n setMergedConfig(config);\n setHasConfigError(false);\n }\n \n // Mark config as ready after fetching (or if no fetch needed)\n setIsConfigReady(true);\n } catch (err) {\n const error = new Error(t('chat.errors.failedToInitialize'));\n onError?.(error);\n setError(t('chat.errors.failedToInitialize'));\n // Still set config and mark as ready so the widget can render with user config\n setMergedConfig(config);\n setIsConfigReady(true);\n }\n };\n \n initializeAndFetchConfig().then();\n\n }, [config, onError, t]);\n\n // Load initial conversations\n useEffect(() => {\n if (mergedConfig?.agencyId) {\n loadConversations().then();\n }\n }, [mergedConfig?.agencyId, loadConversations]);\n\n // SSE connection for real-time updates - only when a chat panel is open\n const eventSource = useSSE(mergedConfig?.agencyId || config.agencyId, (data) => {\n // Same as fusioni-web chat.component: latest SSE line replaces stream (single loading row updates)\n if (data?.data != null && String(data.data).trim() !== '') {\n setStreamMessages([String(data.data)]);\n }\n }, isOpen, mergedConfig?.accessToken || config.accessToken);\n\n // Cleanup: Close a chat panel when component unmounts\n useEffect(() => {\n return () => {\n setIsOpen(false);\n };\n }, []);\n\n const handleToggleChat = useCallback(() => {\n setIsOpen(prev => !prev);\n }, []);\n\n const handleToggleConversationList = useCallback(() => {\n setIsConversationListOpen(prev => !prev);\n }, []);\n\n const handleToggleFullscreen = useCallback(() => {\n setIsFullscreen(prev => !prev);\n }, []);\n\n const handleCreateConversation = useCallback(() => {\n if (!mergedConfig) return;\n \n // Create a new conversation with null ID - will be created on server when first message is sent\n const newConversation: Conversation = {\n id: null,\n title: t('chat.conversations.newConversation'),\n agency_id: mergedConfig.agencyId,\n messages: []\n };\n\n addConversation(newConversation);\n setCurrentConversation(newConversation);\n \n // Clear messages when switching to new conversation\n clearMessages();\n setStreamMessages([]);\n \n // Auto-hide conversation list when a new conversation is created\n setIsConversationListOpen(false);\n \n onConversationCreated?.(newConversation);\n }, [mergedConfig, addConversation, setCurrentConversation, clearMessages, onConversationCreated, t]);\n\n const handleSelectConversation = useCallback(async (conversation: Conversation) => {\n try {\n setIsLoading(true);\n \n // Clear messages immediately when switching conversations\n clearMessages();\n setStreamMessages([]);\n \n setCurrentConversation(conversation);\n \n // Auto-hide conversation list when a conversation is selected\n setIsConversationListOpen(false);\n \n if (conversation.id) {\n await loadMessages(conversation.id);\n }\n } catch (err) {\n const error = new Error(t('chat.errors.failedToLoadConversation'));\n onError?.(error);\n setError(t('chat.errors.failedToLoadConversation'));\n } finally {\n setIsLoading(false);\n }\n }, [setCurrentConversation, loadMessages, clearMessages, onError]);\n\n const handleDeleteConversation = useCallback((conversationId: string) => {\n setConversationToDelete(conversationId);\n setIsDeleteDialogOpen(true);\n }, []);\n\n const confirmDeleteConversation = useCallback(async () => {\n if (!conversationToDelete) return;\n \n try {\n setIsLoading(true);\n const conversationService = getConversationService();\n await conversationService.deleteConversation(conversationToDelete);\n \n removeConversation(conversationToDelete);\n if (currentConversation?.id === conversationToDelete) {\n setCurrentConversation(null);\n clearMessages();\n setStreamMessages([]);\n }\n onConversationDeleted?.(conversationToDelete);\n \n // Close dialog\n setIsDeleteDialogOpen(false);\n setConversationToDelete(null);\n } catch (err) {\n const error = new Error(t('chat.errors.failedToDeleteConversation'));\n onError?.(error);\n setError(t('chat.errors.failedToDeleteConversation'));\n // Close dialog even on error\n setIsDeleteDialogOpen(false);\n setConversationToDelete(null);\n } finally {\n setIsLoading(false);\n }\n }, [conversationToDelete, removeConversation, currentConversation, setCurrentConversation, clearMessages, setStreamMessages, onConversationDeleted, onError, t]);\n\n const cancelDeleteConversation = useCallback(() => {\n setIsDeleteDialogOpen(false);\n setConversationToDelete(null);\n }, []);\n\n const handleSendMessage = useCallback(async (\n content: string, \n image?: string, \n audio?: string,\n messageId?: string | null\n ) => {\n if (!mergedConfig) return;\n \n // Debug logging for conversation state\n console.log('🔍 ChatWidget.handleSendMessage - Starting message send:', {\n currentConversation: currentConversation,\n conversationId: currentConversation?.id,\n content: content?.substring(0, 100) + (content?.length > 100 ? '...' : ''),\n hasImage: !!image,\n hasAudio: !!audio,\n agencyId: mergedConfig.agencyId\n });\n\n if (!currentConversation || (!content.trim() && !audio)) {\n console.warn('⚠️ ChatWidget.handleSendMessage - Early return:', {\n hasCurrentConversation: !!currentConversation,\n hasContent: !!content?.trim(),\n hasAudio: !!audio\n });\n return;\n }\n\n try {\n setIsLoading(true);\n\n let conversationId = currentConversation.id;\n \n // If this is a new conversation (null ID), create it on the server first\n if (!conversationId) {\n console.log('🔍 ChatWidget.handleSendMessage - Creating server conversation for new conversation:', {\n agencyId: mergedConfig.agencyId\n });\n\n const conversationService = getConversationService();\n conversationId = await conversationService.createConversation({\n title: t('chat.conversations.newConversation'),\n agency_id: mergedConfig.agencyId,\n });\n\n console.log('🔍 ChatWidget.handleSendMessage - Server conversation created:', {\n conversationId: conversationId,\n conversationIdType: typeof conversationId\n });\n\n // Update the conversation with the real server ID\n const updatedConversation = {\n ...currentConversation,\n id: conversationId\n };\n \n // Update the conversation in the list and set as current\n updateConversation(updatedConversation.id, updatedConversation);\n setCurrentConversation(updatedConversation);\n \n console.log('🔍 ChatWidget.handleSendMessage - Conversation ID updated:', {\n conversationId: conversationId,\n updatedConversation: updatedConversation\n });\n }\n\n // Clear stream messages for new conversation\n setStreamMessages([]);\n \n let userMessage: FusioniMemoryMessage | null = null;\n if (!messageId) {\n const userExtra: Record<string, unknown> = {[FUSIONI_SDK_OPTIMISTIC_USER]: true};\n if (image) {\n userExtra.image_ref = image;\n userExtra.image_base64 = true;\n } else if (audio) {\n userExtra.audio_ref = audio;\n userExtra.audio_base64 = true;\n }\n\n // Add user message (tagged so we can remove it from the list when the server returns the persisted turn)\n userMessage = {\n agency_id: mergedConfig.agencyId,\n conversation_id: conversationId,\n shouldAnimate: false,\n role: 'user',\n content: content.trim(),\n mem_type: 'short',\n keywords: [],\n thoughts: null,\n created: new Date(),\n loading: false,\n extra_data: userExtra as FusioniMemoryMessage['extra_data']\n };\n\n addMessage(userMessage);\n } else {\n // Match Angular behavior: keep messages only up to edited user turn.\n truncateMessagesAt(messageId);\n }\n\n // Add a loading message (UI: logo + Spotlight in Message; no plain-text bubble like Angular)\n const loadingMessage: FusioniMemoryMessage = {\n id: `loading-${Date.now()}`,\n agency_id: mergedConfig.agencyId,\n shouldAnimate: false,\n conversation_id: conversationId,\n role: 'assistant',\n content: '',\n mem_type: 'short',\n keywords: [],\n thoughts: null,\n created: new Date(),\n loading: true,\n has_error: false\n };\n\n addMessage(loadingMessage);\n if (userMessage) {\n onMessageSent?.(userMessage);\n }\n\n // Debug logging before pipeline execution\n const pipelineRequest = {\n conversation_id: conversationId,\n agency_id: mergedConfig.agencyId,\n inp: content || (audio ? `Audio message` : ''),\n image,\n audio,\n message_id: messageId\n };\n \n console.log('🔍 ChatWidget.handleSendMessage - About to call executePipeline:', {\n conversationId: conversationId,\n conversationIdType: typeof conversationId,\n conversationIdLength: conversationId?.length,\n isNewConversation: !conversationId,\n pipelineRequest: pipelineRequest,\n currentConversation: currentConversation\n });\n\n // Execute pipeline - this calls /pipeline/${agency_id}/exec\n const pipelineService = getPipelineService();\n const response = await pipelineService.executePipeline(pipelineRequest);\n\n // Remove loading message and add response messages\n removeMessage(loadingMessage.id!);\n\n // Server usually echoes the user turn in `response.messages`; drop the optimistic local row (not keyed by id)\n const serverIncludesUserTurn =\n response.messages?.some((m) => m.role === 'user') ?? false;\n if (serverIncludesUserTurn) {\n removeOptimisticUserMessages();\n // Edit flow keeps the local edited user row until pipeline returns.\n // Drop that local row when server echoes the persisted user turn.\n if (messageId) {\n removeMessage(messageId);\n }\n }\n\n // Only trigger typing effect for messages received from /pipeline/${agency_id}/exec response\n if (response.messages && response.messages.length > 0) {\n response.messages.forEach(message => {\n // Mark assistant messages from pipeline exec response as needing animation\n const messageWithAnimation = {\n ...message,\n shouldAnimate: message.role === 'assistant' && !message.loading\n };\n addMessage(messageWithAnimation);\n onMessageReceived?.(messageWithAnimation);\n });\n }\n\n // Reload conversations to update titles\n loadConversations();\n } catch (err) {\n const error = new Error(t('chat.errors.failedToSendMessage'));\n onError?.(error);\n setError(t('chat.errors.failedToSendMessage'));\n \n // Update loading message with error\n const loadingMessages = messages.filter(m => m.loading);\n if (loadingMessages.length > 0) {\n const loadingMessage = loadingMessages[0];\n updateMessage(loadingMessage.id!, {\n ...loadingMessage,\n loading: false,\n has_error: true,\n content: t('chat.messages.error')\n });\n }\n } finally {\n setIsLoading(false);\n }\n }, [\n currentConversation,\n mergedConfig,\n messages,\n addMessage,\n removeMessage,\n removeOptimisticUserMessages,\n truncateMessagesAt,\n updateMessage,\n updateConversation,\n setCurrentConversation,\n loadConversations,\n onMessageSent,\n onMessageReceived,\n onError\n ]);\n\n const handleDeleteMessage = useCallback((messageId: string) => {\n setMessageToDelete(messageId);\n setIsDeleteMessageDialogOpen(true);\n }, []);\n\n const handleEditMessage = useCallback((payload: { messageId: string; content: string }) => {\n updateMessage(payload.messageId, { content: payload.content });\n handleSendMessage(payload.content, undefined, undefined, payload.messageId);\n }, [updateMessage, handleSendMessage]);\n\n const confirmDeleteMessage = useCallback(async () => {\n if (!messageToDelete || !mergedConfig) return;\n \n try {\n const messageService = getMessageService();\n await messageService.deleteMessage(messageToDelete, mergedConfig.agencyId);\n removeMessage(messageToDelete);\n \n // Close dialog\n setIsDeleteMessageDialogOpen(false);\n setMessageToDelete(null);\n } catch (err) {\n const error = new Error(t('chat.errors.failedToDeleteMessage'));\n onError?.(error);\n setError(t('chat.errors.failedToDeleteMessage'));\n // Close dialog even on error\n setIsDeleteMessageDialogOpen(false);\n setMessageToDelete(null);\n }\n }, [messageToDelete, mergedConfig, removeMessage, onError, t]);\n\n const cancelDeleteMessage = useCallback(() => {\n setIsDeleteMessageDialogOpen(false);\n setMessageToDelete(null);\n }, []);\n\n const handleConfirmation = useCallback(async (result: { confirmed: 'Confirmed' | 'NotConfirmed'; key?: string }) => {\n if (!mergedConfig || !currentConversation) return;\n\n try {\n setIsLoading(true);\n\n const conversationId = currentConversation.id;\n if (!conversationId) {\n console.warn('Cannot handle confirmation: conversation has no ID');\n return;\n }\n\n // Create a working message\n const workingMessage: FusioniMemoryMessage = {\n id: `loading-${Date.now()}`,\n shouldAnimate: false,\n agency_id: mergedConfig.agencyId,\n conversation_id: conversationId,\n role: 'assistant',\n content: '',\n mem_type: 'short',\n keywords: [],\n thoughts: null,\n created: new Date(),\n loading: true,\n has_error: false\n };\n\n addMessage(workingMessage);\n\n const confirmed = 'Confirmed';\n const notConfirmingMessage = t('common.no');\n\n // Set up context\n const ctx: Record<string, string> = {};\n if (result.key && result.confirmed === confirmed) {\n ctx[result.key] = confirmed;\n }\n\n // Execute pipeline with context - this calls /pipeline/${agency_id}/exec\n const pipelineService = getPipelineService();\n const pipelineRequest = {\n conversation_id: conversationId,\n agency_id: mergedConfig.agencyId,\n context: Object.keys(ctx).length > 0 ? ctx : null,\n inp: result.confirmed !== confirmed ? notConfirmingMessage : null\n };\n\n const response = await pipelineService.executePipeline(pipelineRequest);\n\n // Remove working message and add response messages\n removeMessage(workingMessage.id!);\n \n // Only trigger typing effect for messages received from /pipeline/${agency_id}/exec response\n if (response.messages && response.messages.length > 0) {\n response.messages.forEach(message => {\n // Mark assistant messages from pipeline exec response as needing animation\n const messageWithAnimation = {\n ...message,\n shouldAnimate: message.role === 'assistant' && !message.loading\n };\n addMessage(messageWithAnimation);\n onMessageReceived?.(messageWithAnimation);\n });\n }\n\n // Reload conversations to update titles\n loadConversations();\n } catch (err) {\n const error = new Error(t('chat.errors.failedToSendMessage'));\n onError?.(error);\n setError(t('chat.errors.failedToSendMessage'));\n \n // Update working message with error\n const loadingMessages = messages.filter(m => m.loading);\n if (loadingMessages.length > 0) {\n const loadingMessage = loadingMessages[0];\n updateMessage(loadingMessage.id!, {\n ...loadingMessage,\n loading: false,\n has_error: true,\n content: t('chat.messages.error')\n });\n }\n } finally {\n setIsLoading(false);\n }\n }, [\n mergedConfig,\n currentConversation,\n messages,\n addMessage,\n removeMessage,\n updateMessage,\n loadConversations,\n onMessageReceived,\n onError,\n t\n ]);\n\n const handleFileUpload = useCallback(async (file: File): Promise<string> => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n \n reader.onload = () => {\n const base64String = reader.result as string;\n resolve(base64String);\n };\n \n reader.onerror = () => {\n const error = new Error(t('chat.errors.failedToUploadFile'));\n onError?.(error);\n setError(t('chat.errors.failedToUploadFile'));\n reject(error);\n };\n \n reader.readAsDataURL(file);\n });\n }, [onError]);\n\n // Don't render until config is ready\n if (!isConfigReady || !mergedConfig) {\n return null;\n }\n\n if (error) {\n return (\n <div className=\"fusioni-chat-error\">\n <p>{t('common.error')}: {error}</p>\n <button onClick={() => setError(null)}>{t('chat.errors.retry')}</button>\n </div>\n );\n }\n\n // Debug: Log the primary color and button variant being applied\n console.log('Primary color being applied:', mergedConfig.primaryColor || '#6366f1');\n console.log('Button variant being applied:', mergedConfig.buttonVariant || 'glass');\n\n return (\n <div \n className={`fusioni-chat-widget ${theme}`}\n style={{ '--primary-color': mergedConfig.primaryColor || '#6366f1' } as React.CSSProperties}\n >\n \n <FloatingButton\n isOpen={isOpen}\n onClick={handleToggleChat}\n position={mergedConfig.position || 'bottom-right'}\n primaryColor={mergedConfig.primaryColor}\n buttonRef={floatingButtonRef}\n variant={mergedConfig.buttonVariant || 'glass'}\n shouldDisplay={!hasConfigError && (!isMobileLayout || !isOpen)}\n />\n \n {isOpen && (\n <ChatPanel\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n position={mergedConfig.position || 'bottom-right'}\n isFullscreen={isFullscreen}\n floatingButtonRef={floatingButtonRef}\n >\n <div className=\"fusioni-chat-container\">\n {mergedConfig.showConversationList !== false && (\n <>\n <div \n className={`fusioni-conversation-backdrop ${isConversationListOpen ? 'open' : ''}`}\n onClick={() => setIsConversationListOpen(false)}\n />\n <ConversationList\n conversations={conversations}\n selectedConversationId={currentConversation?.id || undefined}\n onSelectConversation={handleSelectConversation}\n onDeleteConversation={handleDeleteConversation}\n onCreateConversation={handleCreateConversation}\n isOpen={isConversationListOpen}\n currentLanguage={currentLanguage}\n />\n </>\n )}\n \n <div className=\"fusioni-chat-main\">\n <div className=\"fusioni-chat-main-header\">\n {mergedConfig.showConversationList !== false ? (\n <button\n type=\"button\"\n onClick={handleToggleConversationList}\n className={`fusioni-conversation-toggle ${isConversationListOpen ? 'open' : ''}`}\n >\n <svg className=\"fusioni-conversation-toggle-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M3 12h18M3 6h18M3 18h18\"/>\n </svg>\n {t('chat.conversations.title')}\n </button>\n ) : (\n <span className=\"fusioni-chat-main-header-title\">{t('chat.title')}</span>\n )}\n <div className=\"fusioni-header-actions\">\n {isMobileLayout && (\n <button\n type=\"button\"\n onClick={() => setIsOpen(false)}\n className=\"fusioni-btn fusioni-btn-icon fusioni-chat-toolbar-close-mobile\"\n title={t('common.close')}\n aria-label={t('common.close')}\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6L18 18\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n </button>\n )}\n {mergedConfig.showThemeToggle !== false && (\n <button\n type=\"button\"\n onClick={toggleTheme}\n className=\"fusioni-btn fusioni-btn-icon\"\n title={theme === 'dark' ? t('chat.theme.light') : t('chat.theme.dark')}\n >\n {theme === 'dark' ? (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"5\"/>\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"/>\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"/>\n <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"/>\n <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"/>\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"/>\n <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"/>\n <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"/>\n <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"/>\n </svg>\n ) : (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"/>\n </svg>\n )}\n </button>\n )}\n {mergedConfig.showFullscreenToggle !== false && (\n <button\n type=\"button\"\n onClick={handleToggleFullscreen}\n className=\"fusioni-btn fusioni-btn-icon\"\n title={isFullscreen ? t('chat.fullscreen.exit') : t('chat.fullscreen.enter')}\n >\n {isFullscreen ? (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M8 3V5M8 3H5M8 3L3 8M16 3V5M16 3H19M16 3L21 8M8 21V19M8 21H5M8 21L3 16M16 21V19M16 21H19M16 21L21 16\"/>\n </svg>\n ) : (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M8 3H5C4.46957 3 3.96086 3.21071 3.58579 3.58579C3.21071 3.96086 3 4.46957 3 5V8M21 8V5C21 4.46957 20.7893 3.96086 20.4142 3.58579C20.0391 3.21071 19.5304 3 19 3H16M16 21H19C19.5304 21 20.0391 20.7893 20.4142 20.4142C20.7893 20.0391 21 19.5304 21 19V16M3 16V19C3 19.5304 3.21071 20.0391 3.58579 20.4142C3.96086 20.7893 4.46957 21 5 21H8\"/>\n </svg>\n )}\n </button>\n )}\n {mergedConfig.showLanguageSwitcher !== false && (\n <LanguageSwitcher\n currentLanguage={currentLanguage}\n onLanguageChange={handleLanguageChange}\n />\n )}\n </div>\n </div>\n \n {currentConversation ? (\n <>\n <MessageList\n messages={messages}\n streamMessages={streamMessages}\n showThoughts={false}\n onDeleteMessage={handleDeleteMessage}\n onEditMessage={handleEditMessage}\n onConfirmation={handleConfirmation}\n enableButtons={!isLoading}\n apiBaseUrl={mergedConfig.apiBaseUrl}\n apiKey={mergedConfig.accessToken}\n agencyId={mergedConfig.agencyId}\n currentLanguage={currentLanguage}\n theme={theme}\n />\n <ChatInput\n onSendMessage={handleSendMessage}\n onFileUpload={handleFileUpload}\n disabled={isLoading}\n placeholder={t('chat.input.placeholder')}\n enableAudioRecording={mergedConfig.enableAudioRecording !== false}\n enableFileUpload={mergedConfig.enableFileUpload !== false}\n maxFileSize={mergedConfig.maxFileSize || 10}\n allowedFileTypes={mergedConfig.allowedFileTypes || ['image/*']}\n currentLanguage={currentLanguage}\n />\n </>\n ) : (\n <div className=\"fusioni-chat-welcome\">\n <div className=\"fusioni-chat-welcome-content\">\n <h3>{t('chat.welcome.title')}</h3>\n <p>{t('chat.welcome.description')}</p>\n <button \n onClick={handleCreateConversation}\n disabled={isLoading}\n className=\"fusioni-btn fusioni-btn-primary\"\n >\n {isLoading ? t('chat.welcome.creating') : t('chat.welcome.startButton')}\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n </ChatPanel>\n )}\n\n {/* Delete Conversation Confirmation Dialog */}\n <ConfirmationDialog\n isOpen={isDeleteDialogOpen}\n title={t('chat.conversations.deleteConfirm.title')}\n message={t('chat.conversations.deleteConfirm.message')}\n confirmText={t('chat.conversations.deleteConfirm.confirm')}\n cancelText={t('chat.conversations.deleteConfirm.cancel')}\n onConfirm={confirmDeleteConversation}\n onCancel={cancelDeleteConversation}\n currentLanguage={currentLanguage}\n variant=\"danger\"\n />\n\n {/* Delete Message Confirmation Dialog */}\n <ConfirmationDialog\n isOpen={isDeleteMessageDialogOpen}\n title={t('chat.messages.deleteConfirm.title')}\n message={t('chat.messages.deleteConfirm.message')}\n confirmText={t('chat.messages.deleteConfirm.confirm')}\n cancelText={t('chat.messages.deleteConfirm.cancel')}\n onConfirm={confirmDeleteMessage}\n onCancel={cancelDeleteMessage}\n currentLanguage={currentLanguage}\n variant=\"danger\"\n />\n </div>\n );\n});\n\nChatWidget.displayName = 'ChatWidget';\n","import React, { useRef, useCallback } from 'react';\n\ninterface FileUploadProps {\n onFileSelect: (file: File) => void;\n accept?: string;\n maxSize?: number; // in MB\n disabled?: boolean;\n className?: string;\n}\n\nexport const FileUpload: React.FC<FileUploadProps> = ({\n onFileSelect,\n accept = 'image/*',\n maxSize = 10,\n disabled = false,\n className = ''\n}) => {\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const handleFileChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (file) {\n // Validate file size\n if (file.size > maxSize * 1024 * 1024) {\n alert(`File size must be less than ${maxSize}MB`);\n return;\n }\n\n onFileSelect(file);\n }\n\n // Reset input value to allow selecting the same file again\n if (fileInputRef.current) {\n fileInputRef.current.value = '';\n }\n }, [onFileSelect, maxSize]);\n\n const handleClick = useCallback(() => {\n if (!disabled && fileInputRef.current) {\n fileInputRef.current.click();\n }\n }, [disabled]);\n\n return (\n <div className={`fusioni-file-upload ${className}`}>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n onChange={handleFileChange}\n style={{ display: 'none' }}\n disabled={disabled}\n />\n <button\n onClick={handleClick}\n disabled={disabled}\n className=\"fusioni-btn fusioni-btn-icon\"\n title=\"Upload file\"\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M21 15V19C21 19.5304 20.7893 20.0391 20.4142 20.4142C20.0391 20.7893 19.5304 21 19 21H5C4.46957 21 3.96086 20.7893 3.58579 20.4142C3.21071 20.0391 3 19.5304 3 19V15\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <polyline\n points=\"7,10 12,15 17,10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"12\"\n y1=\"15\"\n x2=\"12\"\n y2=\"3\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n );\n};\n","import React from 'react';\n\nexport const ChatLoader: React.FC = () => {\n return (\n <div className=\"fusioni-chat-loader\">\n <div className=\"fusioni-loader-content\">\n <div className=\"fusioni-loader-dots\">\n <div className=\"fusioni-loader-dot\" />\n <div className=\"fusioni-loader-dot\" />\n <div className=\"fusioni-loader-dot\" />\n </div>\n <span className=\"fusioni-loader-text\">AI is thinking...</span>\n </div>\n </div>\n );\n};\n"],"names":["isFunction","AxiosError","utils","prototype","toFormData","encode","URLSearchParams","FormData","Blob","platform","AxiosHeaders","isCancel","CanceledError","mergeConfig","ReadableStream","fetchAdapter.getFetch","VERSION","validators","Axios","spread","isAxiosError","HttpStatusCode","CancelToken","useState","useEffect","useCallback","useMemo","_jsxs","_jsx","useRef","Map","_Fragment","createPortal","forwardRef","useImperativeHandle"],"mappings":"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","x_google_ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52]}