{"version":3,"file":"ProductsImportFromCsvOrXlsPane-Bcf9HyB9.js","sources":["../../../../../../frontend/src/components/PaginationCompact.vue","../../../../../../frontend/src/utilities/Csv.ts","../../../../../../frontend/src/utilities/Xls.ts","../../../../../../frontend/src/pages/projects/forms/ProductsImportFromCsvOrXlsPane.vue"],"sourcesContent":["\ndiv(class='pagination-compact') \n div(:data-tooltip='$t(\"Previous Page\")')\n btn(:disabled='disabledComputed || (!loop && current === 1)' plain tiny icon='arrow-left' @click='() => (current = current > 1 ? current - 1 : pages.length)')\n div(:data-tooltip='$t(\"Next Page\")')\n btn(:disabled='disabledComputed || (!loop && current === pages.length)' plain tiny icon='arrow-right' @click='() => (current = current >= pages.length ? 1 : current + 1)')\n control-select#pagination-select(v-if='!noSelectBox' v-model='current' plain inline tiny :options='pagesAsOptions' size='small' :disabled='disabledComputed || total < pageSize')\n div(v-else) {{ current }} / {{ pages.length }}\n\n\n\n\n","// @ts-expect-error\nimport * as csvjson from 'csvjson'\n\nexport const guessDelimiter = (csvAsText: string) => {\n const firstLine = csvAsText.split('\\n')[0]\n return firstLine.split(',').length > firstLine.split(';').length ? ',' : ';'\n}\n\nexport const convertCSV = (rawCSVString: string, delimiter: string = ';', minFieldNum: number = 3) => {\n let returnValue\n try {\n returnValue = csvjson\n .toObject(rawCSVString.replaceAll(/(\"[^\"\\n]*)\\r?\\n(?!(([^\"]*\"){2})*[^\"]*$)/g, '$1 '), {\n delimiter,\n quote: '\"',\n })\n .filter((line: any) => Object.values(line).filter((v) => !!v).length > minFieldNum)\n } catch (e) {\n returnValue = []\n }\n return returnValue\n}\n\nexport const convertCSVToObject = async (csvString: string) => {\n const delimiter = guessDelimiter(csvString)\n const data = convertCSV(csvString, delimiter)\n const keys = Object.keys(data[0])\n return { keys, data }\n}\n","import ExcelJS from 'exceljs'\nimport { isPrimitive, isDate, unique } from 'radash'\n\nexport const isHyperlink = (value: ExcelJS.CellValue): value is ExcelJS.CellHyperlinkValue =>\n (value as ExcelJS.CellHyperlinkValue)?.hyperlink !== undefined\n\nexport const isPrimitiveValue = (value: ExcelJS.CellValue): value is string | number | boolean => isPrimitive(value)\nexport const isDateValue = (value: ExcelJS.CellValue): value is Date => isDate(value)\n\nexport const convertXLSToObject = async (\n arrayBuffer: ArrayBuffer,\n selectSheetFn: (sheets: ExcelJS.Worksheet[]) => Promise,\n selectHeadlineRowIndex: (sheet: ExcelJS.Worksheet) => Promise,\n) => {\n const workbook = await new ExcelJS.Workbook().xlsx.load(arrayBuffer)\n const sheetId = await selectSheetFn(workbook.worksheets)\n if (sheetId === undefined) {\n return undefined\n }\n const sheet = workbook.getWorksheet(parseInt(sheetId as string))\n const result = Array.from(new Array(sheet!.rowCount))\n let maxCellCount = 0\n sheet!.eachRow((row, rowNumber) => {\n result[row.number - 1] = Array.from(new Array(row.cellCount))\n maxCellCount = row.cellCount > maxCellCount ? row.cellCount : maxCellCount\n row.eachCell(\n (cell, number) =>\n (result[rowNumber - 1][number - 1] = isHyperlink(cell.value)\n ? cell.value?.hyperlink\n : isPrimitiveValue(cell.value)\n ? `${cell.value}`.trim()\n : isDate(cell.value)\n ? cell.value.toDateString()\n : ''),\n )\n })\n\n // add images if there are any\n const images = sheet!.getImages()\n images\n // remove images without coordinates\n .filter((image) => image.range.br || image.range.tl)\n // use either tl or br anchor\n .map((image) => [image.imageId, image.range.br || image.range.tl] as [string, ExcelJS.Anchor])\n .forEach(\n ([imageId, anchor]) =>\n (result[anchor.nativeRow][anchor.nativeCol] =\n 'data:image/png;base64,' + workbook.getImage(parseInt(imageId)).buffer?.toString('base64')),\n )\n\n const headlineRowIndex = await selectHeadlineRowIndex(sheet!)\n if (headlineRowIndex === undefined) {\n return undefined\n }\n const keys = [...result[headlineRowIndex - 1]]\n const filteredResult = result.slice(headlineRowIndex, result.length).filter(\n (row) =>\n row &&\n // remove rows that are most likely headline rows\n unique(row).filter((cell: string | undefined) => !!cell).length > 3,\n )\n\n const data = filteredResult.map((row) =>\n Object.fromEntries(row.map((cell: string, index: number) => [keys[index], cell])),\n )\n\n return { keys, data }\n}\n","\ndiv(class='bleed relative mb-5 flex min-h-0 flex-1 flex-col')\n div(class='unbleed flex flex-col')\n overlay(:visible='loading')\n drilldown(:modelValue='index' class='flex w-full flex-1')\n drilldown-item(:id='1')\n div(class='unbleed')\n p(\n class='prose mb-6 max-w-full text-sm text-text-light'\n v-html='$t(\"Ordne hier die Felder aus deiner CSV- oder Excel-Datei unseren Feldern zu. Wichtig ist dabei, dass Felder für Produktname, Produktnummer und Hersteller vorhanden sind. So finden Deine Daten den richtigen Weg in unsere Plattform.\")'\n )\n table(class='w-full max-w-full')\n tr\n th(class='w-[70%] pb-3 font-lato text-base font-bold') {{ $t('Felder aus Datei') }}\n th(class='pb-3 font-lato text-base font-bold') {{ $t('nuucon Felder') }}\n th\n template(v-for='field in externalProductFields' :key='field.key')\n tr(class='border-b-[2px] border-b-white')\n td(class='pr-2 align-top')\n div(class='flex items-center')\n control-label(class='!m-0 !p-0')\n control-multi-select(v-model='fieldMap[field.key]' :options='options' :searchable='false' :close-on-select='false')\n template(#aside='{ selectedOptions }')\n div(class='relative top-0 ml-2 flex-1 rounded-r bg-grey-75' @click.prevent.stop='() => false')\n div(class='sticky left-0 top-0 w-full overflow-auto p-3')\n div(v-for='option in selectedOptions' :key='option.value')\n div(class='flex text-sm font-bold')\n div(class='flex-1') {{ $t('Vorschau') }}\n pagination-compact(v-model='sampleIndex' compact loop class='text-xs font-normal' :total='data.length' :pageSize='9' no-select-box)\n code(class='text-sm font-light') !{ ' ' } ({{ option.value }})\n div(v-for='(item, index2) in getPreviewValuesFromOption(option).slice(sampleIndex - 1, sampleIndex + 9 - 1)' :key='item.value' class='bg-grey-75 pt-2')\n hr\n code(class='my-3 overflow-auto break-all text-xs text-text-light')\n span(class='text-text-light') {{ (sampleIndex - 1) * 9 + index2 + 1 }}. !{ ' ' }\n span(v-if='!isImage(item)') {{ item || '-' }}\n img(v-else :src='item' class='mix-blend-multiply')\n icon(name='arrow-right' class='ml-3')\n td(class='pr-4 align-top')\n div(class='flex items-center')\n control-input(disabled :modelValue='$t(field.key)')\n th\n tooltip-button(v-if='fieldMap[field.key]' plain-success popoverType='success' icon='custom-check-circle' class='ml-1' small :text='$t(\"Feld zugeordnet.\")' :debounce='10')\n tooltip-button(v-else-if='field.description' class='ml-1' small :text='$t(field.description)' :debounce='10')\n tooltip-button(\n v-if='field.required && !fieldMap[field.key]'\n plain-danger\n popoverType='danger'\n icon='alert-triangle'\n class='ml-1'\n small\n :text='$t(\"Dieses Feld wird benötigt.\")'\n :debounce='10'\n )\n tr\n td(colspan='3')\n div(class='my-2 flex flex-wrap gap-4')\n btn(link link-inline icon='rotate-cw' :disabled='isFieldMapEmpty' @click='resetMapping') {{ $t('Felder zurücksetzen') }}\n btn(link link-inline icon='zap' @click='guessFields') {{ $t('Felder automatisch zuordnen') }}\n btn(v-if='!isCSV' link link-inline icon='table' @click='() => init(false, true)') {{ $t('Datenblatt/Tabellenkopfzeile neu zuordnen') }}\n drilldown-item(:id='2')\n div(v-if='mappedProducts.length' class='mb-5 flex-1')\n div(class='unbleed')\n p(\n class='prose mb-6 max-w-full text-sm text-text-light'\n v-html='$t(\"Wähle hier die Produkte aus die zu Projekt oder Anfrage hinzugefügt werden sollen. Die ausgewählten Produkte werden als Wunschprodukte angelegt und können innerhalb des Projekts nachträglich bearbeitet werden.\")'\n )\n custom-data-table(v-model='selectedItems' :items='mappedProducts' :config='config' type='multiselect')\n template(#before='{ selected }')\n checkbox-icon(:value='selected')\n template(#ImageUrl='{ value }')\n div(class='w-[50px]')\n img(v-if='value' class='mix-blend-multiply' :src='value')\n img(v-else class='rounded bg-grey-75' src='/images/nuucon-image-placeholder.svg')\n template(#Name='{ item }')\n div(class='break-all text-sm text-text-light') {{ item.Brand }}\n div\n b {{ item.Name }}\n div(v-if='item.productUrl')\n a(:href='item.productUrl' class='text-sm') {{ item.productUrl }}\n text-auto-expand(:text='item.Description' class='whitespace-pre-wrap text-sm' :maxNewLines='5')\n template(#Quantity='{ value }')\n div {{ value }}\n template(#Price='{ value }')\n div {{ formatPrice(value) }}\nsticky-container(enabled position='bottom' class='bleed py-4')\n div(class='unbleed')\n notification(\n v-if='errorneousFields.length'\n type='error'\n class='my-5'\n :message='$t(\"Die folgenden Felder enthalten Fehler oder sind nicht in jedem Produkt vorhanden: {0}\", \"\", [errorneousFields.map((v) => $t(v)).join(\", \")])'\n )\n action-bar(v-if='index === 1')\n template(#left)\n btn(tertiary @click='$emit(\"close\")') {{ $t('close') }}\n btn(secondary medium icon='arrow-left' @click='resetWithConfirm()') {{ $t('back') }}\n btn(medium icon='arrow-right' icon-right :disabled='loading || !data.length || notAllRequiredFieldsMapped' @click='index = 2') {{ $t('Weiter zur Vorschau und Auswahl') }}\n\n action-bar(v-else)\n template(#left)\n btn(tertiary @click='$emit(\"close\")') {{ $t('close') }}\n\n btn(medium secondary icon='arrow-left' @click='index = 1') {{ $t('back') }}\n btn(:loading='loading' medium :disabled='loading || !data.length || !mappedProducts.length || !selectedItems.length' @click='submit')\n span(v-html='$tc(\"Add {0} product(s)\", selectedItems.length)')\n\n\n\n"],"names":["PaginationCompact","defineComponent","ControlSelect","Btn","props","context","$t","useTranslation","disabled","computed","pages","current","useVModel","i","pagesAsOptions","value","guessDelimiter","csvAsText","firstLine","convertCSV","rawCSVString","delimiter","minFieldNum","returnValue","csvjson.toObject","line","e","convertCSVToObject","csvString","__async","data","isHyperlink","isPrimitiveValue","isPrimitive","convertXLSToObject","arrayBuffer","selectSheetFn","selectHeadlineRowIndex","workbook","ExcelJS","sheetId","sheet","result","maxCellCount","row","rowNumber","cell","number","_a","isDate","image","imageId","anchor","headlineRowIndex","keys","unique","index","externalProductFields","parseNumber","translations","__props","promptSelect","prompt","confirm","useConfirm","add","emit","__emit","isCSV","getInitialFieldMap","field","fieldMap","useGlobalCsvOrXlsImportState","externalProductFieldMap","objectify","item","options","key","mappedProducts","rawData","loading","ref","sampleIndex","guessFields","fuse","Fuse","multiSearch","terms","term","a","b","mapEntries","_b","selectedItems","notAllRequiredFieldsMapped","f","errorneousFields","resetMapping","reset","resetWithConfirm","init","resetOnAbort","force","reader","sheets","onMounted","isFieldMapEmpty","v","isImage","getPreviewValuesFromOption","option","submit","mappedProductsMap","id","p","addImageFromUrl","addImageFromB64","snake","thorFormPostPromise","__spreadProps","__spreadValues","response","config"],"mappings":"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"}