{"version":3,"sources":["webpack:///./src/views/PersonsMerge.vue?b6e9","webpack:///./src/views/PersonsMerge.vue","webpack:///./src/views/PersonsMerge.vue?f456","webpack:///./src/views/PersonsMerge.vue?746f"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","toolbar","staticClass","_v","loading","paginating","scopedSlots","_u","key","fn","filter","on","filterChanged","proxy","finalContactHelp","duplicateContactHelp","personsDuplicatesFind","offsetY","data","staticStyle","_s","duplicateSelectText","item","ref","_g","_b","$event","ignoreDuplicate","length","model","value","callback","$$v","selectedDuplicateId","expression","style","contentHeight","_l","prop","i","name","newPersonProperty","fieldDisabled","fieldSelected","newPersonUpdate","selectedDuplicateField","mergeConfirm","duplicates","personsMergePlaceholder","duplicatesTile","staticRenderFns","Vue","extend","window","innerHeight","content","img","selected","display","options","newPerson","selectedFields","title","left","icon","back","permission","mounted","personProperties","$store","dispatch","commit","field","$nextTick","calculateContentHeight","addEventListener","beforeDestroy","removeEventListener","computed","mapGetters","duplicatesParams","personsDuplicatesFilter","lastPage","scrollPositionLeft","isMobile","getters","isApp","selectedDuplicate","find","dupe","id","methods","body","document","clientHeight","toolbars","padding","navbar","height","type","color","text","duplicatesLine1","line","phone","duplicatesLine1Phone","duplicatesLine1Person","email","duplicatesLine1Email","val","address","name_given","name_family","$options","filters","msisdn","duplicatesLine2","count","toString","person","name_full","phone_default","email_default","line1","line2","showDuplicates","property","params","page","duplicate","Object","entries","$set","new_array","merge","dialog_result","response","personsDuplicates","index","findIndex","$refs","personsMerge","selectedModel","splice","buttonLink","new_id","buttonLinkText","bool","paginateCurrentList","nextPage","shouldPaginate","hasText","searchBarText","_","get","watch","phone_mobile","position","bottom","component","VBtn","VCheckbox","VCol","VIcon","VProgressCircular","VRow","VSelect","VTooltip"],"mappings":"sHAAA,IAAIA,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAY,SAAEI,EAAG,gBAAgB,CAACE,MAAM,CAAC,QAAUN,EAAIO,UAAU,CAACH,EAAG,QAAQ,CAACI,YAAY,OAAOF,MAAM,CAAC,MAAQ,SAAS,QAAU,WAAW,CAACF,EAAG,QAAQ,CAACJ,EAAIS,GAAG,sJAAsJ,IAAI,GAAGL,EAAG,gBAAgB,CAACE,MAAM,CAAC,OAASN,EAAIU,SAAWV,EAAIW,WAAW,QAAUX,EAAIO,SAASK,YAAYZ,EAAIa,GAAG,CAAC,CAACC,IAAI,WAAWC,GAAG,WAAW,MAAO,CAACX,EAAG,QAAQ,CAACI,YAAY,OAAOF,MAAM,CAAC,aAAa,GAAG,MAAQ,SAAS,QAAU,WAAW,CAACF,EAAG,OAAO,CAACI,YAAY,QAAQ,CAACR,EAAIS,GAAG,yBAAyBL,EAAG,uBAAuB,CAACE,MAAM,CAAC,OAASN,EAAIgB,OAAO,QAAU,GAAG,MAAQ,SAASC,GAAG,CAAC,cAAgBjB,EAAIkB,kBAAkB,KAAKC,OAAM,GAAM,CAACL,IAAI,UAAUC,GAAG,WAAW,MAAO,CAAEf,EAAyB,sBAAEI,EAAG,MAAM,CAACI,YAAY,aAAa,CAACJ,EAAG,QAAQ,CAACE,MAAM,CAAC,MAAQ,SAAS,QAAU,WAAW,CAACN,EAAIS,GAAG,2EAA2EL,EAAG,MAAM,CAACA,EAAG,MAAM,CAACA,EAAG,QAAQ,CAACI,YAAY,YAAYF,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,OAAOF,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,IAAI,MAAQ,WAAW,CAACN,EAAIS,GAAG,0BAA0BL,EAAG,QAAQ,CAACE,MAAM,CAAC,UAAU,GAAG,KAAO,IAAIW,GAAG,CAAC,MAAQjB,EAAIoB,mBAAmB,CAAChB,EAAG,SAAS,CAACJ,EAAIS,GAAG,sBAAsB,IAAI,GAAGL,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,IAAI,MAAQ,WAAW,CAACN,EAAIS,GAAG,0BAA0BL,EAAG,QAAQ,CAACE,MAAM,CAAC,UAAU,GAAG,KAAO,IAAIW,GAAG,CAAC,MAAQjB,EAAIqB,uBAAuB,CAACjB,EAAG,SAAS,CAACJ,EAAIS,GAAG,sBAAsB,IAAI,IAAI,IAAI,GAAGL,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,OAAOF,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,OAAOF,EAAG,QAAQ,CAACI,YAAY,OAAOF,MAAM,CAAC,KAAO,MAAM,CAACF,EAAG,WAAW,CAACE,MAAM,CAAC,MAAQN,EAAIsB,sBAAsB,aAAa,KAAK,aAAa,UAAU,MAAQ,UAAU,SAAW,GAAG,MAAQ,GAAG,aAAa,CAAEC,SAAS,IAAQX,YAAYZ,EAAIa,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,SAASS,GAAM,MAAO,CAACpB,EAAG,OAAO,CAACI,YAAY,gBAAgBiB,YAAY,CAAC,MAAQ,SAAS,CAACzB,EAAIS,GAAG,IAAIT,EAAI0B,GAAG1B,EAAI2B,oBAAoBH,EAAKI,OAAO,KAAKxB,EAAG,YAAY,CAACE,MAAM,CAAC,OAAS,IAAIM,YAAYZ,EAAIa,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,SAASc,GAC7sE,IAAIZ,EAAKY,EAAIZ,GACTX,EAAQuB,EAAIvB,MAChB,MAAO,CAACF,EAAG,QAAQJ,EAAI8B,GAAG9B,EAAI+B,GAAG,CAACN,YAAY,CAAC,MAAQ,SAASnB,MAAM,CAAC,UAAU,GAAG,KAAO,IAAIW,GAAG,CAAC,MAAQ,SAASe,GAAQ,OAAOhC,EAAIiC,gBAAgBT,EAAKI,SAAS,QAAQtB,GAAM,GAAOW,GAAI,CAACb,EAAG,SAAS,CAACJ,EAAIS,GAAG,gBAAgB,OAAO,MAAK,IAAO,CAACL,EAAG,OAAO,CAACJ,EAAIS,GAAG,oBAAoB,MAAM,CAACK,IAAI,YAAYC,GAAG,SAASS,GAAM,MAAO,CAACpB,EAAG,OAAO,CAACI,YAAY,gBAAgBiB,YAAY,CAAC,MAAQ,SAAS,CAACzB,EAAIS,GAAG,IAAIT,EAAI0B,GAAG1B,EAAI2B,oBAAoBH,EAAKI,OAAO,KAAKxB,EAAG,OAAO,CAACqB,YAAY,CAAC,YAAY,SAAS,CAACzB,EAAIS,GAAG,MAAMT,EAAI0B,GAAG1B,EAAIsB,sBAAwBtB,EAAIsB,sBAAsBY,OAAS,EAAI,GAAG,mBAAmB,MAAK,EAAM,WAAWC,MAAM,CAACC,MAAOpC,EAAuB,oBAAEqC,SAAS,SAAUC,GAAMtC,EAAIuC,oBAAoBD,GAAKE,WAAW,0BAA0B,IAAI,GAAGpC,EAAG,MAAM,CAACqC,MAAQ,eAAiBzC,EAAI0C,cAAc,KAAO,6CAA+C1C,EAAI2C,GAAI3C,EAAoB,kBAAE,SAAS4C,EAAKC,GAAG,OAAOzC,EAAG,QAAQ,CAACU,IAAI+B,EAAEvC,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACI,YAAY,gBAAgBiB,YAAY,CAAC,aAAa,WAAW,CAACzB,EAAIS,GAAG,IAAIT,EAAI0B,GAAGkB,EAAKE,MAAM,OAAO1C,EAAG,QAAQ,CAACI,YAAY,gBAAgBiB,YAAY,CAAC,QAAU,OAAO,cAAc,SAAS,mBAAmB,YAAY,CAACrB,EAAG,MAAM,CAACI,YAAY,YAAYiB,YAAY,CAAC,MAAQ,SAAS,CAACzB,EAAIS,GAAG,IAAIT,EAAI0B,GAAG1B,EAAI+C,kBAAkBH,IAAO,SAASxC,EAAG,QAAQ,CAACI,YAAY,iBAAiB,CAACJ,EAAG,MAAM,CAACI,YAAY,YAAYiB,YAAY,CAAC,MAAQ,SAAS,CAACrB,EAAG,aAAa,CAACE,MAAM,CAAC,SAAWN,EAAIgD,cAAcJ,GAAM,MAAQ5C,EAAIiD,cAAcL,GAAM,MAAQ,WAAW3B,GAAG,CAAC,OAAS,SAASe,GAAQ,OAAOhC,EAAIkD,gBAAgBlB,EAAQY,KAAQhC,YAAYZ,EAAIa,GAAG,CAAC,CAACC,IAAI,QAAQC,GAAG,WAAW,MAAO,CAACf,EAAIS,GAAG,IAAIT,EAAI0B,GAAG1B,EAAImD,uBAAuBP,IAAO,OAAOzB,OAAM,IAAO,MAAK,MAAS,MAAM,MAAK,IAAI,GAAGf,EAAG,QAAQ,CAACI,YAAY,OAAOF,MAAM,CAAC,MAAQ,SAAS,QAAU,WAAW,CAACF,EAAG,MAAM,CAACA,EAAG,QAAQ,CAACI,YAAY,cAAcF,MAAM,CAAC,QAAUN,EAAIU,QAAQ,QAAU,GAAG,MAAQ,WAAWO,GAAG,CAAC,MAAQjB,EAAIoD,eAAe,CAAChD,EAAG,SAAS,CAACI,YAAY,QAAQ,CAACR,EAAIS,GAAG,wBAAwBT,EAAIS,GAAG,kCAAkC,IAAI,MAAM,GAAIT,EAAW,QAAEI,EAAG,MAAM,CAACI,YAAY,OAAOiB,YAAY,CAAC,QAAU,OAAO,kBAAkB,SAAS,cAAc,SAAS,OAAS,SAAS,CAACrB,EAAG,sBAAsB,CAACE,MAAM,CAAC,cAAgB,GAAG,MAAQ,cAAc,GAAGF,EAAG,MAAM,CAACI,YAAY,iCAAiCiB,YAAY,CAAC,QAAU,OAAO,kBAAkB,SAAS,cAAc,SAAS,OAAS,SAAS,CAACzB,EAAIS,GAAG,0FAA0FU,OAAM,MAAS,CAACf,EAAG,SAAS,CAACyB,IAAI,iBAAiBvB,MAAM,CAAC,GAAK,6BAA6B,MAAQ,UAAU,MAAQN,EAAIqD,WAAW,YAAcrD,EAAIsD,wBAAwB,KAAOtD,EAAIuD,qBAAqB,IAChvFC,EAAkB,G,kKCmIPC,SAAIC,OAAO,CACtBlC,KADsB,WAElB,MAAO,CAEHkB,cAAeiB,OAAOC,YACtBN,wBAAyB,CACrBO,QAAS,8BACTC,IAAK,eAET9C,OAAQ,CACJ+C,SAAU,CACNC,QAAS,QACTlD,IAAK,QACLsB,MAAO,SAEX6B,QAAS,CACL,CACID,QAAS,QACTlD,IAAK,QACLsB,MAAO,SAEX,CACI4B,QAAS,oBACTlD,IAAK,QACLsB,MAAO,QAEX,CACI4B,QAAS,QACTlD,IAAK,QACLsB,MAAO,WAInB1B,SAAS,EACTwD,UAAW,GACXC,eAAgB,GAChB5B,oBAAqB,KACrBhC,QAAS,CACL6D,MAAO,iBACPC,KAAM,CACF,CACID,MAAO,OACPE,KAAM,mBACNC,KAAM,YACNC,WAAY,OAMhCC,QAlDsB,WAkDf,WAEExE,KAAKyE,kBAAkBzE,KAAK0E,OAAOC,SAAS,uBAGjD3E,KAAK0E,OAAOE,OAAO,6BAA8B,SAGjD5E,KAAK0E,OAAOC,SAAS,oBAAqB,CAAEE,MAAO,UAGnD7E,KAAK8E,WAAU,WAEX,EAAKC,yBAGLrB,OAAOsB,iBAAiB,SAAU,EAAKD,4BAG/CE,cArEsB,WAuElBjF,KAAK0E,OAAOE,OAAO,uBAAwB,IAC3C5E,KAAK0E,OAAOE,OAAO,2BAA4B,MAG/ClB,OAAOwB,oBAAoB,SAAUlF,KAAK+E,yBAE9CI,SAAU,iCACHC,eAAW,CACVhC,WAAY,oBACZiC,iBAAkB,0BAClBC,wBAAyB,0BACzBjE,sBAAuB,wBACvBoD,iBAAkB,mBAClBc,SAAU,4BACVC,mBAAoB,qBACpB9E,WAAY,iCATZ,IAYJ+E,SAZM,WAaF,OAAOzF,KAAK0E,OAAOgB,QAAQD,YAAczF,KAAK0E,OAAOgB,QAAQC,OAEjEC,kBAfM,WAeW,WAEb,OAAK5F,KAAKsC,qBAAwBtC,KAAKqB,sBAGhCrB,KAAKqB,sBAAsBwE,MAC9B,SAACC,GAAD,OAAUA,EAAKC,KAAO,EAAKzD,uBAJsC,QAQ7E0D,QAAS,CAELjB,uBAFK,WAID,IAAIkB,EAAOC,SAASD,KAAKE,aAGrBC,EAAW,GAGXC,EAAU,GAGVC,EAAS,GAGTC,EAASN,GAAQG,EAAWC,EAAUC,GAK1C,OAFAtG,KAAKyC,cAAgB8D,EAEdA,GAEXnF,qBAvBK,WAwBDpB,KAAK0E,OAAOC,SAAS,aAAc,CAC/B6B,KAAM,UACNnC,KAAM,qBACNoC,MAAO,UACPtC,MAAO,uBACPuC,KAAM,+KAGdC,gBAhCK,SAgCWb,GAA4B,WAElC/E,EAASf,KAAKsF,wBAGdsB,EAAO,CACTC,MAAO,kBAAM,EAAKC,qBAAqBhB,IACvCjD,KAAM,kBAAM,EAAKkE,sBAAsBjB,IACvCkB,MAAO,kBAAM,EAAKC,qBAAqBnB,KAIrCoB,EAAMN,EAAK7F,MAAa,KAG9B,OAAOmG,GAEXD,qBAjDK,SAiDgBnB,GACjB,OAAOA,EAAKqB,SAEhBJ,sBApDK,SAoDiBjB,GAClB,gBAAUA,EAAKsB,WAAf,YAA6BtB,EAAKuB,cAEtCP,qBAvDK,SAuDgBhB,GACjB,OAAO9F,KAAKsH,SAASC,QAAQV,MAAMf,EAAK0B,SAE5CC,gBA1DK,SA0DW3B,GAEZ,iBAAWA,EAAK4B,MAAMC,WAAtB,iBAEJjG,oBA9DK,SA8DekG,GAEhB,OAAIA,EAAOR,YAAcQ,EAAOP,YAC5B,UAAUO,EAAOR,WAAjB,YAA+BQ,EAAOP,aAItCO,EAAOC,UACP,UAAUD,EAAOC,WAIjBD,EAAOE,cACP,UAAUF,EAAOE,cAAcN,QAI/BI,EAAOG,cACP,UAAUH,EAAOG,cAAcZ,SAI5B,MAEX7D,eAtFK,WAsFS,WACV,MAAO,CACH0E,MAAO,SAAClC,GAAD,OAAkC,EAAKa,gBAAgBb,IAC9DmC,MAAO,SAACnC,GAAD,OAAkC,EAAK2B,gBAAgB3B,IAC9D1D,SAAU,SAAC0D,GAAD,OAAkC,EAAKoC,eAAepC,MAGxE/C,cA7FK,SA6FSoF,GAEV,OAAKnI,KAAKkD,uBAAuBiF,KAIX,iBAAlBA,EAAStF,MACwB,UAAjC7C,KAAKsF,2BAOc,eAAlB6C,EAAStF,MAA2C,cAAlBsF,EAAStF,OACX,SAAjC7C,KAAKsF,yBAMa,UAAlB6C,EAAStF,MAAqD,UAAjC7C,KAAKsF,2BAO1CtC,cAzHK,SAyHSmF,GAEV,QAAKnI,KAAKkE,gBAGHlE,KAAKkE,eAAeiE,EAAStD,SAAW7E,KAAKsC,qBAExDrB,cAhIK,SAgISF,GAEV,IAAMqH,EAAS,CACXvD,MAAO9D,EAAO,SACdsH,KAAM,GAIVrI,KAAKiE,UAAY,GAGjBjE,KAAKkE,eAAiB,GAGtBlE,KAAKsC,oBAAsB,KAG3BtC,KAAK0E,OAAOE,OAAO,6BAA8BwD,GAGjDpI,KAAK0E,OAAOE,OAAO,6BAA8B7D,EAAO,UAGxDf,KAAK0E,OAAOE,OAAO,2BAA4B,MAG/C5E,KAAK0E,OAAOE,OAAO,uBAAwB,IAG3C5E,KAAK0E,OAAOC,SAAS,oBAAqByD,IAE9CjH,iBA/JK,WAgKDnB,KAAK0E,OAAOC,SAAS,aAAc,CAC/B6B,KAAM,UACNnC,KAAM,qBACNoC,MAAO,UACPtC,MAAO,uBACPuC,KAAM,mJAGd1E,gBAxKK,SAwKWsG,GAIZ,cAA2BC,OAAOC,QAAQxI,KAAKkE,gBAA/C,eAAgE,CAA3D,6BAAOrD,EAAP,KAAYsB,EAAZ,KACGA,IAAUmG,EAAUvC,KACpB/F,KAAKyI,KAAKzI,KAAKiE,UAAWpD,EAAK,MAC/Bb,KAAKyI,KAAKzI,KAAKkE,eAAgBrD,EAAK,OAK5C,IAAM6H,EAAY1I,KAAKqB,sBAAsBN,QACzC,SAAC6G,GAAD,OAAYA,EAAO7B,KAAOuC,EAAUvC,MAIxC/F,KAAK0E,OAAOE,OAAO,2BAA4B8D,IAE7CC,MA3LD,SA2LOC,GAAsB,uKAEzBA,EAFyB,wDAK9B,EAAK3E,UAAU,uBACX,EAAKA,UAAU,iCAGbmE,EAAS,CACXR,OAAQ,EAAK3D,UACbb,WAAY,EAAK/B,uBAIrB,EAAKZ,SAAU,EAfe,SAkBP,EAAKiE,OAAOC,SAAS,eAAgByD,GAlB9B,UAkBxBS,EAlBwB,OAqB9B,EAAKpI,SAAU,EAGVoI,EAxByB,0DA2BxBzF,EAAa,EAAK0F,mBAAqB,GAGvCC,EAAQ3F,EAAW4F,WACrB,SAAClD,GAAD,OAAUA,EAAKC,IAAM,EAAKkD,MAAMC,aAAaC,cAAcpD,MAI/D3C,EAAWgG,OAAOL,EAAO,GAGzB,EAAKrE,OAAOE,OAAO,uBAAwBxB,GAG3C,EAAKsB,OAAOE,OAAO,2BAA4B,MAzCjB,UA4CxB,EAAKF,OAAOC,SAAS,aAAc,CACrC6B,KAAM,UACNrC,MAAO,kBACPsC,MAAO,UACPpC,KAAM,qBACNqC,KAAM,kEACN2C,WAAY,gBAAF,OAAkBR,EAASS,QACrCC,eAAgB,wBAnDU,+CAsDlCpG,aAjPK,WAiPO,WACRnD,KAAK0E,OAAOC,SAAS,aAAc,CAC/B6B,KAAM,UACNrC,MAAO,gBACPE,KAAM,qBACNoC,MAAO,UACPC,KAAM,mIACNtE,SAAU,SAACwG,GACP,EAAKD,MAAMC,OAKvB9F,kBA9PK,SA8PaqF,GAEd,OAAOnI,KAAKiE,UAAYjE,KAAKiE,UAAUkE,EAAStD,OAAS,MAE7D5B,gBAlQK,SAkQWuG,EAAerB,GAEvBqB,GAEAxJ,KAAKyI,KACDzI,KAAKiE,UACLkE,EAAStD,MACT7E,KAAKkD,uBAAuBiF,IAIhCnI,KAAKyI,KAAKzI,KAAKkE,eAAgBiE,EAAStD,MAAO7E,KAAKsC,uBAMpDtC,KAAKyI,KAAKzI,KAAKiE,UAAWkE,EAAStD,MAAO,MAG1C7E,KAAKyI,KAAKzI,KAAKkE,eAAgBiE,EAAStD,MAAO,QAKvD4E,oBA3RK,WA6RD,IAAMrB,EAASpI,KAAKoI,OAGdsB,EAAWtB,EAAOC,KAAO,EAGzBsB,EAAiBD,GAAY1J,KAAKuF,SAGlCqE,EAAiC,OAAvB5J,KAAK6J,cAGhBF,GAAmBC,IAGxBxB,EAAOC,KAAOqB,EAGd1J,KAAK0E,OAAOE,OAAO,6BAA8BwD,GAGjDpI,KAAK0E,OAAOC,SAAS,oBAAqByD,KAE9ClF,uBApTK,SAoTkBiF,GAEnB,OAAOzE,OAAOoG,EAAEC,IAAI/J,KAAK4F,kBAAmBuC,EAAStD,QAEzDqD,eAxTK,SAwTUpC,GAEX9F,KAAKiE,UAAY,GAGjBjE,KAAKkE,eAAiB,GAGtBlE,KAAKsC,oBAAsB,KAG3B,IAAI8F,EAAS,CACTvD,MAAO7E,KAAKsF,yBAIqB,UAAjCtF,KAAKsF,wBACL8C,EAAO,UAAYtC,EAAK,UAIc,SAAjC9F,KAAKsF,yBACV8C,EAAO,cAAgBtC,EAAK,cAC5BsC,EAAO,eAAiBtC,EAAK,gBAIS,UAAjC9F,KAAKsF,0BACV8C,EAAO,WAAatC,EAAK,YAI7B9F,KAAK0E,OAAOC,SAAS,wBAAyByD,KAGtD4B,MAAO,CACH3I,sBADG,SACmBc,GAElB,GAAKA,KAASA,EAAMF,OAAS,GAA7B,CAMA,GAHAjC,KAAKsC,oBAAsBH,EAAM,GAAG4D,GAGC,UAAjC/F,KAAKsF,wBAUT,MAAqC,SAAjCtF,KAAKsF,yBACLtF,KAAKyI,KAAKzI,KAAKiE,UAAW,aAAc9B,EAAM,GAAGiF,iBACjDpH,KAAKyI,KAAKzI,KAAKiE,UAAW,cAAe9B,EAAM,GAAGkF,mBAKjB,UAAjCrH,KAAKsF,yBACLtF,KAAKyI,KACDzI,KAAKiE,UACL,wBACA9B,EAAM,GAAG4F,cAAcZ,UApB3BnH,KAAKyI,KACDzI,KAAKiE,UACL,sBACA9B,EAAM,GAAG8H,aAAazC,UAsBlChC,mBAnCG,SAmCgB0E,IAEVlK,KAAKU,YAAcwJ,EAASC,QAAQnK,KAAKyJ,0BC7mB6U,I,iICOnYW,EAAY,eACd,EACAtK,EACAyD,GACA,EACA,KACA,KACA,MAIa,aAAA6G,EAAiB,QAYhC,IAAkBA,EAAW,CAACC,OAAA,KAAKC,YAAA,KAAUC,OAAA,KAAKC,QAAA,KAAMC,oBAAA,KAAkBC,OAAA,KAAKC,UAAA,KAAQC,WAAA","file":"js/persons-merge.504603fa.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isMobile)?_c('page-template',{attrs:{\"toolbar\":_vm.toolbar}},[_c('v-row',{staticClass:\"pa-2\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',[_vm._v(\" Contact merging is unavailable on mobile devices. Please login to MessageDesk from a desktop computer to merge and delete duplicate contacts. \")])],1)],1):_c('page-template',{attrs:{\"loader\":_vm.loading || _vm.paginating,\"toolbar\":_vm.toolbar},scopedSlots:_vm._u([{key:\"left-top\",fn:function(){return [_c('v-row',{staticClass:\"pa-2\",attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c('span',{staticClass:\"pr-2\"},[_vm._v(\"Find duplicates by:\")]),_c('i-list-filter-select',{attrs:{\"filter\":_vm.filter,\"compact\":\"\",\"width\":\"160px\"},on:{\"filterChanged\":_vm.filterChanged}})],1)]},proxy:true},{key:\"content\",fn:function(){return [(_vm.personsDuplicatesFind)?_c('div',{staticClass:\"px-6 pt-4\"},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_vm._v(\" Select all contacts and data fields to merge into a single contact. \")]),_c('div',[_c('div',[_c('v-row',{staticClass:\"py-4 pr-2\",attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"4\"}}),_c('v-col',{attrs:{\"cols\":\"4\",\"align\":\"center\"}},[_vm._v(\" Final Merged Contact \"),_c('v-btn',{attrs:{\"x-small\":\"\",\"icon\":\"\"},on:{\"click\":_vm.finalContactHelp}},[_c('v-icon',[_vm._v(\"mdi-help-circle\")])],1)],1),_c('v-col',{attrs:{\"cols\":\"4\",\"align\":\"center\"}},[_vm._v(\" Duplicate Contact(s) \"),_c('v-btn',{attrs:{\"x-small\":\"\",\"icon\":\"\"},on:{\"click\":_vm.duplicateContactHelp}},[_c('v-icon',[_vm._v(\"mdi-help-circle\")])],1)],1)],1)],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"4\"}}),_c('v-col',{attrs:{\"cols\":\"4\"}}),_c('v-col',{staticClass:\"px-3\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"items\":_vm.personsDuplicatesFind,\"item-value\":\"id\",\"item-color\":\"primary\",\"color\":\"primary\",\"outlined\":\"\",\"dense\":\"\",\"menu-props\":{ offsetY: true }},scopedSlots:_vm._u([{key:\"item\",fn:function(data){return [_c('span',{staticClass:\"text-truncate\",staticStyle:{\"width\":\"100%\"}},[_vm._v(\" \"+_vm._s(_vm.duplicateSelectText(data.item))+\" \"),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticStyle:{\"float\":\"right\"},attrs:{\"x-small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.ignoreDuplicate(data.item)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-close\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Ignore Once\")])])],1)]}},{key:\"selection\",fn:function(data){return [_c('span',{staticClass:\"text-truncate\",staticStyle:{\"width\":\"100%\"}},[_vm._v(\" \"+_vm._s(_vm.duplicateSelectText(data.item))+\" \"),_c('span',{staticStyle:{\"font-size\":\"12px\"}},[_vm._v(\" (+\"+_vm._s(_vm.personsDuplicatesFind ? _vm.personsDuplicatesFind.length - 1 : 0)+\" more) \")])])]}}],null,false,873067977),model:{value:(_vm.selectedDuplicateId),callback:function ($$v) {_vm.selectedDuplicateId=$$v},expression:\"selectedDuplicateId\"}})],1)],1),_c('div',{style:((\"max-height:\" + (_vm.contentHeight-275) + \"px; overflow-y:scroll; overflow-x:hidden;\"))},_vm._l((_vm.personProperties),function(prop,i){return _c('v-row',{key:i,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"text-truncate\",staticStyle:{\"align-self\":\"center\"}},[_vm._v(\" \"+_vm._s(prop.name)+\" \")]),_c('v-col',{staticClass:\"text-truncate\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"background-color\":\"#F5F5F5\"}},[_c('div',{staticClass:\"pl-8 pr-2\",staticStyle:{\"width\":\"100%\"}},[_vm._v(\" \"+_vm._s(_vm.newPersonProperty(prop))+\" \")])]),_c('v-col',{staticClass:\"text-truncate\"},[_c('div',{staticClass:\"pl-8 pr-2\",staticStyle:{\"width\":\"100%\"}},[_c('v-checkbox',{attrs:{\"disabled\":_vm.fieldDisabled(prop),\"value\":_vm.fieldSelected(prop),\"color\":\"primary\"},on:{\"change\":function($event){return _vm.newPersonUpdate($event, prop)}},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.selectedDuplicateField(prop))+\" \")]},proxy:true}],null,true)})],1)])],1)}),1)],1),_c('v-row',{staticClass:\"pt-8\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('div',[_c('v-btn',{staticClass:\"white--text\",attrs:{\"loading\":_vm.loading,\"rounded\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.mergeConfirm}},[_c('v-icon',{staticClass:\"pr-2\"},[_vm._v(\"mdi-account-switch\")]),_vm._v(\" Merge and Delete Duplicates \")],1)],1)])],1):(_vm.loading)?_c('div',{staticClass:\"pa-4\",staticStyle:{\"display\":\"flex\",\"justify-content\":\"center\",\"align-items\":\"center\",\"height\":\"100%\"}},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\"}})],1):_c('div',{staticClass:\"grey--text text--darken-2 pa-4\",staticStyle:{\"display\":\"flex\",\"justify-content\":\"center\",\"align-items\":\"center\",\"height\":\"100%\"}},[_vm._v(\" Select a field from the left to merge and delete duplicates with that same field \")])]},proxy:true}])},[_c('i-list',{ref:\"duplicatesList\",attrs:{\"id\":\"personsMergeDuplicatesList\",\"color\":\"primary\",\"items\":_vm.duplicates,\"placeholder\":_vm.personsMergePlaceholder,\"tile\":_vm.duplicatesTile()}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport PersonProperty from '@/types/PersonProperty.interface'\nimport ScrollPosition from '@/types/components/ScrollPosition.interface'\nimport { mapGetters } from 'vuex'\nimport IListTile from '@/types/components/IListTile.interface'\nimport Person, { Email, Phone } from '@/types/Person.interface'\nexport default Vue.extend({\n data() {\n return {\n // The height of the primary content\n contentHeight: window.innerHeight,\n personsMergePlaceholder: {\n content: 'No Duplicate Contacts Found',\n img: 'noCustomers'\n },\n filter: {\n selected: {\n display: 'Phone',\n key: 'field',\n value: 'phone'\n },\n options: [\n {\n display: 'Phone',\n key: 'field',\n value: 'phone'\n },\n {\n display: 'First & Last Name',\n key: 'field',\n value: 'name'\n },\n {\n display: 'Email',\n key: 'field',\n value: 'email'\n }\n ]\n },\n loading: false,\n newPerson: {},\n selectedFields: {},\n selectedDuplicateId: null,\n toolbar: {\n title: 'Merge Contacts',\n left: [\n {\n title: 'Back',\n icon: 'mdi-chevron-left',\n back: '/settings',\n permission: 1\n }\n ]\n }\n }\n },\n mounted() {\n // Load person properties if not loaded\n if (!this.personProperties) this.$store.dispatch('personPropertiesGet')\n\n // Reset filter\n this.$store.commit('personsDuplicatesFilterSet', 'phone')\n\n // Refresh IList\n this.$store.dispatch('personsDuplicates', { field: 'phone' })\n\n // Calculate the height only on next tick\n this.$nextTick(() => {\n // Calculate the current content height for initial state\n this.calculateContentHeight()\n\n // Add this event listener so we recalculate the height whenever window is resized\n window.addEventListener('resize', this.calculateContentHeight)\n })\n },\n beforeDestroy() {\n // Unset everything when leaving\n this.$store.commit('personsDuplicatesSet', [])\n this.$store.commit('personsDuplicatesFindSet', null)\n\n // Remove our resize event listener\n window.removeEventListener('resize', this.calculateContentHeight)\n },\n computed: {\n ...mapGetters({\n duplicates: 'personsDuplicates',\n duplicatesParams: 'personsDuplicatesParams',\n personsDuplicatesFilter: 'personsDuplicatesFilter',\n personsDuplicatesFind: 'personsDuplicatesFind',\n personProperties: 'personProperties',\n lastPage: 'personsDuplicatesLastPage',\n scrollPositionLeft: 'scrollPositionLeft',\n paginating: 'personsDuplicatesPaginating'\n }),\n // Determines if user is using our app or is on a mobile device accessing us through a browser\n isMobile(): boolean {\n return this.$store.getters.isMobile() || this.$store.getters.isApp\n },\n selectedDuplicate(): Person | Email | Phone {\n // If duplicates not loaded, return null\n if (!this.selectedDuplicateId || !this.personsDuplicatesFind) return null\n\n // Return the duplicate person that matches the selected person in the v-select\n return this.personsDuplicatesFind.find(\n (dupe) => dupe.id === this.selectedDuplicateId\n )\n }\n },\n methods: {\n // The height of the primary content\n calculateContentHeight(): number {\n // Get the height of the view\n let body = document.body.clientHeight\n\n // Define the toolbars offset\n let toolbars = 70\n\n // define the padding offset (accounts for padding on smAndUp)\n let padding = 25\n\n // Define the app bottom navbar offset\n let navbar = 15\n\n // Subtract the height of our app bar, toolbars, navbar, and padding\n let height = body - (toolbars + padding + navbar)\n\n // Return height in pixels\n this.contentHeight = height\n\n return height\n },\n duplicateContactHelp(): void {\n this.$store.dispatch('dialogOpen', {\n type: 'MESSAGE',\n icon: 'mdi-account-switch',\n color: 'primary',\n title: 'Duplicate Contact(s)',\n text: \"Duplicate Contact(s) contain information that exactly matches other existing contacts. Select contact information fields you'd like to merge into a Final Merged Contact.\"\n })\n },\n duplicatesLine1(dupe: Person | Email | Phone): string {\n // Grab our current duplicates filter\n const filter = this.personsDuplicatesFilter\n\n // Return a different type based on the filter\n const line = {\n phone: () => this.duplicatesLine1Phone(dupe),\n name: () => this.duplicatesLine1Person(dupe),\n email: () => this.duplicatesLine1Email(dupe)\n }\n\n // Get our value from line\n const val = line[filter]() || null\n\n // Return our value\n return val\n },\n duplicatesLine1Email(dupe: Email): string {\n return dupe.address\n },\n duplicatesLine1Person(dupe: Person): string {\n return `${dupe.name_given} ${dupe.name_family}`\n },\n duplicatesLine1Phone(dupe: Phone): string {\n return this.$options.filters.phone(dupe.msisdn)\n },\n duplicatesLine2(dupe: Person | Email | Phone): string {\n // Return count of duplicates\n return `(${dupe.count.toString()} duplicates)`\n },\n duplicateSelectText(person: Person): string {\n // If person has first and last name, return first/last\n if (person.name_given && person.name_family) {\n return `${person.name_given} ${person.name_family}`\n }\n\n // Next try full name\n if (person.name_full) {\n return `${person.name_full}`\n }\n\n // Then try phone number\n if (person.phone_default) {\n return `${person.phone_default.msisdn}`\n }\n\n // Then try email\n if (person.email_default) {\n return `${person.email_default.address}`\n }\n\n // Otherwise just return nothing\n return null\n },\n duplicatesTile(): IListTile {\n return {\n line1: (dupe: Person | Email | Phone) => this.duplicatesLine1(dupe),\n line2: (dupe: Person | Email | Phone) => this.duplicatesLine2(dupe),\n callback: (dupe: Person | Email | Phone) => this.showDuplicates(dupe)\n }\n },\n fieldDisabled(property: PersonProperty): boolean {\n // If the person doesn't have a value for this property, disable the checkbox\n if (!this.selectedDuplicateField(property)) return true\n\n // If the property is phone and the filter is phone, we can disable\n if (\n property.name === 'Phone Number' &&\n this.personsDuplicatesFilter === 'phone'\n ) {\n return true\n }\n\n // If the property is first/last name and the filter is first/last name, we can disable\n if (\n (property.name === 'First Name' || property.name === 'Last Name') &&\n this.personsDuplicatesFilter === 'name'\n ) {\n return true\n }\n\n // If the property is email and the filter is email, we can disable\n if (property.name === 'Email' && this.personsDuplicatesFilter === 'email') {\n return true\n }\n\n // Return false\n return false\n },\n fieldSelected(property: PersonProperty): boolean {\n // If nothing selected yet, return false\n if (!this.selectedFields) return false\n\n // If the id on the field is the same as the id on the selected duplicate, return true\n return this.selectedFields[property.field] === this.selectedDuplicateId\n },\n filterChanged(filter) {\n // Construct params for pagination\n const params = {\n field: filter['value'],\n page: 1\n }\n\n // Reset the merged person\n this.newPerson = {}\n\n // Reset the selected fields\n this.selectedFields = {}\n\n // Reset the selected duplicate\n this.selectedDuplicateId = null\n\n // Update new params\n this.$store.commit('personsDuplicatesParamsSet', params)\n\n // Set the filter in the store\n this.$store.commit('personsDuplicatesFilterSet', filter['value'])\n\n // Reset the duplicates list\n this.$store.commit('personsDuplicatesFindSet', null)\n\n // Reset list of duplicate fields\n this.$store.commit('personsDuplicatesSet', [])\n\n // Paginate\n this.$store.dispatch('personsDuplicates', params)\n },\n finalContactHelp(): void {\n this.$store.dispatch('dialogOpen', {\n type: 'MESSAGE',\n icon: 'mdi-account-switch',\n color: 'primary',\n title: 'Final Merged Contact',\n text: \"This is the final merged result of your Duplicate Contact(s) information. Once merged, your Final Merged Contact information can't be undone.\"\n })\n },\n ignoreDuplicate(duplicate: Person): void {\n // Look through all selected fields, set any of them to null if\n // they are set to the person we are ignoring form the duplicates list.\n // Also set any of these fields to null on the merged person\n for (const [key, value] of Object.entries(this.selectedFields)) {\n if (value === duplicate.id) {\n this.$set(this.newPerson, key, null)\n this.$set(this.selectedFields, key, null)\n }\n }\n\n // Filter though our duplicates list and remove the person we are ignoring\n const new_array = this.personsDuplicatesFind.filter(\n (person) => person.id !== duplicate.id\n )\n\n // Upate the duplicates list\n this.$store.commit('personsDuplicatesFindSet', new_array)\n },\n async merge(dialog_result: boolean): Promise {\n // If user selects 'no' on confirm, do nothing\n if (!dialog_result) return\n\n // Set our person to have same msisdn as free form\n this.newPerson['phone_mobile.msisdn'] =\n this.newPerson['phone_mobile.free_form_number']\n\n // Construct payload params\n const params = {\n person: this.newPerson,\n duplicates: this.personsDuplicatesFind\n }\n\n // Start the loading spinner\n this.loading = true\n\n // Dispatch the request\n const response = await this.$store.dispatch('personsMerge', params)\n\n // Stop the loading spinner\n this.loading = false\n\n // If there was an error, return\n if (!response) return\n\n // Get a copy of the IList items or create an empty array if none exists\n const duplicates = this.personsDuplicates || []\n\n // Find the index of the item to remove\n const index = duplicates.findIndex(\n (dupe) => dupe.id == this.$refs.personsMerge.selectedModel.id\n )\n\n // Remove the item\n duplicates.splice(index, 1)\n\n // Commit the updated items list\n this.$store.commit('personsDuplicatesSet', duplicates)\n\n // Reset the duplicates persons list\n this.$store.commit('personsDuplicatesFindSet', null)\n\n // Open success dialog\n await this.$store.dispatch('dialogOpen', {\n type: 'MESSAGE',\n title: 'Merge Complete!',\n color: 'primary',\n icon: 'mdi-account-switch',\n text: 'Your contacts have been merged and any duplicates were deleted.',\n buttonLink: `/contacts?id=${response.new_id}`,\n buttonLinkText: 'View Merged Contact'\n })\n },\n mergeConfirm(): void {\n this.$store.dispatch('dialogOpen', {\n type: 'CONFIRM',\n title: 'Confirm Merge',\n icon: 'mdi-account-switch',\n color: 'primary',\n text: 'A new contact will be created with the fields you selected and all duplicates will be deleted. Are you sure you want to proceed?',\n callback: (dialog_result) => {\n this.merge(dialog_result)\n }\n })\n },\n // ANY is a bad return type but this can literally be any property on the person\n newPersonProperty(property: PersonProperty): any {\n // Return the property on the new person\n return this.newPerson ? this.newPerson[property.field] : null\n },\n newPersonUpdate(bool: boolean, property: PersonProperty): void {\n // If the checkox is being checked\n if (bool) {\n // Set the field on the merged person to the field on the currently selected duplicate\n this.$set(\n this.newPerson,\n property.field,\n this.selectedDuplicateField(property)\n )\n\n // Mark the field as selected by the selected duplicate's id\n this.$set(this.selectedFields, property.field, this.selectedDuplicateId)\n }\n\n // If the checkbox is not bieng checked\n else {\n // Set this field on the merged person to null\n this.$set(this.newPerson, property.field, null)\n\n // Remove the selected status from this field\n this.$set(this.selectedFields, property.field, null)\n }\n },\n\n // Paginate the next page of the current filtered list\n paginateCurrentList(): void {\n // Get current pagination params\n const params = this.params\n\n // Determine the next page\n const nextPage = params.page + 1\n\n // Determine is the page exists, or we're already at the end of pagination\n const shouldPaginate = nextPage <= this.lastPage\n\n // Check if we have search text\n const hasText = this.searchBarText !== null\n\n // If we should NOT paginate, do nothing\n if (!shouldPaginate || !hasText) return\n\n // Else, update pagination params\n params.page = nextPage\n\n // Update new params\n this.$store.commit('personsDuplicatesParamsSet', params)\n\n // Paginate the next page\n this.$store.dispatch('personsDuplicates', params)\n },\n selectedDuplicateField(property: PersonProperty): any {\n // Get the passed field from the selected duplicate\n return window._.get(this.selectedDuplicate, property.field)\n },\n showDuplicates(dupe: Person | Email | Phone): void {\n // Reset the merged person\n this.newPerson = {}\n\n // Reset the selected fields\n this.selectedFields = {}\n\n // Reset the selected duplicate\n this.selectedDuplicateId = null\n\n // Create request params\n let params = {\n field: this.personsDuplicatesFilter\n }\n\n // If filter is phone, set msisdn on request\n if (this.personsDuplicatesFilter === 'phone') {\n params['msisdn'] = dupe['msisdn']\n }\n\n // If filter is name, set name_given and name_family on the request\n else if (this.personsDuplicatesFilter === 'name') {\n params['name_given'] = dupe['name_given']\n params['name_family'] = dupe['name_family']\n }\n\n // If the filter is email, set the address on the request\n else if (this.personsDuplicatesFilter === 'email') {\n params['address'] = dupe['address']\n }\n\n // Dispatch the request to find duplicates with the field\n this.$store.dispatch('personsDuplicatesFind', params)\n }\n },\n watch: {\n personsDuplicatesFind(value): void {\n // If no value, do nothing\n if (!value || value.length < 1) return\n\n // Make the first duplicate in the array the initial selected one\n this.selectedDuplicateId = value[0].id\n\n // If the filter is phone, set the phone_mobile.msisdn field on the new person\n if (this.personsDuplicatesFilter === 'phone') {\n this.$set(\n this.newPerson,\n 'phone_mobile.msisdn',\n value[0].phone_mobile.msisdn\n )\n return\n }\n\n // If the filter is name, set the first and last name on the new person\n if (this.personsDuplicatesFilter === 'name') {\n this.$set(this.newPerson, 'name_given', value[0].name_given)\n this.$set(this.newPerson, 'name_family', value[0].name_family)\n return\n }\n\n // If the filter is email, set the email_default.address on the new person\n if (this.personsDuplicatesFilter === 'email') {\n this.$set(\n this.newPerson,\n 'email_default.address',\n value[0].email_default.address\n )\n return\n }\n },\n scrollPositionLeft(position: ScrollPosition): void {\n // If we are NOT paginating AND scroll is at bottom, paginate next page\n if (!this.paginating && position.bottom) this.paginateCurrentList()\n }\n }\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/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PersonsMerge.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PersonsMerge.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PersonsMerge.vue?vue&type=template&id=2742412c&\"\nimport script from \"./PersonsMerge.vue?vue&type=script&lang=ts&\"\nexport * from \"./PersonsMerge.vue?vue&type=script&lang=ts&\"\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\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCheckbox,VCol,VIcon,VProgressCircular,VRow,VSelect,VTooltip})\n"],"sourceRoot":""}