{"version":3,"sources":["webpack:///../../../src/util/color/transformSRGB.ts","webpack:///../../src/util/mergeData.ts","webpack:///../../src/util/mixins.ts","webpack:///../../src/util/colorUtils.ts","webpack:///../../../src/util/color/transformCIELAB.ts","webpack:///../../src/util/helpers.ts","webpack:///../../src/util/console.ts"],"names":["srgbForwardMatrix","srgbForwardTransform","C","srgbReverseMatrix","srgbReverseTransform","rgb","Array","transform","matrix","i","Math","xyz","r","g","b","pattern","styleList","styleProp","parseStyle","styleMap","style","key","val","mergeTarget","arguments","Object","prop","j","s","listeners","mixins","args","color","TypeError","c","char","parseInt","isNaN","hexColor","repeat","intToHex","colorToInt","delta","cielabForwardTransform","t","cielabReverseTransform","transformedY","Ln","lab","el","name","functional","render","children","data","h","options","once","event","cb","passiveSupported","window","testListenerOpts","get","e","console","last","path","obj","fallback","a","props","p","deepEqual","getNestedValue","property","item","getObjectValueByPath","value","length","Node","index","getZIndex","tagsToReplace","str","tag","filtered","keys","unit","String","Number","keyCodes","enter","tab","delete","esc","space","up","down","left","right","end","home","del","backspace","insert","pageup","pagedown","iconName","vm","camelizeRE","camelize","groupBy","items","acc","v","sortBy","stringCollator","Intl","sensitivity","usage","sortKey","sortA","sortB","sortDesc","customSorters","customResult","map","search","defaultFilter","split","k","scopedSlots","optional","min","max","size","chunked","o","source","target","sourceProperty","targetProperty","isObject","mergeDeep","createMessage","_isVue","$parent","$options","tree","currentRecursiveSequence","formatComponentName","generateComponentTrace","newMessage","message","consoleError","original","consoleWarn","classifyRE","classify","file","match","includeFile"],"mappings":"4FACA,+EAGMA,EAAoB,CACxB,CAAC,QAAD,QADwB,OAExB,eAFwB,OAGxB,CAAC,OAAD,KAHF,QAOMC,EAAwB,SAAAC,GAAD,OAC3BA,GAAA,eACIA,EACA,MAAQ,KAAR,IAAQA,EAAM,EAAd,KAHN,MAOMC,EAAoB,CACxB,CAAC,MAAQ,MADe,OAExB,CAAC,MAAQ,MAFe,OAGxB,CAAC,MAAQ,MAHX,QAOMC,EAAwB,SAAAF,GAAD,OAC3BA,GAAA,OACIA,EADJ,gBAEMA,EAAD,MAAD,MAHN,MAMM,cAMJ,IALA,IAAMG,EAAMC,MAAZ,GACMC,EAAN,EACMC,EAHyB,EAMtBC,EAAT,EAAgBA,EAAhB,MACEJ,EAAA,GAASK,KAAA,MAAT,IAAoB,YAAMH,EACxBC,EAAA,MAAeG,EAAf,GACAH,EAAA,MAAeG,EADf,GAEAH,EAAA,MAAeG,EAHG,MAQtB,OAAQN,EAAA,IAAD,KAAkBA,EAAA,IAAlB,IAAkCA,EAAA,IAAzC,GAGI,cAWJ,IAVA,IAAMM,EAAW,CAAC,EAAG,EAArB,GACMJ,EAAN,EACMC,EAH4B,EAM5BI,EAAIL,GAAWF,GAAA,GAAD,KAApB,KACMQ,EAAIN,GAAWF,GAAA,EAAD,KAApB,KACMS,EAAIP,GAAWF,GAAA,EAAD,KARc,KAWzBI,EAAT,EAAgBA,EAAhB,MACEE,EAAA,GAASH,EAAA,QAAmBA,EAAA,MAAnB,EAAsCA,EAAA,MAA/C,EAGF,W,uwBCvDF,IAAMO,QAAU,CACdC,UADc,gBAEdC,UAAW,SAGb,SAASC,EAAT,OACE,IAAMC,EAAN,GADgC,uBAGhC,YAAgBC,MAAA,MAAYL,QAA5B,0DAAgD,eAC7B,MAAQA,QAAzB,WAD8C,mBAC1C,EAD0C,KAC1C,EAD0C,MAE9CM,EAAMA,EAAN,UAKA,iBAAWC,IACTA,EAAMA,EAAN,QAEFH,EAAS,YAAT,QAb8B,kFAgBhC,SASY,aAOZ,IANA,IAEA,EAH+B,EACzBI,EAAN,GACId,EAAYe,UAAhB,OAKOf,KAGL,cAAagB,OAAA,KAAYD,UAAzB,mBACE,OADF,EAAwC,MAGpC,YACA,YACA,iBACE,IAAKA,UAAA,GAAL,GACE,MAMF,GAJKlB,MAAA,QAAciB,EAAnB,MACEA,EAAA,OAGF,UAAIG,EAAkB,CACpB,IAAIN,WAAJ,EAEEA,MADEd,MAAA,QAAckB,UAAA,GAAlB,OACUA,UAAA,GAARJ,MAEQ,CAACI,UAAA,GAATJ,OAEF,IAAK,IAAIO,EAAT,EAAgBA,EAAIP,MAApB,OAAkCO,IAAK,CACrC,IAAMC,EAAIR,MAAV,GACA,iBAAWQ,IACTR,MAAA,GAAWF,EAAXU,IAGJJ,UAAA,eAKFD,EAAA,GAAoBA,EAAA,UAAyBC,UAAA,GAA7C,IACA,MAEF,kBACE,IAAKA,UAAA,GAAL,GACE,WAEF,IAAID,EAAA,KACFA,EAAA,OAEEA,EAAJ,KAEEA,EAAA,SAEFA,EAAA,IAAqBC,UAAA,MAArB,OACA,MAMF,SACA,eACE,IAAKA,UAAA,GAAL,GACE,MAEGD,EAAL,KACEA,EAAA,OAGF,IADA,IAAMM,EAAYN,EAAlB,GACA,MAAcE,OAAA,KAAYD,UAAA,OAA1B,mBAEMK,EAFN,EAAqD,MAIjDA,EAAA,GAAmBvB,QAAA,OACjBuB,EADiB,GAEjBL,UAAA,MAFF,IAMAK,EAAA,GAAmBL,UAAA,MAAnB,GAGJ,MAEF,YACA,YACA,eACA,kBACA,kBACA,WACA,iBACE,IAAKA,UAAA,GAAL,GACE,MAEGD,EAAL,KACEA,EAAA,OAEFA,EAAA,QAAyBC,UAAA,GAAL,GAApB,GAAgDD,EAAYG,IAC5D,MAEF,WACA,UACA,UACA,UACA,WACA,gBACA,QACOH,EAAL,KACEA,EAAA,GAAoBC,UAAA,GAApB,IAMV,W,gCC3JF,6CAKc,aAA2C,2BAA3C,EAA2C,yBAA3C,EAA2C,gBACvD,OAAO,iBAAW,CAAEM,OAAQC,M,sPCWxB,cACJ,MAEA,oBAAWC,EACT3B,EAAA,MACK,qBAAW2B,EAUhB,MAAM,IAAIC,UAAU,mDAAd,OAAiE,MAAAD,IAAwBA,EAAA,YAA/F,KAAM,aATN,IAAIE,EAAI,MAAAF,EAAA,GAAmBA,EAAA,UAAnB,GAAR,EACA,IAAIE,EAAA,SACFA,EAAIA,EAAA,eAAgB,SAAAC,GAAI,OAAIA,EAAxB,UAAJ,KAEF,IAAID,EAAA,QACF,YAAY,IAAD,OAAX,EAAW,+BAEb7B,EAAM+B,SAASF,EAAf,IAaF,OARI7B,EAAJ,GACE,YAAY,+BAAD,OAAX,EAAW,MACXA,EAAA,IACSA,EAAA,UAAkBgC,MAAtB,MACL,YAAY,IAAD,OAAX,EAAW,+BACXhC,EAAA,UAGF,EAGI,cACJ,IAAIiC,EAAmBN,EAAA,SAAvB,IAIA,OAFIM,EAAA,OAAJ,IAAyBA,EAAW,IAAIC,OAAO,EAAID,EAAf,QAAXA,GAElB,IAAP,EAGI,cACJ,OAAOE,EAASC,EAAhB,M,gHCrDIC,EAAN,mBAEMC,EAA0B,SAAAC,GAAD,OAC7BA,EAAI,KAAH,IAAGF,EAAJ,GACIhC,KAAA,KADJkC,GAEKA,GAAK,EAAI,KAAJ,IAAIF,EAAV,IAAyB,EAH/B,IAMMG,EAA0B,SAAAD,GAAD,OAC7BA,EAAA,WACIA,EADJ,GAEK,EAAI,KAAJ,IAAIF,EAAL,IAAoBE,EAAI,EAH9B,KAMM,cACJ,IAAMrC,EAAN,EACMuC,EAAevC,EAAUI,EAA/B,IAEA,MAAO,CACL,IAAMmC,EADD,GAEL,KAAOvC,EAAUI,EAAA,GAAV,QAFF,GAGL,KAAOmC,EAAevC,EAAUI,EAAA,GAHlC,WAOI,cACJ,IAAMJ,EAAN,EACMwC,GAAMC,EAAA,GAAD,IAAX,IACA,MAAO,QACLzC,EAAUwC,EAAKC,EAAA,GAAf,KACAzC,EAFK,GAAP,QAGEA,EAAUwC,EAAKC,EAAA,GAAf,Q,wsCC5BE,cAGS,IADbC,EACa,uDAHT,QAGS,uCAEb,OAAO,iBAAW,CAChBC,KAAMA,GAAQhB,EAAA,cADE,KAGhBiB,YAHgB,EAKhBC,OALgB,SAKV,EALU,GAKa,IAAlB,KAAkB,EAAlB,KAAQC,EAAU,EAAVA,SAGjB,OAFAC,KAAA,YAAoB,UAAGpB,EAAH,YAAQoB,KAAA,aAAT,IAAnB,OAEOC,EAAEN,EAAIK,KAAb,MAeA,kBAI8C,IAAlDE,EAAkD,wDAOlDP,EAAA,oBALY,SAARQ,EAAQC,GACVC,EAAA,GACAV,EAAA,6BAGF,GAGF,IAAIW,GAAJ,EACA,IACE,uBAAWC,OAAwB,CACjC,IAAMC,EAAmBrC,OAAA,4BAAqC,CAC5DsC,IAAK,WACHH,GAAA,KAIJC,OAAA,qCACAA,OAAA,yCAEF,MAAOG,GAAKC,QAAA,QAGR,oBAMJhB,EAAA,uBAA+BW,GAAmBJ,GAG9C,qBACJ,IAAMU,EAAOC,KAAA,OAAb,EAEA,GAAID,EAAJ,EAAc,YAAO,IAAAE,EAAA,EAAP,EAEd,IAAK,IAAI3D,EAAT,EAAgBA,EAAhB,EAA0BA,IAAK,CAC7B,SAAI2D,EACF,SAEFA,EAAMA,EAAID,KAAV,IAGF,aAAIC,EAAoBC,OAEjB,IAAAD,EAAID,KAAJ,MAA2CC,EAAID,KAAtD,IAGI,gBACJ,GAAIG,IAAJ,EAAa,OAAO,EAEpB,GAAIA,aAAA,MAAqBxD,aAAzB,MAEMwD,EAAA,YAAgBxD,EAApB,UAAiC,OAAO,EAG1C,GAAIwD,IAAM7C,OAAN6C,IAAmBxD,IAAMW,OAA7B,GAEE,SAGF,IAAM8C,EAAQ9C,OAAA,KAAd,GAEA,OAAI8C,EAAA,SAAiB9C,OAAA,QAArB,QAKO8C,EAAA,OAAY,SAAAC,GAAC,OAAIC,EAAUH,EAAD,GAAOxD,EAAxC,OAGI,qBAEJ,OAAI,MAAAsD,GAAA,MAAJ,iBAAmCD,UACnC,IAAIC,EAAA,MAAgCA,EAAP,MAGtBM,EAAeN,GADtBD,MADAA,KAAOA,KAAA,qBAJmE,QAKnE,cALmE,KAM/C,MAAN,KAArB,GAJ6DE,EAOzD,kBAKJ,SAAIM,EAAkB,YAAO,IAAAC,EAAA,EAAP,EAEtB,GAAIA,IAASnD,OAAb,GAA2B,YAAO,IAAA4C,EAAA,EAAP,EAE3B,oBAAWM,EAAuB,OAAOE,EAAqBD,EAAMD,EAAlC,GAElC,GAAIrE,MAAA,QAAJ,GAA6B,OAAOoE,EAAeE,EAAMD,EAA5B,GAE7B,sBAAWA,EAAyB,OAAON,EAE3C,IAAMS,EAAQH,EAASC,EAAvB,GAEA,YAAwB,IAAVE,EAAwBT,EAAtC,EAGI,cACJ,OAAO/D,MAAA,KAAW,CAAEyE,WAAU,qBAA9B,KAGI,cACJ,IAAK9B,GAAMA,EAAA,WAAgB+B,KAA3B,aAA8C,OAAO,EAErD,IAAMC,GAASpB,OAAA,qCAAf,WAEA,UAAmBqB,EAAUjC,EAAjB,YAId,IAAMkC,EAAgB,CACpB,IADoB,QAEpB,IAFoB,OAGpB,IAAK,QAGD,cACJ,OAAOC,EAAA,kBAAsB,SAAAC,GAAG,OAAIF,EAAAE,IAApC,KAGI,gBAGJ,IAFA,IAAMC,EAAN,GAES7E,EAAT,EAAgBA,EAAI8E,EAApB,OAAiC9E,IAAK,CACpC,IAAMY,EAAMkE,EAAZ,QACA,IAAWnB,EAAP,KACFkB,EAAA,GAAgBlB,EAAhB,IAIJ,SAGI,cAA6E,IAAXoB,EAAW,uDAA7E,KACJ,OAAI,MAAAJ,GAAJ,KAAmBA,OACjB,EACS/C,OAAJ,GACEoD,OAAP,GAEA,UAAUC,OAAON,IAAjB,UAIE,cACJ,OAAQA,GAAD,uCAAP,cAGI,cACJ,OAAO,OAAAhB,GAAP,WAAuB,eAIlB,IAAMuB,EAAWlE,OAAA,OAAc,CACpCmE,MADoC,GAEpCC,IAFoC,EAGpCC,OAHoC,GAIpCC,IAJoC,GAKpCC,MALoC,GAMpCC,GANoC,GAOpCC,KAPoC,GAQpCC,KARoC,GASpCC,MAToC,GAUpCC,IAVoC,GAWpCC,KAXoC,GAYpCC,IAZoC,GAapCC,UAboC,EAcpCC,OAdoC,GAepCC,OAfoC,GAgBpCC,SAAU,KAKN,gBACJ,OAAKC,EAAA,WAAL,KASO/B,EAAqBgC,EAJX,yBAAH,OAA4BD,EAAA,4BANgB,OAU1D,GARE,EAWE,cACJ,OAAOnF,OAAA,KAAP,GAMF,IAAMqF,EAAN,SACaC,EAAY,SAAA3B,GACvB,OAAOA,EAAA,WAAwB,qBAAUlD,EAAIA,EAAH,cAA1C,OAiBI,cACJ,OAAOkD,EAAA,wBAA8BA,EAAA,MAArC,GAGI,kBAKJ,IAAM/D,EAAM2F,EAAZ,GACA,OAAOC,EAAA,QAAa,cAClB,IAAM3F,EAAMuD,EAAqBD,EAAjC,GAEA,OADEsC,EAAA,GAAWA,EAAA,IAAZ,YACD,IAHF,IAOI,cAAgE,OAAO,MAAAC,EAAY7G,MAAA,aAAuB,CAAnC6G,GAAP,GAEhE,sBAOJ,GAAI,OAAAC,IAAoBA,EAAxB,OAAuC,OAAOH,EAC9C,IAAMI,EAAiB,IAAIC,KAAJ,WAA0B,CAAEC,YAAF,SAAyBC,MAAO,SAEjF,OAAOP,EAAA,MAAW,cAChB,IAAK,IAAIxG,EAAT,EAAgBA,EAAI2G,EAApB,OAAmC3G,IAAK,CACtC,IAAMgH,EAAUL,EAAhB,GAEIM,EAAQ7C,EAAqBP,EAAjC,GACIqD,EAAQ9C,EAAqB/D,EAAjC,GAEA,GAAI8G,EAAJnH,GAAiB,OACE,CAACkH,EAAlB,KADe,KACf,EADe,KAIjB,GAAIE,GAAiBA,EAArB,GAA6C,CAC3C,IAAMC,EAAeD,EAAA,KAArB,GAEA,MAAmB,SAEnB,SAIF,GAAI,OAAAH,GAAJ,OAAsBC,EAAtB,CAnBsC,MAuBrB,CAACD,EAAOC,GAAOI,KAAI,SAAAnG,GAAC,OAAKA,GAAD,eAAzC,uBAvBsC,mBAyBtC,IAFA,EAvBsC,SAuBtC,EAvBsC,MA0BpC,OAAKS,MAAD,IAAkBA,MAAtB,GACOgF,EAAA,UAAP,GAD2C3B,OAAA,GAAgBA,OAAvB,IAKxC,YAIE,kBACJ,OAAO,MAAAZ,GAAA,MACLkD,GADK,kBAEElD,IAFT,IAGEA,EAAA,uCAA6CkD,EAA7C,qBAGE,gBACJ,SAEA,MADAA,EAASA,EAAA,WAAT,eACI,OAA6Bf,EAE1BA,EAAA,QAAa,SAAArC,GAAI,OAAInD,OAAA,cAAuB,SAAAJ,GAAG,OAAI4G,EAAcpD,EAAqBD,EAAtB,YAJnDqC,EAahB,kBACJ,OAAIJ,EAAA,WAAmBA,EAAA,aAAnB,IAA6CA,EAAA,gBAAjD,KACSqB,EAAQ,SAAf,SAEErB,EAAA,OAAJ,GAA4B,SACxBA,EAAA,aAAJ,GAAkC,cAAlC,EAWI,gBACJ,OAAOpF,OAAA,gBAAgC,SAAA0G,GAAC,OAAIA,EAAA,WAArC,cAAkE,cAEvE,OADA/D,EAAI+D,EAAA,UAAJ,KAA6BC,EAA7B,GACA,IAFF,IAMI,cAA8F,IAAlElF,EAAkE,uDAA9F,eAA8F,uCAAhBmF,EAAgB,wDAClG,OAAIxB,EAAA,aAAJ,GACSA,EAAA,gBAAuBvD,gBAAA,SAA2BA,OAAzD,OACSuD,EAAA,WAAqBvD,OAAzB,SACEuD,EAAA,OAAP,GAKE,cAAgD,IAAhByB,EAAgB,uDAAhD,EAAyCC,EAAO,uDAAhD,EACJ,OAAO7H,KAAA,MAAcA,KAAA,MAArB,IAGI,gBACJ,OAAO0E,GADsD,uDAAzD,KACS,OAAY1E,KAAA,MAAYqE,EAASK,EAA9C,SAGI,cAGJ,IAH0C,IAARoD,EAAQ,uDAAtC,EACEC,EAAN,GACIxD,EAAJ,EACOA,EAAQG,EAAf,QACEqD,EAAA,KAAarD,EAAA,SAAb,IACAH,GAAA,EAEF,SAkBI,cACJ,SAEOxD,OAAA,gBAAwB,cAE7B,OADAiH,EAAE3B,EAAF,IAAmB3C,EAAnB,GACA,IAFF,IAFiB,GAQb,aAEwB,IAD5BuE,OAC4B,uDAFxB,GAEJC,EAA4B,uDAFxB,GAIJ,IAAK,IAAL,OAA0B,CACxB,IAAMC,EAAiBF,OAAvB,GACMG,EAAiBF,EAFC,GAOtBG,EAAA,IACAA,EAFF,GAIEJ,OAAA,GAAcK,EAAUH,EAAxB,GAKFF,OAAA,KAGF,gB,8MCrbF,SAASM,EAAT,OASE,GARA,IACEpC,EAAK,CACHqC,QADG,EAEHC,QAFG,EAGHC,SAAUvC,IAId,EAAQ,CAGN,GADAA,EAAA,gBAAqBA,EAAA,iBAArB,GACIA,EAAA,yBAAJ,GAA0C,OAC1CA,EAAA,wBAGF,MAAO,wBACLA,EA4DJ,YACE,GAAIA,EAAA,QAAaA,EAAjB,QAA6B,CAG3B,IAFA,IAAMwC,EAAN,GACIC,EAAJ,EACA,GAAW,CACT,GAAID,EAAA,OAAJ,EAAqB,CACnB,IAAMnF,EAAYmF,EAAKA,EAAA,OAAvB,GACA,GAAInF,EAAA,cAAqB2C,EAAzB,YAAyC,CACvCyC,IACAzC,EAAKA,EAAL,QACA,SACSyC,EAAJ,IACLD,EAAKA,EAAA,OAAL,GAAwB,CAACnF,EAAzB,GACAoF,EAAA,GAGJD,EAAA,QACAxC,EAAKA,EAAL,QAEF,MAAO,mBAAqBwC,EAAA,KACrB,8BACH,IAAA5I,EAAA,WAAoB,IAAI8B,OAAO,EAAX,EAAe9B,IADhC,OAGHH,MAAA,qBACOiJ,EAAoB1C,EAAD,IAD1B,gBACyCA,EADzC,wBAEI0C,EANoB,YAA5B,MAUA,8BAAwBA,EAAxB,QAzFKC,CAAH,GADJ,IAUI,kBACJ,IAAMC,EAAaR,EAAcS,EAAS7C,EAA1C,GACA,MAAA4C,GAAsBxF,QAAA,KAAtBwF,GAGI,kBACJ,IAAMA,EAAaR,EAAcS,EAAS7C,EAA1C,GACA,MAAA4C,GAAsBxF,QAAA,MAAtBwF,GAMI,oBACJE,EAAa,eAAD,OAAgBC,EAAhB,sLAAZ,GAEI,kBACJC,EAAY,cAAD,0DAAX,GAOF,IAAMC,EAAN,kBACMC,EAAY,SAAA3E,GAAD,OAAiBA,EAAA,WACX,SAAAlD,GAAC,OAAIA,EADM,iCAAlC,KAIA,SAASqH,EAAT,KACE,GAAI1C,EAAA,QAAJ,EACE,eAEF,IAAMrD,EAAwB,mBAAPqD,GAAP,MAA4BA,EAAA,IACxCA,EADY,QAEZA,EAAA,OACEA,EAAA,UAAeA,EAAA,YADjB,QAEEA,GAJN,GAKI3D,EAAOM,EAAA,MAAgBA,EAA3B,cACMwG,EAAOxG,EAAb,OACA,IAAKN,GAAL,EAAmB,CACjB,IAAM+G,EAAQD,EAAA,MAAd,mBACA9G,EAAO+G,GAASA,EAAhB,GAGF,OACG/G,EAAO,IAAH,OAAO6G,EAAZ,GAAK,qBACJC,IAAA,IAAQE,EAAR,cAAAF,GAFH","file":"vendors~app~c964cbd5.js","sourcesContent":["import { ColorInt, XYZ } from '../colorUtils'\nimport { clamp } from '../../util/helpers'\n\n// For converting XYZ to sRGB\nconst srgbForwardMatrix = [\n [3.2406, -1.5372, -0.4986],\n [-0.9689, 1.8758, 0.0415],\n [0.0557, -0.2040, 1.0570],\n]\n\n// Forward gamma adjust\nconst srgbForwardTransform = (C: number): number => (\n C <= 0.0031308\n ? C * 12.92\n : 1.055 * C ** (1 / 2.4) - 0.055\n)\n\n// For converting sRGB to XYZ\nconst srgbReverseMatrix = [\n [0.4124, 0.3576, 0.1805],\n [0.2126, 0.7152, 0.0722],\n [0.0193, 0.1192, 0.9505],\n]\n\n// Reverse gamma adjust\nconst srgbReverseTransform = (C: number): number => (\n C <= 0.04045\n ? C / 12.92\n : ((C + 0.055) / 1.055) ** 2.4\n)\n\nexport function fromXYZ (xyz: XYZ): ColorInt {\n const rgb = Array(3)\n const transform = srgbForwardTransform\n const matrix = srgbForwardMatrix\n\n // Matrix transform, then gamma adjustment\n for (let i = 0; i < 3; ++i) {\n rgb[i] = Math.round(clamp(transform(\n matrix[i][0] * xyz[0] +\n matrix[i][1] * xyz[1] +\n matrix[i][2] * xyz[2]\n )) * 255)\n }\n\n // Rescale back to [0, 255]\n return (rgb[0] << 16) + (rgb[1] << 8) + (rgb[2] << 0)\n}\n\nexport function toXYZ (rgb: ColorInt): XYZ {\n const xyz: XYZ = [0, 0, 0]\n const transform = srgbReverseTransform\n const matrix = srgbReverseMatrix\n\n // Rescale from [0, 255] to [0, 1] then adjust sRGB gamma to linear RGB\n const r = transform((rgb >> 16 & 0xff) / 255)\n const g = transform((rgb >> 8 & 0xff) / 255)\n const b = transform((rgb >> 0 & 0xff) / 255)\n\n // Matrix color space transform\n for (let i = 0; i < 3; ++i) {\n xyz[i] = matrix[i][0] * r + matrix[i][1] * g + matrix[i][2] * b\n }\n\n return xyz\n}\n","/**\n * @copyright 2017 Alex Regan\n * @license MIT\n * @see https://github.com/alexsasharegan/vue-functional-data-merge\n */\n/* eslint-disable max-statements */\nimport { VNodeData } from 'vue'\nimport { camelize } from './helpers'\n\nconst pattern = {\n styleList: /;(?![^(]*\\))/g,\n styleProp: /:(.*)/,\n} as const\n\nfunction parseStyle (style: string) {\n const styleMap: Dictionary = {}\n\n for (const s of style.split(pattern.styleList)) {\n let [key, val] = s.split(pattern.styleProp)\n key = key.trim()\n if (!key) {\n continue\n }\n // May be undefined if the `key: value` pair is incomplete.\n if (typeof val === 'string') {\n val = val.trim()\n }\n styleMap[camelize(key)] = val\n }\n\n return styleMap\n}\n\n/**\n * Intelligently merges data for createElement.\n * Merges arguments left to right, preferring the right argument.\n * Returns new VNodeData object.\n */\nexport default function mergeData (...vNodeData: VNodeData[]): VNodeData\nexport default function mergeData (): VNodeData {\n const mergeTarget: VNodeData & Dictionary = {}\n let i: number = arguments.length\n let prop: string\n let event: string\n\n // Allow for variadic argument length.\n while (i--) {\n // Iterate through the data properties and execute merge strategies\n // Object.keys eliminates need for hasOwnProperty call\n for (prop of Object.keys(arguments[i])) {\n switch (prop) {\n // Array merge strategy (array concatenation)\n case 'class':\n case 'style':\n case 'directives':\n if (!arguments[i][prop]) {\n break\n }\n if (!Array.isArray(mergeTarget[prop])) {\n mergeTarget[prop] = []\n }\n\n if (prop === 'style') {\n let style: any[]\n if (Array.isArray(arguments[i].style)) {\n style = arguments[i].style\n } else {\n style = [arguments[i].style]\n }\n for (let j = 0; j < style.length; j++) {\n const s = style[j]\n if (typeof s === 'string') {\n style[j] = parseStyle(s)\n }\n }\n arguments[i].style = style\n }\n\n // Repackaging in an array allows Vue runtime\n // to merge class/style bindings regardless of type.\n mergeTarget[prop] = mergeTarget[prop].concat(arguments[i][prop])\n break\n // Space delimited string concatenation strategy\n case 'staticClass':\n if (!arguments[i][prop]) {\n break\n }\n if (mergeTarget[prop] === undefined) {\n mergeTarget[prop] = ''\n }\n if (mergeTarget[prop]) {\n // Not an empty string, so concatenate\n mergeTarget[prop] += ' '\n }\n mergeTarget[prop] += arguments[i][prop].trim()\n break\n // Object, the properties of which to merge via array merge strategy (array concatenation).\n // Callback merge strategy merges callbacks to the beginning of the array,\n // so that the last defined callback will be invoked first.\n // This is done since to mimic how Object.assign merging\n // uses the last given value to assign.\n case 'on':\n case 'nativeOn':\n if (!arguments[i][prop]) {\n break\n }\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {}\n }\n const listeners = mergeTarget[prop]!\n for (event of Object.keys(arguments[i][prop] || {})) {\n // Concat function to array of functions if callback present.\n if (listeners[event]) {\n // Insert current iteration data in beginning of merged array.\n listeners[event] = Array().concat( // eslint-disable-line\n listeners[event],\n arguments[i][prop][event]\n )\n } else {\n // Straight assign.\n listeners[event] = arguments[i][prop][event]\n }\n }\n break\n // Object merge strategy\n case 'attrs':\n case 'props':\n case 'domProps':\n case 'scopedSlots':\n case 'staticStyle':\n case 'hook':\n case 'transition':\n if (!arguments[i][prop]) {\n break\n }\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {}\n }\n mergeTarget[prop] = { ...arguments[i][prop], ...mergeTarget[prop] }\n break\n // Reassignment strategy (no merge)\n case 'slot':\n case 'key':\n case 'ref':\n case 'tag':\n case 'show':\n case 'keepAlive':\n default:\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop]\n }\n }\n }\n }\n\n return mergeTarget\n}\n","/* eslint-disable max-len, import/export, no-use-before-define */\nimport Vue, { VueConstructor } from 'vue'\n\nexport default function mixins (...args: T): ExtractVue extends infer V ? V extends Vue ? VueConstructor : never : never\nexport default function mixins (...args: VueConstructor[]): VueConstructor\nexport default function mixins (...args: VueConstructor[]): VueConstructor {\n return Vue.extend({ mixins: args })\n}\n\n/**\n * Returns the instance type from a VueConstructor\n * Useful for adding types when using mixins().extend()\n */\nexport type ExtractVue = T extends (infer U)[]\n ? UnionToIntersection<\n U extends VueConstructor ? V : never\n >\n : T extends VueConstructor ? V : never\n\ntype UnionToIntersection =\n (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never\n","import { consoleWarn } from './console'\nimport { chunk, padEnd } from './helpers'\nimport { toXYZ } from './color/transformSRGB'\n\nexport type ColorInt = number\nexport type XYZ = [number, number, number]\nexport type LAB = [number, number, number]\nexport type HSV = { h: number, s: number, v: number }\nexport type HSVA = HSV & { a: number }\nexport type RGB = { r: number, g: number, b: number }\nexport type RGBA = RGB & { a: number }\nexport type HSL = { h: number, s: number, l: number }\nexport type HSLA = HSL & { a: number }\nexport type Hex = string\nexport type Hexa = string\nexport type Color = string | number | {}\n\nexport function colorToInt (color: Color): ColorInt {\n let rgb\n\n if (typeof color === 'number') {\n rgb = color\n } else if (typeof color === 'string') {\n let c = color[0] === '#' ? color.substring(1) : color\n if (c.length === 3) {\n c = c.split('').map(char => char + char).join('')\n }\n if (c.length !== 6) {\n consoleWarn(`'${color}' is not a valid rgb color`)\n }\n rgb = parseInt(c, 16)\n } else {\n throw new TypeError(`Colors can only be numbers or strings, recieved ${color == null ? color : color.constructor.name} instead`)\n }\n\n if (rgb < 0) {\n consoleWarn(`Colors cannot be negative: '${color}'`)\n rgb = 0\n } else if (rgb > 0xffffff || isNaN(rgb)) {\n consoleWarn(`'${color}' is not a valid rgb color`)\n rgb = 0xffffff\n }\n\n return rgb\n}\n\nexport function intToHex (color: ColorInt): string {\n let hexColor: string = color.toString(16)\n\n if (hexColor.length < 6) hexColor = '0'.repeat(6 - hexColor.length) + hexColor\n\n return '#' + hexColor\n}\n\nexport function colorToHex (color: Color): string {\n return intToHex(colorToInt(color))\n}\n\n/**\n * Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n *\n * @param color HSVA color as an array [0-360, 0-1, 0-1, 0-1]\n */\nexport function HSVAtoRGBA (hsva: HSVA): RGBA {\n const { h, s, v, a } = hsva\n const f = (n: number) => {\n const k = (n + (h / 60)) % 6\n return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0)\n }\n\n const rgb = [f(5), f(3), f(1)].map(v => Math.round(v * 255))\n\n return { r: rgb[0], g: rgb[1], b: rgb[2], a }\n}\n\n/**\n * Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n *\n * @param color RGBA color as an array [0-255, 0-255, 0-255, 0-1]\n */\nexport function RGBAtoHSVA (rgba: RGBA): HSVA {\n if (!rgba) return { h: 0, s: 1, v: 1, a: 1 }\n\n const r = rgba.r / 255\n const g = rgba.g / 255\n const b = rgba.b / 255\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n\n let h = 0\n\n if (max !== min) {\n if (max === r) {\n h = 60 * (0 + ((g - b) / (max - min)))\n } else if (max === g) {\n h = 60 * (2 + ((b - r) / (max - min)))\n } else if (max === b) {\n h = 60 * (4 + ((r - g) / (max - min)))\n }\n }\n\n if (h < 0) h = h + 360\n\n const s = max === 0 ? 0 : (max - min) / max\n const hsv = [h, s, max]\n\n return { h: hsv[0], s: hsv[1], v: hsv[2], a: rgba.a }\n}\n\nexport function HSVAtoHSLA (hsva: HSVA): HSLA {\n const { h, s, v, a } = hsva\n\n const l = v - (v * s / 2)\n\n const sprime = l === 1 || l === 0 ? 0 : (v - l) / Math.min(l, 1 - l)\n\n return { h, s: sprime, l, a }\n}\n\nexport function HSLAtoHSVA (hsl: HSLA): HSVA {\n const { h, s, l, a } = hsl\n\n const v = l + s * Math.min(l, 1 - l)\n\n const sprime = v === 0 ? 0 : 2 - (2 * l / v)\n\n return { h, s: sprime, v, a }\n}\n\nexport function RGBAtoCSS (rgba: RGBA): string {\n return `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`\n}\n\nexport function RGBtoCSS (rgba: RGBA): string {\n return RGBAtoCSS({ ...rgba, a: 1 })\n}\n\nexport function RGBAtoHex (rgba: RGBA): Hex {\n const toHex = (v: number) => {\n const h = Math.round(v).toString(16)\n return ('00'.substr(0, 2 - h.length) + h).toUpperCase()\n }\n\n return `#${[\n toHex(rgba.r),\n toHex(rgba.g),\n toHex(rgba.b),\n toHex(Math.round(rgba.a * 255)),\n ].join('')}`\n}\n\nexport function HexToRGBA (hex: Hex): RGBA {\n const rgba = chunk(hex.slice(1), 2).map((c: string) => parseInt(c, 16))\n\n return {\n r: rgba[0],\n g: rgba[1],\n b: rgba[2],\n a: Math.round((rgba[3] / 255) * 100) / 100,\n }\n}\n\nexport function HexToHSVA (hex: Hex): HSVA {\n const rgb = HexToRGBA(hex)\n return RGBAtoHSVA(rgb)\n}\n\nexport function HSVAtoHex (hsva: HSVA): Hex {\n return RGBAtoHex(HSVAtoRGBA(hsva))\n}\n\nexport function parseHex (hex: string): Hex {\n if (hex.startsWith('#')) {\n hex = hex.slice(1)\n }\n\n hex = hex.replace(/([^0-9a-f])/gi, 'F')\n\n if (hex.length === 3) {\n hex = hex.split('').map(x => x + x).join('')\n }\n\n if (hex.length === 6) {\n hex = padEnd(hex, 8, 'F')\n } else {\n hex = padEnd(padEnd(hex, 6), 8, 'F')\n }\n\n return `#${hex}`.toUpperCase().substr(0, 9)\n}\n\nexport function RGBtoInt (rgba: RGBA): ColorInt {\n return (rgba.r << 16) + (rgba.g << 8) + rgba.b\n}\n\n/**\n * Returns the contrast ratio (1-21) between two colors.\n *\n * @param c1 First color\n * @param c2 Second color\n */\nexport function contrastRatio (c1: RGBA, c2: RGBA): number {\n const [, y1] = toXYZ(RGBtoInt(c1))\n const [, y2] = toXYZ(RGBtoInt(c2))\n\n return (Math.max(y1, y2) + 0.05) / (Math.min(y1, y2) + 0.05)\n}\n","import { XYZ, LAB } from '../colorUtils'\n\nconst delta = 0.20689655172413793 // 6รท29\n\nconst cielabForwardTransform = (t: number): number => (\n t > delta ** 3\n ? Math.cbrt(t)\n : (t / (3 * delta ** 2)) + 4 / 29\n)\n\nconst cielabReverseTransform = (t: number): number => (\n t > delta\n ? t ** 3\n : (3 * delta ** 2) * (t - 4 / 29)\n)\n\nexport function fromXYZ (xyz: XYZ): LAB {\n const transform = cielabForwardTransform\n const transformedY = transform(xyz[1])\n\n return [\n 116 * transformedY - 16,\n 500 * (transform(xyz[0] / 0.95047) - transformedY),\n 200 * (transformedY - transform(xyz[2] / 1.08883)),\n ]\n}\n\nexport function toXYZ (lab: LAB): XYZ {\n const transform = cielabReverseTransform\n const Ln = (lab[0] + 16) / 116\n return [\n transform(Ln + lab[1] / 500) * 0.95047,\n transform(Ln),\n transform(Ln - lab[2] / 200) * 1.08883,\n ]\n}\n","import Vue from 'vue'\nimport { VNode, VNodeDirective } from 'vue/types'\nimport { VuetifyIcon } from 'vuetify/types/services/icons'\nimport { DataTableCompareFunction, SelectItemKey } from 'types'\n\nexport function createSimpleFunctional (\n c: string,\n el = 'div',\n name?: string\n) {\n return Vue.extend({\n name: name || c.replace(/__/g, '-'),\n\n functional: true,\n\n render (h, { data, children }): VNode {\n data.staticClass = (`${c} ${data.staticClass || ''}`).trim()\n\n return h(el, data, children)\n },\n })\n}\n\nexport type BindingConfig = Pick\nexport function directiveConfig (binding: BindingConfig, defaults = {}): VNodeDirective {\n return {\n ...defaults,\n ...binding.modifiers,\n value: binding.arg,\n ...(binding.value || {}),\n }\n}\n\nexport function addOnceEventListener (\n el: EventTarget,\n eventName: string,\n cb: (event: Event) => void,\n options: boolean | AddEventListenerOptions = false\n): void {\n var once = (event: Event) => {\n cb(event)\n el.removeEventListener(eventName, once, options)\n }\n\n el.addEventListener(eventName, once, options)\n}\n\nlet passiveSupported = false\ntry {\n if (typeof window !== 'undefined') {\n const testListenerOpts = Object.defineProperty({}, 'passive', {\n get: () => {\n passiveSupported = true\n },\n })\n\n window.addEventListener('testListener', testListenerOpts, testListenerOpts)\n window.removeEventListener('testListener', testListenerOpts, testListenerOpts)\n }\n} catch (e) { console.warn(e) }\nexport { passiveSupported }\n\nexport function addPassiveEventListener (\n el: EventTarget,\n event: string,\n cb: EventHandlerNonNull | (() => void),\n options: {}\n): void {\n el.addEventListener(event, cb, passiveSupported ? options : false)\n}\n\nexport function getNestedValue (obj: any, path: (string | number)[], fallback?: any): any {\n const last = path.length - 1\n\n if (last < 0) return obj === undefined ? fallback : obj\n\n for (let i = 0; i < last; i++) {\n if (obj == null) {\n return fallback\n }\n obj = obj[path[i]]\n }\n\n if (obj == null) return fallback\n\n return obj[path[last]] === undefined ? fallback : obj[path[last]]\n}\n\nexport function deepEqual (a: any, b: any): boolean {\n if (a === b) return true\n\n if (a instanceof Date && b instanceof Date) {\n // If the values are Date, they were convert to timestamp with getTime and compare it\n if (a.getTime() !== b.getTime()) return false\n }\n\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false\n }\n\n const props = Object.keys(a)\n\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false\n }\n\n return props.every(p => deepEqual(a[p], b[p]))\n}\n\nexport function getObjectValueByPath (obj: any, path: string, fallback?: any): any {\n // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n if (obj == null || !path || typeof path !== 'string') return fallback\n if (obj[path] !== undefined) return obj[path]\n path = path.replace(/\\[(\\w+)\\]/g, '.$1') // convert indexes to properties\n path = path.replace(/^\\./, '') // strip a leading dot\n return getNestedValue(obj, path.split('.'), fallback)\n}\n\nexport function getPropertyFromItem (\n item: object,\n property: SelectItemKey,\n fallback?: any\n): any {\n if (property == null) return item === undefined ? fallback : item\n\n if (item !== Object(item)) return fallback === undefined ? item : fallback\n\n if (typeof property === 'string') return getObjectValueByPath(item, property, fallback)\n\n if (Array.isArray(property)) return getNestedValue(item, property, fallback)\n\n if (typeof property !== 'function') return fallback\n\n const value = property(item, fallback)\n\n return typeof value === 'undefined' ? fallback : value\n}\n\nexport function createRange (length: number): number[] {\n return Array.from({ length }, (v, k) => k)\n}\n\nexport function getZIndex (el?: Element | null): number {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0\n\n const index = +window.getComputedStyle(el).getPropertyValue('z-index')\n\n if (!index) return getZIndex(el.parentNode as Element)\n return index\n}\n\nconst tagsToReplace = {\n '&': '&',\n '<': '<',\n '>': '>',\n} as any\n\nexport function escapeHTML (str: string): string {\n return str.replace(/[&<>]/g, tag => tagsToReplace[tag] || tag)\n}\n\nexport function filterObjectOnKeys (obj: T, keys: K[]): { [N in K]: T[N] } {\n const filtered = {} as { [N in K]: T[N] }\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (typeof obj[key] !== 'undefined') {\n filtered[key] = obj[key]\n }\n }\n\n return filtered\n}\n\nexport function convertToUnit (str: string | number | null | undefined, unit = 'px'): string | undefined {\n if (str == null || str === '') {\n return undefined\n } else if (isNaN(+str!)) {\n return String(str)\n } else {\n return `${Number(str)}${unit}`\n }\n}\n\nexport function kebabCase (str: string): string {\n return (str || '').replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n}\n\nexport function isObject (obj: any): obj is object {\n return obj !== null && typeof obj === 'object'\n}\n\n// KeyboardEvent.keyCode aliases\nexport const keyCodes = Object.freeze({\n enter: 13,\n tab: 9,\n delete: 46,\n esc: 27,\n space: 32,\n up: 38,\n down: 40,\n left: 37,\n right: 39,\n end: 35,\n home: 36,\n del: 46,\n backspace: 8,\n insert: 45,\n pageup: 33,\n pagedown: 34,\n})\n\n// This remaps internal names like '$cancel' or '$vuetify.icons.cancel'\n// to the current name or component for that icon.\nexport function remapInternalIcon (vm: Vue, iconName: string): VuetifyIcon {\n if (!iconName.startsWith('$')) {\n return iconName\n }\n\n // Get the target icon name\n const iconPath = `$vuetify.icons.values.${iconName.split('$').pop()!.split('.').pop()}`\n\n // Now look up icon indirection name,\n // e.g. '$vuetify.icons.values.cancel'\n return getObjectValueByPath(vm, iconPath, iconName)\n}\n\nexport function keys (o: O) {\n return Object.keys(o) as (keyof O)[]\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nconst camelizeRE = /-(\\w)/g\nexport const camelize = (str: string): string => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\n}\n\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\nexport function arrayDiff (a: any[], b: any[]): any[] {\n const diff: any[] = []\n for (let i = 0; i < b.length; i++) {\n if (a.indexOf(b[i]) < 0) diff.push(b[i])\n }\n return diff\n}\n\n/**\n * Makes the first character of a string uppercase\n */\nexport function upperFirst (str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function groupItems (\n items: T[],\n groupBy: string[],\n groupDesc: boolean[]\n): Record {\n const key = groupBy[0]\n return items.reduce((acc, item) => {\n const val = getObjectValueByPath(item, key)\n ;(acc[val] = acc[val] || []).push(item)\n return acc\n }, {} as Record)\n}\n\nexport function wrapInArray (v: T | T[] | null | undefined): T[] { return v != null ? Array.isArray(v) ? v : [v] : [] }\n\nexport function sortItems (\n items: T[],\n sortBy: string[],\n sortDesc: boolean[],\n locale: string,\n customSorters?: Record>\n): T[] {\n if (sortBy === null || !sortBy.length) return items\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n return items.sort((a, b) => {\n for (let i = 0; i < sortBy.length; i++) {\n const sortKey = sortBy[i]\n\n let sortA = getObjectValueByPath(a, sortKey)\n let sortB = getObjectValueByPath(b, sortKey)\n\n if (sortDesc[i]) {\n [sortA, sortB] = [sortB, sortA]\n }\n\n if (customSorters && customSorters[sortKey]) {\n const customResult = customSorters[sortKey](sortA, sortB)\n\n if (!customResult) continue\n\n return customResult\n }\n\n // Check if both cannot be evaluated\n if (sortA === null && sortB === null) {\n continue\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => (s || '').toString().toLocaleLowerCase())\n\n if (sortA !== sortB) {\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n })\n}\n\nexport function defaultFilter (value: any, search: string | null, item: any) {\n return value != null &&\n search != null &&\n typeof value !== 'boolean' &&\n value.toString().toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) !== -1\n}\n\nexport function searchItems (items: T[], search: string): T[] {\n if (!search) return items\n search = search.toString().toLowerCase()\n if (search.trim() === '') return items\n\n return items.filter(item => Object.keys(item).some(key => defaultFilter(getObjectValueByPath(item, key), search, item)))\n}\n\n/**\n * Returns:\n * - 'normal' for old style slots - `