{"version":3,"file":"12.BAbk_nDB.js","sources":["../../../../../../src/lib/components/documents/EditDocModal.svelte","../../../../../../src/lib/components/documents/AddDocModal.svelte","../../../../../../src/lib/components/workspace/Documents.svelte"],"sourcesContent":["<script lang=\"ts\">\n\timport { toast } from 'svelte-sonner';\n\timport dayjs from 'dayjs';\n\timport { onMount, getContext } from 'svelte';\n\n\timport { getDocs, tagDocByName, updateDocByName } from '$lib/apis/documents';\n\timport Modal from '../common/Modal.svelte';\n\timport { documents } from '$lib/stores';\n\timport TagInput from '../common/Tags/TagInput.svelte';\n\timport Tags from '../common/Tags.svelte';\n\timport { addTagById } from '$lib/apis/chats';\n\n\tconst i18n = getContext('i18n');\n\n\texport let show = false;\n\texport let selectedDoc;\n\n\tlet tags = [];\n\n\tlet doc = {\n\t\tname: '',\n\t\ttitle: '',\n\t\tcontent: null\n\t};\n\n\tconst submitHandler = async () => {\n\t\tconst res = await updateDocByName(localStorage.token, selectedDoc.name, {\n\t\t\ttitle: doc.title,\n\t\t\tname: doc.name\n\t\t}).catch((error) => {\n\t\t\ttoast.error(error);\n\t\t});\n\n\t\tif (res) {\n\t\t\tshow = false;\n\n\t\t\tdocuments.set(await getDocs(localStorage.token));\n\t\t}\n\t};\n\n\tconst addTagHandler = async (tagName) => {\n\t\tif (!tags.find((tag) => tag.name === tagName) && tagName !== '') {\n\t\t\ttags = [...tags, { name: tagName }];\n\n\t\t\tawait tagDocByName(localStorage.token, doc.name, {\n\t\t\t\tname: doc.name,\n\t\t\t\ttags: tags\n\t\t\t});\n\n\t\t\tdocuments.set(await getDocs(localStorage.token));\n\t\t} else {\n\t\t\tconsole.log('tag already exists');\n\t\t}\n\t};\n\n\tconst deleteTagHandler = async (tagName) => {\n\t\ttags = tags.filter((tag) => tag.name !== tagName);\n\n\t\tawait tagDocByName(localStorage.token, doc.name, {\n\t\t\tname: doc.name,\n\t\t\ttags: tags\n\t\t});\n\n\t\tdocuments.set(await getDocs(localStorage.token));\n\t};\n\n\tonMount(() => {\n\t\tif (selectedDoc) {\n\t\t\tdoc = JSON.parse(JSON.stringify(selectedDoc));\n\n\t\t\ttags = doc?.content?.tags ?? [];\n\t\t}\n\t});\n</script>\n\n<Modal size=\"sm\" bind:show>\n\t<div>\n\t\t<div class=\" flex justify-between dark:text-gray-300 px-5 pt-4\">\n\t\t\t<div class=\" text-lg font-medium self-center\">{$i18n.t('Edit Doc')}</div>\n\t\t\t<button\n\t\t\t\tclass=\"self-center\"\n\t\t\t\ton:click={() => {\n\t\t\t\t\tshow = false;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 20 20\"\n\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\tclass=\"w-5 h-5\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class=\"flex flex-col md:flex-row w-full px-5 py-4 md:space-x-4 dark:text-gray-200\">\n\t\t\t<div class=\" flex flex-col w-full sm:flex-row sm:justify-center sm:space-x-6\">\n\t\t\t\t<form\n\t\t\t\t\tclass=\"flex flex-col w-full\"\n\t\t\t\t\ton:submit|preventDefault={() => {\n\t\t\t\t\t\tsubmitHandler();\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<div class=\" flex flex-col space-y-1.5\">\n\t\t\t\t\t\t<div class=\"flex flex-col w-full\">\n\t\t\t\t\t\t\t<div class=\" mb-1 text-xs text-gray-500\">{$i18n.t('Name Tag')}</div>\n\n\t\t\t\t\t\t\t<div class=\"flex flex-1\">\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"bg-gray-200 dark:bg-gray-800 font-semibold px-3 py-0.5 border border-r-0 dark:border-gray-800 rounded-l-xl flex items-center\"\n\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</div>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\tclass=\"w-full rounded-r-xl py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 disabled:text-gray-500 dark:disabled:text-gray-500 outline-none\"\n\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\tbind:value={doc.name}\n\t\t\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\t/>\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=\"flex flex-col w-full\">\n\t\t\t\t\t\t\t<div class=\" mb-1 text-xs text-gray-500\">{$i18n.t('Title')}</div>\n\n\t\t\t\t\t\t\t<div class=\"flex-1\">\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\tclass=\"w-full rounded-xl py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none\"\n\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\tbind:value={doc.title}\n\t\t\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\t/>\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=\"flex flex-col w-full\">\n\t\t\t\t\t\t\t<div class=\" mb-2 text-xs text-gray-500\">{$i18n.t('Tags')}</div>\n\n\t\t\t\t\t\t\t<Tags {tags} addTag={addTagHandler} deleteTag={deleteTagHandler} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"flex justify-end pt-5 text-sm font-medium\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass=\" px-4 py-2 bg-emerald-700 hover:bg-emerald-800 text-gray-100 transition rounded-lg\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{$i18n.t('Save')}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</form>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</Modal>\n\n<style>\n\tinput::-webkit-outer-spin-button,\n\tinput::-webkit-inner-spin-button {\n\t\t/* display: none; <- Crashes Chrome on hover */\n\t\t-webkit-appearance: none;\n\t\tmargin: 0; /* <-- Apparently some margin are still there even though it's hidden */\n\t}\n\n\t.tabs::-webkit-scrollbar {\n\t\tdisplay: none; /* for Chrome, Safari and Opera */\n\t}\n\n\t.tabs {\n\t\t-ms-overflow-style: none; /* IE and Edge */\n\t\tscrollbar-width: none; /* Firefox */\n\t}\n\n\tinput[type='number'] {\n\t\t-moz-appearance: textfield; /* Firefox */\n\t}\n</style>\n","<script lang=\"ts\">\n\timport { toast } from 'svelte-sonner';\n\timport dayjs from 'dayjs';\n\timport { onMount, getContext } from 'svelte';\n\n\timport { createNewDoc, getDocs, tagDocByName, updateDocByName } from '$lib/apis/documents';\n\timport Modal from '../common/Modal.svelte';\n\timport { documents } from '$lib/stores';\n\timport TagInput from '../common/Tags/TagInput.svelte';\n\timport Tags from '../common/Tags.svelte';\n\timport { addTagById } from '$lib/apis/chats';\n\timport { uploadDocToVectorDB } from '$lib/apis/rag';\n\timport { transformFileName } from '$lib/utils';\n\timport { SUPPORTED_FILE_EXTENSIONS, SUPPORTED_FILE_TYPE } from '$lib/constants';\n\n\tconst i18n = getContext('i18n');\n\n\texport let show = false;\n\texport let uploadDoc: Function;\n\tlet uploadDocInputElement: HTMLInputElement;\n\tlet inputFiles;\n\tlet tags = [];\n\n\tlet doc = {\n\t\tname: '',\n\t\ttitle: '',\n\t\tcontent: null\n\t};\n\n\tconst submitHandler = async () => {\n\t\tif (inputFiles && inputFiles.length > 0) {\n\t\t\tfor (const file of inputFiles) {\n\t\t\t\tconsole.log(file, file.name.split('.').at(-1));\n\t\t\t\tif (\n\t\t\t\t\tSUPPORTED_FILE_TYPE.includes(file['type']) ||\n\t\t\t\t\tSUPPORTED_FILE_EXTENSIONS.includes(file.name.split('.').at(-1))\n\t\t\t\t) {\n\t\t\t\t\tuploadDoc(file, tags);\n\t\t\t\t} else {\n\t\t\t\t\ttoast.error(\n\t\t\t\t\t\t`Unknown File Type '${file['type']}', but accepting and treating as plain text`\n\t\t\t\t\t);\n\t\t\t\t\tuploadDoc(file, tags);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinputFiles = null;\n\t\t\tuploadDocInputElement.value = '';\n\t\t} else {\n\t\t\ttoast.error($i18n.t(`File not found.`));\n\t\t}\n\n\t\tshow = false;\n\t\tdocuments.set(await getDocs(localStorage.token));\n\t};\n\n\tconst addTagHandler = async (tagName) => {\n\t\tif (!tags.find((tag) => tag.name === tagName) && tagName !== '') {\n\t\t\ttags = [...tags, { name: tagName }];\n\t\t} else {\n\t\t\tconsole.log('tag already exists');\n\t\t}\n\t};\n\n\tconst deleteTagHandler = async (tagName) => {\n\t\ttags = tags.filter((tag) => tag.name !== tagName);\n\t};\n\n\tonMount(() => {});\n</script>\n\n<Modal size=\"sm\" bind:show>\n\t<div>\n\t\t<div class=\" flex justify-between dark:text-gray-300 px-5 pt-4\">\n\t\t\t<div class=\" text-lg font-medium self-center\">{$i18n.t('Add Docs')}</div>\n\t\t\t<button\n\t\t\t\tclass=\"self-center\"\n\t\t\t\ton:click={() => {\n\t\t\t\t\tshow = false;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 20 20\"\n\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\tclass=\"w-5 h-5\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class=\"flex flex-col md:flex-row w-full px-5 py-4 md:space-x-4 dark:text-gray-200\">\n\t\t\t<div class=\" flex flex-col w-full sm:flex-row sm:justify-center sm:space-x-6\">\n\t\t\t\t<form\n\t\t\t\t\tclass=\"flex flex-col w-full\"\n\t\t\t\t\ton:submit|preventDefault={() => {\n\t\t\t\t\t\tsubmitHandler();\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"mb-3 w-full\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tid=\"upload-doc-input\"\n\t\t\t\t\t\t\tbind:this={uploadDocInputElement}\n\t\t\t\t\t\t\thidden\n\t\t\t\t\t\t\tbind:files={inputFiles}\n\t\t\t\t\t\t\ttype=\"file\"\n\t\t\t\t\t\t\tmultiple\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass=\"w-full text-sm font-medium py-3 bg-gray-100 hover:bg-gray-200 dark:bg-gray-850 dark:hover:bg-gray-800 text-center rounded-xl\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\ton:click={() => {\n\t\t\t\t\t\t\t\tuploadDocInputElement.click();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{#if inputFiles}\n\t\t\t\t\t\t\t\t{inputFiles.length > 0 ? `${inputFiles.length}` : ''} document(s) selected.\n\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t{$i18n.t('Click here to select documents.')}\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\" flex flex-col space-y-1.5\">\n\t\t\t\t\t\t<div class=\"flex flex-col w-full\">\n\t\t\t\t\t\t\t<div class=\" mb-1.5 text-xs text-gray-500\">{$i18n.t('Tags')}</div>\n\n\t\t\t\t\t\t\t<Tags {tags} addTag={addTagHandler} deleteTag={deleteTagHandler} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"flex justify-end pt-5 text-sm font-medium\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass=\" px-4 py-2 bg-emerald-700 hover:bg-emerald-800 text-gray-100 transition rounded-lg\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{$i18n.t('Save')}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</form>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</Modal>\n\n<style>\n\tinput::-webkit-outer-spin-button,\n\tinput::-webkit-inner-spin-button {\n\t\t/* display: none; <- Crashes Chrome on hover */\n\t\t-webkit-appearance: none;\n\t\tmargin: 0; /* <-- Apparently some margin are still there even though it's hidden */\n\t}\n\n\t.tabs::-webkit-scrollbar {\n\t\tdisplay: none; /* for Chrome, Safari and Opera */\n\t}\n\n\t.tabs {\n\t\t-ms-overflow-style: none; /* IE and Edge */\n\t\tscrollbar-width: none; /* Firefox */\n\t}\n\n\tinput[type='number'] {\n\t\t-moz-appearance: textfield; /* Firefox */\n\t}\n</style>\n","<script lang=\"ts\">\n\timport { toast } from 'svelte-sonner';\n\timport fileSaver from 'file-saver';\n\tconst { saveAs } = fileSaver;\n\n\timport { onMount, getContext } from 'svelte';\n\timport { WEBUI_NAME, documents, showSidebar } from '$lib/stores';\n\timport { createNewDoc, deleteDocByName, getDocs } from '$lib/apis/documents';\n\n\timport { SUPPORTED_FILE_TYPE, SUPPORTED_FILE_EXTENSIONS } from '$lib/constants';\n\timport { processDocToVectorDB, uploadDocToVectorDB } from '$lib/apis/rag';\n\timport { blobToFile, transformFileName } from '$lib/utils';\n\n\timport Checkbox from '$lib/components/common/Checkbox.svelte';\n\n\timport EditDocModal from '$lib/components/documents/EditDocModal.svelte';\n\timport AddFilesPlaceholder from '$lib/components/AddFilesPlaceholder.svelte';\n\timport AddDocModal from '$lib/components/documents/AddDocModal.svelte';\n\timport { transcribeAudio } from '$lib/apis/audio';\n\timport { uploadFile } from '$lib/apis/files';\n\n\tconst i18n = getContext('i18n');\n\n\tlet importFiles = '';\n\n\tlet inputFiles = '';\n\n\tlet query = '';\n\tlet documentsImportInputElement: HTMLInputElement;\n\tlet tags = [];\n\n\tlet showSettingsModal = false;\n\tlet showAddDocModal = false;\n\tlet showEditDocModal = false;\n\tlet selectedDoc;\n\tlet selectedTag = '';\n\n\tlet dragged = false;\n\n\tconst deleteDoc = async (name) => {\n\t\tawait deleteDocByName(localStorage.token, name);\n\t\tawait documents.set(await getDocs(localStorage.token));\n\t};\n\n\tconst deleteDocs = async (docs) => {\n\t\tconst res = await Promise.all(\n\t\t\tdocs.map(async (doc) => {\n\t\t\t\treturn await deleteDocByName(localStorage.token, doc.name);\n\t\t\t})\n\t\t);\n\n\t\tawait documents.set(await getDocs(localStorage.token));\n\t};\n\n\tconst uploadDoc = async (file, tags?: object) => {\n\t\tconsole.log(file);\n\t\t// Check if the file is an audio file and transcribe/convert it to text file\n\t\tif (['audio/mpeg', 'audio/wav', 'audio/ogg', 'audio/x-m4a'].includes(file['type'])) {\n\t\t\tconst transcribeRes = await transcribeAudio(localStorage.token, file).catch((error) => {\n\t\t\t\ttoast.error(error);\n\t\t\t\treturn null;\n\t\t\t});\n\n\t\t\tif (transcribeRes) {\n\t\t\t\tconsole.log(transcribeRes);\n\t\t\t\tconst blob = new Blob([transcribeRes.text], { type: 'text/plain' });\n\t\t\t\tfile = blobToFile(blob, `${file.name}.txt`);\n\t\t\t}\n\t\t}\n\n\t\t// Upload the file to the server\n\t\tconst uploadedFile = await uploadFile(localStorage.token, file).catch((error) => {\n\t\t\ttoast.error(error);\n\t\t\treturn null;\n\t\t});\n\n\t\tconst res = await processDocToVectorDB(localStorage.token, uploadedFile.id).catch((error) => {\n\t\t\ttoast.error(error);\n\t\t\treturn null;\n\t\t});\n\n\t\tif (res) {\n\t\t\tawait createNewDoc(\n\t\t\t\tlocalStorage.token,\n\t\t\t\tres.collection_name,\n\t\t\t\tres.filename,\n\t\t\t\ttransformFileName(res.filename),\n\t\t\t\tres.filename,\n\t\t\t\ttags?.length > 0\n\t\t\t\t\t? {\n\t\t\t\t\t\t\ttags: tags\n\t\t\t\t\t\t}\n\t\t\t\t\t: null\n\t\t\t).catch((error) => {\n\t\t\t\ttoast.error(error);\n\t\t\t\treturn null;\n\t\t\t});\n\t\t\tawait documents.set(await getDocs(localStorage.token));\n\t\t}\n\t};\n\n\tonMount(() => {\n\t\tdocuments.subscribe((docs) => {\n\t\t\ttags = docs.reduce((a, e, i, arr) => {\n\t\t\t\treturn [...new Set([...a, ...(e?.content?.tags ?? []).map((tag) => tag.name)])];\n\t\t\t}, []);\n\t\t});\n\t\tconst dropZone = document.querySelector('body');\n\n\t\tconst onDragOver = (e) => {\n\t\t\te.preventDefault();\n\t\t\tdragged = true;\n\t\t};\n\n\t\tconst onDragLeave = () => {\n\t\t\tdragged = false;\n\t\t};\n\n\t\tconst onDrop = async (e) => {\n\t\t\te.preventDefault();\n\n\t\t\tif (e.dataTransfer?.files) {\n\t\t\t\tlet reader = new FileReader();\n\n\t\t\t\treader.onload = (event) => {\n\t\t\t\t\tfiles = [\n\t\t\t\t\t\t...files,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\turl: `${event.target.result}`\n\t\t\t\t\t\t}\n\t\t\t\t\t];\n\t\t\t\t};\n\n\t\t\t\tconst inputFiles = e.dataTransfer?.files;\n\n\t\t\t\tif (inputFiles && inputFiles.length > 0) {\n\t\t\t\t\tfor (const file of inputFiles) {\n\t\t\t\t\t\tconsole.log(file, file.name.split('.').at(-1));\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tSUPPORTED_FILE_TYPE.includes(file['type']) ||\n\t\t\t\t\t\t\tSUPPORTED_FILE_EXTENSIONS.includes(file.name.split('.').at(-1))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tuploadDoc(file);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttoast.error(\n\t\t\t\t\t\t\t\t`Unknown File Type '${file['type']}', but accepting and treating as plain text`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tuploadDoc(file);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttoast.error($i18n.t(`File not found.`));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdragged = false;\n\t\t};\n\n\t\tdropZone?.addEventListener('dragover', onDragOver);\n\t\tdropZone?.addEventListener('drop', onDrop);\n\t\tdropZone?.addEventListener('dragleave', onDragLeave);\n\n\t\treturn () => {\n\t\t\tdropZone?.removeEventListener('dragover', onDragOver);\n\t\t\tdropZone?.removeEventListener('drop', onDrop);\n\t\t\tdropZone?.removeEventListener('dragleave', onDragLeave);\n\t\t};\n\t});\n\n\tlet filteredDocs;\n\n\t$: filteredDocs = $documents.filter(\n\t\t(doc) =>\n\t\t\t(selectedTag === '' ||\n\t\t\t\t(doc?.content?.tags ?? []).map((tag) => tag.name).includes(selectedTag)) &&\n\t\t\t(query === '' || doc.name.includes(query))\n\t);\n</script>\n\n<svelte:head>\n\t<title>\n\t\t{$i18n.t('Documents')} | {$WEBUI_NAME}\n\t</title>\n</svelte:head>\n\n{#if dragged}\n\t<div\n\t\tclass=\"fixed {$showSidebar\n\t\t\t? 'left-0 md:left-[260px] md:w-[calc(100%-260px)]'\n\t\t\t: 'left-0'} w-full h-full flex z-50 touch-none pointer-events-none\"\n\t\tid=\"dropzone\"\n\t\trole=\"region\"\n\t\taria-label=\"Drag and Drop Container\"\n\t>\n\t\t<div class=\"absolute w-full h-full backdrop-blur bg-gray-800/40 flex justify-center\">\n\t\t\t<div class=\"m-auto pt-64 flex flex-col justify-center\">\n\t\t\t\t<div class=\"max-w-md\">\n\t\t\t\t\t<AddFilesPlaceholder>\n\t\t\t\t\t\t<div class=\" mt-2 text-center text-sm dark:text-gray-200 w-full\">\n\t\t\t\t\t\t\tDrop any files here to add to my documents\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</AddFilesPlaceholder>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n{/if}\n\n{#key selectedDoc}\n\t<EditDocModal bind:show={showEditDocModal} {selectedDoc} />\n{/key}\n\n<AddDocModal bind:show={showAddDocModal} {uploadDoc} />\n\n<div class=\"mb-3\">\n\t<div class=\"flex justify-between items-center\">\n\t\t<div class=\"flex md:self-center text-lg font-medium px-0.5\">\n\t\t\t{$i18n.t('Documents')}\n\t\t\t<div class=\"flex self-center w-[1px] h-6 mx-2.5 bg-gray-200 dark:bg-gray-700\" />\n\t\t\t<span class=\"text-lg font-medium text-gray-500 dark:text-gray-300\">{$documents.length}</span>\n\t\t</div>\n\t</div>\n</div>\n\n<div class=\" flex w-full space-x-2\">\n\t<div class=\"flex flex-1\">\n\t\t<div class=\" self-center ml-1 mr-3\">\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 20 20\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t\tclass=\"w-4 h-4\"\n\t\t\t>\n\t\t\t\t<path\n\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\td=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\"\n\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t\t<input\n\t\t\tclass=\" w-full text-sm pr-4 py-1 rounded-r-xl outline-none bg-transparent\"\n\t\t\tbind:value={query}\n\t\t\tplaceholder={$i18n.t('Search Documents')}\n\t\t/>\n\t</div>\n\n\t<div>\n\t\t<button\n\t\t\tclass=\" px-2 py-2 rounded-xl border border-gray-200 dark:border-gray-600 dark:border-0 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 transition font-medium text-sm flex items-center space-x-1\"\n\t\t\taria-label={$i18n.t('Add Docs')}\n\t\t\ton:click={() => {\n\t\t\t\tshowAddDocModal = true;\n\t\t\t}}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t\tclass=\"w-4 h-4\"\n\t\t\t>\n\t\t\t\t<path\n\t\t\t\t\td=\"M8.75 3.75a.75.75 0 0 0-1.5 0v3.5h-3.5a.75.75 0 0 0 0 1.5h3.5v3.5a.75.75 0 0 0 1.5 0v-3.5h3.5a.75.75 0 0 0 0-1.5h-3.5v-3.5Z\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</button>\n\t</div>\n</div>\n\n<!-- <div>\n <div\n class=\"my-3 py-16 rounded-lg border-2 border-dashed dark:border-gray-600 {dragged &&\n ' dark:bg-gray-700'} \"\n role=\"region\"\n on:drop={onDrop}\n on:dragover={onDragOver}\n on:dragleave={onDragLeave}\n >\n <div class=\" pointer-events-none\">\n <div class=\"text-center dark:text-white text-2xl font-semibold z-50\">{$i18n.t('Add Files')}</div>\n\n <div class=\" mt-2 text-center text-sm dark:text-gray-200 w-full\">\n Drop any files here to add to my documents\n </div>\n </div>\n </div>\n</div> -->\n\n<hr class=\" dark:border-gray-850 my-2.5\" />\n\n{#if tags.length > 0}\n\t<div class=\"px-2.5 pt-1 flex gap-1 flex-wrap\">\n\t\t<div class=\"ml-0.5 pr-3 my-auto flex items-center\">\n\t\t\t<Checkbox\n\t\t\t\tstate={filteredDocs.filter((doc) => doc?.selected === 'checked').length ===\n\t\t\t\tfilteredDocs.length\n\t\t\t\t\t? 'checked'\n\t\t\t\t\t: 'unchecked'}\n\t\t\t\tindeterminate={filteredDocs.filter((doc) => doc?.selected === 'checked').length > 0 &&\n\t\t\t\t\tfilteredDocs.filter((doc) => doc?.selected === 'checked').length !== filteredDocs.length}\n\t\t\t\ton:change={(e) => {\n\t\t\t\t\tif (e.detail === 'checked') {\n\t\t\t\t\t\tfilteredDocs = filteredDocs.map((doc) => ({ ...doc, selected: 'checked' }));\n\t\t\t\t\t} else if (e.detail === 'unchecked') {\n\t\t\t\t\t\tfilteredDocs = filteredDocs.map((doc) => ({ ...doc, selected: 'unchecked' }));\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t</div>\n\n\t\t{#if filteredDocs.filter((doc) => doc?.selected === 'checked').length === 0}\n\t\t\t<button\n\t\t\t\tclass=\"px-2 py-0.5 space-x-1 flex h-fit items-center rounded-full transition bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:text-white\"\n\t\t\t\ton:click={async () => {\n\t\t\t\t\tselectedTag = '';\n\t\t\t\t\t// await chats.set(await getChatListByTagName(localStorage.token, tag.name));\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div class=\" text-xs font-medium self-center line-clamp-1\">{$i18n.t('all')}</div>\n\t\t\t</button>\n\n\t\t\t{#each tags as tag}\n\t\t\t\t<button\n\t\t\t\t\tclass=\"px-2 py-0.5 space-x-1 flex h-fit items-center rounded-full transition bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:text-white\"\n\t\t\t\t\ton:click={async () => {\n\t\t\t\t\t\tselectedTag = tag;\n\t\t\t\t\t\t// await chats.set(await getChatListByTagName(localStorage.token, tag.name));\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<div class=\" text-xs font-medium self-center line-clamp-1\">\n\t\t\t\t\t\t#{tag}\n\t\t\t\t\t</div>\n\t\t\t\t</button>\n\t\t\t{/each}\n\t\t{:else}\n\t\t\t<div class=\"flex-1 flex w-full justify-between items-center\">\n\t\t\t\t<div class=\"text-xs font-medium py-0.5 self-center mr-1\">\n\t\t\t\t\t{filteredDocs.filter((doc) => doc?.selected === 'checked').length} Selected\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"flex gap-1\">\n\t\t\t\t\t<!-- <button\n class=\"px-2 py-0.5 space-x-1 flex h-fit items-center rounded-full transition bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:text-white\"\n on:click={async () => {\n selectedTag = '';\n // await chats.set(await getChatListByTagName(localStorage.token, tag.name));\n }}\n >\n <div class=\" text-xs font-medium self-center line-clamp-1\">add tags</div>\n </button> -->\n\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"px-2 py-0.5 space-x-1 flex h-fit items-center rounded-full transition bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:text-white\"\n\t\t\t\t\t\ton:click={async () => {\n\t\t\t\t\t\t\tdeleteDocs(filteredDocs.filter((doc) => doc.selected === 'checked'));\n\t\t\t\t\t\t\t// await chats.set(await getChatListByTagName(localStorage.token, tag.name));\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div class=\" text-xs font-medium self-center line-clamp-1\">\n\t\t\t\t\t\t\t{$i18n.t('delete')}\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</div>\n\t\t{/if}\n\t</div>\n{/if}\n\n<div class=\"my-3 mb-5\">\n\t{#each filteredDocs as doc}\n\t\t<button\n\t\t\tclass=\" flex space-x-4 cursor-pointer text-left w-full px-3 py-2 dark:hover:bg-white/5 hover:bg-black/5 rounded-xl\"\n\t\t\ton:click={() => {\n\t\t\t\tif (doc?.selected === 'checked') {\n\t\t\t\t\tdoc.selected = 'unchecked';\n\t\t\t\t} else {\n\t\t\t\t\tdoc.selected = 'checked';\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<div class=\"my-auto flex items-center\">\n\t\t\t\t<Checkbox state={doc?.selected ?? 'unchecked'} />\n\t\t\t</div>\n\t\t\t<div class=\" flex flex-1 space-x-4 cursor-pointer w-full\">\n\t\t\t\t<div class=\" flex items-center space-x-3\">\n\t\t\t\t\t<div class=\"p-2.5 bg-red-400 text-white rounded-lg\">\n\t\t\t\t\t\t{#if doc}\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\t\t\t\tclass=\"w-6 h-6\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\td=\"M5.625 1.5c-1.036 0-1.875.84-1.875 1.875v17.25c0 1.035.84 1.875 1.875 1.875h12.75c1.035 0 1.875-.84 1.875-1.875V12.75A3.75 3.75 0 0 0 16.5 9h-1.875a1.875 1.875 0 0 1-1.875-1.875V5.25A3.75 3.75 0 0 0 9 1.5H5.625ZM7.5 15a.75.75 0 0 1 .75-.75h7.5a.75.75 0 0 1 0 1.5h-7.5A.75.75 0 0 1 7.5 15Zm.75 2.25a.75.75 0 0 0 0 1.5H12a.75.75 0 0 0 0-1.5H8.25Z\"\n\t\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\td=\"M12.971 1.816A5.23 5.23 0 0 1 14.25 5.25v1.875c0 .207.168.375.375.375H16.5a5.23 5.23 0 0 1 3.434 1.279 9.768 9.768 0 0 0-6.963-6.963Z\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tclass=\" w-6 h-6 translate-y-[0.5px]\"\n\t\t\t\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t><style>\n\t\t\t\t\t\t\t\t\t.spinner_qM83 {\n\t\t\t\t\t\t\t\t\t\tanimation: spinner_8HQG 1.05s infinite;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t.spinner_oXPr {\n\t\t\t\t\t\t\t\t\t\tanimation-delay: 0.1s;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t.spinner_ZTLf {\n\t\t\t\t\t\t\t\t\t\tanimation-delay: 0.2s;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t@keyframes spinner_8HQG {\n\t\t\t\t\t\t\t\t\t\t0%,\n\t\t\t\t\t\t\t\t\t\t57.14% {\n\t\t\t\t\t\t\t\t\t\t\tanimation-timing-function: cubic-bezier(0.33, 0.66, 0.66, 1);\n\t\t\t\t\t\t\t\t\t\t\ttransform: translate(0);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t28.57% {\n\t\t\t\t\t\t\t\t\t\t\tanimation-timing-function: cubic-bezier(0.33, 0, 0.66, 0.33);\n\t\t\t\t\t\t\t\t\t\t\ttransform: translateY(-6px);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t100% {\n\t\t\t\t\t\t\t\t\t\t\ttransform: translate(0);\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</style><circle class=\"spinner_qM83\" cx=\"4\" cy=\"12\" r=\"2.5\" /><circle\n\t\t\t\t\t\t\t\t\tclass=\"spinner_qM83 spinner_oXPr\"\n\t\t\t\t\t\t\t\t\tcx=\"12\"\n\t\t\t\t\t\t\t\t\tcy=\"12\"\n\t\t\t\t\t\t\t\t\tr=\"2.5\"\n\t\t\t\t\t\t\t\t/><circle class=\"spinner_qM83 spinner_ZTLf\" cx=\"20\" cy=\"12\" r=\"2.5\" /></svg\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\" self-center flex-1\">\n\t\t\t\t\t\t<div class=\" font-semibold line-clamp-1\">#{doc.name} ({doc.filename})</div>\n\t\t\t\t\t\t<div class=\" text-xs overflow-hidden text-ellipsis line-clamp-1\">\n\t\t\t\t\t\t\t{doc.title}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"flex flex-row space-x-1 self-center\">\n\t\t\t\t<button\n\t\t\t\t\tclass=\"self-center w-fit text-sm z-20 px-2 py-2 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label={$i18n.t('Edit Doc')}\n\t\t\t\t\ton:click={async (e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tshowEditDocModal = !showEditDocModal;\n\t\t\t\t\t\tselectedDoc = doc;\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<svg\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tstroke-width=\"1.5\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tclass=\"w-4 h-4\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<path\n\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\td=\"M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L6.832 19.82a4.5 4.5 0 01-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 011.13-1.897L16.863 4.487zm0 0L19.5 7.125\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\n\t\t\t\t<!-- <button\n class=\"self-center w-fit text-sm px-2 py-2 border dark:border-gray-600 rounded-xl\"\n type=\"button\"\n on:click={() => {\n console.log('download file');\n }}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n class=\"w-4 h-4\"\n >\n <path\n d=\"M8.75 2.75a.75.75 0 0 0-1.5 0v5.69L5.03 6.22a.75.75 0 0 0-1.06 1.06l3.5 3.5a.75.75 0 0 0 1.06 0l3.5-3.5a.75.75 0 0 0-1.06-1.06L8.75 8.44V2.75Z\"\n />\n <path\n d=\"M3.5 9.75a.75.75 0 0 0-1.5 0v1.5A2.75 2.75 0 0 0 4.75 14h6.5A2.75 2.75 0 0 0 14 11.25v-1.5a.75.75 0 0 0-1.5 0v1.5c0 .69-.56 1.25-1.25 1.25h-6.5c-.69 0-1.25-.56-1.25-1.25v-1.5Z\"\n />\n </svg>\n </button> -->\n\n\t\t\t\t<button\n\t\t\t\t\tclass=\"self-center w-fit text-sm px-2 py-2 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label={$i18n.t('Delete Doc')}\n\t\t\t\t\ton:click={(e) => {\n\t\t\t\t\t\te.stopPropagation();\n\n\t\t\t\t\t\tdeleteDoc(doc.name);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<svg\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tstroke-width=\"1.5\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tclass=\"w-4 h-4\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<path\n\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\td=\"M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</button>\n\t{/each}\n</div>\n\n<div class=\" text-gray-500 text-xs mt-1 mb-2\">\n\tⓘ {$i18n.t(\"Use '#' in the prompt input to load and select your documents.\")}\n</div>\n\n<div class=\" flex justify-end w-full mb-2\">\n\t<div class=\"flex space-x-2\">\n\t\t<input\n\t\t\tid=\"documents-import-input\"\n\t\t\tbind:this={documentsImportInputElement}\n\t\t\tbind:files={importFiles}\n\t\t\ttype=\"file\"\n\t\t\taccept=\".json\"\n\t\t\thidden\n\t\t\ton:change={() => {\n\t\t\t\tconsole.log(importFiles);\n\n\t\t\t\tconst reader = new FileReader();\n\t\t\t\treader.onload = async (event) => {\n\t\t\t\t\tconst savedDocs = JSON.parse(event.target.result);\n\t\t\t\t\tconsole.log(savedDocs);\n\n\t\t\t\t\tfor (const doc of savedDocs) {\n\t\t\t\t\t\tawait createNewDoc(\n\t\t\t\t\t\t\tlocalStorage.token,\n\t\t\t\t\t\t\tdoc.collection_name,\n\t\t\t\t\t\t\tdoc.filename,\n\t\t\t\t\t\t\tdoc.name,\n\t\t\t\t\t\t\tdoc.title,\n\t\t\t\t\t\t\tdoc.content\n\t\t\t\t\t\t).catch((error) => {\n\t\t\t\t\t\t\ttoast.error(error);\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tawait documents.set(await getDocs(localStorage.token));\n\t\t\t\t};\n\n\t\t\t\treader.readAsText(importFiles[0]);\n\t\t\t}}\n\t\t/>\n\n\t\t<button\n\t\t\tclass=\"flex text-xs items-center space-x-1 px-3 py-1.5 rounded-xl bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 dark:text-gray-200 transition\"\n\t\t\ton:click={() => {\n\t\t\t\tdocumentsImportInputElement.click();\n\t\t\t}}\n\t\t>\n\t\t\t<div class=\" self-center mr-2 font-medium line-clamp-1\">\n\t\t\t\t{$i18n.t('Import Documents Mapping')}\n\t\t\t</div>\n\n\t\t\t<div class=\" self-center\">\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\tclass=\"w-4 h-4\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\td=\"M4 2a1.5 1.5 0 0 0-1.5 1.5v9A1.5 1.5 0 0 0 4 14h8a1.5 1.5 0 0 0 1.5-1.5V6.621a1.5 1.5 0 0 0-.44-1.06L9.94 2.439A1.5 1.5 0 0 0 8.878 2H4Zm4 9.5a.75.75 0 0 1-.75-.75V8.06l-.72.72a.75.75 0 0 1-1.06-1.06l2-2a.75.75 0 0 1 1.06 0l2 2a.75.75 0 1 1-1.06 1.06l-.72-.72v2.69a.75.75 0 0 1-.75.75Z\"\n\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t</button>\n\n\t\t<button\n\t\t\tclass=\"flex text-xs items-center space-x-1 px-3 py-1.5 rounded-xl bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 dark:text-gray-200 transition\"\n\t\t\ton:click={async () => {\n\t\t\t\tlet blob = new Blob([JSON.stringify($documents)], {\n\t\t\t\t\ttype: 'application/json'\n\t\t\t\t});\n\t\t\t\tsaveAs(blob, `documents-mapping-export-${Date.now()}.json`);\n\t\t\t}}\n\t\t>\n\t\t\t<div class=\" self-center mr-2 font-medium line-clamp-1\">\n\t\t\t\t{$i18n.t('Export Documents Mapping')}\n\t\t\t</div>\n\n\t\t\t<div class=\" self-center\">\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\tclass=\"w-4 h-4\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\td=\"M4 2a1.5 1.5 0 0 0-1.5 1.5v9A1.5 1.5 0 0 0 4 14h8a1.5 1.5 0 0 0 1.5-1.5V6.621a1.5 1.5 0 0 0-.44-1.06L9.94 2.439A1.5 1.5 0 0 0 8.878 2H4Zm4 3.5a.75.75 0 0 1 .75.75v2.69l.72-.72a.75.75 0 1 1 1.06 1.06l-2 2a.75.75 0 0 1-1.06 0l-2-2a.75.75 0 0 1 1.06-1.06l.72.72V6.25A.75.75 0 0 1 8 5.5Z\"\n\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t</button>\n\t</div>\n</div>\n"],"names":["ctx","insert_hydration","target","div15","anchor","append_hydration","div1","div0","button0","div14","div13","form","div11","div5","div2","div4","div3","input0","set_input_value","div8","div6","div7","input1","div10","div9","div12","button1","set_data","t0","t0_value","t3","t3_value","dirty","t8","t8_value","t11","t11_value","t14","t14_value","i18n","getContext","show","$$props","selectedDoc","tags","doc","submitHandler","updateDocByName","error","toast","documents","getDocs","addTagHandler","tagName","tag","$$invalidate","tagDocByName","deleteTagHandler","onMount","_a","t","t_value","create_if_block","input","button2","t5","t5_value","uploadDoc","uploadDocInputElement","inputFiles","file","SUPPORTED_FILE_TYPE","SUPPORTED_FILE_EXTENSIONS","$i18n","$$value","div","func_1","func_2","func_3","show_if","func","checkbox_changes","func_4","button","i","t1","t1_value","svg","style","circle0","circle1","circle2","path0","path1","svg0","svg1","current","t7_value","document_1","title_value","create_if_block_3","create_if_block_1","span","hr","t4","t4_value","t7","each_blocks","t16","t16_value","t19","t19_value","t22","t22_value","saveAs","fileSaver","importFiles","query","documentsImportInputElement","showAddDocModal","showEditDocModal","selectedTag","dragged","deleteDoc","name","deleteDocByName","deleteDocs","docs","transcribeRes","transcribeAudio","blob","blobToFile","uploadedFile","uploadFile","res","processDocToVectorDB","createNewDoc","transformFileName","a","e","arr","dropZone","onDragOver","onDragLeave","onDrop","reader","event","_b","filteredDocs","value","each_value","doc_index","savedDocs","$documents"],"mappings":"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"} |