{"version":3,"sources":["webpack:///./src/pdf/advanced-quoter/table-general.js","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncIterator.js","webpack:///./src/pdf/advanced-quoter/image-transformation.js","webpack:///./src/pdf/advanced-quoter/style.js","webpack:///./src/pdf/advanced-quoter/signatures.js","webpack:///./src/pdf/advanced-quoter/office-details.js","webpack:///./src/pdf/advanced-quoter/data-format.js","webpack:///./src/pdf/advanced-quoter/data-table.js","webpack:///./src/pdf/advanced-quoter/main.js","webpack:///./src/components/quoter/GenerateMappingWithPdf.vue","webpack:///src/components/quoter/GenerateMappingWithPdf.vue","webpack:///./src/components/quoter/GenerateMappingWithPdf.vue?1eaf","webpack:///./src/components/quoter/GenerateMappingWithPdf.vue?182e","webpack:///./node_modules/core-js/modules/es.array.with.js","webpack:///./node_modules/core-js/internals/array-with.js"],"names":["primaryColor","secondaryColor","language","monedaFormatter","Intl","NumberFormat","style","currency","maximumFractionDigits","generateTableGeneral","doc","structure","propertie","getLanguage","generateTablePropertie","_structure$style$cont","_structure$style$cont2","_structure$packedPric","_structure$packedPric2","_structure$packedPric3","_structure$packedPric4","_propertie$pricing$pr","_propertie$pricing","_structure$packedPric5","_structure$packedPric6","_structure$packedPric7","_structure$packedPric8","_structure$packedPric9","_word","container_one","container_two","wantedTableWidth","pageWidth","internal","pageSize","getWidth","margin","percentage_down_payment","packedPriceRule","seletedPriceRules","priceRules","concat","_toConsumableArray","priceRuleApplied","priceRulesDiscount","extraDiscounts","months","months_agreed","addPage","building","total","construction","pricing","pricePropertie","price","totalDiscounts","getTotalDiscounts","percentageTotalDiscounts","toFixed","namePropertie","floor","name","nameLote","code","priceFinal","enganche","guarantee_deposit","percentage_financing","financing","adminCost","admin_cost","background","_imgFrontLogoCenter","imgFrontLogoCenter","posY","imgHeight","title","word","generateTitleTable","autoTable","theme","startY","head","content","body","format","isNaN","left","right","showHead","bodyStyles","fontSize","columnStyles","0","cellWidth","fillColor","textColor","1","styles","lineColor","halign","fontStyle","allSectionHooks","didParseCell","data","row","section","cell","cells","index","lineWidth","bottom","tableLineColor","tableLineWidth","generateTableCondiciones","generatePayTable","color","positionY","textWidth","getTextWidth","centerX","setFontSize","setFont","setTextColor","text","toUpperCase","items","percent","amount","forEach","e","type","value","_structure$packedPric10","_structure$packedPric11","_structure$packedPric12","_structure$packedPric13","_structure$packedPric14","_structure$packedPric15","_structure$packedPric16","_structure$packedPric17","_structure$packedPric18","_structure$packedPric19","_structure$packedPric20","_word2","percentage_financing_interest","financing_interest","undefined","termination_payment","_imgFrontLogoCenter2","generateBodyPayTable","headStyles","cellPadding","top","_ref","currentDate","Date","saldoCapital","rowApartado","toLocaleDateString","push","rowEnganche","countEnganche","capital","countCapital","Array","from","length","map","_","rowMonth","Math","abs","currentMonth","getMonth","setMonth","rowFinal","firstTableEndPos","lastAutoTable","finalY","_asyncIterator","iterable","method","async","sync","retry","Symbol","asyncIterator","iterator","call","AsyncFromSyncIterator","TypeError","s","AsyncFromSyncIteratorContinuation","r","Object","Promise","reject","done","resolve","then","this","n","next","prototype","apply","arguments","ret","thr","featured_image","logo","logo_footer","title_color","title2_color","text3_color","text_color","addPictures","_x","_x2","_addPictures","_asyncToGenerator","_regeneratorRuntime","mark","_callee","document","coordsMap","wrap","_context","prev","createTwoImages","stop","addPicturesLots","_x3","_x4","_x5","_x6","_addPicturesLots","_callee2","lang","_context2","createTwoImagesLots","addPictureLotInUnitDetail","_x7","_x8","_x9","_addPictureLotInUnitDetail","_callee3","_context3","createOneImageLot","create","_x10","_create","_callee4","canva","_context4","html2canvas","querySelector","removeContainer","useCORS","allowTaint","windowWidth","Window","innerWidth","windowHeight","innerHeight","onclone","clonedDoc","getElementById","opacity","sent","abrupt","_x11","_createTwoImages","_callee5","dt","count","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_step","_dt","_context5","t0","embedImages","plane","id","t1","front","t2","t3","t4","t5","t6","embedImagesMany","t7","t8","t9","return","finish","_x12","_x13","_embedImages","_callee6","c1","c2","one_img","_context6","render_img","with","_x14","_x15","_embedImagesMany","_callee7","_context7","img","size","x","y","dtaImg","getImageProperties","scala","height","width","addImage","render_img_doc","imgOne","imgTwo","sizeOne","calculateSize","sizeTwo","totalWithSize","pointSize","render_img_doc_in_unit_detail","scale","lotsImg","_structure$dataFrontP","includes","dataFrontPage","nameDev","toLowerCase","dateXPosition","dateYPosition","meses","generationDate","day","String","getDate","padStart","year","getFullYear","formattedDate","month","textFont","_x17","_x18","_createTwoImagesLots","_callee9","validRender","_iteratorAbruptCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","_dt2","_context9","coords","real_estate_group_id","t10","t11","t12","t13","t14","t15","t16","t17","_x19","_createOneImageLot","_callee10","_iteratorAbruptCompletion3","_didIteratorError3","_iteratorError3","_iterator3","_step3","_dt3","_context10","renderSignatures","people","WIDTH_DOC","SIGNATURE_WIDTH","SPACING","TOTAL_SIGNATURE_WIDTH","START_X","START_Y","person","posX","createSignature","drawSignatureLine","addSignatureText","toLocaleUpperCase","font","setLineWidth","line","options","TEXT_X","TEXT_Y","align","contactMedia","configStyle","styleDefault","defineStyle","colors","blue","setDrawColor","setFillColor","rect","backgroundTwo","c","widthTemp","frontPage","dataPage","imgFrontLogo","imgFrontLogoRight","imgFrontImgFeature","applyDataPage","setProperties","subject","author","keywords","creator","_scaleImageSize","_scaleImageSize2","scaleImageSize","_slicedToArray","imgWidthHead","imgHeightHead","_ref2","scalaSize","_scaleImageSize3","_scaleImageSize4","decodeURIComponent","_scaleImageSize5","_scaleImageSize6","_ref3","_ref4","_scaleImageSize7","_scaleImageSize8","_scaleImageSize9","_scaleImageSize10","_scaleImageSize11","_scaleImageSize12","_positionSacale","positionSacale","pageHeight","centerWidth","_scaleImageSize13","_scaleImageSize14","imgFeatureWidt","imgFeatureHeight","centerHeightFeature","centerWidthFeature","image","imgProps","_positionSacale2","centerHeight","imageWidth","imageHeight","getHeight","perimetro","area","nameLead","dataAgent","_dataFrontPage$nameDe","_dataFrontPage$nameDe2","phone","email","replace","developmentName","formattedStringDate","leftData","agent","dataFront","agentInfo","formattedAddress","address","media","src","tempColor","slice","imgSplit","split","newImage","toLocaleLowerCase","toString","encodeURI","arr","firstLine","secondLine","limit","i","rowSize","rows","getAddressArray","rw","tempRow","botttomLogo","unit","_positionSacale3","_scaleImageSize15","_scaleImageSize16","logoWidthFooter","logoHeightFooter","centerHeightFooter","centerWidthFooter","backCover","_scaleImageSize17","_scaleImageSize18","imgWidthEnd","imgHeightEnd","_positionSacale4","unitDetail","_unitDetail","_properties$0$real_es3","_properties$0$real_es4","properties","isCCC","ikonicLegend","_loop","_ret","contactSelected","real_estate_development","coords_map","_createForOfIteratorHelper","_structure$coords_map","_unit$real_estate_dev","_unit$real_estate_dev2","nameFloor","_unit$floor$name","_unit$floor2","titleHeader","currentCoordMap","_structure$businessMa","filter","item","validate","getTitleHeader","detailsUnitCCC","detailsUnit","blueprint","v","businessManager","delegateYield","f","a","plane_image","planeImg","_positionSacale5","_scaleImageSize19","_scaleImageSize20","_unit$building","_unit$building2","_unit$building3","_unit$building4","_unit$features","_unit$features2","_unit$features3","_unit$features4","separator","columnSeparator","fontSizeTitle","fontSizeText","baseX","baseY","Number","terrace","features","rooms","bathrooms","amenities","_unit$amenities$i$nam","AmenitieName","trim","amenitieAmount","unitName","_unit$building5","_unit$building6","_unit$building7","_unit$building8","construction_front","construction_back","construction_depth_left","construction_depth_right","_unit$floor","_unit$building9","_unit$tower","tower","part","join","LatoRegularnormal","LatoBoldnormal","LatoLightnormal","colorsA","officeDetail","dataDetail","formDetail","fields","init_x","init_y","increment","size_line","init_line","position_y","text_colum","line_colum","text_result","result","item_text","superFormat","getDataOffice","one","level","totalOffice","warehouse","totalMeters","offices","numberParkingSpaces","levelParkingLots","warehouseLevel","numberWarehouses","transformNumber","_getAmenityData","getAmenityData","_getAmenityData2","twarehouse","tparking","meters","totalMetersUnrounded","removeDuplicatesConcatenate","officeDataStructure","number","parseFloat","list","tp","Set","parking","dataTable","offerTable","process_type","offer","two","initPriceSIva","three","four","initPrice","columns","dataKey","mergeSchemeTable","packedRule","schema","workWithoutVAT","_dataFront$nameDev$to2","_dataFront$nameDev2","startYmergeTable","nameScheme","description","currencyType","_dataFront$nameDev$to","_dataFront$nameDev","finalPrice","schemaFormat","discountsData","discounts","positionFinalPrice","findIndex","splice","isMNXAmount","textAmount","presale","dts","officeDetailData","purchaseScheme","generateQuote","_generateQuote","quoteLots","quoteOffice","quoteDepartment","save","layout","_layout","jsPDF","quotePreview","_quotePreview","getAllData","_dataFrontPage","_objectSpread","_quoteLots","_quoteDepartment","render","_vm","_c","_self","setDataCoordsAndImg","_l","key","staticStyle","attrs","development","_e","staticRenderFns","components","CoordinateMapper","props","dataMap","default","enabled","Boolean","cuatroDatos","unitType","created","init","methods","unit_types","dataMapFinish","coordsAndImg","planeCoordinates","_this","coordsFloors","floors","b","fd","miscellaneous","mapping_coords","err","_this2","planeCoors","exit","planeCoord","_this2$dataMap","_this2$dataMap2","_find$media","_find$media2","_this2$dataMap3","_find$media3","_find$media4","find","coords_and_img","img_front","especifications","_this3","getDataFrontPage","quote","styles_pdf","$emit","dev","full_address","city","state","getImgs","getImgLogo","frontImg","getFrontImg","component","$","arrayWith","toIndexedObject","$Array","target","proto","lengthOfArrayLike","toIntegerOrInfinity","$RangeError","RangeError","module","exports","O","C","len","relativeIndex","actualIndex","A","k"],"mappings":"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","file":"js/chunk-46c6c9ac.04d86a15.js","sourcesContent":["import { background, imgFrontLogoCenter } from \"./style\";\nimport { word } from \"./multi-language\";\nlet primaryColor = \"#000000\";\nlet secondaryColor = \"#ffffff\";\nlet language = \"spanish\";\nconst monedaFormatter = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n maximumFractionDigits: 0\n});\nexport function generateTableGeneral(doc, structure, propertie) {\n language = getLanguage(structure);\n generateTablePropertie(doc, structure, propertie);\n}\n\nfunction generateTablePropertie(doc, structure, propertie) {\n // const nameDevelopment = structure.dataFrontPage.nameDev ?? \"\";\n primaryColor = structure.style.container_one ?? \"#000000\";\n secondaryColor = structure.style.container_two ?? \"#ffffff\";\n const wantedTableWidth = 400;\n const pageWidth = doc.internal.pageSize.getWidth();\n const margin = (pageWidth - wantedTableWidth) / 2;\n const percentage_down_payment =\n structure.packedPriceRule?.seletedPriceRules?.percentage_down_payment ??\n 100;\n const priceRules = [\n ...structure.packedPriceRule.priceRuleApplied.priceRulesDiscount,\n ...structure.packedPriceRule.priceRuleApplied.extraDiscounts\n ];\n const months =\n structure.packedPriceRule?.seletedPriceRules?.months_agreed ?? 0;\n doc.addPage();\n const building = propertie.building.total || propertie.building.construction;\n const currency = propertie.pricing.currency;\n const pricePropertie = propertie.pricing?.price ?? 0;\n const totalDiscounts = getTotalDiscounts(pricePropertie, priceRules);\n const percentageTotalDiscounts = (\n (totalDiscounts / pricePropertie) *\n 100\n ).toFixed(0);\n const namePropertie = propertie.floor.name;\n const nameLote = propertie.code;\n const priceFinal = pricePropertie - totalDiscounts;\n const enganche = (priceFinal * percentage_down_payment) / 100;\n // Apartado o Deposito\n const guarantee_deposit =\n structure.packedPriceRule?.seletedPriceRules?.guarantee_deposit ?? 0;\n // Financiamiento en porcentaje\n const percentage_financing =\n structure.packedPriceRule?.seletedPriceRules?.financing ?? 0;\n const adminCost = structure.packedPriceRule?.seletedPriceRules?.admin_cost;\n background(doc);\n const { posY, imgHeight } = imgFrontLogoCenter(doc);\n const title = word(102, language) ?? \"Cotización\";\n generateTitleTable(doc, title, secondaryColor, posY + imgHeight + 25);\n doc.autoTable({\n theme: \"plain\",\n startY: posY + imgHeight + 40,\n head: [\n [\n {\n content: \"Id\"\n },\n {\n content: \"Content\"\n }\n ]\n ],\n body: [\n [\"Nombre de la propiedad\", `${namePropertie}`],\n [\"Nombre del lote\", `Lote ${nameLote}`],\n [\"Superficie en m²\", `${building} m²`],\n [\"Precio m²\", `${monedaFormatter.format(pricePropertie / building)}`],\n [\"Porcentaje de Enganche\", `${percentage_down_payment}%`],\n [\"Enganche\", `${monedaFormatter.format(enganche)}`],\n [\"Apartado\", `${monedaFormatter.format(guarantee_deposit)}`],\n [\"Precio de Lista\", `${monedaFormatter.format(pricePropertie)}`],\n [\"Tipo de Moneda\", `${currency}`],\n [\n \"Descuento Total\",\n `${monedaFormatter.format(totalDiscounts)} (${\n isNaN(percentageTotalDiscounts) ? 0 : percentageTotalDiscounts\n }%)`\n ],\n [\"Precio final\", `${monedaFormatter.format(priceFinal)}`],\n ...(adminCost\n ? [[\"Gastos administrativos\", `${monedaFormatter.format(adminCost)}`]]\n : []),\n [\"Porcentaje de Financiamiento\", `${percentage_financing}%`],\n [\"Plazo\", `${months}`]\n ],\n margin: { left: margin, right: margin },\n showHead: false,\n bodyStyles: {\n fontSize: 20\n },\n columnStyles: {\n 0: {\n cellWidth: 200,\n fillColor: secondaryColor,\n textColor: primaryColor\n }, // Columna 'ID' con ancho de 20 unidades\n 1: {\n cellWidth: 200,\n fillColor: primaryColor,\n textColor: secondaryColor\n } // Columna 'Nombre' con ancho de 50 unidades\n },\n styles: {\n lineColor: primaryColor,\n halign: \"center\",\n fontStyle: \"light\"\n },\n allSectionHooks: true,\n // Use for customizing texts or styles of specific cells after they have been formatted by this plugin.\n // This hook is called just before the column width and other features are computed.\n didParseCell: function(data) {\n if (data.row.section === \"body\" && data.cell === data.row.cells[0]) {\n if (data.row.index === 12) {\n data.cell.styles.fillColor = secondaryColor; // cell background color\n data.cell.styles.lineColor = primaryColor; // cell border color\n data.cell.styles.lineWidth = {\n bottom: 0.5 // only bottom border will be painted\n };\n } else {\n data.cell.styles.fillColor = secondaryColor; // cell background color\n data.cell.styles.lineColor = primaryColor; // cell border color\n data.cell.styles.lineWidth = {\n bottom: 1 // only bottom border will be painted\n };\n }\n } else {\n if (data.row.index === 12) {\n data.cell.styles.lineColor = secondaryColor; // cell border color\n data.cell.styles.lineWidth = {\n bottom: 0.5, // only bottom border will be painted\n right: 0.5\n };\n } else {\n data.cell.styles.lineColor = secondaryColor; // cell border color\n data.cell.styles.lineWidth = {\n bottom: 1, // only bottom border will be painted\n right: 0.5\n };\n }\n }\n },\n tableLineColor: secondaryColor,\n tableLineWidth: 0.5\n });\n generateTableCondiciones(doc);\n generatePayTable(doc, structure, priceFinal);\n}\nconst generateTitleTable = (doc, title, color, positionY) => {\n const pageWidth = doc.internal.pageSize.getWidth();\n const textWidth = doc.getTextWidth(title);\n const centerX = (pageWidth - textWidth) / 2;\n doc.setFontSize(36); // Establece el tamaño de la fuente a 24px\n doc.setFont(\"Lato-Bold\", \"bold\");\n doc.setTextColor(color);\n doc.text(title.toUpperCase(), centerX, positionY);\n};\n\nconst getTotalDiscounts = (price, items) => {\n let percent = 0;\n let amount = 0;\n items.forEach(e => {\n percent += e.type === \"percentage\" ? e.value : 0;\n amount += e.type === \"fixed\" ? e.value : 0;\n });\n return (price * percent) / 100 + amount;\n};\n\nconst generatePayTable = (doc, structure, priceFinal) => {\n // Apartado o Deposito\n const guarantee_deposit =\n structure.packedPriceRule?.seletedPriceRules?.guarantee_deposit ?? 0;\n // Financiamiento en porcentaje\n const percentage_financing =\n structure.packedPriceRule?.seletedPriceRules?.financing;\n // A cuantos meses se difirio el financiamiento o el precio final\n const months_agreed =\n structure.packedPriceRule?.seletedPriceRules?.months_agreed ?? 1;\n // Con cuanto liquidara en porcentaje\n const percentage_down_payment =\n structure.packedPriceRule?.seletedPriceRules?.percentage_down_payment ??\n 100;\n const percentage_financing_interest =\n structure.packedPriceRule?.seletedPriceRules?.financing_interest ??\n undefined;\n const termination_payment =\n structure.packedPriceRule?.seletedPriceRules?.termination_payment ?? 0;\n\n const enganche = (priceFinal * percentage_down_payment) / 100;\n const financing = percentage_financing\n ? (priceFinal * percentage_financing) / 100\n : undefined;\n doc.addPage();\n const { posY, imgHeight } = imgFrontLogoCenter(doc);\n const title = word(101, language) ?? \"Pedido de Compra\";\n generateTitleTable(doc, title, \"#63656a\", posY + imgHeight + 35);\n const wantedTableWidth = 450;\n const pageWidth = doc.internal.pageSize.getWidth();\n const margin = (pageWidth - wantedTableWidth) / 2;\n const body = generateBodyPayTable({\n priceFinal: priceFinal,\n guarantee_deposit: guarantee_deposit,\n enganche: enganche,\n financing: financing,\n months_agreed: months_agreed,\n termination_payment: termination_payment,\n percentage_financing_interest: percentage_financing_interest\n });\n doc.autoTable({\n theme: \"grid\",\n startY: posY + imgHeight + 45,\n head: [\n [\n \"Número de pago\",\n \"Fecha\",\n \"Capital\",\n // \"Interés\",\n // \"Actualización\",\n \"Enganche\",\n \"\",\n \"Saldo Capital\"\n ]\n ],\n body: body,\n margin: { left: margin, right: margin },\n bodyStyles: {\n fontSize: 18\n },\n columnStyles: {\n 0: {\n fillColor: [220, 221, 222],\n textColor: [0, 0, 0]\n },\n 1: {\n fillColor: [220, 221, 222],\n textColor: [0, 0, 0]\n }\n },\n headStyles: {\n fillColor: [99, 101, 106],\n textColor: [255, 255, 255],\n fontSize: 20\n },\n styles: {\n halign: \"center\",\n fontStyle: \"light\",\n fillColor: [235, 236, 236],\n textColor: [0, 0, 0],\n cellPadding: { top: 4, right: 8, bottom: 4, left: 8 },\n lineColor: [242, 244, 244]\n }\n });\n};\n\nconst generateBodyPayTable = ({\n priceFinal,\n guarantee_deposit,\n enganche,\n financing,\n months_agreed,\n termination_payment\n // percentage_financing_interest\n}) => {\n let currentDate = new Date();\n let body = [];\n let saldoCapital = priceFinal;\n const rowApartado = [\n \"Apartado\",\n currentDate.toLocaleDateString(),\n \"\",\n // \"\",\n // \"\",\n monedaFormatter.format(guarantee_deposit),\n monedaFormatter.format(guarantee_deposit),\n \"\"\n ];\n body.push(rowApartado);\n const rowEnganche = [\n \"Enganche\",\n currentDate.toLocaleDateString(),\n \"\",\n // \"\",\n // \"\",\n monedaFormatter.format(enganche),\n monedaFormatter.format(enganche),\n \"\"\n ];\n body.push(rowEnganche);\n // let countEnganche = guarantee_deposit + enganche;\n let countEnganche = enganche;\n saldoCapital = financing ? financing : saldoCapital - enganche;\n // : saldoCapital - guarantee_deposit - enganche;\n const capital = saldoCapital / months_agreed;\n let countCapital = 0;\n Array.from({ length: months_agreed }).map((_, index) => {\n // let interesInsoluto = 0;\n // if (percentage_financing_interest) {\n // interesInsoluto = saldoCapital * (percentage_financing_interest / 100);\n // }\n saldoCapital = saldoCapital - capital;\n const rowMonth = [\n index + 1,\n currentDate.toLocaleDateString(),\n monedaFormatter.format(capital),\n // monedaFormatter.format(interesInsoluto),\n // monedaFormatter.format(0),\n monedaFormatter.format(0),\n monedaFormatter.format(capital),\n monedaFormatter.format(Math.abs(saldoCapital))\n ];\n body.push(rowMonth);\n countCapital = countCapital + capital;\n const currentMonth = currentDate.getMonth();\n currentDate.setMonth(currentMonth + 1);\n });\n\n const liquidacion = (priceFinal * termination_payment) / 100;\n saldoCapital - liquidacion;\n // const rowLiquidacion = [\n // \"Liquidacion\",\n // currentDate.toLocaleDateString(),\n // monedaFormatter.format(liquidacion),\n // monedaFormatter.format(0),\n // monedaFormatter.format(0),\n // monedaFormatter.format(0),\n // `${monedaFormatter.format(saldoCapital)}`\n // ];\n const rowFinal = [\n \"\",\n \"\",\n monedaFormatter.format(countCapital),\n // monedaFormatter.format(0),\n // monedaFormatter.format(0),\n monedaFormatter.format(countEnganche),\n monedaFormatter.format(countCapital + countEnganche),\n `${monedaFormatter.format(Math.abs(saldoCapital))}`\n ];\n body.push(rowFinal);\n return body;\n};\n\nfunction getLanguage(structure) {\n return structure?.language ? structure.language : \"spanish\";\n}\n\nconst generateTableCondiciones = doc => {\n const wantedTableWidth = 200;\n const firstTableEndPos = doc.lastAutoTable.finalY;\n const pageWidth = doc.internal.pageSize.getWidth();\n const margin = (pageWidth - wantedTableWidth) / 2;\n doc.autoTable({\n theme: \"plain\",\n startY: firstTableEndPos + 20,\n head: [\n [\n {\n content: \"\"\n },\n {\n content: \"CONDICIONES Y OBSERVACIONES\"\n }\n ]\n ],\n body: [\n [\n \"1)\",\n \"El bloqueo de la ubicación está sujeto al cumplimiento del plan de pagos del cliente.\"\n ],\n [\n \"2)\",\n \"Los gastos de escrituración no están incluidos en el plan de pago.\"\n ],\n [\n \"3)\",\n \"Cualquier cancelación de apartado deberá hacerse en un plazo no mayor a siete días para reintegrar el total de la cantidad apartada.\"\n ],\n [\n \"4)\",\n \"Una vez firmado el contrato, entrarán en vigor los términos y plazos establecidos en el mismo.\"\n ],\n [\n \"5)\",\n \"Los costos relativos a contratación de servicios, gastos notariales y cuotas de mantenimiento y fondo de reserva, correrán por cuenta de la compradora.\"\n ],\n [\n \"6)\",\n \"Operaciones de contado deberán liquidar el precio pactado en los siguientes 7 días naturales contando de la firma de este documento.\"\n ]\n ],\n margin: { left: margin, right: margin },\n headStyles: {\n fontSize: 16,\n fontStyle: \"bold\",\n textColor: \"#000000\",\n cellPadding: { top: 6, right: 0, bottom: 6, left: 10 },\n fillColor: \"#FFFFFF\"\n },\n bodyStyles: {\n fontSize: 12,\n fillColor: \"#FFFFFF\"\n },\n columnStyles: {\n 0: {\n cellWidth: 20,\n textColor: \"#000000\",\n halign: \"center\",\n fontStyle: \"light\",\n cellPadding: { top: 3, right: 0, bottom: 3, left: 10 }\n },\n 1: {\n cellWidth: 180,\n textColor: \"#000000\",\n cellPadding: { top: 3, right: 10, bottom: 3, left: 10 }\n }\n },\n styles: {\n lineColor: \"#000000\"\n },\n tableLineWidth: 0.5\n });\n};\n","export default function _asyncIterator(iterable) {\n var method,\n async,\n sync,\n retry = 2;\n for (\"undefined\" != typeof Symbol && (async = Symbol.asyncIterator, sync = Symbol.iterator); retry--;) {\n if (async && null != (method = iterable[async])) return method.call(iterable);\n if (sync && null != (method = iterable[sync])) return new AsyncFromSyncIterator(method.call(iterable));\n async = \"@@asyncIterator\", sync = \"@@iterator\";\n }\n throw new TypeError(\"Object is not async iterable\");\n}\nfunction AsyncFromSyncIterator(s) {\n function AsyncFromSyncIteratorContinuation(r) {\n if (Object(r) !== r) return Promise.reject(new TypeError(r + \" is not an object.\"));\n var done = r.done;\n return Promise.resolve(r.value).then(function (value) {\n return {\n value: value,\n done: done\n };\n });\n }\n return AsyncFromSyncIterator = function AsyncFromSyncIterator(s) {\n this.s = s, this.n = s.next;\n }, AsyncFromSyncIterator.prototype = {\n s: null,\n n: null,\n next: function next() {\n return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));\n },\n \"return\": function _return(value) {\n var ret = this.s[\"return\"];\n return void 0 === ret ? Promise.resolve({\n value: value,\n done: !0\n }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments));\n },\n \"throw\": function _throw(value) {\n var thr = this.s[\"return\"];\n return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments));\n }\n }, new AsyncFromSyncIterator(s);\n}","import html2canvas from \"html2canvas\";\nimport { background, title, textFont } from \"./style\";\nimport { word } from \"./multi-language\";\nlet doc;\nlet language = \"spanish\";\n\nexport async function addPictures(document, coordsMap) {\n doc = document;\n await createTwoImages(coordsMap);\n}\nexport async function addPicturesLots(document, coordsMap, lang, structure) {\n doc = document;\n if (lang) language = lang;\n await createTwoImagesLots(coordsMap, structure);\n}\n\nexport async function addPictureLotInUnitDetail(document, coordsMap, lang) {\n doc = document;\n if (lang) language = lang;\n await createOneImageLot(coordsMap);\n}\n\nasync function create(name) {\n const canva = await html2canvas(document.querySelector(\"#\" + name), {\n removeContainer: true,\n useCORS: true,\n allowTaint: true,\n windowWidth: Window.innerWidth,\n windowHeight: Window.innerHeight,\n\n onclone: function(clonedDoc) {\n clonedDoc.getElementById(name).style.opacity = \"1.0\";\n }\n });\n return canva;\n}\nasync function createTwoImages(coordsMap) {\n if (!coordsMap) return 0;\n if (coordsMap.length == 1) {\n const dt = coordsMap[0];\n embedImages(await create(dt.plane.id), await create(dt.front.id));\n return 0;\n } else if (coordsMap.length > 1) {\n let count = 0;\n\n for await (const dt of coordsMap) {\n if (count == 0) {\n embedImages(await create(dt.plane.id), await create(dt.front.id));\n } else {\n background(doc);\n title(doc, \"UBICACIÓN DE LA OFICINA\", 5, 10);\n embedImagesMany(await create(dt.plane.id), await create(dt.front.id));\n }\n count++;\n if (count != coordsMap.length) doc.addPage();\n }\n }\n return 0;\n}\nasync function embedImages(c1, c2) {\n const one_img = render_img(c1, 200, 120, 210);\n render_img(c2, 180, one_img.with + 180, 195);\n}\n\nasync function embedImagesMany(c1, c2) {\n const one_img = render_img(c1, 200, 120, 150);\n render_img(c2, 180, one_img.with + 180, 135);\n}\nexport async function list_images(items) {\n let imgAll = [];\n items.forEach(e => {\n let twoImg = { floor: e.floor };\n create(e.front.id).then(dt => {\n twoImg.front = dt;\n create(e.plane.id).then(dt => (twoImg.plane = dt));\n });\n\n imgAll.push(twoImg);\n });\n return imgAll;\n}\nfunction render_img(img, size, x, y) {\n const dtaImg = doc.getImageProperties(img);\n const scala = dtaImg.height / dtaImg.width;\n doc.addImage(img, \"JPEG\", x, y, size, size * scala);\n img = null;\n return {\n with: size,\n height: size * scala\n };\n}\n\nfunction render_img_doc(doc, imgOne, imgTwo) {\n const sizeOne = imgOne ? calculateSize(doc, imgOne) : { with: 0, height: 0 };\n const sizeTwo = imgTwo ? calculateSize(doc, imgTwo) : { with: 0, height: 0 };\n const totalWithSize = sizeOne.with + sizeTwo.with;\n const pointSize = 677.3 / 2 - totalWithSize / 2;\n\n if (imgOne)\n doc.addImage(\n imgOne,\n \"JPEG\",\n pointSize - 15,\n 381 / 2 - sizeOne.height / 2 + 15,\n sizeOne.with,\n sizeOne.height\n );\n if (imgTwo)\n doc.addImage(\n imgTwo,\n \"JPEG\",\n pointSize + sizeOne.with + 15,\n 381 / 2 - sizeTwo.height / 2 + 15,\n sizeTwo.with,\n sizeTwo.height\n );\n}\nfunction render_img_doc_in_unit_detail(doc, imgOne) {\n const sizeOne = calculateSize(doc, imgOne);\n const pointSize = 60;\n\n doc.addImage(\n imgOne,\n \"JPEG\",\n pointSize - 15,\n 381 / 2 - sizeOne.height / 2 + 15,\n sizeOne.with,\n sizeOne.height\n );\n}\nfunction calculateSize(doc, img) {\n const dtaImg = doc.getImageProperties(img);\n let scale;\n let width, height;\n if (dtaImg.height < dtaImg.width) {\n scale = dtaImg.height / dtaImg.width;\n width = 300;\n height = 300 * scale;\n } else if (dtaImg.height > dtaImg.width) {\n scale = dtaImg.width / dtaImg.height;\n width = 300 * scale;\n height = 300;\n } else if (dtaImg.height == dtaImg.width) {\n scale = dtaImg.height / dtaImg.width;\n width = 300;\n height = 300 * scale;\n }\n return {\n with: width,\n height: height\n };\n}\n\nexport function lotsImg(doc, c1, c2, structure) {\n background(doc);\n // Cambiar idioma... LOT LOCATION --English --- UBICACÓN DEL LOTE..\n title(doc, word(58, language), 5, 10);\n if (\n [\"ikonic tower\"].includes(structure?.dataFrontPage?.nameDev?.toLowerCase())\n ) {\n const dateXPosition = 10;\n const dateYPosition = 95;\n const months = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ];\n const meses = [\n \"Enero\",\n \"Febrero\",\n \"Marzo\",\n \"Abril\",\n \"Mayo\",\n \"Junio\",\n \"Julio\",\n \"Agosto\",\n \"Septiembre\",\n \"Octubre\",\n \"Noviembre\",\n \"Diciembre\"\n ];\n const generationDate = new Date();\n const day = String(generationDate.getDate()).padStart(2, \"0\");\n const year = generationDate.getFullYear();\n let formattedDate = ``;\n if (language === \"spanish\") {\n const month = meses[generationDate.getMonth()];\n formattedDate = `${day}-${month}-${year}`;\n } else {\n const month = months[generationDate.getMonth()];\n formattedDate = `${month}-${day}-${year}`;\n }\n\n textFont(\n doc,\n 20,\n `${word(92, language)} ${formattedDate}`,\n dateXPosition,\n dateYPosition,\n \"\",\n \"#ffffff\",\n true\n );\n }\n //Algoritmo para redimencionar la imagen a un tamaño considerable y que permita acomodarse..\n render_img_doc(doc, c1, c2);\n}\n\n//Agregar validación para poder redimencionar la imagen..\nasync function createTwoImagesLots(coordsMap, structure) {\n const validRender = structure => {\n if (structure.coords.length && structure.img) {\n return structure.coords[0].length > 0;\n }\n return false;\n };\n\n if (structure.real_estate_group_id === \"614b74d1a7fca30c13490e7b\") {\n return 0;\n }\n if (!coordsMap) return 0;\n doc.addPage();\n if (coordsMap.length == 1) {\n const dt = coordsMap[0];\n\n lotsImg(\n doc,\n validRender(dt.plane) ? await create(dt.plane.id) : null,\n validRender(dt.front) ? await create(dt.front.id) : null,\n structure\n );\n //embedImages(await create(dt.plane.id), await create(dt.front.id));\n return 0;\n } else if (coordsMap.length > 1) {\n let count = 0;\n\n for await (const dt of coordsMap) {\n if (count == 0) {\n lotsImg(\n doc,\n await create(dt.plane.id),\n await create(dt.front.id),\n structure\n );\n } else {\n background(doc);\n //title(doc, \"UBICACIÓN DE LA OFICINA\", 5, 10);\n lotsImg(\n doc,\n await create(dt.plane.id),\n await create(dt.front.id),\n structure\n );\n }\n count++;\n if (count != coordsMap.length) doc.addPage();\n }\n }\n return 0;\n}\n\nasync function createOneImageLot(coordsMap) {\n if (!coordsMap) return 0;\n if (coordsMap.length == 1) {\n const dt = coordsMap[0];\n render_img_doc_in_unit_detail(doc, await create(dt.plane.id));\n //embedImages(await create(dt.plane.id), await create(dt.front.id));\n return 0;\n } else if (coordsMap.length > 1) {\n let count = 0;\n\n for await (const dt of coordsMap) {\n if (count == 0) {\n render_img_doc_in_unit_detail(doc, await create(dt.plane.id));\n } else {\n render_img_doc_in_unit_detail(doc, await create(dt.plane.id));\n }\n count++;\n }\n }\n return 0;\n}\n","import { word } from \"./multi-language\";\n\nimport { generateTableGeneral } from \"./table-general.js\";\n\nlet featured_image;\nlet logo;\nlet logo_footer;\n//Validar el logo....intentar validar datos...\n//Funcion para saber si tiene que tener el logo o no...\n///Crear funciones para poder validar los logos...\n\nlet container_one;\nlet container_two;\n\nlet title_color;\nlet title2_color;\nlet text3_color;\nlet text_color;\n\nlet contactMedia =\n \"https://res.cloudinary.com/capital28-investments/image/upload/v1594414146/Capital%2028/brokers/testbroker.jpg\";\n\nlet language = \"spanish\";\n//Style\nimport LatoBoldnormal from \"@/pdf/fonts/LatoBoldnormal\";\nimport LatoRegularnormal from \"@/pdf/fonts/LatoRegularnormal\";\nimport LatoLightnormal from \"@/pdf/fonts/LatoLightnormal\";\nimport {\n addPictureLotInUnitDetail,\n addPicturesLots\n} from \"./image-transformation\";\nimport renderSignatures from \"./signatures.js\";\nLatoRegularnormal();\nLatoBoldnormal();\nLatoLightnormal();\n\nexport function configStyle(style, lang) {\n styleDefault();\n if (!style) return 0;\n defineStyle(style);\n if (lang) language = lang;\n}\nexport function colors() {\n return {\n blue: \"#1C2833\",\n container_one: container_one,\n container_two: container_two,\n title_color: title_color,\n title2_color: title2_color,\n text3_color: text3_color,\n text_color: text_color\n };\n}\n\nexport function background(doc, color) {\n doc.setDrawColor(0);\n if (color) {\n doc.setFillColor(color);\n } else {\n doc.setFillColor(container_one);\n }\n\n doc.rect(0, 0, 677.3, 381, \"F\");\n}\nexport function backgroundTwo(doc, line) {\n doc.setDrawColor(0);\n doc.setFillColor(container_two);\n doc.rect(0, 0, 677.3, 190.5, \"F\");\n\n doc.setDrawColor(0);\n doc.setFillColor(container_one);\n doc.rect(0, 190.5, 677.3, 190.5, \"F\");\n\n if (!line) return 0;\n //Title color..\n doc.setDrawColor(title_color);\n doc.setLineWidth(0.7);\n doc.line(20 * 6.773, 43, 250, 43);\n}\nexport function title(doc, text, x, y, c) {\n doc.setFontSize(30);\n //doc.setTextColor(\"#1C2833\");\n const color = c ? c : title2_color;\n textFont(doc, 35, text, x * 6.773, y * 3.81, \"bold\", color, false);\n var widthTemp = doc.getTextWidth(text);\n doc.setDrawColor(color);\n doc.setLineWidth(1.5);\n doc.line((x + 1) * 6.773 + widthTemp, (y - 1) * 3.81, 630, (y - 1) * 3.81);\n doc.setFont(\"Lato-Regular\", \"normal\");\n}\n\nexport function frontPage(doc, dataPage, real_estate_group_id) {\n backgroundTwo(doc, true);\n //? imgFrontLogo es para generar el logo en la izquierda superior\n imgFrontLogo(doc);\n //? imgFrontLogo es para generar el logo en la derecha superior\n // Si es CCC, generar su logo a la derecha\n if (real_estate_group_id === \"65df671efde633d2f2489eda\") {\n imgFrontLogoRight(doc);\n }\n imgFrontImgFeature(doc);\n applyDataPage(doc, dataPage);\n doc.setProperties({\n title: \"Automatic quote\",\n subject: \"Quote\",\n author: \"Ing. Cesar A. Moheno (augustmoheno@gmail.com)\",\n keywords: \"generated, javascript, jspdf, automatic, quote\",\n creator: \"Created with Capital28\"\n });\n}\n\nfunction imgFrontLogo(doc) {\n let [imgWidthHead, imgHeightHead] = ([\n imgWidthHead,\n imgHeightHead\n ] = scaleImageSize(doc, logo, 90));\n let scalaSize = 90;\n while (imgHeightHead > 40) {\n [imgWidthHead, imgHeightHead] = scaleImageSize(doc, logo, scalaSize);\n scalaSize = scalaSize - 5;\n }\n\n let scale = imgWidthHead / imgHeightHead;\n if (imgHeightHead >= imgWidthHead) {\n doc.addImage(decodeURIComponent(logo), \"PNG\", 53, 15, 60 * scale, 60);\n } else {\n if (imgWidthHead + 35 > 120) {\n scale = imgHeightHead / imgWidthHead;\n\n doc.addImage(decodeURIComponent(logo), \"PNG\", 20, 30, 100, 100 * scale);\n } else {\n doc.addImage(decodeURIComponent(logo), \"PNG\", 20, 15, 60 * scale, 60);\n }\n }\n}\nfunction imgFrontLogoRight(doc) {\n let [imgWidthHead, imgHeightHead] = ([\n imgWidthHead,\n imgHeightHead\n ] = scaleImageSize(\n doc,\n \"https://res.cloudinary.com/dcrnw9pjc/image/upload/v1731599508/sltvo24nhkw3hz9fe4x5.png\",\n 90\n ));\n let scalaSize = 90;\n while (imgHeightHead > 40) {\n [imgWidthHead, imgHeightHead] = scaleImageSize(\n doc,\n \"https://res.cloudinary.com/dcrnw9pjc/image/upload/v1731599508/sltvo24nhkw3hz9fe4x5.png\",\n scalaSize\n );\n scalaSize = scalaSize - 5;\n }\n\n let scale = imgWidthHead / imgHeightHead;\n if (imgHeightHead >= imgWidthHead) {\n doc.addImage(\n decodeURIComponent(\n \"https://res.cloudinary.com/dcrnw9pjc/image/upload/v1731599508/sltvo24nhkw3hz9fe4x5.png\"\n ),\n \"PNG\",\n 681 - imgWidthHead,\n 15,\n 60 * scale,\n 60\n );\n } else {\n if (imgWidthHead + 35 > 120) {\n scale = imgHeightHead / imgWidthHead;\n\n doc.addImage(\n decodeURIComponent(\n \"https://res.cloudinary.com/dcrnw9pjc/image/upload/v1731599508/sltvo24nhkw3hz9fe4x5.png\"\n ),\n \"PNG\",\n 622 - imgWidthHead,\n 30,\n 100,\n 100 * scale\n );\n } else {\n doc.addImage(\n decodeURIComponent(\n \"https://res.cloudinary.com/dcrnw9pjc/image/upload/v1731599508/sltvo24nhkw3hz9fe4x5.png\"\n ),\n \"PNG\",\n 622 - imgWidthHead,\n 15,\n 60 * scale,\n 60\n );\n }\n }\n}\nexport function imgFrontLogoCenter(doc) {\n const pageWidth = doc.internal.pageSize.getWidth(); // Ancho de la página\n let [imgWidthHead, imgHeightHead] = scaleImageSize(doc, logo, 90); // Escala inicial\n let scalaSize = 90;\n\n // Ajustar el tamaño de la imagen hasta que la altura sea menor o igual a 40\n while (imgHeightHead > 40) {\n [imgWidthHead, imgHeightHead] = scaleImageSize(doc, logo, scalaSize);\n scalaSize -= 5;\n }\n\n let scale = imgWidthHead / imgHeightHead;\n let posX, posY;\n\n // Si la altura es mayor o igual al ancho\n if (imgHeightHead >= imgWidthHead) {\n posX = (pageWidth - 60 * scale) / 2; // Centrar en el ancho de la página\n posY = 15; // Posición vertical fija\n doc.addImage(decodeURIComponent(logo), \"PNG\", posX, posY, 60 * scale, 60);\n } else {\n if (imgWidthHead + 35 > 120) {\n scale = imgHeightHead / imgWidthHead;\n posX = (pageWidth - 100) / 2; // Centrar ancho de la imagen (100) en la página\n posY = 15;\n doc.addImage(\n decodeURIComponent(logo),\n \"PNG\",\n posX,\n posY,\n 100,\n 100 * scale\n );\n } else {\n posX = (pageWidth - 60 * scale) / 2; // Centrar en el ancho de la página\n posY = 15;\n doc.addImage(decodeURIComponent(logo), \"PNG\", posX, posY, 60 * scale, 60);\n }\n }\n\n return {\n posY,\n imgHeight: imgHeightHead\n };\n}\n\nfunction imgFrontImgFeature(doc) {\n const { pageHeight, centerWidth } = positionSacale(doc);\n let [imgFeatureWidt, imgFeatureHeight] = scaleImageSize(\n doc,\n featured_image,\n 400,\n 400,\n true\n );\n if (imgFeatureHeight > 240) {\n const scala = imgFeatureWidt / imgFeatureHeight;\n imgFeatureHeight = 240;\n imgFeatureWidt = 240 * scala;\n }\n const centerHeightFeature = 20 + (pageHeight - imgFeatureHeight) / 2;\n const centerWidthFeature = 60 + (centerWidth - imgFeatureWidt) / 2;\n doc.addImage(\n decodeURIComponent(featured_image),\n \"JPG\",\n centerWidthFeature,\n centerHeightFeature,\n imgFeatureWidt,\n imgFeatureHeight\n );\n}\n\n//Funciones de soporte...\nfunction scaleImageSize(doc, image, width, height, scale) {\n const imgProps = doc.getImageProperties(image);\n const { centerHeight, margin } = positionSacale(doc);\n if (scale === true) {\n if (imgProps.height > centerHeight && imgProps.width < imgProps.height) {\n const imageWidth = (imgProps.width * height) / imgProps.height;\n return [imageWidth - margin, height - margin];\n } else {\n const imageHeight = (imgProps.height * width) / imgProps.width;\n return [width - margin, imageHeight - margin];\n }\n }\n if (width) {\n const imageHeight = (imgProps.height * width) / imgProps.width;\n return [width, imageHeight];\n }\n if (height) {\n const imageWidth = (imgProps.width * height) / imgProps.height;\n return [imageWidth, height];\n }\n}\n\nfunction positionSacale(doc) {\n const pageWidth = doc.internal.pageSize.getWidth();\n const pageHeight = doc.internal.pageSize.getHeight();\n return {\n pageWidth,\n pageHeight,\n perimetro: (pageWidth + pageHeight) * 2,\n area: pageWidth * pageHeight,\n margin: 10,\n centerWidth: pageWidth / 2,\n centerHeight: pageHeight / 2\n };\n}\nfunction styleDefault() {\n container_one = \"#212121\";\n container_two = \"#FFFFFF\";\n\n title_color = \"#262D3C\";\n title2_color = \"#FFFFFF\";\n text3_color = \"#262D3C\";\n text_color = \"#FFFFFF\";\n contactMedia =\n \"https://res.cloudinary.com/capital28-investments/image/upload/v1594414146/Capital%2028/brokers/testbroker.jpg\";\n logo =\n \"https://res.cloudinary.com/capital28-investments/image/upload/v1564761056/Capital%2028/logo-capital-28.png\";\n\n featured_image =\n \"https://res.cloudinary.com/capital28-investments/image/upload/v1628213119/Capital%2028/Inmobiliarias/imagem-not-found.jpg\";\n\n logo_footer =\n \"https://res.cloudinary.com/capital28-investments/image/upload/v1564761056/Capital%2028/logo-capital-28.png\";\n}\nfunction defineStyle(style) {\n //Logo...\n if (style.logo) logo = style.logo;\n //Logo Footer\n if (style.logo_footer) logo_footer = style.logo_footer;\n //Imagen Principal de la portada...\n if (style.featured_image) featured_image = style.featured_image;\n //Color del contenedor 1\n if (style.container_one) container_one = style.container_one;\n //Color del contenedor 2\n if (style.container_two) container_two = style.container_two;\n //Titulo del color\n if (style.title_color) title_color = style.title_color;\n //Titulo del color 2\n if (style.title2_color) title2_color = style.title2_color;\n //Titulo del color 3\n if (style.text3_color) text3_color = style.text3_color;\n //Color del texto..\n if (style.text_color) text_color = style.text_color;\n}\nfunction applyDataPage(doc, data) {\n doc.setTextColor(container_one);\n textFont(doc, 35, word(1, language), 20, 10, \"bold\", title_color, true);\n textFont(doc, 35, data.nameLead, 20, 15, \"\", title_color, true);\n}\n\nexport function agent(doc, name, x, y, c) {\n !c ? doc.setTextColor(40, 46, 66) : doc.setTextColor(c);\n doc.addImage(decodeURIComponent(contactMedia), \"PNG\", x, y, 60, 0);\n doc.setFontSize(30);\n doc.setFontSize(30);\n if (name.length < 22) {\n doc.text(name, x + 70, y + 23);\n } else {\n const arr = name.split(\" \");\n\n let count = -1;\n let firstLine = \"\";\n let secondLine = \"\";\n const limit = arr.length > 3 ? 17 : 22;\n for (let i = 0; i < arr.length; i++) {\n count = count + arr[i].length + 1;\n if (count > limit) {\n secondLine = secondLine + arr[i] + \" \";\n } else {\n firstLine = firstLine + arr[i] + \" \";\n }\n }\n doc.text(firstLine, x + 70, y + 23);\n doc.text(secondLine, x + 70, y + 36);\n\n y += 14;\n }\n doc.setFontSize(30);\n doc.text(word(2, language), x + 70, y + 36);\n}\n\nexport function dataAgent(doc, data, dataFrontPage) {\n const phone = data.phone ? data.phone : \"-\";\n const email = data.email ? data.email : \"-\";\n\n doc.setTextColor(text_color);\n let cell = `${phone}`;\n cell = cell.replace(/\\s+/g, \"\");\n cell = cell.replace(\"+52\", \"\");\n if (cell.length === 10) {\n cell =\n \"+52 \" +\n cell[0] +\n cell[1] +\n cell[2] +\n \" \" +\n cell[3] +\n cell[4] +\n cell[5] +\n \" \" +\n cell[6] +\n cell[7] +\n cell[8] +\n cell[9];\n }\n\n textFont(\n doc,\n 25,\n `${word(3, language)}: ${cell}`,\n 70,\n 54,\n \"\",\n text_color,\n true\n );\n\n textFont(doc, 25, `${email}`, 70, 58, \"\", text_color, true);\n const developmentName = dataFrontPage?.nameDev?.toLowerCase() ?? \"\";\n\n if ([\"zelva 44\", \"ikonic tower\"].includes(developmentName)) {\n const dateXPosition = developmentName === \"zelva 44\" ? 70 : 10;\n const dateYPosition = developmentName === \"zelva 44\" ? 88 : 95;\n const months = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ];\n const meses = [\n \"Enero\",\n \"Febrero\",\n \"Marzo\",\n \"Abril\",\n \"Mayo\",\n \"Junio\",\n \"Julio\",\n \"Agosto\",\n \"Septiembre\",\n \"Octubre\",\n \"Noviembre\",\n \"Diciembre\"\n ];\n const generationDate = new Date();\n const day = String(generationDate.getDate()).padStart(2, \"0\");\n const year = generationDate.getFullYear();\n let formattedDate = ``;\n if (language === \"spanish\") {\n const month = meses[generationDate.getMonth()];\n formattedDate = `${day}-${month}-${year}`;\n } else {\n const month = months[generationDate.getMonth()];\n formattedDate = `${month}-${day}-${year}`;\n }\n let formattedStringDate = `${formattedDate}`;\n if ([\"ikonic tower\"].includes(developmentName)) {\n formattedStringDate = `${word(92, language)} ${formattedDate}`;\n }\n textFont(\n doc,\n 20,\n formattedStringDate,\n dateXPosition,\n dateYPosition,\n \"\",\n text_color,\n true\n );\n }\n}\n\nexport function leftData(doc, agent, dataFront) {\n //Datos del broker..\n agentInfo(doc, agent, 470, 110);\n dataAgent(doc, agent, dataFront);\n formattedAddress(doc, `${dataFront.address}`, 36);\n}\n\nfunction agentInfo(doc, agent, x, y, c) {\n //Validar imagen... y el nombre...\n const name = agent.name ? agent.name : `-`;\n if (agent.media) {\n if (agent.media.featured_image) {\n if (agent.media.featured_image.src) {\n contactMedia = agent.media.featured_image.src;\n }\n }\n }\n\n !c ? doc.setTextColor(40, 46, 66) : doc.setTextColor(c);\n\n if (contactMedia.includes(\"cloudinary\")) {\n let tempColor = container_two.slice(1);\n let imgSplit = contactMedia.split(\"upload\");\n let newImage =\n imgSplit[0] +\n `upload/w_1000,c_fill,ar_1:1,g_auto,r_max,b_rgb:${tempColor.toLocaleLowerCase()}` +\n imgSplit[1].toString();\n doc.addImage(encodeURI(newImage), \"PNG\", x, y, 60, 0);\n } else {\n doc.addImage(decodeURIComponent(contactMedia), \"PNG\", x, y, 60, 0);\n }\n\n if (name.length < 22) {\n textFont(doc, 30, name, x + 70, y + 23, \"bold\", text3_color);\n } else {\n const arr = name.split(\" \");\n\n let count = -1;\n let firstLine = \"\";\n let secondLine = \"\";\n const limit = arr.length > 3 ? 17 : 22;\n for (let i = 0; i < arr.length; i++) {\n count = count + arr[i].length + 1;\n if (count > limit) {\n secondLine = secondLine + arr[i] + \" \";\n } else {\n firstLine = firstLine + arr[i] + \" \";\n }\n }\n textFont(doc, 30, firstLine, x + 70, y + 23, \"\", text3_color);\n textFont(doc, 30, secondLine, x + 70, y + 36, \"\", text3_color);\n y += 14;\n }\n textFont(doc, 30, word(2, language), x + 70, y + 36, \"\", text3_color);\n}\n\nexport function textFont(\n doc,\n size,\n text,\n x,\n y,\n font,\n c,\n percent,\n options = { align: \"left\" }\n) {\n switch (font) {\n case \"bold\":\n doc.setFont(\"Lato-Bold\", \"normal\");\n break;\n case \"light\":\n doc.setFont(\"Lato-Light\", \"normal\");\n break;\n\n default:\n doc.setFont(\"Lato-Regular\", \"normal\");\n break;\n }\n if (!c) {\n doc.setTextColor(\"#fffff\");\n } else {\n doc.setTextColor(c);\n }\n doc.setFontSize(size);\n if (percent) {\n doc.text(text, x * 6.773, y * 3.81, null, null, options.align);\n } else {\n doc.text(text, x, y, null, null, options.align);\n }\n}\n\nfunction formattedAddress(doc, text, rowSize) {\n const rows = getAddressArray(text, rowSize);\n let y = 64;\n\n rows.forEach(rw => {\n textFont(doc, 25, rw, 70, y, \"\", text_color, true);\n y += 4;\n });\n}\nfunction getAddressArray(text, rowSize) {\n const arr = text.split(\" \");\n let count = -1;\n let rows = [];\n let tempRow = \"\";\n for (let i = 0; i < arr.length; i++) {\n count = count + arr[i].length + 1;\n if (count < rowSize) {\n tempRow += arr[i] + \" \";\n } else {\n count = arr[i].length + 1;\n rows.push(tempRow);\n tempRow = arr[i] + \" \";\n }\n }\n if (tempRow !== \"\") {\n rows.push(tempRow);\n }\n return rows;\n}\n// ><><><><><><><<><><<><\n// BUTTON LOGO\n// ><><><><><><><<><><<><\n//Validar si el logo tiene espacio para mostrarse y despues pintarlo..\nexport function botttomLogo(doc, unit) {\n const img = logo_footer;\n const { pageHeight, pageWidth, margin } = positionSacale(doc);\n //Se le cambio el tamaño del logo inferior\n let [logoWidthFooter, logoHeightFooter] = scaleImageSize(doc, img, 70);\n const scala = logoWidthFooter / logoHeightFooter;\n logoHeightFooter = 25;\n logoWidthFooter = logoHeightFooter * scala;\n const centerHeightFooter = pageHeight - logoHeightFooter - margin;\n const centerWidthFooter = (pageWidth - logoWidthFooter) / 2;\n doc.addImage(\n decodeURIComponent(img),\n \"PNG\",\n centerWidthFooter,\n centerHeightFooter,\n logoWidthFooter,\n logoHeightFooter\n );\n\n if ([\"ikonic tower\"].includes(unit)) {\n const months = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ];\n const meses = [\n \"Enero\",\n \"Febrero\",\n \"Marzo\",\n \"Abril\",\n \"Mayo\",\n \"Junio\",\n \"Julio\",\n \"Agosto\",\n \"Septiembre\",\n \"Octubre\",\n \"Noviembre\",\n \"Diciembre\"\n ];\n const generationDate = new Date();\n const day = String(generationDate.getDate()).padStart(2, \"0\");\n const year = generationDate.getFullYear();\n let formattedDate = ``;\n if (language === \"spanish\") {\n const month = meses[generationDate.getMonth()];\n formattedDate = `${day}-${month}-${year}`;\n } else {\n const month = months[generationDate.getMonth()];\n formattedDate = `${month}-${day}-${year}`;\n }\n\n textFont(\n doc,\n 20,\n `${word(92, language)} ${formattedDate}`,\n 10,\n 95,\n \"\",\n text_color,\n true\n );\n }\n}\n\nexport function backCover(doc) {\n doc.addPage();\n background(doc, container_two);\n const [imgWidthEnd, imgHeightEnd] = scaleImageSize(doc, logo, 200);\n\n const { pageWidth, pageHeight } = positionSacale(doc);\n\n const centerWidth = (pageWidth - imgWidthEnd) / 2;\n const centerHeight = (pageHeight - imgHeightEnd) / 2;\n\n doc.addImage(\n decodeURIComponent(logo),\n \"PNG\",\n centerWidth,\n centerHeight,\n imgWidthEnd,\n imgHeightEnd\n );\n}\n\nexport async function unitDetail(doc, structure) {\n const agent = structure.contactSelected;\n const properties = structure.properties;\n const real_estate_group_id = structure.real_estate_group_id;\n const developmentName =\n properties[0].real_estate_development?.name?.toLowerCase() ?? \"\";\n let isCCC = false;\n if (real_estate_group_id === \"65df671efde633d2f2489eda\") {\n isCCC = true;\n }\n /*\n Si estamos en el cotizador de zelva44 se activara\n la visualizacion de sus propiedades en unidades\n */\n // let detailedUnitView = false;\n let ikonicLegend = false;\n // id de zelva44\n if ([\"zelva 44\", \"ikonic tower\"].includes(developmentName)) {\n // detailedUnitView = true;\n if ([\"ikonic tower\"].includes(developmentName)) {\n ikonicLegend = true;\n await addPicturesLots(doc, structure.coords_map, language, structure);\n }\n }\n for (const unit of properties) {\n const code = unit.code ? unit.code.toUpperCase() : \"\";\n const coords = structure.coords_map?.filter(\n item => `${item.code}-${item.floor}` === `${unit.code}-${unit.floor.name}`\n );\n let nameFloor = \"\";\n if (real_estate_group_id === \"614b74d1a7fca30c13490e7b\") {\n const floor = unit?.floor?.name ?? \"\";\n nameFloor = floor !== \"\" ? ` - ${floor}` : \"\";\n }\n let total = validate(unit, \"total\");\n if (total == 0) {\n total += validate(unit, \"construction\");\n total += validate(unit, \"terrace\");\n }\n doc.addPage();\n backgroundTwo(doc);\n let titleHeader = ` ${word(4, language)} ${code}${nameFloor}`;\n if (real_estate_group_id === \"66b13ba82d604350313be604\") {\n titleHeader = getTitleHeader(unit).toUpperCase();\n }\n title(doc, titleHeader, 5, 10, title_color);\n agentInfo(doc, agent, 470, 110);\n if (isCCC) {\n detailsUnitCCC(doc, unit, total, ikonicLegend);\n } else {\n detailsUnit(doc, unit, total);\n }\n blueprint(doc, unit);\n botttomLogo(doc, unit?.real_estate_development?.name?.toLowerCase() ?? \"\");\n\n if (developmentName !== \"ikonic tower\") {\n await addPicturesLots(doc, coords, language, structure);\n }\n // si es Colores o CCC, en la unidad pintar su mapeo\n // !IMPORTANTE\n // !Si es local, de debe quitar la validación de costa y no de ccc\n // !porque en local no existe ccc, y se prueba en costa\n if (real_estate_group_id === \"614b74d1a7fca30c13490e7b\") {\n const currentCoordMap = structure.coords_map.filter(\n item => item.floor === unit.floor.name && item.code === unit.code\n );\n if (!currentCoordMap) return 0;\n await addPictureLotInUnitDetail(doc, currentCoordMap, language);\n }\n // Si es CCC, generar sus tablas de cotización\n if (isCCC) {\n generateTableGeneral(doc, structure, unit);\n\n renderSignatures(doc, [\n { title: \"asesor de ventas\", name: agent.name },\n { title: \"gerente de ventas\", name: structure.businessManager?.name },\n { title: \"cliente\", name: structure.name }\n ]);\n }\n }\n}\nfunction blueprint(doc, a) {\n let img = false;\n if (a) {\n //Validación de media..\n if (a.media) {\n //Validación plane_image\n if (\n a.media.plane_image &&\n a.media.plane_image.src &&\n a.media.plane_image.src !== \"\"\n ) {\n img = a.media.plane_image.src;\n }\n //Validación featured_image\n if (\n a.media.featured_image &&\n a.media.featured_image.src &&\n a.media.featured_image.src !== \"\"\n ) {\n img = a.media.featured_image.src;\n }\n }\n }\n\n if (img) {\n planeImg(doc, img);\n }\n}\n\nexport function planeImg(doc, img) {\n img = img.replace(\".jpg\", \".png\");\n const { pageHeight, centerWidth } = positionSacale(doc);\n let [imgFeatureWidt, imgFeatureHeight] = scaleImageSize(\n doc,\n img,\n 400,\n 400,\n true\n );\n if (imgFeatureHeight > 240) {\n const scala = imgFeatureWidt / imgFeatureHeight;\n imgFeatureHeight = 240;\n imgFeatureWidt = 240 * scala;\n }\n const centerHeightFeature = 20 + (pageHeight - imgFeatureHeight) / 2;\n const centerWidthFeature = 60 + (centerWidth - imgFeatureWidt) / 2;\n doc.addImage(\n decodeURIComponent(img),\n \"JPEG\",\n centerWidthFeature,\n centerHeightFeature,\n imgFeatureWidt,\n imgFeatureHeight\n );\n}\n\nfunction sizeUnit(doc, total) {\n //textFont(doc, 35, ` ${word(5, language)} ${type}`, 70, 55, \"bold\", text_color, true);\n textFont(doc, 35, `${word(5, language)}`, 70, 55, \"bold\", text_color, true);\n textFont(doc, 25, `TOTAL`, 70, 60, \"bold\", text_color, true);\n textFont(doc, 25, `${total} m²`, 70 + 10, 60, \"\", text_color, true);\n}\n\n/**\n * Pintar los detalles de la unidad, los que salen a la derecha del plano de la unidad\n * para los tipo departamento\n * @param {*} doc documento pdf\n * @param {*} unit datos de la unidad\n * @param {*} total longitud de la unidad en m2\n */\n\nfunction detailsUnit(doc, unit, total, ikonicLegend) {\n const separator = 9.5;\n const columnSeparator = 15;\n const fontSizeTitle = 25;\n const fontSizeText = 20;\n const baseX = 70;\n let baseY = 55;\n // detalle de unidad\n textFont(\n doc,\n fontSizeTitle,\n `${word(81, language)}`,\n baseX,\n baseY,\n \"bold\",\n text_color,\n true\n );\n\n baseY += 5;\n // superficie parcial\n if (unit.building?.construction) {\n textFont(\n doc,\n fontSizeText,\n `${word(87, language)}`,\n baseX,\n baseY,\n \"bold\",\n text_color,\n true\n );\n textFont(\n doc,\n fontSizeText,\n `${Number(unit.building.construction)} m²`,\n baseX + separator,\n baseY,\n \"\",\n text_color,\n true\n );\n }\n // superficie terraza\n if (unit.building?.terrace) {\n textFont(\n doc,\n fontSizeText,\n `${word(14, language)}`,\n baseX + columnSeparator,\n baseY,\n \"bold\",\n text_color,\n true\n );\n textFont(\n doc,\n fontSizeText,\n `${Number(unit.building.terrace)} m²`,\n baseX + columnSeparator + separator,\n baseY,\n \"\",\n text_color,\n true\n );\n }\n\n // si hubo superficie parcial y/o terraza bajar en el pdf\n if (unit.building?.construction || unit.building?.terrace) {\n baseY += 5;\n }\n\n // recamaras\n if (unit.features?.rooms > 0) {\n textFont(\n doc,\n fontSizeText,\n `${word(11, language)}`,\n baseX,\n baseY,\n \"bold\",\n text_color,\n true\n );\n textFont(\n doc,\n fontSizeText,\n `${Number(unit.features.rooms)}`,\n baseX + separator,\n baseY,\n \"\",\n text_color,\n true\n );\n }\n\n // baños\n if (unit.features?.bathrooms > 0) {\n textFont(\n doc,\n fontSizeText,\n `${word(12, language)}`,\n baseX + columnSeparator,\n baseY,\n \"bold\",\n text_color,\n true\n );\n textFont(\n doc,\n fontSizeText,\n `${Number(unit.features.bathrooms)}`,\n baseX + columnSeparator + separator,\n baseY,\n \"\",\n text_color,\n true\n );\n }\n\n // si hubo recamaras y/o baños bajar en el pdf\n if (unit.features?.rooms > 0 || unit.features?.bathrooms > 0) {\n baseY += 5;\n }\n\n // si hay amenidades\n if (unit.amenities.length > 0) {\n // detalle de amenidades\n textFont(\n doc,\n fontSizeTitle,\n `${word(88, language)}`,\n baseX,\n baseY,\n \"bold\",\n text_color,\n true\n );\n baseY += 5;\n\n for (let i = 0; i < unit.amenities.length; i++) {\n let AmenitieName = unit.amenities[i].name?.trim() || \"\";\n // buscar el nombre de la amenidad en el diccionario\n switch (AmenitieName) {\n case \"Terraza\":\n AmenitieName = word(14, language);\n break;\n case \"Cajones\":\n AmenitieName = word(82, language);\n break;\n case \"Cuarto de lavado\":\n AmenitieName = word(83, language);\n break;\n case \"Closet de lavado\":\n AmenitieName = word(89, language);\n break;\n case \"Bodega\":\n AmenitieName = word(84, language);\n break;\n }\n let amenitieAmount = Number(unit.amenities[i].construction.total);\n // si tiene construction total se pone el m2\n const unitName = amenitieAmount ? \" m²\" : \"\";\n // si tiene el code se toma como numero de unidades\n amenitieAmount = amenitieAmount || Number(unit.amenities[i].code) || 0;\n const amount = `${amenitieAmount}${unitName}`;\n // si tiene construction total es m2, sino es vacio\n // si el numero es impar se pinta en la columna izquierda\n if ((i + 1) % 2 === 1) {\n // si el numero es impar y es mayor o igual a 3 se pinta en otra fila\n if (i + 1 >= 3) {\n baseY += 5;\n }\n textFont(\n doc,\n fontSizeText,\n `${AmenitieName}`,\n baseX,\n baseY,\n \"bold\",\n text_color,\n true\n );\n textFont(\n doc,\n fontSizeText,\n amount,\n baseX + separator,\n baseY,\n \"\",\n text_color,\n true\n );\n // si el numero es par se pinta en la columna derecha\n } else {\n textFont(\n doc,\n fontSizeText,\n `${AmenitieName}`,\n baseX + columnSeparator,\n baseY,\n \"bold\",\n text_color,\n true\n );\n textFont(\n doc,\n fontSizeText,\n amount,\n baseX + columnSeparator + separator,\n baseY,\n \"\",\n text_color,\n true\n );\n }\n }\n // una vez termina de pintar las amenidades se pasa a otra fila\n baseY += 5;\n }\n\n // superficie total\n textFont(\n doc,\n fontSizeTitle,\n `${word(86, language)}`,\n baseX,\n baseY,\n \"bold\",\n text_color,\n true\n );\n textFont(\n doc,\n fontSizeText,\n `${total} m²`,\n baseX + columnSeparator,\n baseY,\n \"\",\n text_color,\n true\n );\n\n if (ikonicLegend) {\n textFont(\n doc,\n fontSizeText,\n `${word(93, language)}`,\n baseX,\n baseY + 10,\n \"\",\n text_color,\n true\n );\n }\n}\nfunction detailsUnitCCC(doc, unit, total) {\n const separator = 9.5;\n const columnSeparator = 15;\n const fontSizeTitle = 25;\n const fontSizeText = 20;\n const baseX = 70;\n let baseY = 55;\n // detalle de unidad\n textFont(\n doc,\n fontSizeTitle,\n `${word(81, language)}`,\n baseX,\n baseY,\n \"bold\",\n text_color,\n true\n );\n baseY += 7;\n // superficie total\n textFont(\n doc,\n fontSizeTitle,\n `${word(86, language)}`,\n baseX,\n baseY,\n \"bold\",\n text_color,\n true\n );\n textFont(\n doc,\n fontSizeText,\n `${total} m²`,\n baseX + columnSeparator,\n baseY,\n \"\",\n text_color,\n true\n );\n baseY += 6;\n // Frente\n if (unit.building?.construction_front) {\n textFont(\n doc,\n fontSizeText,\n `${word(97, language)}`,\n baseX,\n baseY,\n \"bold\",\n text_color,\n true\n );\n textFont(\n doc,\n fontSizeText,\n `${Number(unit.building.construction_front)} m²`,\n baseX + separator,\n baseY,\n \"\",\n text_color,\n true\n );\n baseY += 5;\n }\n // Fondo\n if (unit.building?.construction_back) {\n textFont(\n doc,\n fontSizeText,\n `${word(98, language)}`,\n baseX,\n baseY,\n \"bold\",\n text_color,\n true\n );\n textFont(\n doc,\n fontSizeText,\n `${Number(unit.building.construction_back)} m²`,\n baseX + separator,\n baseY,\n \"\",\n text_color,\n true\n );\n baseY += 5;\n }\n\n // si hubo Frente y/o Fondo se se aumento la posición Y para que no se encimen\n // if (unit.building?.construction_front || unit.building?.construction_back) {\n // baseY += 5;\n // }\n // Costado izquierdo\n if (unit.building?.construction_depth_left) {\n textFont(\n doc,\n fontSizeText,\n `${word(99, language)}`,\n baseX,\n baseY,\n \"bold\",\n text_color,\n true\n );\n textFont(\n doc,\n fontSizeText,\n `${Number(unit.building.construction_depth_left)} m²`,\n baseX + separator,\n baseY,\n \"\",\n text_color,\n true\n );\n baseY += 5;\n }\n\n // Costado Derecho\n if (unit.building?.construction_depth_right) {\n textFont(\n doc,\n fontSizeText,\n `${word(100, language)}`,\n baseX,\n baseY,\n \"bold\",\n text_color,\n true\n );\n textFont(\n doc,\n fontSizeText,\n `${Number(unit.building.construction_depth_right)} m²`,\n baseX + separator,\n baseY,\n \"\",\n text_color,\n true\n );\n baseY += 5;\n }\n // if (\n // unit.building?.construction_depth_left > 0 ||\n // unit.building?.construction_depth_right > 0\n // ) {\n // baseY += 5;\n // }\n}\n//NO uiwewn mostaar alwjansw\nexport function unitDetailPreview(doc, agent, properties) {\n const developmentId = properties[0].real_estate_development?._id ?? \"\";\n /*\n Si estamos en el cotizador de zelva44 se activara\n la visualizacion de sus propiedades en unidades\n */\n let detailedUnitView = false;\n if (developmentId === \"63876dc1575dea781e78f9e6\") {\n detailedUnitView = true;\n }\n properties.forEach(unit => {\n const code = unit.code ? unit.code.toUpperCase() : \"\";\n const total =\n unit.building && unit.building.total ? unit.building.total : \"0\";\n\n doc.addPage();\n backgroundTwo(doc);\n title(doc, ` ${word(4, language)} ${code}`, 5, 10, title_color);\n agentInfo(doc, agent, 470, 110);\n if (detailedUnitView) {\n detailsUnit(doc, unit, total);\n } else {\n sizeUnit(doc, total);\n }\n const imgPlanoWidth = 128.58585858585857;\n const imgPlanoHeight = 270;\n const centerHeightPlano = (380.99999999999994 - imgPlanoHeight) / 2;\n const centerWidthPlano = 10 + (338.65 - imgPlanoWidth) / 2;\n\n const imgs = `https://res.cloudinary.com/di6cg0ywy/image/upload/v1653599945/arrecife/lote_10_cbzpfi.png`;\n doc.addImage(\n imgs,\n \"JPEG\",\n\n centerWidthPlano,\n centerHeightPlano,\n imgPlanoWidth,\n imgPlanoHeight\n );\n });\n botttomLogo(doc);\n}\n\nfunction validate(unit, name) {\n if (!unit) return 0;\n if (!unit.building) return 0;\n if (!unit.building[name]) return 0;\n if (unit.building[name] == \"\") return 0;\n return unit.building[name];\n}\nfunction getTitleHeader(unit) {\n const floor = unit.floor?.name || \"\";\n const type = unit.building?.type || \"\";\n const tower = unit.tower?.name || \"\";\n const code = unit.code || \"\";\n\n // Crea un array con las partes que no están vacías, luego las une con un espacio\n return [floor, \"-\", type.toString().toUpperCase(), tower, code]\n .filter(part => part) // Filtra valores vacíos o `undefined`\n .join(\" \"); // Une con un espacio\n}\n","import { textFont } from \"./style\";\n/**\n * @typedef {Object} Person\n * @property {string} name - Nombre de la persona.\n * @property {string} title - Título o cargo de la persona.\n */\n\n/**\n * Renderiza las firmas en un documento PDF.\n *\n * @param {Object} doc - Objeto `jsPDF` que representa el documento PDF.\n * @param {Person[]} people - Arreglo de personas que deben firmar. Cada objeto en el arreglo debe tener las propiedades\n *\n * @example\n * const doc = new jsPDF();\n * const people = [\n * { name: \"Juan Pérez\", title: \"Gerente General\" },\n * { name: \"Ana López\", title: \"Directora de Finanzas\" }\n * ];\n * renderSignatures(doc, people);\n */\nexport default function renderSignatures(doc, people) {\n const WIDTH_DOC = doc.internal.pageSize.getWidth();\n const SIGNATURE_WIDTH = 100; // Ancho de cada firma\n const SPACING = 20; // Espaciado entre las firmas\n const TOTAL_SIGNATURE_WIDTH =\n (SIGNATURE_WIDTH + SPACING) * people.length - SPACING;\n const START_X = (WIDTH_DOC - TOTAL_SIGNATURE_WIDTH) / 2;\n const START_Y = doc.lastAutoTable.finalY + 60;\n\n people.forEach((person, index) => {\n const posX = START_X + index * (SIGNATURE_WIDTH + SPACING);\n createSignature(doc, person, posX, START_Y, SIGNATURE_WIDTH, 20);\n });\n}\n/**\n * @param {Person} person - Persona que debe firmar.\n */\nfunction createSignature(doc, person, x, y, width, height) {\n const { name, title } = person;\n drawSignatureLine(doc, x, y, width);\n if (name)\n addSignatureText(doc, name.toLocaleUpperCase(), x, y, width, height, {\n font: \"bold\"\n });\n addSignatureText(doc, title.toLocaleUpperCase(), x, y + 10, width, height);\n}\n\nfunction drawSignatureLine(doc, x, y, width) {\n doc.setLineWidth(0.5);\n doc.line(x, y, x + width, y); // Dibuja la línea de la firma\n}\n\n/**\n * @param {Object} [options] - Opciones para el texto.\n * @param {string|null} options.font - Fuente del texto.\n */\nfunction addSignatureText(\n doc,\n name,\n x,\n y,\n width,\n height,\n options = { font: null }\n) {\n // Calcula la posición del texto en el centro de la firma\n const TEXT_X = x + width / 2;\n const TEXT_Y = y + height / 2;\n textFont(doc, 14, name, TEXT_X, TEXT_Y, options.font, null, null, {\n align: \"center\"\n });\n}\n","import { background, title, colors } from \"./style\";\nimport { word } from \"./multi-language\";\nlet doc;\nlet colorsA = {};\nlet language = \"spanish\";\nexport function officeDetail(document, dataDetail, lang) {\n if (lang) language = lang;\n colorsA = colors();\n doc = document;\n doc.addPage();\n background(doc);\n\n title(doc, `${word(66, language)}`, 5, 10); //66\n title(doc, `${word(67, language)}`, 5, 50); //67\n formDetail(dataDetail);\n}\n\nfunction formDetail(fields) {\n doc.setDrawColor(\"#D5D8DC\");\n doc.setLineWidth(0.5);\n\n let init_x = 7;\n const init_y = 15;\n const increment = 5;\n const size_line = 100; //tamaño fijo..\n let init_line = 220; //check */\n\n let position_y = init_y;\n fields.forEach(e => {\n text_colum(e.name, init_x, position_y);\n line_colum(init_line, position_y, size_line);\n text_result(e.result, init_line, position_y);\n position_y += increment;\n //Acomodar en la siguiente fila\n if (position_y > 40 && init_x == 7) {\n position_y = init_y;\n init_x = 50;\n init_line = 505;\n }\n });\n}\nfunction item_text(text, x, y) {\n doc.setTextColor(colorsA.text_color);\n doc.text(text, x * 6.773, y * 3.81);\n}\nfunction text_colum(text, x, y) {\n doc.setFontSize(23);\n item_text(`${text} :`, x, y);\n}\nfunction line_colum(x, y, size) {\n doc.setDrawColor(colorsA.text_color);\n doc.line(x, y * 3.81, x + size, y * 3.81);\n}\nfunction text_result(text, x, y) {\n text = `${text}`;\n doc.setFontSize(19);\n doc.text(text, x + 5, y * 3.81 - 5);\n}\n","import { word } from \"./multi-language\";\nlet language = \"spanish\";\n\nexport function superFormat(data, lang) {\n //getDataOffice(data);\n if (lang) language = lang;\n return getDataOffice(data);\n}\nfunction getDataOffice(data) {\n let one = {\n level: [], //Nivel\n internal: 0, //Metros cuadrados internos\n terrace: 0, //Metros Cuadrados de terraza\n totalOffice: 0, //Metros cuadrados totales de oficina\n warehouse: 0, //Metros cuadrados de bodegas\n totalMeters: 0, //Metros totales\n offices: [], //Oficinas\n numberParkingSpaces: 0, //Cantidad de cajones de estacionamiento\n levelParkingLots: [], //Nivel de piso de estacionamientos\n warehouseLevel: [], //nivel de las bodegas\n numberWarehouses: 0 //Cantidad de Bodegas\n };\n data.forEach(e => {\n //Nivel\n if (e.floor && e.floor.code) one.level.push(e.floor.code);\n //Metros cuadrados internos\n one.internal += e.building.construction\n ? transformNumber(e.building.construction)\n : 0;\n //Metros Cuadrados de terraza\n one.terrace += e.building.terrace ? transformNumber(e.building.terrace) : 0;\n //Metros cuadrados totales de oficina\n one.totalOffice = one.internal + one.terrace;\n //Pasar las amenidades para calcular: metros, cantidad, niveles de bodegas y estacionamientos\n const [twarehouse, tparking] = getAmenityData(e.amenities);\n //Metros cuadrados de bodegas\n one.warehouse += twarehouse.meters;\n //Metros totales\n one.totalMeters = one.totalOffice + one.warehouse;\n //Oficinas\n if (e.code) one.offices.push(e.code);\n //Cajones de estacionamiento - cantidad\n one.numberParkingSpaces += tparking.count;\n //Nivel de piso de estacionamientos\n one.levelParkingLots = one.levelParkingLots.concat(tparking.floor);\n //Nivel de las bodegas\n one.warehouseLevel = one.warehouseLevel.concat(twarehouse.floor);\n //Cantidad de Bodegas\n one.numberWarehouses += twarehouse.count;\n });\n one.totalMetersUnrounded = one.totalMeters;\n //Datos que se tienen que eliminar los repetidos y juntar en un array\n one.level = removeDuplicatesConcatenate(one.level);\n one.levelParkingLots = removeDuplicatesConcatenate(one.levelParkingLots);\n one.offices = removeDuplicatesConcatenate(one.offices);\n one.warehouseLevel = removeDuplicatesConcatenate(one.warehouseLevel);\n //Datos que se tiene que formatear a dos puntos decimales\n //.toFixed(2)\n one.internal = one.internal.toFixed(2);\n one.terrace = one.terrace.toFixed(2);\n one.totalMeters = one.totalMeters.toFixed(2);\n one.totalOffice = one.totalOffice.toFixed(2);\n one.warehouse = one.warehouse.toFixed(2);\n\n return officeDataStructure(one);\n}\nfunction transformNumber(number) {\n if (typeof number == \"number\") return number;\n if (number == \"\") return 0;\n return parseFloat(number);\n}\nfunction removeDuplicatesConcatenate(list) {\n const tp = [...new Set(list)];\n return tp.join(\", \");\n}\n\nfunction getAmenityData(amenities) {\n let warehouse = {\n count: 0,\n meters: 0,\n floor: []\n };\n let parking = {\n count: 0,\n meters: 0,\n floor: []\n };\n if (!amenities) return [warehouse, parking];\n amenities.forEach(a => {\n if (a.name == \"Bodega\") {\n //Calcular la cantidad..\n warehouse.count++;\n //Calcular los metros cuadrados..\n warehouse.meters += a.construction.total\n ? transformNumber(a.construction.total)\n : 0;\n //Agregar los niveles\n if (a.floor && a.floor.code) warehouse.floor.push(a.floor.code);\n }\n if (a.name == \"Cajon\") {\n //Calcular la cantidad..\n parking.count++;\n //Calcular los metros cuadrados..\n parking.meters += a.construction.total\n ? transformNumber(a.construction.total)\n : 0;\n //Agregar los niveles\n if (a.floor && a.floor.code) parking.floor.push(a.floor.code);\n }\n });\n return [warehouse, parking];\n}\n\nfunction officeDataStructure(data) {\n const dataTable = [\n //Izquierdo\n {\n name: `${word(68, language)}`,\n result: data.level\n },\n {\n name: `${word(69, language)}`,\n result: data.internal\n },\n {\n name: `${word(70, language)}`,\n result: data.terrace\n },\n\n {\n name: `${word(71, language)}`,\n result: data.totalOffice\n },\n {\n name: `${word(72, language)}`,\n result: data.warehouse\n },\n {\n name: `${word(73, language)}`,\n result: data.totalMeters\n },\n //Derecho\n {\n name: `${word(74, language)}`,\n result: data.offices\n },\n {\n name: `${word(75, language)}`,\n result: data.numberParkingSpaces\n },\n // {\n // name: `${word(76, language)}`,\n // result: data.levelParkingLots\n // },\n // {\n // name: `${word(77, language)}`,\n // result: data.warehouseLevel\n // },\n {\n name: `${word(78, language)}`,\n result: data.numberWarehouses\n }\n ];\n return {\n dataTable: dataTable,\n totalMeters: data.totalMetersUnrounded\n };\n}\n\nexport function getTotalMeters(data) {\n let one = {\n level: [], //Nivel\n internal: 0, //Metros cuadrados internos\n terrace: 0, //Metros Cuadrados de terraza\n totalOffice: 0, //Metros cuadrados totales de oficina\n warehouse: 0, //Metros cuadrados de bodegas\n totalMeters: 0, //Metros totales\n offices: [], //Oficinas\n numberParkingSpaces: 0, //Cantidad de cajones de estacionamiento\n levelParkingLots: [], //Nivel de piso de estacionamientos\n warehouseLevel: [], //nivel de las bodegas\n numberWarehouses: 0 //Cantidad de Bodegas\n };\n data.forEach(e => {\n //Nivel\n if (e.floor && e.floor.code) one.level.push(e.floor.code);\n //Metros cuadrados internos\n one.internal += e.building.construction\n ? transformNumber(e.building.construction)\n : 0;\n //Metros Cuadrados de terraza\n one.terrace += e.building.terrace ? transformNumber(e.building.terrace) : 0;\n //Metros cuadrados totales de oficina\n one.totalOffice = one.internal + one.terrace;\n //Pasar las amenidades para calcular: metros, cantidad, niveles de bodegas y estacionamientos\n const [twarehouse, tparking] = getAmenityData(e.amenities);\n //Metros cuadrados de bodegas\n one.warehouse += twarehouse.meters;\n //Metros totales\n one.totalMeters = one.totalOffice + one.warehouse;\n //Oficinas\n if (e.code) one.offices.push(e.code);\n //Cajones de estacionamiento - cantidad\n one.numberParkingSpaces += tparking.count;\n //Nivel de piso de estacionamientos\n one.levelParkingLots = one.levelParkingLots.concat(tparking.floor);\n //Nivel de las bodegas\n one.warehouseLevel = one.warehouseLevel.concat(twarehouse.floor);\n //Cantidad de Bodegas\n one.numberWarehouses += twarehouse.count;\n });\n\n //Datos que se tienen que eliminar los repetidos y juntar en un array\n one.level = removeDuplicatesConcatenate(one.level);\n one.levelParkingLots = removeDuplicatesConcatenate(one.levelParkingLots);\n one.offices = removeDuplicatesConcatenate(one.offices);\n one.warehouseLevel = removeDuplicatesConcatenate(one.warehouseLevel);\n //Datos que se tiene que formatear a dos puntos decimales\n //.toFixed(2)\n one.internal = one.internal.toFixed(2);\n one.terrace = one.terrace.toFixed(2);\n one.totalMeters = one.totalMeters.toFixed(2);\n one.totalOffice = one.totalOffice.toFixed(2);\n one.warehouse = one.warehouse.toFixed(2);\n return one.totalMeters;\n}\n","import autoTable from \"jspdf-autotable\";\nimport { word } from \"./multi-language\";\nimport { background, title, botttomLogo, colors, textFont } from \"./style\";\nlet language = \"spanish\";\nlet colorsA = {};\n\nfunction offerTable(doc, data) {\n const process_type =\n data.seletedPriceRules.process_type == \"pre-sale\"\n ? word(64, language)\n : word(65, language);\n title(doc, `${process_type.toUpperCase()}`, 5, 10);\n const offer = [\n {\n one: `${word(53, language)}`,\n two: `${data.currency} ${currency(data.initPriceSIva)}`,\n three: `${word(54, language)}`,\n four: `${data.currency} ${currency(data.initPrice)}`\n },\n {\n one: `${word(55, language)}`,\n two: `${data.currency} ${currency(\n data.initPriceSIva / data.totalMeters\n )}`,\n three: \"Total m²\",\n four: `${data.totalMeters.toFixed(2)} m²`\n }\n ];\n autoTable(doc, {\n theme: \"plain\",\n startY: 50,\n body: offer,\n columns: [\n { dataKey: \"one\" },\n { dataKey: \"two\" },\n { dataKey: \"three\" },\n { dataKey: \"four\" }\n ],\n margin: { left: 50, right: 50, top: 100 },\n styles: {\n fontSize: 28,\n textColor: colorsA.text_color,\n\n cellPadding: 3\n }\n });\n}\n/**\n * Convert a number to currency format\n * @param {number} number - number to format\n * @returns {string} - number formatted as currency\n */\nfunction currency(number) {\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n maximumFractionDigits: 0\n }).format(number);\n}\n\n// aqui se hace la tabla\nexport function mergeSchemeTable(\n doc,\n packedRule,\n schema,\n workWithoutVAT,\n lang,\n dataFront\n) {\n if (lang) language = lang;\n colorsA = colors();\n let startYmergeTable = 80;\n //const dev = packedRule.nameDev.toUpperCase();\n let nameScheme = \"\";\n\n if (\n packedRule.seletedPriceRules &&\n packedRule.seletedPriceRules.description\n ) {\n nameScheme = packedRule.seletedPriceRules.description.toUpperCase();\n }\n const currencyType = packedRule.currency;\n\n doc.addPage();\n background(doc);\n if (!workWithoutVAT) {\n offerTable(doc, packedRule);\n title(doc, `${word(6, language)}: ${nameScheme}`, 5, 35);\n startYmergeTable = 150;\n } else {\n title(doc, `${word(6, language)}: ${nameScheme}`, 5, 10);\n }\n const finalPrice = word(36, language);\n const head = schema.filter(item => item.text == finalPrice);\n const months = schema.filter(item => item.text === `# ${word(45, language)}`);\n const body = schema.filter(\n item => item.text != finalPrice && item.text !== `# ${word(45, language)}`\n );\n\n const schemaFormat = [...head, ...[{}], ...body, ...[{}], ...months];\n const discountsData = discounts(packedRule);\n\n const dataTable = [...discountsData, ...schemaFormat];\n\n const positionFinalPrice = dataTable.findIndex(\n item => item.text == finalPrice\n );\n\n const adminCost = packedRule.seletedPriceRules.admin_cost;\n\n if (adminCost) {\n dataTable.splice(positionFinalPrice + 1, 0, {\n text: `${word(103, language)}`,\n percent: \"\",\n description: \"\",\n amount: `${currencyType} ${currency(adminCost)}`\n });\n }\n\n autoTable(doc, {\n startY: startYmergeTable,\n theme: \"plain\",\n columns: [\n { dataKey: \"text\" },\n { dataKey: \"percent\" },\n { dataKey: \"description\" },\n { dataKey: \"amount\" }\n ],\n body: dataTable,\n styles: { fontSize: 28, textColor: colorsA.text_color },\n //bodyStyles: { lineColor: \"#F2F3F4\" },\n margin: { left: 50, right: 50, top: 100 },\n didParseCell: data => {\n //Desarrollar funcion para poder cambiar de color en diferentes filas..\n\n if (data.row.index == positionFinalPrice) {\n data.cell.styles.textColor = colorsA.title_color;\n data.cell.styles.fillColor = `${colorsA.container_two}`;\n }\n }\n });\n if (doc.lastAutoTable.finalY < 345) {\n botttomLogo(doc, dataFront?.nameDev?.toLowerCase() ?? \"\");\n }\n const developmentName = dataFront?.nameDev?.toLowerCase() ?? \"\";\n\n if (developmentName === \"ikonic tower\") {\n const isMNXAmount = currencyType === \"MXN\";\n const textAmount = isMNXAmount ? 91 : 105;\n textFont(doc, 25, word(90), 8, 74, \"\", \"#ffffff\", true);\n textFont(doc, 25, word(textAmount), 62, 74, \"\", \"#ffffff\", true);\n !isMNXAmount && textFont(doc, 25, word(104), 62, 77, \"\", \"#ffffff\", true);\n }\n\n //Datos mergeados de packedPriceeRuleTable y PurchaseSchemeTable..\n}\nfunction discounts(data) {\n const process_type =\n data.seletedPriceRules.process_type == \"pre-sale\"\n ? word(62, language)\n : word(63, language);\n const presale = [\n {\n text: `${process_type}`,\n percent: \"\",\n description: \"\",\n amount: `${data.currency} ${currency(data.initPriceSIva)}`\n },\n {}\n ];\n\n let totalDiscounts = [];\n if (data.totalDiscounts) {\n totalDiscounts = [\n {\n text: `${word(47, language)} ${data.currency}`,\n percent: \"\",\n description: \"\",\n amount: `${data.currency} ${currency(data.totalDiscounts)}`\n },\n {}\n ];\n }\n const priceRules = [\n ...data.priceRuleApplied.priceRulesDiscount,\n ...data.priceRuleApplied.extraDiscounts\n ];\n\n let format = [];\n priceRules.forEach(a => {\n const dts = {\n text: a.text,\n percent: \"\",\n description: \"\",\n amount: a.percent\n };\n format.push(dts);\n });\n\n return [...presale, ...format, ...totalDiscounts];\n}\n","import jsPDF from \"jspdf\";\nimport { word } from \"./multi-language\";\nimport { officeDetail } from \"./office-details\";\nimport { superFormat } from \"./data-format\";\nimport { addPictures } from \"./image-transformation\";\nimport { mergeSchemeTable } from \"./data-table\";\nlet language = \"spanish\";\nimport {\n configStyle,\n frontPage,\n leftData,\n backCover,\n unitDetail\n} from \"./style.js\";\n\nlet doc;\nlet officeDetailData;\nlet coordsMap;\nlet style;\nlet dataFrontPage;\nlet packedPriceRule;\nlet purchaseScheme;\nlet contactSelected;\n\nexport async function generateQuote(structure, type) {\n language = getLanguage(structure);\n switch (type) {\n //LOTES\n case \"lots\":\n await quoteLots(structure);\n break;\n //OFICINAS\n case \"offices\":\n await quoteOffice(structure);\n break;\n //DEPARTAMENTOS\n case \"department\":\n await quoteDepartment(structure);\n break;\n default:\n await quoteOffice(structure);\n break;\n }\n doc.save(\n `${dataFrontPage.nameLead.toUpperCase()}-${dataFrontPage.nameDev.toUpperCase()}.pdf`\n );\n doc = null;\n return true;\n}\n\nexport async function layout(structure) {\n //Falta agregar el swch..\n doc = jsPDF(\"l\", \"mm\", [677.3, 381]);\n frontPage(doc, dataFrontPage, structure.real_estate_group_id);\n leftData(doc, contactSelected, dataFrontPage);\n officeDetail(doc, officeDetailData.dataTable, language);\n //Hoja con informacion del lote...\n await addPictures(doc, coordsMap);\n // Si Zenica, agregar información de la Unidad\n if (structure.real_estate_group_id === \"610412d0707aaaa569a2000a\") {\n await unitDetail(doc, structure);\n }\n mergeSchemeTable(doc, packedPriceRule, purchaseScheme, false, language);\n backCover(doc);\n //doc.output(\"dataurlnewwindow\");\n return doc;\n}\n\n//Vista Previa sin el mapeado.. intentar agregarle una imagen de referencia para señalar que alli va la vista previa...\nexport async function quotePreview(structure, type) {\n language = getLanguage(structure);\n switch (type) {\n //LOTES\n case \"lots\":\n await quoteLots(structure);\n break;\n //OFICINAS\n case \"offices\":\n await quoteOffice(structure);\n break;\n //DEPARTAMENTOS\n case \"department\":\n await quoteDepartment(structure);\n break;\n default:\n await quoteOffice(structure);\n break;\n }\n return doc;\n}\n\nfunction getAllData(structure) {\n officeDetailData = structure.properties\n ? superFormat(structure.properties, language)\n : null;\n if (structure.coords_map) {\n coordsMap = structure.coords_map;\n }\n style = structure.style;\n dataFrontPage = structure.dataFrontPage;\n packedPriceRule = structure.packedPriceRule;\n packedPriceRule.totalMeters = officeDetailData.totalMeters;\n packedPriceRule.nameDev = dataFrontPage.nameDev;\n const developmentName = dataFrontPage?.nameDev?.toLowerCase() ?? \"\";\n purchaseScheme = structure.purchaseScheme.map(item => {\n if (\n item.text === word(19, language) &&\n [\"ikonic tower\"].includes(developmentName)\n ) {\n return { ...item, text: word(94, language) };\n }\n return item;\n });\n purchaseScheme = purchaseScheme.map(item => {\n if (\n item.text.includes(word(45, language)) &&\n [\"zelva 44\"].includes(developmentName)\n ) {\n return { ...item, description: word(95, language) };\n }\n return item;\n });\n contactSelected = structure.contactSelected;\n}\n\n//Funciones para generar cotizacion descargable..\nfunction quoteOffice(structure) {\n getAllData(structure, language);\n configStyle(style, language);\n return layout(structure);\n}\nasync function quoteLots(structure) {\n getAllData(structure, language);\n doc = jsPDF(\"l\", \"mm\", [677.3, 381]);\n configStyle(structure.style, language);\n frontPage(doc, structure.dataFrontPage, structure.real_estate_group_id);\n leftData(doc, structure.contactSelected, structure.dataFrontPage);\n\n //Hoja con informacion del lote...\n await unitDetail(doc, structure);\n //Hoja con imagenes de mapeado en grande...\n /* lotsImg(doc, imgLots.imgOne, imgLots.imgTwo);\n addPicturesLots */\n //await addPicturesLots(doc, coordsMap, language, structure);\n mergeSchemeTable(doc, packedPriceRule, purchaseScheme, true, language);\n backCover(doc);\n return doc;\n}\n\nasync function quoteDepartment(structure) {\n getAllData(structure, language);\n doc = jsPDF(\"l\", \"mm\", [677.3, 381]);\n configStyle(structure.style, language);\n frontPage(doc, structure.dataFrontPage, structure.real_estate_group_id);\n leftData(doc, structure.contactSelected, structure.dataFrontPage);\n await unitDetail(doc, structure);\n mergeSchemeTable(\n doc,\n packedPriceRule,\n purchaseScheme,\n true,\n language,\n structure.dataFrontPage\n );\n backCover(doc);\n return doc;\n}\nfunction getLanguage(structure) {\n return structure?.language ? structure.language : \"spanish\";\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.setDataCoordsAndImg != null)?_c('div',_vm._l((_vm.setDataCoordsAndImg),function(item,i){return _c('div',{key:i,staticStyle:{\"background-color\":\"white\"}},[_c('div',[_c('coordinate-mapper',{attrs:{\"id\":item.front.id,\"img\":item.front.img,\"coords\":item.front.coords,\"real_estate_group_id\":_vm.development.real_estate_group_id}}),_c('coordinate-mapper',{attrs:{\"id\":item.plane.id,\"img\":item.plane.img,\"coords\":item.plane.coords,\"real_estate_group_id\":_vm.development.real_estate_group_id}})],1)])}),0):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GenerateMappingWithPdf.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GenerateMappingWithPdf.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GenerateMappingWithPdf.vue?vue&type=template&id=eabe5b44&\"\nimport script from \"./GenerateMappingWithPdf.vue?vue&type=script&lang=js&\"\nexport * from \"./GenerateMappingWithPdf.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'use strict';\nvar $ = require('../internals/export');\nvar arrayWith = require('../internals/array-with');\nvar toIndexedObject = require('../internals/to-indexed-object');\n\nvar $Array = Array;\n\n// `Array.prototype.with` method\n// https://tc39.es/ecma262/#sec-array.prototype.with\n$({ target: 'Array', proto: true }, {\n 'with': function (index, value) {\n return arrayWith(toIndexedObject(this), $Array, index, value);\n }\n});\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n if (actualIndex >= len || actualIndex < 0) throw $RangeError('Incorrect index');\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n return A;\n};\n"],"sourceRoot":""}