{"version":3,"sources":["webpack:///../../../src/components/VGrid/VRow.ts","webpack:///../../../src/components/VIcon/VIcon.ts","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///../../../src/mixins/binds-attrs/index.ts","webpack:///./src/views/projects/ProjectsDrawer.vue","webpack:///./src/mixins/project/content/projectFilterMixin.js","webpack:///./src/mixins/project/drawer/projectDrawerMixin.js","webpack:///src/views/projects/ProjectsDrawer.vue","webpack:///./src/views/projects/ProjectsDrawer.vue?1ddf","webpack:///./src/views/projects/ProjectsDrawer.vue?1e89","webpack:///../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack:///../../../src/mixins/sizeable/index.ts","webpack:///../../src/util/mergeData.ts"],"names":["breakpoints","ALIGNMENT","makeProps","prefix","def","reduce","props","val","upperFirst","alignValidator","str","includes","alignProps","type","String","default","validator","justifyValidator","justifyProps","alignContentValidator","alignContentProps","propMap","align","Object","keys","justify","alignContent","classMap","breakpointClass","prop","className","breakpoint","replace","toLowerCase","cache","Map","Vue","extend","name","functional","tag","dense","Boolean","noGutters","render","h","data","children","cacheKey","classList","get","forEach","value","push","set","mergeData","staticClass","class","SIZE_MAP","isFontAwesome5","iconType","some","isSvgPath","icon","test","length","VIcon","mixins","BindsAttrs","Colorable","Sizeable","Themeable","disabled","left","right","size","Number","required","computed","medium","hasClickListener","this","listeners$","click","methods","getIcon","iconName","$slots","text","trim","remapInternalIcon","getSize","sizes","xSmall","small","large","xLarge","explicitSize","find","key","convertToUnit","getDefaultData","attrs","undefined","attrs$","on","getSvgWrapperData","fontSize","wrapperData","style","height","width","applyColors","themeClasses","setTextColor","color","renderFontIcon","newChildren","delimiterIndex","indexOf","isMaterialIcon","slice","renderSvgIcon","svgData","xmlns","viewBox","role","d","renderSvgIconComponent","component","nativeOn","$_wrapperFor","domProps","textContent","innerHTML","breakpointProps","offsetProps","orderProps","col","offset","order","cols","alignSelf","parent","hasColClasses","startsWith","makeWatcher","property","oldVal","attr","prototype","hasOwnProperty","call","$delete","$data","$set","created","$watch","immediate","onAlertVisibilityChanged","scopedSlots","_vm","isLoading","model","callback","_c","filterOptionChanged","indeterminateState","selectAllProjects","onItemSelected","visibleReportDialog","$event","fn","_v","_s","commandExport","proxy","staticRenderFns","projectFilterMixin","components","ReportDialog","ProjectFilterMenu","selectedProjects","reportHeaders","projectHeaders","selectedFilterOption","payload","projects","setIndeterminate","items","exportProjects","option","setLocalStorageItem","projectLocalStorageKeys","projectFilterOption","JSON","stringify","mapState","mapMutations","mapGetters","mapActions","createNamespacedHelpers","projectDrawerMixin","moduleItemsDrawerMixin","filteredItems","searchDrawerItemName","filter","el","projectName","_findProjectState","findProjectState","status","defaultSelectModuleItemId","itemCount","projectId","setProjects","setDrawerMini","SET_DRAWER_MINI","getStoredSelectedModuleItemId","existsModuleItem","id","_this$items$find","_this$items","clearError","ensureSelectedItem","e","handleError","displayProjectDate","project","creationDate","toShortLocalString","ProjectList","listItems","directives","Ripple","options","ripple","indeterminate","indeterminateIcon","onIcon","offIcon","listeners","dark","light","center","stopPropagation","input","wrapInArray","f","sizeableClasses","pattern","styleList","styleProp","parseStyle","styleMap","s","split","camelize","mergeTarget","i","arguments","mergeClasses","mergeStyles","mergeListeners","target","source","concat","args","dest","arg","event"],"mappings":"yMAOA,MAAMA,EAAc,CAAC,KAAM,KAAM,KAAM,MAEjCC,EAAY,CAAC,QAAS,MAAO,UAEnC,SAASC,EAAWC,EAAgBC,GAClC,OAAOJ,EAAYK,OAAO,CAACC,EAAOC,KAChCD,EAAMH,EAASK,eAAWD,IAAQH,IAC3BE,GACN,IAGL,MAAMG,EAAkBC,GAAa,IAAIT,EAAW,WAAY,WAAWU,SAASD,GAC9EE,EAAaV,EAAU,QAAS,KAAM,CAC1CW,KAAMC,OACNC,QAAS,KACTC,UAAWP,KAGPQ,EAAoBP,GAAa,IAAIT,EAAW,gBAAiB,gBAAgBU,SAASD,GAC1FQ,EAAehB,EAAU,UAAW,KAAM,CAC9CW,KAAMC,OACNC,QAAS,KACTC,UAAWC,KAGPE,EAAyBT,GAAa,IAAIT,EAAW,gBAAiB,eAAgB,WAAWU,SAASD,GAC1GU,EAAoBlB,EAAU,eAAgB,KAAM,CACxDW,KAAMC,OACNC,QAAS,KACTC,UAAWG,KAGPE,EAAU,CACdC,MAAOC,OAAOC,KAAKZ,GACnBa,QAASF,OAAOC,KAAKN,GACrBQ,aAAcH,OAAOC,KAAKJ,IAGtBO,EAAW,CACfL,MAAO,QACPG,QAAS,UACTC,aAAc,iBAGhB,SAASE,EAAiBf,EAA4BgB,EAActB,GAClE,IAAIuB,EAAYH,EAASd,GACzB,GAAW,MAAPN,EAAJ,CAGA,GAAIsB,EAAM,CAER,MAAME,EAAaF,EAAKG,QAAQnB,EAAM,IACtCiB,GAAa,IAAIC,EAInB,OADAD,GAAa,IAAIvB,EACVuB,EAAUG,eAGnB,MAAMC,EAAQ,IAAIC,IAEHC,cAAIC,OAAO,CACxBC,KAAM,QACNC,YAAY,EACZjC,MAAO,CACLkC,IAAK,CACH3B,KAAMC,OACNC,QAAS,OAEX0B,MAAOC,QACPC,UAAWD,QACXpB,MAAO,CACLT,KAAMC,OACNC,QAAS,KACTC,UAAWP,MAEVG,EACHa,QAAS,CACPZ,KAAMC,OACNC,QAAS,KACTC,UAAWC,MAEVC,EACHQ,aAAc,CACZb,KAAMC,OACNC,QAAS,KACTC,UAAWG,MAEVC,GAELwB,OAAQC,GAAG,MAAEvC,EAAF,KAASwC,EAAT,SAAeC,IAExB,IAAIC,EAAW,GACf,IAAK,MAAMnB,KAAQvB,EACjB0C,GAAYlC,OAAQR,EAAcuB,IAEpC,IAAIoB,EAAYf,EAAMgB,IAAIF,GAE1B,IAAKC,EAAW,CAGd,IAAIpC,EACJ,IAAKA,KAHLoC,EAAY,GAGC5B,EACXA,EAAQR,GAAMsC,QAAQtB,IACpB,MAAMuB,EAAiB9C,EAAcuB,GAC/BC,EAAYF,EAAgBf,EAAMgB,EAAMuB,GAC1CtB,GAAWmB,EAAWI,KAAKvB,KAInCmB,EAAUI,KAAK,CACb,aAAc/C,EAAMqC,UACpB,aAAcrC,EAAMmC,MACpB,CAAC,SAASnC,EAAMgB,OAAUhB,EAAMgB,MAChC,CAAC,WAAWhB,EAAMmB,SAAYnB,EAAMmB,QACpC,CAAC,iBAAiBnB,EAAMoB,cAAiBpB,EAAMoB,eAGjDQ,EAAMoB,IAAIN,EAAUC,GAGtB,OAAOJ,EACLvC,EAAMkC,IACNe,eAAUT,EAAM,CACdU,YAAa,MACbC,MAAOR,IAETF,O,4DCtHDW,E,oFASL,SAASC,EAAgBC,GACvB,MAAO,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OAAOC,KAAKtD,GAAOqD,EAASjD,SAASJ,IAGlF,SAASuD,EAAWC,GAClB,MAAQ,0CAA0CC,KAAKD,IAAS,UAAUC,KAAKD,IAASA,EAAKE,OAAS,GAdxG,SAAKP,GACHA,EAAA,iBACAA,EAAA,gBACAA,EAAA,kBACAA,EAAA,iBACAA,EAAA,gBACAA,EAAA,kBANF,CAAKA,MAAQ,KAiBb,MAAMQ,EAAQC,eACZC,OACAC,OACAC,OACAC,QAEAlC,OAAO,CACPC,KAAM,SAENhC,MAAO,CACLmC,MAAOC,QACP8B,SAAU9B,QACV+B,KAAM/B,QACNgC,MAAOhC,QACPiC,KAAM,CAACC,OAAQ9D,QACf0B,IAAK,CACH3B,KAAMC,OACN+D,UAAU,EACV9D,QAAS,MAIb+D,SAAU,CACRC,SACE,OAAO,GAETC,mBACE,OAAOtC,QACLuC,KAAKC,WAAWC,OAASF,KAAKC,WAAW,aAK/CE,QAAS,CACPC,UACE,IAAIC,EAAW,GAGf,OAFIL,KAAKM,OAAOxE,UAASuE,EAAWL,KAAKM,OAAOxE,QAAQ,GAAGyE,KAAMC,QAE1DC,eAAkBT,KAAMK,IAEjCK,UACE,MAAMC,EAAQ,CACZC,OAAQZ,KAAKY,OACbC,MAAOb,KAAKa,MACZf,OAAQE,KAAKF,OACbgB,MAAOd,KAAKc,MACZC,OAAQf,KAAKe,QAGTC,EAAezE,eAAKoE,GAAOM,KAAKC,GAAOP,EAAMO,IAEnD,OACGF,GAAgBvC,EAASuC,IAAkBG,eAAcnB,KAAKN,OAInE0B,iBACE,MAAO,CACL7C,YAAa,qBACbC,MAAO,CACL,mBAAoBwB,KAAKT,SACzB,eAAgBS,KAAKR,KACrB,eAAgBQ,KAAKD,iBACrB,gBAAiBC,KAAKP,MACtB,gBAAiBO,KAAKxC,OAExB6D,MAAO,CACL,eAAgBrB,KAAKD,iBACrBR,SAAUS,KAAKD,kBAAoBC,KAAKT,SACxC3D,KAAMoE,KAAKD,iBAAmB,cAAWuB,KACtCtB,KAAKuB,QAEVC,GAAIxB,KAAKC,aAGbwB,oBACE,MAAMC,EAAW1B,KAAKU,UAChBiB,EAAc,IACf3B,KAAKoB,iBACRQ,MAAOF,EAAW,CAChBA,WACAG,OAAQH,EACRI,MAAOJ,QACLJ,GAIN,OAFAtB,KAAK+B,YAAYJ,GAEVA,GAETI,YAAalE,GACXA,EAAKW,MAAQ,IAAKX,EAAKW,SAAUwB,KAAKgC,cACtChC,KAAKiC,aAAajC,KAAKkC,MAAOrE,IAEhCsE,eAAgBrD,EAAclB,GAC5B,MAAMwE,EAA6B,GAC7BvE,EAAOmC,KAAKoB,iBAElB,IAAIzC,EAAW,iBAGf,MAAM0D,EAAiBvD,EAAKwD,QAAQ,KAC9BC,EAAiBF,IAAmB,EAEtCE,EAEFH,EAAYhE,KAAKU,IAEjBH,EAAWG,EAAK0D,MAAM,EAAGH,GACrB3D,EAAeC,KAAWA,EAAW,KAG3Cd,EAAKW,MAAMG,IAAY,EACvBd,EAAKW,MAAMM,IAASyD,EAEpB,MAAMb,EAAW1B,KAAKU,UAKtB,OAJIgB,IAAU7D,EAAK+D,MAAQ,CAAEF,aAE7B1B,KAAK+B,YAAYlE,GAEVD,EAAEoC,KAAKD,iBAAmB,SAAWC,KAAKzC,IAAKM,EAAMuE,IAE9DK,cAAe3D,EAAclB,GAC3B,MAAM8E,EAAqB,CACzBlE,MAAO,cACP6C,MAAO,CACLsB,MAAO,6BACPC,QAAS,YACTC,KAAM,MACN,eAAe,IAIbnD,EAAOM,KAAKU,UASlB,OARIhB,IACFgD,EAAQd,MAAQ,CACdF,SAAUhC,EACVmC,OAAQnC,EACRoC,MAAOpC,IAIJ9B,EAAEoC,KAAKD,iBAAmB,SAAW,OAAQC,KAAKyB,oBAAqB,CAC5E7D,EAAE,MAAO8E,EAAS,CAChB9E,EAAE,OAAQ,CACRyD,MAAO,CACLyB,EAAGhE,UAMbiE,uBACEjE,EACAlB,GAEA,MAAMC,EAAkB,CACtBW,MAAO,CACL,qBAAqB,IAInBkB,EAAOM,KAAKU,UACdhB,IACF7B,EAAK+D,MAAQ,CACXF,SAAUhC,EACVmC,OAAQnC,EACRoC,MAAOpC,IAIXM,KAAK+B,YAAYlE,GAEjB,MAAMmF,EAAYlE,EAAKkE,UAIvB,OAHAnF,EAAKxC,MAAQyD,EAAKzD,MAClBwC,EAAKoF,SAAWpF,EAAK2D,GAEd5D,EAAEoC,KAAKD,iBAAmB,SAAW,OAAQC,KAAKyB,oBAAqB,CAC5E7D,EAAEoF,EAAWnF,OAKnBF,OAAQC,GACN,MAAMkB,EAAOkB,KAAKI,UAElB,MAAoB,kBAATtB,EACLD,EAAUC,GACLkB,KAAKyC,cAAc3D,EAAMlB,GAE3BoC,KAAKmC,eAAerD,EAAMlB,GAG5BoC,KAAK+C,uBAAuBjE,EAAMlB,MAI9BT,cAAIC,OAAO,CACxBC,KAAM,SAEN6F,aAAcjE,EAEd3B,YAAY,EAEZK,OAAQC,GAAG,KAAEC,EAAF,SAAQC,IACjB,IAAIuC,EAAW,GAcf,OAXIxC,EAAKsF,WACP9C,EAAWxC,EAAKsF,SAASC,aACvBvF,EAAKsF,SAASE,WACdhD,SAIKxC,EAAKsF,SAASC,mBACdvF,EAAKsF,SAASE,WAGhBzF,EAAEqB,EAAOpB,EAAMwC,EAAW,CAACA,GAAYvC,O,0JCpPlD,MAAM/C,EAAc,CAAC,KAAM,KAAM,KAAM,MAEjCuI,EAAkB,KACfvI,EAAYK,OAAO,CAACC,EAAOC,KAChCD,EAAMC,GAAO,CACXM,KAAM,CAAC6B,QAAS5B,OAAQ8D,QACxB7D,SAAS,GAEJT,GACN,IAPmB,GAUlBkI,EAAc,KACXxI,EAAYK,OAAO,CAACC,EAAOC,KAChCD,EAAM,SAAWE,eAAWD,IAAQ,CAClCM,KAAM,CAACC,OAAQ8D,QACf7D,QAAS,MAEJT,GACN,IAPe,GAUdmI,EAAa,KACVzI,EAAYK,OAAO,CAACC,EAAOC,KAChCD,EAAM,QAAUE,eAAWD,IAAQ,CACjCM,KAAM,CAACC,OAAQ8D,QACf7D,QAAS,MAEJT,GACN,IAPc,GAUbe,EAAU,CACdqH,IAAKnH,OAAOC,KAAK+G,GACjBI,OAAQpH,OAAOC,KAAKgH,GACpBI,MAAOrH,OAAOC,KAAKiH,IAGrB,SAAS7G,EAAiBf,EAA4BgB,EAActB,GAClE,IAAIuB,EAAYjB,EAChB,GAAW,MAAPN,IAAuB,IAARA,EAAnB,CAGA,GAAIsB,EAAM,CACR,MAAME,EAAaF,EAAKG,QAAQnB,EAAM,IACtCiB,GAAa,IAAIC,EAKnB,MAAa,QAATlB,GAA2B,KAARN,IAAsB,IAARA,GAKrCuB,GAAa,IAAIvB,EACVuB,EAAUG,eAJRH,EAAUG,eAOrB,MAAMC,EAAQ,IAAIC,IAEHC,cAAIC,OAAO,CACxBC,KAAM,QACNC,YAAY,EACZjC,MAAO,CACLuI,KAAM,CACJhI,KAAM,CAAC6B,QAAS5B,OAAQ8D,QACxB7D,SAAS,MAERwH,EACHI,OAAQ,CACN9H,KAAM,CAACC,OAAQ8D,QACf7D,QAAS,SAERyH,EACHI,MAAO,CACL/H,KAAM,CAACC,OAAQ8D,QACf7D,QAAS,SAER0H,EACHK,UAAW,CACTjI,KAAMC,OACNC,QAAS,KACTC,UAAYN,GAAa,CAAC,OAAQ,QAAS,MAAO,SAAU,WAAY,WAAWC,SAASD,IAE9F8B,IAAK,CACH3B,KAAMC,OACNC,QAAS,QAGb6B,OAAQC,GAAG,MAAEvC,EAAF,KAASwC,EAAT,SAAeC,EAAf,OAAyBgG,IAElC,IAAI/F,EAAW,GACf,IAAK,MAAMnB,KAAQvB,EACjB0C,GAAYlC,OAAQR,EAAcuB,IAEpC,IAAIoB,EAAYf,EAAMgB,IAAIF,GAE1B,IAAKC,EAAW,CAGd,IAAIpC,EACJ,IAAKA,KAHLoC,EAAY,GAGC5B,EACXA,EAAQR,GAAMsC,QAAQtB,IACpB,MAAMuB,EAAoC9C,EAAcuB,GAClDC,EAAYF,EAAgBf,EAAMgB,EAAMuB,GAC1CtB,GAAWmB,EAAWI,KAAKvB,KAInC,MAAMkH,EAAgB/F,EAAUY,KAAK/B,GAAaA,EAAUmH,WAAW,SAEvEhG,EAAUI,KAAK,CAEbqF,KAAMM,IAAkB1I,EAAMuI,KAC9B,CAAC,OAAOvI,EAAMuI,MAASvI,EAAMuI,KAC7B,CAAC,UAAUvI,EAAMqI,QAAWrI,EAAMqI,OAClC,CAAC,SAASrI,EAAMsI,OAAUtI,EAAMsI,MAChC,CAAC,cAActI,EAAMwI,WAAcxI,EAAMwI,YAG3C5G,EAAMoB,IAAIN,EAAUC,GAGtB,OAAOJ,EAAEvC,EAAMkC,IAAKe,eAAUT,EAAM,CAAEW,MAAOR,IAAcF,O,oCCnI/D,gBAOA,SAASmG,EAAaC,GACpB,OAAO,SAAqB5I,EAAK6I,GAC/B,IAAK,MAAMC,KAAQD,EACZ7H,OAAO+H,UAAUC,eAAeC,KAAKjJ,EAAK8I,IAC7CpE,KAAKwE,QAAQxE,KAAKyE,MAAMP,GAAWE,GAGvC,IAAK,MAAMA,KAAQ9I,EACjB0E,KAAK0E,KAAK1E,KAAKyE,MAAMP,GAAWE,EAAM9I,EAAI8I,KAKjCjH,cAAIC,OAAO,CACxBS,KAAMA,KAAA,CACJ0D,OAAQ,GACRtB,WAAY,KAGd0E,UAGE3E,KAAK4E,OAAO,SAAUX,EAAY,UAAW,CAAEY,WAAW,IAC1D7E,KAAK4E,OAAO,aAAcX,EAAY,cAAe,CAAEY,WAAW,Q,6GC9BqE,W,IAAkB,OAACrD,EAAG,W,OAAC,2BAA6BsD,C,MAAyB,CAAwC,2BAACC,MAAW,EAACC,c,GAAyB,C,uBAAuB,EAAgB,yB,iBAAyB,oB,YAAW,O,IAAG,U,GAAyB3D,W,MAAO,mBAAc4D,WAAS,MAAC,CAACC,MAAM,K,CAAkCC,sBAAsB,C,MAAM,CAAyB,QAAC,aAAkC,OAAIC,MAAG,uBAAyB,SAAC,YAAC,uBAAoBC,GAAuBD,WAAG,0BAAwC/D,EAAK,sBAAC,C,GAAC,CAAkB,cAAgB2D,EAAIM,uBAAoBJ,EAAK,OAAC,C,YAAYK,O,MAAmBJ,C,eAA6BI,GAAqB,cAAC,sBAA+B,OAAI,MAAM,EAAEH,kBAAmB/D,SAAM,YAAC,oBAAoB,GAA6C,mCAAK,wBAAmBmE,CAAc,OAAIJ,SAAG,QAAiB/D,sBAAM,qB,GAAoC,CAAmC,aAAcoE,oBAA4D,mBAACjE,MAAG,CAAC,cAAQ,EAASkE,iB,iBAAYD,gBAA2B,8BAAC,uCAAK,IAAM,MAAC,YAAM,+B,OAA2D,G,KAAY,S,GAA2ClH,WAAkB,MAAM,UAAQ,CAACA,OAAmB8C,KAAM,MAAa,EAAI,iBAAC,iBAAG,oBAAG,CAAC+D,EAAG,QAAe5D,YAAG,O,MAAC,C,KAAyB,KAA2B,SAAGuD,iBAAmB,C,GAAE7D,CAAgByE,MAAG,SAAU,GAAC,OAAO,EAAI,mBAAgD,YAAE,OAACzE,IAAI,YAAUyE,GAAG,WAAW,MAAO,CAACX,EAAIY,GAAG,IAAK,EAACZ,GAAIa,EAAGb,YAAIc,OAAsBC,OAAM,GAAM,CAA0B,IAAI,UAAc,cAAO,+CAAS,WACrwD,uBACGC,OAAkB,EAAE,O,wGCOjB,MAAMC,EAAqB,CAChCC,WAAY,CACVC,aAAcA,IAAM,uJACpBC,kBAAmBA,IACjB,iDAEJvI,OACE,MAAO,CACLwI,iBAAkB,GAClBC,cAAeC,OACfd,qBAAqB,EACrBF,mBAAmB,EACnBiB,qBAAsB,GACtBlB,oBAAoB,IAGxBzF,SAAU,CAKRiG,gBACE,MAAO,WAGX3F,QAAS,CAKPqF,eAAeiB,GACbzG,KAAKqG,iBAAmBI,EAAQC,SAEhC1G,KAAKsF,mBAAqBmB,EAAQE,iBAE9B3G,KAAKqG,iBAAiBrH,SAAWgB,KAAK4G,MAAM5H,SAC9CgB,KAAKuF,mBAAoB,EACzBvF,KAAKsF,oBAAqB,GAGS,IAAjCtF,KAAKqG,iBAAiBrH,SACxBgB,KAAKuF,mBAAoB,EACzBvF,KAAKsF,oBAAqB,IAO9BuB,iBACE7G,KAAKyF,qBAAsB,GAO7BJ,oBAAoByB,GAClB9G,KAAKwG,qBAAuBM,EAC5BC,eACEC,OAAwBC,oBACxBC,KAAKC,UAAUnH,KAAKwG,2BC3DtB,SACJY,EAAQ,aACRC,EAAY,WACZC,EAAU,WACVC,GACEC,eAAwB,WAYfC,EAAqB,CAChCvI,OAAQ,CAACwI,OAAwBzB,GACjCpG,SAAU,IACLuH,EAAS,CAAEV,SAAU,gBAKrBY,EAAW,CAAC,aAAc,yBAM7BV,QACE,IAAIe,EAAgB3H,KAAK0G,SAqBzB,OAlBI1G,KAAK4H,uBACPD,EAAgBA,EAAcE,OAAOC,GAC5BA,EAAGC,YACP/K,cACAgH,WAAWhE,KAAK4H,qBAAqB5K,iBAKxCgD,KAAKwG,qBAAqBxH,OAAS,IACrCgB,KAAKuF,mBAAoB,EACzBoC,EAAgBA,EAAcE,OAAOC,IAAM,IAAAE,EACzC,OAAOhI,KAAKwG,qBAAqB9K,SACJ,QADYsM,EACvCC,eAAiBH,EAAGI,eAAO,IAAAF,OAAA,EAA3BA,EAA6B3K,SAK5BsK,GAOTQ,4BACE,OAAOnI,KAAKoI,UAAY,EAAIpI,KAAK4G,MAAM,GAAGyB,WAAa,IAG3DlI,QAAS,IACJoH,EAAW,CAAEe,YAAa,mBAK1BjB,EAAa,CAAEkB,cAAeC,SAOjCC,8BAA+BA,IAAMA,iBAOrCC,iBAAiBC,GAAI,IAAAC,EAAAC,EACnB,OAAkD,QAAlDD,EAAiB,QAAjBC,EAAO7I,KAAK4G,aAAK,IAAAiC,OAAA,EAAVA,EAAY5H,KAAK6G,GAAMA,EAAGO,YAAcM,UAAG,IAAAC,SAAItH,GAOxD,kBACE,IACEtB,KAAK8I,aACL9I,KAAKiF,WAAY,QACXjF,KAAKsI,oBACLtI,KAAK+I,qBACX,MAAOC,GACPhJ,KAAKiJ,YAAYD,GACjB,QACAhJ,KAAKiF,WAAY,IASrBiE,mBAAmBC,GACjB,OAAc,OAAPA,QAAO,IAAPA,KAASC,aACZC,eAAmBF,EAAQC,cAC3B,MCvDK,OACf/L,KAAA,gBACA6B,OAAA,CAAAuI,GACAvB,WAAA,CACAoD,gBAAA,iDAEA,gBACA,UACA,KAAAC,YACA,MAAAP,GACA,KAAAC,YAAAD,MC/EsW,I,YCOlWhG,EAAY,eACd,EACA,EACAgD,GACA,EACA,KACA,KACA,MAIa,aAAAhD,E,yJCHA7F,cAAIC,OAAO,CACxBC,KAAM,oBAENC,YAAY,EAEZkM,WAAY,CACVC,eAGFpO,MAAO,IACF+D,OAAUsK,QAAQrO,SAClBiE,OAAUoK,QAAQrO,MACrBkE,SAAU9B,QACVkM,OAAQ,CACN/N,KAAM6B,QACN3B,SAAS,GAEXqC,MAAOV,QACPmM,cAAenM,QACfoM,kBAAmB,CACjBjO,KAAMC,OACNC,QAAS,0BAEXgO,OAAQ,CACNlO,KAAMC,OACNC,QAAS,eAEXiO,QAAS,CACPnO,KAAMC,OACNC,QAAS,iBAIb6B,OAAQC,GAAG,MAAEvC,EAAF,KAASwC,EAAT,UAAemM,IACxB,MAAMlM,EAAW,GACjB,IAAIgB,EAAOzD,EAAM0O,QAYjB,GAXI1O,EAAMuO,cAAe9K,EAAOzD,EAAMwO,kBAC7BxO,EAAM8C,QAAOW,EAAOzD,EAAMyO,QAEnChM,EAASM,KAAKR,EAAEqB,OAAOG,OAAUsK,QAAQvJ,QAAQ8B,aAAa5G,EAAM8C,OAAS9C,EAAM6G,MAAO,CACxF7G,MAAO,CACLkE,SAAUlE,EAAMkE,SAChB0K,KAAM5O,EAAM4O,KACZC,MAAO7O,EAAM6O,SAEbpL,IAEAzD,EAAMsO,SAAWtO,EAAMkE,SAAU,CACnC,MAAMoK,EAAS/L,EAAE,MAAOwB,OAAUsK,QAAQvJ,QAAQ8B,aAAa5G,EAAM6G,MAAO,CAC1E3D,YAAa,sCACbiL,WAAY,CAAC,CACXrO,IAAKsO,OACLpM,KAAM,SACNc,MAAO,CAAEgM,QAAQ,QAIrBrM,EAASM,KAAKuL,GAGhB,OAAO/L,EAAE,MACPU,eAAUT,EAAM,CACdW,MAAO,CACL,qBAAqB,EACrB,8BAA+BnD,EAAMkE,UAEvCiC,GAAI,CACFtB,MAAQ8I,IACNA,EAAEoB,kBAEEvM,EAAK2D,IAAM3D,EAAK2D,GAAG6I,QAAUhP,EAAMkE,UACrC+K,eAAYzM,EAAK2D,GAAG6I,OAAOnM,QAAQqM,GAAKA,GAAGlP,EAAM8C,YAIrD,CACFP,EAAE,MAAO,CAAEW,YAAa,sCAAwCT,S,kCC3FxE,gBAEeX,cAAIC,OAAO,CACxBC,KAAM,WAENhC,MAAO,CACLyF,MAAOrD,QACPoD,MAAOpD,QACPsD,OAAQtD,QACRmD,OAAQnD,SAGVoC,SAAU,CACRC,SACE,OAAOrC,SACJuC,KAAKY,SACLZ,KAAKa,QACLb,KAAKc,QACLd,KAAKe,SAGVyJ,kBACE,MAAO,CACL,kBAAmBxK,KAAKY,OACxB,gBAAiBZ,KAAKa,MACtB,kBAAmBb,KAAKF,OACxB,gBAAiBE,KAAKc,MACtB,kBAAmBd,KAAKe,a,yDCpBhC,wJAEA,MAAM0J,EAAU,CACdC,UAAW,gBACXC,UAAW,SAGb,SAASC,EAAYhJ,GACnB,MAAMiJ,EAA4B,GAElC,IAAK,MAAMC,KAAKlJ,EAAMmJ,MAAMN,EAAQC,WAAY,CAC9C,IAAKxJ,EAAK5F,GAAOwP,EAAEC,MAAMN,EAAQE,WACjCzJ,EAAMA,EAAIV,OACLU,IAIc,kBAAR5F,IACTA,EAAMA,EAAIkF,QAEZqK,EAASG,eAAS9J,IAAQ5F,GAG5B,OAAOuP,EASK,SAAUvM,IACtB,MAAM2M,EAA2C,GACjD,IACIrO,EADAsO,EAAYC,UAAUnM,OAI1B,MAAOkM,IAGL,IAAKtO,KAAQN,OAAOC,KAAK4O,UAAUD,IACjC,OAAQtO,GAEN,IAAK,QACL,IAAK,aACCuO,UAAUD,GAAGtO,KACfqO,EAAYrO,GAAQwO,EAAaH,EAAYrO,GAAOuO,UAAUD,GAAGtO,KAEnE,MACF,IAAK,QACCuO,UAAUD,GAAGtO,KACfqO,EAAYrO,GAAQyO,EAAYJ,EAAYrO,GAAOuO,UAAUD,GAAGtO,KAElE,MAEF,IAAK,cACH,IAAKuO,UAAUD,GAAGtO,GAChB,WAEwB0E,IAAtB2J,EAAYrO,KACdqO,EAAYrO,GAAQ,IAElBqO,EAAYrO,KAEdqO,EAAYrO,IAAS,KAEvBqO,EAAYrO,IAASuO,UAAUD,GAAGtO,GAAM4D,OACxC,MAMF,IAAK,KACL,IAAK,WACC2K,UAAUD,GAAGtO,KACfqO,EAAYrO,GAAQ0O,EAAeL,EAAYrO,GAAOuO,UAAUD,GAAGtO,KAErE,MAEF,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,cACL,IAAK,cACL,IAAK,OACL,IAAK,aACH,IAAKuO,UAAUD,GAAGtO,GAChB,MAEGqO,EAAYrO,KACfqO,EAAYrO,GAAQ,IAEtBqO,EAAYrO,GAAQ,IAAKuO,UAAUD,GAAGtO,MAAUqO,EAAYrO,IAC5D,MAEF,QACOqO,EAAYrO,KACfqO,EAAYrO,GAAQuO,UAAUD,GAAGtO,IAM3C,OAAOqO,EAGH,SAAUI,EACdE,EACAC,GAEA,OAAKD,EACAC,GAELD,EAASjB,eAA8B,kBAAXiB,EAAsBX,EAAWW,GAAUA,GAE/DA,EAAoBE,OAAyB,kBAAXD,EAAsBZ,EAAWY,GAAUA,IAJjED,EADAC,EAQhB,SAAUJ,EAAcG,EAAaC,GACzC,OAAKA,EACAD,GAEEA,EAASjB,eAAYiB,GAAQE,OAAOD,GAFvBA,EADAD,EAMhB,SAAUD,KAAmBI,GAIjC,IAAKA,EAAK,GAAI,OAAOA,EAAK,GAC1B,IAAKA,EAAK,GAAI,OAAOA,EAAK,GAE1B,MAAMC,EAAiD,GAEvD,IAAK,IAAIT,EAAI,EAAGA,KAAM,CACpB,MAAMU,EAAMF,EAAKR,GACjB,IAAK,MAAMW,KAASD,EACbA,EAAIC,KAELF,EAAKE,GAGPF,EAAKE,GAAU,GAAkBJ,OAAOG,EAAIC,GAAQF,EAAKE,IAGzDF,EAAKE,GAASD,EAAIC,IAKxB,OAAOF","file":"js/chunk-26cf347b.74a58b76.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 './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport Vue, { CreateElement, VNode, VNodeChildren, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nconst VIcon = mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i',\n },\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.click || this.listeners$['!click']\n )\n },\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) iconName = this.$slots.default[0].text!.trim()\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge,\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n return {\n staticClass: 'v-icon notranslate',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n },\n attrs: {\n 'aria-hidden': !this.hasClickListener,\n disabled: this.hasClickListener && this.disabled,\n type: this.hasClickListener ? 'button' : undefined,\n ...this.attrs$,\n },\n on: this.listeners$,\n }\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n const wrapperData = {\n ...this.getDefaultData(),\n style: fontSize ? {\n fontSize,\n height: fontSize,\n width: fontSize,\n } : undefined,\n }\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n applyColors (data: VNodeData): void {\n data.class = { ...data.class, ...this.themeClasses }\n this.setTextColor(this.color, data)\n },\n renderFontIcon (icon: string, h: CreateElement): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n return h(this.hasClickListener ? 'button' : this.tag, data, newChildren)\n },\n renderSvgIcon (icon: string, h: CreateElement): VNode {\n const svgData: VNodeData = {\n class: 'v-icon__svg',\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n svgData.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgData, [\n h('path', {\n attrs: {\n d: icon,\n },\n }),\n ]),\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent,\n h: CreateElement\n ): VNode {\n const data: VNodeData = {\n class: {\n 'v-icon__component': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n data.props = icon.props\n data.nativeOn = data.on\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h(component, data),\n ])\n },\n },\n\n render (h: CreateElement): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon, h)\n }\n return this.renderFontIcon(icon, h)\n }\n\n return this.renderSvgIconComponent(icon, h)\n },\n})\n\nexport default Vue.extend({\n name: 'v-icon',\n\n $_wrapperFor: VIcon,\n\n functional: true,\n\n render (h, { data, children }): VNode {\n let iconName = ''\n\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent ||\n data.domProps.innerHTML ||\n iconName\n\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent\n delete data.domProps.innerHTML\n }\n\n return h(VIcon, data, iconName ? [iconName] : children)\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 Vue from 'vue'\n\n/**\n * This mixin provides `attrs$` and `listeners$` to work around\n * vue bug https://github.com/vuejs/vue/issues/10115\n */\n\nfunction makeWatcher (property: string): ThisType & ((val: any, oldVal: any) => void) {\n return function (this: Vue, val, oldVal) {\n for (const attr in oldVal) {\n if (!Object.prototype.hasOwnProperty.call(val, attr)) {\n this.$delete(this.$data[property], attr)\n }\n }\n for (const attr in val) {\n this.$set(this.$data[property], attr, val[attr])\n }\n }\n}\n\nexport default Vue.extend({\n data: () => ({\n attrs$: {} as Dictionary,\n listeners$: {} as Dictionary,\n }),\n\n created () {\n // Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115\n // Make sure to use `attrs$` instead of `$attrs` (confusing right?)\n this.$watch('$attrs', makeWatcher('attrs$'), { immediate: true })\n this.$watch('$listeners', makeWatcher('listeners$'), { immediate: true })\n },\n})\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('core-navigation-drawer',{attrs:{\"drawer-mini\":_vm.drawerMini,\"error\":_vm.currentError},on:{\"alertVisibilityChanged\":_vm.onAlertVisibilityChanged,\"toggleMiniDrawer\":_vm.toggleMiniDrawer},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('base-nav-list',[_c('v-list-item',{attrs:{\"dense\":\"\"}},[_c('search-text-field',{attrs:{\"loading\":_vm.isLoading},model:{value:(_vm.searchDrawerItemName),callback:function ($$v) {_vm.searchDrawerItemName=$$v},expression:\"searchDrawerItemName\"}}),_c('project-filter-menu',{on:{\"optionChanged\":_vm.filterOptionChanged}}),_c('v-simple-checkbox',{staticClass:\"mt-0\",attrs:{\"hide-details\":\"\",\"indeterminate\":_vm.indeterminateState},model:{value:(_vm.selectAllProjects),callback:function ($$v) {_vm.selectAllProjects=$$v},expression:\"selectAllProjects\"}})],1)],1),_c('project-list',{attrs:{\"projects\":_vm.items,\"select-all-projects\":_vm.selectAllProjects},on:{\"itemSelected\":_vm.onItemSelected}}),_c('report-dialog',{attrs:{\"record-list\":_vm.selectedProjects,\"search-headers\":_vm.reportHeaders,\"visible\":_vm.visibleReportDialog,\"report-module\":_vm.moduleName.Projects},on:{\"close\":function($event){_vm.visibleReportDialog = false}}})]},proxy:true},{key:\"append\",fn:function(){return [_c('v-divider',{attrs:{\"dark\":\"\"}}),(_vm.selectedProjects.length)?_c('v-row',{staticClass:\"mt-1\"},[_c('v-col',{staticClass:\"mt-2\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('base-button',{on:{\"click\":function($event){return _vm.exportProjects()}},scopedSlots:_vm._u([{key:\"icon-name\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.iconExport)+\" \")]},proxy:true},{key:\"default\",fn:function(){return [_vm._v(\"   \"+_vm._s(_vm.commandExport)+\" \")]},proxy:true}],null,false,3951380079)})],1)],1):_vm._e()]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { setLocalStorageItem } from \"@/utils/localStorageUtility\";\r\nimport {\r\n projectHeaders,\r\n projectLocalStorageKeys\r\n} from \"@/model/workflow/project/projectModel\";\r\n\r\n/**\r\n * Project Filter Mixin\r\n */\r\nexport const projectFilterMixin = {\r\n components: {\r\n ReportDialog: () => import(\"@/components/shared/core/dialogs/ReportDialog\"),\r\n ProjectFilterMenu: () =>\r\n import(\"@/components/shared/core/menu/ProjectFilterMenu\")\r\n },\r\n data() {\r\n return {\r\n selectedProjects: [],\r\n reportHeaders: projectHeaders,\r\n visibleReportDialog: false,\r\n selectAllProjects: false,\r\n selectedFilterOption: [],\r\n indeterminateState: false\r\n };\r\n },\r\n computed: {\r\n /**\r\n * Export Command Text\r\n * @return {string}\r\n */\r\n commandExport() {\r\n return \"Export\";\r\n }\r\n },\r\n methods: {\r\n /**\r\n * Event On Projects Selected\r\n * @param payload\r\n */\r\n onItemSelected(payload) {\r\n this.selectedProjects = payload.projects;\r\n\r\n this.indeterminateState = payload.setIndeterminate;\r\n\r\n if (this.selectedProjects.length === this.items.length) {\r\n this.selectAllProjects = true;\r\n this.indeterminateState = false;\r\n }\r\n\r\n if (this.selectedProjects.length === 0) {\r\n this.selectAllProjects = false;\r\n this.indeterminateState = false;\r\n }\r\n },\r\n\r\n /**\r\n * Export Project Action\r\n */\r\n exportProjects() {\r\n this.visibleReportDialog = true;\r\n },\r\n\r\n /**\r\n * Event Project Filter by Status Changed\r\n * @param option\r\n */\r\n filterOptionChanged(option) {\r\n this.selectedFilterOption = option;\r\n setLocalStorageItem(\r\n projectLocalStorageKeys.projectFilterOption,\r\n JSON.stringify(this.selectedFilterOption)\r\n );\r\n }\r\n }\r\n};\r\n","// services\r\nimport { getStoredSelectedModuleItemId } from \"@/services/project/projectModuleService\";\r\n\r\n// model\r\nimport { findProjectState } from \"@/model/workflow/project/projectModel\";\r\n\r\n// filters\r\nimport { toShortLocalString } from \"@/filters/dateFilter\";\r\n\r\n// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst {\r\n mapState,\r\n mapMutations,\r\n mapGetters,\r\n mapActions\r\n} = createNamespacedHelpers(\"project\");\r\n\r\n// store\r\nimport { SET_DRAWER_MINI } from \"@/store/shared/mutationTypes/record/record-mutation-types\";\r\n\r\n// mixins\r\nimport { moduleItemsDrawerMixin } from \"@/mixins/shared/base/drawer/moduleItemsDrawerMixin\";\r\nimport { projectFilterMixin } from \"@/mixins/project/content/projectFilterMixin\";\r\n\r\n/**\r\n * projectDrawerMixin\r\n */\r\nexport const projectDrawerMixin = {\r\n mixins: [moduleItemsDrawerMixin, projectFilterMixin],\r\n computed: {\r\n ...mapState({ projects: \"projects\" }),\r\n\r\n /**\r\n * Overwrite moduleItemsDrawerMixin Getters\r\n */\r\n ...mapGetters([\"drawerMini\", \"selectedModuleItemId\"]),\r\n\r\n /**\r\n * Overwrite (projects) items\r\n * @return {{projectId: Number, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, projectName: String, recordId: Number, subject: String, owner: String, projectManagerId: Number, templateId: Number, templateName: String, workflowInstanceId: number, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}[]}\r\n */\r\n items() {\r\n let filteredItems = this.projects;\r\n\r\n // Filter by name\r\n if (this.searchDrawerItemName) {\r\n filteredItems = filteredItems.filter(el => {\r\n return el.projectName\r\n .toLowerCase()\r\n .startsWith(this.searchDrawerItemName.toLowerCase());\r\n });\r\n }\r\n\r\n // Filter by selected statuses\r\n if (this.selectedFilterOption.length > 0) {\r\n this.selectAllProjects = false; //Reset Checkbox for Report\r\n filteredItems = filteredItems.filter(el => {\r\n return this.selectedFilterOption.includes(\r\n findProjectState(el.status)?.name\r\n );\r\n });\r\n }\r\n\r\n return filteredItems;\r\n },\r\n\r\n /**\r\n * Overwrite suggested Select (Project) Module Item id\r\n * @return {Number|number}\r\n */\r\n defaultSelectModuleItemId() {\r\n return this.itemCount > 0 ? this.items[0].projectId : -1;\r\n }\r\n },\r\n methods: {\r\n ...mapActions({ setProjects: \"setProjects\" }),\r\n\r\n /**\r\n * Overwrite moduleItemsDrawerMixin Mutations\r\n */\r\n ...mapMutations({ setDrawerMini: SET_DRAWER_MINI }),\r\n\r\n /**\r\n * Get Stored Selected Module Item Id (projectId Id)\r\n * Overwrites moduleItemsDrawerMixin.getStoredSelectedModuleItemId\r\n * @returns {Number|number}\r\n */\r\n getStoredSelectedModuleItemId: () => getStoredSelectedModuleItemId(),\r\n\r\n /**\r\n * Overwrite Determines whether Module (Project) Item exists by its id\r\n * @param {Number|number} id\r\n * @return {Boolean|boolean}\r\n */\r\n existsModuleItem(id) {\r\n return this.items?.find(el => el.projectId === id) ?? undefined;\r\n },\r\n\r\n /**\r\n * Load, set and list Workflow Projects\r\n * @returns {void}\r\n */\r\n async listItems() {\r\n try {\r\n this.clearError();\r\n this.isLoading = true;\r\n await this.setProjects();\r\n await this.ensureSelectedItem();\r\n } catch (e) {\r\n this.handleError(e);\r\n } finally {\r\n this.isLoading = false;\r\n }\r\n },\r\n\r\n /**\r\n * display Project Date\r\n * @param {{projectId: Number, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, projectName: String, recordId: Number, subject: String, owner: String, projectManagerId: Number, templateId: Number, templateName: String, workflowInstanceId: number, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}} project Project\r\n * @return {string|string}\r\n */\r\n displayProjectDate(project) {\r\n return project?.creationDate\r\n ? toShortLocalString(project.creationDate)\r\n : \"\";\r\n }\r\n }\r\n};\r\n","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectsDrawer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectsDrawer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ProjectsDrawer.vue?vue&type=template&id=16be20fc\"\nimport script from \"./ProjectsDrawer.vue?vue&type=script&lang=js\"\nexport * from \"./ProjectsDrawer.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './VSimpleCheckbox.sass'\n\nimport Ripple from '../../directives/ripple'\n\nimport Vue, { VNode, VNodeDirective } from 'vue'\nimport { VIcon } from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-simple-checkbox',\n\n functional: true,\n\n directives: {\n Ripple,\n },\n\n props: {\n ...Colorable.options.props,\n ...Themeable.options.props,\n disabled: Boolean,\n ripple: {\n type: Boolean,\n default: true,\n },\n value: Boolean,\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n },\n\n render (h, { props, data, listeners }): VNode {\n const children = []\n let icon = props.offIcon\n if (props.indeterminate) icon = props.indeterminateIcon\n else if (props.value) icon = props.onIcon\n\n children.push(h(VIcon, Colorable.options.methods.setTextColor(props.value && props.color, {\n props: {\n disabled: props.disabled,\n dark: props.dark,\n light: props.light,\n },\n }), icon))\n\n if (props.ripple && !props.disabled) {\n const ripple = h('div', Colorable.options.methods.setTextColor(props.color, {\n staticClass: 'v-input--selection-controls__ripple',\n directives: [{\n def: Ripple,\n name: 'ripple',\n value: { center: true },\n }] as VNodeDirective[],\n }))\n\n children.push(ripple)\n }\n\n return h('div',\n mergeData(data, {\n class: {\n 'v-simple-checkbox': true,\n 'v-simple-checkbox--disabled': props.disabled,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (data.on && data.on.input && !props.disabled) {\n wrapInArray(data.on.input).forEach(f => f(!props.value))\n }\n },\n },\n }), [\n h('div', { staticClass: 'v-input--selection-controls__input' }, children),\n ])\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'sizeable',\n\n props: {\n large: Boolean,\n small: Boolean,\n xLarge: Boolean,\n xSmall: Boolean,\n },\n\n computed: {\n medium (): boolean {\n return Boolean(\n !this.xSmall &&\n !this.small &&\n !this.large &&\n !this.xLarge\n )\n },\n sizeableClasses (): object {\n return {\n 'v-size--x-small': this.xSmall,\n 'v-size--small': this.small,\n 'v-size--default': this.medium,\n 'v-size--large': this.large,\n 'v-size--x-large': this.xLarge,\n }\n },\n },\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, wrapInArray } 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\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 'directives':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop])\n }\n break\n case 'style':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop])\n }\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 mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop])\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 default: // slot, key, ref, tag, show, keepAlive\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop]\n }\n }\n }\n }\n\n return mergeTarget\n}\n\nexport function mergeStyles (\n target: undefined | string | object[] | object,\n source: undefined | string | object[] | object\n) {\n if (!target) return source\n if (!source) return target\n\n target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target)\n\n return (target as object[]).concat(typeof source === 'string' ? parseStyle(source) : source)\n}\n\nexport function mergeClasses (target: any, source: any) {\n if (!source) return target\n if (!target) return source\n\n return target ? wrapInArray(target).concat(source) : source\n}\n\nexport function mergeListeners (...args: [\n { [key: string]: Function | Function[] } | undefined,\n { [key: string]: Function | Function[] } | undefined\n]) {\n if (!args[0]) return args[1]\n if (!args[1]) return args[0]\n\n const dest: { [key: string]: Function | Function[] } = {}\n\n for (let i = 2; i--;) {\n const arg = args[i]\n for (const event in arg) {\n if (!arg[event]) continue\n\n if (dest[event]) {\n // Merge current listeners before (because we are iterating backwards).\n // Note that neither \"target\" or \"source\" must be altered.\n dest[event] = ([] as Function[]).concat(arg[event], dest[event])\n } else {\n // Straight assign.\n dest[event] = arg[event]\n }\n }\n }\n\n return dest\n}\n"],"sourceRoot":""}