{"version":3,"sources":["webpack:///../../../src/components/VGrid/VRow.ts","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///../../../src/components/VResponsive/VResponsive.ts","webpack:///../../../src/components/VResponsive/index.ts","webpack:///../../../src/components/VImg/VImg.ts","webpack:///../../../src/components/VCard/VCard.ts"],"names":["breakpoints","ALIGNMENT","makeProps","props","prefix","def","alignValidator","str","alignProps","type","default","validator","justifyValidator","justifyProps","alignContentValidator","alignContentProps","propMap","align","Object","justify","alignContent","classMap","breakpointClass","className","val","breakpoint","prop","cache","name","functional","tag","dense","noGutters","render","children","cacheKey","String","classList","value","h","data","staticClass","class","breakpointProps","Boolean","offsetProps","orderProps","col","offset","order","cols","alignSelf","includes","parent","hasColClasses","mixins","aspectRatio","Number","computed","computedAspectRatio","this","aspectStyle","paddingBottom","__cachedSizer","$createElement","style","methods","genContent","$slots","on","$listeners","hasIntersect","window","directives","intersect","alt","contain","eager","gradient","lazySrc","options","root","rootMargin","threshold","undefined","position","sizes","src","srcset","transition","currentSrc","image","isLoading","calculatedAspectRatio","naturalWidth","normalisedSrc","aspect","__cachedImage","backgroundImage","backgroundPosition","key","attrs","mode","watch","loadImage","init","mounted","lazyImg","onLoad","onError","console","getSrc","err","pollForSize","timeout","poll","naturalHeight","setTimeout","content","width","__genPlaceholder","placeholder","appear","node","modifiers","once","handler","role","flat","hover","img","link","loaderHeight","outlined","raised","shaped","classes","styles","genProgress","setBackgroundColor"],"mappings":"4ZAOMA,EAAc,CAAC,KAAM,KAAM,KAAjC,MAEMC,EAAY,CAAC,QAAS,MAA5B,UAEA,SAASC,EAAT,KACE,OAAOF,EAAA,QAAmB,cAExB,OADAG,EAAMC,EAAS,eAAf,IAAkCC,IAClC,IAFF,IAMF,IAAMC,EAAkB,SAAAC,GAAD,MAAc,6CAArC,IACMC,EAAaN,EAAU,SAAS,iBAAO,CAC3CO,KAD2C,OAE3CC,QAF2C,KAG3CC,UAAWL,MAGPM,EAAoB,SAAAL,GAAD,MAAc,uDAAvC,IACMM,EAAeX,EAAU,WAAW,iBAAO,CAC/CO,KAD+C,OAE/CC,QAF+C,KAG/CC,UAAWC,MAGPE,EAAyB,SAAAP,GAAD,MAAc,iEAA5C,IACMQ,EAAoBb,EAAU,gBAAgB,iBAAO,CACzDO,KADyD,OAEzDC,QAFyD,KAGzDC,UAAWG,MAGPE,EAAU,CACdC,MAAOC,OAAA,KADO,GAEdC,QAASD,OAAA,KAFK,GAGdE,aAAcF,OAAA,SAGVG,EAAW,CACfJ,MADe,QAEfE,QAFe,UAGfC,aAAc,iBAGhB,SAASE,EAAT,OACE,IAAIC,EAAYF,EAAhB,GACA,SAAIG,EAAJ,CAGA,KAAU,CAER,IAAMC,EAAaC,EAAA,UAAnB,IACAH,GAAa,IAAJ,OAAT,GAIF,OADAA,GAAa,IAAJ,OAAT,GACOA,EAAP,eAGF,IAAMI,EAAQ,IAAd,IAEe,qBAAW,CACxBC,KADwB,QAExBC,YAFwB,EAGxB1B,MAAO,8CACL2B,IAAK,CACHrB,KADG,OAEHC,QAAS,OAEXqB,MALK,QAMLC,UANK,QAOLf,MAAO,CACLR,KADK,OAELC,QAFK,KAGLC,UAAWL,IAVR,GAAF,IAaHa,QAAS,CACPV,KADO,OAEPC,QAFO,KAGPC,UAAWC,IAhBR,GAAF,IAmBHQ,aAAc,CACZX,KADY,OAEZC,QAFY,KAGZC,UAAWG,IAEVC,GAELkB,OA7BwB,SA6BlB,EA7BkB,GA6BY,IAAzB,EAAyB,EAAzB,QAAyB,EAAzB,KAAeC,EAAU,EAAVA,SAEpBC,EAAJ,GACA,IAAK,IAAL,OACEA,GAAYC,OAAQjC,EAApB,IAEF,IAAIkC,EAAYV,EAAA,IAAhB,GAyBA,OAvBA,GAAgB,iBAGd,EACA,SAHAU,EADc,GAId,EACErB,EAAA,YAAsB,SAAAU,GACpB,IAAMY,EAAiBnC,EAAvB,GACMoB,EAAYD,EAAgBb,EAAMiB,EAAxC,GACA,GAAeW,EAAA,WAInBA,EAAA,SACE,aAAclC,EADD,UAEb,aAAcA,EAFD,OAAf,iCAGYA,EAAV,OAA0BA,EAHb,OAAf,mCAIcA,EAAZ,SAA8BA,EAJjB,SAAf,yCAKoBA,EAAlB,cAAyCA,EAAMiB,cALjD,IAQAO,EAAA,SApBc,GAuBTY,EACLpC,EADM,IAEN,eAAUqC,EAAM,CACdC,YADc,MAEdC,MAAOL,IAJX,O,uUCzHErC,EAAc,CAAC,KAAM,KAAM,KAAjC,MAEM2C,EAAmB,WACvB,OAAO3C,EAAA,QAAmB,cAKxB,OAJAG,EAAA,GAAa,CACXM,KAAM,CAACmC,QAASR,OADL,QAEX1B,SAAS,GAEX,IALF,IADuB,GAUnBmC,EAAe,WACnB,OAAO7C,EAAA,QAAmB,cAKxB,OAJAG,EAAM,SAAW,eAAjB,IAAoC,CAClCM,KAAM,CAAC2B,OAD2B,QAElC1B,QAAS,MAEX,IALF,IADmB,GAUfoC,EAAc,WAClB,OAAO9C,EAAA,QAAmB,cAKxB,OAJAG,EAAM,QAAU,eAAhB,IAAmC,CACjCM,KAAM,CAAC2B,OAD0B,QAEjC1B,QAAS,MAEX,IALF,IADkB,GAUdM,EAAU,CACd+B,IAAK7B,OAAA,KADS,GAEd8B,OAAQ9B,OAAA,KAFM,GAGd+B,MAAO/B,OAAA,SAGT,SAASI,EAAT,OACE,IAAIC,EAAJ,EACA,GAAI,MAAAC,IAAJ,IAAmBA,EAAnB,CAGA,KAAU,CACR,IAAMC,EAAaC,EAAA,UAAnB,IACAH,GAAa,IAAJ,OAAT,GAKF,MAAI,QAAAd,GAAmB,KAAAe,IAAvB,IAAqCA,GAKrCD,GAAa,IAAJ,OAAT,GACOA,EAAP,eAJSA,EAAP,eAOJ,IAAMI,EAAQ,IAAd,IAEe,qBAAW,CACxBC,KADwB,QAExBC,YAFwB,EAGxB1B,MAAO,6DACL+C,KAAM,CACJzC,KAAM,CAACmC,QAASR,OADZ,QAEJ1B,SAAS,IAHN,GAAF,IAMHsC,OAAQ,CACNvC,KAAM,CAAC2B,OADD,QAEN1B,QAAS,OARN,GAAF,IAWHuC,MAAO,CACLxC,KAAM,CAAC2B,OADF,QAEL1B,QAAS,OAbN,GAAF,IAgBHyC,UAAW,CACT1C,KADS,OAETC,QAFS,KAGTC,UAAY,SAAAJ,GAAD,MAAc,CAAC,OAAQ,QAAS,MAAO,SAAU,WAAY,WAAW6C,SAAS7C,KAE9FuB,IAAK,CACHrB,KADG,OAEHC,QAAS,SAGbuB,OA7BwB,SA6BlB,EA7BkB,GA6BoB,IAAjC,EAAiC,EAAjC,QAAiC,EAAjC,OAAiC,EAAjC,SAELE,GAFsC,EAARkB,OAElC,IACA,IAAK,IAAL,OACElB,GAAYC,OAAQjC,EAApB,IAEF,IAAIkC,EAAYV,EAAA,IAAhB,GA4BA,OA1BA,GAAgB,iBAGd,EACA,SAHAU,EADc,GAId,EACErB,EAAA,YAAsB,SAAAU,GACpB,IAAMY,EAAoCnC,EAA1C,GACMoB,EAAYD,EAAgBb,EAAMiB,EAAxC,GACA,GAAeW,EAAA,WAInB,IAAMiB,EAAgBjB,EAAA,MAAe,SAAAd,GAAS,OAAIA,EAAA,WAAlD,WAEAc,EAAA,SAEEU,KAAMO,IAAkBnD,EAFX,MAAf,+BAGUA,EAAR,MAAuBA,EAHV,MAAf,kCAIaA,EAAX,QAA4BA,EAJf,QAAf,iCAKYA,EAAV,OAA0BA,EALb,OAAf,sCAMiBA,EAAf,WAAmCA,EAAMgD,WAN3C,IASAxB,EAAA,SAvBc,GA0BTY,EAAEpC,EAAD,IAAY,eAAUqC,EAAM,CAAEE,MAAOL,IAA7C,O,6ICvHW,SAAAkB,EAAA,qBAA0B,CACvC3B,KADuC,eAGvCzB,MAAO,CACLqD,YAAa,CAACpB,OAAQqB,SAGxBC,SAAU,CACRC,oBADQ,WAEN,OAAOF,OAAOG,KAAd,cAEFC,YAJQ,WAKN,OAAOD,KAAKD,oBACR,CAAEG,cAAgB,EAAIF,KAAL,wBAAuC,UAD5D,GAIFG,cATQ,WAUN,OAAKH,KAAL,YAEOA,KAAKI,eAAe,MAAO,CAChCC,MAAOL,KADyB,YAEhCnB,YAAa,wBAJe,KASlCyB,QAAS,CACPC,WADO,WAEL,OAAOP,KAAKI,eAAe,MAAO,CAChCvB,YAAa,yBACZmB,KAAKQ,OAFR,WAMJnC,OAlCuC,SAkCjC,GACJ,OAAOM,EAAE,MAAO,CACdE,YADc,eAEdwB,MAAOL,KAFO,iBAGdS,GAAIT,KAAKU,YACR,CACDV,KADC,cAEDA,KANF,kBC5CJ,I,YCqBMW,EAAiC,qBAAXC,QAA0B,yBAAtD,OAGe,gBAAmB,CAChC5C,KADgC,QAGhC6C,WAAY,CAAEC,YAAA,MAEdvE,MAAO,CACLwE,IADK,OAELC,QAFK,QAGLC,MAHK,QAILC,SAJK,OAKLC,QALK,OAMLC,QAAS,CACPvE,KADO,OAIPC,QAAS,iBAAO,CACduE,UADc,EAEdC,gBAFc,EAGdC,eAAWC,KAGfC,SAAU,CACR5E,KADQ,OAERC,QAAS,iBAEX4E,MApBK,OAqBLC,IAAK,CACH9E,KAAM,CAAC2B,OADJ,QAEH1B,QAAS,IAEX8E,OAzBK,OA0BLC,WAAY,CACVhF,KAAM,CAACmC,QADG,QAEVlC,QAAS,oBAIb8B,KArCgC,WAsC9B,MAAO,CACLkD,WADK,GAELC,MAFK,KAGLC,WAHK,EAILC,2BAJK,EAKLC,kBAAcV,IAIlB1B,SAAU,CACRC,oBADQ,WAEN,OAAOF,OAAOG,KAAKmC,cAAcC,QAAUpC,KAA3C,wBAEFmC,cAJQ,WAKN,MAAO,kBAAOnC,KAAP,IACH,CACA2B,IAAK3B,KADL,IAEA4B,OAAQ5B,KAFR,OAGAmB,QAASnB,KAHT,QAIAoC,OAAQvC,OAAOG,KAAKJ,aAAN,IACZ,CACF+B,IAAK3B,KAAK2B,IADR,IAEFC,OAAQ5B,KAAK4B,QAAU5B,KAAK2B,IAF1B,OAGFR,QAASnB,KAAKmB,SAAWnB,KAAK2B,IAH5B,QAIFS,OAAQvC,OAAOG,KAAKJ,aAAeI,KAAK2B,IAA1B,UAGpBU,cAlBQ,WAmBN,IAAMrC,KAAKmC,cAAcR,MAAO3B,KAAKmC,cAArC,QAA6D,MAAO,GAEpE,IAAMG,EAAN,GACMX,EAAM3B,KAAKgC,UAAYhC,KAAKmC,cAAtB,QAA8CnC,KAA1D,WAEIA,KAAJ,UAAmBsC,EAAA,+BAAwCtC,KAAxC,eACnB,GAASsC,EAAA,6BAET,IAAMP,EAAQ/B,KAAKI,eAAe,MAAO,CACvCvB,YADuC,iBAEvCC,MAAO,CACL,0BAA2BkB,KADtB,UAEL,0BAA2BA,KAFtB,QAGL,yBAA0BA,KAAKgB,SAEjCX,MAAO,CACLiC,gBAAiBA,EAAA,KADZ,MAELC,mBAAoBvC,KAAKyB,UAE3Be,KAAMxC,KAAKgC,YAIb,OAAKhC,KAAL,WAEOA,KAAKI,eAAe,aAAc,CACvCqC,MAAO,CACLzE,KAAMgC,KADD,WAEL0C,KAAM,WAEP,CALH,IAF6BX,IAWjCY,MAAO,CACLhB,IADK,WAGE3B,KAAL,UACKA,KAAK4C,YADW5C,KAAK6C,UAAKrB,OAAWA,GAA1C,IAGF,4BAA6B,UAG/BsB,QA7GgC,WA8G9B9C,KAAA,QAGFM,QAAS,CACPuC,KADO,SACH,OAQF,IACElC,GAAA,GAECX,KAHH,OAMA,GAAIA,KAAKmC,cAAT,QAAgC,CAC9B,IAAMY,EAAU,IAAhB,MACAA,EAAA,IAAc/C,KAAKmC,cAAnB,QACAnC,KAAA,oBAGEA,KAAKmC,cAAT,KAA4BnC,KAAK4C,cAEnCI,OAvBO,WAwBLhD,KAAA,SACAA,KAAA,aACAA,KAAA,aAAmBA,KAAnB,MAEFiD,QA5BO,WA6BL,OAAAC,EAAA,MACE,uCACQlD,KAAKmC,cAFH,KAAZ,MAKAnC,KAAA,cAAoBA,KAApB,MAEFmD,OApCO,WAsCDnD,KAAJ,QAAgBA,KAAK8B,WAAa9B,KAAK+B,MAAMD,YAAc9B,KAAK+B,MAAhD,MAElBa,UAxCO,WAwCE,WACDb,EAAQ,IAAd,MACA/B,KAAA,QAEA+B,EAAA,OAAe,WAETA,EAAJ,OACEA,EAAA,gBAAsB,SAAAqB,GACpB,OAAAF,EAAA,MACE,qEACQ,gBADR,MAECE,EAAA,oCAAmCA,EAAnC,SAHQ,IAAX,MADF,KAOQ,EAPR,QASA,YAGJrB,EAAA,QAAgB/B,KAAhB,QAEA+B,EAAA,IAAY/B,KAAKmC,cAAjB,IACAnC,KAAA,QAAe+B,EAAA,MAAc/B,KAA7B,OACAA,KAAA,uBAA8B+B,EAAA,OAAe/B,KAAKmC,cAAlD,QAEAnC,KAAA,aAAoBA,KAAKqD,YAAzB,GACArD,KAAA,UAEFqD,YApEO,SAoEI,GAAqD,WAA5BC,EAA4B,uDAArD,IACHC,EAAO,SAAPA,IAAY,IACV,EAAN,EAAM,cAAiBrB,EAAvB,EAAuBA,aAEnBsB,GAAJ,GACE,iBACA,wBAA6BtB,EAA7B,GAEA,MAAAoB,GAAmBG,WAAWF,EAA9BD,IAIJC,KAEFhD,WAlFO,WAmFL,IAAMmD,EAAiB,kCAAvB,MAOA,OANI1D,KAAJ,cACEA,KAAA,GAAQ0D,EAAR,WAA8B,CAC5BrD,MAAO,CAAEsD,MAAO,GAAF,OAAK3D,KAAKkC,aAAV,SAIlB,GAEF0B,iBA5FO,WA6FL,GAAI5D,KAAKQ,OAAT,YAA6B,CAC3B,IAAMqD,EAAc7D,KAAKgC,UACrB,CAAChC,KAAKI,eAAe,MAAO,CAC5BvB,YAAa,wBACZmB,KAAKQ,OAHU,cAApB,GAMA,OAAKR,KAAL,WAEOA,KAAKI,eAAe,aAAc,CACvC7D,MAAO,CACLuH,QADK,EAEL9F,KAAMgC,KAAK6B,aAHf,GAF6BgC,EAAP,MAY5BxF,OAjOgC,SAiO1B,GACJ,IAAM0F,EAAO,2BAAb,GA6BA,OA3BAA,EAAA,kBAHO,WAOP,IACEA,EAAA,gBAAwB,CAAC,CACvB/F,KADuB,YAEvBgG,UAAW,CAAEC,MAAM,GACnBvF,MAAO,CACLwF,QAASlE,KADJ,KAELoB,QAASpB,KAAKoB,YAKpB2C,EAAA,WAAmB,CACjBI,KAAMnE,KAAKe,IAAM,WADA,EAEjB,aAAcf,KAAKe,KAGrBgD,EAAA,SAAgB,CACd/D,KADc,cAEdA,KAFc,cAGdA,KAHc,mBAIdA,KAJF,cAOOrB,EAAEoF,EAAD,IAAWA,EAAX,KAAsBA,EAA9B,c,4ICzQW,sBAAO,EAAD,YAAN,eAIN,CACP/F,KADO,SAGPzB,MAAO,CACL6H,KADK,QAELC,MAFK,QAGLC,IAHK,OAILC,KAJK,QAKLC,aAAc,CACZ3H,KAAM,CAACgD,OADK,QAEZ/C,QAAS,GAEX2H,SATK,QAULC,OAVK,QAWLC,OAAQ3F,SAGVc,SAAU,CACR8E,QADQ,WAEN,sCACE,UADK,GAEF,qCAFE,OAAP,IAGE,eAAgB5E,KAHX,KAIL,gBAAiBA,KAJZ,MAKL,eAAgBA,KALX,YAML,kBAAmBA,KANd,QAOL,mBAAoBA,KAPf,SAQL,mBAAoBA,KARf,SASL,iBAAkBA,KATb,OAUL,iBAAkBA,KAVb,QAWF,6CAGP6E,OAhBQ,WAiBN,IAAMxE,EAAK,kBACN,2CAOL,OAJIL,KAAJ,MACEK,EAAA,0BAA2BL,KAA3B,2CAGF,IAIJM,QAAS,CACPwE,YADO,WAEL,IAAMzG,EAAS,wCAAf,MAEA,SAEO2B,KAAKI,eAAe,MAAO,CAChCvB,YADgC,mBAEhC2D,IAAK,YACJ,CAHH,IAFoB,OASxBnE,OA3DO,SA2DD,GAAG,MACe2B,KAAtB,oBAAM,EADC,EACD,IAAOpB,EADN,EACMA,KASb,OAPAA,EAAA,MAAaoB,KAAb,OAEIA,KAAJ,cACEpB,EAAA,MAAaA,EAAA,OAAb,GACAA,EAAA,kBAGKD,EAAET,EAAK8B,KAAK+E,mBAAmB/E,KAAxB,MAAN,GAAiD,CACvDA,KADuD,cAEvDA,KAAKQ,OAFP","file":"js/page-O2-reparacion~page-movistar-reparacion~page-reacondicionado~page-reparacion~page-sat-clientesmovistar.afd6cbbe.js","sourcesContent":["import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Utils\nimport { consoleError, consoleWarn } from '../../util/console'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default VResponsive.extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n },\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return typeof this.src === 'string'\n ? {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n } : {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n },\n onError () {\n consoleError(\n `Image load failed\\n\\n` +\n `src: ${this.normalisedSrc.src}`,\n this\n )\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n image.src = this.normalisedSrc.src\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else {\n timeout != null && setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n if (this.$slots.placeholder) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, this.$slots.placeholder)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n node.data!.staticClass += ' v-image'\n\n // Only load intersect directive if it\n // will work in the current browser.\n if (hasIntersect) {\n node.data!.directives = [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n }\n\n node.data!.attrs = {\n role: this.alt ? 'img' : undefined,\n 'aria-label': this.alt,\n }\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, node.data, node.children)\n },\n})\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n outlined: Boolean,\n raised: Boolean,\n shaped: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--outlined': this.outlined,\n 'v-card--raised': this.raised,\n 'v-card--shaped': this.shaped,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n this.$slots.default,\n ])\n },\n})\n"],"sourceRoot":""}