{"version":3,"file":"Selector.Bqb2boTp.js","sources":["../../../../../../node_modules/fuse.js/dist/fuse.mjs","../../../../../../src/lib/components/icons/Check.svelte","../../../../../../src/lib/components/icons/Search.svelte","../../../../../../src/lib/components/icons/ChatBubbleOval.svelte","../../../../../../src/lib/components/chat/ModelSelector/Selector.svelte"],"sourcesContent":["/**\n * Fuse.js v7.0.0 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2023 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction isArray(value) {\n return !Array.isArray\n ? getTag(value) === '[object Array]'\n : Array.isArray(value)\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\nconst INFINITY = 1 / 0;\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value\n }\n let result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result\n}\n\nfunction toString(value) {\n return value == null ? '' : baseToString(value)\n}\n\nfunction isString(value) {\n return typeof value === 'string'\n}\n\nfunction isNumber(value) {\n return typeof value === 'number'\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\nfunction isBoolean(value) {\n return (\n value === true ||\n value === false ||\n (isObjectLike(value) && getTag(value) == '[object Boolean]')\n )\n}\n\nfunction isObject(value) {\n return typeof value === 'object'\n}\n\n// Checks if `value` is object-like.\nfunction isObjectLike(value) {\n return isObject(value) && value !== null\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null\n}\n\nfunction isBlank(value) {\n return !value.trim().length\n}\n\n// Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\nfunction getTag(value) {\n return value == null\n ? value === undefined\n ? '[object Undefined]'\n : '[object Null]'\n : Object.prototype.toString.call(value)\n}\n\nconst EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\n\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\n\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) =>\n `Invalid value for key ${key}`;\n\nconst PATTERN_LENGTH_TOO_LARGE = (max) =>\n `Pattern length exceeds max of ${max}.`;\n\nconst MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\n\nconst INVALID_KEY_WEIGHT_VALUE = (key) =>\n `Property 'weight' in key '${key}' must be a positive integer`;\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nclass KeyStore {\n constructor(keys) {\n this._keys = [];\n this._keyMap = {};\n\n let totalWeight = 0;\n\n keys.forEach((key) => {\n let obj = createKey(key);\n\n this._keys.push(obj);\n this._keyMap[obj.id] = obj;\n\n totalWeight += obj.weight;\n });\n\n // Normalize weights so that their sum is equal to 1\n this._keys.forEach((key) => {\n key.weight /= totalWeight;\n });\n }\n get(keyId) {\n return this._keyMap[keyId]\n }\n keys() {\n return this._keys\n }\n toJSON() {\n return JSON.stringify(this._keys)\n }\n}\n\nfunction createKey(key) {\n let path = null;\n let id = null;\n let src = null;\n let weight = 1;\n let getFn = null;\n\n if (isString(key) || isArray(key)) {\n src = key;\n path = createKeyPath(key);\n id = createKeyId(key);\n } else {\n if (!hasOwn.call(key, 'name')) {\n throw new Error(MISSING_KEY_PROPERTY('name'))\n }\n\n const name = key.name;\n src = name;\n\n if (hasOwn.call(key, 'weight')) {\n weight = key.weight;\n\n if (weight <= 0) {\n throw new Error(INVALID_KEY_WEIGHT_VALUE(name))\n }\n }\n\n path = createKeyPath(name);\n id = createKeyId(name);\n getFn = key.getFn;\n }\n\n return { path, id, weight, src, getFn }\n}\n\nfunction createKeyPath(key) {\n return isArray(key) ? key : key.split('.')\n}\n\nfunction createKeyId(key) {\n return isArray(key) ? key.join('.') : key\n}\n\nfunction get(obj, path) {\n let list = [];\n let arr = false;\n\n const deepGet = (obj, path, index) => {\n if (!isDefined(obj)) {\n return\n }\n if (!path[index]) {\n // If there's no path left, we've arrived at the object we care about.\n list.push(obj);\n } else {\n let key = path[index];\n\n const value = obj[key];\n\n if (!isDefined(value)) {\n return\n }\n\n // If we're at the last value in the path, and if it's a string/number/bool,\n // add it to the list\n if (\n index === path.length - 1 &&\n (isString(value) || isNumber(value) || isBoolean(value))\n ) {\n list.push(toString(value));\n } else if (isArray(value)) {\n arr = true;\n // Search each item in the array.\n for (let i = 0, len = value.length; i < len; i += 1) {\n deepGet(value[i], path, index + 1);\n }\n } else if (path.length) {\n // An object. Recurse further.\n deepGet(value, path, index + 1);\n }\n }\n };\n\n // Backwards compatibility (since path used to be a string)\n deepGet(obj, isString(path) ? path.split('.') : path, 0);\n\n return arr ? list : list[0]\n}\n\nconst MatchOptions = {\n // Whether the matches should be included in the result set. When `true`, each record in the result\n // set will include the indices of the matched characters.\n // These can consequently be used for highlighting purposes.\n includeMatches: false,\n // When `true`, the matching function will continue to the end of a search pattern even if\n // a perfect match has already been located in the string.\n findAllMatches: false,\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength: 1\n};\n\nconst BasicOptions = {\n // When `true`, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n isCaseSensitive: false,\n // When true, the matching function will continue to the end of a search pattern even if\n includeScore: false,\n // List of properties that will be searched. This also supports nested properties.\n keys: [],\n // Whether to sort the result list, by score\n shouldSort: true,\n // Default sort function: sort by ascending score, ascending index\n sortFn: (a, b) =>\n a.score === b.score ? (a.idx < b.idx ? -1 : 1) : a.score < b.score ? -1 : 1\n};\n\nconst FuzzyOptions = {\n // Approximately where in the text is the pattern expected to be found?\n location: 0,\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold: 0.6,\n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance: 100\n};\n\nconst AdvancedOptions = {\n // When `true`, it enables the use of unix-like search commands\n useExtendedSearch: false,\n // The get function to use when fetching an object's properties.\n // The default will search nested paths *ie foo.bar.baz*\n getFn: get,\n // When `true`, search will ignore `location` and `distance`, so it won't matter\n // where in the string the pattern appears.\n // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n ignoreLocation: false,\n // When `true`, the calculation for the relevance score (used for sorting) will\n // ignore the field-length norm.\n // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n ignoreFieldNorm: false,\n // The weight to determine how much field length norm effects scoring.\n fieldNormWeight: 1\n};\n\nvar Config = {\n ...BasicOptions,\n ...MatchOptions,\n ...FuzzyOptions,\n ...AdvancedOptions\n};\n\nconst SPACE = /[^ ]+/g;\n\n// Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\nfunction norm(weight = 1, mantissa = 3) {\n const cache = new Map();\n const m = Math.pow(10, mantissa);\n\n return {\n get(value) {\n const numTokens = value.match(SPACE).length;\n\n if (cache.has(numTokens)) {\n return cache.get(numTokens)\n }\n\n // Default function is 1/sqrt(x), weight makes that variable\n const norm = 1 / Math.pow(numTokens, 0.5 * weight);\n\n // In place of `toFixed(mantissa)`, for faster computation\n const n = parseFloat(Math.round(norm * m) / m);\n\n cache.set(numTokens, n);\n\n return n\n },\n clear() {\n cache.clear();\n }\n }\n}\n\nclass FuseIndex {\n constructor({\n getFn = Config.getFn,\n fieldNormWeight = Config.fieldNormWeight\n } = {}) {\n this.norm = norm(fieldNormWeight, 3);\n this.getFn = getFn;\n this.isCreated = false;\n\n this.setIndexRecords();\n }\n setSources(docs = []) {\n this.docs = docs;\n }\n setIndexRecords(records = []) {\n this.records = records;\n }\n setKeys(keys = []) {\n this.keys = keys;\n this._keysMap = {};\n keys.forEach((key, idx) => {\n this._keysMap[key.id] = idx;\n });\n }\n create() {\n if (this.isCreated || !this.docs.length) {\n return\n }\n\n this.isCreated = true;\n\n // List is Array<String>\n if (isString(this.docs[0])) {\n this.docs.forEach((doc, docIndex) => {\n this._addString(doc, docIndex);\n });\n } else {\n // List is Array<Object>\n this.docs.forEach((doc, docIndex) => {\n this._addObject(doc, docIndex);\n });\n }\n\n this.norm.clear();\n }\n // Adds a doc to the end of the index\n add(doc) {\n const idx = this.size();\n\n if (isString(doc)) {\n this._addString(doc, idx);\n } else {\n this._addObject(doc, idx);\n }\n }\n // Removes the doc at the specified index of the index\n removeAt(idx) {\n this.records.splice(idx, 1);\n\n // Change ref index of every subsquent doc\n for (let i = idx, len = this.size(); i < len; i += 1) {\n this.records[i].i -= 1;\n }\n }\n getValueForItemAtKeyId(item, keyId) {\n return item[this._keysMap[keyId]]\n }\n size() {\n return this.records.length\n }\n _addString(doc, docIndex) {\n if (!isDefined(doc) || isBlank(doc)) {\n return\n }\n\n let record = {\n v: doc,\n i: docIndex,\n n: this.norm.get(doc)\n };\n\n this.records.push(record);\n }\n _addObject(doc, docIndex) {\n let record = { i: docIndex, $: {} };\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n this.keys.forEach((key, keyIndex) => {\n let value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);\n\n if (!isDefined(value)) {\n return\n }\n\n if (isArray(value)) {\n let subRecords = [];\n const stack = [{ nestedArrIndex: -1, value }];\n\n while (stack.length) {\n const { nestedArrIndex, value } = stack.pop();\n\n if (!isDefined(value)) {\n continue\n }\n\n if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n i: nestedArrIndex,\n n: this.norm.get(value)\n };\n\n subRecords.push(subRecord);\n } else if (isArray(value)) {\n value.forEach((item, k) => {\n stack.push({\n nestedArrIndex: k,\n value: item\n });\n });\n } else ;\n }\n record.$[keyIndex] = subRecords;\n } else if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n n: this.norm.get(value)\n };\n\n record.$[keyIndex] = subRecord;\n }\n });\n\n this.records.push(record);\n }\n toJSON() {\n return {\n keys: this.keys,\n records: this.records\n }\n }\n}\n\nfunction createIndex(\n keys,\n docs,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys.map(createKey));\n myIndex.setSources(docs);\n myIndex.create();\n return myIndex\n}\n\nfunction parseIndex(\n data,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const { keys, records } = data;\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys);\n myIndex.setIndexRecords(records);\n return myIndex\n}\n\nfunction computeScore$1(\n pattern,\n {\n errors = 0,\n currentLocation = 0,\n expectedLocation = 0,\n distance = Config.distance,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n const accuracy = errors / pattern.length;\n\n if (ignoreLocation) {\n return accuracy\n }\n\n const proximity = Math.abs(expectedLocation - currentLocation);\n\n if (!distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy\n }\n\n return accuracy + proximity / distance\n}\n\nfunction convertMaskToIndices(\n matchmask = [],\n minMatchCharLength = Config.minMatchCharLength\n) {\n let indices = [];\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (let len = matchmask.length; i < len; i += 1) {\n let match = matchmask[i];\n if (match && start === -1) {\n start = i;\n } else if (!match && start !== -1) {\n end = i - 1;\n if (end - start + 1 >= minMatchCharLength) {\n indices.push([start, end]);\n }\n start = -1;\n }\n }\n\n // (i-1 - start) + 1 => i - start\n if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n indices.push([start, i - 1]);\n }\n\n return indices\n}\n\n// Machine word size\nconst MAX_BITS = 32;\n\nfunction search(\n text,\n pattern,\n patternAlphabet,\n {\n location = Config.location,\n distance = Config.distance,\n threshold = Config.threshold,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n includeMatches = Config.includeMatches,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n if (pattern.length > MAX_BITS) {\n throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS))\n }\n\n const patternLen = pattern.length;\n // Set starting location at beginning text and initialize the alphabet.\n const textLen = text.length;\n // Handle the case when location > text.length\n const expectedLocation = Math.max(0, Math.min(location, textLen));\n // Highest score beyond which we give up.\n let currentThreshold = threshold;\n // Is there a nearby exact match? (speedup)\n let bestLocation = expectedLocation;\n\n // Performance: only computer matches when the minMatchCharLength > 1\n // OR if `includeMatches` is true.\n const computeMatches = minMatchCharLength > 1 || includeMatches;\n // A mask of the matches, used for building the indices\n const matchMask = computeMatches ? Array(textLen) : [];\n\n let index;\n\n // Get all exact matches, here for speed up\n while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n let score = computeScore$1(pattern, {\n currentLocation: index,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n currentThreshold = Math.min(score, currentThreshold);\n bestLocation = index + patternLen;\n\n if (computeMatches) {\n let i = 0;\n while (i < patternLen) {\n matchMask[index + i] = 1;\n i += 1;\n }\n }\n }\n\n // Reset the best location\n bestLocation = -1;\n\n let lastBitArr = [];\n let finalScore = 1;\n let binMax = patternLen + textLen;\n\n const mask = 1 << (patternLen - 1);\n\n for (let i = 0; i < patternLen; i += 1) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from the match location we can stray\n // at this error level.\n let binMin = 0;\n let binMid = binMax;\n\n while (binMin < binMid) {\n const score = computeScore$1(pattern, {\n errors: i,\n currentLocation: expectedLocation + binMid,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score <= currentThreshold) {\n binMin = binMid;\n } else {\n binMax = binMid;\n }\n\n binMid = Math.floor((binMax - binMin) / 2 + binMin);\n }\n\n // Use the result from this iteration as the maximum for the next.\n binMax = binMid;\n\n let start = Math.max(1, expectedLocation - binMid + 1);\n let finish = findAllMatches\n ? textLen\n : Math.min(expectedLocation + binMid, textLen) + patternLen;\n\n // Initialize the bit array\n let bitArr = Array(finish + 2);\n\n bitArr[finish + 1] = (1 << i) - 1;\n\n for (let j = finish; j >= start; j -= 1) {\n let currentLocation = j - 1;\n let charMatch = patternAlphabet[text.charAt(currentLocation)];\n\n if (computeMatches) {\n // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n matchMask[currentLocation] = +!!charMatch;\n }\n\n // First pass: exact match\n bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch;\n\n // Subsequent passes: fuzzy match\n if (i) {\n bitArr[j] |=\n ((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1 | lastBitArr[j + 1];\n }\n\n if (bitArr[j] & mask) {\n finalScore = computeScore$1(pattern, {\n errors: i,\n currentLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (finalScore <= currentThreshold) {\n // Indeed it is\n currentThreshold = finalScore;\n bestLocation = currentLocation;\n\n // Already passed `loc`, downhill from here on in.\n if (bestLocation <= expectedLocation) {\n break\n }\n\n // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n start = Math.max(1, 2 * expectedLocation - bestLocation);\n }\n }\n }\n\n // No hope for a (better) match at greater error levels.\n const score = computeScore$1(pattern, {\n errors: i + 1,\n currentLocation: expectedLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score > currentThreshold) {\n break\n }\n\n lastBitArr = bitArr;\n }\n\n const result = {\n isMatch: bestLocation >= 0,\n // Count exact matches (those with a score of 0) to be \"almost\" exact\n score: Math.max(0.001, finalScore)\n };\n\n if (computeMatches) {\n const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n if (!indices.length) {\n result.isMatch = false;\n } else if (includeMatches) {\n result.indices = indices;\n }\n }\n\n return result\n}\n\nfunction createPatternAlphabet(pattern) {\n let mask = {};\n\n for (let i = 0, len = pattern.length; i < len; i += 1) {\n const char = pattern.charAt(i);\n mask[char] = (mask[char] || 0) | (1 << (len - i - 1));\n }\n\n return mask\n}\n\nclass BitapSearch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n this.options = {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n\n this.chunks = [];\n\n if (!this.pattern.length) {\n return\n }\n\n const addChunk = (pattern, startIndex) => {\n this.chunks.push({\n pattern,\n alphabet: createPatternAlphabet(pattern),\n startIndex\n });\n };\n\n const len = this.pattern.length;\n\n if (len > MAX_BITS) {\n let i = 0;\n const remainder = len % MAX_BITS;\n const end = len - remainder;\n\n while (i < end) {\n addChunk(this.pattern.substr(i, MAX_BITS), i);\n i += MAX_BITS;\n }\n\n if (remainder) {\n const startIndex = len - MAX_BITS;\n addChunk(this.pattern.substr(startIndex), startIndex);\n }\n } else {\n addChunk(this.pattern, 0);\n }\n }\n\n searchIn(text) {\n const { isCaseSensitive, includeMatches } = this.options;\n\n if (!isCaseSensitive) {\n text = text.toLowerCase();\n }\n\n // Exact match\n if (this.pattern === text) {\n let result = {\n isMatch: true,\n score: 0\n };\n\n if (includeMatches) {\n result.indices = [[0, text.length - 1]];\n }\n\n return result\n }\n\n // Otherwise, use Bitap algorithm\n const {\n location,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n ignoreLocation\n } = this.options;\n\n let allIndices = [];\n let totalScore = 0;\n let hasMatches = false;\n\n this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n const { isMatch, score, indices } = search(text, pattern, alphabet, {\n location: location + startIndex,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n includeMatches,\n ignoreLocation\n });\n\n if (isMatch) {\n hasMatches = true;\n }\n\n totalScore += score;\n\n if (isMatch && indices) {\n allIndices = [...allIndices, ...indices];\n }\n });\n\n let result = {\n isMatch: hasMatches,\n score: hasMatches ? totalScore / this.chunks.length : 1\n };\n\n if (hasMatches && includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n}\n\nclass BaseMatch {\n constructor(pattern) {\n this.pattern = pattern;\n }\n static isMultiMatch(pattern) {\n return getMatch(pattern, this.multiRegex)\n }\n static isSingleMatch(pattern) {\n return getMatch(pattern, this.singleRegex)\n }\n search(/*text*/) {}\n}\n\nfunction getMatch(pattern, exp) {\n const matches = pattern.match(exp);\n return matches ? matches[1] : null\n}\n\n// Token: 'file\n\nclass ExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'exact'\n }\n static get multiRegex() {\n return /^=\"(.*)\"$/\n }\n static get singleRegex() {\n return /^=(.*)$/\n }\n search(text) {\n const isMatch = text === this.pattern;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !fire\n\nclass InverseExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!(.*)$/\n }\n search(text) {\n const index = text.indexOf(this.pattern);\n const isMatch = index === -1;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: ^file\n\nclass PrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'prefix-exact'\n }\n static get multiRegex() {\n return /^\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^\\^(.*)$/\n }\n search(text) {\n const isMatch = text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !^fire\n\nclass InversePrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-prefix-exact'\n }\n static get multiRegex() {\n return /^!\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!\\^(.*)$/\n }\n search(text) {\n const isMatch = !text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: .file$\n\nclass SuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'suffix-exact'\n }\n static get multiRegex() {\n return /^\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^(.*)\\$$/\n }\n search(text) {\n const isMatch = text.endsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [text.length - this.pattern.length, text.length - 1]\n }\n }\n}\n\n// Token: !.file$\n\nclass InverseSuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-suffix-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^!(.*)\\$$/\n }\n search(text) {\n const isMatch = !text.endsWith(this.pattern);\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\nclass FuzzyMatch extends BaseMatch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n super(pattern);\n this._bitapSearch = new BitapSearch(pattern, {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n });\n }\n static get type() {\n return 'fuzzy'\n }\n static get multiRegex() {\n return /^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^(.*)$/\n }\n search(text) {\n return this._bitapSearch.searchIn(text)\n }\n}\n\n// Token: 'file\n\nclass IncludeMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'include'\n }\n static get multiRegex() {\n return /^'\"(.*)\"$/\n }\n static get singleRegex() {\n return /^'(.*)$/\n }\n search(text) {\n let location = 0;\n let index;\n\n const indices = [];\n const patternLen = this.pattern.length;\n\n // Get all exact matches\n while ((index = text.indexOf(this.pattern, location)) > -1) {\n location = index + patternLen;\n indices.push([index, location - 1]);\n }\n\n const isMatch = !!indices.length;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices\n }\n }\n}\n\n// ❗Order is important. DO NOT CHANGE.\nconst searchers = [\n ExactMatch,\n IncludeMatch,\n PrefixExactMatch,\n InversePrefixExactMatch,\n InverseSuffixExactMatch,\n SuffixExactMatch,\n InverseExactMatch,\n FuzzyMatch\n];\n\nconst searchersLen = searchers.length;\n\n// Regex to split by spaces, but keep anything in quotes together\nconst SPACE_RE = / +(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = '|';\n\n// Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\nfunction parseQuery(pattern, options = {}) {\n return pattern.split(OR_TOKEN).map((item) => {\n let query = item\n .trim()\n .split(SPACE_RE)\n .filter((item) => item && !!item.trim());\n\n let results = [];\n for (let i = 0, len = query.length; i < len; i += 1) {\n const queryItem = query[i];\n\n // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n let found = false;\n let idx = -1;\n while (!found && ++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isMultiMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n found = true;\n }\n }\n\n if (found) {\n continue\n }\n\n // 2. Handle single query matches (i.e, once that are *not* quoted)\n idx = -1;\n while (++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isSingleMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n break\n }\n }\n }\n\n return results\n })\n}\n\n// These extended matchers can return an array of matches, as opposed\n// to a singl match\nconst MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token | Match type | Description |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript` | fuzzy-match | Items that fuzzy match `jscript` |\n * | `=scheme` | exact-match | Items that are `scheme` |\n * | `'python` | include-match | Items that include `python` |\n * | `!ruby` | inverse-exact-match | Items that do not include `ruby` |\n * | `^java` | prefix-exact-match | Items that start with `java` |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$` | suffix-exact-match | Items that end with `.js` |\n * | `!.go$` | inverse-suffix-exact-match | Items that do not end with `.go` |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\nclass ExtendedSearch {\n constructor(\n pattern,\n {\n isCaseSensitive = Config.isCaseSensitive,\n includeMatches = Config.includeMatches,\n minMatchCharLength = Config.minMatchCharLength,\n ignoreLocation = Config.ignoreLocation,\n findAllMatches = Config.findAllMatches,\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance\n } = {}\n ) {\n this.query = null;\n this.options = {\n isCaseSensitive,\n includeMatches,\n minMatchCharLength,\n findAllMatches,\n ignoreLocation,\n location,\n threshold,\n distance\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n this.query = parseQuery(this.pattern, this.options);\n }\n\n static condition(_, options) {\n return options.useExtendedSearch\n }\n\n searchIn(text) {\n const query = this.query;\n\n if (!query) {\n return {\n isMatch: false,\n score: 1\n }\n }\n\n const { includeMatches, isCaseSensitive } = this.options;\n\n text = isCaseSensitive ? text : text.toLowerCase();\n\n let numMatches = 0;\n let allIndices = [];\n let totalScore = 0;\n\n // ORs\n for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n const searchers = query[i];\n\n // Reset indices\n allIndices.length = 0;\n numMatches = 0;\n\n // ANDs\n for (let j = 0, pLen = searchers.length; j < pLen; j += 1) {\n const searcher = searchers[j];\n const { isMatch, indices, score } = searcher.search(text);\n\n if (isMatch) {\n numMatches += 1;\n totalScore += score;\n if (includeMatches) {\n const type = searcher.constructor.type;\n if (MultiMatchSet.has(type)) {\n allIndices = [...allIndices, ...indices];\n } else {\n allIndices.push(indices);\n }\n }\n } else {\n totalScore = 0;\n numMatches = 0;\n allIndices.length = 0;\n break\n }\n }\n\n // OR condition, so if TRUE, return\n if (numMatches) {\n let result = {\n isMatch: true,\n score: totalScore / numMatches\n };\n\n if (includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n }\n\n // Nothing was matched\n return {\n isMatch: false,\n score: 1\n }\n }\n}\n\nconst registeredSearchers = [];\n\nfunction register(...args) {\n registeredSearchers.push(...args);\n}\n\nfunction createSearcher(pattern, options) {\n for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n let searcherClass = registeredSearchers[i];\n if (searcherClass.condition(pattern, options)) {\n return new searcherClass(pattern, options)\n }\n }\n\n return new BitapSearch(pattern, options)\n}\n\nconst LogicalOperator = {\n AND: '$and',\n OR: '$or'\n};\n\nconst KeyType = {\n PATH: '$path',\n PATTERN: '$val'\n};\n\nconst isExpression = (query) =>\n !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\n\nconst isPath = (query) => !!query[KeyType.PATH];\n\nconst isLeaf = (query) =>\n !isArray(query) && isObject(query) && !isExpression(query);\n\nconst convertToExplicit = (query) => ({\n [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n [key]: query[key]\n }))\n});\n\n// When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\nfunction parse(query, options, { auto = true } = {}) {\n const next = (query) => {\n let keys = Object.keys(query);\n\n const isQueryPath = isPath(query);\n\n if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n return next(convertToExplicit(query))\n }\n\n if (isLeaf(query)) {\n const key = isQueryPath ? query[KeyType.PATH] : keys[0];\n\n const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n\n if (!isString(pattern)) {\n throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key))\n }\n\n const obj = {\n keyId: createKeyId(key),\n pattern\n };\n\n if (auto) {\n obj.searcher = createSearcher(pattern, options);\n }\n\n return obj\n }\n\n let node = {\n children: [],\n operator: keys[0]\n };\n\n keys.forEach((key) => {\n const value = query[key];\n\n if (isArray(value)) {\n value.forEach((item) => {\n node.children.push(next(item));\n });\n }\n });\n\n return node\n };\n\n if (!isExpression(query)) {\n query = convertToExplicit(query);\n }\n\n return next(query)\n}\n\n// Practical scoring function\nfunction computeScore(\n results,\n { ignoreFieldNorm = Config.ignoreFieldNorm }\n) {\n results.forEach((result) => {\n let totalScore = 1;\n\n result.matches.forEach(({ key, norm, score }) => {\n const weight = key ? key.weight : null;\n\n totalScore *= Math.pow(\n score === 0 && weight ? Number.EPSILON : score,\n (weight || 1) * (ignoreFieldNorm ? 1 : norm)\n );\n });\n\n result.score = totalScore;\n });\n}\n\nfunction transformMatches(result, data) {\n const matches = result.matches;\n data.matches = [];\n\n if (!isDefined(matches)) {\n return\n }\n\n matches.forEach((match) => {\n if (!isDefined(match.indices) || !match.indices.length) {\n return\n }\n\n const { indices, value } = match;\n\n let obj = {\n indices,\n value\n };\n\n if (match.key) {\n obj.key = match.key.src;\n }\n\n if (match.idx > -1) {\n obj.refIndex = match.idx;\n }\n\n data.matches.push(obj);\n });\n}\n\nfunction transformScore(result, data) {\n data.score = result.score;\n}\n\nfunction format(\n results,\n docs,\n {\n includeMatches = Config.includeMatches,\n includeScore = Config.includeScore\n } = {}\n) {\n const transformers = [];\n\n if (includeMatches) transformers.push(transformMatches);\n if (includeScore) transformers.push(transformScore);\n\n return results.map((result) => {\n const { idx } = result;\n\n const data = {\n item: docs[idx],\n refIndex: idx\n };\n\n if (transformers.length) {\n transformers.forEach((transformer) => {\n transformer(result, data);\n });\n }\n\n return data\n })\n}\n\nclass Fuse {\n constructor(docs, options = {}, index) {\n this.options = { ...Config, ...options };\n\n if (\n this.options.useExtendedSearch &&\n !true\n ) {\n throw new Error(EXTENDED_SEARCH_UNAVAILABLE)\n }\n\n this._keyStore = new KeyStore(this.options.keys);\n\n this.setCollection(docs, index);\n }\n\n setCollection(docs, index) {\n this._docs = docs;\n\n if (index && !(index instanceof FuseIndex)) {\n throw new Error(INCORRECT_INDEX_TYPE)\n }\n\n this._myIndex =\n index ||\n createIndex(this.options.keys, this._docs, {\n getFn: this.options.getFn,\n fieldNormWeight: this.options.fieldNormWeight\n });\n }\n\n add(doc) {\n if (!isDefined(doc)) {\n return\n }\n\n this._docs.push(doc);\n this._myIndex.add(doc);\n }\n\n remove(predicate = (/* doc, idx */) => false) {\n const results = [];\n\n for (let i = 0, len = this._docs.length; i < len; i += 1) {\n const doc = this._docs[i];\n if (predicate(doc, i)) {\n this.removeAt(i);\n i -= 1;\n len -= 1;\n\n results.push(doc);\n }\n }\n\n return results\n }\n\n removeAt(idx) {\n this._docs.splice(idx, 1);\n this._myIndex.removeAt(idx);\n }\n\n getIndex() {\n return this._myIndex\n }\n\n search(query, { limit = -1 } = {}) {\n const {\n includeMatches,\n includeScore,\n shouldSort,\n sortFn,\n ignoreFieldNorm\n } = this.options;\n\n let results = isString(query)\n ? isString(this._docs[0])\n ? this._searchStringList(query)\n : this._searchObjectList(query)\n : this._searchLogical(query);\n\n computeScore(results, { ignoreFieldNorm });\n\n if (shouldSort) {\n results.sort(sortFn);\n }\n\n if (isNumber(limit) && limit > -1) {\n results = results.slice(0, limit);\n }\n\n return format(results, this._docs, {\n includeMatches,\n includeScore\n })\n }\n\n _searchStringList(query) {\n const searcher = createSearcher(query, this.options);\n const { records } = this._myIndex;\n const results = [];\n\n // Iterate over every string in the index\n records.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n results.push({\n item: text,\n idx,\n matches: [{ score, value: text, norm, indices }]\n });\n }\n });\n\n return results\n }\n\n _searchLogical(query) {\n\n const expression = parse(query, this.options);\n\n const evaluate = (node, item, idx) => {\n if (!node.children) {\n const { keyId, searcher } = node;\n\n const matches = this._findMatches({\n key: this._keyStore.get(keyId),\n value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n searcher\n });\n\n if (matches && matches.length) {\n return [\n {\n idx,\n item,\n matches\n }\n ]\n }\n\n return []\n }\n\n const res = [];\n for (let i = 0, len = node.children.length; i < len; i += 1) {\n const child = node.children[i];\n const result = evaluate(child, item, idx);\n if (result.length) {\n res.push(...result);\n } else if (node.operator === LogicalOperator.AND) {\n return []\n }\n }\n return res\n };\n\n const records = this._myIndex.records;\n const resultMap = {};\n const results = [];\n\n records.forEach(({ $: item, i: idx }) => {\n if (isDefined(item)) {\n let expResults = evaluate(expression, item, idx);\n\n if (expResults.length) {\n // Dedupe when adding\n if (!resultMap[idx]) {\n resultMap[idx] = { idx, item, matches: [] };\n results.push(resultMap[idx]);\n }\n expResults.forEach(({ matches }) => {\n resultMap[idx].matches.push(...matches);\n });\n }\n }\n });\n\n return results\n }\n\n _searchObjectList(query) {\n const searcher = createSearcher(query, this.options);\n const { keys, records } = this._myIndex;\n const results = [];\n\n // List is Array<Object>\n records.forEach(({ $: item, i: idx }) => {\n if (!isDefined(item)) {\n return\n }\n\n let matches = [];\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n keys.forEach((key, keyIndex) => {\n matches.push(\n ...this._findMatches({\n key,\n value: item[keyIndex],\n searcher\n })\n );\n });\n\n if (matches.length) {\n results.push({\n idx,\n item,\n matches\n });\n }\n });\n\n return results\n }\n _findMatches({ key, value, searcher }) {\n if (!isDefined(value)) {\n return []\n }\n\n let matches = [];\n\n if (isArray(value)) {\n value.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({\n score,\n key,\n value: text,\n idx,\n norm,\n indices\n });\n }\n });\n } else {\n const { v: text, n: norm } = value;\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({ score, key, value: text, norm, indices });\n }\n }\n\n return matches\n }\n}\n\nFuse.version = '7.0.0';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n\n{\n Fuse.parseQuery = parse;\n}\n\n{\n register(ExtendedSearch);\n}\n\nexport { Fuse as default };\n","<script lang=\"ts\">\n\texport let className = 'w-4 h-4';\n\texport let strokeWidth = '1.5';\n</script>\n\n<svg\n\txmlns=\"http://www.w3.org/2000/svg\"\n\tfill=\"none\"\n\tviewBox=\"0 0 24 24\"\n\tstroke-width={strokeWidth}\n\tstroke=\"currentColor\"\n\tclass={className}\n>\n\t<path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m4.5 12.75 6 6 9-13.5\" />\n</svg>\n","<script lang=\"ts\">\n\texport let className = 'w-4 h-4';\n\texport let strokeWidth = '1.5';\n</script>\n\n<svg\n\txmlns=\"http://www.w3.org/2000/svg\"\n\tfill=\"none\"\n\tviewBox=\"0 0 24 24\"\n\tstroke-width={strokeWidth}\n\tstroke=\"currentColor\"\n\tclass={className}\n>\n\t<path\n\t\tstroke-linecap=\"round\"\n\t\tstroke-linejoin=\"round\"\n\t\td=\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z\"\n\t/>\n</svg>\n","<script lang=\"ts\">\n\texport let className = 'size-4';\n\texport let strokeWidth = '1.5';\n</script>\n\n<svg\n\txmlns=\"http://www.w3.org/2000/svg\"\n\tfill=\"none\"\n\tviewBox=\"0 0 24 24\"\n\tstroke-width={strokeWidth}\n\tstroke=\"currentColor\"\n\tclass={className}\n>\n\t<path\n\t\tstroke-linecap=\"round\"\n\t\tstroke-linejoin=\"round\"\n\t\td=\"M12 20.25c4.97 0 9-3.694 9-8.25s-4.03-8.25-9-8.25S3 7.444 3 12c0 2.104.859 4.023 2.273 5.48.432.447.74 1.04.586 1.641a4.483 4.483 0 0 1-.923 1.785A5.969 5.969 0 0 0 6 21c1.282 0 2.47-.402 3.445-1.087.81.22 1.668.337 2.555.337Z\"\n\t/>\n</svg>\n","<script lang=\"ts\">\n\timport { DropdownMenu } from 'bits-ui';\n\timport { marked } from 'marked';\n\timport Fuse from 'fuse.js';\n\n\timport { flyAndScale } from '$lib/utils/transitions';\n\timport { createEventDispatcher, onMount, getContext, tick } from 'svelte';\n\n\timport ChevronDown from '$lib/components/icons/ChevronDown.svelte';\n\timport Check from '$lib/components/icons/Check.svelte';\n\timport Search from '$lib/components/icons/Search.svelte';\n\n\timport { deleteModel, getOllamaVersion, pullModel } from '$lib/apis/ollama';\n\n\timport { user, MODEL_DOWNLOAD_POOL, models, mobile, temporaryChatEnabled } from '$lib/stores';\n\timport { toast } from 'svelte-sonner';\n\timport { capitalizeFirstLetter, sanitizeResponseContent, splitStream } from '$lib/utils';\n\timport { getModels } from '$lib/apis';\n\n\timport Tooltip from '$lib/components/common/Tooltip.svelte';\n\timport Switch from '$lib/components/common/Switch.svelte';\n\timport ChatBubbleOval from '$lib/components/icons/ChatBubbleOval.svelte';\n\timport { goto } from '$app/navigation';\n\n\tconst i18n = getContext('i18n');\n\tconst dispatch = createEventDispatcher();\n\n\texport let value = '';\n\texport let placeholder = 'Select a model';\n\texport let searchEnabled = true;\n\texport let searchPlaceholder = $i18n.t('Search a model');\n\n\texport let showTemporaryChatControl = false;\n\n\texport let items: {\n\t\tlabel: string;\n\t\tvalue: string;\n\t\tmodel: Model;\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t[key: string]: any;\n\t}[] = [];\n\n\texport let className = 'w-[32rem]';\n\n\tlet show = false;\n\n\tlet selectedModel = '';\n\t$: selectedModel = items.find((item) => item.value === value) ?? '';\n\n\tlet searchValue = '';\n\tlet ollamaVersion = null;\n\n\tlet selectedModelIdx = 0;\n\n\tconst fuse = new Fuse(\n\t\titems\n\t\t\t.filter((item) => !item.model?.info?.meta?.hidden)\n\t\t\t.map((item) => {\n\t\t\t\tconst _item = {\n\t\t\t\t\t...item,\n\t\t\t\t\tmodelName: item.model?.name,\n\t\t\t\t\ttags: item.model?.info?.meta?.tags?.map((tag) => tag.name).join(' '),\n\t\t\t\t\tdesc: item.model?.info?.meta?.description\n\t\t\t\t};\n\t\t\t\treturn _item;\n\t\t\t}),\n\t\t{\n\t\t\tkeys: ['value', 'tags', 'modelName'],\n\t\t\tthreshold: 0.3\n\t\t}\n\t);\n\n\t$: filteredItems = searchValue\n\t\t? fuse.search(searchValue).map((e) => {\n\t\t\t\treturn e.item;\n\t\t\t})\n\t\t: items.filter((item) => !item.model?.info?.meta?.hidden);\n\n\tconst pullModelHandler = async () => {\n\t\tconst sanitizedModelTag = searchValue.trim().replace(/^ollama\\s+(run|pull)\\s+/, '');\n\n\t\tconsole.log($MODEL_DOWNLOAD_POOL);\n\t\tif ($MODEL_DOWNLOAD_POOL[sanitizedModelTag]) {\n\t\t\ttoast.error(\n\t\t\t\t$i18n.t(`Model '{{modelTag}}' is already in queue for downloading.`, {\n\t\t\t\t\tmodelTag: sanitizedModelTag\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tif (Object.keys($MODEL_DOWNLOAD_POOL).length === 3) {\n\t\t\ttoast.error(\n\t\t\t\t$i18n.t('Maximum of 3 models can be downloaded simultaneously. Please try again later.')\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst [res, controller] = await pullModel(localStorage.token, sanitizedModelTag, '0').catch(\n\t\t\t(error) => {\n\t\t\t\ttoast.error(error);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t);\n\n\t\tif (res) {\n\t\t\tconst reader = res.body\n\t\t\t\t.pipeThrough(new TextDecoderStream())\n\t\t\t\t.pipeThrough(splitStream('\\n'))\n\t\t\t\t.getReader();\n\n\t\t\tMODEL_DOWNLOAD_POOL.set({\n\t\t\t\t...$MODEL_DOWNLOAD_POOL,\n\t\t\t\t[sanitizedModelTag]: {\n\t\t\t\t\t...$MODEL_DOWNLOAD_POOL[sanitizedModelTag],\n\t\t\t\t\tabortController: controller,\n\t\t\t\t\treader,\n\t\t\t\t\tdone: false\n\t\t\t\t}\n\t\t\t});\n\n\t\t\twhile (true) {\n\t\t\t\ttry {\n\t\t\t\t\tconst { value, done } = await reader.read();\n\t\t\t\t\tif (done) break;\n\n\t\t\t\t\tlet lines = value.split('\\n');\n\n\t\t\t\t\tfor (const line of lines) {\n\t\t\t\t\t\tif (line !== '') {\n\t\t\t\t\t\t\tlet data = JSON.parse(line);\n\t\t\t\t\t\t\tconsole.log(data);\n\t\t\t\t\t\t\tif (data.error) {\n\t\t\t\t\t\t\t\tthrow data.error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (data.detail) {\n\t\t\t\t\t\t\t\tthrow data.detail;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (data.status) {\n\t\t\t\t\t\t\t\tif (data.digest) {\n\t\t\t\t\t\t\t\t\tlet downloadProgress = 0;\n\t\t\t\t\t\t\t\t\tif (data.completed) {\n\t\t\t\t\t\t\t\t\t\tdownloadProgress = Math.round((data.completed / data.total) * 1000) / 10;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdownloadProgress = 100;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tMODEL_DOWNLOAD_POOL.set({\n\t\t\t\t\t\t\t\t\t\t...$MODEL_DOWNLOAD_POOL,\n\t\t\t\t\t\t\t\t\t\t[sanitizedModelTag]: {\n\t\t\t\t\t\t\t\t\t\t\t...$MODEL_DOWNLOAD_POOL[sanitizedModelTag],\n\t\t\t\t\t\t\t\t\t\t\tpullProgress: downloadProgress,\n\t\t\t\t\t\t\t\t\t\t\tdigest: data.digest\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ttoast.success(data.status);\n\n\t\t\t\t\t\t\t\t\tMODEL_DOWNLOAD_POOL.set({\n\t\t\t\t\t\t\t\t\t\t...$MODEL_DOWNLOAD_POOL,\n\t\t\t\t\t\t\t\t\t\t[sanitizedModelTag]: {\n\t\t\t\t\t\t\t\t\t\t\t...$MODEL_DOWNLOAD_POOL[sanitizedModelTag],\n\t\t\t\t\t\t\t\t\t\t\tdone: data.status === 'success'\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.log(error);\n\t\t\t\t\tif (typeof error !== 'string') {\n\t\t\t\t\t\terror = error.message;\n\t\t\t\t\t}\n\n\t\t\t\t\ttoast.error(error);\n\t\t\t\t\t// opts.callback({ success: false, error, modelName: opts.modelName });\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ($MODEL_DOWNLOAD_POOL[sanitizedModelTag].done) {\n\t\t\t\ttoast.success(\n\t\t\t\t\t$i18n.t(`Model '{{modelName}}' has been successfully downloaded.`, {\n\t\t\t\t\t\tmodelName: sanitizedModelTag\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tmodels.set(await getModels(localStorage.token));\n\t\t\t} else {\n\t\t\t\ttoast.error($i18n.t('Download canceled'));\n\t\t\t}\n\n\t\t\tdelete $MODEL_DOWNLOAD_POOL[sanitizedModelTag];\n\n\t\t\tMODEL_DOWNLOAD_POOL.set({\n\t\t\t\t...$MODEL_DOWNLOAD_POOL\n\t\t\t});\n\t\t}\n\t};\n\n\tonMount(async () => {\n\t\tollamaVersion = await getOllamaVersion(localStorage.token).catch((error) => false);\n\t});\n\n\tconst cancelModelPullHandler = async (model: string) => {\n\t\tconst { reader, abortController } = $MODEL_DOWNLOAD_POOL[model];\n\t\tif (abortController) {\n\t\t\tabortController.abort();\n\t\t}\n\t\tif (reader) {\n\t\t\tawait reader.cancel();\n\t\t\tdelete $MODEL_DOWNLOAD_POOL[model];\n\t\t\tMODEL_DOWNLOAD_POOL.set({\n\t\t\t\t...$MODEL_DOWNLOAD_POOL\n\t\t\t});\n\t\t\tawait deleteModel(localStorage.token, model);\n\t\t\ttoast.success(`${model} download has been canceled`);\n\t\t}\n\t};\n</script>\n\n<DropdownMenu.Root\n\tbind:open={show}\n\tonOpenChange={async () => {\n\t\tsearchValue = '';\n\t\tselectedModelIdx = 0;\n\t\twindow.setTimeout(() => document.getElementById('model-search-input')?.focus(), 0);\n\t}}\n\tcloseFocus={false}\n>\n\t<DropdownMenu.Trigger class=\"relative w-full font-primary\" aria-label={placeholder}>\n\t\t<div\n\t\t\tclass=\"flex w-full text-left px-0.5 outline-none bg-transparent truncate text-lg font-medium placeholder-gray-400 focus:outline-none\"\n\t\t>\n\t\t\t{#if selectedModel}\n\t\t\t\t{selectedModel.label}\n\t\t\t{:else}\n\t\t\t\t{placeholder}\n\t\t\t{/if}\n\t\t\t<ChevronDown className=\" self-center ml-2 size-3\" strokeWidth=\"2.5\" />\n\t\t</div>\n\t</DropdownMenu.Trigger>\n\n\t<DropdownMenu.Content\n\t\tclass=\" z-40 {$mobile\n\t\t\t? `w-full`\n\t\t\t: `${className}`} max-w-[calc(100vw-1rem)] justify-start rounded-xl bg-white dark:bg-gray-850 dark:text-white shadow-lg border border-gray-300/30 dark:border-gray-700/40 outline-none\"\n\t\ttransition={flyAndScale}\n\t\tside={$mobile ? 'bottom' : 'bottom-start'}\n\t\tsideOffset={4}\n\t>\n\t\t<slot>\n\t\t\t{#if searchEnabled}\n\t\t\t\t<div class=\"flex items-center gap-2.5 px-5 mt-3.5 mb-3\">\n\t\t\t\t\t<Search className=\"size-4\" strokeWidth=\"2.5\" />\n\n\t\t\t\t\t<input\n\t\t\t\t\t\tid=\"model-search-input\"\n\t\t\t\t\t\tbind:value={searchValue}\n\t\t\t\t\t\tclass=\"w-full text-sm bg-transparent outline-none\"\n\t\t\t\t\t\tplaceholder={searchPlaceholder}\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\ton:keydown={(e) => {\n\t\t\t\t\t\t\tif (e.code === 'Enter' && filteredItems.length > 0) {\n\t\t\t\t\t\t\t\tvalue = filteredItems[selectedModelIdx].value;\n\t\t\t\t\t\t\t\tshow = false;\n\t\t\t\t\t\t\t\treturn; // dont need to scroll on selection\n\t\t\t\t\t\t\t} else if (e.code === 'ArrowDown') {\n\t\t\t\t\t\t\t\tselectedModelIdx = Math.min(selectedModelIdx + 1, filteredItems.length - 1);\n\t\t\t\t\t\t\t} else if (e.code === 'ArrowUp') {\n\t\t\t\t\t\t\t\tselectedModelIdx = Math.max(selectedModelIdx - 1, 0);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// if the user types something, reset to the top selection.\n\t\t\t\t\t\t\t\tselectedModelIdx = 0;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst item = document.querySelector(`[data-arrow-selected=\"true\"]`);\n\t\t\t\t\t\t\titem?.scrollIntoView({ block: 'center', inline: 'nearest', behavior: 'instant' });\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<hr class=\"border-gray-100 dark:border-gray-800\" />\n\t\t\t{/if}\n\n\t\t\t<div class=\"px-3 my-2 max-h-64 overflow-y-auto scrollbar-hidden group\">\n\t\t\t\t{#each filteredItems as item, index}\n\t\t\t\t\t<button\n\t\t\t\t\t\taria-label=\"model-item\"\n\t\t\t\t\t\tclass=\"flex w-full text-left font-medium line-clamp-1 select-none items-center rounded-button py-2 pl-3 pr-1.5 text-sm text-gray-700 dark:text-gray-100 outline-none transition-all duration-75 hover:bg-gray-100 dark:hover:bg-gray-800 rounded-lg cursor-pointer data-[highlighted]:bg-muted {index ===\n\t\t\t\t\t\tselectedModelIdx\n\t\t\t\t\t\t\t? 'bg-gray-100 dark:bg-gray-800 group-hover:bg-transparent'\n\t\t\t\t\t\t\t: ''}\"\n\t\t\t\t\t\tdata-arrow-selected={index === selectedModelIdx}\n\t\t\t\t\t\ton:click={() => {\n\t\t\t\t\t\t\tvalue = item.value;\n\t\t\t\t\t\t\tselectedModelIdx = index;\n\n\t\t\t\t\t\t\tshow = false;\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div class=\"flex flex-col\">\n\t\t\t\t\t\t\t{#if $mobile && (item?.model?.info?.meta?.tags ?? []).length > 0}\n\t\t\t\t\t\t\t\t<div class=\"flex gap-0.5 self-start h-full mb-1.5 -translate-x-1\">\n\t\t\t\t\t\t\t\t\t{#each item.model?.info?.meta.tags as tag}\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tclass=\" text-xs font-bold px-1 rounded uppercase line-clamp-1 bg-gray-500/20 text-gray-700 dark:text-gray-200\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{tag.name}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t\t<div class=\"flex items-center min-w-fit\">\n\t\t\t\t\t\t\t\t\t<div class=\"line-clamp-1\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"flex items-center min-w-fit\">\n\t\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\t\tsrc={item.model?.info?.meta?.profile_image_url ?? '/static/favicon.png'}\n\t\t\t\t\t\t\t\t\t\t\t\talt=\"Model\"\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"rounded-full size-5 flex items-center mr-2\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t{#if item.model.owned_by === 'ollama' && (item.model.ollama?.details?.parameter_size ?? '') !== ''}\n\t\t\t\t\t\t\t\t\t\t<div class=\"flex ml-1 items-center translate-y-[0.5px]\">\n\t\t\t\t\t\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\t\t\t\t\t\tcontent={`${\n\t\t\t\t\t\t\t\t\t\t\t\t\titem.model.ollama?.details?.quantization_level\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? item.model.ollama?.details?.quantization_level + ' '\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t\t\t\t\t}${\n\t\t\t\t\t\t\t\t\t\t\t\t\titem.model.ollama?.size\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `(${(item.model.ollama?.size / 1024 ** 3).toFixed(1)}GB)`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"self-end\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\" text-xs font-medium text-gray-600 dark:text-gray-400 line-clamp-1\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t>{item.model.ollama?.details?.parameter_size ?? ''}</span\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t<!-- {JSON.stringify(item.info)} -->\n\n\t\t\t\t\t\t\t\t{#if item.model.owned_by === 'openai'}\n\t\t\t\t\t\t\t\t\t<Tooltip content={`${'External'}`}>\n\t\t\t\t\t\t\t\t\t\t<div class=\"translate-y-[1px]\">\n\t\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\t\t\t\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"size-3\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\t\t\t\t\td=\"M8.914 6.025a.75.75 0 0 1 1.06 0 3.5 3.5 0 0 1 0 4.95l-2 2a3.5 3.5 0 0 1-5.396-4.402.75.75 0 0 1 1.251.827 2 2 0 0 0 3.085 2.514l2-2a2 2 0 0 0 0-2.828.75.75 0 0 1 0-1.06Z\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\t\t\t\t\td=\"M7.086 9.975a.75.75 0 0 1-1.06 0 3.5 3.5 0 0 1 0-4.95l2-2a3.5 3.5 0 0 1 5.396 4.402.75.75 0 0 1-1.251-.827 2 2 0 0 0-3.085-2.514l-2 2a2 2 0 0 0 0 2.828.75.75 0 0 1 0 1.06Z\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t{/if}\n\n\t\t\t\t\t\t\t\t{#if item.model?.info?.meta?.description}\n\t\t\t\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\t\t\t\tcontent={`${marked.parse(\n\t\t\t\t\t\t\t\t\t\t\tsanitizeResponseContent(item.model?.info?.meta?.description).replaceAll(\n\t\t\t\t\t\t\t\t\t\t\t\t'\\n',\n\t\t\t\t\t\t\t\t\t\t\t\t'<br>'\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t)}`}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<div class=\" translate-y-[1px]\">\n\t\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"1.5\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"w-4 h-4\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\t\td=\"m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z\"\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t{/if}\n\n\t\t\t\t\t\t\t\t{#if !$mobile && (item?.model?.info?.meta?.tags ?? []).length > 0}\n\t\t\t\t\t\t\t\t\t<div class=\"flex gap-0.5 self-center items-center h-full translate-y-[0.5px]\">\n\t\t\t\t\t\t\t\t\t\t{#each item.model?.info?.meta.tags as tag}\n\t\t\t\t\t\t\t\t\t\t\t<Tooltip content={tag.name}>\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\" text-xs font-bold px-1 rounded uppercase line-clamp-1 bg-gray-500/20 text-gray-700 dark:text-gray-200\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{tag.name}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t{#if value === item.value}\n\t\t\t\t\t\t\t<div class=\"ml-auto pl-2 pr-2 md:pr-0\">\n\t\t\t\t\t\t\t\t<Check />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t</button>\n\t\t\t\t{:else}\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"block px-3 py-2 text-sm text-gray-700 dark:text-gray-100\">\n\t\t\t\t\t\t\t{$i18n.t('No results found')}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t{/each}\n\n\t\t\t\t{#if !(searchValue.trim() in $MODEL_DOWNLOAD_POOL) && searchValue && ollamaVersion && $user.role === 'admin'}\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"flex w-full font-medium line-clamp-1 select-none items-center rounded-button py-2 pl-3 pr-1.5 text-sm text-gray-700 dark:text-gray-100 outline-none transition-all duration-75 hover:bg-gray-100 dark:hover:bg-gray-800 rounded-lg cursor-pointer data-[highlighted]:bg-muted\"\n\t\t\t\t\t\ton:click={() => {\n\t\t\t\t\t\t\tpullModelHandler();\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{$i18n.t(`Pull \"{{searchValue}}\" from Ollama.com`, { searchValue: searchValue })}\n\t\t\t\t\t</button>\n\t\t\t\t{/if}\n\n\t\t\t\t{#each Object.keys($MODEL_DOWNLOAD_POOL) as model}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"flex w-full justify-between font-medium select-none rounded-button py-2 pl-3 pr-1.5 text-sm text-gray-700 dark:text-gray-100 outline-none transition-all duration-75 rounded-lg cursor-pointer data-[highlighted]:bg-muted\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div class=\"flex\">\n\t\t\t\t\t\t\t<div class=\"-ml-2 mr-2.5 translate-y-0.5\">\n\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\tclass=\"size-4\"\n\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\t><style>\n\t\t\t\t\t\t\t\t\t\t.spinner_ajPY {\n\t\t\t\t\t\t\t\t\t\t\ttransform-origin: center;\n\t\t\t\t\t\t\t\t\t\t\tanimation: spinner_AtaB 0.75s infinite linear;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@keyframes spinner_AtaB {\n\t\t\t\t\t\t\t\t\t\t\t100% {\n\t\t\t\t\t\t\t\t\t\t\t\ttransform: rotate(360deg);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</style><path\n\t\t\t\t\t\t\t\t\t\td=\"M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\"\n\t\t\t\t\t\t\t\t\t\topacity=\".25\"\n\t\t\t\t\t\t\t\t\t/><path\n\t\t\t\t\t\t\t\t\t\td=\"M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z\"\n\t\t\t\t\t\t\t\t\t\tclass=\"spinner_ajPY\"\n\t\t\t\t\t\t\t\t\t/></svg\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"flex flex-col self-start\">\n\t\t\t\t\t\t\t\t<div class=\"line-clamp-1\">\n\t\t\t\t\t\t\t\t\tDownloading \"{model}\" {'pullProgress' in $MODEL_DOWNLOAD_POOL[model]\n\t\t\t\t\t\t\t\t\t\t? `(${$MODEL_DOWNLOAD_POOL[model].pullProgress}%)`\n\t\t\t\t\t\t\t\t\t\t: ''}\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t{#if 'digest' in $MODEL_DOWNLOAD_POOL[model] && $MODEL_DOWNLOAD_POOL[model].digest}\n\t\t\t\t\t\t\t\t\t<div class=\"-mt-1 h-fit text-[0.7rem] dark:text-gray-500 line-clamp-1\">\n\t\t\t\t\t\t\t\t\t\t{$MODEL_DOWNLOAD_POOL[model].digest}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class=\"mr-2 translate-y-0.5\">\n\t\t\t\t\t\t\t<Tooltip content={$i18n.t('Cancel')}>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"text-gray-800 dark:text-gray-100\"\n\t\t\t\t\t\t\t\t\ton:click={() => {\n\t\t\t\t\t\t\t\t\t\tcancelModelPullHandler(model);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\tclass=\"w-4 h-4 text-gray-800 dark:text-white\"\n\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\t\twidth=\"24\"\n\t\t\t\t\t\t\t\t\t\theight=\"24\"\n\t\t\t\t\t\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\td=\"M6 18 17.94 6M18 18 6.06 6\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t{/each}\n\t\t\t</div>\n\n\t\t\t{#if showTemporaryChatControl}\n\t\t\t\t<hr class=\"border-gray-100 dark:border-gray-800\" />\n\n\t\t\t\t<div class=\"flex items-center mx-2 my-2\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"flex justify-between w-full font-medium line-clamp-1 select-none items-center rounded-button py-2 px-3 text-sm text-gray-700 dark:text-gray-100 outline-none transition-all duration-75 hover:bg-gray-100 dark:hover:bg-gray-800 rounded-lg cursor-pointer data-[highlighted]:bg-muted\"\n\t\t\t\t\t\ton:click={async () => {\n\t\t\t\t\t\t\ttemporaryChatEnabled.set(!$temporaryChatEnabled);\n\t\t\t\t\t\t\tawait goto('/');\n\t\t\t\t\t\t\tconst newChatButton = document.getElementById('new-chat-button');\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tnewChatButton?.click();\n\t\t\t\t\t\t\t}, 0);\n\n\t\t\t\t\t\t\t// add 'temporary-chat=true' to the URL\n\t\t\t\t\t\t\tif ($temporaryChatEnabled) {\n\t\t\t\t\t\t\t\thistory.replaceState(null, '', '?temporary-chat=true');\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\thistory.replaceState(null, '', location.pathname);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tshow = false;\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div class=\"flex gap-2.5 items-center\">\n\t\t\t\t\t\t\t<ChatBubbleOval className=\"size-4\" strokeWidth=\"2.5\" />\n\n\t\t\t\t\t\t\t{$i18n.t(`Temporary Chat`)}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<Switch state={$temporaryChatEnabled} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t{/if}\n\n\t\t\t<div class=\"hidden w-[42rem]\" />\n\t\t\t<div class=\"hidden w-[32rem]\" />\n\t\t</slot>\n\t</DropdownMenu.Content>\n</DropdownMenu.Root>\n\n<style>\n\t.scrollbar-hidden:active::-webkit-scrollbar-thumb,\n\t.scrollbar-hidden:focus::-webkit-scrollbar-thumb,\n\t.scrollbar-hidden:hover::-webkit-scrollbar-thumb {\n\t\tvisibility: visible;\n\t}\n\t.scrollbar-hidden::-webkit-scrollbar-thumb {\n\t\tvisibility: hidden;\n\t}\n</style>\n"],"names":["isArray","value","getTag","INFINITY","baseToString","result","toString","isString","isNumber","isBoolean","isObjectLike","isObject","isDefined","isBlank","INCORRECT_INDEX_TYPE","LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY","key","PATTERN_LENGTH_TOO_LARGE","max","MISSING_KEY_PROPERTY","name","INVALID_KEY_WEIGHT_VALUE","hasOwn","KeyStore","keys","totalWeight","obj","createKey","keyId","path","id","src","weight","getFn","createKeyPath","createKeyId","get","list","arr","deepGet","index","i","len","MatchOptions","BasicOptions","a","b","FuzzyOptions","AdvancedOptions","Config","SPACE","norm","mantissa","cache","m","numTokens","n","FuseIndex","fieldNormWeight","docs","records","idx","doc","docIndex","item","record","keyIndex","subRecords","stack","nestedArrIndex","subRecord","k","createIndex","myIndex","parseIndex","data","computeScore$1","pattern","errors","currentLocation","expectedLocation","distance","ignoreLocation","accuracy","proximity","convertMaskToIndices","matchmask","minMatchCharLength","indices","start","end","match","MAX_BITS","search","text","patternAlphabet","location","threshold","findAllMatches","includeMatches","patternLen","textLen","currentThreshold","bestLocation","computeMatches","matchMask","score","lastBitArr","finalScore","binMax","mask","binMin","binMid","finish","bitArr","j","charMatch","createPatternAlphabet","char","BitapSearch","isCaseSensitive","addChunk","startIndex","remainder","allIndices","totalScore","hasMatches","alphabet","isMatch","BaseMatch","getMatch","exp","matches","ExactMatch","InverseExactMatch","PrefixExactMatch","InversePrefixExactMatch","SuffixExactMatch","InverseSuffixExactMatch","FuzzyMatch","IncludeMatch","searchers","searchersLen","SPACE_RE","OR_TOKEN","parseQuery","options","query","results","queryItem","found","searcher","token","MultiMatchSet","ExtendedSearch","_","numMatches","qLen","pLen","type","registeredSearchers","register","args","createSearcher","searcherClass","LogicalOperator","KeyType","isExpression","isPath","isLeaf","convertToExplicit","parse","auto","next","isQueryPath","node","computeScore","ignoreFieldNorm","transformMatches","transformScore","format","includeScore","transformers","transformer","Fuse","predicate","limit","shouldSort","sortFn","expression","evaluate","res","child","resultMap","expResults","ctx","insert_hydration","target","svg","anchor","append_hydration","className","$$props","strokeWidth","t_value","dirty","set_data","create_if_block_10","div","input","hr","div1","div0","t","each_value_3","ensure_array_like","_b","_a","t0_value","t0","_d","_c","_e","_f","tooltip_changes","span","marked","sanitizeResponseContent","each_value_2","each_blocks","t2_value","if_block0","create_if_block_8","if_block1","create_if_block_7","if_block2","create_if_block_6","if_block3","_i","_h","_g","create_if_block_5","if_block4","_m","_l","_k","_j","create_if_block_4","create_if_block_3","attr","img","img_src_value","button","button_class_value","button_data_arrow_selected_value","div4","div3","div2","current","t2","_p","_o","_n","create_if_block_1","div5","t3","t3_value","t5","t5_value","show_if","create_if_block_9","create_if_block","each_blocks_1","each0_else","flyAndScale","i18n","getContext","createEventDispatcher","placeholder","searchEnabled","searchPlaceholder","$i18n","showTemporaryChatControl","items","show","selectedModel","searchValue","ollamaVersion","selectedModelIdx","fuse","tag","pullModelHandler","sanitizedModelTag","$MODEL_DOWNLOAD_POOL","toast","controller","pullModel","error","reader","splitStream","MODEL_DOWNLOAD_POOL","done","lines","line","downloadProgress","models","getModels","onMount","$$invalidate","getOllamaVersion","cancelModelPullHandler","model","abortController","deleteModel","e","filteredItems","temporaryChatEnabled","$temporaryChatEnabled","goto","newChatButton"],"mappings":"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","x_google_ignoreList":[0]} |