@brainfish-ai/widgets-initiator 0.1.1-beta → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +94 -34
- package/components.json +16 -0
- package/dist/esm/index.css +4 -0
- package/dist/esm/index.css.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/index.d.ts +801 -0
- package/package.json +141 -32
- package/package.json.bak +153 -0
- package/stats.html +4949 -0
- package/tailwind.config.js +140 -0
- package/.prettierignore +0 -7
- package/.prettierrc +0 -6
- package/dist/web.cjs.js +0 -2
- package/dist/web.cjs.js.map +0 -1
- package/dist/web.js +0 -2
- package/dist/web.js.map +0 -1
- package/index.html +0 -63
- package/postcss.config.cjs +0 -6
- package/src/register.ts +0 -31
- package/src/web.ts +0 -104
- package/tailwind.config.cjs +0 -9
- package/tsconfig.json +0 -14
- package/vite.config.ts +0 -33
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/colors/customColor.ts","../../src/colors/dark.ts","../../src/colors/index.ts","../../src/colors/primary.ts","../../src/colors/orange.ts","../../src/colors/yellow.ts","../../src/colors/green.ts","../../src/colors/blue.ts","../../src/colors/purple.ts","../../src/colors/pink.ts","../../src/colors/red.ts","../../../../node_modules/tslib/tslib.es6.js","../../src/lib/utils.ts","../../src/components/ui/tooltip.tsx","../../../../node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../../../../node_modules/@radix-ui/react-slot/dist/index.mjs","../../src/components/ui/button.tsx","../../src/components/chat-search/Suggestions.tsx","../../src/components/ui/input.tsx","../../src/components/ui/label.tsx","../../src/components/ui/textarea.tsx","../../src/components/ui/select.tsx","../../src/components/select/simpleSelect.tsx","../../src/components/ui/calendar.tsx","../../src/components/ui/popover.tsx","../../src/components/date-picker/date-picker.tsx","../../src/components/chat-search/blocks/ActionInputForm.tsx","../../src/components/chat-search/blocks/ActionButtons.tsx","../../src/components/markdown/utils/codeblock.ts","../../src/components/markdown/CodeBlock.tsx","../../src/components/markdown/Frame.tsx","../../src/components/markdown/embeds/Loom.tsx","../../src/components/markdown/embeds/Supademo.tsx","../../src/components/markdown/embeds/Typeform.tsx","../../src/components/markdown/embeds/Vimeo.tsx","../../src/components/markdown/embeds/Wistia.tsx","../../src/components/markdown/embeds/Youtube.tsx","../../src/components/markdown/embeds/index.tsx","../../src/components/markdown/MemoizedReactMarkdown.tsx","../../src/components/markdown/MermaidDiagram.tsx","../../src/components/markdown/ZoomableImage.tsx","../../src/components/markdown/FormattedMessage.tsx","../../src/components/markdown/utils/stripNewLines.ts","../../src/components/chat-search/blocks/MarkdownText.tsx","../../src/components/chat-search/AnswerBlock.tsx","../../src/components/chat-search/blocks/utils.ts","../../src/components/ui/icon.tsx","../../src/components/chat-search/NextBestActions.tsx","../../src/components/chat-search/types.ts","../../src/components/chat-search/helpers/nextBestActions.ts","../../src/components/chat-search/AnswerActions.tsx","../../src/components/ui/collapsible.tsx","../../src/components/feedback/feedback.tsx","../../src/components/chat-search/hooks/useAnswerList.ts","../../src/components/chat-search/hooks/useConversationId.ts","../../src/components/chat-search/ChatSearchContext.tsx","../../src/components/chat-search/hooks/useIsChatSearchDirty.ts","../../src/lib/fetchClient.ts","../../src/lib/api.ts","../../src/components/chat-search/hooks/useConversationLoader.ts","../../src/components/chat-search/hooks/useAccessibleColor.ts","../../src/components/chat-search/hooks/useDarkMode.ts","../../src/components/generating-star/generating-star.tsx","../../src/components/chat-search/Answer.tsx","../../src/components/chat-search/FollowUpQuestions.tsx","../../src/components/chat-search/TimelineNavigation.tsx","../../src/components/chat-search/ScrollToBottomArrow.tsx","../../src/components/ui/dropdown-menu.tsx","../../src/components/chat-search/PrimarySearch.tsx","../../src/components/chat-search/FollowUpSearchBar.tsx","../../src/components/chat-search/Header.tsx","../../src/components/chat-search/text-config.ts","../../src/components/chat-search/LoadingConversation.tsx","../../src/lib/feature-flags.tsx","../../src/lib/hooks.ts","../../src/components/ui/scroll-area.tsx","../../src/components/chat-search/ChatSearch.tsx","../../src/components/chat-search/hooks/useScrollManager.ts","../../src/components/chat-search/hooks/useSubscriptionManager.ts","../../src/components/ui/switch.tsx","../../src/components/ui/dialog.tsx","../../src/components/ui/command.tsx","../../src/components/combobox/combobox.tsx","../../src/components/filter/filter.tsx","../../src/components/filter/filters.tsx"],"sourcesContent":["// function to create custom color that supports TW's opacity modifier\nexport function customColor(cssVariable, fallbackColor) {\n return ({ opacityVariable, opacityValue }) => {\n const opacity = opacityValue !== undefined ? opacityValue : `var(${opacityVariable}, 1)`;\n return `rgb(var(${cssVariable}, ${fallbackColor}) / ${opacity})`;\n };\n}\n","export const dark = {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#E5E5E5',\n 300: '#D4D4D4',\n 400: '#A3A3A3',\n 500: '#737373',\n 600: '#525252',\n 700: '#404040',\n 800: '#262626',\n 900: '#171717',\n DEFAULT: '#171717', // 900\n};\n","import { primary } from './primary';\nimport { dark } from './dark';\nimport { orange } from './orange';\nimport { yellow } from './yellow';\nimport { green } from './green';\nimport { blue } from './blue';\nimport { purple } from './purple';\nimport { pink } from './pink';\nimport { red } from './red';\nimport { customColor } from './customColor';\nexport const BrainfishColors = {\n primary,\n dark,\n orange,\n yellow,\n green,\n blue,\n purple,\n pink,\n red,\n};\nexport { customColor };\n","import { customColor } from './customColor';\nimport { dark } from './dark';\nexport const primary = {\n 50: '#F7FEE8',\n 100: '#ECFCCC',\n 200: '#D9F99E',\n 300: '#BEF265',\n 400: '#A3E635',\n 500: '#84CC17',\n 600: '#65A30E',\n 700: '#4E7C10',\n 800: '#406213',\n 900: '#375415',\n DEFAULT: customColor('--bfc-primary', '#A3E635'),\n foreground: customColor('--bfc-primary-foreground', dark.DEFAULT),\n};\n","export const orange = {\n 50: '#FFF7EE',\n 100: '#FFEDD6',\n 200: '#FED7AB',\n 300: '#FDBA75',\n 400: '#FB923D',\n 500: '#F97317',\n 600: '#EA590D',\n 700: '#C2420D',\n 800: '#9A3513',\n 900: '#7C2E13',\n DEFAULT: '#FB923D', // 400\n};\n","export const yellow = {\n 50: '#FFFBEC',\n 100: '#FEF3C8',\n 200: '#FDE68B',\n 300: '#FCD34E',\n 400: '#FBBF25',\n 500: '#F59E0C',\n 600: '#D97707',\n 700: '#B4540A',\n 800: '#92410F',\n 900: '#783610',\n DEFAULT: '#FBBF25', // 400\n};\n","export const green = {\n 50: '#EDFDF5',\n 100: '#D2FAE5',\n 200: '#A8F3D0',\n 300: '#6FE7B7',\n 400: '#35D399',\n 500: '#11B981',\n 600: '#069669',\n 700: '#057857',\n 800: '#075F47',\n 900: '#074F3C',\n DEFAULT: '#35D399', // 400\n};\n","export const blue = {\n 50: '#F0F6FF',\n 100: '#DCEAFE',\n 200: '#C0DBFE',\n 300: '#94C5FD',\n 400: '#61A5FA',\n 500: '#3C82F6',\n 600: '#2663EB',\n 700: '#1E4FD8',\n 800: '#1F41AF',\n 900: '#1F3B8A',\n DEFAULT: '#61A5FA', // 400\n};\n","export const purple = {\n 50: '#F5F4FF',\n 100: '#EDEAFE',\n 200: '#DED7FE',\n 300: '#C5B6FD',\n 400: '#A78CFA',\n 500: '#8C5DF6',\n 600: '#7C3BED',\n 700: '#6D29D9',\n 800: '#5B22B6',\n 900: '#4D1E95',\n DEFAULT: '#8C5DF6', // 500\n};\n","export const pink = {\n 50: '#F5F4FF',\n 100: '#FAE9FF',\n 200: '#F5D1FE',\n 300: '#F0ACFC',\n 400: '#E87AF9',\n 500: '#D947EF',\n 600: '#C027D3',\n 700: '#A21DAF',\n 800: '#861A8F',\n 900: '#701B75',\n DEFAULT: '#E87AF9', // 400\n};\n","export const red = {\n 50: '#FFF2F3',\n 100: '#FFE5E6',\n 200: '#FECED4',\n 300: '#FDA5B0',\n 400: '#FB7286',\n 500: '#F4405E',\n 600: '#E11E49',\n 700: '#BE133D',\n 800: '#9F133A',\n 900: '#881438',\n DEFAULT: '#F4405E', // 500\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { useRef } from 'react';\nimport { clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\nexport function cn(...inputs) {\n return twMerge(clsx(inputs));\n}\nlet globalId = 0;\nconst genId = () => ++globalId;\nexport function useId(prefix) {\n const idRef = useRef();\n if (idRef.current === undefined) {\n idRef.current = `${prefix || 'id'}-${genId()}`;\n }\n return idRef.current;\n}\nexport function isAnswerUncertain(response) {\n // Define uncertainty patterns for various languages\n const uncertaintyPatternsByLanguage = {\n en: [\n /i(?:\\s|['\\u2018\\u2019])?m(?:\\s+really)?\\s+not\\s+sure/i,\n /i(?:\\s+am)?(?:\\s+really)?\\s+not\\s+sure/i,\n /i\\s+(?:really\\s+)?don(?:['\\u2018\\u2019])?t\\s+know/i,\n /it(?:['\\u2018\\u2019]s| is) unclear/i,\n /cannot determine/i,\n /hard to say/i,\n /difficult to determine/i,\n /need more information/i,\n ],\n es: [/no (?:lo )?sé/i, /no estoy seguro/i, /no es claro/i, /desconocido/i],\n fr: [/je ne sais pas/i, /je ne suis pas sûr/i, /ce n'est pas clair/i, /inconnu/i],\n de: [/ich weiß nicht/i, /ich bin nicht sicher/i, /es ist unklar/i, /unbekannt/i],\n it: [/non lo so/i, /non sono sicuro/i, /non è chiaro/i, /sconosciuto/i],\n pt: [/não sei/i, /não tenho certeza/i, /não está claro/i, /desconhecido/i],\n nl: [/ik weet het niet/i, /ik weet niet zeker/i, /het is onduidelijk/i, /onbekend/i],\n pl: [/nie wiem/i, /nie jestem pewien/i, /to nie jest jasne/i, /nieznany/i],\n ru: [/я не знаю/i, /я не уверен/i, /это не ясно/i, /неизвестно/i],\n ja: [/知りません/i, /よくわからない/i, /不明です/i, /未知/i],\n ko: [/모릅니다/i, /잘 모르겠습니다/i, /불확실합니다/i, /알 수 없음/i],\n zh: [/我不知道/i, /我不确定/i, /不清楚/i, /未知/i],\n 'zh-TW': [/我不知道/i, /我不確定/i, /不清楚/i, /未知/i],\n };\n let earliestMatch = null;\n // Find the earliest match across all languages\n for (const [language, patterns] of Object.entries(uncertaintyPatternsByLanguage)) {\n for (const pattern of patterns) {\n const match = response.match(pattern);\n if (match && (earliestMatch === null || match.index < earliestMatch.index)) {\n earliestMatch = { index: match.index, language };\n }\n }\n }\n return earliestMatch ? { uncertain: true, language: earliestMatch.language } : { uncertain: false, language: null };\n}\nexport function getLuminance(rgb) {\n const [r, g, b] = rgb.split(',').map(Number);\n const [R, G, B] = [r, g, b].map((v) => {\n v /= 255;\n return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\n });\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n}\n","import { __rest } from \"tslib\";\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"@/lib/utils\";\nconst TooltipProvider = (_a) => {\n var { delayDuration = 200 } = _a, props = __rest(_a, [\"delayDuration\"]);\n return (React.createElement(TooltipPrimitive.Provider, Object.assign({ delayDuration: delayDuration }, props)));\n};\nconst Tooltip = TooltipPrimitive.Root;\nconst TooltipTrigger = TooltipPrimitive.Trigger;\nconst TooltipContent = React.forwardRef((_a, ref) => {\n var { className, sideOffset = 4, background, textColor, borderColor, style } = _a, props = __rest(_a, [\"className\", \"sideOffset\", \"background\", \"textColor\", \"borderColor\", \"style\"]);\n return (React.createElement(TooltipPrimitive.Portal, null,\n React.createElement(TooltipPrimitive.Content, Object.assign({ ref: ref, sideOffset: sideOffset, className: cn(\"z-50 overflow-hidden rounded-lg px-4 py-3 text-sm font-medium shadow-lg animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\", className), style: Object.assign(Object.assign({}, style), { backgroundColor: background || '#ffffff', color: textColor || 'rgb(31 41 55)', borderColor: borderColor || 'rgb(243 244 246)', borderWidth: '1px', borderStyle: 'solid' }) }, props))));\n});\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","import { __rest } from \"tslib\";\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nconst buttonVariants = cva(\"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\", {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline: \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n dark: 'bg-dark-700 text-white shadow hover:bg-dark-800 dark:bg-primary dark:text-primary-foreground dark:hover:bg-primary/80 focus-visible:bg-dark-800 dark:focus-visible:bg-primary/80',\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-sm\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n});\nconst Button = React.forwardRef((_a, ref) => {\n var { className, variant, size, asChild = false } = _a, props = __rest(_a, [\"className\", \"variant\", \"size\", \"asChild\"]);\n const Comp = asChild ? Slot : \"button\";\n return (React.createElement(Comp, Object.assign({ className: cn(buttonVariants({ variant, size, className })), ref: ref }, props)));\n});\nButton.displayName = \"Button\";\nexport { Button, buttonVariants };\n","import React from 'react';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../ui/tooltip';\nimport { Button } from '../ui/button';\nexport function Suggestions({ suggestions, onQuestionClick, title = 'Suggested questions' }) {\n if (!suggestions || suggestions.length === 0)\n return null;\n return (React.createElement(\"div\", { className: \"w-full p-3\", \"data-name\": \"Suggestions\" },\n React.createElement(\"h3\", { className: \"text-base font-medium mb-4 text-foreground\" }, title),\n React.createElement(\"div\", { className: \"flex flex-wrap gap-2\" }, suggestions.map((suggestion) => (React.createElement(Button, { key: suggestion.id, onClick: () => onQuestionClick(suggestion), variant: \"outline\", className: \"border-border font-normal whitespace-normal h-auto text-left\" },\n suggestion.messageCount !== undefined && (React.createElement(TooltipProvider, null,\n React.createElement(Tooltip, null,\n React.createElement(TooltipTrigger, { asChild: true },\n React.createElement(\"span\", { className: \"bg-gray-100 text-gray-600 px-2 py-0.5 rounded-full text-xs min-w-[20px] border flex items-center justify-center border-border\" }, suggestion.messageCount)),\n React.createElement(TooltipContent, null,\n React.createElement(\"p\", null,\n suggestion.messageCount,\n \" messages in this conversation\"))))),\n React.createElement(\"span\", { className: \"\" }, suggestion.question)))))));\n}\nexport default Suggestions;\n","import { __rest } from \"tslib\";\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nconst Input = React.forwardRef((_a, ref) => {\n var { className, type } = _a, props = __rest(_a, [\"className\", \"type\"]);\n return (React.createElement(\"input\", Object.assign({ type: type, className: cn(\"flex h-12 w-full rounded-md border border-input bg-transparent px-4 py-3 text-base transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\", className), ref: ref }, props)));\n});\nInput.displayName = \"Input\";\nexport { Input };\n","import { __rest } from \"tslib\";\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nconst labelVariants = cva(\"font-bold leading-6 peer-disabled:cursor-not-allowed peer-disabled:opacity-70\");\nconst Label = React.forwardRef((_a, ref) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(LabelPrimitive.Root, Object.assign({ ref: ref, className: cn(labelVariants(), className) }, props)));\n});\nLabel.displayName = LabelPrimitive.Root.displayName;\nexport { Label };\n","import { __rest } from \"tslib\";\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nconst Textarea = React.forwardRef((_a, ref) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(\"textarea\", Object.assign({ className: cn(\"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\", className), ref: ref }, props)));\n});\nTextarea.displayName = \"Textarea\";\nexport { Textarea };\n","import { __rest } from \"tslib\";\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, CaretDown } from \"@phosphor-icons/react\";\nimport { cn } from \"@/lib/utils\";\nconst Select = SelectPrimitive.Root;\nconst SelectGroup = SelectPrimitive.Group;\nconst SelectValue = SelectPrimitive.Value;\nconst SelectTrigger = React.forwardRef((_a, ref) => {\n var { className, children } = _a, props = __rest(_a, [\"className\", \"children\"]);\n return (React.createElement(SelectPrimitive.Trigger, Object.assign({ ref: ref, className: cn(\"flex h-9 w-full items-center justify-between rounded border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\", className) }, props),\n children,\n React.createElement(SelectPrimitive.Icon, { asChild: true },\n React.createElement(CaretDown, { className: \"h-4 w-4 opacity-50\" }))));\n});\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\nconst SelectContent = React.forwardRef((_a, ref) => {\n var { className, children, position = \"popper\", appendToBody } = _a, props = __rest(_a, [\"className\", \"children\", \"position\", \"appendToBody\"]);\n return (React.createElement(SelectPrimitive.Portal, { container: appendToBody ? document.body : undefined },\n React.createElement(SelectPrimitive.Content, Object.assign({ ref: ref, className: cn(\"relative z-[9999] min-w-[8rem] overflow-hidden rounded border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\", position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\", className), position: position }, props),\n React.createElement(SelectPrimitive.Viewport, { className: cn(\"p-1\", position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\") }, children))));\n});\nSelectContent.displayName = SelectPrimitive.Content.displayName;\nconst SelectLabel = React.forwardRef((_a, ref) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(SelectPrimitive.Label, Object.assign({ ref: ref, className: cn(\"px-2 py-1.5 text-sm font-semibold\", className) }, props)));\n});\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\nconst SelectItem = React.forwardRef((_a, ref) => {\n var { className, children } = _a, props = __rest(_a, [\"className\", \"children\"]);\n return (React.createElement(SelectPrimitive.Item, Object.assign({ ref: ref, className: cn(\"relative flex w-full cursor-default select-none items-center rounded py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\", className) }, props),\n React.createElement(\"span\", { className: \"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\" },\n React.createElement(SelectPrimitive.ItemIndicator, null,\n React.createElement(Check, { className: \"h-4 w-4\" }))),\n React.createElement(SelectPrimitive.ItemText, null, children)));\n});\nSelectItem.displayName = SelectPrimitive.Item.displayName;\nconst SelectSeparator = React.forwardRef((_a, ref) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(SelectPrimitive.Separator, Object.assign({ ref: ref, className: cn(\"-mx-1 my-1 h-px bg-muted\", className) }, props)));\n});\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\nexport { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, };\n","import * as React from 'react';\nimport { cn } from '@/lib/utils';\nimport { Select as SelectComponent, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select';\nexport function SimpleSelect({ options, value, onChange, placeholder = 'Select...', disabled = false, className, appendToBody = false, }) {\n const handleValueChange = (newValue) => {\n if (onChange) {\n onChange(newValue);\n }\n };\n return (React.createElement(SelectComponent, { value: value, onValueChange: handleValueChange, disabled: disabled },\n React.createElement(SelectTrigger, { className: cn('w-full', className) },\n React.createElement(SelectValue, { placeholder: placeholder })),\n React.createElement(SelectContent, { appendToBody: appendToBody }, options.map((option) => (React.createElement(SelectItem, { key: option.value, value: option.value }, option.label))))));\n}\n","import { __rest } from \"tslib\";\nimport * as React from \"react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { cn } from \"@/lib/utils\";\nfunction Calendar(_a) {\n var { className, classNames, showOutsideDays = true } = _a, props = __rest(_a, [\"className\", \"classNames\", \"showOutsideDays\"]);\n return (React.createElement(DayPicker, Object.assign({ showOutsideDays: showOutsideDays, className: cn(\"p-4\", className), classNames: Object.assign({}, classNames) }, props)));\n}\nCalendar.displayName = \"Calendar\";\nexport { Calendar };\n","import { __rest } from \"tslib\";\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"@/lib/utils\";\nconst Popover = PopoverPrimitive.Root;\nconst PopoverTrigger = PopoverPrimitive.Trigger;\nconst PopoverAnchor = PopoverPrimitive.Anchor;\nconst PopoverContent = React.forwardRef((_a, ref) => {\n var { className, align = \"center\", sideOffset = 4 } = _a, props = __rest(_a, [\"className\", \"align\", \"sideOffset\"]);\n return (React.createElement(PopoverPrimitive.Portal, null,\n React.createElement(PopoverPrimitive.Content, Object.assign({ ref: ref, align: align, sideOffset: sideOffset, className: cn(\"z-50 w-72 rounded-md border border-foreground bg-popover p-4 text-popover-foreground shadow-[4px_4px_0_0_#171717] dark:shadow-[4px_4px_0_0_#fff] outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\", className) }, props))));\n});\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","import * as React from 'react';\nimport { format } from 'date-fns';\nimport { CalendarBlank as CalendarIcon } from '@phosphor-icons/react';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\nimport { Calendar } from '@/components/ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport '../ui/calendar.css';\nexport function DatePicker({ date, setDate, className, placeholder = 'Select date' }) {\n return (React.createElement(Popover, null,\n React.createElement(PopoverTrigger, { asChild: true },\n React.createElement(Button, { variant: \"outline\", className: cn('w-full justify-start text-left font-normal text-base', !date && 'text-muted-foreground', className) },\n React.createElement(CalendarIcon, { className: \"mr-2 !w-5 !h-5\" }),\n date ? format(date, 'PPP') : placeholder)),\n React.createElement(PopoverContent, { className: \"w-auto p-0 z-[9999]\" },\n React.createElement(Calendar, { mode: \"single\", selected: date, onSelect: setDate, className: \"single-date-picker-calendar\" }))));\n}\n","import React from 'react';\nimport { useForm, Controller } from 'react-hook-form';\nimport { ajvResolver } from '@hookform/resolvers/ajv';\nimport { XCircle } from '@phosphor-icons/react';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport { Textarea } from '@/components/ui/textarea';\nimport { SimpleSelect } from '@/components/select';\nimport { cn } from '@/lib/utils';\nimport { DatePicker } from '@/components/date-picker';\n/**\n * Patches the schema for AJV resolver to correctly validate required string fields.\n *\n * This function addresses a limitation in AJV validation:\n * By default, AJV only checks if a field exists but doesn't consider empty strings invalid.\n * For form validation, we need to ensure required string fields are non-empty.\n * This function adds `minLength: 1` to all required string fields that don't already\n * have a minLength constraint, ensuring empty strings fail validation.\n * see https://github.com/react-hook-form/resolvers/blob/master/README.md#ajv\n *\n * @param schema - The original JSON schema to enhance\n * @returns A new schema with minLength constraints added to required string fields\n */\nexport function patchSchemaForAjvResolver(schema) {\n var _a, _b;\n // Use structuredClone for proper deep copying of all data types\n const newSchema = structuredClone(schema);\n newSchema.errorMessage = 'This field is required';\n for (const [key, property] of Object.entries(((_a = newSchema.properties) !== null && _a !== void 0 ? _a : {}))) {\n if (((_b = newSchema.required) === null || _b === void 0 ? void 0 : _b.includes(key)) && property.type === 'string') {\n property.minLength = property.minLength || 1;\n property.errorMessage = property.errorMessage || {\n minLength: 'This field is required',\n };\n }\n if (property.type === 'number') {\n property.errorMessage = property.errorMessage || {\n type: 'Please enter a valid number',\n };\n }\n }\n return newSchema;\n}\nexport function ActionInputFormBlock({ block }) {\n const formSchema = React.useMemo(() => {\n return patchSchemaForAjvResolver(block.schema);\n }, [block.schema]);\n const { inputs = [], initialValues, state } = block;\n const isReady = state === 'ready';\n const isProcessing = state === 'processing';\n const isCompleted = state === 'completed';\n const defaultValues = Object.entries(initialValues).reduce((acc, [key, value]) => {\n if (typeof value === 'string' && value.trim() === '') {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const { register, control, handleSubmit, formState: { errors }, } = useForm({\n defaultValues,\n resolver: ajvResolver(formSchema, {\n removeAdditional: true,\n }),\n });\n const onSubmit = (e) => {\n e.preventDefault();\n if (block.onSubmit) {\n void handleSubmit(block.onSubmit)(e);\n }\n return false;\n };\n const formInputs = inputs.map((input) => {\n var _a;\n const { name, required, schema: inputSchema, ui } = input;\n const labelText = `${(_a = inputSchema.title) !== null && _a !== void 0 ? _a : name}${required ? '*' : ''}`;\n const description = inputSchema.description;\n const error = errors[name];\n const errorMessage = error === null || error === void 0 ? void 0 : error.message;\n let descriptionText = description ? String(description) : null;\n if (error) {\n // if there is a description, show it and the error message in italic\n descriptionText = description ? (React.createElement(React.Fragment, null,\n description,\n \" - \",\n React.createElement(\"span\", { className: \"italic\" }, errorMessage))) : (\n // if there is no description, just show the error message\n errorMessage);\n }\n const inputType = (ui === null || ui === void 0 ? void 0 : ui.type) || 'text';\n const registerOptions = {\n valueAsNumber: inputType === 'number' ? true : undefined,\n };\n return (React.createElement(\"div\", { key: name, className: \"py-2 flex flex-col gap-2\" },\n React.createElement(Label, { htmlFor: name }, labelText),\n inputType === 'datepicker' ? (React.createElement(Controller, { control: control, name: name, render: ({ field }) => (React.createElement(DatePicker, { date: field.value && typeof field.value === 'string' ? new Date(field.value) : undefined, setDate: (date) => {\n if (date) {\n field.onChange(date.toISOString());\n }\n else {\n field.onChange(undefined);\n }\n }, className: cn('border-dark-300 !bg-transparent', { 'border-red-600': !!error }) })) })) : inputType === 'textarea' ? (React.createElement(Textarea, Object.assign({ disabled: !isReady, rows: 2, maxLength: 10000, className: cn('border-dark-300', '!bg-transparent', { 'border-red-600': !!error }) }, register(name, registerOptions), { \"aria-invalid\": !!error, \"aria-required\": required }))) : inputType === 'select' ? (React.createElement(Controller, { control: control, name: name, render: ({ field }) => {\n var _a, _b;\n return (React.createElement(SimpleSelect, { options: (_b = (_a = inputSchema.oneOf) === null || _a === void 0 ? void 0 : _a.map((option) => ({\n label: option.title,\n value: option.const,\n }))) !== null && _b !== void 0 ? _b : [], className: cn('border-dark-300', '!bg-transparent', { 'border-red-600': !!error }), value: field.value, onChange: (value) => field.onChange(value) }));\n } })) : (React.createElement(Input, Object.assign({ type: inputType, disabled: !isReady, className: cn('border-dark-300', { 'border-red-600': !!error }) }, register(name, registerOptions), { \"aria-invalid\": !!error, \"aria-required\": required }))),\n descriptionText && (React.createElement(\"span\", { className: cn('flex text-sm leading-6 font-medium gap-1.5 items-center', {\n 'text-red-600 dark:text-white': !!error,\n }) },\n error && React.createElement(XCircle, { weight: \"fill\", size: 20, className: \"inline-block align-middle text-red-600\" }),\n React.createElement(\"span\", null, descriptionText)))));\n });\n return (React.createElement(\"div\", { className: \"relative\" },\n React.createElement(\"form\", { className: \"flex flex-col justify-stretch\", onSubmit: onSubmit },\n formInputs,\n React.createElement(\"div\", { className: \"mt-4\" },\n React.createElement(Button, { type: \"submit\", variant: \"dark\", disabled: !isReady, className: \"w-full rounded-s\" },\n isReady && 'Submit',\n isProcessing && 'Processing...',\n isCompleted && 'Completed')))));\n}\n","// eslint-disable-next-line no-unused-vars\nexport function ActionButtonsBlock({ block: _block }) {\n return null;\n}\nexport default ActionButtonsBlock;\n","export const programmingLanguages = {\n javascript: '.js',\n python: '.py',\n java: '.java',\n c: '.c',\n cpp: '.cpp',\n 'c++': '.cpp',\n 'c#': '.cs',\n ruby: '.rb',\n php: '.php',\n swift: '.swift',\n 'objective-c': '.m',\n kotlin: '.kt',\n typescript: '.ts',\n go: '.go',\n perl: '.pl',\n rust: '.rs',\n scala: '.scala',\n haskell: '.hs',\n lua: '.lua',\n shell: '.sh',\n sql: '.sql',\n html: '.html',\n css: '.css',\n // add more file extensions here, make sure the key is same as language prop in CodeBlock.tsx component\n};\nexport const generateRandomString = (length, lowercase = false) => {\n const chars = 'ABCDEFGHJKLMNPQRSTUVWXY3456789'; // excluding similar looking characters like Z, 2, I, 1, O, 0\n let result = '';\n for (let i = 0; i < length; i += 1) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return lowercase ? result.toLowerCase() : result;\n};\n","import { __awaiter } from \"tslib\";\nimport React, { memo, useState } from 'react';\nimport { CheckCircle, Clipboard, Download } from '@phosphor-icons/react';\nimport { Prism } from 'react-syntax-highlighter';\nimport { a11yDark } from 'react-syntax-highlighter/dist/esm/styles/prism';\nimport { Button } from '../ui/button';\nimport { generateRandomString, programmingLanguages } from './utils/codeblock';\nconst HighlighterComponent = Prism;\nexport const CodeBlock = memo(({ language, value }) => {\n const [isCopied, setIsCopied] = useState(false);\n const copyToClipboard = () => __awaiter(void 0, void 0, void 0, function* () {\n if (!navigator.clipboard || !navigator.clipboard.writeText) {\n return;\n }\n try {\n yield navigator.clipboard.writeText(value);\n setIsCopied(true);\n setTimeout(() => {\n setIsCopied(false);\n }, 2000);\n }\n catch (error) {\n console.error('Failed to copy:', error);\n }\n });\n const downloadAsFile = () => {\n const fileExtension = programmingLanguages[language] || '.file';\n const suggestedFileName = `file-${generateRandomString(3, true)}${fileExtension}`;\n const fileName = suggestedFileName;\n const blob = new Blob([value], { type: 'text/plain' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.download = fileName;\n link.href = url;\n link.style.display = 'none';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n };\n return (React.createElement(\"div\", { className: \"relative font-sans text-sm mt-1\" },\n React.createElement(\"div\", { className: \"relative rounded-t-lg bg-zinc-800/80 font-sans text-sm backdrop-blur\" },\n React.createElement(\"div\", { className: \"flex h-8 items-center justify-between px-3\" },\n React.createElement(\"span\", { className: \"text-xs font-medium text-zinc-400\" }, language),\n React.createElement(\"div\", { className: \"flex gap-1\" },\n React.createElement(Button, { variant: \"ghost\", size: \"icon\", className: \"size-5 text-zinc-400 hover:bg-zinc-700/50 hover:text-zinc-100\", onClick: () => void copyToClipboard() }, isCopied ? React.createElement(CheckCircle, { size: 18 }) : React.createElement(Clipboard, { size: 18 })),\n React.createElement(Button, { variant: \"ghost\", size: \"icon\", className: \"size-5 text-zinc-400 hover:bg-zinc-700/50 hover:text-zinc-100\", onClick: downloadAsFile },\n React.createElement(Download, { size: 18 }))))),\n React.createElement(\"div\", { className: \"rounded-b-lg\" },\n React.createElement(HighlighterComponent, { language: language, style: a11yDark, PreTag: \"div\", wrapLongLines: true, customStyle: {\n margin: 0,\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n } }, value))));\n});\nCodeBlock.displayName = 'CodeBlock';\n","import * as React from 'react';\n// eslint-disable-next-line react/display-name\nconst Frame = React.forwardRef(({ src, border, width = '100%', height = '400px', title }, ref) => {\n const [isLoaded, setIsLoaded] = React.useState(false);\n const [iframeLoaded, setIframeLoaded] = React.useState(false);\n React.useEffect(() => {\n let mounted = true;\n setTimeout(() => {\n if (mounted) {\n setIsLoaded(true);\n }\n }, 0);\n return () => {\n mounted = false;\n };\n }, []);\n return (React.createElement(\"div\", { className: `overflow-hidden rounded-lg mt-4 relative ${border ? 'border' : ''}`, style: {\n width,\n height,\n } }, isLoaded && (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: `absolute w-full h-full ${!iframeLoaded ? 'block' : 'hidden'}` },\n React.createElement(\"div\", { className: \"absolute inset-0 bg-muted/10 rounded-lg\" },\n React.createElement(\"div\", { className: \"absolute inset-0\" },\n React.createElement(\"div\", { className: \"h-full w-full shimmer\" }),\n React.createElement(\"div\", { className: \"absolute left-1/2 top-1/2 -translate-1/2 flex flex-col items-center gap-2\" },\n React.createElement(\"div\", { className: \"modern-spinner\" }),\n React.createElement(\"div\", { className: \"text-sm text-muted-foreground\" }, \"Loading...\"))))),\n React.createElement(\"div\", { className: !iframeLoaded ? 'invisible' : 'visible' },\n React.createElement(\"iframe\", { ref: ref, src: src, sandbox: \"allow-same-origin allow-scripts allow-popups allow-forms allow-downloads\", width: width, height: height, title: \"embed\", loading: \"lazy\", allowFullScreen: true, className: \"block rounded-lg\", onLoad: () => setIframeLoaded(true) }),\n title && React.createElement(\"span\", { className: \"block text-center text-sm font-medium\" }, title))))));\n});\nexport default Frame;\n","import * as React from 'react';\nimport Frame from '../Frame';\nfunction Loom(props) {\n const normalizedUrl = props.attrs.href.replace('share', 'embed');\n return React.createElement(Frame, Object.assign({}, props, { src: normalizedUrl, title: \"Loom Embed\" }));\n}\nLoom.isMatch = (href) => {\n const loomRegex = /^https:\\/\\/(www\\.)?(use)?loom\\.com\\/(embed|share)\\/(.*)$/;\n return loomRegex.test(href);\n};\nexport default Loom;\n","import * as React from 'react';\nimport Frame from '../Frame';\nfunction Supademo(props) {\n return React.createElement(Frame, Object.assign({}, props, { src: props.attrs.href, title: \"Supademo Embed\" }));\n}\nSupademo.isMatch = (href) => {\n const urlRegex = /^https:\\/\\/app\\.supademo\\.com\\/embed\\/(.*)$/;\n return urlRegex.test(href);\n};\nexport default Supademo;\n","import * as React from 'react';\nimport Frame from '../Frame';\nfunction Typeform(props) {\n return React.createElement(Frame, Object.assign({}, props, { src: props.attrs.href, title: \"Typeform Embed\" }));\n}\n// Static method to check if the URL matches the Typeform embed pattern\nTypeform.isMatch = (href) => {\n const urlRegex = /^https:\\/\\/([A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?)\\.typeform\\.com\\/to\\/(.*)$/;\n return urlRegex.test(href);\n};\nexport default Typeform;\n","import * as React from 'react';\nimport Frame from '../Frame';\nfunction Vimeo(props) {\n // Extract matches directly within the component\n const extractMatches = (href) => {\n const regex = /(http|https)?:\\/\\/(www\\.)?vimeo\\.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^/]*)\\/videos\\/|)(\\d+)(?:\\/|\\?)?([\\d\\w]+)?/;\n return href.match(regex);\n };\n // Extract the matches from the URL\n const matches = extractMatches(props.attrs.href);\n if (!matches)\n return null; // If no match is found, return null\n const videoId = matches[4];\n const hId = matches[5];\n // Construct the Vimeo embed URL\n const embedUrl = `https://player.vimeo.com/video/${videoId}?byline=0${hId ? `&h=${hId}` : ''}`;\n return React.createElement(Frame, Object.assign({}, props, { src: embedUrl, title: `Vimeo Embed (${videoId})`, height: \"412px\", border: false }));\n}\nVimeo.isMatch = (href) => {\n const regex = /^(https?):\\/\\/(www\\.)?vimeo\\.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^/]*)\\/videos\\/|)?(\\d+)(\\/)?(?:\\?.*|#.*)?$/i;\n return regex.test(href);\n};\nexport default Vimeo;\n","import * as React from 'react';\nimport Frame from '../Frame';\nfunction Wistia(props) {\n // Function to extract matches directly within the component\n const extractMatches = (href) => {\n const urlRegexes = [\n /^https?:\\/\\/([a-zA-Z0-9-_~]+)\\.wistia\\.com\\/medias\\/([a-zA-Z0-9-_~]+)\\/?$/,\n /^https?:\\/\\/fast\\.wistia\\.com\\/embed\\/iframe\\/([a-zA-Z0-9-_~]+)\\/?$/,\n /^fast\\.wistia\\.com\\/embed\\/iframe\\/([a-zA-Z0-9-_~]+)\\/?$/,\n /^([a-zA-Z0-9-_~]+)\\.wistia\\.com\\/medias\\/([a-zA-Z0-9-_~]+)\\/?$/,\n ];\n // eslint-disable-next-line no-restricted-syntax\n for (const regex of urlRegexes) {\n const match = href.match(regex);\n if (match)\n return match;\n }\n return null;\n };\n // Extract matches from the provided URL\n const matches = extractMatches(props.attrs.href);\n if (!matches)\n return null; // If no matches are found, return null\n const domain = matches[1];\n const videoId = matches[2] || matches[1]; // Fallback for fast embed URLs\n // Determine the embed URL based on whether a domain is present\n const embedUrl = domain\n ? `https://${domain}.wistia.com/embed/iframe/${videoId}?seo=true&videoFoam=false`\n : `https://fast.wistia.com/embed/iframe/${videoId}`;\n return React.createElement(Frame, Object.assign({}, props, { src: embedUrl, border: true, title: `Wistia Embed (${videoId})` }));\n}\nWistia.isMatch = (href) => {\n const urlRegexes = [\n /^https?:\\/\\/([a-zA-Z0-9-_~]+)\\.wistia\\.com\\/medias\\/([a-zA-Z0-9-_~]+)(\\/)?(\\?.*)?$/i,\n /^https?:\\/\\/fast\\.wistia\\.com\\/embed\\/iframe\\/([a-zA-Z0-9-_~]+)(\\/)?(\\?.*)?$/i,\n /^fast\\.wistia\\.com\\/embed\\/iframe\\/([a-zA-Z0-9-_~]+)(\\/)?(\\?.*)?$/i,\n /^([a-zA-Z0-9-_~]+)\\.wistia\\.com\\/medias\\/([a-zA-Z0-9-_~]+)(\\/)?(\\?.*)?$/i,\n ];\n return urlRegexes.some((regex) => regex.test(href));\n};\nexport default Wistia;\n","import * as React from 'react';\nimport Frame from '../Frame';\nconst YOUTUBE_URL_REGEX = /^(?:https?:\\/\\/)?(?:www\\.)?(?:youtube(?:-nocookie)?\\.com\\/(?:watch\\?v=|embed\\/|v\\/|shorts\\/)|youtu\\.be\\/)([a-zA-Z0-9_-]{11})(?:\\/|[?&].*)?$/i;\nconst extractTimestamp = (href) => {\n try {\n const url = new URL(href);\n const t = url.searchParams.get('t');\n if (!t)\n return null;\n const seconds = parseInt(t, 10);\n return Number.isNaN(seconds) ? null : seconds;\n }\n catch (_a) {\n return null;\n }\n};\nfunction YouTube(props) {\n const extractVideoId = (href) => {\n const match = href.match(YOUTUBE_URL_REGEX);\n return match ? match[1] : null;\n };\n const videoId = extractVideoId(props.attrs.href);\n if (!videoId) {\n return null;\n }\n const timestamp = extractTimestamp(props.attrs.href);\n const embedUrl = `https://www.youtube.com/embed/${videoId}?modestbranding=1${timestamp ? `&start=${timestamp}` : ''}`;\n return React.createElement(Frame, Object.assign({}, props, { src: embedUrl, title: `YouTube Embed (${videoId})` }));\n}\n// Static method to check if the URL matches the YouTube embed pattern\nYouTube.isMatch = (href) => {\n return YOUTUBE_URL_REGEX.test(href);\n};\nexport default YouTube;\n","import * as React from 'react';\nimport Loom from './Loom';\nimport Supademo from './Supademo';\nimport Typeform from './Typeform';\nimport Vimeo from './Vimeo';\nimport Wistia from './Wistia';\nimport Youtube from './Youtube';\nconst syncEmbedComponents = [Loom, Supademo, Typeform, Youtube, Wistia, Vimeo];\nconst useMatchedComponent = (href, components) => {\n return React.useMemo(() => {\n try {\n const match = components.find((Embed) => Embed.isMatch(href));\n return match ? { Component: match } : null;\n }\n catch (error) {\n console.error('Error finding embed match:', error);\n return null;\n }\n }, [href, components]);\n};\nconst EmbedComponent = (props) => {\n const { href } = props.attrs;\n const matched = useMatchedComponent(href, syncEmbedComponents);\n if (matched) {\n const { Component } = matched;\n return React.createElement(Component, Object.assign({}, props));\n }\n return null;\n};\nexport default EmbedComponent;\n","import { memo } from 'react';\nimport ReactMarkdown from 'react-markdown';\nexport const MemoizedReactMarkdown = memo(ReactMarkdown, (prevProps, nextProps) => prevProps.children === nextProps.children && prevProps.isStreaming === nextProps.isStreaming);\n","import { __awaiter } from \"tslib\";\nimport React, { useEffect, useRef, useState } from 'react';\nimport mermaid from 'mermaid';\nconst config = {\n startOnLoad: false,\n theme: 'default',\n securityLevel: 'loose',\n fontFamily: 'inherit',\n secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\n};\nexport const MermaidDiagram = ({ content }) => {\n const [svg, setSvg] = useState('');\n const [error, setError] = useState(null);\n const containerRef = useRef(null);\n const [isInitialized, setIsInitialized] = useState(false);\n useEffect(() => {\n const initializeMermaid = () => {\n try {\n mermaid.initialize(config);\n setIsInitialized(true);\n }\n catch (err) {\n console.error('Error initializing mermaid:', err);\n setError('Failed to initialize diagram renderer');\n }\n };\n initializeMermaid();\n }, []);\n useEffect(() => {\n if (!isInitialized)\n return;\n const renderDiagram = () => __awaiter(void 0, void 0, void 0, function* () {\n try {\n const id = `mermaid-${Math.random().toString(36).substr(2, 9)}`;\n const { svg } = yield mermaid.render(id, content);\n setSvg(svg);\n setError(null);\n }\n catch (err) {\n console.error('Error rendering mermaid diagram:', err);\n setError('Failed to render diagram');\n }\n });\n void renderDiagram();\n }, [content, isInitialized]);\n if (error) {\n return (React.createElement(\"div\", { className: \"text-red-500 bg-red-50 p-4 rounded-md\" },\n error,\n React.createElement(\"pre\", { className: \"mt-2 text-sm\" }, content)));\n }\n return React.createElement(\"div\", { ref: containerRef, className: \"my-4 overflow-auto\", dangerouslySetInnerHTML: { __html: svg } });\n};\nexport default MermaidDiagram;\n","import * as React from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { ArrowsOut } from '@phosphor-icons/react';\nexport const ZoomableImage = ({ src, alt }) => {\n const [isZoomed, setIsZoomed] = React.useState(false);\n const [showFullCaption, setShowFullCaption] = React.useState(false);\n const [imageError, setImageError] = React.useState(false);\n const [isLoading, setIsLoading] = React.useState(false);\n const [dimensions, setDimensions] = React.useState({ width: 0, height: 0 });\n const imgRef = React.useRef(null);\n const toggleZoom = () => {\n setIsZoomed(!isZoomed);\n };\n const handleImageError = () => {\n setIsLoading(false);\n setImageError(true);\n };\n const handleImageLoad = () => {\n setIsLoading(true);\n if (imgRef.current) {\n const { naturalWidth, naturalHeight } = imgRef.current;\n const maxHeight = 300;\n const aspectRatio = naturalWidth / naturalHeight;\n const height = Math.min(maxHeight, naturalHeight);\n const width = height * aspectRatio;\n setDimensions({ width, height });\n }\n setIsLoading(false);\n };\n if (!src || imageError) {\n return null;\n }\n return (React.createElement(\"figure\", { className: \"relative inline-block my-4 px-4 w-full sm:w-auto\" },\n React.createElement(\"div\", { className: \"flex items-center justify-center min-h-[100px]\" },\n React.createElement(\"button\", { type: \"button\", onClick: toggleZoom, className: \"border-0 p-0 bg-transparent relative group\", \"aria-label\": isZoomed ? 'Zoom out image' : 'Zoom in image' },\n isLoading && (React.createElement(\"div\", { className: \"rounded-md bg-gray-200 dark:bg-gray-800 animate-pulse\", style: {\n width: dimensions.width || 300,\n height: dimensions.height || 200,\n maxHeight: 300,\n } })),\n React.createElement(\"img\", { ref: imgRef, src: src, alt: alt, onError: handleImageError, onLoad: handleImageLoad, className: `max-h-[300px] w-auto object-contain cursor-zoom-in hover:opacity-90 transition-opacity ${isLoading ? 'opacity-0 absolute' : 'opacity-100 relative'}` }),\n !isLoading && (React.createElement(\"div\", { className: \"absolute bottom-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity\" },\n React.createElement(\"div\", { className: \"bg-black/50 text-white p-1.5 rounded-lg\" },\n React.createElement(ArrowsOut, { size: 16 })))))),\n alt && !isLoading && (React.createElement(\"div\", { className: \"relative mt-1\" },\n React.createElement(\"figcaption\", { className: \"text-sm text-gray-600 dark:text-gray-400 text-center group cursor-default\", onMouseEnter: () => setShowFullCaption(true), onMouseLeave: () => setShowFullCaption(false) },\n React.createElement(\"div\", { className: \"line-clamp-2 hover:text-gray-700 dark:hover:text-gray-300\" }, alt)),\n showFullCaption && (React.createElement(\"div\", { className: \"absolute bottom-full left-0 right-0 mb-1 p-2 bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 text-sm text-gray-600 dark:text-gray-400 z-10\" }, alt)))),\n React.createElement(AnimatePresence, null, isZoomed && (React.createElement(React.Fragment, null,\n React.createElement(motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, className: \"fixed inset-0 bg-black/80 z-50\", onClick: toggleZoom }),\n React.createElement(motion.div, { initial: { scale: 0.5, opacity: 0 }, animate: { scale: 1, opacity: 1 }, exit: { scale: 0.5, opacity: 0 }, className: \"fixed inset-0 z-50 flex flex-col items-center justify-center cursor-zoom-out gap-4 p-4 sm:p-8\", onClick: toggleZoom },\n React.createElement(\"div\", { className: \"max-w-[95vw] sm:max-w-[90vw] max-h-[80vh]\" },\n React.createElement(\"img\", { src: src, alt: alt, className: \"w-full h-full object-contain\" })),\n alt && React.createElement(\"div\", { className: \"max-w-[95vw] sm:max-w-[90vw] text-white text-center text-sm\" }, alt)))))));\n};\nexport default ZoomableImage;\n","import { __rest } from \"tslib\";\nimport React, { memo, useEffect, useState, useMemo } from 'react';\nimport rehypeRaw from 'rehype-raw';\nimport remarkGfm from 'remark-gfm';\nimport { match, compile } from 'path-to-regexp';\nimport { CodeBlock } from './CodeBlock';\nimport EmbedComponent from './embeds';\nimport { MemoizedReactMarkdown } from './MemoizedReactMarkdown';\nimport { MermaidDiagram } from './MermaidDiagram';\nimport { ZoomableImage } from './ZoomableImage';\nimport { stripNewLines } from './utils/stripNewLines';\nimport { isAnswerUncertain } from '../../lib/utils';\nexport const FormattedMessage = memo(({ message, isStreaming, redirectRules = [] }) => {\n const [displayContent, setDisplayContent] = useState(message.content);\n useEffect(() => {\n var _a;\n const result = isAnswerUncertain(message.content);\n if (result.uncertain && result.language && ((_a = message.uncertaintyFallbackText) === null || _a === void 0 ? void 0 : _a[result.language])) {\n setDisplayContent(message.uncertaintyFallbackText[result.language]);\n }\n else {\n setDisplayContent(message.content);\n }\n }, [message.content, message.uncertaintyFallbackText, isStreaming]);\n const strippedContent = stripNewLines(displayContent);\n // Use the provided redirect rules or an empty array\n const memoizedRedirectRules = useMemo(() => redirectRules, [redirectRules]);\n // Function to rewrite URLs based on pattern matching using path-to-regexp\n const rewriteUrl = useMemo(() => (url) => {\n if (!url)\n return url;\n try {\n // Parse the URL to get its components\n const urlObj = new URL(url);\n const pathname = urlObj.pathname;\n // Check each rule for a match\n for (const rule of memoizedRedirectRules) {\n // Create a matcher function for the source pattern\n const matchFn = match(rule.source, { decode: decodeURIComponent });\n const matchResult = matchFn(pathname);\n if (matchResult) {\n // If we have a match, compile the destination pattern with the matched params\n const toPath = compile(rule.destination, { encode: encodeURIComponent });\n const newPath = toPath(matchResult.params);\n // Create a new URL with the original domain but new path\n urlObj.pathname = newPath;\n return urlObj.toString();\n }\n }\n // No match found, return original URL\n return url;\n }\n catch (e) {\n console.error('Error rewriting URL:', e);\n // If URL parsing or matching fails, return the original URL\n return url;\n }\n }, [memoizedRedirectRules]);\n return (React.createElement(MemoizedReactMarkdown, { className: \"dark:prose-invert prose flex-1\", remarkPlugins: [remarkGfm], rehypePlugins: [rehypeRaw], isStreaming: isStreaming, components: {\n p: ({ children }) => React.createElement(\"div\", { className: \"ptag\" }, children),\n code: (_a) => {\n var { inline, className, children } = _a, props = __rest(_a, [\"inline\", \"className\", \"children\"]);\n const match = /language-(\\w+)/.exec(className || '');\n const language = match && match[1];\n if (!inline && (language === 'mermaid' || language === 'mermaidjs')) {\n return React.createElement(MermaidDiagram, { content: String(children).replace(/\\n$/, '') });\n }\n return !inline && language ? (React.createElement(CodeBlock, Object.assign({ key: Math.random(), language: language, value: String(children).replace(/\\n$/, '') }, props))) : (React.createElement(\"code\", Object.assign({ className: `text-red-400 bg-slate-200 border-slate-300 border rounded p-0.5 ${className}`.trim() }, props), children));\n },\n marker({ children }) {\n return (React.createElement(\"div\", { className: \"my-2\" },\n React.createElement(\"span\", { className: \"highlight\" }, children)));\n },\n table({ children }) {\n return React.createElement(\"table\", { className: \"border-collapse border border-black px-3 py-1 dark:border-white\" }, children);\n },\n th({ children }) {\n return (React.createElement(\"th\", { className: \"break-words border border-black bg-gray-500 px-3 py-1 text-white dark:border-white\" }, children));\n },\n td({ children }) {\n return React.createElement(\"td\", { className: \"break-words border border-black px-3 py-1 dark:border-white\" }, children);\n },\n a(_a) {\n var { children } = _a, props = __rest(_a, [\"children\"]);\n let originalHref = props.href || '';\n const childrenText = typeof children === 'string' ? children : '';\n // NB: sometimes the href is blank but the text is a valid URL, in this case we make the text the href\n if (!originalHref && childrenText) {\n try {\n new URL(childrenText);\n originalHref = childrenText;\n }\n catch (_b) {\n // Not a valid URL, keep originalHref as empty string & let it pass\n }\n }\n const isTextSameAsHref = childrenText === originalHref;\n const rewrittenHref = originalHref ? rewriteUrl(originalHref) : originalHref;\n const newProps = Object.assign(Object.assign({}, props), { href: rewrittenHref });\n // Don't render embed components during streaming\n if (rewrittenHref && !isStreaming) {\n const embedComponent = EmbedComponent({\n attrs: { href: rewrittenHref },\n });\n if (React.isValidElement(embedComponent)) {\n return embedComponent;\n }\n }\n const displayChildren = isTextSameAsHref ? rewrittenHref : children;\n return (React.createElement(\"a\", Object.assign({ className: \"link text-link\", target: \"_blank\", rel: \"noopener noreferrer\" }, newProps), displayChildren));\n },\n pre: ({ children }) => React.createElement(React.Fragment, null, children),\n img({ src, alt }) {\n if (!src || isStreaming)\n return null;\n // After streaming is complete, render the actual image\n const embedComponent = EmbedComponent({\n attrs: { href: src !== null && src !== void 0 ? src : '' },\n });\n if (React.isValidElement(embedComponent)) {\n return embedComponent;\n }\n return React.createElement(ZoomableImage, { src: src, alt: alt, key: src });\n },\n li: (_a) => {\n var { children } = _a, props = __rest(_a, [\"children\"]);\n return React.createElement(\"li\", Object.assign({}, props), children);\n },\n ul({ children }) {\n return React.createElement(\"ul\", { className: \"ml-4 my-4 list-outside space-y-4 list-disc\" }, children);\n },\n ol({ children }) {\n return React.createElement(\"ol\", { className: \"ml-4 my-4 list-outside space-y-4 list-decimal\" }, children);\n },\n strong: (_a) => {\n var { children } = _a, props = __rest(_a, [\"children\"]);\n return (React.createElement(\"span\", Object.assign({ className: \"font-semibold\" }, props), children));\n },\n h1: (_a) => {\n var { children } = _a, props = __rest(_a, [\"children\"]);\n return (React.createElement(\"h1\", Object.assign({ className: \"text-2xl font-bold\" }, props), children));\n },\n h2: (_a) => {\n var { children } = _a, props = __rest(_a, [\"children\"]);\n return (React.createElement(\"h2\", Object.assign({ className: \"text-xl font-bold\" }, props), children));\n },\n h3: (_a) => {\n var { children } = _a, props = __rest(_a, [\"children\"]);\n return (React.createElement(\"h3\", Object.assign({ className: \"text-lg font-bold\" }, props), children));\n },\n h4: (_a) => {\n var { children } = _a, props = __rest(_a, [\"children\"]);\n return (React.createElement(\"h4\", Object.assign({ className: \"text-base font-bold\" }, props), children));\n },\n h5: (_a) => {\n var { children } = _a, props = __rest(_a, [\"children\"]);\n return (React.createElement(\"h5\", Object.assign({ className: \"text-base font-semibold\" }, props), children));\n },\n h6: (_a) => {\n var { children } = _a, props = __rest(_a, [\"children\"]);\n return (React.createElement(\"h6\", Object.assign({ className: \"text-sm font-semibold\" }, props), children));\n },\n } }, strippedContent));\n});\nFormattedMessage.displayName = 'FormattedMessage';\n","export const stripNewLines = (content) => content.replace(/^\\n+|(\\n+|\\\\)+$/g, '');\n","import React from 'react';\nimport { FormattedMessage } from '@/components/markdown/FormattedMessage';\nexport function MarkdownTextBlock({ block, redirectRules, state }) {\n if (!block.text || block.text.trim() === '') {\n return (React.createElement(\"div\", { className: \"w-full\" },\n React.createElement(\"div\", { className: \"space-y-4\" },\n React.createElement(\"div\", { className: \"space-y-3\" },\n React.createElement(\"div\", { className: \"h-4 rounded w-3/4 shimmer\" }),\n React.createElement(\"div\", { className: \"h-4 rounded w-full shimmer\" }),\n React.createElement(\"div\", { className: \"h-4 rounded w-5/6 shimmer\" })))));\n }\n const { text } = block;\n return (React.createElement(\"div\", { className: \"w-full\" },\n React.createElement(\"div\", { className: \"prose prose-sm max-w-none text-foreground\" },\n React.createElement(FormattedMessage, { message: {\n content: text,\n }, redirectRules: redirectRules, isStreaming: state === 'streaming' }))));\n}\n","import React from 'react';\nimport { ActionInputFormBlock } from './blocks/ActionInputForm';\nimport { ActionButtonsBlock } from './blocks/ActionButtons';\nimport { MarkdownTextBlock } from './blocks/MarkdownText';\nexport function AnswerBlock({ block, redirectRules, state }) {\n switch (block.type) {\n case 'markdown-text':\n return React.createElement(MarkdownTextBlock, { block: block, redirectRules: redirectRules, state: state });\n case 'action-buttons':\n return React.createElement(ActionButtonsBlock, { block: block });\n case 'action-input-form':\n return React.createElement(ActionInputFormBlock, { block: block });\n default:\n return null;\n }\n}\n","import { createId } from '@paralleldrive/cuid2';\nexport const markdownTextBlock = ({ text = '' } = {}) => ({\n id: createId(),\n type: 'markdown-text',\n text,\n});\nexport const actionInputFormBlock = ({ actionId, initialValues, onSubmit, inputs, schema, }) => ({\n id: createId(),\n type: 'action-input-form',\n state: 'ready',\n actionId,\n initialValues,\n onSubmit,\n inputs,\n schema,\n});\nexport const actionButtonsBlock = () => ({\n id: createId(),\n type: 'action-buttons',\n});\nexport const isMarkdownTextBlock = (block) => {\n return block.type === 'markdown-text';\n};\nexport const isActionInputFormBlock = (block) => {\n return block.type === 'action-input-form';\n};\nexport const isActionButtonsBlock = (block) => {\n return block.type === 'action-buttons';\n};\n","import { __rest } from \"tslib\";\nimport React, { Suspense, lazy, memo, forwardRef } from 'react';\n/**\n * A flexible icon component that supports both Phosphor icons and image-based icons.\n *\n * The component uses dynamic imports to lazy load Phosphor icons, reducing the initial\n * bundle size by only loading icons when they're needed.\n *\n * @component\n * @example\n * // Using a Phosphor icon\n * <Icon iconName=\"House\" size={24} />\n *\n * // Using an image icon\n * <Icon iconPath=\"/path/to/icon.svg\" />\n */\nconst PhosphorIcon = forwardRef((_a, ref) => {\n var { iconName } = _a, props = __rest(_a, [\"iconName\"]);\n const IconComponent = lazy(() => import('@phosphor-icons/react').then((module) => {\n const icons = module;\n return { default: icons[iconName] };\n }));\n return (React.createElement(Suspense, { fallback: React.createElement(React.Fragment, null) },\n React.createElement(IconComponent, Object.assign({}, props, { ref: ref }))));\n});\nPhosphorIcon.displayName = 'PhosphorIcon';\nconst Icon = ({ iconPath }) => {\n return React.createElement(\"img\", { src: iconPath, alt: \"icon\" });\n};\n// Export a memoized version of the PhosphorIcon component\nexport const MemoizedIcon = memo(PhosphorIcon);\nexport { PhosphorIcon as Icon };\n","import React, { Fragment } from 'react';\nimport { motion } from 'framer-motion';\nimport { MemoizedIcon } from '../ui/icon';\nimport { Button } from '../ui/button';\nconst MotionButton = motion(Button);\nconst NextBestActions = ({ nextBestActions, onActionClick }) => {\n if (!nextBestActions.length)\n return null;\n return (React.createElement(motion.div, { initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -20 }, className: \"w-full\" },\n React.createElement(\"div\", { className: \"rounded-lg overflow-hidden bg-card border border-dark-300 divide-y divide-dark-300\" }, nextBestActions.map((action, index) => {\n const handleClick = () => {\n onActionClick(action);\n };\n const className = 'w-full h-12 py-2 px-4 inline-flex items-center justify-center gap-2 whitespace-nowrap text-base font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-6 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground';\n // create an key for each action based on label and index\n const key = `${action.label}-${index}`.replace(/\\s+/g, '-');\n switch (action.type) {\n case 'email':\n return (React.createElement(motion.a, { key: key, initial: { opacity: 0, x: -20 }, animate: { opacity: 1, x: 0 }, transition: { delay: index * 0.1 }, href: `mailto:${action.value}`, target: \"_blank\", rel: \"noopener noreferrer\", className: className, onClick: () => handleClick() },\n action.icon && React.createElement(MemoizedIcon, { iconName: action.icon }),\n React.createElement(\"span\", { className: \"flex-grow\" }, action.label),\n React.createElement(MemoizedIcon, { iconName: \"ArrowSquareOut\" })));\n case 'link':\n return (React.createElement(motion.a, { key: key, initial: { opacity: 0, x: -20 }, animate: { opacity: 1, x: 0 }, transition: { delay: index * 0.1 }, href: action.value, target: \"_blank\", rel: \"noopener noreferrer\", className: className, onClick: () => handleClick() },\n action.icon && React.createElement(MemoizedIcon, { iconName: action.icon }),\n React.createElement(\"span\", { className: \"flex-grow\" }, action.label),\n React.createElement(MemoizedIcon, { iconName: \"ArrowSquareOut\" })));\n case 'phone':\n return (React.createElement(motion.a, { key: key, initial: { opacity: 0, x: -20 }, animate: { opacity: 1, x: 0 }, transition: { delay: index * 0.1 }, href: `tel:${action.value}`, target: \"_blank\", rel: \"noopener noreferrer\", className: className, onClick: () => handleClick() },\n action.icon && React.createElement(MemoizedIcon, { iconName: action.icon }),\n React.createElement(\"span\", { className: \"flex-grow\" }, action.label),\n React.createElement(MemoizedIcon, { iconName: \"ArrowSquareOut\" })));\n default:\n return (React.createElement(Fragment, { key: key },\n React.createElement(MotionButton, { initial: { opacity: 0, x: -20 }, animate: { opacity: 1, x: 0 }, transition: { delay: index * 0.1 }, className: \"w-full text-left h-12 rounded-none [&_svg]:pointer-events-none [&_svg]:size-6 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground text-base font-medium\", variant: \"ghost\", onClick: () => handleClick() },\n React.createElement(MemoizedIcon, { iconName: \"ArrowCircleRight\" }),\n React.createElement(\"span\", { className: \"flex-grow\" }, action.label),\n React.createElement(MemoizedIcon, { iconName: \"ArrowSquareOut\" }))));\n }\n }))));\n};\nexport { NextBestActions };\n","export var ActionType;\n(function (ActionType) {\n ActionType[\"CallPhone\"] = \"call_phone\";\n ActionType[\"OpenUrl\"] = \"open_url\";\n ActionType[\"SendEmail\"] = \"send_email\";\n ActionType[\"RunCallback\"] = \"run_callback\";\n})(ActionType || (ActionType = {}));\nconst isUrlString = (value) => {\n const urlRegExp = /^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/i;\n return urlRegExp.test(value);\n};\nexport const validateUrlString = (value) => {\n if (!isUrlString(value)) {\n throw new Error(`Invalid URL: ${value}`);\n }\n return value;\n};\nexport var NextBestActionType;\n(function (NextBestActionType) {\n NextBestActionType[\"Link\"] = \"link\";\n NextBestActionType[\"Email\"] = \"email\";\n NextBestActionType[\"Phone\"] = \"phone\";\n NextBestActionType[\"Callback\"] = \"callback\";\n NextBestActionType[\"Function\"] = \"function\";\n})(NextBestActionType || (NextBestActionType = {}));\n","import { ActionType, NextBestActionType } from '../types';\n// Action mapping function\nexport const getActionMapping = (action) => {\n // Single mapping object for both type and icon\n const actionMapping = {\n [ActionType.CallPhone]: {\n type: NextBestActionType.Phone,\n icon: 'Phone',\n getValue: (a) => { var _a, _b; return ((_b = (_a = a.action) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.phoneNumber) || a.id; },\n getLabel: (a) => { var _a, _b; return ((_b = (_a = a.action) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.title) || a.type; },\n },\n [ActionType.SendEmail]: {\n type: NextBestActionType.Email,\n icon: 'EnvelopeSimple',\n getValue: (a) => { var _a, _b; return ((_b = (_a = a.action) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.to) || a.id; },\n getLabel: (a) => { var _a, _b; return ((_b = (_a = a.action) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.title) || a.type; },\n },\n [ActionType.OpenUrl]: {\n type: NextBestActionType.Link,\n icon: 'Link',\n getValue: (a) => { var _a, _b; return ((_b = (_a = a.action) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.url) || a.id; },\n getLabel: (a) => { var _a, _b; return ((_b = (_a = a.action) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.title) || a.type; },\n },\n };\n // Use the mapping with a default fallback\n const mapping = actionMapping[action.type] || {\n type: NextBestActionType.Link,\n icon: 'Link',\n getValue: (a) => { var _a, _b; return ((_b = (_a = a.action) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.url) || a.id; },\n getLabel: (a) => { var _a, _b; return ((_b = (_a = a.action) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.title) || a.type; },\n };\n return mapping;\n};\n","import React, { useState } from 'react';\nimport { NextBestActions } from './NextBestActions';\nimport { getActionMapping } from './helpers/nextBestActions';\nconst AnswerActions = ({ actions, nextBestActions, isLastAnswer, handleActionClick, searchQueryId, question, answer, }) => {\n const hasActions = actions && actions.length > 0;\n const hasNextBestActions = nextBestActions && isLastAnswer && nextBestActions.length > 0;\n const [showAnswerActions] = useState(hasActions || hasNextBestActions);\n if (!showAnswerActions) {\n return null;\n }\n // Actions from the actions prop coming from intent match\n let mappedActions = [];\n if (hasActions) {\n mappedActions = actions.map((action) => {\n const mapping = getActionMapping(action);\n return {\n id: action.id,\n label: mapping.getLabel(action),\n type: mapping.type,\n icon: mapping.icon,\n value: mapping.getValue(action),\n };\n });\n }\n // Actions from the nextBestActions prop for default actions\n // only display actions if there are actions and it's the last answer\n if (hasNextBestActions) {\n // filter out nextBestActions that have the same type as the already mapped actions.\n // this is to avoid duplicate action types. eg. both the action and the next best action are \"open_url\"\n const filteredNextBestActions = nextBestActions.filter((action) => !mappedActions.some((mappedAction) => mappedAction.type === action.type));\n mappedActions = mappedActions.concat(filteredNextBestActions);\n }\n return (React.createElement(\"div\", { className: \"p-4\" },\n React.createElement(NextBestActions, { nextBestActions: mappedActions, onActionClick: (action) => {\n if (action) {\n handleActionClick === null || handleActionClick === void 0 ? void 0 : handleActionClick({\n action,\n searchQueryId: searchQueryId || '',\n query: question,\n answer,\n });\n }\n } })));\n};\nexport default AnswerActions;\n","import { __rest } from \"tslib\";\nimport React from 'react';\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\nconst Collapsible = CollapsiblePrimitive.Root;\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\nconst CollapsibleContent = (_a) => {\n var { children } = _a, props = __rest(_a, [\"children\"]);\n return (React.createElement(CollapsiblePrimitive.CollapsibleContent, Object.assign({}, props),\n React.createElement(\"style\", null, `\n .CollapsibleContent[data-state=\"open\"] {\n animation: slideDown 200ms ease-in-out;\n }\n .CollapsibleContent[data-state=\"closed\"] {\n animation: slideUp 200ms ease-in-out;\n }\n\n @keyframes slideDown {\n from {\n height: 0;\n }\n to {\n height: var(--radix-collapsible-content-height);\n }\n }\n\n @keyframes slideUp {\n from {\n height: var(--radix-collapsible-content-height);\n }\n to {\n height: 0;\n }\n }\n `),\n children));\n};\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","import React, { useState } from 'react';\nimport { ThumbsUp, ThumbsDown, Heart } from '@phosphor-icons/react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { Button } from '@/components/ui/button';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\nexport function Feedback({ feedback, onFeedback, textConfig = {}, disabled = false }) {\n const [showHearts, setShowHearts] = useState(false);\n const handleFeedback = (response) => {\n if (onFeedback) {\n if (response === 'accept') {\n setShowHearts(true);\n setTimeout(() => setShowHearts(false), 2000);\n }\n onFeedback(response);\n }\n };\n return (React.createElement(\"div\", { className: \"flex justify-end gap-2\", \"data-name\": \"Feedback\" },\n React.createElement(TooltipProvider, null,\n React.createElement(Tooltip, null,\n React.createElement(TooltipTrigger, { asChild: true },\n React.createElement(\"div\", { className: \"relative\" },\n React.createElement(AnimatePresence, null, showHearts && (React.createElement(React.Fragment, null,\n Array.from({ length: 8 }).map((_, i) => (React.createElement(motion.div, { key: i, className: \"absolute top-1/2 left-1/2 origin-center\", initial: { opacity: 0, scale: 0.3, x: 0, y: 0 }, animate: {\n opacity: [0, 1, 1, 0],\n scale: [0.3, 1, 1, 0],\n x: [0, Math.cos(i * (Math.PI / 4)) * 30],\n y: [0, Math.sin(i * (Math.PI / 4)) * 30],\n rotate: [0, i % 2 ? 45 : -45],\n }, transition: {\n duration: 1.2,\n ease: [0.4, 0, 0.2, 1],\n times: [0, 0.3, 0.7, 1],\n delay: i * 0.1,\n } },\n React.createElement(Heart, { className: \"size-4 text-rose-500\", style: {\n filter: 'drop-shadow(0 0 3px rgba(255, 75, 110, 0.8))',\n strokeWidth: 2.5,\n } })))),\n React.createElement(motion.div, { className: \"absolute inset-0 rounded-full bg-primary\", initial: { opacity: 0, scale: 0.8 }, animate: {\n opacity: [0, 0.15, 0.15, 0],\n scale: [0.8, 1.8, 1.8, 2],\n }, transition: {\n duration: 1.2,\n ease: 'easeOut',\n times: [0, 0.3, 0.7, 1],\n } })))),\n React.createElement(Button, { variant: \"ghost\", size: \"sm\", className: `rounded-md size-8 flex items-center justify-center transition-all duration-200 transform hover:scale-105 active:scale-95 ${feedback === 'accept' ? 'bg-green-100 text-green-600 hover:bg-green-200' : 'text-dark-500'}`, onClick: () => handleFeedback('accept'), disabled: disabled },\n React.createElement(motion.div, { initial: { scale: 1 }, animate: { scale: feedback === 'accept' ? [1, 1.2, 1] : 1 }, transition: { duration: 0.3 } },\n React.createElement(ThumbsUp, { weight: \"bold\" }))))),\n React.createElement(TooltipContent, null,\n React.createElement(\"p\", null, textConfig.positiveAnswerText || 'Helpful')))),\n React.createElement(TooltipProvider, null,\n React.createElement(Tooltip, null,\n React.createElement(TooltipTrigger, { asChild: true },\n React.createElement(Button, { variant: \"ghost\", size: \"sm\", className: `rounded-md size-8 flex items-center justify-center transition-all duration-200 transform hover:scale-105 active:scale-95 ${feedback === 'reject' ? 'bg-red-100 text-red-600 hover:bg-red-200' : 'text-dark-500'}`, onClick: () => handleFeedback('reject'), disabled: disabled },\n React.createElement(motion.div, { initial: { scale: 1 }, animate: { scale: feedback === 'reject' ? [1, 1.2, 1] : 1 }, transition: { duration: 0.3 } },\n React.createElement(ThumbsDown, { weight: \"bold\" })))),\n React.createElement(TooltipContent, null,\n React.createElement(\"p\", null, textConfig.negativeAnswerText || 'Not helpful'))))));\n}\n","import { createId } from '@paralleldrive/cuid2';\nimport { useImmerReducer } from 'use-immer';\nimport { actionButtonsBlock, actionInputFormBlock, isActionInputFormBlock, isMarkdownTextBlock, markdownTextBlock } from '../blocks/utils';\n// Action types\nexport const AnswersActions = {\n SET_ANSWERS: 'answers/set_answers',\n CLEAR_ALL: 'answers/clear_all',\n APPEND_NEW_ANSWER: 'answers/create_empty_answer',\n APPEND_BLOCK: 'answers/append_block',\n APPEND_ANSWER_CHUNK: 'answers/append_stream_chunk',\n SET_SEARCH_RESULTS: 'answers/update_search_results',\n SET_FOLLOW_UP_QUESTIONS: 'answers/set_follow_up_questions',\n COMPLETE_ANSWER: 'answers/finish_streaming',\n SET_ANSWER_ERROR: 'answers/set_error_state',\n SET_USER_FEEDBACK: 'answers/set_user_feedback',\n CLEAR_USER_FEEDBACK: 'answers/clear_user_feedback',\n MARK_AS_UNCERTAIN: 'answers/mark_as_uncertain',\n // action flow\n GET_ACTION_INPUTS: 'answers/request_action_inputs',\n INVOKE_ACTION: 'answers/invoke_action',\n ADD_ACTION_BUTTONS: 'answers/add_action_buttons',\n};\n// Action creators\nexport const setAnswers = ({ answers }) => ({\n type: AnswersActions.SET_ANSWERS,\n payload: { answers },\n});\nexport const clearAll = () => ({\n type: AnswersActions.CLEAR_ALL,\n});\nexport const appendNewAnswer = ({ id, query }) => ({\n type: AnswersActions.APPEND_NEW_ANSWER,\n payload: { id, query },\n});\nexport const setSearchResults = ({ searchQueryId, results, index, }) => ({\n type: AnswersActions.SET_SEARCH_RESULTS,\n payload: {\n searchQueryId,\n results,\n index,\n },\n});\nexport const appendAnswerChunk = ({ text, index }) => ({\n type: AnswersActions.APPEND_ANSWER_CHUNK,\n payload: {\n text,\n index,\n },\n});\nexport const setAnswerError = ({ error, index }) => ({\n type: AnswersActions.SET_ANSWER_ERROR,\n payload: {\n error,\n index,\n },\n});\nexport const setUserFeedback = ({ feedback, index }) => ({\n type: AnswersActions.SET_USER_FEEDBACK,\n payload: {\n feedback,\n index,\n },\n});\nexport const clearUserFeedback = ({ index } = {}) => ({\n type: AnswersActions.CLEAR_USER_FEEDBACK,\n payload: {\n index,\n },\n});\nexport const setFollowUpQuestions = ({ questions, index }) => ({\n type: AnswersActions.SET_FOLLOW_UP_QUESTIONS,\n payload: {\n questions,\n index,\n },\n});\nexport const appendBlock = ({ block, index }) => ({\n type: AnswersActions.APPEND_BLOCK,\n payload: {\n block,\n index,\n },\n});\nexport const completeAnswer = ({ index } = {}) => ({\n type: AnswersActions.COMPLETE_ANSWER,\n payload: {\n index,\n },\n});\nexport const markAsUncertain = ({ uncertaintyText, index }) => ({\n type: AnswersActions.MARK_AS_UNCERTAIN,\n payload: {\n uncertaintyText,\n index,\n },\n});\nexport const invokeAction = ({ index } = {}) => ({\n type: AnswersActions.INVOKE_ACTION,\n payload: {\n index,\n },\n});\nexport const getActionInputs = ({ searchIntentId, actionId, inputs, schema, initialValues, onSubmit, index, }) => ({\n type: AnswersActions.GET_ACTION_INPUTS,\n payload: {\n searchIntentId,\n actionId,\n inputs,\n schema,\n initialValues,\n onSubmit,\n index,\n },\n});\nexport const addActionButtons = ({ searchIntentId, actions, index, }) => ({\n type: AnswersActions.ADD_ACTION_BUTTONS,\n payload: {\n searchIntentId,\n actions,\n index,\n },\n});\nconst getTargetAnswer = (draft, index) => {\n return draft.at(index !== null && index !== void 0 ? index : -1);\n};\nconst getLastTextBlock = (answer) => {\n return answer.blocks.at(-1);\n};\nconst initialState = [];\nconst reducer = (draft, action) => {\n var _a;\n switch (action.type) {\n // Answer List Management\n case AnswersActions.SET_ANSWERS: {\n draft.length = 0;\n // @ts-expect-error\n draft.push(...action.payload.answers);\n return;\n }\n case AnswersActions.CLEAR_ALL: {\n draft.length = 0;\n return;\n }\n // Answer Generation Flow\n case AnswersActions.APPEND_NEW_ANSWER: {\n draft.push({\n id: 'pending-' + createId(),\n state: 'fetching-search-results',\n question: action.payload.query,\n blocks: [markdownTextBlock()],\n isUncertain: false,\n });\n return;\n }\n case AnswersActions.SET_SEARCH_RESULTS: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n answer.searchQueryId = action.payload.searchQueryId;\n answer.searchResults = action.payload.results;\n answer.state = 'fetching-stream';\n }\n return;\n }\n case AnswersActions.APPEND_ANSWER_CHUNK: {\n const answer = getTargetAnswer(draft, action.payload.index);\n const block = answer && getLastTextBlock(answer);\n if (answer && !answer.isUncertain && block && isMarkdownTextBlock(block)) {\n answer.state = 'streaming';\n block.text += action.payload.text;\n }\n return;\n }\n case AnswersActions.SET_ANSWER_ERROR: {\n const answer = getTargetAnswer(draft, (_a = action.payload.index) !== null && _a !== void 0 ? _a : -1);\n const block = answer && getLastTextBlock(answer);\n if (block && isMarkdownTextBlock(block)) {\n block.text += action.payload.error;\n }\n return;\n }\n case AnswersActions.APPEND_BLOCK: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n // @ts-expect-error\n answer.blocks.push(action.payload.block);\n }\n return;\n }\n case AnswersActions.COMPLETE_ANSWER: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n if (answer.state === 'streaming') {\n answer.state = 'completed';\n }\n }\n return;\n }\n case AnswersActions.MARK_AS_UNCERTAIN: {\n const answer = getTargetAnswer(draft, action.payload.index);\n const block = answer && getLastTextBlock(answer);\n if (answer && block && isMarkdownTextBlock(block)) {\n answer.isUncertain = true;\n block.text = action.payload.uncertaintyText;\n }\n return;\n }\n case AnswersActions.SET_USER_FEEDBACK: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n answer.feedback = action.payload.feedback;\n }\n return;\n }\n case AnswersActions.CLEAR_USER_FEEDBACK: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n delete answer.feedback;\n }\n return;\n }\n case AnswersActions.GET_ACTION_INPUTS: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n answer.state = 'getting-action-inputs';\n answer.searchIntentId = action.payload.searchIntentId;\n answer.blocks.push(\n // @ts-expect-error\n actionInputFormBlock({\n actionId: action.payload.actionId,\n schema: action.payload.schema,\n initialValues: action.payload.initialValues,\n onSubmit: action.payload.onSubmit,\n inputs: action.payload.inputs,\n }));\n }\n return;\n }\n case AnswersActions.ADD_ACTION_BUTTONS: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n answer.searchIntentId = action.payload.searchIntentId;\n // Cast the actions array to ActionType to match the expected type\n answer.actions = action.payload.actions.map((action) => (Object.assign(Object.assign({}, action), { type: action.type })));\n answer.blocks.push(actionButtonsBlock());\n }\n return;\n }\n case AnswersActions.INVOKE_ACTION: {\n const answer = getTargetAnswer(draft, action.payload.index);\n const blockIndex = answer === null || answer === void 0 ? void 0 : answer.blocks.findIndex(isActionInputFormBlock);\n if (answer && blockIndex) {\n // replace the action input form block with a markdown text block\n answer.state = 'fetching-stream';\n answer.blocks.splice(blockIndex, 1, markdownTextBlock());\n }\n return;\n }\n case AnswersActions.SET_FOLLOW_UP_QUESTIONS: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n answer.followUpQuestions = action.payload.questions;\n }\n return;\n }\n default: {\n throw new Error(`Answer List Reducer: unknown action type '${action.type}'`);\n }\n }\n};\nexport const useAnswerList = () => {\n return useImmerReducer(reducer, initialState);\n};\n","import { useCallback, useState } from 'react';\nimport { useSearchParam } from 'react-use';\nconst CONVERSATION_PARAM = 'conversation';\nexport const useConversationId = (searchPath) => {\n const conversationId = useSearchParam(CONVERSATION_PARAM);\n // Unfortunately, the search param is not updated when the url is changed in Next.js\n // As a workaround, we use a local state to store the conversation id\n // and update the url when the local state changes\n // https://github.com/vercel/next.js/discussions/18072\n // https://github.com/vercel/next.js/discussions/70779\n const [_conversationId, _setConversationId] = useState(conversationId !== null && conversationId !== void 0 ? conversationId : undefined);\n const setConversationId = useCallback((id) => {\n const url = new URL(window.location.href);\n if (searchPath) {\n url.pathname = searchPath;\n }\n if (id) {\n url.searchParams.set(CONVERSATION_PARAM, id);\n }\n else {\n url.searchParams.delete(CONVERSATION_PARAM);\n }\n const newUrl = url.toString();\n window.history.replaceState(Object.assign(Object.assign({}, window.history.state), { newUrl, url: newUrl }), '', newUrl);\n _setConversationId(id);\n }, [searchPath]);\n const clearConversationId = useCallback(() => {\n const url = new URL(window.location.href);\n url.searchParams.delete(CONVERSATION_PARAM);\n const newUrl = url.toString();\n window.history.replaceState(Object.assign(Object.assign({}, window.history.state), { newUrl, url: newUrl }), '', newUrl);\n _setConversationId(undefined);\n }, []);\n return { conversationId: _conversationId, setConversationId, clearConversationId };\n};\n","import React, { createContext, useContext, useState, useMemo } from 'react';\nimport { useAnswerList } from './hooks/useAnswerList';\nimport { useConversationId } from './hooks/useConversationId';\nconst ChatSearchContext = createContext(undefined);\nexport const ChatSearchProvider = ({ children, searchPath, }) => {\n const [query, setQuery] = useState('');\n const [queryId, setQueryId] = useState('');\n const [followUpQuery, setFollowUpQuery] = useState('');\n const [isSearching, setIsSearching] = useState(false);\n const [showResults, setShowResults] = useState(false);\n const [answers, answerListDispatch] = useAnswerList();\n const [activeAnswerIndex, setActiveAnswerIndex] = useState(0);\n const [isLoadingConversation, setIsLoadingConversation] = useState(false);\n const [loadError, setLoadError] = useState('');\n const [showMobileCloseWidgetButton, setShowMobileCloseWidgetButton] = useState(false);\n const { conversationId, setConversationId, clearConversationId } = useConversationId(searchPath);\n // Memoize the context value to prevent unnecessary re-renders of components that consume the context\n const contextValue = useMemo(() => ({\n query,\n setQuery,\n queryId,\n setQueryId,\n followUpQuery,\n setFollowUpQuery,\n isSearching,\n setIsSearching,\n showResults,\n setShowResults,\n answers,\n answerListDispatch,\n activeAnswerIndex,\n setActiveAnswerIndex,\n conversationId,\n setConversationId,\n clearConversationId,\n isLoadingConversation,\n setIsLoadingConversation,\n loadError,\n setLoadError,\n showMobileCloseWidgetButton,\n setShowMobileCloseWidgetButton,\n }), [\n query,\n queryId,\n followUpQuery,\n isSearching,\n showResults,\n answers,\n answerListDispatch,\n activeAnswerIndex,\n conversationId,\n setConversationId,\n clearConversationId,\n isLoadingConversation,\n loadError,\n showMobileCloseWidgetButton,\n ]);\n return React.createElement(ChatSearchContext.Provider, { value: contextValue }, children);\n};\nexport const useChatSearch = () => {\n const context = useContext(ChatSearchContext);\n if (!context) {\n throw new Error('useChatSearch must be used within a ChatSearchProvider');\n }\n return context;\n};\n","import { useChatSearch } from '../ChatSearchContext';\nexport const useIsChatSearchDirty = () => {\n const { showResults, answers } = useChatSearch();\n const isDirty = Boolean(showResults || answers.length > 0);\n return isDirty;\n};\n","import { __awaiter, __rest } from \"tslib\";\nconst defaultRetryOptions = {\n maxRetries: 3,\n baseDelay: 1000,\n shouldRetry: (error) => {\n // By default, retry on network errors and 5xx server errors\n if (error instanceof TypeError) {\n return true; // Network errors\n }\n const apiError = error;\n return apiError.status ? apiError.status >= 500 : false;\n },\n};\nconst defaultFallbackConfig = {\n emptyResponse: \"I apologize, but I couldn't generate an answer at this time. Please try again.\",\n errorResponse: 'I encountered an error while processing your request. Please try again.',\n};\nlet globalRetryOptions = Object.assign({}, defaultRetryOptions);\nlet globalFallbackConfig = Object.assign({}, defaultFallbackConfig);\nexport function configureRetry(options) {\n globalRetryOptions = Object.assign(Object.assign({}, defaultRetryOptions), options);\n}\nexport function configureFallback(config) {\n globalFallbackConfig = Object.assign(Object.assign({}, defaultFallbackConfig), config);\n}\nfunction delay(ms) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => setTimeout(resolve, ms));\n });\n}\nexport function makeRequest(url, config = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const { retry = {}, headers = {}, body, isStream = false, fallback = {} } = config, fetchConfig = __rest(config, [\"retry\", \"headers\", \"body\", \"isStream\", \"fallback\"]);\n const retryOptions = Object.assign(Object.assign({}, globalRetryOptions), retry);\n const fallbackOptions = Object.assign(Object.assign({}, globalFallbackConfig), fallback);\n let attempt = 1;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n try {\n const response = yield fetch(url, Object.assign(Object.assign({}, fetchConfig), { headers: Object.assign({ 'Content-Type': 'application/json' }, headers), body: body ? JSON.stringify(body) : undefined }));\n if (response.ok) {\n // For streaming responses, return the response object directly\n if (isStream) {\n if (!response.ok) {\n throw new Error('Failed to fetch answer');\n }\n return response;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const data = yield response.json();\n // Check for empty response in JSON\n if (!data || (typeof data === 'object' && Object.keys(data).length === 0)) {\n const emptyError = new Error(fallbackOptions.emptyResponse);\n emptyError.name = 'EmptyResponseError';\n throw emptyError;\n }\n return data;\n }\n const error = new Error(fallbackOptions.errorResponse);\n error.status = response.status;\n error.data = yield response.json().catch(() => undefined);\n throw error;\n }\n catch (error) {\n const shouldAttemptRetry = yield Promise.resolve(retryOptions.shouldRetry(error, attempt));\n if (attempt >= retryOptions.maxRetries || !shouldAttemptRetry) {\n if (error instanceof Error && error.name === 'EmptyResponseError') {\n return { message: error.message };\n }\n throw error;\n }\n console.warn(`Request failed, attempt ${attempt} of ${retryOptions.maxRetries}. Retrying...`);\n // Exponential backoff with jitter to prevent thundering herd\n const jitter = Math.random() * 0.3 + 0.85; // Random between 0.85-1.15\n yield delay(retryOptions.baseDelay * Math.pow(2, attempt - 1) * jitter);\n attempt++;\n }\n }\n });\n}\n","import { __awaiter } from \"tslib\";\nimport { createId } from '@paralleldrive/cuid2';\nimport { makeRequest } from './fetchClient';\n// Retry configurations for different endpoints\nconst searchRetryConfig = {\n maxRetries: 3,\n baseDelay: 300,\n shouldRetry: (error) => {\n if (error instanceof TypeError) {\n return true; // Network errors\n }\n const apiError = error;\n // Retry on server errors (5xx) and rate limits (429)\n return apiError.status ? apiError.status >= 500 || apiError.status === 429 : false;\n },\n};\nconst answerRetryConfig = {\n maxRetries: 3,\n baseDelay: 500,\n shouldRetry: (error) => {\n if (error instanceof TypeError) {\n return true; // Network errors\n }\n const apiError = error;\n // Only retry on server errors, not on client errors\n return apiError.status ? apiError.status >= 500 : false;\n },\n};\nexport function searchApi({ endpoint, query, collectionId, headers, conversationId, attributes, attributesSigned, }) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const payload = yield makeRequest(endpoint, {\n method: 'POST',\n headers,\n retry: searchRetryConfig,\n body: Object.assign(Object.assign(Object.assign(Object.assign({ query, limit: 5 }, (collectionId && collectionId !== 'all' && { collectionId })), (conversationId && { conversationId })), (attributes && { attributes })), (attributesSigned && { attributesSigned })),\n });\n return {\n results: payload === null || payload === void 0 ? void 0 : payload.data,\n searchQueryId: (_a = payload === null || payload === void 0 ? void 0 : payload.searchQuery) === null || _a === void 0 ? void 0 : _a.id,\n };\n });\n}\nexport function fetchAnswer({ endpoint, searchQueryId, headers, conversationId, }) {\n return __awaiter(this, void 0, void 0, function* () {\n return makeRequest(endpoint, {\n method: 'POST',\n headers,\n retry: answerRetryConfig,\n isStream: true,\n fallback: {\n emptyResponse: \"I apologize, but I couldn't generate an answer for your query. Please try rephrasing your question.\",\n errorResponse: 'I encountered an issue while generating the answer. Please try again in a moment.',\n },\n body: Object.assign({ searchQueryId }, (conversationId && { conversationId })),\n });\n });\n}\nexport function fetchAnswerStream({ endpoint, headers, body, }) {\n return __awaiter(this, void 0, void 0, function* () {\n return makeRequest(endpoint, {\n method: 'POST',\n headers,\n retry: answerRetryConfig,\n isStream: true,\n fallback: {\n emptyResponse: \"I apologize, but I couldn't generate an answer for your query. Please try rephrasing your question.\",\n errorResponse: 'I encountered an issue while generating the answer. Please try again in a moment.',\n },\n body,\n });\n });\n}\n// Helper function to generate conversation ID\nexport function createConversationId() {\n return createId();\n}\nexport function sendFeedback({ endpoint, searchQueryId, response, headers, conversationId, }) {\n return __awaiter(this, void 0, void 0, function* () {\n yield makeRequest(endpoint, {\n method: 'POST',\n headers,\n body: Object.assign({ searchQueryId,\n response }, (conversationId && { conversationId })),\n });\n });\n}\nexport function loadConversation({ endpoint, conversationId, headers, signal, }) {\n return __awaiter(this, void 0, void 0, function* () {\n const payload = yield makeRequest(endpoint, {\n method: 'POST',\n headers,\n body: { conversationId },\n signal,\n });\n return { data: payload.data };\n });\n}\nexport function fetchFollowUpQuestions({ endpoint, searchQueryId, headers, conversationId, }) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = yield makeRequest(endpoint, {\n method: 'POST',\n headers,\n body: Object.assign({ searchQueryId }, (conversationId && { conversationId })),\n });\n return data.questions;\n });\n}\nexport function fetchAutocomplete({ endpoint, query, collectionId, headers, conversationId, }) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = yield makeRequest(endpoint, {\n method: 'POST',\n headers,\n retry: searchRetryConfig,\n body: Object.assign(Object.assign({ query }, (collectionId && collectionId !== 'all' && { collectionId })), (conversationId && { conversationId })),\n });\n return data;\n });\n}\n","import { useCallback } from 'react';\nimport { useEffectOnce } from 'react-use';\nimport { useChatSearch } from '../ChatSearchContext';\nimport { clearAll, setAnswers } from './useAnswerList';\nimport { markdownTextBlock } from '../blocks/utils';\nimport { isAnswerUncertain } from '@/lib/utils';\nimport { loadConversation } from '@/lib/api';\n/**\n * Hook to load a conversation by ID.\n * @param loadConversationEndpoint - The endpoint to use to load the conversation.\n * @param headers - The headers to use when loading the conversation.\n * @param mergedTextConfig - The text configuration to use.\n * @returns The function to load a conversation by ID.\n */\nexport const useConversationLoader = ({ loadConversationEndpoint, headers, mergedTextConfig }) => {\n const { setIsLoadingConversation, setShowResults, answerListDispatch, conversationId, setConversationId, clearConversationId, setLoadError, } = useChatSearch();\n const loadConversationById = useCallback((conversationId) => {\n if (!loadConversationEndpoint) {\n return;\n }\n setIsLoadingConversation(true);\n setIsLoadingConversation(true);\n setShowResults(true);\n const controller = new AbortController();\n loadConversation({\n endpoint: loadConversationEndpoint,\n conversationId,\n headers,\n signal: controller.signal,\n })\n .then(({ data }) => {\n const answers = data.map((query) => {\n return {\n id: query.searchQueryId,\n state: 'completed',\n question: query.question,\n isUncertain: isAnswerUncertain(query.answer).uncertain,\n searchQueryId: query.searchQueryId,\n searchIntentId: query.searchIntentId,\n blocks: query.answer.split('---').map((text) => markdownTextBlock({\n text: text.trim(),\n })),\n };\n });\n answerListDispatch(setAnswers({ answers }));\n setShowResults(true);\n })\n .catch((error) => {\n console.error('Error loading conversation:', error);\n answerListDispatch(clearAll());\n clearConversationId();\n setShowResults(false);\n setLoadError(mergedTextConfig.errorText || 'An error occurred');\n })\n .finally(() => {\n setIsLoadingConversation(false);\n });\n return () => controller.abort('Conversation loader aborted');\n }, [\n loadConversationEndpoint,\n setIsLoadingConversation,\n setShowResults,\n headers,\n answerListDispatch,\n setConversationId,\n setLoadError,\n mergedTextConfig.errorText,\n ]);\n useEffectOnce(() => {\n let cancel;\n if (conversationId) {\n console.log('loading conversation', conversationId);\n cancel = loadConversationById(conversationId);\n }\n return () => cancel === null || cancel === void 0 ? void 0 : cancel();\n });\n return { loadConversationById };\n};\n","import { useEffect, useState } from 'react';\nimport { useDarkMode } from './useDarkMode';\nimport { getLuminance } from '@/lib/utils';\nexport const useAccessibleColor = (primaryColorVar, primaryForegroundVar) => {\n const [foregroundColor, setForegroundColor] = useState(`rgb(var(${primaryForegroundVar}))`);\n const isDarkMode = useDarkMode();\n useEffect(() => {\n const primaryColor = getComputedStyle(document.documentElement).getPropertyValue(primaryColorVar).trim();\n const rgbMatch = primaryColor.match(/^(\\d+)\\s+(\\d+)\\s+(\\d+)$/);\n if (rgbMatch) {\n const luminance = getLuminance(rgbMatch.slice(1).join(','));\n if (luminance <= 0.5) {\n setForegroundColor(isDarkMode ? `rgb(var(--bfc-ring))` : `rgb(var(${primaryColorVar}))`);\n }\n else {\n setForegroundColor(isDarkMode ? `rgb(var(${primaryColorVar}))` : `rgb(var(${primaryForegroundVar}))`);\n }\n }\n }, [primaryColorVar, primaryForegroundVar, isDarkMode]);\n return foregroundColor;\n};\n","import { useEffect, useState } from 'react';\nexport const useDarkMode = () => {\n const [isDarkMode, setIsDarkMode] = useState(() => document.documentElement.classList.contains('dark'));\n useEffect(() => {\n const observer = new MutationObserver(() => {\n setIsDarkMode(document.documentElement.classList.contains('dark'));\n });\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n return () => observer.disconnect();\n }, []);\n return isDarkMode;\n};\n","import { __rest } from \"tslib\";\nimport React from 'react';\nimport { useAccessibleColor } from '../chat-search/hooks';\nimport { cn } from '@/lib/utils';\nconst GeneratingStar = (_a) => {\n var { loading, className } = _a, props = __rest(_a, [\"loading\", \"className\"]);\n const strokeColor = useAccessibleColor('--bfc-primary', '--bfc-border');\n return (React.createElement(\"svg\", Object.assign({ width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", fill: \"currentColor\", xmlns: \"http://www.w3.org/2000/svg\", className: cn('min-w-5', className) }, props),\n React.createElement(\"path\", { className: loading ? 'animate-spin' : '', d: \"M7.54672 16.0031L2.66234 14.2031C2.51881 14.1498 2.39502 14.0539 2.3076 13.9282C2.22019 13.8025 2.17333 13.6531 2.17333 13.5C2.17333 13.3469 2.22019 13.1975 2.3076 13.0718C2.39502 12.9461 2.51881 12.8501 2.66234 12.7969L7.54672 10.9969C7.64981 10.9589 7.74344 10.899 7.82113 10.8213C7.89882 10.7436 7.95873 10.65 7.99672 10.5469L9.79672 5.66249C9.84999 5.51896 9.94592 5.39517 10.0716 5.30775C10.1973 5.22033 10.3467 5.17348 10.4998 5.17348C10.6529 5.17348 10.8024 5.22033 10.9281 5.30775C11.0538 5.39517 11.1497 5.51896 11.203 5.66249L13.003 10.5469C13.041 10.65 13.1009 10.7436 13.1786 10.8213C13.2562 10.899 13.3499 10.9589 13.453 10.9969L18.3373 12.7969C18.4809 12.8501 18.6047 12.9461 18.6921 13.0718C18.7795 13.1975 18.8264 13.3469 18.8264 13.5C18.8264 13.6531 18.7795 13.8025 18.6921 13.9282C18.6047 14.0539 18.4809 14.1498 18.3373 14.2031L13.453 16.0031C13.3499 16.0411 13.2562 16.101 13.1786 16.1787C13.1009 16.2564 13.041 16.35 13.003 16.4531L11.203 21.3375C11.1497 21.481 11.0538 21.6048 10.9281 21.6922C10.8024 21.7796 10.6529 21.8265 10.4998 21.8265C10.3467 21.8265 10.1973 21.7796 10.0716 21.6922C9.94592 21.6048 9.84999 21.481 9.79672 21.3375L7.99672 16.4531C7.95873 16.35 7.89882 16.2564 7.82113 16.1787C7.74344 16.101 7.64981 16.0411 7.54672 16.0031Z\", stroke: strokeColor, strokeWidth: \"1.5\", strokeLinecap: \"round\", fill: \"rgb(var(--bfc-primary))\", strokeLinejoin: \"round\" }),\n React.createElement(\"path\", { d: \"M18.7497 3.75L14.2497 3.75\", stroke: \"rgb(var(--bfc-primary))\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }),\n React.createElement(\"path\", { d: \"M16.4999 6V1.5\", stroke: \"rgb(var(--bfc-primary))\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }),\n React.createElement(\"path\", { d: \"M22.4999 8.25001H19.4999\", stroke: \"rgb(var(--bfc-primary))\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }),\n React.createElement(\"path\", { d: \"M20.9998 9.75002V6.75002\", stroke: \"rgb(var(--bfc-primary))\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })));\n};\nexport default GeneratingStar;\n","import { __awaiter } from \"tslib\";\nimport React, { useState } from 'react';\nimport { Copy, CaretDown, Check, ArrowSquareOut } from '@phosphor-icons/react';\nimport { Button } from '../ui/button';\nimport { AnswerBlock } from './AnswerBlock';\nimport { isMarkdownTextBlock } from './blocks/utils';\nimport AnswerActions from './AnswerActions';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';\nimport { Feedback } from '@/components/feedback';\nimport GeneratingStar from '@/components/generating-star';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\nexport function Answer({ index, blocks = [], question, searchResults, state = 'completed', searchQueryId, feedback, onFeedback, disableFeedback = false, textConfig = {}, redirectRules, actions, handleActionClick, nextBestActions, isLastAnswer, }) {\n const [isCopied, setIsCopied] = useState(false);\n const [isExpanded, setIsExpanded] = useState(false);\n const answer = blocks\n .filter(isMarkdownTextBlock)\n .map((block) => block.text)\n .join('\\n\\n---\\n\\n');\n const isFetching = state === 'fetching-search-results' || state === 'fetching-stream';\n const isFetchingInitialAnswer = isFetching && blocks.length === 1;\n const isFetchingSearchResults = state === 'fetching-search-results';\n const isIdle = state === 'getting-action-inputs' || state === 'completed';\n const isCompleted = state === 'completed';\n const handleCopy = () => __awaiter(this, void 0, void 0, function* () {\n try {\n // Attempt to use the Clipboard API\n yield navigator.clipboard.writeText(answer);\n }\n catch (err) {\n console.warn('Clipboard API failed, using fallback:', err);\n // Fallback for environments where clipboard API is not available\n const textArea = document.createElement('textarea');\n textArea.value = answer;\n textArea.style.position = 'fixed'; // Avoid scrolling to bottom\n textArea.style.opacity = '0'; // Make it invisible\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n try {\n document.execCommand('copy');\n }\n catch (fallbackErr) {\n console.error('Fallback: Oops, unable to copy', fallbackErr);\n }\n document.body.removeChild(textArea);\n }\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n });\n const handleFeedback = (response) => {\n if (onFeedback && searchQueryId) {\n onFeedback(response);\n }\n };\n return (React.createElement(\"div\", { className: \"rounded-lg relative mx-auto overflow-hidden bg-card border border-primary mb-4\", \"data-name\": \"SearchResults\", \"data-index\": index },\n React.createElement(\"div\", { className: \"p-4 pb-0\" },\n React.createElement(\"div\", { className: \"flex items-start justify-between gap-2 min-h-9\" },\n React.createElement(\"div\", { className: \"flex gap-1\" },\n React.createElement(GeneratingStar, { loading: !isIdle }),\n React.createElement(\"h2\", { className: \"leading-normal font-semibold m-0 text-foreground self-center\" }, question)),\n isCompleted && (React.createElement(TooltipProvider, null,\n React.createElement(Tooltip, null,\n React.createElement(TooltipTrigger, { asChild: true },\n React.createElement(Button, { variant: \"ghost\", size: \"icon\", onClick: () => void handleCopy(), className: \"-mt-1 flex-shrink-0\" }, isCopied ? (React.createElement(Check, { className: \"text-feedback-positive\", weight: \"bold\" })) : (React.createElement(Copy, { className: \"text-secondary-foreground\", weight: \"bold\" })))),\n React.createElement(TooltipContent, null,\n React.createElement(\"p\", null, isCopied ? 'Copied!' : 'Copy'))))))),\n isFetchingInitialAnswer && (React.createElement(\"div\", { className: \"space-y-4 mt-2 px-4\" },\n React.createElement(\"div\", { className: \"flex items-center gap-2\" },\n React.createElement(\"div\", { className: \"size-5 rounded-full bg-primary/30\" }),\n React.createElement(\"div\", { className: \"flex items-center gap-2 text-sm text-foreground\" }, isFetchingSearchResults ? textConfig.loadingSearchText : textConfig.loadingAnswerText)))),\n React.createElement(\"div\", { className: \"flex flex-col\" }, blocks === null || blocks === void 0 ? void 0 : blocks.map((block, i) => (React.createElement(\"div\", { key: i, className: \"p-4 border-b last:border-b-0 border-dashed\" },\n React.createElement(AnswerBlock, { block: block, redirectRules: redirectRules, state: state }))))),\n isCompleted && (React.createElement(AnswerActions, { actions: actions, nextBestActions: nextBestActions, isLastAnswer: isLastAnswer, handleActionClick: handleActionClick, searchQueryId: searchQueryId || '', question: question, answer: answer })),\n isCompleted && !disableFeedback && (React.createElement(\"div\", { className: \"p-4 pt-0\" },\n React.createElement(Feedback, { feedback: feedback, onFeedback: handleFeedback, textConfig: textConfig, disabled: disableFeedback }))),\n searchResults && searchResults.length > 0 && (React.createElement(\"div\", { className: \"overflow-hidden bg-card border-dashed border-0 border-t-2\" },\n React.createElement(Collapsible, { open: isExpanded, onOpenChange: setIsExpanded, className: \"w-full\" },\n React.createElement(\"div\", null,\n React.createElement(CollapsibleTrigger, { asChild: true },\n React.createElement(Button, { variant: \"secondary\", className: \"w-full justify-between h-11\", \"data-name\": \"RelatedSources\" },\n React.createElement(\"div\", { className: \"flex items-center gap-2\" },\n React.createElement(\"span\", { className: \"font-medium truncate text-base\" }, \"Sources\")),\n React.createElement(CaretDown, { className: `size-4 flex-shrink-0 transition-transform duration-200 text-secondary-foreground ${isExpanded ? 'rotate-180' : ''}`, weight: \"bold\" }),\n React.createElement(\"span\", { className: \"sr-only\" }, \"Toggle\")))),\n React.createElement(CollapsibleContent, { className: \"divide-y divide-gray-200 dark:divide-border overflow-hidden CollapsibleContent\" }, searchResults.map((result) => (React.createElement(\"a\", { key: result.id, href: result.url, target: \"_blank\", rel: \"noopener noreferrer\", className: \"flex items-center gap-2 p-3 transition-colors duration-200 hover:bg-accent bg-card text-foreground\" },\n React.createElement(\"span\", { className: \"flex-grow truncate\" }, result.title),\n React.createElement(ArrowSquareOut, { className: \"size-4 flex-shrink-0 text-secondary-foreground\", weight: \"bold\" }))))))))));\n}\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { CaretRight } from '@phosphor-icons/react';\nimport { Button } from '../ui/button';\nconst MotionButton = motion(Button);\nexport function FollowUpQuestions({ questions, onQuestionClick }) {\n if (!questions.length)\n return null;\n return (React.createElement(motion.div, { initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -20 }, className: \"w-full\" },\n React.createElement(\"div\", { className: \"rounded-lg overflow-hidden bg-card border border-dark-300\" },\n React.createElement(\"h3\", { className: \"px-4 py-3 border-b border-b-dark-300 font-bold\" }, \"Follow-up questions\"),\n questions.map((question, index) => {\n if (index < 3) {\n return (React.createElement(MotionButton, { key: index, initial: { opacity: 0, x: -20 }, animate: { opacity: 1, x: 0 }, transition: { delay: index * 0.1 }, onClick: () => onQuestionClick(question), variant: \"ghost\", className: \"w-full text-left\" },\n React.createElement(\"span\", { className: \"flex-grow\" }, question),\n React.createElement(CaretRight, { className: \"\", weight: \"bold\" })));\n }\n return null;\n }))));\n}\n","import React, { useState, useEffect } from 'react';\nimport { ArrowsVertical } from '@phosphor-icons/react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\nimport { cn } from '@/lib/utils';\nexport function TimelineNavigation({ questions, activeIndex, onNavigate, offset }) {\n const [prevActiveIndex, setPrevActiveIndex] = useState(activeIndex);\n useEffect(() => {\n setPrevActiveIndex(activeIndex);\n }, [activeIndex]);\n // Show 2 items before and after the active item\n const VISIBLE_ITEMS_EACH_SIDE = 2;\n const totalItems = questions.length;\n const getVisibleIndexes = () => {\n const indexes = [];\n let lastAddedIndex = null;\n const addIndex = (index) => {\n if (lastAddedIndex !== null && index - lastAddedIndex > 1) {\n indexes.push('ellipsis');\n }\n indexes.push(index);\n lastAddedIndex = index;\n };\n // Always show first item\n addIndex(0);\n // Show items around active index\n for (let i = Math.max(1, activeIndex - VISIBLE_ITEMS_EACH_SIDE); i <= Math.min(totalItems - 2, activeIndex + VISIBLE_ITEMS_EACH_SIDE); i++) {\n addIndex(i);\n }\n // Always show last item if we have more than one item\n if (totalItems > 1) {\n addIndex(totalItems - 1);\n }\n return indexes;\n };\n const visibleIndexes = getVisibleIndexes();\n return (React.createElement(\"nav\", { \"aria-label\": \"Question timeline navigation\", className: \"fixed left-4 top-1/2 -translate-y-1/2 z-40 flex flex-col gap-3\", style: Object.assign({}, (offset ? { left: `${offset}px` } : {})) },\n React.createElement(motion.div, { className: \"flex flex-col items-center space-y-3\", role: \"list\", initial: false, animate: { y: 0 }, transition: { type: 'spring', stiffness: 300, damping: 30 } },\n React.createElement(AnimatePresence, null, visibleIndexes.map((indexOrEllipsis, arrayIndex) => {\n if (indexOrEllipsis === 'ellipsis') {\n return (React.createElement(motion.div, { key: `ellipsis-${arrayIndex}`, className: \"h-8 flex items-center justify-center\", \"aria-hidden\": \"true\", initial: { opacity: 0, y: prevActiveIndex > activeIndex ? -20 : 20 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: prevActiveIndex > activeIndex ? 20 : -20 }, transition: { duration: 0.2 } },\n React.createElement(ArrowsVertical, { className: \"size-4 text-foreground\" })));\n }\n const index = indexOrEllipsis;\n const question = questions[index];\n return (React.createElement(motion.div, { key: index, className: \"relative group isolate\", role: \"listitem\", initial: { opacity: 0, y: prevActiveIndex > activeIndex ? -20 : 20 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: prevActiveIndex > activeIndex ? 20 : -20 }, transition: { duration: 0.2 }, layout: true },\n React.createElement(TooltipProvider, { delayDuration: 100 },\n React.createElement(Tooltip, null,\n React.createElement(TooltipTrigger, { asChild: true },\n React.createElement(\"button\", { onClick: () => onNavigate(index), onKeyDown: (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n onNavigate(index);\n }\n }, className: cn('flex items-center justify-center size-8 rounded-full transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 hover:opacity-90 cursor-pointer ring-primary ', index === activeIndex ? 'bg-primary text-primary-foreground' : 'bg-stone-300 text-zinc-800'), \"aria-label\": `Navigate to question ${index + 1}: ${question}`, \"aria-current\": index === activeIndex ? 'step' : undefined }, index + 1)),\n React.createElement(TooltipContent, { side: \"right\", sideOffset: 8, className: \"max-w-[300px] bg-card text-card-foreground border-foreground/35\" },\n React.createElement(\"p\", { className: \"break-words leading-relaxed\" }, question))))));\n })))));\n}\n","import { ArrowDown } from '@phosphor-icons/react';\nimport React from 'react';\nimport { Button } from '@/components/ui/button';\nexport function ScrollToBottomArrow({ onClick }) {\n return (React.createElement(Button, { size: \"icon\", variant: \"secondary\", className: \"fixed bottom-20 right-4 rounded-full transition-opacity duration-300 border-border shadow-md\", onClick: onClick },\n React.createElement(ArrowDown, { className: \"size-5\" })));\n}\n","import { __rest } from \"tslib\";\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\nimport { CheckIcon, ChevronRightIcon, DotFilledIcon } from \"@radix-ui/react-icons\";\nconst DropdownMenu = DropdownMenuPrimitive.Root;\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\nconst DropdownMenuSubTrigger = React.forwardRef((_a, ref) => {\n var { className, inset, children } = _a, props = __rest(_a, [\"className\", \"inset\", \"children\"]);\n return (React.createElement(DropdownMenuPrimitive.SubTrigger, Object.assign({ ref: ref, className: cn(\"flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm !outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\", inset && \"pl-8\", className) }, props),\n children,\n React.createElement(ChevronRightIcon, { className: \"ml-auto\" })));\n});\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName;\nconst DropdownMenuSubContent = React.forwardRef((_a, ref) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(DropdownMenuPrimitive.SubContent, Object.assign({ ref: ref, className: cn(\"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\", className) }, props)));\n});\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName;\nconst DropdownMenuContent = React.forwardRef((_a, ref) => {\n var { className, sideOffset = 4 } = _a, props = __rest(_a, [\"className\", \"sideOffset\"]);\n return (React.createElement(DropdownMenuPrimitive.Portal, null,\n React.createElement(DropdownMenuPrimitive.Content, Object.assign({ ref: ref, sideOffset: sideOffset, className: cn(\"z-50 min-w-[8rem] overflow-hidden rounded-md border border-foreground bg-popover p-1 text-popover-foreground shadow-[4px_4px_0_0_#171717] dark:shadow-[4px_4px_0_0_#fff]\", \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\", className) }, props))));\n});\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\nconst DropdownMenuItem = React.forwardRef((_a, ref) => {\n var { className, inset } = _a, props = __rest(_a, [\"className\", \"inset\"]);\n return (React.createElement(DropdownMenuPrimitive.Item, Object.assign({ ref: ref, className: cn(\"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm !outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-5 [&>svg]:shrink-0\", inset && \"pl-8\", className) }, props)));\n});\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\nconst DropdownMenuCheckboxItem = React.forwardRef((_a, ref) => {\n var { className, children, checked } = _a, props = __rest(_a, [\"className\", \"children\", \"checked\"]);\n return (React.createElement(DropdownMenuPrimitive.CheckboxItem, Object.assign({ ref: ref, className: cn(\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm !outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\", className), checked: checked }, props),\n React.createElement(\"span\", { className: \"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\" },\n React.createElement(DropdownMenuPrimitive.ItemIndicator, null,\n React.createElement(CheckIcon, { className: \"h-4 w-4\" }))),\n children));\n});\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName;\nconst DropdownMenuRadioItem = React.forwardRef((_a, ref) => {\n var { className, children } = _a, props = __rest(_a, [\"className\", \"children\"]);\n return (React.createElement(DropdownMenuPrimitive.RadioItem, Object.assign({ ref: ref, className: cn(\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm !outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\", className) }, props),\n React.createElement(\"span\", { className: \"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\" },\n React.createElement(DropdownMenuPrimitive.ItemIndicator, null,\n React.createElement(DotFilledIcon, { className: \"h-2 w-2 fill-current\" }))),\n children));\n});\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\nconst DropdownMenuLabel = React.forwardRef((_a, ref) => {\n var { className, inset } = _a, props = __rest(_a, [\"className\", \"inset\"]);\n return (React.createElement(DropdownMenuPrimitive.Label, Object.assign({ ref: ref, className: cn(\"px-2 py-1.5 text-sm font-semibold\", inset && \"pl-8\", className) }, props)));\n});\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\nconst DropdownMenuSeparator = React.forwardRef((_a, ref) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(DropdownMenuPrimitive.Separator, Object.assign({ ref: ref, className: cn(\"-mx-1 my-1 h-px bg-muted\", className) }, props)));\n});\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\nconst DropdownMenuShortcut = (_a) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(\"span\", Object.assign({ className: cn(\"ml-auto text-xs tracking-widest opacity-60\", className) }, props)));\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\nexport { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuRadioGroup, };\n","import React, { useRef, useEffect, useState } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { MagnifyingGlass, Image, X, ArrowRight, CaretRight, CaretDown, CheckCircle, Circle, } from '@phosphor-icons/react';\nimport { Button } from '../ui/button';\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '../ui/dropdown-menu';\nimport { cn } from '@/lib/utils';\nexport const PrimarySearch = React.forwardRef(({ query, onQueryChange, onSearch, textConfig, collections = [], currentCollectionId, onCollectionChange, disableImageAttachment = false, attachedImages = [], onImageUpload, onRemoveImage, isSearching = false, autocompleteSuggestions = [], onAutocompleteSuggestionSelect, }, ref) => {\n var _a;\n const fileInputRef = useRef(null);\n const [showSuggestions, setShowSuggestions] = useState(false);\n const adjustTextareaHeight = (textarea) => {\n textarea.style.height = 'auto';\n textarea.style.height = `${textarea.scrollHeight}px`;\n };\n const handleKeyPress = (e) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n onSearch();\n }\n };\n // Close suggestions when clicking outside\n useEffect(() => {\n const handleClickOutside = (event) => {\n if (!event.target.closest('.suggestions-dropdown')) {\n setShowSuggestions(false);\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n // Show suggestions only when we have a query\n useEffect(() => {\n if (query.trim()) {\n setShowSuggestions(true);\n }\n }, [query]);\n const shouldShowSuggestions = showSuggestions && query.trim() && autocompleteSuggestions.length > 0;\n // Animation variants for consistent animations\n const dropdownVariants = {\n hidden: {\n opacity: 0,\n scale: 0.95,\n transformOrigin: 'top',\n },\n visible: {\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n stiffness: 500,\n damping: 30,\n mass: 0.5,\n },\n },\n exit: {\n opacity: 0,\n scale: 0.95,\n transition: {\n duration: 0.15,\n ease: 'easeOut',\n },\n },\n };\n const itemVariants = {\n hidden: {\n opacity: 0,\n x: -4,\n },\n visible: {\n opacity: 1,\n x: 0,\n transition: {\n duration: 0.2,\n },\n },\n };\n const listVariants = {\n visible: {\n transition: {\n staggerChildren: 0.03,\n delayChildren: 0.05,\n },\n },\n };\n return (React.createElement(\"div\", { className: \"relative w-full\", \"data-name\": \"PrimarySearch\" },\n React.createElement(\"div\", { className: cn('w-full overflow-hidden bg-background border border-border transition-all', shouldShowSuggestions ? 'rounded-t-md' : 'rounded-md') },\n React.createElement(\"div\", { className: \"p-3 flex items-center bg-card\" },\n React.createElement(MagnifyingGlass, { className: \"h-5 w-5 mr-2 text-muted-foreground\", \"aria-hidden\": true, role: \"presentation\" }),\n React.createElement(\"textarea\", { ref: ref, value: query, onChange: (e) => {\n onQueryChange(e.target.value);\n adjustTextareaHeight(e.target);\n }, onKeyDown: handleKeyPress, onFocus: () => setShowSuggestions(true), placeholder: textConfig.searchPlaceholder, className: \"\\n w-full\\n resize-none\\n !outline-none\\n text-base\\n py-1\\n min-h-9\\n overflow-hidden\\n border-none\\n bg-transparent\\n shadow-none\\n placeholder:text-gray-400\\n text-dark-900\\n dark:text-neutral-200\\n !ring-0\\n \", rows: 1 }),\n isSearching && (React.createElement(\"div\", { className: \"flex items-center justify-center ml-2\" },\n React.createElement(\"div\", { className: \"animate-spin rounded-full size-4 border-2 border-t-transparent border-primary\" })))),\n !disableImageAttachment && attachedImages.length > 0 && (React.createElement(\"div\", { className: \"flex gap-2 mt-3 overflow-x-auto pb-1 px-3\" }, attachedImages.map((image, index) => (React.createElement(\"div\", { key: index, className: \"relative group rounded-lg overflow-hidden flex-shrink-0 size-20\" },\n React.createElement(\"img\", { src: image.preview, alt: `Attached ${index + 1}`, className: \"w-full h-full object-cover\" }),\n React.createElement(\"button\", { onClick: () => onRemoveImage === null || onRemoveImage === void 0 ? void 0 : onRemoveImage(index), className: \"\\n absolute\\n top-1\\n right-1\\n rounded-full\\n p-1\\n opacity-0\\n group-hover:opacity-100\\n transition-opacity\\n duration-200\\n hover:bg-black/70\\n bg-black/50\\n \" },\n React.createElement(X, { className: \"size-3 text-white\", \"aria-label\": \"Remove image\" }))))))),\n !shouldShowSuggestions && (React.createElement(\"div\", { className: \"flex items-center justify-between px-3 py-2 border-t border-border\" },\n React.createElement(\"div\", { className: \"flex gap-1\" },\n collections.length > 0 && (React.createElement(DropdownMenu, null,\n React.createElement(DropdownMenuTrigger, { asChild: true },\n React.createElement(Button, { variant: \"ghost\", size: \"sm\", className: \"\\n transition-all\\n duration-200\\n rounded-md\\n h-8\\n flex\\n items-center\\n gap-1\\n hover:bg-opacity-80\\n text-foreground\\n \" },\n ((_a = collections.find((c) => c.id === currentCollectionId)) === null || _a === void 0 ? void 0 : _a.name) ||\n textConfig.allDocumentsText ||\n 'All documents',\n React.createElement(CaretDown, { className: \"size-4 text-secondary-foreground\" }))),\n React.createElement(DropdownMenuContent, { className: \"max-w-48\" }, collections.map((collection) => (React.createElement(DropdownMenuItem, { key: collection.id, onClick: () => onCollectionChange === null || onCollectionChange === void 0 ? void 0 : onCollectionChange(collection.id) },\n collection.id === currentCollectionId ? (React.createElement(CheckCircle, { className: \"rounded-full text-primary-500 !size-5\", weight: \"fill\" })) : (React.createElement(Circle, { className: \"rounded-full !size-5 text-gray-300\" })),\n React.createElement(\"span\", { className: \"text-sm truncate\" }, collection.name))))))),\n !disableImageAttachment && (React.createElement(React.Fragment, null,\n React.createElement(\"input\", { type: \"file\", ref: fileInputRef, accept: \"image/*\", multiple: true, className: \"hidden\", onChange: onImageUpload }),\n React.createElement(Button, { variant: \"ghost\", size: \"sm\", className: \"rounded-md h-8 hover:bg-opacity-80 dark:text-neutral-200\", onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, \"aria-label\": textConfig.attachImageText },\n React.createElement(Image, { className: \"size-4 text-secondary-foreground\" }),\n React.createElement(\"span\", { className: \"hidden @sm:block\" }, textConfig.attachImageText))))),\n React.createElement(\"div\", { className: \"flex items-center\" },\n React.createElement(Button, { size: \"sm\", disabled: !query || isSearching, \"aria-disabled\": !query || isSearching, className: \"rounded-md size-8 disabled:opacity-50 bg-primary\", onClick: onSearch }, isSearching ? (React.createElement(\"div\", { className: \"flex items-center\", role: \"status\", \"aria-live\": \"polite\" },\n React.createElement(\"div\", { className: \"animate-spin rounded-full size-4 border-2 border-t-transparent border-white\", \"aria-hidden\": \"true\" }),\n React.createElement(\"span\", { className: \"sr-only\" }, \"Loading\"))) : (React.createElement(ArrowRight, { className: \"text-primary-foreground\", size: 16, weight: \"bold\", \"aria-label\": \"Submit question\" }))))))),\n React.createElement(AnimatePresence, { mode: \"wait\" }, shouldShowSuggestions && (React.createElement(motion.div, { variants: dropdownVariants, initial: \"hidden\", animate: \"visible\", exit: \"exit\", className: \"\\n suggestions-dropdown\\n absolute\\n left-0\\n right-0\\n z-50\\n overflow-hidden\\n bg-card\\n border-border\\n border-b border-l border-r border-solid rounded-b-md shadow-md -mt-px\\n \" },\n React.createElement(motion.div, { className: \"md:hidden\", variants: itemVariants }, query.trim() && (React.createElement(\"div\", { role: \"option\", \"aria-selected\": false, tabIndex: 0, className: \"\\n px-4 py-3\\n cursor-pointer\\n flex\\n items-center\\n gap-3\\n transition-colors\\n duration-200\\n hover:bg-gray-50/50\\n text-foreground\\n bg-gray-100\\n border-b border border-border\\n dark:bg-slate-500\\n dark:border-dark-800/20\\n \", onClick: () => {\n onSearch();\n setShowSuggestions(false);\n }, onKeyDown: (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSearch();\n setShowSuggestions(false);\n }\n } },\n React.createElement(MagnifyingGlass, { className: \"size-4 flex-shrink-0 text-secondary-foreground\" }),\n React.createElement(\"span\", { className: \"text-[15px]\" }, query),\n React.createElement(\"div\", { className: \"ml-auto flex items-center\" },\n React.createElement(CaretRight, { className: \"size-4 text-secondary-foreground\" }))))),\n React.createElement(motion.div, { variants: listVariants, initial: \"hidden\", animate: \"visible\" }, autocompleteSuggestions.map((suggestion) => (React.createElement(motion.div, { key: suggestion.id, variants: itemVariants, role: \"option\", \"aria-selected\": false, tabIndex: 0, className: \"px-4 py-3 cursor-pointer flex items-center gap-3 transition-colors duration-200 hover:bg-gray-200/50 text-foreground\", onClick: () => {\n onAutocompleteSuggestionSelect === null || onAutocompleteSuggestionSelect === void 0 ? void 0 : onAutocompleteSuggestionSelect(suggestion);\n setShowSuggestions(false);\n }, onKeyDown: (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onAutocompleteSuggestionSelect === null || onAutocompleteSuggestionSelect === void 0 ? void 0 : onAutocompleteSuggestionSelect(suggestion);\n setShowSuggestions(false);\n }\n } },\n React.createElement(MagnifyingGlass, { className: \"size-4 flex-shrink-0 text-secondary-foreground\" }),\n React.createElement(\"span\", { className: \"text-[15px]\" }, suggestion.question),\n React.createElement(\"div\", { className: \"ml-auto flex items-center\" },\n React.createElement(CaretRight, { className: \"size-4 text-secondary-foreground\" })))))))))));\n});\nPrimarySearch.displayName = 'PrimarySearch';\nexport default PrimarySearch;\n","import React, { useRef, useState, useEffect } from 'react';\nimport { MagnifyingGlass, ArrowRight } from '@phosphor-icons/react';\nimport { motion } from 'framer-motion';\nimport styles from './FollowUpSearchBar.module.css';\nimport { Button } from '../ui/button';\nimport { Textarea } from '../ui/textarea';\nimport { cn } from '@/lib/utils';\nexport const FollowUpSearchBar = React.forwardRef(({ initialQuery = '', onQueryChange, isSearching, handleFollowUpSearch, textConfig }, ref) => {\n // Use internal state instead of prop\n const [localQuery, setLocalQuery] = useState(initialQuery);\n const followUpInputRef = useRef(null);\n const setCombinedRef = (instance) => {\n followUpInputRef.current = instance;\n if (typeof ref === 'function') {\n ref(instance);\n }\n else if (ref && 'current' in ref) {\n ref.current = instance;\n }\n };\n // Automatically adjust height based on content\n useEffect(() => {\n if (followUpInputRef.current) {\n followUpInputRef.current.style.height = 'inherit';\n followUpInputRef.current.style.height = `${followUpInputRef.current.scrollHeight}px`;\n }\n }, [localQuery]);\n // Reset local state when initialQuery changes (e.g., after search is performed)\n useEffect(() => {\n setLocalQuery(initialQuery);\n }, [initialQuery]);\n const handleKeyPress = (e) => {\n if (e.key === 'Enter' && !e.shiftKey && !isSearching) {\n e.preventDefault();\n const currentQuery = localQuery;\n onQueryChange(currentQuery); // Emit the query change to parent\n handleFollowUpSearch(currentQuery);\n // Clear the local state immediately\n setLocalQuery('');\n }\n };\n const handleChange = (e) => {\n setLocalQuery(e.target.value);\n };\n const handleBlur = () => {\n if (localQuery !== initialQuery) {\n onQueryChange(localQuery); // Emit the query change to parent on blur\n }\n };\n const handleSearchClick = () => {\n const currentQuery = localQuery;\n onQueryChange(currentQuery); // Emit the query change to parent\n handleFollowUpSearch(currentQuery);\n // Clear the local state immediately\n setLocalQuery('');\n };\n return (React.createElement(motion.footer, { initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.5 }, className: styles.followUpSearchBar },\n React.createElement(\"div\", { className: \"container flex items-center justify-center p-3\" },\n React.createElement(\"div\", { className: \"relative flex w-full items-center gap-2 rounded bg-card px-2 border border-dark-400\" },\n React.createElement(\"div\", { className: \"size-6 flex flex-shrink-0 justify-center items-center\" },\n React.createElement(MagnifyingGlass, { className: \"size-5 text-secondary-foreground\" })),\n React.createElement(Textarea, { ref: setCombinedRef, value: localQuery, onChange: handleChange, onBlur: handleBlur, onKeyDown: handleKeyPress, placeholder: textConfig.followUpPlaceholder, className: \"min-h-[44px] w-full resize-none border-0 shadow-none bg-transparent px-0 py-2.5 focus:outline-none focus:ring-0 focus-visible:ring-0\", rows: 1 }),\n React.createElement(Button, { type: \"button\", size: \"icon\", disabled: isSearching || !localQuery.trim(), onClick: handleSearchClick, className: cn('size-8 shrink-0 rounded', localQuery ? 'bg-primary text-primary-foreground' : 'bg-dark-400 dark:bg-muted text-white') }, isSearching ? (React.createElement(\"div\", { className: \"animate-spin rounded-full size-4 sm:size-5 border-2 border-dark/40 !border-t-foreground dark:border-dark-500 \" })) : (React.createElement(ArrowRight, { className: \"size-6\" })))))));\n});\nFollowUpSearchBar.displayName = 'FollowUpSearchBar';\n","import { __rest } from \"tslib\";\nimport React from 'react';\nimport { motion } from 'framer-motion';\nimport { ArrowsOutSimple, ArrowsInSimple, ArrowLeft, X } from '@phosphor-icons/react';\nimport { Button } from '../ui/button';\nimport { useIsChatSearchDirty } from './hooks/useIsChatSearchDirty';\nimport { useChatSearch } from './ChatSearchContext';\nimport { cn } from '@/lib/utils';\nexport function Header(_a) {\n var { headerText, onToggleSizeButtonClick, onBackButtonClick, onCloseWidgetClick, className } = _a, props = __rest(_a, [\"headerText\", \"onToggleSizeButtonClick\", \"onBackButtonClick\", \"onCloseWidgetClick\", \"className\"]);\n const isDirty = useIsChatSearchDirty();\n const [isExpanded, setIsExpanded] = React.useState(false);\n const { isSearching, showMobileCloseWidgetButton: hideExpandButton } = useChatSearch();\n const handleToggleSizeButtonClick = () => {\n setIsExpanded((prev) => !prev);\n onToggleSizeButtonClick();\n };\n return (React.createElement(\"div\", Object.assign({ className: cn('w-full px-3 py-4 flex items-center justify-between', 'bg-primary h-14 leading-6', '@3xl:bg-transparent @3xl:h-auto @3xl:leading-normal', '@3xl:justify-center @3xl:space-y-4 @3xl:p-0', className) }, props),\n React.createElement(motion.h1, { initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.5, delay: 0.3 }, className: \"@3xl:text-5xl m-0 text-primary-foreground @3xl:text-foreground flex gap-1 items-center font-bold text-base\" },\n isDirty && (React.createElement(Button, { size: \"icon\", variant: \"ghost\", onClick: onBackButtonClick, \"aria-label\": \"Go back\", className: \"@3xl:hidden shrink-0\", disabled: isSearching },\n React.createElement(ArrowLeft, null))),\n React.createElement(\"span\", null, headerText)),\n React.createElement(\"div\", { className: \"@3xl:hidden shrink-0\" },\n !hideExpandButton && (React.createElement(Button, { size: \"icon\", variant: \"ghost\", onClick: handleToggleSizeButtonClick, \"aria-label\": isExpanded ? 'Collapse widget' : 'Expand widget', className: \"text-primary-foreground\" }, isExpanded ? React.createElement(ArrowsInSimple, null) : React.createElement(ArrowsOutSimple, null))),\n React.createElement(Button, { size: \"icon\", variant: \"ghost\", onClick: onCloseWidgetClick, \"aria-label\": \"Close widget\", className: \"text-primary-foreground\" },\n React.createElement(X, null)))));\n}\n","export const defaultTextConfig = {\n headerText: 'How can we help you today?',\n searchPlaceholder: 'Ask a question or type a search term here ...',\n attachImageText: 'Attach image',\n allDocumentsText: 'All documents',\n loadingSearchText: 'Searching for relevant content...',\n loadingAnswerText: 'Crafting a response...',\n errorText: 'Sorry, there was an error generating the answer.',\n followUpPlaceholder: 'Ask follow-up',\n positiveAnswerText: 'Helpful',\n negativeAnswerText: 'Not helpful',\n uncertaintyFallbackText: {\n 'en': \"Sorry, I can't find a clear answer to your question. Please try rephrasing or check the related sources below.\",\n 'es': 'Lo siento, no puedo encontrar una respuesta clara. Intente reformular la pregunta o consulte las fuentes relacionadas.',\n 'fr': 'Désolé, je ne trouve pas de réponse claire. Essayez de reformuler ou consultez les sources connexes.',\n 'de': 'Entschuldigung, ich finde keine klare Antwort. Versuchen Sie es anders zu formulieren oder sehen Sie sich die verwandten Quellen an.',\n 'it': 'Mi dispiace, non trovo una risposta chiara. Prova a riformulare o consulta le fonti correlate.',\n 'pt': 'Desculpe, não encontro uma resposta clara. Tente reformular ou consulte as fontes relacionadas.',\n 'nl': 'Sorry, ik kan geen duidelijk antwoord vinden. Probeer het anders te formuleren of bekijk de gerelateerde bronnen.',\n 'pl': 'Przepraszam, nie znajduję jasnej odpowiedzi. Spróbuj przeformułować pytanie lub sprawdź powiązane źródła.',\n 'ru': 'Извините, я не могу найти четкого ответа. Попробуйте переформулировать или ознакомьтесь со связанными источниками.',\n 'ja': '申し訳ありませんが、明確な回答が見つかりません。質問の言い換えや、関連ソースをご確認ください。',\n 'ko': '죄송합니다. 명확한 답변을 찾을 수 없습니다. 질문을 다시 작성하거나 관련 소스를 확인해 주세요.',\n 'zh': '抱歉,找不到明确的答案。请尝试重新表述或查看相关来源。',\n 'zh-TW': '抱歉,找不到明確的答案。請嘗試重新表述或查看相關來源。',\n },\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nexport const LoadingConversation = () => {\n return (React.createElement(motion.div, { key: \"loading\", initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, className: \"w-full flex items-center justify-center py-20\", \"data-name\": \"loading\" },\n React.createElement(\"div\", { className: \"flex flex-col items-center gap-4\" },\n React.createElement(\"div\", { className: \"animate-spin rounded-full size-8 border-2 border-t-transparent border-primary\" }),\n React.createElement(\"p\", { className: \"text-sm text-secondary-foreground\" }, \"Loading conversation...\"))));\n};\n","import React, { createContext, useContext } from 'react';\nconst FeatureFlagContext = createContext(undefined);\nexport function FeatureFlagProvider({ children, flags }) {\n return React.createElement(FeatureFlagContext.Provider, { value: flags !== null && flags !== void 0 ? flags : {} }, children);\n}\nexport function useBooleanFlagValue(flagKey, defaultValue) {\n const flags = useContext(FeatureFlagContext);\n if (!flags) {\n // eslint-disable-next-line no-console\n console.warn(`useBooleanFlagValue(\"${flagKey}\") used outside of FeatureFlagProvider. Returning default value.`);\n return defaultValue;\n }\n const value = flags[flagKey];\n if (value === undefined) {\n return defaultValue;\n }\n return Boolean(value);\n}\n","import { __awaiter } from \"tslib\";\nimport { useState, useEffect, useCallback } from 'react';\nimport { fetchAutocomplete } from './api';\nexport function useDebounce(value, delay) {\n const [debouncedValue, setDebouncedValue] = useState(value);\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n return debouncedValue;\n}\nexport function useAutocomplete({ query, endpoint, collectionId, headers, conversationId, delay = 300, }) {\n const [suggestions, setSuggestions] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState();\n const debouncedQuery = useDebounce(query, delay);\n const fetchSuggestions = useCallback(() => __awaiter(this, void 0, void 0, function* () {\n var _a;\n if (!debouncedQuery.trim()) {\n setSuggestions([]);\n return;\n }\n setIsLoading(true);\n setError(undefined);\n try {\n const payload = yield fetchAutocomplete({\n endpoint,\n query: debouncedQuery,\n collectionId,\n headers,\n conversationId,\n });\n setSuggestions((_a = payload === null || payload === void 0 ? void 0 : payload.response) === null || _a === void 0 ? void 0 : _a.results);\n }\n catch (err) {\n console.error('Error fetching autocomplete suggestions:', err);\n setError(err instanceof Error ? err.message : 'Failed to fetch suggestions');\n setSuggestions([]);\n }\n finally {\n setIsLoading(false);\n }\n }), [debouncedQuery, endpoint, collectionId, headers, conversationId]);\n useEffect(() => {\n void fetchSuggestions();\n }, [fetchSuggestions]);\n return { suggestions, isLoading, error };\n}\n","import { __rest } from \"tslib\";\nimport * as React from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport { cn } from \"@/lib/utils\";\nconst ScrollArea = React.forwardRef((_a, ref) => {\n var { className, children } = _a, props = __rest(_a, [\"className\", \"children\"]);\n return (React.createElement(ScrollAreaPrimitive.Root, Object.assign({ className: cn(\"relative overflow-hidden\", className) }, props),\n React.createElement(ScrollAreaPrimitive.Viewport, { ref: ref, className: \"h-full w-full rounded-[inherit]\" }, children),\n React.createElement(ScrollBar, null),\n React.createElement(ScrollAreaPrimitive.Corner, null)));\n});\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\nconst ScrollBar = React.forwardRef((_a, ref) => {\n var { className, orientation = \"vertical\" } = _a, props = __rest(_a, [\"className\", \"orientation\"]);\n return (React.createElement(ScrollAreaPrimitive.ScrollAreaScrollbar, Object.assign({ ref: ref, orientation: orientation, className: cn(\"flex touch-none select-none transition-colors\", orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\", orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\", className) }, props),\n React.createElement(ScrollAreaPrimitive.ScrollAreaThumb, { className: \"relative flex-1 rounded-full bg-dark-400\" })));\n});\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\nexport { ScrollArea, ScrollBar };\n","import { __awaiter, __rest } from \"tslib\";\nimport React, { useState, useRef, useEffect, useImperativeHandle, forwardRef } from 'react';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { Suggestions } from './Suggestions';\nimport { Answer } from './Answer';\nimport { FollowUpQuestions } from './FollowUpQuestions';\nimport { NextBestActions } from './NextBestActions';\nimport { TimelineNavigation } from './TimelineNavigation';\nimport { ScrollToBottomArrow } from './ScrollToBottomArrow';\nimport { PrimarySearch } from './PrimarySearch';\nimport { FollowUpSearchBar } from './FollowUpSearchBar';\nimport { Header } from './Header';\nimport { defaultTextConfig } from './text-config';\nimport { useChatSearch, ChatSearchProvider } from './ChatSearchContext';\nimport { useConversationLoader, useScrollManager, useSubscriptionManager } from './hooks';\nimport { appendNewAnswer, setAnswerError, setUserFeedback, setFollowUpQuestions, appendAnswerChunk, clearAll, clearUserFeedback, completeAnswer, invokeAction, setSearchResults, markAsUncertain, getActionInputs, addActionButtons, } from './hooks/useAnswerList';\nimport { LoadingConversation } from './LoadingConversation';\nimport { FeatureFlagProvider } from '@/lib/feature-flags';\nimport { cn, isAnswerUncertain } from '@/lib/utils';\nimport { useAutocomplete } from '@/lib/hooks';\nimport { searchApi, sendFeedback, createConversationId, fetchFollowUpQuestions, fetchAnswerStream } from '@/lib/api';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { MemoizedIcon } from '@/components/ui/icon';\nconst ChatSearchComponent = forwardRef(({ suggestions: initialSuggestions = [], collections = [], selectedCollectionId, onCollectionChange, searchEndpoint, answerStreamEndpoint, feedbackEndpoint, loadConversationEndpoint, autocompleteEndpoint, disableFollowUpQuestions = false, disableImageAttachment = false, disableFeedback = false, disclaimer, offset = 0, headers, textConfig = {}, followUpQuestionsEndpoint, className, onToggleSizeButtonClick, trackEvent, onCloseWidget, isWidgetMode = true, nextBestActions, bodyActionButtons, onNextBestActionClick, userData, redirectRules, attributesSigned, }, ref) => {\n const { answers, answerListDispatch, query, setQuery, followUpQuery, setFollowUpQuery, isSearching, setIsSearching, showResults, setShowResults, activeAnswerIndex, setActiveAnswerIndex, conversationId: currentConversationId, setConversationId: setCurrentConversationId, clearConversationId: clearCurrentConversationId, isLoadingConversation, setShowMobileCloseWidgetButton, } = useChatSearch(); // Use the context\n const mergedTextConfig = Object.assign(Object.assign({}, defaultTextConfig), textConfig);\n const [showScrollArrow, setShowScrollArrow] = useState(false);\n const [attachedImages, setAttachedImages] = useState([]);\n const [currentCollectionId, setCurrentCollectionId] = useState(selectedCollectionId);\n const [showFollowUp, setShowFollowUp] = useState(true);\n const primaryTextareaRef = useRef(null);\n const answerRefs = useRef([]);\n const containerRef = useRef(null);\n const fileInputRef = useRef(null);\n const primarySearchRef = useRef(null);\n const followUpSearchRef = useRef(null);\n // Use autocomplete hook if endpoint is provided\n const { suggestions: autocompleteSuggestions } = useAutocomplete({\n query,\n endpoint: autocompleteEndpoint || '',\n collectionId: currentCollectionId,\n headers,\n conversationId: currentConversationId,\n delay: 300,\n });\n const { loadConversationById } = useConversationLoader({\n loadConversationEndpoint,\n headers,\n mergedTextConfig,\n });\n const { scrollToLastAnswer, scrollToAnswer } = useScrollManager(answerRefs, containerRef);\n const { subscribeToStateChanges } = useSubscriptionManager();\n const loadFollowUpQuestions = (searchQueryId, conversationId) => __awaiter(void 0, void 0, void 0, function* () {\n // Fetch follow-up questions if needed\n if (!followUpQuestionsEndpoint || disableFollowUpQuestions) {\n return;\n }\n try {\n const questions = yield fetchFollowUpQuestions({\n endpoint: followUpQuestionsEndpoint,\n searchQueryId,\n headers,\n conversationId,\n });\n return questions;\n }\n catch (error) {\n console.error('Error fetching follow-up questions:', error);\n return undefined;\n }\n });\n const processAnswerStream = ({ reader, searchQueryId, conversationId, onFirstEvent, }) => __awaiter(void 0, void 0, void 0, function* () {\n var _a, _b, _c, _d;\n let accumulatedAnswer = '';\n try {\n let done = false, isFirstEvent = true, searchIntentId, isUncertain = false, value;\n while ((({ done, value } = yield reader.read()), !done)) {\n if (isFirstEvent) {\n isFirstEvent = false;\n onFirstEvent === null || onFirstEvent === void 0 ? void 0 : onFirstEvent();\n }\n const lines = new TextDecoder()\n .decode(value)\n .split(/\\n\\n/)\n .filter((line) => line.startsWith('data: '))\n .map((line) => line.replace(/^data: /, '').trim());\n for (const line of lines) {\n try {\n const event = JSON.parse(line);\n if (event.type === 'answer-text-chunk') {\n accumulatedAnswer += event.content;\n answerListDispatch(appendAnswerChunk({\n text: event.content,\n }));\n const uncertaintyCheck = isAnswerUncertain(accumulatedAnswer);\n isUncertain = uncertaintyCheck.uncertain;\n if (isUncertain) {\n const uncertaintyText = (_d = (_c = (_a = mergedTextConfig.uncertaintyFallbackText) === null || _a === void 0 ? void 0 : _a[(_b = uncertaintyCheck.language) !== null && _b !== void 0 ? _b : 'en']) !== null && _c !== void 0 ? _c : accumulatedAnswer) !== null && _d !== void 0 ? _d : \"I don't know.\";\n answerListDispatch(markAsUncertain({ uncertaintyText }));\n }\n }\n if (event.type === 'action-buttons') {\n searchIntentId = event.searchIntentId;\n answerListDispatch(addActionButtons({\n searchIntentId,\n actions: event.actions,\n }));\n }\n if (event.type === 'get-action-inputs') {\n searchIntentId = event.searchIntentId;\n answerListDispatch(getActionInputs({\n searchIntentId: event.searchIntentId,\n inputs: event.inputs,\n actionId: event.actionId,\n schema: event.schema,\n initialValues: event.values,\n onSubmit: (parameters) => {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return generateAnswerForAction({\n searchQueryId,\n conversationId,\n searchIntentId: event.searchIntentId,\n actionId: event.actionId,\n parameters,\n });\n },\n }));\n }\n }\n catch (_e) {\n console.warn('Failed to parse answer stream block');\n }\n }\n }\n return { answer: accumulatedAnswer, searchIntentId, isUncertain };\n }\n finally {\n reader.releaseLock();\n }\n });\n const generateAnswerForQuery = ({ searchQueryId, conversationId, }) => __awaiter(void 0, void 0, void 0, function* () {\n var _f;\n try {\n const followUpQuestions = loadFollowUpQuestions(searchQueryId);\n const response = yield fetchAnswerStream({\n endpoint: answerStreamEndpoint,\n headers,\n body: {\n type: 'generate-for-query',\n conversationId,\n searchQueryId,\n },\n });\n const reader = (_f = response.body) === null || _f === void 0 ? void 0 : _f.getReader();\n if (!reader)\n return;\n const { answer, searchIntentId, isUncertain } = yield processAnswerStream({\n reader,\n searchQueryId,\n conversationId,\n onFirstEvent: () => {\n trackEvent === null || trackEvent === void 0 ? void 0 : trackEvent('First Streamed Answer Chunk Received', { conversationId, searchQueryId });\n },\n });\n if (!answer)\n return;\n // load follow-up questions if no search intent id is returned - i.e. no search intent was matched\n void followUpQuestions.then((questions) => {\n if (questions && questions.length > 0 && !searchIntentId) {\n answerListDispatch(setFollowUpQuestions({ questions }));\n }\n });\n if (isUncertain) {\n trackEvent === null || trackEvent === void 0 ? void 0 : trackEvent('Answer Not Found', { conversationId, searchQueryId });\n }\n else {\n trackEvent === null || trackEvent === void 0 ? void 0 : trackEvent('Answer Found', { conversationId, searchQueryId });\n }\n }\n catch (e) {\n console.error('Error generating answer for query:', e);\n answerListDispatch(setAnswerError({ error: mergedTextConfig.errorText || 'An error occurred.' }));\n }\n finally {\n answerListDispatch(completeAnswer());\n }\n });\n const generateAnswerForAction = ({ searchQueryId, searchIntentId, conversationId, actionId, parameters, }) => __awaiter(void 0, void 0, void 0, function* () {\n var _g;\n answerListDispatch(invokeAction());\n try {\n const response = yield fetchAnswerStream({\n endpoint: answerStreamEndpoint,\n headers,\n body: {\n type: 'invoke-action',\n conversationId,\n searchQueryId,\n searchIntentId,\n actionId,\n parameters,\n },\n });\n const reader = (_g = response.body) === null || _g === void 0 ? void 0 : _g.getReader();\n if (!reader)\n return;\n yield processAnswerStream({\n reader,\n searchQueryId,\n });\n }\n catch (e) {\n console.error('Error generating answer for action:', e);\n answerListDispatch(setAnswerError({ error: mergedTextConfig.errorText || 'An error occurred.' }));\n }\n finally {\n answerListDispatch(completeAnswer());\n setIsSearching(false);\n }\n });\n // Function to handle search API call\n const handleSearchApiCall = (searchQuery, conversationId, attributes, attributesSigned) => __awaiter(void 0, void 0, void 0, function* () {\n const searchResponse = yield searchApi({\n endpoint: searchEndpoint,\n query: searchQuery,\n collectionId: currentCollectionId,\n headers,\n conversationId,\n attributes,\n attributesSigned,\n });\n if (searchResponse.results.length === 0) {\n trackEvent === null || trackEvent === void 0 ? void 0 : trackEvent('No Articles Found', { conversationId, searchQuery });\n }\n answerListDispatch(setSearchResults({\n searchQueryId: searchResponse.searchQueryId,\n results: searchResponse.results,\n }));\n return searchResponse.searchQueryId;\n });\n // Main function to perform the search\n const performSearch = ({ searchQuery = query.trim(), event }) => __awaiter(void 0, void 0, void 0, function* () {\n var _h;\n if (!searchQuery)\n return;\n const conversationId = currentConversationId || createConversationId();\n setCurrentConversationId(conversationId);\n setIsSearching(true);\n setShowResults(true);\n setActiveAnswerIndex(answers.length);\n scrollToLastAnswer();\n answerListDispatch(appendNewAnswer({\n query: searchQuery,\n }));\n // ensure the UI updates before the search API call\n yield Promise.resolve();\n // focus on follow-up search field if it's visible\n (_h = followUpSearchRef.current) === null || _h === void 0 ? void 0 : _h.focus();\n try {\n const attributes = Object.assign({}, userData);\n const searchQueryId = yield handleSearchApiCall(searchQuery, conversationId, attributes, attributesSigned);\n // track the event after the search API call\n event &&\n (trackEvent === null || trackEvent === void 0 ? void 0 : trackEvent(event.name, Object.assign({ conversationId,\n searchQuery,\n searchQueryId }, event.metaData)));\n yield generateAnswerForQuery({\n searchQueryId,\n conversationId,\n });\n }\n catch (error) {\n console.error('Error generating answer:', error);\n // track the error event\n event &&\n (trackEvent === null || trackEvent === void 0 ? void 0 : trackEvent(`${event.name} - Search Error`, Object.assign({ conversationId,\n searchQuery }, event.metaData)));\n answerListDispatch(setAnswerError({ error: mergedTextConfig.errorText || 'An error occurred.' }));\n }\n finally {\n setIsSearching(false);\n }\n });\n const createNewThread = (firstQuery) => {\n // If firstQuery is provided, set it and trigger search\n if (firstQuery) {\n setQuery(firstQuery);\n void performSearch({ searchQuery: firstQuery, event: { name: 'New Thread Created with Query' } });\n return;\n }\n setQuery('');\n setFollowUpQuery('');\n setShowResults(false);\n answerListDispatch(clearAll());\n setActiveAnswerIndex(0);\n setAttachedImages([]);\n clearCurrentConversationId();\n trackEvent === null || trackEvent === void 0 ? void 0 : trackEvent('New Thread Created', { oldConversationId: currentConversationId });\n if (primaryTextareaRef.current) {\n primaryTextareaRef.current.style.height = 'auto';\n }\n };\n // Expose the methods via ref\n useImperativeHandle(ref, () => ({\n createNewThread,\n showFollowUpThread: (show) => {\n setShowFollowUp(show);\n },\n subscribeToStateChanges,\n focusSearchField: () => { var _a, _b; return ((_a = primarySearchRef.current) === null || _a === void 0 ? void 0 : _a.focus()) || ((_b = followUpSearchRef.current) === null || _b === void 0 ? void 0 : _b.focus()); },\n showCloseButton: (showButton = true) => {\n setShowMobileCloseWidgetButton(showButton);\n },\n }));\n // Update currentCollectionId when selectedCollectionId prop changes\n useEffect(() => {\n setCurrentCollectionId(selectedCollectionId);\n }, [selectedCollectionId]);\n const adjustTextareaHeight = (textarea) => {\n textarea.style.height = 'auto';\n textarea.style.height = `${textarea.scrollHeight}px`;\n };\n // Function to initiate a primary search\n const handlePrimarySearch = (searchQuery = query.trim()) => __awaiter(void 0, void 0, void 0, function* () {\n yield performSearch({ searchQuery, event: { name: 'Primary Field Search Submitted' } });\n });\n const handleFeedback = (response, searchQueryId, answerIndex) => __awaiter(void 0, void 0, void 0, function* () {\n if (!feedbackEndpoint)\n return;\n // Update UI state immediately\n answerListDispatch(setUserFeedback({\n feedback: response,\n index: answerIndex,\n }));\n try {\n yield sendFeedback({\n endpoint: feedbackEndpoint,\n searchQueryId,\n response,\n headers,\n conversationId: currentConversationId,\n });\n trackEvent === null || trackEvent === void 0 ? void 0 : trackEvent(response === 'accept' ? 'Answer Accepted' : 'Answer Rejected', {\n conversationId: currentConversationId,\n searchQueryId,\n });\n }\n catch (error) {\n console.error('Error sending feedback:', error);\n // Revert UI state on error\n answerListDispatch(clearUserFeedback({\n index: answerIndex,\n }));\n }\n });\n const handleFollowUpSearch = (customQuery) => __awaiter(void 0, void 0, void 0, function* () {\n // Use customQuery if provided, otherwise use the state value\n const queryToUse = customQuery !== undefined ? customQuery : followUpQuery;\n if (queryToUse.trim()) {\n setQuery(queryToUse);\n setFollowUpQuery('');\n yield performSearch({ searchQuery: queryToUse, event: { name: 'Follow-up Search Field Submitted' } });\n }\n });\n const handleSuggestedQuestionClick = (suggestion) => {\n if (suggestion.conversationId) {\n trackEvent === null || trackEvent === void 0 ? void 0 : trackEvent('Recent Conversation Clicked', {\n conversationId: currentConversationId,\n question: suggestion.question,\n });\n loadConversationById(suggestion.conversationId);\n return;\n }\n void performSearch({ searchQuery: suggestion.question, event: { name: 'Suggested Question Clicked' } });\n };\n const handleAutocompleteSuggestionClick = (suggestion) => {\n // autocomplete suggestions don't have conversation ids\n void performSearch({ searchQuery: suggestion.question, event: { name: 'Autocomplete Suggestion Clicked' } });\n };\n useEffect(() => {\n const handleScroll = () => {\n const isNearBottom = window.innerHeight + window.pageYOffset >= document.documentElement.scrollHeight - 100;\n setShowScrollArrow(!isNearBottom);\n };\n window.addEventListener('scroll', handleScroll);\n return () => window.removeEventListener('scroll', handleScroll);\n }, []);\n useEffect(() => {\n return () => {\n attachedImages.forEach((image) => URL.revokeObjectURL(image.preview));\n };\n }, [attachedImages]);\n const handleImageUpload = (event) => {\n const files = event.target.files;\n if (files) {\n const newImages = Array.from(files).map((file) => ({\n file,\n preview: URL.createObjectURL(file),\n }));\n setAttachedImages((prev) => [...prev, ...newImages]);\n }\n if (fileInputRef.current) {\n fileInputRef.current.value = '';\n }\n };\n const removeImage = (index) => {\n setAttachedImages((prev) => {\n URL.revokeObjectURL(prev[index].preview);\n return prev.filter((_, i) => i !== index);\n });\n };\n const handleCollectionChange = (collectionId) => {\n setCurrentCollectionId(collectionId);\n onCollectionChange === null || onCollectionChange === void 0 ? void 0 : onCollectionChange(collectionId);\n };\n // Listen for URL changes and reset state when conversation param is removed\n useEffect(() => {\n const handleUrlChange = () => {\n const urlParams = new URLSearchParams(window.location.search);\n const urlConversationId = urlParams.get('conversation');\n if (!urlConversationId) {\n setQuery('');\n setFollowUpQuery('');\n setShowResults(false);\n answerListDispatch(clearAll());\n setActiveAnswerIndex(0);\n setAttachedImages([]);\n if (primaryTextareaRef.current) {\n primaryTextareaRef.current.style.height = 'auto';\n }\n }\n };\n window.addEventListener('popstate', handleUrlChange);\n return () => window.removeEventListener('popstate', handleUrlChange);\n }, []);\n // Update the follow-up question click handler to use performSearch\n const handleFollowUpQuestionClick = (question) => {\n trackEvent === null || trackEvent === void 0 ? void 0 : trackEvent('Follow-up Question Clicked', { conversationId: currentConversationId, question });\n void performSearch({ searchQuery: question, event: { name: 'Follow-up Question Clicked' } });\n };\n // handle the next best action click\n const handleNextBestActionClick = ({ action, searchQueryId, query, answer }) => {\n trackEvent === null || trackEvent === void 0 ? void 0 : trackEvent('Next Best Action Clicked', {\n conversationId: currentConversationId,\n searchQueryId,\n action: action.label,\n });\n onNextBestActionClick === null || onNextBestActionClick === void 0 ? void 0 : onNextBestActionClick({ action, searchQueryId, query, answer });\n };\n return (React.createElement(\"div\", { className: cn('w-full relative h-dvh flex flex-col justify-between @container', className), \"data-name\": \"ChatSearch\" },\n (isWidgetMode || !showResults) && (React.createElement(Header, { \"data-name\": \"Header\", headerText: mergedTextConfig.headerText, onToggleSizeButtonClick: () => {\n onToggleSizeButtonClick === null || onToggleSizeButtonClick === void 0 ? void 0 : onToggleSizeButtonClick();\n }, onBackButtonClick: () => void createNewThread(), onCloseWidgetClick: () => onCloseWidget === null || onCloseWidget === void 0 ? void 0 : onCloseWidget(), className: \"@3xl:mb-4\" })),\n React.createElement(ScrollArea, { className: \"w-full relative h-auto flex-grow\", ref: containerRef },\n React.createElement(AnimatePresence, null, isLoadingConversation ? (React.createElement(LoadingConversation, null)) : !showResults ? (React.createElement(React.Fragment, null,\n React.createElement(motion.div, { key: \"search\", initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.5 }, className: \"w-full\" },\n React.createElement(\"div\", { className: \"pb-4 px-3 bg-primary @3xl:px-0 @3xl:bg-transparent\" },\n React.createElement(motion.div, { initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.5, delay: 0.4 } },\n React.createElement(PrimarySearch, { ref: primarySearchRef, query: query, onQueryChange: (value) => {\n setQuery(value);\n if (primaryTextareaRef.current) {\n adjustTextareaHeight(primaryTextareaRef.current);\n }\n }, onSearch: () => void handlePrimarySearch(), textConfig: mergedTextConfig, collections: collections, currentCollectionId: currentCollectionId, onCollectionChange: handleCollectionChange, disableImageAttachment: disableImageAttachment, attachedImages: attachedImages, onImageUpload: handleImageUpload, onRemoveImage: removeImage, isSearching: isSearching, autocompleteSuggestions: autocompleteSuggestions, onAutocompleteSuggestionSelect: handleAutocompleteSuggestionClick }))),\n React.createElement(Suggestions, { suggestions: initialSuggestions, onQuestionClick: handleSuggestedQuestionClick, title: mergedTextConfig.suggestionsTitle }),\n bodyActionButtons && bodyActionButtons.length > 0 && (React.createElement(\"div\", { className: \"mt-4 mb-4 px-3 @3xl:px-0\" },\n React.createElement(\"div\", { className: \"space-y-3\" },\n React.createElement(NextBestActions, { nextBestActions: bodyActionButtons || [], onActionClick: (action) => handleNextBestActionClick({\n action,\n searchQueryId: '',\n query: '',\n answer: '',\n }) }))))))) : (React.createElement(React.Fragment, null,\n React.createElement(motion.div, { key: \"results\", initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.5 }, className: \"w-full max-w-[100vw] space-y-4 p-3 md:p-4\" }, answers.map((answer, i) => (React.createElement(motion.div, { key: i, ref: (el) => (answerRefs.current[i] = el), initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.5, delay: i * 0.1 } },\n React.createElement(Answer, { index: i, blocks: answer.blocks, question: answer.question, state: answer.state, searchResults: answer.searchResults, searchQueryId: answer.searchQueryId, feedback: answer.feedback, onFeedback: (response) => void handleFeedback(response, answer.searchQueryId, i), disableFeedback: disableFeedback, textConfig: mergedTextConfig, redirectRules: redirectRules, nextBestActions: nextBestActions, actions: answer.actions, handleActionClick: handleNextBestActionClick, isLastAnswer: i === answers.length - 1 }),\n i === answers.length - 1 &&\n !disableFollowUpQuestions &&\n answer.followUpQuestions &&\n answer.state === 'completed' && (React.createElement(\"div\", { className: \"mt-4\" },\n React.createElement(FollowUpQuestions, { questions: answer.followUpQuestions, onQuestionClick: handleFollowUpQuestionClick })))))))))),\n showResults && answers.length > 1 && (React.createElement(\"div\", { className: \"hidden lg:block\" },\n React.createElement(TimelineNavigation, { questions: answers.map((a) => a.question), activeIndex: activeAnswerIndex, onNavigate: (index) => {\n setActiveAnswerIndex(index);\n scrollToAnswer(index);\n }, offset: offset }))),\n disclaimer && !(showResults && showFollowUp) && (React.createElement(\"div\", { className: \"mt-2 px-3 @3xl:px-0 text-xs text-dark-500 flex items-center gap-1 absolute bottom-12 justify-center text-center w-full\" },\n React.createElement(MemoizedIcon, { iconName: \"Info\", className: \"size-4\" }),\n disclaimer))),\n showResults && showFollowUp && (React.createElement(FollowUpSearchBar, { ref: followUpSearchRef, initialQuery: followUpQuery, onQueryChange: setFollowUpQuery, isSearching: isSearching, handleFollowUpSearch: handleFollowUpSearch, textConfig: mergedTextConfig })),\n showScrollArrow && showResults && React.createElement(ScrollToBottomArrow, { onClick: scrollToLastAnswer })));\n});\nChatSearchComponent.displayName = 'ChatSearch';\nconst ChatSearch = forwardRef((_a, ref) => {\n var { featureFlags } = _a, props = __rest(_a, [\"featureFlags\"]);\n return (React.createElement(FeatureFlagProvider, { flags: featureFlags },\n React.createElement(ChatSearchProvider, { searchPath: props.searchPath },\n React.createElement(ChatSearchComponent, Object.assign({}, props, { ref: ref })))));\n});\nChatSearch.displayName = 'ChatSearch';\nexport default ChatSearch;\n","export const useScrollManager = (answerRefs, containerRef) => {\n const scrollToLastAnswer = () => {\n requestAnimationFrame(() => {\n var _a;\n const lastAnswer = (_a = answerRefs.current) === null || _a === void 0 ? void 0 : _a[answerRefs.current.length - 1];\n const container = containerRef.current;\n if (lastAnswer && container) {\n const rect = lastAnswer.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const targetScroll = container.scrollTop + (rect.top - containerRect.top) - 80;\n container.scrollTo({ top: targetScroll, behavior: 'smooth' });\n }\n });\n };\n const scrollToAnswer = (index) => {\n requestAnimationFrame(() => {\n var _a;\n const answer = (_a = answerRefs.current) === null || _a === void 0 ? void 0 : _a[index];\n const container = containerRef.current;\n if (answer && container) {\n const rect = answer.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const targetScroll = container.scrollTop + (rect.top - containerRect.top) - 80;\n container.scrollTo({ top: targetScroll, behavior: 'smooth' });\n }\n });\n };\n return { scrollToLastAnswer, scrollToAnswer };\n};\n","import { useRef, useEffect } from 'react';\nimport { useChatSearch } from '../ChatSearchContext';\nexport const useSubscriptionManager = () => {\n const stateSubscribersRef = useRef([]);\n const { showResults, answers, isLoadingConversation, loadError } = useChatSearch();\n // Notify subscribers whenever the state changes\n useEffect(() => {\n const state = {\n showResults,\n answers,\n isLoading: isLoadingConversation,\n error: loadError,\n };\n stateSubscribersRef.current.forEach((callback) => callback(state));\n }, [showResults, answers, isLoadingConversation, loadError]);\n // Function to add a new subscriber\n const subscribeToStateChanges = (callback) => {\n stateSubscribersRef.current.push(callback);\n // Notify the new subscriber with the initial state\n callback({\n showResults,\n answers,\n isLoading: isLoadingConversation,\n error: loadError,\n });\n // Return an unsubscribe function\n return () => {\n stateSubscribersRef.current = stateSubscribersRef.current.filter((cb) => cb !== callback);\n };\n };\n return { subscribeToStateChanges };\n};\n","import { __rest } from \"tslib\";\nimport * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport { cn } from \"@/lib/utils\";\nconst Switch = React.forwardRef((_a, ref) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(SwitchPrimitives.Root, Object.assign({ className: cn(\"peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:!outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\", className) }, props, { ref: ref }),\n React.createElement(SwitchPrimitives.Thumb, { className: cn(\"pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\") })));\n});\nSwitch.displayName = SwitchPrimitives.Root.displayName;\nexport { Switch };\n","\"use client\";\nimport { __rest } from \"tslib\";\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cn } from \"@/lib/utils\";\nimport { Cross2Icon } from \"@radix-ui/react-icons\";\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\nconst DialogClose = DialogPrimitive.Close;\nconst DialogOverlay = React.forwardRef((_a, ref) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(DialogPrimitive.Overlay, Object.assign({ ref: ref, className: cn(\"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\", className) }, props)));\n});\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\nconst DialogContent = React.forwardRef((_a, ref) => {\n var { className, children } = _a, props = __rest(_a, [\"className\", \"children\"]);\n return (React.createElement(DialogPortal, null,\n React.createElement(DialogOverlay, null),\n React.createElement(DialogPrimitive.Content, Object.assign({ ref: ref, className: cn(\"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\", className) }, props),\n children,\n React.createElement(DialogPrimitive.Close, { className: \"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\" },\n React.createElement(Cross2Icon, { className: \"h-4 w-4\" }),\n React.createElement(\"span\", { className: \"sr-only\" }, \"Close\")))));\n});\nDialogContent.displayName = DialogPrimitive.Content.displayName;\nconst DialogHeader = (_a) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(\"div\", Object.assign({ className: cn(\"flex flex-col space-y-1.5 text-center sm:text-left\", className) }, props)));\n};\nDialogHeader.displayName = \"DialogHeader\";\nconst DialogFooter = (_a) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(\"div\", Object.assign({ className: cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className) }, props)));\n};\nDialogFooter.displayName = \"DialogFooter\";\nconst DialogTitle = React.forwardRef((_a, ref) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(DialogPrimitive.Title, Object.assign({ ref: ref, className: cn(\"text-lg font-semibold leading-none tracking-tight\", className) }, props)));\n});\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\nconst DialogDescription = React.forwardRef((_a, ref) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(DialogPrimitive.Description, Object.assign({ ref: ref, className: cn(\"text-sm text-muted-foreground\", className) }, props)));\n});\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\nexport { Dialog, DialogPortal, DialogOverlay, DialogTrigger, DialogClose, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription, };\n","import { __rest } from \"tslib\";\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { cn } from \"@/lib/utils\";\nimport { Dialog, DialogContent } from \"@/components/ui/dialog\";\nimport { MagnifyingGlassIcon } from \"@radix-ui/react-icons\";\nconst Command = React.forwardRef((_a, ref) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(CommandPrimitive, Object.assign({ ref: ref, className: cn(\"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\", className) }, props)));\n});\nCommand.displayName = CommandPrimitive.displayName;\nconst CommandDialog = (_a) => {\n var { children } = _a, props = __rest(_a, [\"children\"]);\n return (React.createElement(Dialog, Object.assign({}, props),\n React.createElement(DialogContent, { className: \"overflow-hidden p-0\" },\n React.createElement(Command, { className: \"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\" }, children))));\n};\nconst CommandInput = React.forwardRef((_a, ref) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(\"div\", { className: \"flex items-center border-b px-3\", \"cmdk-input-wrapper\": \"\" },\n React.createElement(MagnifyingGlassIcon, { className: \"mr-2 h-4 w-4 shrink-0 opacity-50\" }),\n React.createElement(CommandPrimitive.Input, Object.assign({ ref: ref, className: cn(\"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\", className) }, props))));\n});\nCommandInput.displayName = CommandPrimitive.Input.displayName;\nconst CommandList = React.forwardRef((_a, ref) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(CommandPrimitive.List, Object.assign({ ref: ref, className: cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className) }, props)));\n});\nCommandList.displayName = CommandPrimitive.List.displayName;\nconst CommandEmpty = React.forwardRef((props, ref) => (React.createElement(CommandPrimitive.Empty, Object.assign({ ref: ref, className: \"py-6 text-center text-sm\" }, props))));\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\nconst CommandGroup = React.forwardRef((_a, ref) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(CommandPrimitive.Group, Object.assign({ ref: ref, className: cn(\"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\", className) }, props)));\n});\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\nconst CommandSeparator = React.forwardRef((_a, ref) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(CommandPrimitive.Separator, Object.assign({ ref: ref, className: cn(\"-mx-1 h-px bg-border\", className) }, props)));\n});\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\nconst CommandItem = React.forwardRef((_a, ref) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(CommandPrimitive.Item, Object.assign({ ref: ref, className: cn(\"relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\", className) }, props)));\n});\nCommandItem.displayName = CommandPrimitive.Item.displayName;\nconst CommandShortcut = (_a) => {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n return (React.createElement(\"span\", Object.assign({ className: cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className) }, props)));\n};\nCommandShortcut.displayName = \"CommandShortcut\";\nexport { Command, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandShortcut, CommandSeparator, };\n","import * as React from 'react';\nimport { Check, CaretUpDown } from '@phosphor-icons/react';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '@/components/ui/command';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nexport function Combobox({ options, defaultValueLabel, placeholder, noResultsLabel, className, onOpenChange, onChange, }) {\n var _a;\n const [open, setOpen] = React.useState(false);\n const [value, setValue] = React.useState('');\n const triggerRef = React.useRef(null);\n const [triggerWidth, setTriggerWidth] = React.useState(null);\n // Update width when popover opens\n const handleOpenChange = (isOpen) => {\n if (isOpen && triggerRef.current) {\n setTriggerWidth(triggerRef.current.offsetWidth);\n }\n setOpen(isOpen);\n onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(isOpen);\n };\n return (React.createElement(Popover, { open: open, onOpenChange: handleOpenChange },\n React.createElement(PopoverTrigger, { asChild: true },\n React.createElement(Button, { ref: triggerRef, variant: \"outline\", role: \"combobox\", \"aria-expanded\": open, className: cn('w-full justify-between', className) },\n value ? (_a = options.find((option) => option.value === value)) === null || _a === void 0 ? void 0 : _a.label : defaultValueLabel,\n React.createElement(CaretUpDown, { className: \"opacity-50\" }))),\n React.createElement(PopoverContent, { className: \"p-0\", style: {\n width: triggerWidth ? `${triggerWidth}px` : 'auto',\n } },\n React.createElement(Command, null,\n React.createElement(CommandInput, { placeholder: placeholder }),\n React.createElement(CommandList, null,\n React.createElement(CommandEmpty, null, noResultsLabel),\n React.createElement(CommandGroup, null, options.map((option) => (React.createElement(CommandItem, { key: option.value, value: option.value, onSelect: (currentValue) => {\n setValue(currentValue === value ? '' : currentValue);\n setOpen(false);\n onChange === null || onChange === void 0 ? void 0 : onChange(currentValue);\n } },\n option.label,\n React.createElement(Check, { className: cn('ml-auto', value === option.value ? 'opacity-100' : 'opacity-0') }))))))))));\n}\n","import React, { useState, useEffect, forwardRef, useRef } from 'react';\nimport { Check, XCircle } from '@phosphor-icons/react';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu';\nexport var Operator;\n(function (Operator) {\n Operator[\"IS\"] = \"is\";\n Operator[\"IS_NOT\"] = \"is not\";\n Operator[\"CONTAINS\"] = \"contains\";\n Operator[\"DOES_NOT_CONTAIN\"] = \"does not contain\";\n Operator[\"STARTS_WITH\"] = \"starts with\";\n})(Operator || (Operator = {}));\nconst Filter = forwardRef(({ filter, sourceOptions, rules, onSourceChange, onRemoveFilter, onFilterChange, selectPlaceholder = 'Select a value', customValuePlaceholder = 'Enter custom value', customValueButtonLabel = 'Done', sourceFirstMessage = 'Please select a source first', }, ref) => {\n var _a, _b, _c, _d;\n // State\n const [internalFilter, setInternalFilter] = useState({\n id: filter.id,\n source: filter.source,\n operator: filter.operator || Operator.IS,\n value: filter.value,\n });\n const [inputValue, setInputValue] = useState('');\n const [openDropdownType, setOpenDropdownType] = useState(null);\n const inputRef = useRef(null);\n // Get current rules for selected source\n const currentRules = internalFilter.source ? rules[internalFilter.source] : undefined;\n const operatorOptions = (currentRules === null || currentRules === void 0 ? void 0 : currentRules.operators) || [];\n let inputType = (currentRules === null || currentRules === void 0 ? void 0 : currentRules.inputType) || 'dropdown';\n if (internalFilter.operator === Operator.CONTAINS || internalFilter.operator === Operator.DOES_NOT_CONTAIN) {\n inputType = 'custom';\n }\n const valueOptions = (currentRules === null || currentRules === void 0 ? void 0 : currentRules.getValueOptions) ? currentRules.getValueOptions() : [];\n // Auto-focus input when dropdown opens and custom input is needed\n useEffect(() => {\n if (openDropdownType === 'value' && inputType === 'custom') {\n const timeoutId = setTimeout(() => { var _a; return (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, 50);\n return () => clearTimeout(timeoutId);\n }\n return undefined;\n }, [openDropdownType, inputType]);\n // Sync with external state\n useEffect(() => {\n setInternalFilter({\n id: filter.id,\n source: filter.source,\n operator: filter.operator || Operator.IS,\n value: filter.value,\n });\n }, [filter]);\n // Handle field updates\n const updateFilterField = (field, value) => {\n var _a, _b;\n const newFilter = Object.assign(Object.assign({}, internalFilter), { [field]: value });\n // Special handling for source changes\n if (field === 'source') {\n const sourceRules = rules[value];\n newFilter.operator = (_a = sourceRules === null || sourceRules === void 0 ? void 0 : sourceRules.operators[0]) === null || _a === void 0 ? void 0 : _a.id;\n // Do NOT auto-select the first value option; require explicit user selection\n newFilter.value = '';\n }\n // If operator changes, also clear value if inputType is dropdown\n if (field === 'operator') {\n if (internalFilter.source) {\n const sourceRules = rules[internalFilter.source];\n if ((sourceRules === null || sourceRules === void 0 ? void 0 : sourceRules.inputType) === 'dropdown') {\n newFilter.value = '';\n }\n }\n }\n setInternalFilter(newFilter);\n // Trigger onChange if filter is complete\n const isComplete = newFilter.source && newFilter.operator && ((_b = newFilter.value) === null || _b === void 0 ? void 0 : _b.trim());\n if (isComplete)\n onFilterChange(newFilter);\n setOpenDropdownType(null);\n };\n // Handle custom value submission\n const handleCustomValueSubmit = () => {\n if (inputValue.trim()) {\n const newFilter = Object.assign(Object.assign({}, internalFilter), { value: inputValue.trim() });\n setInternalFilter(newFilter);\n setInputValue('');\n setOpenDropdownType(null);\n if (newFilter.source && newFilter.operator && newFilter.value) {\n onFilterChange(newFilter);\n }\n }\n };\n // Tab trap handlers\n const handleKeyDown = (e, isInput) => {\n var _a;\n if (e.key === 'Escape') {\n setOpenDropdownType(null);\n return;\n }\n if (e.key === 'Tab') {\n if (isInput && !e.shiftKey) {\n e.preventDefault();\n const button = document.querySelector('[data-custom-submit-button]');\n button === null || button === void 0 ? void 0 : button.focus();\n }\n else if (!isInput) {\n e.preventDefault();\n (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n }\n }\n };\n return (React.createElement(\"div\", { className: \"inline-flex items-center rounded-full border border-foreground h-8 overflow-visible\", ref: ref },\n React.createElement(DropdownMenu, { open: openDropdownType === 'source', onOpenChange: (open) => setOpenDropdownType(open ? 'source' : null), modal: false },\n React.createElement(DropdownMenuTrigger, { asChild: true },\n React.createElement(\"button\", { type: \"button\", className: \"flex items-center px-2 py-1 text-sm font-bold border-r border-[#a3a3a3] hover:bg-black/5 text-foreground rounded-l-full\" }, ((_a = sourceOptions.find((opt) => opt.id === internalFilter.source)) === null || _a === void 0 ? void 0 : _a.label) ||\n ((_b = sourceOptions[0]) === null || _b === void 0 ? void 0 : _b.label) ||\n selectPlaceholder)),\n React.createElement(DropdownMenuContent, { align: \"start\", className: \"w-48\" }, sourceOptions.map((option) => (React.createElement(DropdownMenuItem, { key: option.id, className: \"flex items-center\", onSelect: () => {\n updateFilterField('source', option.id);\n onSourceChange === null || onSourceChange === void 0 ? void 0 : onSourceChange(option.id);\n } },\n option.id === internalFilter.source && React.createElement(Check, { size: 14, className: \"mr-2\" }),\n option.label))))),\n React.createElement(DropdownMenu, { open: openDropdownType === 'operator', onOpenChange: (open) => setOpenDropdownType(open ? 'operator' : null), modal: false },\n React.createElement(DropdownMenuTrigger, { asChild: true },\n React.createElement(\"button\", { type: \"button\", className: \"flex items-center px-2 py-1 text-sm border-r border-[#a3a3a3] hover:bg-black/5\" }, ((_c = operatorOptions.find((opt) => opt.id === internalFilter.operator)) === null || _c === void 0 ? void 0 : _c.label) || selectPlaceholder)),\n React.createElement(DropdownMenuContent, { align: \"start\", className: \"w-48\" }, operatorOptions.map((option) => (React.createElement(DropdownMenuItem, { key: option.id, className: \"flex items-center\", onSelect: () => updateFilterField('operator', option.id) },\n option.id === internalFilter.operator && React.createElement(Check, { size: 14, className: \"mr-2\" }),\n option.label))))),\n React.createElement(DropdownMenu, { open: openDropdownType === 'value', onOpenChange: (open) => setOpenDropdownType(open ? 'value' : null), modal: false },\n React.createElement(DropdownMenuTrigger, { asChild: true },\n React.createElement(\"button\", { type: \"button\", className: \"flex items-center px-2 py-1 text-sm font-bold hover:bg-black/5\" }, ((_d = valueOptions.find((opt) => opt.id === internalFilter.value)) === null || _d === void 0 ? void 0 : _d.label) ||\n internalFilter.value ||\n selectPlaceholder)),\n React.createElement(DropdownMenuContent, { align: \"start\", className: \"w-64\" },\n inputType === 'custom' && (React.createElement(\"form\", { className: \"p-3\", onSubmit: (e) => {\n e.preventDefault();\n handleCustomValueSubmit();\n } },\n React.createElement(Input, { ref: inputRef, type: \"text\", value: inputValue, onChange: (e) => setInputValue(e.target.value), placeholder: customValuePlaceholder, className: \"mb-2\", onKeyDown: (e) => handleKeyDown(e, true) }),\n React.createElement(Button, { type: \"submit\", variant: \"dark\", className: \"w-full\", onKeyDown: (e) => handleKeyDown(e, false), \"data-custom-submit-button\": true }, customValueButtonLabel))),\n inputType === 'dropdown' && (React.createElement(React.Fragment, null, internalFilter.source ? (valueOptions.map((option) => (React.createElement(DropdownMenuItem, { key: option.id, className: \"flex items-center\", onSelect: () => updateFilterField('value', option.id) },\n option.id === internalFilter.value && React.createElement(Check, { size: 14, className: \"mr-2\" }),\n option.label)))) : (React.createElement(\"div\", { className: \"p-3 text-sm text-gray-500\" }, sourceFirstMessage)))))),\n React.createElement(Button, { type: \"button\", variant: \"ghost\", size: \"sm\", onClick: () => {\n setInternalFilter({ id: filter.id });\n setOpenDropdownType(null);\n onRemoveFilter(filter.id);\n }, className: \"p-2 hover:bg-black/10 rounded-none rounded-r-full\" },\n React.createElement(XCircle, { size: 16, weight: \"fill\" }))));\n});\nFilter.displayName = 'Filter';\nexport { Filter };\n","import React, { useState } from 'react';\nimport { Plus } from '@phosphor-icons/react';\nimport { createId } from '@paralleldrive/cuid2';\nimport { Filter, Operator } from './filter';\nimport { Button } from '../ui/button';\nimport { cn } from '@/lib/utils';\nconst Filters = ({ filters, onFilterChange, onFilterRemove, sourceOptions, rules, className }) => {\n const [internalFilters, setInternalFilters] = useState(filters || []);\n const handleAddFilter = () => {\n var _a, _b;\n const newFilter = { id: createId(), source: (_b = (_a = sourceOptions[0]) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : '', operator: Operator.IS, value: '' };\n setInternalFilters([...internalFilters, newFilter]);\n };\n const handleRemoveFilter = (filter) => {\n setInternalFilters(internalFilters.filter((f) => f.id !== filter.id));\n onFilterRemove(filter.id);\n };\n return (React.createElement(\"fieldset\", { className: cn('flex flex-wrap gap-2', className) },\n React.createElement(\"legend\", { className: \"sr-only\" }, \"Filters\"), internalFilters === null || internalFilters === void 0 ? void 0 :\n internalFilters.map((filter) => (React.createElement(Filter, { key: filter.id, filter: filter, sourceOptions: sourceOptions, rules: rules, onRemoveFilter: () => handleRemoveFilter(filter), onFilterChange: onFilterChange }))),\n React.createElement(Button, { onClick: handleAddFilter, variant: \"ghost\", className: \"border border-foreground rounded-full gap-1\", size: \"sm\" },\n React.createElement(Plus, { size: 16 }),\n \"Add filter\")));\n};\nexport { Filters };\n"],"names":["customColor","cssVariable","fallbackColor","opacityVariable","opacityValue","undefined","dark","DEFAULT","BrainfishColors","primary","foreground","orange","yellow","green","blue","purple","pink","red","__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","apply","cn","inputs","twMerge","clsx","isAnswerUncertain","response","uncertaintyPatternsByLanguage","en","es","fr","de","it","pt","nl","pl","ru","ja","ko","zh","earliestMatch","language","patterns","entries","pattern","match","index","uncertain","SuppressedError","TooltipProvider","_a","delayDuration","props","React","createElement","TooltipPrimitive","Provider","assign","Tooltip","Root","TooltipTrigger","Trigger","TooltipContent","forwardRef","ref","className","sideOffset","background","textColor","borderColor","style","Portal","Content","backgroundColor","color","borderWidth","borderStyle","setRef","current","createSlot","ownerName","SlotClone","createSlotClone","Slot2","forwardedRef","children","slotProps","childrenArray","Children","toArray","slottable","find","isSlottable","newElement","newChildren","map","child","count","only","isValidElement","jsx","cloneElement","displayName","Slot","childrenRef","element","getter","getOwnPropertyDescriptor","get","mayWarn","isReactWarning","getElementRef","props2","childProps","overrideProps","propName","slotPropValue","childPropValue","test","args","filter","Boolean","join","mergeProps","type","Fragment","refs","node","hasCleanup","cleanups","cleanup","composeRefs","SLOTTABLE_IDENTIFIER","Symbol","__radixId","buttonVariants","cva","variants","variant","default","destructive","outline","secondary","ghost","link","size","sm","lg","icon","defaultVariants","Button","asChild","Comp","Suggestions","suggestions","onQuestionClick","title","suggestion","key","id","onClick","messageCount","question","Input","labelVariants","Label","LabelPrimitive","Textarea","Select","SelectPrimitive","SelectValue","Value","SelectTrigger","Icon","CaretDown","SelectContent","position","appendToBody","container","document","body","Viewport","SelectItem","Item","ItemIndicator","Check","ItemText","SimpleSelect","options","onChange","placeholder","disabled","SelectComponent","onValueChange","newValue","option","label","Calendar","classNames","showOutsideDays","DayPicker","Separator","Popover","PopoverPrimitive","PopoverTrigger","PopoverAnchor","Anchor","PopoverContent","align","DatePicker","date","setDate","CalendarIcon","format","mode","selected","onSelect","ActionInputFormBlock","block","formSchema","useMemo","schema","_b","newSchema","structuredClone","errorMessage","property","properties","required","includes","minLength","patchSchemaForAjvResolver","initialValues","state","isReady","isProcessing","isCompleted","defaultValues","reduce","acc","trim","register","control","handleSubmit","formState","errors","useForm","resolver","ajvResolver","removeAdditional","formInputs","input","name","inputSchema","ui","labelText","description","error","message","descriptionText","String","inputType","registerOptions","valueAsNumber","htmlFor","Controller","render","field","Date","toISOString","rows","maxLength","oneOf","const","XCircle","weight","onSubmit","preventDefault","ActionButtonsBlock","_block","programmingLanguages","javascript","python","java","c","cpp","ruby","php","swift","kotlin","typescript","go","perl","rust","scala","haskell","lua","shell","sql","html","css","HighlighterComponent","Prism","CodeBlock","memo","isCopied","setIsCopied","useState","navigator","clipboard","writeText","setTimeout","console","CheckCircle","Clipboard","fileExtension","fileName","lowercase","chars","charAt","Math","floor","random","toLowerCase","generateRandomString","blob","Blob","url","URL","createObjectURL","download","href","display","appendChild","click","removeChild","revokeObjectURL","Download","a11yDark","PreTag","wrapLongLines","customStyle","margin","borderTopLeftRadius","borderTopRightRadius","Frame","src","border","width","height","isLoaded","setIsLoaded","iframeLoaded","setIframeLoaded","useEffect","mounted","sandbox","loading","allowFullScreen","onLoad","Loom","normalizedUrl","attrs","replace","Supademo","Typeform","Vimeo","matches","videoId","hId","embedUrl","Wistia","urlRegexes","regex","extractMatches","domain","isMatch","some","YOUTUBE_URL_REGEX","YouTube","extractVideoId","timestamp","searchParams","seconds","parseInt","Number","isNaN","extractTimestamp","syncEmbedComponents","Youtube","EmbedComponent","matched","components","Embed","Component","useMatchedComponent","MemoizedReactMarkdown","ReactMarkdown","prevProps","nextProps","isStreaming","config","startOnLoad","theme","securityLevel","fontFamily","secure","MermaidDiagram","content","svg","setSvg","setError","containerRef","useRef","isInitialized","setIsInitialized","mermaid","initialize","err","initializeMermaid","toString","substr","dangerouslySetInnerHTML","__html","ZoomableImage","alt","isZoomed","setIsZoomed","showFullCaption","setShowFullCaption","imageError","setImageError","isLoading","setIsLoading","dimensions","setDimensions","imgRef","toggleZoom","maxHeight","onError","naturalWidth","naturalHeight","aspectRatio","min","ArrowsOut","onMouseEnter","onMouseLeave","AnimatePresence","motion","div","initial","opacity","animate","exit","scale","FormattedMessage","redirectRules","displayContent","setDisplayContent","uncertaintyFallbackText","strippedContent","memoizedRedirectRules","rewriteUrl","urlObj","pathname","rule","matchResult","source","decode","decodeURIComponent","matchFn","newPath","compile","destination","encode","encodeURIComponent","toPath","params","remarkPlugins","remarkGfm","rehypePlugins","rehypeRaw","code","inline","exec","marker","table","th","td","a","originalHref","childrenText","isTextSameAsHref","rewrittenHref","newProps","embedComponent","displayChildren","target","rel","pre","img","li","ul","ol","strong","h1","h2","h3","h4","h5","h6","MarkdownTextBlock","text","AnswerBlock","markdownTextBlock","createId","isMarkdownTextBlock","isActionInputFormBlock","PhosphorIcon","iconName","IconComponent","lazy","import","module","Suspense","fallback","MemoizedIcon","MotionButton","NextBestActions","nextBestActions","onActionClick","y","action","handleClick","x","transition","delay","ActionType","NextBestActionType","AnswerActions","actions","isLastAnswer","handleActionClick","searchQueryId","answer","hasActions","hasNextBestActions","showAnswerActions","mappedActions","mapping","CallPhone","Phone","getValue","phoneNumber","getLabel","SendEmail","Email","to","OpenUrl","Link","getActionMapping","filteredNextBestActions","mappedAction","concat","query","Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","Feedback","feedback","onFeedback","textConfig","showHearts","setShowHearts","handleFeedback","Array","from","_","cos","PI","sin","rotate","duration","ease","times","Heart","strokeWidth","ThumbsUp","positiveAnswerText","ThumbsDown","negativeAnswerText","AnswersActions","clearAll","appendAnswerChunk","payload","setAnswerError","completeAnswer","markAsUncertain","uncertaintyText","getActionInputs","searchIntentId","actionId","addActionButtons","getTargetAnswer","draft","at","getLastTextBlock","blocks","initialState","reducer","push","answers","isUncertain","searchResults","results","actionInputFormBlock","blockIndex","findIndex","splice","followUpQuestions","questions","Error","CONVERSATION_PARAM","ChatSearchContext","createContext","ChatSearchProvider","searchPath","setQuery","queryId","setQueryId","followUpQuery","setFollowUpQuery","isSearching","setIsSearching","showResults","setShowResults","answerListDispatch","useImmerReducer","activeAnswerIndex","setActiveAnswerIndex","isLoadingConversation","setIsLoadingConversation","loadError","setLoadError","showMobileCloseWidgetButton","setShowMobileCloseWidgetButton","conversationId","setConversationId","clearConversationId","useSearchParam","_conversationId","_setConversationId","useCallback","window","location","set","delete","newUrl","history","replaceState","useConversationId","contextValue","useChatSearch","context","useContext","useIsChatSearchDirty","defaultRetryOptions","maxRetries","baseDelay","shouldRetry","TypeError","apiError","status","globalRetryOptions","globalFallbackConfig","emptyResponse","errorResponse","ms","this","makeRequest","retry","headers","isStream","fetchConfig","retryOptions","fallbackOptions","attempt","fetch","JSON","stringify","ok","data","json","keys","emptyError","catch","shouldAttemptRetry","warn","jitter","pow","searchRetryConfig","answerRetryConfig","fetchAnswerStream","endpoint","method","useConversationLoader","loadConversationEndpoint","mergedTextConfig","loadConversationById","controller","AbortController","signal","loadConversation","split","setAnswers","errorText","finally","abort","useEffectOnce","cancel","log","useAccessibleColor","primaryColorVar","primaryForegroundVar","foregroundColor","setForegroundColor","isDarkMode","setIsDarkMode","documentElement","classList","contains","observer","MutationObserver","observe","attributes","attributeFilter","disconnect","useDarkMode","rgbMatch","getComputedStyle","getPropertyValue","luminance","rgb","r","g","b","R","G","B","v","getLuminance","slice","GeneratingStar","strokeColor","viewBox","fill","xmlns","d","stroke","strokeLinecap","strokeLinejoin","Answer","disableFeedback","isExpanded","setIsExpanded","isFetchingInitialAnswer","isFetchingSearchResults","isIdle","handleCopy","textArea","focus","select","execCommand","fallbackErr","Copy","loadingSearchText","loadingAnswerText","open","onOpenChange","ArrowSquareOut","FollowUpQuestions","CaretRight","TimelineNavigation","activeIndex","onNavigate","offset","prevActiveIndex","setPrevActiveIndex","totalItems","visibleIndexes","indexes","lastAddedIndex","addIndex","max","getVisibleIndexes","left","role","stiffness","damping","indexOrEllipsis","arrayIndex","ArrowsVertical","layout","onKeyDown","side","ScrollToBottomArrow","ArrowDown","DropdownMenu","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuGroup","Group","DropdownMenuPortal","DropdownMenuSub","Sub","DropdownMenuRadioGroup","RadioGroup","DropdownMenuSubTrigger","inset","SubTrigger","ChevronRightIcon","DropdownMenuSubContent","SubContent","DropdownMenuContent","DropdownMenuItem","DropdownMenuCheckboxItem","checked","CheckboxItem","CheckIcon","DropdownMenuRadioItem","RadioItem","DotFilledIcon","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","PrimarySearch","onQueryChange","onSearch","collections","currentCollectionId","onCollectionChange","disableImageAttachment","attachedImages","onImageUpload","onRemoveImage","autocompleteSuggestions","onAutocompleteSuggestionSelect","fileInputRef","showSuggestions","setShowSuggestions","handleClickOutside","event","closest","addEventListener","removeEventListener","shouldShowSuggestions","itemVariants","hidden","visible","MagnifyingGlass","textarea","scrollHeight","shiftKey","onFocus","searchPlaceholder","image","preview","X","allDocumentsText","collection","Circle","accept","multiple","attachImageText","Image","ArrowRight","transformOrigin","mass","tabIndex","staggerChildren","delayChildren","FollowUpSearchBar","initialQuery","handleFollowUpSearch","localQuery","setLocalQuery","followUpInputRef","footer","styles","instance","onBlur","currentQuery","followUpPlaceholder","Header","headerText","onToggleSizeButtonClick","onBackButtonClick","onCloseWidgetClick","isDirty","hideExpandButton","ArrowLeft","prev","ArrowsInSimple","ArrowsOutSimple","defaultTextConfig","LoadingConversation","FeatureFlagContext","FeatureFlagProvider","flags","useAutocomplete","collectionId","setSuggestions","debouncedQuery","debouncedValue","setDebouncedValue","handler","clearTimeout","useDebounce","fetchSuggestions","fetchAutocomplete","ScrollArea","ScrollAreaPrimitive","ScrollBar","Corner","orientation","ScrollAreaScrollbar","ScrollAreaThumb","ChatSearchComponent","initialSuggestions","selectedCollectionId","searchEndpoint","answerStreamEndpoint","feedbackEndpoint","autocompleteEndpoint","disableFollowUpQuestions","disclaimer","followUpQuestionsEndpoint","trackEvent","onCloseWidget","isWidgetMode","bodyActionButtons","onNextBestActionClick","userData","attributesSigned","currentConversationId","setCurrentConversationId","clearCurrentConversationId","showScrollArrow","setShowScrollArrow","setAttachedImages","setCurrentCollectionId","showFollowUp","setShowFollowUp","primaryTextareaRef","answerRefs","primarySearchRef","followUpSearchRef","scrollToLastAnswer","scrollToAnswer","requestAnimationFrame","lastAnswer","rect","getBoundingClientRect","containerRect","targetScroll","scrollTop","top","scrollTo","behavior","useScrollManager","subscribeToStateChanges","stateSubscribersRef","forEach","callback","cb","useSubscriptionManager","loadFollowUpQuestions","fetchFollowUpQuestions","processAnswerStream","reader","onFirstEvent","_c","_d","accumulatedAnswer","isFirstEvent","read","lines","TextDecoder","line","startsWith","parse","uncertaintyCheck","values","parameters","generateAnswerForAction","_e","releaseLock","generateAnswerForQuery","_f","getReader","setFollowUpQuestions","_g","invokeAction","handleSearchApiCall","searchQuery","searchResponse","limit","searchApi","setSearchResults","performSearch","_h","appendNewAnswer","metaData","createNewThread","firstQuery","oldConversationId","useImperativeHandle","showFollowUpThread","show","focusSearchField","showCloseButton","showButton","answerIndex","setUserFeedback","sendFeedback","clearUserFeedback","handleScroll","isNearBottom","innerHeight","pageYOffset","handleUrlChange","URLSearchParams","search","handleFollowUpQuestionClick","handleNextBestActionClick","el","handlePrimarySearch","files","newImages","file","suggestionsTitle","customQuery","queryToUse","ChatSearch","featureFlags","Switch","SwitchPrimitives","Thumb","Dialog","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","Close","DialogOverlay","Overlay","DialogContent","Cross2Icon","DialogHeader","DialogFooter","DialogTitle","Title","DialogDescription","Description","Command","CommandPrimitive","CommandDialog","CommandInput","MagnifyingGlassIcon","CommandList","List","CommandEmpty","Empty","CommandGroup","CommandSeparator","CommandItem","CommandShortcut","Combobox","defaultValueLabel","noResultsLabel","setOpen","setValue","triggerRef","triggerWidth","setTriggerWidth","isOpen","offsetWidth","CaretUpDown","currentValue","Operator","Filter","sourceOptions","rules","onSourceChange","onRemoveFilter","onFilterChange","selectPlaceholder","customValuePlaceholder","customValueButtonLabel","sourceFirstMessage","internalFilter","setInternalFilter","operator","IS","inputValue","setInputValue","openDropdownType","setOpenDropdownType","inputRef","currentRules","operatorOptions","operators","CONTAINS","DOES_NOT_CONTAIN","valueOptions","getValueOptions","timeoutId","updateFilterField","newFilter","sourceRules","handleKeyDown","isInput","button","querySelector","modal","opt","handleCustomValueSubmit","Filters","filters","onFilterRemove","internalFilters","setInternalFilters","f","handleRemoveFilter","Plus"],"mappings":"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","x_google_ignoreList":[11,14,15]}
|