{"version":3,"file":"js/app.27488505.js","mappings":"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CA,MACA,4CACA,OAEA,4CACA,uBACA,aACA,sBACA,aACA,G,MAEA,gBAEA,EACA,SACA,yBACA,0CACA,EACA,+BACA,sBAEA,GACA,6BACA,kDACA,8DACA,oEACA,oEACA,iEACA,6EACA,qDACA,uGACA,mFACA,0EACA,6EACA,6EACA,mEACA,mEACA,mEACA,mEACA,mEACA,mEACA,kDACA,kDACA,+CACA,kDACA,kDACA,qDACA,+CACA,oGACA,6DACA,oDACA,gEACA,yEACA,4EACA,0DACA,+EACA,yEACA,kFACA,mEACA,2CACA,qFACA,qFACA,kCACA,2CACA,qCACA,sCAGA,iBACA,EACA,oBACA,SACA,eACA,wBAGA,QACA,EACA,qBACA,iNACA,2CAEA,8GACA,2CAEA,6EACA,2CAEA,wBAEA,0QACA,wCAEA,qCACA,+CACA,EACA,4BACA,sBACA,iBAEA,UACA,YAEA,EACA,4BAGA,IAFA,SAEA,mCACA,uB,CAGA,uBACA,EACA,4BAEA,qGAEA,0DAEA,oEACA,EACA,8BACA,gDACA,sBACA,oBACA,cACA,cACA,UAGA,qCACA,kDACA,uBACA,kBACA,YACA,gBACA,kBACA,aAGA,oDACA,4CACA,EACA,qBACA,qBACA,mBAEA,EACA,kBAEA,kDACA,WAEA,6DACA,OACA,kBAEA,qCACA,4BAGA,oBAEA,G,MAEA,oBAEA,EACA,kBACA,qBACA,sBACA,8BAEA,+CACA,EACA,yBACA,qBACA,sCACA,4BACA,yBAEA,uBAGA,uDAEA,EACA,+BACA,2BACA,qBACA,mBAEA,EACA,kCACA,4CACA,OAEA,qCACA,2FACA,GACA,EACA,sCACA,oFACA,gCACA,OAEA,yBAEA,gBACA,qBACA,kBACA,aACA,gBACA,sFAIA,iEACA,gBACA,aACA,OACA,+BAPA,wCACA,yCAWA,gBAEA,gBACA,uCACA,iBACA,YACA,GACA,EACA,6BAEA,0CACA,6CAIA,kCACA,kBAEA,EACA,wCACA,sFACA,gCAGA,yBAEA,gBAEA,oBACA,CACA,SACA,sCAGA,kBACA,aACA,eACA,0CAEA,gBAEA,gBACA,iBACA,YACA,GACA,EACA,wBACA,SACA,SAIA,uBAEA,oDAEA,iDAEA,iDAMA,8DAKA,iBAEA,yCACA,oBACA,KC7cuP,MCQnP,IAAY,OACd,GACA,EACA,GACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIrB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAGD,EAAImG,MAAMnG,EAAIkG,aAAa,CAACE,IAAI,eAAeC,IAAI,MAAMjG,YAAY,mBAAmBG,MAAM,CAAC,MAAQP,EAAI2a,SAAS,YAAc3a,EAAI4a,gBAAgB,KAAO5a,EAAI6a,QAAQ5a,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAAEJ,EAAIkG,YAAclG,EAAImG,MAAM7C,OAAS,EAAGrD,EAAG,YAAY,CAACG,YAAY,cAAcG,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,eAAe,cAAc,cAAc,KAAO,iBAAiBK,GAAG,CAAC,cAAclB,EAAIyG,UAAUzG,EAAIS,KAAKR,EAAG,MAAMA,EAAG,SAAS,CAACG,YAAY,YAAYG,MAAM,CAAC,SAAW,IAAI,KAAO,QAAQW,GAAG,CAAC,MAAQlB,EAAI0G,SAAS,CAAC1G,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,gBAAgB,OAAOZ,EAAG,MAAM,CAACG,YAAY,kBAAkBJ,EAAI2G,GAAI3G,EAAS,OAAE,SAAS4G,EAAKC,GAAO,OAAO5G,EAAG,oBAAoB,CAACI,IAAIwG,EAAMzG,YAAY,iBAAiB0B,MAAM,CAAE,eAAgB+E,IAAU7G,EAAIkG,YAAa,cAAeW,EAAQ7G,EAAIkG,aAAc3F,MAAM,CAAC,KAAO,SAAS,cAAc,QAAQW,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAI8G,mBAAmBD,EAAM,IAAI,IAAG,GAAG5G,EAAG,IAAI,CAACG,YAAY,oBAAoBG,MAAM,CAAC,KAAO,0CAA0C,OAAS,WAAW,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6B,IAAI,EACptC,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIb,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,gDAAgD,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACA,EAAG,OAAO,CAACG,YAAY,KAAKG,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+BZ,EAAG,SAAS,CAACM,MAAM,CAAC,cAAcP,EAAIa,GAAG,gCAAgCZ,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,gBAAgB,CAACG,YAAY,iBAAiBG,MAAM,CAAC,oBAAoBP,EAAIgK,qBAAqB,GAAG/J,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,mCAAmC,GAAGZ,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,WAAW,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAerB,YAAY,QAAQG,MAAM,CAAC,KAAOP,EAAIa,GAAG,yBAAyB,YAAYb,EAAIoK,OAAOC,IAAI,kBAAkB,KAAO,iBAAiB,gBAAgB,QAAQ,KAAO,IAAIvB,MAAM,CAACvH,MAAOvB,EAAIuB,MAAMuZ,SAAkB,UAAE/R,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIuB,MAAMuZ,SAAU,YAAa9R,EAAI,EAAEvH,WAAW,+BAA+B,GAAGxB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,WAAW,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAerB,YAAY,QAAQG,MAAM,CAAC,KAAOP,EAAIa,GAAG,wBAAwB,YAAYb,EAAIoK,OAAOC,IAAI,iBAAiB,KAAO,gBAAgB,gBAAgB,QAAQ,KAAO,IAAIvB,MAAM,CAACvH,MAAOvB,EAAIuB,MAAMuZ,SAAiB,SAAE/R,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIuB,MAAMuZ,SAAU,WAAY9R,EAAI,EAAEvH,WAAW,8BAA8B,KAAKxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAOvB,EAAuB,oBAAEyB,WAAW,wBAAwBrB,YAAY,oCAAoCG,MAAM,CAAC,WAAWP,EAAIa,GAAG,mBAAqB,KAAK,KAAO,WAAW,YAAYb,EAAIoK,OAAOC,IAAI,YAAY,gBAAe,EAAK,KAAO,IAAIvB,MAAM,CAACvH,MAAOvB,EAAIuB,MAAMuZ,SAAY,IAAE/R,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIuB,MAAMuZ,SAAU,MAAO9R,EAAI,EAAEvH,WAAW,yBAAyB,KAAKxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,SAAS,CAACG,YAAY,sDAAsDG,MAAM,CAAC,iBAAY4N,EAAU,KAAO,iBAAiB,qBAAqB,iBAAiBrF,MAAM,CAACvH,MAAOvB,EAAIuB,MAAMuZ,SAAuB,eAAE/R,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIuB,MAAMuZ,SAAU,iBAAkB9R,EAAI,EAAEvH,WAAW,oCAAoC,MACjlF,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIzB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,aAAa0B,MAAM,CAAE,QAAW9B,EAAIgb,UAAW,CAAEhb,EAAQ,KAAEC,EAAG,QAAQ,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIqT,MAAMrT,EAAIY,GAAGZ,EAAI4H,SAAW,IAAM,OAAO5H,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,eAAe,CAAEJ,EAAQ,KAAEC,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,OAAO,CAACG,YAAY,oBAAoB,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAOP,EAAIwD,SAAS,KAAKxD,EAAIS,KAAKR,EAAG,QAAQ,CAACmG,IAAI,WAAWtE,MAAM,CAAE,cAAe9B,EAAIgQ,QAAS,0CAA0C,EAAM,OAAUhQ,EAAImT,WAAY,SAAYnT,EAAIiD,UAAW1C,MAAM,CAAC,KAAOP,EAAIoT,aAAa,SAAWpT,EAAI4H,SAAS,YAAc5H,EAAImL,YAAY,SAAWnL,EAAIiD,SAAS,KAAOjD,EAAIib,KAAK,UAAYjb,EAAIkb,UAAU,MAAQlb,EAAImD,SAAS+F,SAAS,CAAC,MAAQlJ,EAAIuB,OAAOL,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAI+H,MAAM,QAASrG,EAAOoK,OAAOvK,MAAM,EAAE,OAAS,SAASG,GAAQ,OAAO1B,EAAI+H,MAAM,SAAUrG,EAAOH,MAAOG,EAAOoK,OAAOvK,MAAM,QAC39B,EACI,GAAkB,GCwBpB,IACEF,KAAM,gBACNkG,MAAO,CACLpE,QAAS,CACPH,KAAMwE,OACNC,QAAS,IAEX4L,KAAM,CACJrQ,KAAMwE,OACNC,QAAS,IAEXuI,QAAS,CACPhN,KAAM4H,QACNnD,SAAS,GAEX0L,WAAYvI,QACZuQ,KAAM,CACJnY,KAAMwE,OACNC,QAAS,IAEX2T,UAAW,CACTpY,KAAMwE,OACNC,QAAS,IAEXlG,MAAO,CACLyB,KAAMwE,OACNC,QAAS,IAEXG,SAAU,CACR5E,KAAM4H,QACNnD,SAAS,GAEX0D,YAAa,CACXnI,KAAMwE,OACNC,QAAS,IAEXuT,QAASpQ,QACT3H,SAAU2H,QACVpH,KAAM,CACJR,KAAM,CAACwE,OAAQ9J,OACf+J,QAAS,IAEXwT,KAAM,CACJjY,KAAM,CAACtF,MAAO8J,OAAQ,MACtBC,QAAS,MAEXyT,UAAW,CACTlY,KAAM,CAAC2E,OAAQ,MACfF,QAAS,OAIb4T,cAAe,CACb,KAAA9Z,GACE,OAAOjG,KAAKmS,MAAM6N,SAAS/Z,KAC7B,GAEFe,SAAU,CACR8Q,aAAc,WACZ,OAAI9X,KAAK8f,UACA9f,KAAK8f,UAEP,MACT,ICzFmI,MCQrI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIpb,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAQH,EAAiB,cAAEC,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,+BAA+B,CAACH,EAAG,mBAAmB,CAACM,MAAM,CAAC,MAAQP,EAAIub,eAAe,GAAGtb,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAAEJ,EAAU,OAAEC,EAAG,OAAO,CAACiJ,SAAS,CAAC,UAAYlJ,EAAIY,GAAGZ,EAAIwb,aAAata,GAAG,CAAC,MAAQlB,EAAIsH,eAAerH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIwb,uBAAuBxb,EAAIS,IACliB,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAAEJ,EAAS,MAAEC,EAAG,oBAAoB,CAACG,YAAY,OAAOG,MAAM,CAAC,KAAO,CAAC,MAAO,mBAAmBP,EAAIS,KAAMT,EAAQ,KAAEC,EAAG,oBAAoB,CAACG,YAAY,QAAQG,MAAM,CAAC,KAAO,CAAC,MAAO,mBAAmBP,EAAIS,KAAMT,EAAa,UAAEC,EAAG,oBAAoB,CAACG,YAAY,UAAUG,MAAM,CAAC,KAAO,CAAC,MAAO,2BAA2BP,EAAIS,MAAM,EACtd,EACI,GAAkB,IpCwNtB,SAAkB6X,GAChB,kBACA,4BACA,mBACD,EAJD,CAAkBA,KAAAA,GAAY,KAM9B,SAAkBC,GAChB,wBACA,sCACA,sCACA,sCACA,kCACA,oCACA,4BACA,2BACD,CATD,CAAkBA,KAAAA,GAA+B,KAWjD,SAAkBC,GAChB,wBACA,8CACA,sCACA,sCACA,sCACA,kCACA,oCACA,4BACA,2BACD,CAVD,CAAkBA,KAAAA,GAAoC,KqC/NtD,4BACA,wBACA,OACA,OACA,YACA,gBAGA,UACA,iBACA,0BACA,EACA,gBACA,yBACA,EACA,qBACA,8BACA,KC7B2P,MCQvP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCChC,wBACA,cACA,YACA,qBAEA,OACA,UACA,aACA,YACA,YAEA,YACA,YACA,YACA,YAEA,YACA,YACA,YACA,YAGA,UACA,kBACA,2BACA,8BACA,EACA,yBACA,uCACA,GAEA,SACA,wBACA,eACA,uCACA,+BAEA,KCzDsQ,MCQlQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCuEhC,wBACA,oBACA,mFACA,OACA,OACA,YACA,cAGA,gBACA,OACA,8DAEA,EACA,UACA,+BACA,gBACA,EACA,uBACA,kCACA,mDACA,EACA,4BACA,yBACA,SAEA,SACA,OASA,OARA,0CACA,0CACA,kBACA,IACA,SACA,kCAEA,IACA,CACA,KC/H6P,MCQzP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIxY,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,gDAAgD,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,KAAKG,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8BZ,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,gBAAgB,CAACG,YAAY,iBAAiBG,MAAM,CAAC,oBAAoBP,EAAIgK,qBAAqB,GAAG/J,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8B,WAAWZ,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,UAAUJ,EAAI2G,GAAI3G,EAAuB,qBAAE,SAASyb,EAAE/N,GAAG,OAAOzN,EAAG,MAAM,CAACI,IAAIqN,GAAG,CAACzN,EAAG,QAAQ,CAACmB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOvB,EAAkB,eAAEyB,WAAW,mBAAmBlB,MAAM,CAAC,GAAK,WAAamN,EAAE,KAAO,QAAQ,KAAO,YAAYxE,SAAS,CAAC,MAAQuS,EAAEC,YAAY,QAAU1b,EAAI2b,GAAG3b,EAAI4b,eAAeH,EAAEC,cAAcxa,GAAG,CAAC,OAAS,SAASQ,GAAQ1B,EAAI4b,eAAeH,EAAEC,WAAW,KAAKzb,EAAG,QAAQ,CAAC6B,MAAM,CACphC,YAAc,EACdoG,SAAUlI,EAAI4b,iBAAmBH,EAAEC,aAAcnb,MAAM,CAAC,IAAM,WAAamN,IAAI,CAAE1N,EAAe,YAAEC,EAAG,OAAO,CAACG,YAAY,WAAW,CAACJ,EAAIQ,GAAGR,EAAIY,GAAG6a,EAAEI,mBAAmB5b,EAAG,OAAO,CAACG,YAAY,WAAW,CAACJ,EAAIQ,GAAGR,EAAIY,GAAG6a,EAAEK,mBAAmB7b,EAAG,OAAO,CAACG,YAAY,SAAS,CAACJ,EAAIQ,GAAGR,EAAIY,GAAG6a,EAAEM,WAAa,KAAK,MAAON,EAAQ,OAAExb,EAAG,OAAO,CAACD,EAAIQ,GAAG,aAAaR,EAAIS,UAAU,IAAG,KAAKR,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,yBAAyB8E,QAAQ,WAAY3F,EAAIkR,SAAS5N,SAAS,WAAWrD,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,WAAW,CAACM,MAAM,CAAC,MAAQ,GAAG,MAAQP,EAAIkR,SAAS,YAAW,GAAMpI,MAAM,CAACvH,MAAOvB,EAAIuB,MAAa,QAAEwH,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIuB,MAAO,UAAWyH,EAAI,EAAEvH,WAAW,oBAAoB,KAAKxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,IAAI,CAACmB,WAAW,CAAC,CAACC,KAAK,YAAYC,QAAQ,sBAAsBC,MAAM,CAAGya,OAAO,GAAQva,WAAW,kBAAkBwa,IAAI,YAAY7b,YAAY,UAAU8I,SAAS,CAAC,UAAYlJ,EAAIY,GAAGZ,EAAIa,GAAG,qBAAqBZ,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,gCAAgC,WAAWZ,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,WAAW,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,kBAAkBiI,MAAM,CAACvH,MAAOvB,EAAIuB,MAAoB,eAAEwH,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIuB,MAAO,iBAAkByH,EAAI,EAAEvH,WAAW,2BAA2B,KAAKxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,WAAW,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,iBAAiBiI,MAAM,CAACvH,MAAOvB,EAAIuB,MAAkB,aAAEwH,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIuB,MAAO,eAAgByH,EAAI,EAAEvH,WAAW,yBAAyB,MACn1D,EACI,GAAkB,GCJlB,GAAS,WAAkB,IAAIzB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,QAAQ,CAACG,YAAY,YAAYG,MAAM,CAAC,IAAM,8BAA8B,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIkc,kBAAkBjc,EAAG,MAAM,CAACG,YAAY,iBAAiB0B,MAAM,CAAE,cAAe9B,EAAIgQ,QAAS,SAAYhQ,EAAIiD,WAAY,CAAChD,EAAG,SAAS,CAACG,YAAY,eAAeG,MAAM,CAAC,GAAKP,EAAIiQ,KAAK,SAAWjQ,EAAIiD,UAAUiG,SAAS,CAAC,MAAQlJ,EAAIuB,OAAOL,GAAG,CAAC,OAAS,SAASQ,GAAQ1B,EAAI+H,MAAM,QAASrG,EAAOoK,OAAOvK,MAAMqN,WAAW,IAAI,CAAE5O,EAAe,YAAEC,EAAG,SAAS,CAACM,MAAM,CAAC,SAAW,IAAI2I,SAAS,CAAC,MAAQ,OAAO,CAAClJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAImL,aAAa,OAAOnL,EAAIS,KAAKT,EAAI2G,GAAI3G,EAAS,OAAE,SAASsM,GAAQ,OAAOrM,EAAG,SAAS,CAACI,IAAIiM,EAAO/K,MAAM2H,SAAS,CAAC,MAAQoD,EAAO/K,MAAM,SAAW+K,EAAO/K,QAAUvB,EAAIuB,MAAQ,WAAa,KAAK,CAACvB,EAAIQ,GAAG,IAAIR,EAAIY,GAAG0L,EAAOtF,MAAM,MAAM,KAAI,QACr6B,EACI,GAAkB,GCmBtB,wBACA,yBAEA,OACA,OACA,YACA,YAEA,OACA,YACA,YAEA,OACA,WACA,8BAEA,aACA,YACA,YAEA,iBACA,iBACA,iBAEA,UACA,yBACA,0CACA,EACA,sBACA,uBACA,aAIA,KCvDyP,MCQrP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCjBhC,IACEvE,QAAS,CAEP,YAAA0Z,CAAcC,EAAOC,EAAS,GAC5B,OAAO,MAASC,KAAK,IAAOF,GAAS,aAAgBC,GAAS,QAChE,EACA,gBAAAE,CAAkBC,GAChB,GAAKA,EAGL,OAAO,MAASF,KAAK,IAAOE,GAAQ,OACtC,ICuFF,IACEnb,KAAM,cACN2G,WAAY,CAAEsS,cAAa,YAAU,YAAU,IAC/CtM,OAAQ,CAACyO,IACTlV,MAAO,CACLhG,MAAO,CACLyB,KAAMkL,OACNtG,UAAU,GAEZ8U,YAAa,CACX1Z,KAAMtF,MACN+J,QAAS,IAAM,KAGnBtF,KAAM,WACJ,MAAO,CACLyZ,eAAgB,GAEpB,EACAtZ,SAAU,CACRqa,oBAAqB,WACnB,IAAItY,EAAO/I,KACX,OAAO0B,EAAE4f,QAAQ5f,EAAE+R,OAAOzT,KAAKohB,aAAa,SAAU/c,GACpD,GAAIA,EAAEkd,QAAUld,EAAEmd,OAAQ,CAExB,IAAIvH,EAAMlR,EAAK8X,aAAa9X,EAAK9C,MAAMuZ,SAASvF,IAAK,CAAEwH,KAAM,IAC7D,GAAIpd,EAAEkd,QAAUtH,EAAM5V,EAAEkd,OACtB,OAAO,EAET,GAAIld,EAAEmd,QAAUvH,EAAM5V,EAAEmd,OACtB,OAAO,CAEX,CACA,OAAO,CACT,IAAI,CAAC,cAAe,CAAC,OACvB,EACA9S,iBAAkB,WAChB,IAAK1O,KAAKiY,gBACR,MAAO,GAGT,IAAI/K,EAAM,GACNnE,EAAO/I,KAgBX,OAfAA,KAAKiY,gBAAgBC,SAAQ,SAAUC,GACrC,IAAI5T,EAAM7C,EAAEO,KAAK8G,EAAK+F,OAAOsJ,OAAO,SAAUtW,GAC5C,OAAOA,EAAKuW,QAAUF,CACxB,IACW,MAAP5T,GACF2I,EAAIvM,KAAK,CAAC,GAAI4D,EAAI8T,MAAQ,IAAM9T,EAAI+T,KAAM,IAE9C,IAEIvP,EAAKwQ,gBACPxQ,EAAKwQ,eAAerB,SAAQ,SAAUsB,GACpCtM,EAAIvM,KAAK6Y,EACX,IAGKtM,CACT,EACA0I,SAAU,WACR,OAAOlU,EAAE4f,QAAQ5f,EAAE+R,OAAO/R,EAAEoZ,IAAI9a,KAAK8G,OAAOlF,MAAM8f,cAAc,SAAUrd,GACxE,MAAO,CAAE4B,MAAO5B,EAAE0B,KAAM2F,KAAMrH,EAAE0B,KAAKsE,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,IAC3E,KAAI,SAAUhG,GACZ,MAAmB,eAAZA,EAAE4B,KACX,KAAI,SAAU5B,GACZ,OAAOA,EAAEqH,IACX,GACF,EACAiW,YAAa,WACX,MAA6B,OAAtB3hB,KAAKsH,MAAMC,MACpB,GAEF2G,MAAO,CACLoS,eAAgB,SAAUjc,GAExBrE,KAAKiG,MAAMqa,eAAiBjc,CAC9B,GAEFmI,QAAS,WACHxM,KAAKqhB,qBAAuBrhB,KAAKqhB,oBAAoBrZ,OAAS,IAChEhI,KAAKsgB,eAAiBtgB,KAAKqhB,oBAAoB,GAAGjB,YAEtD,GCvLsI,MCQtI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI1b,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,gDAAgD,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,KAAKG,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,4BAA4BZ,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,gBAAgB,CAACG,YAAY,iBAAiBG,MAAM,CAAC,oBAAoBP,EAAIgK,qBAAqB,GAAG/J,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,mCAAmCZ,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,WAAW,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAerB,YAAY,QAAQG,MAAM,CAAC,KAAOP,EAAIa,GAAG,6BAA6B,YAAYb,EAAIoK,OAAOC,IAAI,sBAAsB,KAAO,qBAAqB,gBAAgB,QAAQ,KAAO,IAAIvB,MAAM,CAACvH,MAAOvB,EAAIuB,MAAMoQ,QAAc,OAAE5I,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIuB,MAAMoQ,QAAS,SAAU3I,EAAI,EAAEvH,WAAW,2BAA2B,KAAKxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,WAAW,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,oBAAsBE,WAAW,wBAAwBrB,YAAY,aAAaG,MAAM,CAAC,KAAOP,EAAIa,GAAG,uBAAuB,KAAO,eAAe,gBAAgB,QAAQ,YAAYb,EAAIoK,OAAOC,IAAI,gBAAgB,KAAO,IAAIvB,MAAM,CAACvH,MAAOvB,EAAIuB,MAAMoQ,QAAe,QAAE5I,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIuB,MAAMoQ,QAAS,UAAW3I,EAAI,EAAEvH,WAAW,4BAA4B,GAAGxB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,WAAW,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAerB,YAAY,aAAaG,MAAM,CAAC,KAAOP,EAAIa,GAAG,oBAAoB,YAAYb,EAAIoK,OAAOC,IAAI,aAAa,KAAO,YAAY,gBAAgB,QAAQ,KAAO,IAAIvB,MAAM,CAACvH,MAAOvB,EAAIuB,MAAMoQ,QAAY,KAAE5I,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIuB,MAAMoQ,QAAS,OAAQ3I,EAAI,EAAEvH,WAAW,yBAAyB,KAAKxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,WAAW,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,QAAUE,WAAW,YAAYrB,YAAY,aAAaG,MAAM,CAAC,KAAOP,EAAIa,GAAG,qBAAqB,YAAYb,EAAIoK,OAAOC,IAAI,cAAc,KAAO,aAAa,gBAAgB,SAASvB,MAAM,CAACvH,MAAOvB,EAAIuB,MAAMoQ,QAAa,MAAE5I,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIuB,MAAMoQ,QAAS,QAAS3I,EAAI,EAAEvH,WAAW,0BAA0B,KAAKxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,WAAW,CAACG,YAAY,aAAaG,MAAM,CAAC,KAAOP,EAAIa,GAAG,2BAA2B,YAAYb,EAAIoK,OAAOC,IAAI,cAAc,KAAO,cAAcvB,MAAM,CAACvH,MAAOvB,EAAIuB,MAAMoQ,QAAa,MAAE5I,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIuB,MAAMoQ,QAAS,QAAS3I,EAAI,EAAEvH,WAAW,0BAA0B,MAC71F,EACI,GAAkB,GCoFpB,IACEJ,KAAM,cACN2G,WAAY,CAAE0M,SAAQ,iBAAe,IACrCnN,MAAO,CACLhG,MAAO,CACLyB,KAAMkL,OACNtG,UAAU,IAGd,IAAAzF,GACE,MAAO,CACLoR,gBAAiB,CAAC,qBAAsB,eAAgB,aAE5D,EACAjR,SAAU,CACR0H,iBAAkB,WAChB,IAAK1O,KAAKiY,gBACR,MAAO,GAGT,IAAI/K,EAAM,GACNnE,EAAO/I,KAgBX,OAfAA,KAAKiY,gBAAgBC,SAAQ,SAAUC,GACrC,IAAI5T,EAAM7C,EAAEO,KAAK8G,EAAK+F,OAAOsJ,OAAO,SAAUtW,GAC5C,OAAOA,EAAKuW,QAAUF,CACxB,IACW,MAAP5T,GACF2I,EAAIvM,KAAK,CAAC,GAAI4D,EAAI8T,MAAQ,IAAM9T,EAAI+T,KAAM,IAE9C,IAEIvP,EAAKwQ,gBACPxQ,EAAKwQ,eAAerB,SAAQ,SAAUsB,GACpCtM,EAAIvM,KAAK6Y,EACX,IAGKtM,CACT,IC5HoI,MCQtI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIxI,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,sDAAsD,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,KAAKG,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8BZ,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,mCAAqCb,EAAIuB,MAAMoQ,QAAQ2C,MAAspBtU,EAAIS,KAAnpBR,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8BZ,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,WAAW,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,QAAUE,WAAW,YAAYrB,YAAY,aAAaG,MAAM,CAAC,KAAOP,EAAIa,GAAG,qBAAqB,YAAYb,EAAIoK,OAAOC,IAAI,cAAc,KAAO,cAAcvB,MAAM,CAACvH,MAAOvB,EAAa,UAAE+I,SAAS,SAAUC,GAAMhJ,EAAIkd,UAAUlU,CAAG,EAAEvH,WAAW,gBAAgB,GAAGxB,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,iBAAiB,cAAc,SAASK,GAAG,CAAC,MAAQlB,EAAImd,eAAe,KAAcld,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwBZ,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAmB,gBAAEC,EAAG,iBAAiB,CAACM,MAAM,CAAC,mBAAmBP,EAAIod,mBAAmBnd,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,YAAY,GAAGA,EAAG,MAAM,CAACG,YAAY,eAAe,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,oBAAoB,UAAU,KAAKZ,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwBZ,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,mBAAmB,cAAc,UAAU,KAAO,YAAYK,GAAG,CAAC,QAAUlB,EAAIqd,YAAY,MAC73D,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIrd,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,mBAAmBJ,EAAI2G,GAAI3G,EAAIsd,gBAAyB,WAAE,SAASC,EAAS7P,GAAG,OAAOzN,EAAG,kBAAkB,CAACI,IAAIqN,EAAEnN,MAAM,CAAC,SAAWgd,IAAW,IAAG,EAC3O,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIvd,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,OAAO,CAACM,MAAM,CAAC,GAAK,WAAaP,EAAIiQ,KAAK,OAAS,OAAO,OAASjQ,EAAIud,SAAS9gB,KAAKyE,GAAG,CAAC,OAAS,SAASQ,GAAgC,OAAxBA,EAAOkL,iBAAwB5M,EAAIwd,KAAKzV,MAAM,mBAAoBrG,EAAO,IAAI,CAAC1B,EAAI2G,GAAI3G,EAAIud,SAAmB,YAAE,SAASE,EAAU5W,GAAO,OAAO5G,EAAG,QAAQ,CAACI,IAAIwG,EAAMtG,MAAM,CAAC,KAAO,SAAS,KAAOkd,EAAUpc,MAAM6H,SAAS,CAAC,MAAQuU,EAAUlc,QAAQ,IAAGtB,EAAG,QAAQ,CAAC8C,MAAO,mBAAqB/C,EAAIud,SAASG,IAAM,6BAA8Bnd,MAAM,CAAC,KAAO,SAAS,MAAQ,OAAO,IAC9lB,EACI,GAAkB,GCmCpB,IACEc,KAAM,kBACNkG,MAAO,CACLgW,SAAU,CACRva,KAAMkL,OACNtG,UAAU,IAGdzF,KAAM,WACJ,MAAO,CAEP,CACF,EACAM,QAAS,CAET,GCpD0I,MCQ1I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCW9B,IACEpB,KAAM,iBACN2G,WAAY,CAAE2V,gBAAe,IAC7BpW,MAAO,CACL+V,gBAAiB,CACfta,KAAMkL,OACNtG,UAAU,KCpC2H,MCQzI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC6D9B,IACEvG,KAAM,cACN2G,WAAY,CAAE4V,UAAS,iBAAgB,YAAU,WAAS,IAC1DrW,MAAO,CACLhG,MAAO,CACLyB,KAAMkL,OACNtG,UAAU,GAEZiT,KAAM,CACJ7X,KAAMwE,OACNC,QAAS,KAGbtF,KAAM,WACJ,MAAO,CACL0b,cAAe,KACfT,gBAAiB,KACjBF,UAAW,GACXY,WAAW,EAEf,EACAxb,SAAU,CACR0H,iBAAkB,WAChB,MAAO,EACT,EACA+T,YAAa,WACX,MAAO,GAAGziB,KAAK8G,OAAOlF,MAAM+G,SAAS+Z,eAAiB1iB,KAAK8G,OAAOlF,MAAMM,aAAaygB,SAAS,IAChG,EACAC,WAAY,WACV,MAAO,GAAG5iB,KAAK8G,OAAOlF,MAAM+G,SAAS+Z,eAAiB1iB,KAAK8G,OAAOlF,MAAMM,aAAa2gB,eAAe,IACtG,EACAC,UAAW,WACT,MAAO,GAAG9iB,KAAK8G,OAAOlF,MAAM+G,SAAS+Z,eAAiB1iB,KAAK8G,OAAOlF,MAAMM,aAAa6gB,cAAc,IACrG,EACAC,WAAY,WACV,MAAO,GAAGhjB,KAAK8G,OAAOlF,MAAM+G,SAAS+Z,eAAiB1iB,KAAK8G,OAAOlF,MAAMM,aAAa+gB,eAAe,IACtG,GAEFzW,QAAS,WACP,MAAMzD,EAAO/I,KACbA,KAAK2iB,SAAS3iB,KAAKkjB,MAAMljB,KAAKiG,QAE9BjG,KAAKkiB,KAAKiB,IAAI,oBAAoB,SAAU/O,GAC1CrL,EAAKyZ,WAAY,EACjBpO,EAAM5D,OAAO4S,QACf,GACF,EACAC,cAAeC,iBACbtjB,KAAKkiB,KAAKqB,KAAK,qBACVvjB,KAAKwiB,WAAaxiB,KAAKuiB,qBACpBviB,KAAKwjB,OAAOxjB,KAAKuiB,cAE3B,EACApb,QAAS,CACP0a,WAAY,WACV,MAAM9Y,EAAO/I,KACbA,KAAKyY,WAAWC,cAAcnV,MAAK,SAAUsD,IAC9B,IAATA,GACFkC,EAAK9C,MAAMoQ,QAAQ2C,MAAQjQ,EAAK6Y,UAChC7Y,EAAK9C,MAAMwd,gBAAiB,EAC5B1a,EAAK4Z,SAAS5Z,EAAKma,MAAMna,EAAK9C,SAE9B5F,OAAO2R,SAAS,EAAG,EAEvB,GACF,EACA+P,QAAS,WACP,MAAMhZ,EAAO/I,KACb,IAAI0jB,EAAM1jB,KAAKkjB,MAAMljB,KAAKiG,OAC1BjG,KAAK2jB,YAAY,OAAQ3jB,KAAKyiB,YAAaiB,GACxCngB,MAAKgS,IACJxM,EAAKwZ,cAAgBhN,EAAQgN,cAC7BxZ,EAAK6a,eAAerO,EAAQgN,cAAa,IAE1Cje,OAAMkR,IAAa5R,QAAQC,IAAI,sBAAuB6f,EAAG,GAC9D,EACAf,SAAU,SAAUe,GAClB,MAAM3a,EAAO/I,KACbA,KAAK2jB,YAAY,OAAQ3jB,KAAKyiB,YAAaiB,GACxCngB,MAAKgS,IACJxM,EAAKwZ,cAAgBhN,EAAQgN,cAC7BxZ,EAAK9B,QAAQsO,EAAQgN,cAAa,IAEnCje,OAAMkR,IAAa5R,QAAQC,IAAI,sBAAuB6f,EAAG,GAC9D,EACAzc,QAAS,SAAUsb,GACjB,MAAMxZ,EAAO/I,KACbA,KAAK2jB,YAAY,MAAO,GAAG3jB,KAAK4iB,aAAaL,KAAiBviB,KAAKuf,QAAQvf,KAAK8G,OAAOlF,MAAMmF,YAC1FxD,MAAKgS,IACJxM,EAAK+Y,gBAAkBvM,KAExBjR,OAAMkR,IACL5R,QAAQC,IAAI,kCAAmC2R,EAAO,GAE5D,EACAoO,eAAgB,SAAUrB,GACxB,MAAMxZ,EAAO/I,KACb+I,EAAKyZ,WAAY,EACjBxiB,KAAK2jB,YAAY,OAAQ,GAAG3jB,KAAKgjB,aAAaT,KAC3Chf,MAAKgS,IACJxM,EAAK+Y,gBAAkBvM,EACvBxM,EAAK8a,QAAQljB,KAAK,CAChBoF,KAAM,aACN+d,OAAQ,CACN5f,OAAQ,UACRqe,cAAeA,EACfhD,KAAMvf,KAAKuf,OAEd,IAEFjb,OAAMkR,IACLzM,EAAKyZ,WAAY,EACjB5e,QAAQC,IAAI,0BAA2B2R,EAAO,GAEpD,EACAgO,OAAQF,eAAgBf,SAChBviB,KAAKgJ,MAAMiE,OAAO,GAAGjN,KAAK8iB,YAAYP,IAC9C,EACAW,MAAO,SAAUa,GACf,MAAO,CACL/K,MAAQ+K,EAAI1N,QAAQ2C,OAA+B,KAAtB+K,EAAI1N,QAAQ2C,MAAgB+K,EAAI1N,QAAQ2C,MAAQ,4BAC7EzR,OAAQwc,EAAIvE,SAASwE,eAAeC,cACpCC,MAAOH,EAAIG,MACXhO,KAAM6N,EAAI1N,QAAQH,KAClB6D,QAASgK,EAAI1N,QAAQ0D,QACrBd,MAAO8K,EAAI1N,QAAQ4C,MACnBkL,OAAQJ,EAAI1N,QAAQ8N,OACpBC,QAASL,EAAI1N,QAAQ+N,QACrBC,YAAaN,EAAIvE,SAASvF,IAC1BnB,UAAWiL,EAAIvE,SAAS1G,UACxBC,SAAUgL,EAAIvE,SAASzG,SACvBiL,eAAgBD,EAAIvE,SAASwE,eAAeC,cAC5CK,sBAAuBP,EAAIN,eAC3Bc,sBAAuBR,EAAIS,aAC3BC,QAASV,EAAIU,QACbrM,MAAO,CACL,CACEsM,MAAO,EACPC,KAAMZ,EAAIzD,iBAIlB,IC9NoI,MCQtI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC8B9B,IACEva,KAAM,OACN2G,WAAY,CAAE4V,UAAS,UAAS,IAChC5P,OAAQ,CAACkS,IACT3Y,MAAO,CACL4Y,KAAM,CACJnd,KAAMwE,OACNC,QAAS,KAGb,IAAAtF,GACE,MAAO,CACLwY,SAAU,CACRG,SAAU,CACR1G,UAAW,GACXC,SAAU,GACVkB,IAAK,GACL+J,eAAgB,MAElB3N,QAAS,CACP8N,OAAQ,GACRC,QAAS,GACTlO,KAAM,GACN8C,MAAO,GACPC,MAAO,IAETwL,QAAS,GACThB,gBAAgB,EAChBe,cAAc,EACdN,MAAO,MAETrZ,MAAO,CAAC,GAAO,GAAS,GAAS,IACjCD,YAAa,EAEbka,eAAgB,GAChBC,mBAAoB,GACpBC,oBAAqB,GACrB1F,gBAAiB,GAErB,EACAtY,SAAU,CACRie,eAAgB,WACd,MAAO,GAAGjlB,KAAK8G,OAAOlF,MAAM+G,SAAS+Z,eAAiB1iB,KAAK8G,OAAOlF,MAAMM,aAAagjB,YAAY,IACnG,EACA3F,KAAM,WACJ,MAAM4F,EAASnlB,KAAKC,OAAOmlB,MAAMD,OACjC,OAAQA,GAAU,WAAa,IAAME,KAAKrlB,KAAKqf,SAAShJ,QAAQ2C,MAClE,GAEF9K,MAAO,CACLmR,SAAU,CACRiG,MAAM,EACNC,QAAS,SAAUlhB,GACZA,EAAE8U,OACL9U,EAAE8U,KAAO,MAGX,MAAM9D,EAAMhR,EAAEgS,QAAQ+N,QAKtB,GAJmB,IAAf/O,EAAIrN,QAAiBqN,IAAQrV,KAAK8kB,gBAAkBzgB,EAAEmb,SAASwE,iBAAmBhkB,KAAKglB,qBACzFhlB,KAAKwlB,gBAAgBnQ,GAGJ,IAAfA,EAAIrN,QAAgBhI,KAAK+kB,qBAAuB1P,EAAK,CACvD,IAAItM,EAAO/I,KACXA,KAAKoV,YAAYC,EAAKrV,MAAMiE,IAC1B8E,EAAKsW,SAAShJ,QAAQH,KAAsC,OAA/BnN,EAAKjC,OAAOlF,MAAMmF,SAAoB9C,EAASP,KAAK+hB,OAASxhB,EAASP,KAAKgiB,UAE1G1lB,KAAK+kB,mBAAqB1P,CAC5B,CACF,GAEFzK,YAAa,SAAUuD,GACrBnO,KAAK6jB,QAAQxZ,QAAQ,CAAEtE,KAAM/F,KAAKC,OAAO8F,KAAM+d,OAAQ,CAAEe,MAAO1W,EAAM,GAAGmF,cAAgBhP,OAAM,QACjG,GAEFkI,QAAS,WACPxM,KAAK2lB,iBACL,MAAMR,EAASnlB,KAAKC,OAAOmlB,MAAMD,OAElB,aAAXA,GAEFnlB,KAAK4lB,iBAGQ,YAAXT,GAEFnlB,KAAK6lB,kBAGF7lB,KAAK6kB,MAAsB,MAAd7kB,KAAK6kB,OACjB7kB,KAAKC,OAAOC,KAAKgB,QAAQ,gBAAkB,EAC7ClB,KAAK6jB,QAAQxZ,QAAQ,iBAAiB/F,OAAM,SAE5CtE,KAAK6jB,QAAQxZ,QAAQ,sBAAsB/F,OAAM,SAGvD,EACA6C,QAAS,CACPqe,gBAAiB,SAAUpB,GACzB,MAAM0B,EAAQ,CAA2C,OAA1C9lB,KAAKqf,SAASG,SAASwE,eAA0B,OAAS,OACnEpO,EAAWlU,EAAE4f,QAAQ5f,EAAE+R,OAAOzT,KAAK8G,OAAOlF,MAAM8f,cAAc,SAAUrd,GAC5E,OAAOA,EAAEyR,SAAS5U,QAAQkjB,IAAY,CACxC,IAAI,CAAC,YAAa,CAAC0B,IAEnB9lB,KAAKqf,SAASoF,QAAU7O,EAAS5N,OAAS,EAAI4N,EAAS,GAAG7P,KAAO,GACjE/F,KAAK8kB,eAAiBV,EACtBpkB,KAAKglB,oBAAsBhlB,KAAKqf,SAASG,SAASwE,cACpD,EACA2B,eAAgB,WACd,MAAM5c,EAAO/I,KACbA,KAAK2jB,YAAY,MAAO3jB,KAAKilB,gBAAgB1hB,MAAKsD,IAChDkC,EAAKuW,gBAAkBzY,KACtBvC,OAAMyhB,IACPniB,QAAQC,IAAI,4BAA6BkiB,EAAI,GAEjD,EACA5a,OAAQ,WACN,IAAIpC,EAAO/I,KACXA,KAAKmS,MAAM6T,aAAavN,WAAWC,cAAcnV,MAAK,SAAUsD,IACjD,IAATA,EACFkC,EAAKkd,gBAEL5lB,OAAO2R,SAAS,EAAG,EAEvB,GACF,EACA5G,OAAQ,WACN/K,OAAO2R,SAAS,EAAG,GACnBhS,KAAK4K,YAAcgR,KAAKuB,IAAInd,KAAK4K,YAAc,EAAG,EACpD,EACAqb,cAAe,WACb5lB,OAAO2R,SAAS,EAAG,GACfhS,KAAK4K,aAAe5K,KAAK6K,MAAM7C,OAAS,IAG1ChI,KAAK4K,aAAe5K,KAAK4K,YAAc,GAAK5K,KAAK6K,MAAM7C,OAE3D,EACAwD,mBAAoB,SAAUD,GACxBA,EAAQvL,KAAK4K,aAAeW,GAAS,IACvClL,OAAO2R,SAAS,EAAG,GACnBhS,KAAK4K,YAAcW,EAEvB,EACA2a,YAAa,SAAU3L,GACrB,IAAIpF,EAAK,GACLoF,EAAM7W,MACR6W,EAAM7W,KAAKwU,SAAQ1U,GAAK2R,EAAGxU,KAAK,CAAC,GAAIX,KAAKmmB,QAAQ3iB,EAAEmhB,MAAO,OAG7D3kB,KAAKmS,MAAM6T,aAAazM,eAAiBpE,CAC3C,EACAyQ,eAAgB,WACd5lB,KAAKqf,SAAW,CACdG,SAAU,CACR1G,UAAW9Y,KAAK8G,OAAOlF,MAAM+J,YAAYmN,UACzCC,SAAU/Y,KAAK8G,OAAOlF,MAAM+J,YAAYoN,SACxCkB,IAAKja,KAAK8G,OAAOlF,MAAM+J,YAAYsO,IACnC+J,eAAgBhkB,KAAK8G,OAAOlF,MAAM+J,YAAYqY,gBAEhD3N,QAAS,CACP8N,OAAQnkB,KAAK8G,OAAOlF,MAAM+J,YAAYqK,cACtCoO,QAASpkB,KAAK8G,OAAOlF,MAAM+J,YAAYyY,QACvClO,KAAMlW,KAAK8G,OAAOlF,MAAM+J,YAAYuK,KACpC8C,MAAOhZ,KAAK8G,OAAOlF,MAAM+J,YAAYqN,MACrCC,MAAOjZ,KAAK8G,OAAOlF,MAAM+J,YAAY2N,YACrCS,QAAS/Z,KAAK8G,OAAOlF,MAAM+J,YAAYoO,SAEzCmK,MAAOlkB,KAAK8G,OAAOlF,MAAMwkB,WAE7B,EACAP,gBAAiB,WACf7lB,KAAKqf,SAAW,CACdG,SAAU,CACR1G,UAAW9Y,KAAK8G,OAAOlF,MAAM2H,QAAQuP,UACrCC,SAAU/Y,KAAK8G,OAAOlF,MAAM2H,QAAQwP,SACpCkB,IAAKja,KAAK8G,OAAOlF,MAAM2H,QAAQ0Q,IAC/B+J,eAAgBhkB,KAAK8G,OAAOlF,MAAM2H,QAAQya,gBAE5C3N,QAAS,CACP8N,OAAQnkB,KAAK8G,OAAOlF,MAAM2H,QAAQyM,cAClCoO,QAASpkB,KAAK8G,OAAOlF,MAAM2H,QAAQ6a,QACnClO,KAAMlW,KAAK8G,OAAOlF,MAAM2H,QAAQ2M,KAChC8C,MAAOhZ,KAAK8G,OAAOlF,MAAM2H,QAAQyP,MACjCC,MAAOjZ,KAAK8G,OAAOlF,MAAM2H,QAAQ+P,YACjCS,QAAS/Z,KAAK8G,OAAOlF,MAAM2H,QAAQwQ,SAErCmK,MAAOlkB,KAAK8G,OAAOlF,MAAM2H,QAAQC,UAErC,IC9O6H,MCQ/H,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI9E,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,uCAAuC,CAACH,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,MAAM,CAACG,YAAY,uCAAuC,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,eAAeG,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAAiB,YAAfP,EAAIR,OAAsBS,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,gCAAgD,WAAfb,EAAIR,OAAqBS,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+C,YAAfb,EAAIR,OAAsBS,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,yBAAyBZ,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,oCAAmD,WAAdb,EAAIR,OAAqBS,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,iBAAiB,WAA0B,UAAdb,EAAIR,OAAoBS,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,IAAI,CAACmB,WAAW,CAAC,CAACC,KAAK,YAAYC,QAAQ,sBAAsBC,MAAM,CAAGya,OAAO,GAAQva,WAAW,kBAAkBwa,IAAI,YAAY/S,SAAS,CAAC,UAAYlJ,EAAIY,GAAGZ,EAAIa,GAAG,uBAAsC,WAAdb,EAAIR,OAAqBS,EAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,IAAI,CAACmB,WAAW,CAAC,CAACC,KAAK,YAAYC,QAAQ,sBAAsBC,MAAM,CAAGya,OAAO,GAAQva,WAAW,kBAAkBwa,IAAI,YAAY/S,SAAS,CAAC,UAAYlJ,EAAIY,GAAGZ,EAAIa,GAAG,sBAAuBb,EAAW,QAAEC,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,IAAI,CAACmB,WAAW,CAAC,CAACC,KAAK,YAAYC,QAAQ,sBAAsBC,MAAM,CAAGya,OAAO,GAAQva,WAAW,kBAAkBwa,IAAI,YAAY/S,SAAS,CAAC,UAAYlJ,EAAIY,GAAGZ,EAAIa,GAAG,2BAA2BZ,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,CAACG,YAAY,OAAOG,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,wBAAwB,cAAc,WAAW,KAAO,aAAaK,GAAG,CAAC,SAAWlB,EAAI2hB,aAAa,KAAK3hB,EAAIS,KAAMT,EAAI4hB,OAAO,YAAa3hB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,yBAAyB,WAAWb,EAAIS,KAAMT,EAAI4hB,OAAO,WAAY3hB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwB,WAAWb,EAAIS,KAAKR,EAAG,WAAWA,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,IAAI,CAACG,YAAY,oBAAoBG,MAAM,CAAC,KAAO,0CAA0C,OAAS,SAAS,IAAM,aAAa,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,+BACt7E,EACI,GAAkB,GCuFpB,IACEQ,KAAM,aACN2G,WAAY,CAAE4V,UAAS,GACvBrW,MAAO,CACL/H,OAAQ,CACNwD,KAAMwE,OACNC,QAAS,IAEXoW,cAAe,CACb7a,KAAMwE,OACNC,QAAS,IAEXoT,KAAM,CACJ7X,KAAMwE,OACNC,QAAS,KAGb,IAAAtF,GACE,MAAO,CACP,CACF,EACAG,SAAU,CACRuf,QAAS,WACP,OAAOvmB,KAAKsmB,OAAO,YAActmB,KAAKuiB,eAA+C,KAA9BviB,KAAKuiB,cAAcva,MAC5E,EACAwe,SAAU,WACR,GAAIxmB,KAAKuf,KAAM,CACb,MAAM3c,EAAQ5C,KAAKuf,KAAK3c,MAAM,KAC9B,GAAqB,IAAjBA,EAAMoF,QAAgBpF,EAAM,GAAGoF,OAAS,EAC1C,OAAOrF,KAAKC,EAAM,GAEtB,CACA,MAAO,EACT,GAEF4J,QAAS,WACP,GAAIxM,KAAKsmB,OAAO,cAAgC,YAAhBtmB,KAAKkE,QAAwC,YAAhBlE,KAAKkE,QAAuB,CACvF,MAAMuiB,EAA6B,YAAhBzmB,KAAKkE,OAAwB,UAAY,OAExDlE,KAAKwmB,UACPjlB,eAAekC,QAAQ,QAASzD,KAAKwmB,UAGvCxmB,KAAK6jB,QAAQljB,KAAK,CAAEoF,KAAM,QAASqf,MAAO,CAAEzb,QAAS8c,IACvD,CACF,EACAtf,QAAS,CACPuf,eAAgB,WACd,MAAO,GAAG1mB,KAAK8G,OAAOlF,MAAM+G,SAAS+Z,eAAiB1iB,KAAK8G,OAAOlF,MAAMM,aAAaykB,mBAAmB,IAC1G,EACAN,SAAU,WACRrmB,KAAK6jB,QAAQljB,KAAK,CAAEoF,KAAM,SAAUqf,MAAO,CAAEwB,IAAK5mB,KAAKuiB,gBACzD,EACA+D,OAAQ,SAAU/G,GAChB,OAAQvf,KAAKuf,MAASvf,KAAKuf,KAAKre,QAAQqe,EAAO,MAAQ,CACzD,IChJ+H,MCQjI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI7a,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,MAAM,CAACG,YAAY,WAAWH,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,OAAO,CAACiJ,SAAS,CAAC,UAAYlJ,EAAIY,GAAGZ,EAAIa,GAAG,kDAC3Q,EACI,GAAkB,GCUpB,IACEQ,KAAM,QACN8gB,SAAU,YACV,IAAAhgB,GACE,MAAO,CACLigB,YAAa,CACXxc,IAAK,EACLvE,KAAM,GACNghB,iBAAkB,GAClBC,YAAa,GACbC,KAAM,GACN3mB,SAAU,GACV4mB,MAAO,GACPC,WAAY,GACZC,UAAW,CACTpM,IAAK,EACLG,MAAO,EACPC,KAAM,EACNiM,KAAM,EACNC,OAAQ,GAEVC,QAAS,CACPvM,IAAK,EACLG,MAAO,EACPC,KAAM,EACNiM,KAAM,EACNC,OAAQ,GAEVE,UAAU,EACVC,UAAW,EACXC,OAAQ,EACRC,qBAAsB,KACtB3R,cAAe,GACfoO,QAAS,GACTlO,KAAM,GACN0R,QAAS,CACP9O,UAAW,GACXC,SAAU,GACVC,MAAO,GACPC,MAAO,IAET4O,aAAc,GACdC,MAAO,8GACPC,WAAY,iHACZC,SAAU,GACVC,cAAe,GACfC,UAAW,GACXC,UAAU,EACVC,UAAU,EACVC,SAAU,GACVC,SAAU,GACV5gB,KAAM,GACN6gB,YAAa,GACbC,eAAgB,CACdC,mBAAoB,KACpBC,YAAa,MAEfxhB,UAAW,GAGjB,GCxE0I,MCQ1I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIxC,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,8BAA8B,CAAEJ,EAAW,QAAEC,EAAG,MAAM,CAACA,EAAG,QAAQ,CAACiB,GAAG,CAAC,KAAOlB,EAAI7D,SAAS,GAAG8D,EAAG,MAAM,CAACA,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,iBAAiB,CAACM,MAAM,CAAC,KAAOP,EAAI4G,QAAS5G,EAAkB,eAAEC,EAAG,eAAe,CAACM,MAAM,CAAC,SAAWP,EAAIikB,UAAU/iB,GAAG,CAAC,KAAOlB,EAAI7D,KAAK,KAAO6D,EAAIkP,QAAQlP,EAAIS,KAAMT,EAAkB,eAAEC,EAAG,eAAe,CAACM,MAAM,CAAC,SAAWP,EAAIikB,UAAU/iB,GAAG,CAAC,KAAOlB,EAAI7D,KAAK,KAAO6D,EAAIkP,QAAQlP,EAAIS,KAAMT,EAAkB,eAAEC,EAAG,eAAe,CAACM,MAAM,CAAC,SAAWP,EAAIikB,UAAU/iB,GAAG,CAAC,KAAOlB,EAAI7D,KAAK,KAAO6D,EAAIkP,QAAQlP,EAAIS,KAAMT,EAAgB,aAAEC,EAAG,aAAa,CAACM,MAAM,CAAC,SAAWP,EAAIikB,UAAU/iB,GAAG,CAAC,KAAOlB,EAAI7D,KAAK,KAAO6D,EAAIkP,QAAQlP,EAAIS,KAAMT,EAAiB,cAAEC,EAAG,cAAc,CAACM,MAAM,CAAC,SAAWP,EAAIikB,UAAU/iB,GAAG,CAAC,KAAOlB,EAAI7D,KAAK,KAAO6D,EAAIkP,QAAQlP,EAAIS,KAAMT,EAAa,UAAEC,EAAG,UAAU,CAACM,MAAM,CAAC,SAAWP,EAAIikB,UAAU/iB,GAAG,CAAC,KAAOlB,EAAI7D,KAAK,KAAO6D,EAAIkP,QAAQlP,EAAIS,KAAMT,EAAa,UAAEC,EAAG,UAAU,CAACiB,GAAG,CAAC,KAAOlB,EAAI7D,QAAQ6D,EAAIS,MAAM,UAC/mC,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,MAAM,CAACG,YAAY,SAASH,EAAG,MAAM,CAACG,YAAY,gBAAgB0B,MAAM9B,EAAIkkB,oBAAoB,CAACjkB,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,QAAQ,cAAc,WAAW,GAAGP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,wCAAwC,OAAOZ,EAAG,MAAM,CAACG,YAAY,OAAO0B,MAAM9B,EAAImkB,oBAAoB,CAAClkB,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,QAAQ,cAAc,WAAW,GAAGP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,wCAAwC,OAAOZ,EAAG,MAAM,CAACG,YAAY,OAAO0B,MAAM9B,EAAIokB,oBAAoB,CAACnkB,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,QAAQ,cAAc,WAAW,GAAGP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6B,OAAOZ,EAAG,MAAM,CAACG,YAAY,OAAO0B,MAAM9B,EAAIqkB,kBAAkB,CAACpkB,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,QAAQ,cAAc,WAAW,GAAGP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,4BAA4B,OAAOZ,EAAG,MAAM,CAACG,YAAY,gBAAgB0B,MAAM9B,EAAIskB,mBAAmB,CAACrkB,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,QAAQ,cAAc,WAAW,GAAGP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,gCAAgC,cACl6C,EACI,GAAkB,GC6CtB,wBACA,sBACA,OACA,MACA,YACA,cAGA,UACA,8BACA,iCACA,OACA,EACA,EACA,8BACA,iCACA,OACA,EACA,EACA,8BACA,iCACA,OACA,EACA,EACA,4BACA,+BACA,OACA,EACA,EACA,6BACA,gCACA,OACA,EACA,KChF+P,MCQ3P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIb,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,SAAS,CAACJ,EAAIM,GAAG,GAAGL,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,qCAAqC,SAASZ,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,wCAAwC,WAAWZ,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,iDAAiD,OAAOZ,EAAG,MAAM,CAACiJ,SAAS,CAAC,UAAYlJ,EAAIY,GAAGZ,EAAIa,GAAG,yCAAyCZ,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,eAAe,SAAU,EAAK,KAAO,gBAAgB,cAAc,SAASK,GAAG,CAAC,MAAQlB,EAAIukB,mBAAmB,cACnlC,EACI,GAAkB,CAAC,WAAY,IAAIvkB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,iBACzL,GCgDA,wBACA,aACA,yBACA,SACA,0BACA,kBACA,KCzDsP,MCQlP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIJ,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAQH,EAAiB,cAAEC,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,+CAA+CZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,0BAA0B,YAAYb,EAAIoK,OAAOC,IAAI,0BAA0B,KAAO,yBAAyB,UAAW,GAAMvB,MAAM,CAACvH,MAAOvB,EAAIwkB,cAAuB,UAAEzb,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIwkB,cAAe,YAAaxb,EAAI,EAAEvH,WAAW,8BAA8B,GAAGxB,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,yBAAyB,YAAYb,EAAIoK,OAAOC,IAAI,yBAAyB,KAAO,wBAAwB,UAAW,GAAMvB,MAAM,CAACvH,MAAOvB,EAAIwkB,cAAsB,SAAEzb,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIwkB,cAAe,WAAYxb,EAAI,EAAEvH,WAAW,6BAA6B,KAAKxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,uBAAuB,YAAYb,EAAIoK,OAAOC,IAAI,8BAA8B,KAAO,6BAA6B,UAAW,GAAMvB,MAAM,CAACvH,MAAOvB,EAAIwkB,cAA2B,cAAEzb,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIwkB,cAAe,gBAAiBxb,EAAI,EAAEvH,WAAW,kCAAkC,GAAGxB,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,4BAA8BE,WAAW,gCAAgClB,MAAM,CAAC,KAAOP,EAAIa,GAAG,wBAAwB,YAAYb,EAAIoK,OAAOC,IAAI,wBAAwB,KAAO,uBAAuB,UAAW,GAAMvB,MAAM,CAACvH,MAAOvB,EAAIwkB,cAAqB,QAAEzb,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIwkB,cAAe,UAAWxb,EAAI,EAAEvH,WAAW,4BAA4B,GAAGxB,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,qBAAqB,YAAYb,EAAIoK,OAAOC,IAAI,qBAAqB,KAAO,oBAAoB,UAAW,GAAMvB,MAAM,CAACvH,MAAOvB,EAAIwkB,cAAkB,KAAEzb,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIwkB,cAAe,OAAQxb,EAAI,EAAEvH,WAAW,yBAAyB,KAAKxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,6BAA6B,YAAYb,EAAIoK,OAAOC,IAAI,0BAA0B,KAAO,yBAAyB,UAAW,GAAMvB,MAAM,CAACvH,MAAOvB,EAAIwkB,cAAuB,UAAEzb,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIwkB,cAAe,YAAaxb,EAAI,EAAEvH,WAAW,8BAA8B,GAAGxB,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,iBAAmBE,WAAW,qBAAqBlB,MAAM,CAAC,KAAOP,EAAIa,GAAG,sBAAsB,YAAYb,EAAIoK,OAAOC,IAAI,sBAAsB,KAAO,qBAAqB,UAAW,GAAMvB,MAAM,CAACvH,MAAOvB,EAAIwkB,cAAmB,MAAEzb,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIwkB,cAAe,QAASxb,EAAI,EAAEvH,WAAW,0BAA0B,KAAKxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,aAAa,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,MAAQP,EAAIa,GAAG,0BAA0B,KAAO,yBAAyB,YAAYb,EAAIoK,OAAOC,IAAI,2BAA2BvB,MAAM,CAACvH,MAAOvB,EAAIwkB,cAAuB,UAAEzb,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIwkB,cAAe,YAAaxb,EAAI,EAAEvH,WAAW,8BAA8B,KAAKxB,EAAG,MAAM,CAACG,YAAY,8BAA8B,CAACH,EAAG,uBAAuB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,uBAAuB,MAAQb,EAAIykB,QAAQ,YAAW,GAAM3b,MAAM,CAACvH,MAAOvB,EAAIwkB,cAAoB,OAAEzb,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIwkB,cAAe,SAAUxb,EAAI,EAAEvH,WAAW,2BAA2B,KAAMzB,EAAc,WAAEC,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,iCAAiC,SAASZ,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,4BAA4B,YAAYb,EAAIoK,OAAOC,IAAI,iCAAiC,UAAW,EAAK,KAAO,gCAAgC,YAAcrK,EAAIa,GAAG,kCAAkCiI,MAAM,CAACvH,MAAOvB,EAAIwkB,cAA8B,iBAAEzb,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIwkB,cAAe,mBAAoBxb,EAAI,EAAEvH,WAAW,qCAAqC,GAAGxB,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,KAAK,YAAYb,EAAIoK,OAAOC,IAAI,gCAAgC,KAAO,+BAA+B,YAAcrK,EAAIa,GAAG,iCAAiCiI,MAAM,CAACvH,MAAOvB,EAAIwkB,cAA6B,gBAAEzb,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIwkB,cAAe,kBAAmBxb,EAAI,EAAEvH,WAAW,oCAAoC,KAAKzB,EAAIS,KAAMT,EAAc,WAAEC,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,8BAA8B,YAAYb,EAAIoK,OAAOC,IAAI,mCAAmC,UAAW,EAAK,KAAO,mCAAmCvB,MAAM,CAACvH,MAAOvB,EAAIwkB,cAAgC,mBAAEzb,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIwkB,cAAe,qBAAsBxb,EAAI,EAAEvH,WAAW,uCAAuC,KAAKzB,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,kBAAkB,CAACiB,GAAG,CAAC,KAAOlB,EAAI0kB,cAAc,KAAO1kB,EAAI2kB,kBAAkB,SAAS3kB,EAAIS,IACz0M,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAAEJ,EAAS,MAAEC,EAAG,QAAQ,CAACG,YAAY,4BAA4B,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIuD,OAAOvD,EAAIY,GAAGZ,EAAI4H,SAAW,IAAM,OAAO5H,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,gCAAgC0B,MAAM,CAAE,OAAU9B,EAAIgQ,UAAYhQ,EAAIwO,KAAM,cAAexO,EAAIgQ,SAAWhQ,EAAIwO,KAAM,oBAAqBxO,EAAI8V,YAAa,SAAY9V,EAAIiD,WAAY,CAAEjD,EAAW,QAAEC,EAAG,OAAO,CAACG,YAAY,iBAAiB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI+V,SAAS,OAAO/V,EAAIS,KAAKR,EAAG,SAAS,CAACmB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOvB,EAAO,IAAEyB,WAAW,QAAQlB,MAAM,CAAC,SAAWP,EAAIiD,UAAU/B,GAAG,CAAC,OAAS,SAASQ,GAAQ,IAAIsU,EAAgBtY,MAAMuY,UAAUlH,OAAOmH,KAAKxU,EAAOoK,OAAOvJ,SAAQ,SAAS4T,GAAG,OAAOA,EAAEjO,QAAQ,IAAGkO,KAAI,SAASD,GAAG,IAAI1M,EAAM,WAAY0M,EAAIA,EAAEE,OAASF,EAAE5U,MAAM,OAAOkI,CAAG,IAAIzJ,EAAIsW,IAAI5U,EAAOoK,OAAOyK,SAAWP,EAAgBA,EAAc,EAAE,IAAIhW,EAAI2G,GAAI3G,EAAIwW,WAAWxW,EAAIyW,MAAOzW,EAAI0W,OAAO,SAAS/W,EAAEkH,GAAO,OAAO5G,EAAG,SAAS,CAACI,IAAIwG,EAAMqC,SAAS,CAAC,MAAQvJ,IAAI,CAACK,EAAIQ,GAAG,IAAIR,EAAIY,GAAGjB,GAAG,MAAM,IAAG,GAAGM,EAAG,SAAS,CAACmB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOvB,EAAS,MAAEyB,WAAW,UAAUlB,MAAM,CAAC,SAAWP,EAAIiD,UAAU/B,GAAG,CAAC,OAAS,SAASQ,GAAQ,IAAIsU,EAAgBtY,MAAMuY,UAAUlH,OAAOmH,KAAKxU,EAAOoK,OAAOvJ,SAAQ,SAAS4T,GAAG,OAAOA,EAAEjO,QAAQ,IAAGkO,KAAI,SAASD,GAAG,IAAI1M,EAAM,WAAY0M,EAAIA,EAAEE,OAASF,EAAE5U,MAAM,OAAOkI,CAAG,IAAIzJ,EAAIyW,MAAM/U,EAAOoK,OAAOyK,SAAWP,EAAgBA,EAAc,EAAE,IAAIhW,EAAI2G,GAAI3G,EAAgB,cAAE,SAASL,EAAEkH,GAAO,OAAO5G,EAAG,SAAS,CAACI,IAAIwG,EAAMqC,SAAS,CAAC,MAAQvJ,EAAE4B,QAAQ,CAACvB,EAAIQ,GAAG,IAAIR,EAAIY,GAAGjB,EAAEqH,MAAM,MAAM,IAAG,GAAG/G,EAAG,SAAS,CAACmB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOvB,EAAQ,KAAEyB,WAAW,SAASlB,MAAM,CAAC,SAAWP,EAAIiD,UAAU/B,GAAG,CAAC,OAAS,SAASQ,GAAQ,IAAIsU,EAAgBtY,MAAMuY,UAAUlH,OAAOmH,KAAKxU,EAAOoK,OAAOvJ,SAAQ,SAAS4T,GAAG,OAAOA,EAAEjO,QAAQ,IAAGkO,KAAI,SAASD,GAAG,IAAI1M,EAAM,WAAY0M,EAAIA,EAAEE,OAASF,EAAE5U,MAAM,OAAOkI,CAAG,IAAIzJ,EAAI0W,KAAKhV,EAAOoK,OAAOyK,SAAWP,EAAgBA,EAAc,EAAE,IAAIhW,EAAI2G,GAAI3G,EAAe,aAAE,SAASL,EAAEkH,GAAO,OAAO5G,EAAG,SAAS,CAACI,IAAIwG,EAAMqC,SAAS,CAAC,MAAQvJ,IAAI,CAACK,EAAIQ,GAAG,IAAIR,EAAIY,GAAGjB,GAAG,MAAM,IAAG,MACxpE,EACI,GAAkB,GCkCtB,wBACA,kBACA,OACA,aACA,OACA,YACA,YAEA,SACA,YACA,YAEA,MACA,YACA,YAEA,UACA,WACA,cAEA,aACA,WACA,cAEA,OACA,mBACA,gBAEA,SACA,WACA,cAEA,QACA,UACA,aAEA,aACA,WACA,cAEA,UACA,WACA,eAGA,gBACA,OACA,MACA,WACA,8BAEA,EACA,UACA,wBACA,OACA,gDACA,iDACA,8CACA,8CACA,4CACA,6CACA,6CACA,+CACA,kDACA,gDACA,iDACA,iDAEA,EACA,uBAEA,IADA,SACA,2CACA,UAEA,QACA,EACA,uBACA,8BACA,GAEA,OACA,kBACA,gCACA,EACA,eACA,kBACA,EACA,iBACA,kBACA,EACA,gBACA,kBACA,GAEA,mBACA,yCACA,EACA,SACA,qCACA,MACA,EACA,oBACA,cACA,oCACA,CAEA,EADA,oBACA,YACA,kBACA,EAEA,SAEA,M,CAGA,cACA,+BACA,0BACA,mCAEA,EACA,uBACA,qBACA,wHACA,+B,KACA,CACA,qEACA,qB,CAEA,qEACA,qBACA,EACA,yBACA,QACA,iBAGA,EADA,gCACA,GACA,MACA,mBACA,GAEA,GAGA,GAIA,IADA,SACA,aACA,UAGA,QACA,EACA,uBACA,oCACA,KCjM2P,MCQvP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIK,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIuD,MAAM,MAAQvD,EAAI4kB,iBAAiB,SAAW5kB,EAAI4H,SAAS,WAAW5H,EAAIgQ,QAAQ,MAAQhQ,EAAIkI,SAAS,SAAWlI,EAAIiD,UAAU/B,GAAG,CAAC,MAAQ,SAASQ,GAAQ1B,EAAI+H,MAAM,QAASJ,OAAOjG,GAAQ,IACtU,EACI,GAAkB,GCetB,wBACA,4BACA,8BACA,OACA,OACA,YACA,YAEA,OACA,YACA,YAEA,OACA,WACA,8BAEA,iBACA,gBACA,kBAEA,UACA,oBACA,4CACA,EACA,sBACA,uBACA,aAIA,EACA,4BACA,sCACA,4CACA,GACA,KCpD4P,MCQxP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAk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AACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,oCAAoC,KAAKZ,EAAG,oBAAoB,CAACG,YAAY,OAAOG,MAAM,CAAC,KAAO,CAAC,MAAO,oBAAoB,OAAON,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACiJ,SAAS,CAAC,UAAYlJ,EAAIY,GAAGZ,EAAIa,GAAG,oDAAoDZ,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,mBAAmB,SAAU,EAAK,KAAO,gBAAgB,cAAc,UAAUK,GAAG,CAAC,OAASlB,EAAI0sB,oBAAoB,QACxzB,EACI,GAAkB,GCoCtB,wBACA,eACA,yBACA,SACA,2BACA,kBACA,KC5CwP,MCQpP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,WCyEhC,wBACA,2BACA,2IACA,OACA,IACA,YACA,aAGA,gBACA,OACA,cACA,gCACA,qCACA,aACA,cACA,cACA,cACA,cACA,aACA,aACA,eACA,eACA,eAEA,EACA,UACA,mBACA,mCACA,EACA,0BACA,0CACA,EACA,0BACA,0CACA,EACA,0BACA,0CACA,EACA,wBACA,wCACA,EACA,yBACA,yCACA,EACA,qBACA,qCACA,EACA,qBACA,qCACA,GAEA,iCACA,0BACA,mDACA,oBACA,MACA,Y,CAIA,UACA,EACA,SACA,0BACA,yEACA,EACA,2BACA,OACA,KACA,uCACA,kBACA,aACA,YACA,iBACA,QACA,WACA,YACA,aACA,SACA,mBACA,oBACA,mBACA,wBACA,kBACA,eACA,sBACA,gBACA,mBACA,kBACA,+BACA,qDACA,+BACA,oBACA,qBACA,2BACA,iBACA,eACA,oBACA,uBACA,oBACA,kCACA,qBACA,uBACA,oCACA,uBACA,yBACA,sBACA,wBACA,gBACA,iBACA,oBACA,eACA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qBACA,qCACA,EACA,qBACA,qCACA,GAEA,iCACA,sBAEA,0BACA,mDACA,oBACA,MACA,Y,CAIA,UACA,EACA,SACA,0BACA,yEACA,EACA,2BACA,eAEA,OADA,oBACA,CACA,KACA,wCACA,mCACA,kBACA,aACA,YACA,iBACA,QACA,WACA,YACA,aACA,SACA,YACA,oBACA,mBACA,wBACA,kBACA,eACA,sBACA,gBACA,mBACA,kBACA,+BACA,qDACA,+BACA,oBACA,qBACA,2BACA,iBACA,eACA,oBACA,uBACA,oBACA,kCACA,qBACA,uBACA,oCACA,4BACA,yBACA,sBACA,iBACA,gBACA,UACA,iBACA,uBACA,gBACA,eACA,eACA,yBACA,0BACA,YACA,wBACA,sBAEA,EACA,iBACA,gCACA,uBAEA,gCACA,YAEA,IACA,mBAEA,SACA,EACA,kBAEA,gCACA,uBAEA,gCACA,YAEA,IACA,aACA,6CACA,2CAEA,SACA,EACA,iBACA,+BACA,IACA,mBAEA,UACA,EACA,2BACA,OACA,gDACA,wGAEA,6CACA,OACA,eAEA,kBAEA,gBACA,kBACA,cACA,GACA,GACA,EACA,oCACA,sBACA,4BAEA,gCACA,IACA,4BAEA,oCACA,WAEA,gCAGA,kDAEA,KChTiQ,MCQ7P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI1sB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,gDAAgD,CAACH,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,KAAKG,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+BZ,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACmB,WAAW,CAAC,CAACC,KAAK,YAAYC,QAAQ,sBAAsBC,MAAM,CAAGya,OAAO,GAAQva,WAAW,kBAAkBwa,IAAI,YAAY7b,YAAY,WAAW8I,SAAS,CAAC,UAAYlJ,EAAIY,GAAGZ,EAAIa,GAAG,mCAAmCZ,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,qBAAqB,cAAc,UAAUK,GAAG,CAAC,OAASlB,EAAIyR,SAAS,GAAGxR,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,uBAAuB,cAAc,WAAWK,GAAG,CAAC,QAAUlB,EAAIswB,UAAU,GAAGrwB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,wBAAwB,cAAc,WAAWK,GAAG,CAAC,QAAUlB,EAAIswB,UAAU,OAAOrwB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,IAAI,CAACG,YAAY,oBAAoBG,MAAM,CAAC,KAAO,0CAA0C,OAAS,WAAW,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,+BACr2C,EACI,GAAkB,GCgDpB,IACEQ,KAAM,eACN8gB,SAAU,yBACVna,WAAY,CAAE4V,UAAS,GACvBnb,QAAS,CACPgP,KAAM,WACJnW,KAAK6jB,QAAQljB,KAAK,CAChBoF,KAAM,OACNqf,MAAO,CACLD,OAAQ,aAGd,EACA6P,MAAO,WACLzzB,eAAekC,QAAQ,QAASzD,KAAK8G,OAAOlF,MAAM+J,YAAYqN,OAC9DhZ,KAAK6jB,QAAQljB,KAAK,CAChBoF,KAAM,QACNqf,MAAO,CACLzb,QAAS,oBAGf,ICvEsI,MCQxI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIjF,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAGD,EAAIuwB,gBAAgB,CAAClqB,IAAI,OAC/F,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIrG,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,qDAAqD,CAACH,EAAG,MAAM,CAACG,YAAY,eAAeH,EAAG,MAAM,CAACG,YAAY,+BAA+B,CAACH,EAAG,MAAM,CAACG,YAAY,sCAAsC,CAACH,EAAG,MAAM,CAACG,YAAY,2CAA2C,CAACH,EAAG,MAAM,CAACG,YAAY,cAAcG,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,oCAAoC,SAASZ,EAAG,MAAM,CAACG,YAAY,8BAA8B,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,yCAAyC,WAAWZ,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,YAAY,CAACG,YAAY,yBAAyBG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,qCAAqC,cAAc,mBAAmBK,GAAG,CAAC,gBAAkBlB,EAAIwwB,aAAa,KAAKvwB,EAAG,MAAM,CAACG,YAAY,wCAAwC,CAACH,EAAG,MAAM,CAACG,YAAY,+BAA+B,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,CAAC,MAAO,YAAYN,EAAG,OAAO,CAACM,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,kDAAkDZ,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,kDAAkD,GAAGZ,EAAG,MAAM,CAACG,YAAY,+BAA+B,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,gBAAgBN,EAAG,OAAO,CAACM,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,kDAAkDZ,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,kDAAkD,GAAGZ,EAAG,MAAM,CAACG,YAAY,+BAA+B,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,CAAC,MAAO,gBAAgBN,EAAG,OAAO,CAACM,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,2CAA2CZ,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,2CAA2C,KAAKZ,EAAG,MAAM,CAACG,YAAY,8BAA8B,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,OAAO,CAACG,YAAY,KAAKG,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+B,WAAWZ,EAAG,MAAM,CAACG,YAAY,0BAA0B,CAACH,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,CAACG,YAAY,kCAAkCG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,8BAA8B,cAAc,2BAA2BK,GAAG,CAAC,wBAA0BlB,EAAIywB,iCAAiC,OAAOxwB,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAAEJ,EAAiB,cAAEC,EAAG,MAAM,CAACG,YAAY,qCAAqC,CAACH,EAAG,YAAY,GAAGD,EAAI2G,GAAI3G,EAAgB,cAAE,SAAS0wB,GAAU,OAAOzwB,EAAG,MAAM,CAACI,IAAIqwB,EAAS9qB,GAAGxF,YAAY,qCAAqC,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,SAAWmwB,MAAa,EAAE,KAAI,GAAK1wB,EAAI2wB,WAAc3wB,EAAI4wB,cAAiL5wB,EAAIS,KAAtKR,EAAG,MAAM,CAACG,YAAY,6BAA6B,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,6CAAuDb,EAAI6wB,mBAAqB7wB,EAAI4wB,cAAe3wB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,YAAY,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,sCAAsC,cAAc,YAAYK,GAAG,CAAC,SAAWlB,EAAI8wB,0BAA0B,KAAK9wB,EAAIS,KAAMT,EAAa,UAAEC,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,YAAY,CAACG,YAAY,kCAAkCG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,iCAAiC,cAAc,cAAcK,GAAG,CAAC,WAAalB,EAAI+wB,oBAAoB,KAAK/wB,EAAIS,QACrtH,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,aAAaG,MAAM,CAAC,MAAQP,EAAI0wB,SAASrvB,MAAMH,GAAG,CAAC,MAAQlB,EAAIgxB,iBAAiB,CAAC/wB,EAAG,UAAU,CAACM,MAAM,CAAC,QAAUP,EAAIixB,WAAW,KAAOjxB,EAAIa,GAAG,4BAA4BZ,EAAG,UAAU,CAACM,MAAM,CAAC,QAAUP,EAAIkxB,aAAa,KAAOlxB,EAAIa,GAAG,8BAA8BZ,EAAG,MAAM,CAACG,YAAY,MAAM2C,MAAO/C,EAAc,aAAIC,EAAG,MAAM,CAACG,YAAY,0BAA0B,CAACH,EAAG,MAAM,CAACG,YAAY,SAAS,CAAEJ,EAAgB,aAAEC,EAAG,MAAM,CAACA,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAImxB,WAAW,KAAOnxB,EAAI0wB,SAAS5N,SAAoG9iB,EAAIS,KAA9FR,EAAG,OAAO,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,yBAAyB,IAAIb,EAAIY,GAAGZ,EAAI0iB,kBAA2BziB,EAAG,MAAM,CAACA,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAImxB,WAAW,MAAMnxB,EAAIY,GAAGZ,EAAIoxB,gBAAgBnxB,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,OAAO,CAACG,YAAY,mBAAmB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIqxB,YAAYhwB,SAASpB,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIsxB,WAAW,SAASrxB,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIwC,WAAW,OAAOvC,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,MAAM,CAACG,YAAY,YAAY,CAAGJ,EAAI0wB,SAASjN,SAA2GzjB,EAAIS,KAArGR,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIqxB,YAAY7f,MAAMxR,EAAIY,GAAGZ,EAAIuxB,aAAuBvxB,EAAI0wB,SAAiB,SAAEzwB,EAAG,OAAO,CAACG,YAAY,oBAAoB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,2BAA2Bb,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIwxB,yBAAyB,EAC38C,EACI,GAAkB,GCFtB,IACE/uB,QAAS,CACPgvB,QAAS,SAAUC,GACjB,IAAI9K,EAAO5pB,EAAEO,KAAKjC,KAAK8G,OAAOlF,MAAMqM,cAAc,SAAU5J,GAC1D,OAAOA,EAAEwJ,UAAYuoB,CACvB,IAEA,OAAI9K,EACKA,EAAKhhB,GAGP,IACT,EACA+rB,iBAAkB,SAAU7oB,GAC1B,GAAIA,GAASA,EAAMqa,cAA8C,IAA9Bra,EAAMqa,aAAa7f,OAAc,CAClE,MAAM2c,EAAO3kB,KAAKm2B,QAAQn2B,KAAK8G,OAAOlF,MAAMmF,UACtCukB,EAAO5pB,EAAEO,KAAKuL,EAAMqa,cAAc,SAAUxjB,GAChD,OAAOA,EAAEiyB,aAAe3R,CAC1B,IACA,GAAI2G,EACF,OAAOA,EAIT,MAAMiL,EAAwB,KAAT5R,EAAc,IAAM,GACnC6R,EAAe90B,EAAEO,KAAKuL,EAAMqa,cAAc,SAAU4O,GACxD,OAAOA,EAAEH,aAAeC,CAC1B,IACA,OAAIC,GAKGhpB,EAAMqa,aAAa,EAC5B,CAEA,MAAO,CAAC,CACV,ICrCA,GAAS,WAAkB,IAAInjB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAQH,EAAW,QAAEC,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,OAAO,CAACG,YAAY,QAAQ,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIgH,aAAahH,EAAIS,IACxP,EACI,GAAkB,GCStB,wBACA,eACA,OACA,SACA,aACA,YACA,YAEA,MACA,YACA,YACA,eCtBiQ,MCQ7P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QC4B9B,IACEY,KAAM,YACN2G,WAAY,CAAEgqB,QAAO,IACrBhkB,OAAQ,CAAC,GAAY,IACrBzG,MAAO,CACLmpB,SAAU,CACR1tB,KAAMkL,OACN,UACE,MAAO,CAAC,CACV,IAGJ5L,SAAU,CACR,UAAA2uB,GACE,QAAK31B,KAAKo1B,WACHp1B,KAAKo1B,SAASuB,SAAW32B,KAAKo1B,SAASwB,SAChD,EACA,YAAAhB,GACE,QAAK51B,KAAKo1B,UACHp1B,KAAKo1B,SAASwB,QACvB,EACA,SAAA1vB,GACE,OAAOlH,KAAKovB,4BAA4BpvB,KAAKo1B,SAASluB,UACxD,EACA6uB,YAAa,WACX,OAAO/1B,KAAKq2B,iBAAiBr2B,KAAKo1B,SACpC,EACA,4BAAAyB,GACE,OACE72B,KAAK82B,SAASnP,sBACd,QAAW3nB,KAAK82B,SAASnP,sBAAwB,KAErD,EACA,UAAAoP,GACE,MAAMC,EACJh3B,KAAKo1B,SAASrN,YAAc/nB,KAAKo1B,SAASrN,WAAW/f,OACjDhI,KAAKo1B,SAASrN,WACd/nB,KAAK8G,OAAOlF,MAAMq1B,aAAaC,MAErC,MAAO,yBAAyBF,KAClC,EACA,SAAAhB,GACE,OAAOh2B,KAAKuvB,6BAA6BvvB,KAAKo1B,SAAS1tB,KACzD,EACA,aAAAwuB,GACE,OAAOl2B,KAAKswB,sCAAsCtwB,KAAKo1B,SAAS9M,SAClE,EACA,YAAA6O,GACE,MAAMC,EAAMp3B,KAAKo1B,SAAShO,UACpBiQ,EAAMr3B,KAAKo1B,SAAS7N,QAC1B,OAAO6P,EAAIpc,MAAQqc,EAAIrc,KAAOoc,EAAIjc,QAAUkc,EAAIlc,OAASic,EAAIhc,OAASic,EAAIjc,IAC5E,EACA,SAAAya,GACE,MAAMyB,EAAKt3B,KAAKo1B,SAAShO,UACzB,MAAO,GAAGkQ,EAAGtc,OAAOsc,EAAGnc,SAASmc,EAAGlc,MACrC,EACA,SAAAgM,GACE,MAAMkQ,EAAKt3B,KAAKo1B,SAAShO,UACzB,MAAO,GAAGpnB,KAAKu3B,WAAWD,EAAGjQ,SAASrnB,KAAKu3B,WAAWD,EAAGhQ,SAC3D,EACA,OAAAwO,GACE,MAAMwB,EAAKt3B,KAAKo1B,SAAS7N,QACzB,MAAO,GAAG+P,EAAGtc,OAAOsc,EAAGnc,SAASmc,EAAGlc,MACrC,EACA,QAAA6a,GACE,OAAOj2B,KAAK+1B,YAAY7f,MACtBlW,KAAK+1B,YAAY7f,KAAKlO,OAAS,GAC/BhI,KAAKo1B,SAAShR,SACdpkB,KAAKo1B,SAAShR,QAAQpc,OAAS,EAC7B,KAAKhI,KAAKo1B,SAAShR,UACnBpkB,KAAKo1B,SAAShR,OACpB,GAEFjd,QAAS,CACP,UAAAowB,CAAYC,GACV,OAAInrB,OAAOmrB,GAAQ,EAAUA,EAEtB,IAAIA,GACb,EACA,cAAA9B,GACE11B,KAAK6jB,QAAQljB,KAAK,UAAUX,KAAKo1B,SAAS9qB,KAC5C,IChIkI,MCQpI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI5F,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAAC6B,MAAM,CAAE,iBAAiB,EAAM,kBAAkB,IAAQ,CAAC7B,EAAG,QAAQ,CAACmB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOvB,EAAc,WAAEyB,WAAW,eAAerB,YAAY,eAAeG,MAAM,CAAC,YAAcP,EAAImL,YAAY,SAAW,KAAKjC,SAAS,CAAC,MAASlJ,EAAc,YAAGkB,GAAG,CAAC,MAAQ,SAASQ,GAAWA,EAAOoK,OAAOC,YAAiB/L,EAAI+yB,WAAWrxB,EAAOoK,OAAOvK,MAAK,MACle,EACI,GAAkB,GCYtB,wBACA,oBACA,OACA,OACA,YACA,YAEA,aACA,YACA,aAGA,gBACA,OACA,sBAEA,EACA,OACA,iBACA,0BACA,EACA,wCAEA,4BACA,WCtCoP,MCQhP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCkG9B,IACEF,KAAM,YACN8gB,SAAU,uBACVna,WAAY,CAAE4V,UAAS,YAAW,aAAW,WAAS,IACtD5P,OAAQ,CAAC,IACT,IAAA7L,GACE,MAAO,CACL6wB,OAAQ,GACRpC,eAAe,EACfqC,YAAa,CACX7jB,OAAQ,GACR8jB,KAAM,EACNC,KAAM,GAERC,oBAAqB,EACrBF,KAAM,GAEV,EACA5wB,SAAU,CACR,SAAAquB,GACE,OAAOr1B,KAAK03B,OAAO1vB,OAAS,CAC9B,EACA,gBAAAutB,GACE,OAAOv1B,KAAK+3B,aAAa/vB,OAAShI,KAAKg4B,eAAehwB,MACxD,EACA,cAAAgwB,GACE,GAAuC,IAAnCh4B,KAAK23B,YAAY7jB,OAAO9L,OAAc,OAAOhI,KAAK03B,OAEtD,IAAI3uB,EAAO/I,KACX,MAAMi4B,EAAWv2B,EAAE+R,OAAOzT,KAAK03B,QAAShZ,GAC/B3V,EAAKstB,iBAAiB3X,GAAK3Y,KAAK5F,cAAce,QAAQ6H,EAAK4uB,YAAY7jB,OAAO3T,gBAAkB,GACrGue,EAAImJ,aAAaqQ,MAAKC,GACbA,EAAKjiB,KAAK/V,cAAce,QAAQ6H,EAAK4uB,YAAY7jB,OAAO3T,gBAAkB,KAEnFue,EAAI0F,QAAQljB,QAAQ6H,EAAK4uB,YAAY7jB,SAAW,IAEpD,OAAOmkB,CACT,EACA,YAAAF,GACE,OAAOr2B,EAAEk2B,KAAK53B,KAAKg4B,eAAgBh4B,KAAK23B,YAAYC,KACtD,GAEF,OAAA9uB,GACE9I,KAAKo4B,WACP,EACAjxB,QAAS,CACP,QAAA+tB,GACEl1B,KAAK6jB,QAAQljB,KAAK,CAAEoF,KAAM,UAC5B,EACA,SAAAqyB,GACE,IAAIrvB,EAAO/I,KACX+I,EAAKusB,eAAgB,EAErB,MAAMn0B,EAAMnB,KAAK8G,OAAOlF,MAAM+G,SAAS2N,aAAetW,KAAK8G,OAAOlF,MAAMM,aAAam2B,eAAe,GACjGhuB,QAAQ,WAAY,IACpBA,QAAQ,WAAY,IACpBA,QAAQ,aAAc,IACtBA,QAAQ,YAAa,IACrBA,QAAQ,kBAAmB,IAC3BA,QAAQ,cAAe,IACvBA,QAAQ,aAAc,MACtBA,QAAQ,SAAUtB,EAAK6uB,MACvBvtB,QAAQ,SAAU,GAErBrK,KAAKgJ,MAAM3F,IAAIlC,GAAKoC,MAAK0F,IACvBF,EAAK2uB,OAASzuB,EAAKvF,KACnBqF,EAAKusB,eAAgB,KACpBrsB,IACDF,EAAKusB,eAAgB,IAEzB,EACA,eAAAG,GACEz1B,KAAK6jB,QAAQljB,KAAK,gBACpB,EACA,4BAAAw0B,GACEn1B,KAAK6jB,QAAQljB,KAAK,CAAET,KAAM,eAAgBklB,MAAO,CAAEtR,OAAQ9T,KAAK23B,YAAY7jB,SAE9E,EACA,eAAAwkB,CAAiB5sB,GACf1L,KAAK23B,YAAY7jB,OAASpI,CAC5B,EACA,qBAAA8pB,GACEx1B,KAAK23B,YAAYC,MAAQ53B,KAAK83B,mBAChC,ICxM+H,MCQjI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIpzB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,+BAA+B,CAACJ,EAAI6M,GAAG,aAAa5M,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,SAAS,CAACM,MAAM,CAAC,SAAWP,EAAI6zB,WAAW,cAAc7zB,EAAIa,GAAG,yBAAyBK,GAAG,CAAC,kBAAkBlB,EAAI8zB,wBAAwB7zB,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,cAAc,CAACG,YAAY,gBAAgB2C,MAAO/C,EAAiB,cAAEO,MAAM,CAAC,WAAaP,EAAI+zB,yBAAyB,IAAI,GAAG9zB,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,OAAO,CAACG,YAAY,KAAKG,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,gCAAgC,IAAIb,EAAIY,GAAGtF,KAAK8G,OAAOlF,MAAM2H,QAAQuP,WAAW,WAAWnU,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAI+zB,qBAAuB,IAAOtyB,WAAW,iCAAiCrB,YAAY,wBAAwB,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,qCAAqC,cAAc,kBAAkBK,GAAG,CAAC,iBAAiBlB,EAAIg0B,iBAAiB,KAAK/zB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,iBAAiBG,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,kCAAkC,WAAWZ,EAAG,MAAM,CAACG,YAAY,eAAe,CAAGJ,EAAIi0B,gBAAmBj0B,EAAIk0B,aAAqHl0B,EAAIS,KAA3GR,EAAG,IAAI,CAACG,YAAY,UAAU,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,wCAAwC,OAAiBb,EAAkB,eAAEC,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,YAAY,GAAGD,EAAIS,MAAOT,EAAIi0B,gBAAkBj0B,EAAIk0B,aAAcj0B,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIm0B,UAAU9yB,WAAWrB,EAAIS,MAAOT,EAAIi0B,gBAAkBj0B,EAAIk0B,aAAcj0B,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIm0B,UAAUC,iBAAiBn0B,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8B,IAAIb,EAAIY,GAAGZ,EAAIq0B,sBAAsBr0B,EAAIS,MAAOT,EAAIi0B,gBAAkBj0B,EAAIk0B,aAAcj0B,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,mCAAmC,cAAc,SAASK,GAAG,CAAC,MAAQlB,EAAIs0B,gBAAgB,GAAGt0B,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,iBAAiBG,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,iCAAiC,KAAMb,EAAa,UAAEC,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIu0B,cAAcv0B,EAAIS,WAAWR,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAAEJ,EAAmB,gBAAEC,EAAG,MAAM,CAACG,YAAY,uCAAuC,CAACH,EAAG,YAAY,GAAGD,EAAIS,KAAMT,EAAI+E,SAAe,OAAE9E,EAAG,MAAM,CAAC6B,MAAM,CAAE0yB,kBAAmBx0B,EAAIy0B,kBAAmBz0B,EAAI2G,GAAI3G,EAAiB,eAAE,SAASiF,EAAQ4B,GAAO,OAAO5G,EAAG,aAAa,CAACI,IAAIL,EAAIiQ,KAAO,YAAcpJ,EAAMtG,MAAM,CAAC,QAAU0E,GAAS/D,GAAG,CAAC,eAAiBlB,EAAI00B,mBAAmB,IAAG,GAAG10B,EAAIS,KAAOT,EAAI+E,SAASzB,QAAWtD,EAAIy0B,gBAA8Hz0B,EAAIS,KAAjHR,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,0CAAmDZ,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,sCAAsC,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,YAAY,CAACG,YAAY,kCAAkCG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,uCAAuC,cAAc,gBAAgBK,GAAG,CAAC,aAAelB,EAAI20B,iBAAiB,SAAS10B,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,iBAAiBG,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+B,WAAWZ,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAAEJ,EAAiB,cAAEC,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,YAAY,GAAGD,EAAIS,KAAMT,EAAI40B,SAAStxB,SAAWtD,EAAI60B,cAAe50B,EAAG,MAAM,CAACA,EAAG,YAAY,CAACM,MAAM,CAAC,KAAOP,EAAI40B,aAAa,GAAG50B,EAAIS,KAAOT,EAAI40B,SAAStxB,QAAWtD,EAAI60B,cAA0H70B,EAAIS,KAA/GR,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,wCAAiDZ,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,sCAAsC,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,kCAAkC,cAAc,cAAcK,GAAG,CAAC,WAAalB,EAAI80B,cAAc70B,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,gCAAgC,cAAc,YAAYK,GAAG,CAAC,SAAWlB,EAAI+0B,aAAa,SAAS90B,EAAG,MAAM,CAACG,YAAY,sCAAsC,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,OAAO,CAACG,YAAY,KAAKG,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+B,SAASZ,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,IAAI,CAAC6B,MAAM,CAAEoG,SAAUlI,EAAIg1B,mBAAqBh1B,EAAIi1B,UAAUC,UAAW30B,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAIm1B,wBAAwB,CAACn1B,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,0CAA0CZ,EAAG,IAAI,CAAC6B,MAAM,CAAEoG,SAAUlI,EAAIg1B,mBAAqBh1B,EAAIi1B,UAAUG,aAAc70B,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAIq1B,2BAA2B,CAACr1B,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,6CAA6CZ,EAAG,IAAI,CAAC6B,MAAM,CAAEoG,SAAUlI,EAAIg1B,mBAAqBh1B,EAAIi1B,UAAUK,SAAU/0B,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAIu1B,uBAAuB,CAACv1B,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,yCAAyCZ,EAAG,IAAI,CAAC6B,MAAM,CAAEoG,SAAUlI,EAAIg1B,mBAAqBh1B,EAAIi1B,UAAUO,gBAAiBj1B,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAIy1B,8BAA8B,CAACz1B,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,gDAAgDZ,EAAG,IAAI,CAAC6B,MAAM,CAAEoG,SAAUlI,EAAIg1B,mBAAqBh1B,EAAIi1B,UAAUS,WAAYn1B,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAI21B,yBAAyB,CAAC31B,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,2CAA2CZ,EAAG,IAAI,CAAC6B,MAAM,CAAEoG,SAAUlI,EAAIg1B,mBAAqBh1B,EAAIi1B,UAAUW,eAAgBr1B,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAI61B,6BAA6B,CAAC71B,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,mDAAmDZ,EAAG,MAAM,CAACG,YAAY,0BAA0B,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,YAAY,CAACG,YAAY,kCAAkCG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,8BAA8B,cAAc,2BAA2BK,GAAG,CAAC,wBAA0BlB,EAAIywB,iCAAiC,KAAKxwB,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAIg1B,mBAAqBh1B,EAAIi1B,UAAUS,WAAa11B,EAAIg1B,mBAAqBh1B,EAAIi1B,UAAUW,cAAen0B,WAAW,6FAA6FrB,YAAY,8BAA8B,CAACH,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,IAAI,CAAC6B,MAAM,CAAEoG,SAAuC,GAA7BlI,EAAI81B,uBAAgCv1B,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAI+1B,6BAA6B,CAAC/1B,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,wCAAwCZ,EAAG,IAAI,CAAC6B,MAAM,CAAEoG,SAAuC,GAA7BlI,EAAI81B,uBAAiCv1B,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAIg2B,6BAA6B,CAACh2B,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,8CAA8CZ,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAAEJ,EAAiB,cAAEC,EAAG,MAAM,CAACG,YAAY,8CAA8C,CAACH,EAAG,YAAY,GAAGD,EAAIS,KAAKT,EAAI2G,GAAI3G,EAAgB,cAAE,SAAS0wB,GAAU,OAAOzwB,EAAG,MAAM,CAACI,IAAIqwB,EAAS9qB,GAAGxF,YAAY,qCAAqC,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,SAAWmwB,MAAa,EAAE,KAAI,GAAK1wB,EAAI2wB,WAAc3wB,EAAI4wB,cAAiL5wB,EAAIS,KAAtKR,EAAG,MAAM,CAACG,YAAY,6BAA6B,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,6CAAuDb,EAAI6wB,mBAAqB7wB,EAAI4wB,cAAe3wB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,YAAY,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,sCAAsC,cAAc,YAAYK,GAAG,CAAC,SAAWlB,EAAI8wB,0BAA0B,KAAK9wB,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAAEJ,EAAIi2B,SAASC,uBAAyBl2B,EAAIm2B,QAAQ,UAAYn2B,EAAIm2B,QAAQ,YAAal2B,EAAG,YAAY,CAACG,YAAY,kCAAkCG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,gCAAgC,cAAc,YAAYK,GAAG,CAAC,SAAWlB,EAAIo2B,cAAcp2B,EAAIS,KAAKR,EAAG,YAAY,CAACG,YAAY,kCAAkCG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,iCAAiC,cAAc,cAAcK,GAAG,CAAC,WAAalB,EAAI+wB,oBAAoB,MAAM,EAC97R,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAI/wB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACJ,EAAI2G,GAAI3G,EAAY,UAAE,SAAS+f,GAAS,OAAO9f,EAAG,MAAM,CAACI,IAAI0f,GAAS,CAAC9f,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAIq2B,kBAA+B,GAAVtW,EAAkB,EAAGte,WAAW,6CAA6CK,MAAM,OAASie,EAAU,IAAM/f,EAAIq2B,qBAAqB,IAAGp2B,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAmB,gBAAEyB,WAAW,oBAAoBrB,YAAY,WAAW,CAACH,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIs2B,YAAY,UAAU,EACtkB,EACI,GAAkB,GCcpB,IACEj1B,KAAM,WACNkG,MAAO,CACL+uB,WAAY,CACVtzB,KAAM2E,OACNF,QAAS,GAEX8uB,YAAa3rB,SAEf,IAAAzI,GACE,MAAO,CACL+O,SAAU,CAAC,EAAG,EAAG,EAAG,GAExB,EACA5O,SAAU,CACR+zB,kBAAmB,WAGjB,OAAyD,GAAlDnf,KAAKsf,KAAM7uB,OAAyB,IAAlBrM,KAAKg7B,YAAqB,GACrD,EACAG,gBAAiB,WACf,QAAIn7B,KAAKi7B,WAIX,ICzCiI,MCQnI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIv2B,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,+CAA+C,CAACH,EAAG,kBAAkB,CAACM,MAAM,CAAC,QAAgC,kBAAfP,EAAI02B,OAAsB12B,EAAI02B,OAAS,CAAE,MAAM,GAAGz2B,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,SAASG,MAAM,CAAC,MAAQP,EAAI22B,UAAU32B,EAAIiF,QAAQI,iBAAiB,CAAErF,EAAe,YAAEC,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ0B,MAAM9B,EAAI42B,aAAa32B,EAAG,cAAc,CAACM,MAAM,CAAC,GAAK,CAAEc,KAAM,aAAc+d,OAAQ,CAAEyX,QAAS72B,EAAIiF,QAAQ6xB,QAAQloB,YAAc8R,MAAO,CAAE3a,IAAK/F,EAAIiF,QAAQW,OAAO,CAAC3F,EAAG,OAAO,CAACG,YAAY,oBAAoB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI+2B,qBAAqB,GAAG92B,EAAG,MAAM,CAACA,EAAG,MAAM,CAACG,YAAY,QAAQ0B,MAAM9B,EAAI42B,aAAa32B,EAAG,cAAc,CAACM,MAAM,CAAC,GAAK,aAAaP,EAAIiF,QAAQQ,eAAezF,EAAIiF,QAAQW,OAAO,CAAC3F,EAAG,OAAO,CAACG,YAAY,oBAAoB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI+2B,qBAAqB,GAAG92B,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIg3B,UAAU,WAAW/2B,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAAEJ,EAAe,YAAEC,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,cAAc,CAACM,MAAM,CAAC,GAAK,CAAEc,KAAM,aAAc+d,OAAQ,CAAEyX,QAAS72B,EAAIiF,QAAQ6xB,QAAQloB,YAAc8R,MAAO,CAAE3a,IAAK/F,EAAIiF,QAAQW,OAAO,CAAE5F,EAAW,QAAEC,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,uBAAuB,OAAOb,EAAIS,KAAKT,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIiF,QAAQgyB,SAAS,QAAQ,GAAGh3B,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,cAAc,CAACM,MAAM,CAAC,GAAK,aAAaP,EAAIiF,QAAQQ,eAAezF,EAAIiF,QAAQW,OAAO,CAAC5F,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIiF,QAAQgyB,SAAS,QAAQ,QACnlD,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIj3B,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,kBAAkB2C,MAAO/C,EAAS,OAAG,CAAGA,EAAI6E,QAAQqyB,SAAgIl3B,EAAIS,KAA1HR,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIm3B,QAAQ,UACpQ,EACI,GAAkB,GCSpB,IACE91B,KAAM,kBACNkG,MAAO,CACL1C,QAAS,CACP7B,KAAMkL,OACNzG,QAAS,OAGbnF,SAAU,CACR,MAAA60B,GACE,OAAI77B,KAAKuJ,SAAWvJ,KAAKuJ,QAAQuP,WAAa9Y,KAAKuJ,QAAQuP,UAAU9Q,OAAS,EACrEhI,KAAKuJ,QAAQuP,UAAUgjB,UAAU,EAAG,GAEtC,GACT,EACA,KAAAr0B,GACE,OAAK/F,EAAEq6B,QAAQ/7B,KAAKuJ,QAAQqyB,UAGrB,GAFE,kBAAoB57B,KAAKuJ,QAAQqyB,SAAW,0EAGvD,IC/BqI,MCQvI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCuC9B,IACE71B,KAAM,aACN2G,WAAY,CAAEsvB,gBAAe,IAC7B/vB,MAAO,CACLtC,QAAS,CACPjC,KAAMkL,OACNtG,UAAU,IAGd,IAAAzF,GACE,MAAO,CACLu0B,OAAQ,CACR,EAEJ,EACAp0B,SAAU,CACRi1B,QAAS,WACP,OAAOj8B,KAAK2J,WAAa3J,KAAK2J,QAAQuyB,eACxC,EACAC,YAAa,WACX,OAAOn8B,KAAK2J,WAAa3J,KAAK2J,QAAQ6xB,OACxC,EACA,aAAAC,GACE,OAAIz7B,KAAK2J,QAAQyxB,OACRp7B,KAAK2J,QAAQyxB,OAEbp7B,KAAKo7B,OAAOtiB,UAAY,GAAG9Y,KAAKo7B,OAAOtiB,aAAa9Y,KAAKo7B,OAAOriB,WAAa,EAExF,EACA,QAAA2iB,GACE,OAAO,QAAW17B,KAAK2J,QAAQC,MAAMwyB,QAAQC,OAAO,kBACtD,EACA,UAAAf,GACE,OAAQt7B,KAAK2J,QAAQI,eACrB,KAAK,EACH,MAAO,MAET,KAAK,EACH,MAAO,iBAET,KAAK,EACH,MAAO,SAET,KAAK,EACH,MAAO,UAET,QACE,MAAO,UAEX,GAEF,OAAAjB,GACE,GAAI9I,KAAK2J,SAAiC,IAAtB3J,KAAK2J,QAAQjC,KAAY,CAC3C,IAAIqB,EAAO/I,KACPs8B,GAAct8B,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAaqH,QAAQ,IAAIc,QAAQ,MAAOrK,KAAK2J,QAAQ6yB,UAClIx8B,KAAKgJ,MAAM3F,IAAIi5B,GAAY/4B,MAAKC,IAC9BuF,EAAKqyB,OAAS53B,EAAEE,OAEpB,CACF,EACAyD,QAAS,CACP,SAAAk0B,CAAWz5B,GACT,OAAQA,GACR,KAAK,EACH,OAAO5B,KAAKuF,GAAG,eACjB,KAAK,EACH,OAAOvF,KAAKuF,GAAG,gBACjB,QACE,MAAO,GAEX,IChImI,MCQrI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIb,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,cAAc,CAAEJ,EAAIib,KAAK3X,OAAS,EAAGrD,EAAG,MAAMD,EAAI2G,GAAI3G,EAAQ,MAAE,SAAS5C,EAAKyJ,GAAO,OAAO5G,EAAG,MAAM,CAACI,IAAIjD,EAAKwI,GAAGxF,YAAY,YAAY,CAACH,EAAG,YAAY,CAACI,IAAIL,EAAIiQ,KAAOpJ,EAAQ,OAAOtG,MAAM,CAAC,MAAQnD,EAAK,SAAW4C,EAAI+3B,SAAS,gBAAe,MAAS,EAAE,IAAG,GAAG/3B,EAAIS,MAClW,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,gBAAgB0B,MAAM,CAAE,iBAAkB9B,EAAIg4B,eAAgB,CAAC/3B,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,IAAI,CAACM,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAIi4B,YAAY,CAACj4B,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIk4B,MAAM72B,WAAWpB,EAAG,MAAOD,EAAgB,aAAEC,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,UAAUP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwB,MAAM,GAAGb,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIk4B,MAAMC,cAAc,IAAIn4B,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwB,OAAQb,EAAY,SAAEC,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACJ,EAAIQ,GAAG,QAAQR,EAAIY,GAAGZ,EAAI4jB,UAAU,OAAO5jB,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI0rB,yBAAyB1rB,EAAIk4B,MAAME,YAAY,OAAOn4B,EAAG,MAAM,CAACG,YAAY,UAAU,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIq4B,QAAQ,SAAUr4B,EAAY,SAAEC,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,YAAYC,QAAQ,sBAAsBC,MAAM,CAAGya,OAAO,GAAQva,WAAW,kBAAkBwa,IAAI,YAAY7b,YAAY,eAAe,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIk4B,MAAM5V,aAAa,OAAOriB,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIwC,WAAW,SAASvC,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIwC,WAAW,SAAUxC,EAAe,YAAEC,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAkB,eAAEC,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,yBAA2B,KAAOb,EAAIk4B,MAAMI,aAAa,OAAOt4B,EAAIS,KAAMT,EAAoB,iBAAEC,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,2BAA6B,OAAOZ,EAAG,iBAAiB,CAACM,MAAM,CAAC,aAAY,EAAK,MAAQP,EAAIk4B,MAAMK,mBAAmB,KAAKv4B,EAAIS,KAAOT,EAAIw4B,aAAi1Cv4B,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,YAAY,KAA56CA,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAAEJ,EAAiB,cAAEC,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,uBAAuBZ,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,YAAY,GAAGP,EAAIS,KAA6B,IAAvBT,EAAIy4B,gBAAwBz4B,EAAI04B,4BAA6Bz4B,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,yBAAyBZ,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,YAAY,GAAGP,EAAIS,KAA6B,IAAvBT,EAAIy4B,gBAAyBz4B,EAAI24B,+BAAkC34B,EAAI04B,6BAAgC14B,EAAI44B,eAAyC,IAAxB54B,EAAIk4B,MAAME,UAAuNp4B,EAAIS,KAA1MR,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,2BAA2B,cAAc,aAAaK,GAAG,CAAC,UAAYlB,EAAI64B,oBAA8B74B,EAAI44B,eAAiB54B,EAAI24B,+BAAyD,IAAxB34B,EAAIk4B,MAAME,UAAiBn4B,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,oBAAoB,cAAc,oBAAoBK,GAAG,CAAC,iBAAmBlB,EAAI84B,oBAAoB94B,EAAIS,KAAOT,EAAI44B,eAAyC,IAAxB54B,EAAIk4B,MAAME,UAAkNp4B,EAAIS,KAArMR,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,oBAAoB,cAAc,aAAaK,GAAG,CAAC,UAAYlB,EAAI+4B,sBAA+B,KAAmH/4B,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,0BAA0B,CAACH,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIq4B,QAAQ,SAASp4B,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI0rB,yBAAyB1rB,EAAIk4B,MAAME,YAAY,YAC/jH,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIp4B,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,6BAA6B,CAAEJ,EAAY,SAAEC,EAAG,MAAM,CAAED,EAAQ,KAAEC,EAAG,QAAQ,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIqT,SAASrT,EAAIS,KAAKT,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIu4B,gBAAgB,OAAOt4B,EAAG,MAAM,CAACA,EAAG,gBAAgB,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,wBAA0BE,WAAW,4BAA4BlB,MAAM,CAAC,KAAOP,EAAIqT,KAAK,YAAcrT,EAAImL,YAAY,SAAWnL,EAAI4H,SAAS,SAAW5H,EAAIiD,SAAS,KAAO,2BAA2B,WAAWjD,EAAIgQ,UAAYhQ,EAAIoK,OAAOC,IAAI,4BAA4B,MAAQrK,EAAIu4B,eAAe,KAAOv4B,EAAIg5B,YAAY93B,GAAG,CAAC,MAAQlB,EAAIi5B,WAAWh5B,EAAG,WAAW,CAACG,YAAY,KAAKG,MAAM,CAAC,GAAKP,EAAIg5B,aAAah5B,EAAI2G,GAAI3G,EAAsB,oBAAE,SAAS5C,GAAM,OAAO6C,EAAG,SAAS,CAACI,IAAIjD,EAAKwI,GAAG9D,MAAM,CAAE,mBAAsB1E,EAAK87B,qBAAsB,CAACl5B,EAAIQ,GAAG,IAAIR,EAAIY,GAAGxD,EAAKiE,MAAM,MAAM,IAAG,IAAI,IACn7B,EACI,GAAkB,GC6BpB,IACEA,KAAM,0BACN2G,WAAY,CAAEmxB,cAAa,IAC3B5xB,MAAO,CACL8L,KAAM,CACJrQ,KAAMwE,OACNC,QAAS,IAEX2xB,SAAU,CACRp2B,KAAM4H,QACNnD,SAAS,GAEXlG,MAAO,CACLyB,KAAMkL,OACNzG,QAAS,KACA,CACLyxB,oBAAqB,EACrBlV,YAAa,QAInB7Y,YAAa,CACXnI,KAAMwE,OACNC,QAAS,IAEXG,SAAUgD,QACV3H,SAAU2H,QACVoF,QAASpF,SAEX,IAAAzI,GACE,MAAO,CACLo2B,eAAgB,GAEpB,EACAj2B,SAAU,CACR,UAAA02B,GACE,MAAO,YAAY19B,KAAK2U,MAC1B,EACA,kBAAAopB,GAEE,MAAMC,GAA4B,EAC5BC,EAAgC,EAChCC,EAA6B,IAC7BC,EAA4B,IAClC,IAAIxe,EAAO,GAWX,GATAA,EAAKhf,KAAK,CACRgkB,KAAM,GAAGqZ,OACTj4B,KAAM,IACNk3B,eAAgB,CACdW,mBAAoBI,EACpBtV,YAAa,SAIZ1oB,KAAK8G,OAAOlF,MAAMw8B,eAAiBp+B,KAAK8G,OAAOlF,MAAMw8B,aAAap2B,OAAQ,OAAO2X,EAEtF,IAAK,IAAI0e,EAAmB,EAAGA,EAAmBr+B,KAAK8G,OAAOlF,MAAMw8B,aAAap2B,OAAQq2B,IAAoB,CAC3G,IAAIC,EAAct+B,KAAK8G,OAAOlF,MAAMw8B,aAAaC,GAEjD1e,EAAKhf,KAAK,CACRgkB,KAAM,GAAGsZ,KAAiCK,EAAYh0B,KACtDvE,KAAMu4B,EAAYv4B,KAClBk3B,eAAgB,CACdW,mBAAoBK,EACpBvV,YAAa4V,EAAYh0B,KAG/B,CAEA,IAAKtK,KAAK8G,OAAOlF,MAAM28B,YAAcv+B,KAAK8G,OAAOlF,MAAM28B,UAAUv2B,OAAQ,OAAO2X,EAEhF,IAAK,IAAI6e,EAAgB,EAAGA,EAAgBx+B,KAAK8G,OAAOlF,MAAM28B,UAAUv2B,OAAQw2B,IAAiB,CAC/F,IAAIC,EAAWz+B,KAAK8G,OAAOlF,MAAM28B,UAAUC,GACvC5oB,EAAWlU,EAAEgI,OAAOhI,EAAE+R,OAAOzT,KAAK8G,OAAOlF,MAAMgU,UAAW6O,GAErDA,EAAQia,aAAeD,EAASn0B,MACpCma,GAEIA,EAAQ1e,OAGjB4Z,EAAKhf,KAAK,CACRgkB,KAAM,GAAGuZ,KAA8BO,EAASn0B,KAChDvE,KAAM04B,EAAS14B,KAAKke,cACpBgZ,eAAgB,CACdW,mBAAoBM,EACpBxV,YAAa+V,EAASn0B,MAI1B,IAAK,IAAIq0B,EAAI,EAAGA,EAAI/oB,EAAS5N,OAAQ22B,IAAK,CACxC,IAAIla,EAAU7O,EAAS+oB,GACvBhf,EAAKhf,KAAK,CACRgkB,KAAM,GAAGwZ,KAA6B1Z,EAAQna,KAC9CvE,KAAM0e,EAAQ1e,KACdk3B,eAAgB,CACdW,mBAAoBO,EACpBzV,YAAajE,EAAQna,KAG3B,CACF,CACA,OAAOqV,CACT,GAEFzR,MAAO,CACL,KAAAjI,CAAO24B,GACL5+B,KAAK6+B,YAAYD,EACnB,GAEF,OAAA91B,GACE,IAAIC,EAAO/I,KACXA,KAAKyY,WAAWwF,OAAO,wBAAyB,CAC9C,UAAAtT,CAAY0N,EAAOyE,GACjB,MAAO,wBACT,EACA,QAAAC,CAAU9W,EAAO6W,GAEf,IAAIhb,EAAOJ,EAAEO,KAAK8G,EAAKg1B,oBAAqBd,GACnCA,EAAel3B,OAASE,IAGjC,QAAKnE,CAKP,GAEJ,EACA,OAAA0K,GACMxM,KAAKiG,OACPjG,KAAK6+B,YAAY7+B,KAAKiG,MAE1B,EACAkB,QAAS,CACP,WAAA03B,CAAa1wB,GACX,GAAKA,EAEE,CACL,IAAI2wB,EAAKp9B,EAAEO,KAAKjC,KAAK+9B,oBAAqBd,GACjCA,EAAetY,OAAS,GAAGxW,EAAIyvB,sBAAsBzvB,EAAIua,gBAGhE1oB,KAAKi9B,eADH6B,EACoBA,EAAG/4B,KAEH,IAE1B,MAVE/F,KAAKi9B,eAAiB,IAW1B,EACA,OAAAU,CAASoB,GACP/+B,KAAKi9B,eAAiB8B,EACtB,IAAIh2B,EAAO/I,KACXA,KAAKyY,WAAWsE,WAAWxZ,MAAKuvB,IAC9B,GAAIA,EAAQ,CACV,IAAIhxB,EAAOJ,EAAEO,KAAK8G,EAAKg1B,oBAAqBj8B,GACnCA,EAAKiE,KAAK5F,gBAAkB4+B,EAAmB5+B,gBAGxD,IAAK2B,EAEH,YADAiH,EAAK0D,MAAM,QAAS,MAItB,IAAI5F,EAAO/E,EAAKm7B,eAEhBl0B,EAAK0D,MAAM,QAAS5F,EACtB,IAEJ,ICzMgJ,MCQlJ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCwFhC,wBACA,iBACA,sDACA,cACA,OACA,OACA,YACA,aAEA,UACA,aACA,YAEA,aACA,aACA,aAGA,gBACA,OACA,iBACA,gBAEA,EACA,UACA,oBACA,8DACA,EACA,0BAGA,QACA,EACA,4BACA,iCAGA,yBACA,EACA,yBACA,gCACA,oDACA,EACA,wBACA,gCACA,oDACA,0CACA,oCACA,GAGA,EACA,qBACA,6DACA,EACA,kBACA,mJACA,EACA,yCACA,WACA,wDACA,wDACA,GACA,EACA,uCACA,WACA,wDACA,yDACA,GACA,GAEA,SACA,qBAEA,OADA,+EACA,CACA,EACA,sCACA,wBACA,iHACA,GACA,uCACA,gFACA,+CAEA,GACA,uBACA,aACA,0BAEA,sCACA,oCACA,G,CAEA,QACA,EACA,4CACA,qBACA,OACA,yBACA,uBACA,qFAEA,OACA,iGACA,uCACA,kBACA,kBACA,gBACA,kBACA,mBACA,GACA,EACA,wCACA,OACA,wBACA,oGACA,GACA,sBACA,+CAEA,oBAGA,6CACA,kBACA,iDACA,G,CAEA,QACA,EACA,uCACA,OACA,mIACA,yCACA,mDACA,GACA,KCnP0P,MCQtP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCM9B,IACEd,KAAM,YACN2G,WAAY,CAAEsyB,UAAS,IACvB/yB,MAAO,CACL0T,KAAM,CACJjY,KAAMtF,MACN+J,QAAS,IAAM,IAEjBswB,SAAU,CACR/0B,KAAM4H,QACNnD,SAAS,IAGbnF,SAAU,CACRi4B,aAAc,WACZ,OAAOj/B,KAAKk/B,cAAcl/B,KAAK2f,KAAM,YAAa,EACpD,EACAwf,WAAY,WACV,OAAOn/B,KAAKk/B,cAAcl/B,KAAK2f,KAAM,YAAa,EACpD,GAEFxY,QAAS,CACP+3B,cAAe,SAAUl8B,EAAKmf,EAAWhU,GACvC,OAAOzM,EAAE+R,OAAOzQ,GAAK,SAAUqB,GAC7B,OAAOA,EAAE8d,KAAehU,CAC1B,GACF,ICnDkI,MCQpI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,WCnB5B,GAAS,WAAkB,IAAIzJ,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,wCAAwC,CAACH,EAAG,IAAI,CAACM,MAAM,CAAC,KAAO,MAAM,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI0wB,SAASntB,YAAYtD,EAAG,MAAM,CAACG,YAAY,wCAAwC,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI0wB,SAASnO,OAAOtiB,EAAG,OAAO,CAACG,YAAY,QAAQ,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI0wB,SAASoC,WAAW7yB,EAAG,MAAM,CAACG,YAAY,yCAAyC,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI0wB,SAAS90B,UAAU,OAAOqE,EAAG,MAAM,CAACG,YAAY,4CAA4C,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI0wB,SAAS9M,UAAU,OAAO3jB,EAAG,MAAM,CAACG,YAAY,wCAAwC,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI0wB,SAAS1tB,MAAM,OAAO/C,EAAG,MAAM,CAACG,YAAY,6CAA6C,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI0wB,SAASgK,WAAW,QAC30B,EACI,GAAkB,GCsBpB,IACEr5B,KAAM,qBACN2G,WAAY,CAAE,EACdT,MAAO,CACLmpB,SAAU,CACR1tB,KAAMkL,OACNzG,QAAS,OAGbhF,QAAS,CACPk4B,oBAAqB,WACnBz7B,QAAQC,IAAI,0BACd,ICpCkI,MCOpI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC+QhC,KA6BA,wBACA,uBACA,YACA,eACA,YACA,cACA,aACA,aACA,WACA,WAEA,cACA,gBACA,OACA,wBACA,aACA,kBACA,gBACA,YACA,mBACA,YACA,iBACA,UACA,iBACA,WACA,cACA,UACA,iBACA,YACA,gBACA,YAEA,iCACA,sBACA,qBACA,cACA,yBACA,+BAEA,EACA,UACA,sBAEA,iEACA,EACA,yBACA,yCACA,mCACA,GACA,MACA,mBACA,EACA,gEAEA,EACA,qBACA,2BACA,EACA,4BACA,0DACA,EACA,yBACA,gCACA,GAGA,wBACA,cAGA,wBACA,EACA,qBACA,8BACA,wDAGA,IACA,EACA,0BACA,iDAEA,WACA,uCACA,OACA,EACA,oBACA,mBACA,wCACA,iCACA,kEACA,KACA,kCAEA,IACA,QACA,EACA,wBACA,6DACA,EACA,2BAEA,mCACA,wBACA,4BACA,wBACA,4BACA,+BAGA,EACA,GAEA,mB,MACA,wBACA,kIACA,mBACA,iBACA,oBACA,wBAQA,uBACA,EACA,yBACA,2CACA,EACA,SACA,8CACA,oCAEA,mCAEA,iDACA,gBAEA,4CACA,GACA,EACA,wCACA,iEAEA,EACA,iCACA,gCACA,8BACA,8BAEA,EACA,uCACA,4BACA,wBACA,qCACA,eACA,IAEA,EACA,wBACA,6BACA,EACA,uBACA,mCACA,EACA,0BACA,yCACA,EACA,6BACA,4CACA,EACA,uBACA,6BACA,EACA,wBACA,8BACA,EACA,sBACA,4BACA,EACA,oBACA,mCACA,EACA,uBACA,wBACA,wCACA,EACA,wBACA,WACA,oBACA,MACA,uCACA,4CACA,wBACA,YACA,mBACA,kBACA,mBACA,IACA,YACA,mBACA,GAEA,EACA,uBACA,WACA,mBACA,gBACA,uCACA,iDAEA,oCACA,2CACA,iBACA,IACA,kBACA,GACA,EACA,qBACA,WACA,mBAEA,8CAGA,OAFA,mEAEA,wBACA,gCACA,sDACA,MAEA,4BACA,kDACA,MAEA,mCACA,yDACA,MAEA,8BACA,GACA,iDACA,IACA,2BACA,MAEA,kCACA,uDACA,IACA,2BACA,MAEA,6BACA,QACA,mDACA,MAGA,wBACA,YACA,gBACA,kBACA,IACA,YACA,YACA,kBACA,GAEA,EACA,sBACA,2BACA,EACA,2BACA,4BACA,EACA,iCACA,sCACA,EACA,oCACA,yCACA,EACA,iCACA,+CACA,iDACA,gBACA,EACA,oCACA,kDACA,iDACA,gBACA,EACA,gCACA,8CACA,iDACA,gBACA,EACA,uCACA,qDACA,iDACA,gBACA,EACA,kCACA,gDACA,iD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H,SAAS,CAAC,MAAQlJ,EAAIuB,MAAM,QAAUvB,EAAIqI,aAAapI,EAAG,QAAQ,CAACM,MAAM,CAAC,IAAMP,EAAI4F,KAAK,CAAC5F,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIuD,WACzX,EACI,GAAkB,GCOtB,wBACA,sBACA,OACA,OACA,YACA,YAEA,OACA,6BACA,aAEA,YACA,6BACA,aAEA,IACA,YACA,YAEA,SACA,aACA,YAEA,MACA,YACA,aAGA,gBACA,QAEA,EACA,UACA,qBACA,mCACA,GAEA,SACA,wBACA,8BACA,KCjDsP,MCQlP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCAhC,wBACA,oBACA,YACA,aAEA,OACA,OACA,YACA,YAEA,OACA,6BACA,aAEA,SACA,WACA,YAEA,MACA,YACA,yBAGA,gBACA,QAEA,EACA,YAEA,SACA,2BACA,qBACA,KCnDoP,MCQhP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCyUhC,wBACA,eACA,2JACA,kBACA,gBACA,OACA,cACA,aACA,gDACA,wEACA,gBACA,cAEA,EACA,UACA,wBACA,iBACA,EACA,sCACA,+CACA,EACA,2CACA,uDACA,OACA,WACA,qCAEA,GACA,EACA,gDACA,wDAEA,qDACA,QACA,EACA,0CACA,wDAEA,+DACA,EACA,0CACA,WACA,sFAEA,+BACA,0EACA,GACA,EACA,yCACA,WACA,sFAEA,+BACA,mFACA,GACA,EACA,qBACA,mCACA,6BACA,GAEA,kCAIA,sBAHA,KAIA,EACA,qBACA,0GACA,2FACA,EACA,kBACA,iCACA,2EACA,EACA,EACA,iCAEA,4FACA,EACA,uBACA,WACA,oDACA,8CACA,QACA,GAEA,mBACA,0DACA,oDACA,EAEA,iCAMA,GALA,mDAGA,mBAFA,mBAIA,iBACA,mDACA,oBACA,SACA,IAEA,K,CAGA,UACA,EACA,SACA,wBACA,oBACA,EACA,gBACA,sBACA,mBACA,YACA,OACA,oBAGA,EACA,gCAEA,0GACA,EACA,wBACA,oBACA,EACA,+BACA,2BACA,EACA,0CACA,sCACA,EACA,0CACA,sCACA,EACA,6CACA,+CAEA,mCAEA,iDACA,gBAEA,4CACA,GACA,EACA,0BACA,eAEA,cAEA,GACA,EACA,0BAEA,oEACA,gFACA,4EACA,0EACA,oFACA,wEACA,kEACA,wEACA,gEACA,8EACA,sFACA,2FACA,yFACA,qFACA,2EACA,2FACA,4FACA,2EACA,yEACA,sFACA,sFACA,4EACA,qEACA,uDACA,uFACA,EACA,4BACA,WACA,uGAEA,oDACA,UACA,IAEA,2GAEA,mDACA,SACA,GACA,KCjiB+O,MCQ3O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIvD,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,8BAA8B,CAACH,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,cAAc,CAACG,YAAY,iBAAiBG,MAAM,CAAC,GAAK,aAAa,CAACN,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,eAAe,cAAc,UAAUP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,iBAAiB,MAAM,IAAI,GAAGZ,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,OAAO,CAACG,YAAY,mBAAmBG,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIkgC,8BAA8BjgC,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAAuB,OAArBJ,EAAImgC,aAAuBlgC,EAAGD,EAAImgC,aAAa,CAAC95B,IAAI,MAAM9F,MAAM,CAAC,OAASP,EAAIogC,QAAQl/B,GAAG,CAAC,SAAWlB,EAAIqgC,gBAAgB,OAASrgC,EAAIsgC,eAAe,SAAWtgC,EAAIugC,iBAAiBtgC,EAAG,MAAM,CAACD,EAAIQ,GAAG,wBAAwB,MAC98B,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIR,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAQH,EAAW,QAAEC,EAAG,MAAM,CAACG,YAAY,oCAAoC,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAAiB,cAAfJ,EAAIogC,OAAwBngC,EAAG,OAAO,CAACG,YAAY,iCAAiC,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,qCAAqCZ,EAAG,OAAO,CAACG,YAAY,iCAAiC,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,uCAAuCZ,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACJ,EAAI2G,GAAI3G,EAAY,UAAE,SAASwgC,GAAO,OAAOvgC,EAAG,cAAc,CAACI,IAAI,MAAQL,EAAIiQ,KAAO,IAAMuwB,EAAMpgC,YAAY,WAAWG,MAAM,CAAC,MAAuB,cAAfP,EAAIogC,OAAyBpgC,EAAI4I,qBAAqB43B,GAASxgC,EAAIa,GAAGb,EAAIygC,kBAAoB,IAAMD,GAAO,cAAc,WAAW,MAAuB,cAAfxgC,EAAIogC,OAAyBI,EAAQxgC,EAAI0gC,UAAUF,GAAO,SAAW,EAAE,WAAaxgC,EAAI2gC,YAAYz/B,GAAG,CAAC,WAAWlB,EAAI4gC,gBAAgB,IAAmB,cAAf5gC,EAAIogC,OAAwBngC,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,sBAAsB,CAACG,YAAY,0BAA0BG,MAAM,CAAC,eAAe,mBAAmBW,GAAG,CAAC,kBAAkBlB,EAAI4gC,kBAAkB,GAAG5gC,EAAIS,MAAM,GAAIT,EAAW,QAAEC,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,YAAY,GAAGD,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,WAAWsD,YAAY,CAAC,cAAc,OAAO,CAACzD,EAAG,MAAM,CAACG,YAAY,UAAUH,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,YAAY,CAACG,YAAY,aAAaG,MAAM,CAAC,cAAc,aAAa,MAAQP,EAAIa,GAAG,gBAAgB,KAAO,EAAE,WAAa,GAAGK,GAAG,CAAC,aAAalB,EAAI6gC,SAAS,GAAG5gC,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,YAAY,CAACG,YAAY,aAAaG,MAAM,CAAC,cAAc,eAAe,MAAQP,EAAIa,GAAG,kBAAkB,KAAO,EAAE,WAAa,GAAGK,GAAG,CAAC,eAAelB,EAAI8gC,iBAAiB,OAAO7gC,EAAG,MAC7wD,EACI,GAAkB,GCmEtB,wBACA,6BACA,YACA,6DACA,YAEA,OACA,QACA,YACA,aAGA,gBACA,OAEA,oDACA,wDACA,wDACA,aACA,cAEA,EACA,UACA,sBACA,oBACA,aACA,uBACA,eACA,0BACA,gBACA,0BAEA,QACA,EACA,qBACA,oBACA,aACA,iEACA,eACA,mEACA,gBACA,+HAEA,QACA,EACA,iBACA,oBACA,aACA,+CACA,eACA,gDACA,gBACA,YAEA,QACA,EACA,oBACA,gCACA,gFAEA,2BACA,EACA,wBACA,oBACA,sBAEA,EACA,EACA,mBACA,iFACA,EACA,6BACA,kCACA,GAEA,mBACA,cACA,6BAEA,EACA,SACA,4BACA,MAEA,oCAEA,8BAEA,OADA,UACA,aACA,aACA,kBACA,MACA,eACA,qBACA,MACA,gBACA,qBACA,M,MAGA,CAGA,iCACA,WAEA,8BAEA,OADA,cACA,aACA,aACA,kBACA,MACA,eACA,qBACA,MACA,gBACA,qBACA,M,EAKA,oBACA,aACA,qEAGA,mBAFA,mBAIA,MACA,eACA,yEAGA,mBAFA,mBAIA,MACA,gBACA,yEAGA,mBAFA,mBAIA,MAEA,sCACA,EACA,sBACA,oBACA,aACA,4FACA,eACA,6FACA,gBACA,YAEA,EACA,wBACA,uBACA,mBACA,EACA,2BAEA,OADA,kBACA,aACA,aACA,yDACA,MACA,eACA,6DACA,MACA,gBACA,6DACA,MAGA,mCAEA,kDACA,kBACA,iBACA,cACA,gBAEA,6CACA,cACA,GACA,KC/PgQ,MCQ5P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GA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AEA,mBAEA,sCACA,EACA,uBAEA,MACA,uBACA,OACA,eACA,0CACA,sC,CAEA,EACA,gCACA,yDACA,gDACA,CACA,GAEA,8BACA,qDACA,6DACA,gEACA,0DACA,+DAEA,SAEA,iDACA,gCAMA,yCALA,gCACA,sFACA,GASA,IAEA,sCACA,EACA,mBACA,WACA,cACA,8BAGA,uDACA,4GACA,GACA,EACA,SACA,4BACA,MACA,oCACA,8BACA,UACA,qB,MAEA,CACA,iCACA,WACA,8BACA,cACA,qB,EAIA,kCACA,mBAEA,mBAEA,sCACA,EACA,sCACA,kFACA,6EACA,8EACA,gEACA,EACA,qCACA,MACA,6CACA,uCACA,UACA,qB,MAEA,CACA,0CACA,WACA,uCACA,cACA,qB,EAGA,kCACA,mBAEA,mBAEA,sCACA,EACA,oCACA,2CAEA,kCACA,mBAEA,mBAEA,sCACA,EACA,8BACA,gBACA,gDACA,+CACA,uDACA,0DACA,yDACA,IACA,eAEA,gCACA,gBAEA,kDACA,kBACA,gBACA,gBACA,IACA,cAEA,cAGA,4CACA,IAGA,6BACA,gBAEA,kDACA,kBACA,+BACA,gBACA,IACA,cAEA,cAGA,4CACA,IAGA,GACA,EACA,oBACA,uBACA,mBACA,KC7ZgQ,MCQ5P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,0DAA0D,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,gBAAgB,CAACG,YAAY,OAAOG,MAAM,CAAC,oBAAoBP,EAAIgK,qBAAqB,KAAK/J,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,gBAAgB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG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AAC,UAAYP,EAAIkmC,YAAclmC,EAAImmC,UAAU,MAAQnmC,EAAIomC,kBAAkB,aAAapmC,EAAIomC,kBAAkB,QAAkBpmC,EAAIkmC,aAAelmC,EAAImmC,UAAU,cAAc,iBAAiBjlC,GAAG,CAAC,cAAgBlB,EAAIqmC,oBAAoB,QACzsF,EACI,GAAkB,GCkGtB,wBACA,gCACA,8DACA,OACA,YACA,YACA,cAGA,gBACA,OACA,cACA,aAEA,EACA,UACA,wB,QACA,uHACA,EACA,mBAEA,2CACA,EACA,mBAEA,2CACA,EACA,mBAEA,2CACA,EACA,6BACA,oBACA,wEAEA,aACA,wEAEA,EACA,EACA,6BACA,oBACA,6CACA,iCACA,EACA,wB,UAEA,4IACA,WACA,MACA,EACA,wB,UAEA,4JACA,WACA,MACA,EACA,wB,UAEA,wJACA,WACA,MACA,EACA,wB,UAEA,wJACA,WACA,MACA,EACA,uBACA,qCACA,EACA,uBACA,qCACA,EACA,uBACA,qCACA,EACA,uBACA,qCACA,GAEA,SACA,2BACA,kBACA,wCACA,KC1LyQ,MCQrQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCOhC,wBACA,2BACA,gDACA,gBACA,OACA,WACA,8BAEA,EACA,8BACA,8FACA,gBACA,oCACA,OACA,gCAGA,6CAEA,YACA,gBACA,eACA,aAEA,4CACA,GACA,EACA,SACA,2CACA,2FACA,gBACA,uCACA,SACA,GAEA,gEAGA,WAEA,QACA,wBACA,GACA,qC,MAGA,6CAEA,YACA,gBACA,eACA,aAEA,4CACA,GACA,KCjFqQ,MCQjQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIrmC,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAQH,EAAW,QAAEC,EAAG,MAAM,CAACG,YAAY,gCAAgC,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,OAAO,CAACG,YAAY,iCAAiC,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,uCAAuCZ,EAAG,MAAM,CAACG,YAAY,sBAAsBJ,EAAI2G,GAAI3G,EAAY,UAAE,SAASwgC,GAAO,OAAOvgC,EAAG,cAAc,CAACI,IAAI,MAAQL,EAAIiQ,KAAO,IAAMuwB,EAAMpgC,YAAY,WAAWG,MAAM,CAAC,MAAQP,EAAIa,GAAGb,EAAIygC,kBAAoB,IAAMD,GAAO,cAAc,WAAW,MAAQxgC,EAAI0gC,UAAUF,GAAO,SAAW,EAAE,WAAaxgC,EAAI2gC,YAAYz/B,GAAG,CAAC,WAAWlB,EAAI4gC,gBAAgB,IAAG,GAAI5gC,EAAa,UAAEC,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,YAAY,GAAGD,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,WAAWsD,YAAY,CAAC,cAAc,OAAO,CAACzD,EAAG,MAAM,CAACG,YAAY,UAAUH,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,YAAY,CAACG,YAAY,aAAaG,MAAM,CAAC,cAAc,aAAa,MAAQP,EAAIa,GAAG,gBAAgB,KAAO,EAAE,WAAa,GAAGK,GAAG,CAAC,aAAalB,EAAI6gC,SAAS,GAAG5gC,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,YAAY,CAACG,YAAY,aAAaG,MAAM,CAAC,cAAc,eAAe,MAAQP,EAAIa,GAAG,kBAAkB,KAAO,EAAE,WAAa,GAAGK,GAAG,CAAC,eAAelB,EAAI8gC,iBAAiB,OAAO7gC,EAAG,MAC1yC,EACI,GAAkB,GCsDtB,wBACA,0BACA,kDACA,YACA,OACA,QACA,YACA,YAEA,cACA,aACA,aAGA,gBACA,OAEA,uDACA,aACA,cAEA,EACA,UACA,sBACA,oBACA,8BACA,gBAEA,qDACA,SAEA,QACA,EACA,qBACA,oBACA,8BACA,kFAEA,QACA,EACA,iBACA,oBACA,8BACA,yDAEA,QACA,EACA,oBACA,kCACA,EACA,wBACA,oBACA,sBAEA,EACA,EACA,mBACA,6CACA,EACA,6BACA,kCACA,GAEA,mBACA,cACA,6BAEA,EACA,SACA,sBACA,oBACA,8BACA,sBAEA,EACA,yBACA,oBACA,8BACA,sBAEA,EACA,4BACA,MAEA,gCAEA,sBAEA,CAEA,kCACA,OAEA,oB,CAGA,wEAGA,mBAFA,mBAIA,sCACA,EACA,sBACA,oBACA,8BACA,8FAEA,EACA,wBACA,oBACA,8BACA,2FAEA,EACA,wBAEA,uBACA,mBACA,EACA,2BACA,OACA,eACA,mBACA,4DAEA,mCAEA,kDACA,kBAEA,iBACA,cACA,gBAEA,6CACA,cACA,MAEA,4DAEA,gCAEA,kDACA,kBAEA,iBACA,cACA,gBAEA,6CACA,cACA,IAEA,KClNgQ,MCQ5P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCyBhC,wBACA,qBACA,OACA,QACA,YACA,aAGA,gBACA,OACA,sIACA,cAEA,EACA,UACA,mBACA,sCACA,YACA,EACA,wBACA,oBACA,yBACA,GACA,sBACA,GACA,yBACA,GACA,sBACA,GACA,4BACA,GACA,8BACA,GACA,wCACA,GAEA,GAGA,IACA,EACA,6BACA,oBACA,aACA,4CACA,eACA,+CACA,gBACA,+CACA,eACA,8CACA,YACA,4CACA,eACA,+CACA,YACA,4CACA,kBACA,kDACA,oBACA,4CACA,8BACA,yCACA,QACA,SAEA,GAEA,mBACA,cACA,6BAEA,EACA,iCACA,oBACA,mDACA,oBACA,SACA,IAEA,K,CAGA,UACA,EACA,SAEA,4BACA,iBACA,EACA,0BACA,kBACA,EACA,yBACA,kBACA,KC3IuP,MCQnP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAID,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,6BAA6B,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIsmC,qBAAqBrmC,EAAG,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C,EAAMklC,EAASvkB,EAAW,KACzCroB,KAAK6sC,OAAOC,KAAK,CACfnjC,QAAS6iC,EACT9kC,KAAMA,EACN+K,SAAU,MACV4V,SAAUA,EACV0kB,QAASH,GAEb,IC2EJ,wBACA,iCACA,oHACA,YACA,SAEA,gBACA,OACA,WACA,QACA,aACA,4BACA,mBACA,4BACA,iCACA,SACA,yBACA,iBACA,sBACA,8BACA,KACA,YACA,uBACA,wBACA,oBACA,gBACA,0BACA,eACA,eACA,+BACA,KACA,YACA,+BACA,qBACA,UACA,sBACA,iBACA,kBACA,gBACA,qDACA,oBACA,wBACA,4BACA,wBACA,0BACA,4BACA,mBACA,iBACA,oBACA,qBACA,eACA,iBACA,oBACA,iBAEA,kBACA,4CACA,cACA,8CACA,iBACA,uBACA,wBACA,gBACA,0BACA,eACA,+BACA,eACA,KACA,YACA,+BACA,qBACA,UACA,sBACA,iBACA,kBACA,gBACA,qDACA,oBACA,wBACA,4BACA,wBACA,0BACA,4BACA,oBACA,yBACA,mBACA,qBACA,sBACA,iBAEA,kBAGA,EACA,UACA,iBACA,qDACA,EACA,kBACA,oDACA,EACA,wBACA,mBACA,qCACA,iCACA,EACA,8BACA,wCACA,EACA,yBACA,mCACA,EACA,4BACA,iCACA,sBACA,yBACA,gEACA,IAEA,EACA,GAEA,mBACA,cACA,oDAGA,EACA,mBACA,OACA,2BAEA,EACA,SACA,+BAEA,mDACA,0CACA,iBACA,iCACA,2BACA,EACA,8CACA,gCACA,EACA,yCACA,2BACA,EACA,4BACA,qCACA,uCACA,gCACA,uBACA,wBACA,gBACA,0BACA,eACA,+BACA,eACA,KACA,YACA,+BACA,qBACA,UACA,sBACA,iBACA,kBACA,gBACA,qDACA,oBACA,wBACA,4BACA,wBACA,0BACA,4BACA,oBACA,yBACA,mBACA,qBACA,sBACA,iBAGA,EACA,uBACA,gCACA,kCACA,2BACA,uBACA,wBACA,oBACA,gBACA,0BACA,eACA,+BACA,eACA,KACA,YACA,+BACA,qB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AM,CAACvH,MAAOvB,EAAIo+B,UAAoB,WAAEr1B,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIo+B,UAAW,aAAcp1B,EAAI,EAAEvH,WAAW,2BAA2B,KAAKxB,EAAG,MAAM,CAACG,YAAY,6BAA6B,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,SAAS,KAAO,EAAE,MAAQP,EAAIa,GAAG,wBAAwB,cAAc,YAAYK,GAAG,CAAC,SAAWlB,EAAI8e,WAAW,GAAG7e,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,SAAS,KAAO,EAAE,MAAQP,EAAIa,GAAG,sBAAsB,cAAc,UAAUK,GAAG,CAAC,OAASlB,EAAI6gC,SAAS,QAClyC,EACI,GAAkB,GC4DtB,wBACA,oCACA,8DACA,YACA,OACA,OACA,aACA,aAGA,gBACA,OACA,aACA,sBAEA,EACA,UACA,wBACA,kBACA,kCACA,oCACA,EACA,4BACA,iCACA,sBACA,yBACA,gEACA,IAEA,EACA,GAEA,mBACA,gFACA,aAEA,2BACA,uBACA,wBACA,oBACA,gBACA,0BACA,eACA,+BACA,eACA,KACA,YACA,+BACA,qBACA,UACA,sBACA,iBACA,kBACA,+BACA,qDACA,oBACA,wBACA,4BACA,wBACA,0BACA,4BACA,mBACA,iBACA,oBACA,qBACA,eACA,iBACA,oBACA,iBAGA,EACA,mBACA,OACA,2BAEA,EACA,iCACA,oDACA,mDACA,oBACA,MACA,Y,CAIA,OADA,2BACA,GACA,EACA,SACA,0BACA,4FACA,EACA,yCACA,2BACA,EACA,8BACA,oCACA,EACA,yBACA,+BACA,EACA,kBACA,2BACA,6BACA,EACA,oB,IAAA,OACA,4BACA,6HACA,0CACA,2BACA,cACA,sDACA,oBACA,KAEA,sBAEA,EACA,sCACA,gDAEA,sDACA,kCACA,GACA,iBAEA,qCACA,OACA,mB,KAPA,CAaA,kBACA,6CACA,wB,CACA,GACA,EACA,2CACA,kGACA,sCAEA,4BACA,kDA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R,EAAIY,GAAGZ,EAAIyqC,UAAU,QAC7mB,EACI,GAAkB,GCepB,IACEppC,KAAM,UACNkG,MAAO,CACLhE,MAAO,CACLP,KAAMwE,OACNC,QAAS,IAEXgjC,SAAU,CACRznC,KAAMwE,OACNC,QAAS,IAEX+iC,WAAY,CACVxnC,KAAMwE,OACNC,QAAS,IAEXijC,KAAM,CACJ1nC,KAAMwE,OACN,UACE,MAAO,EACT,IAGJ/E,QAAS,CACP,MAAA8nC,GACMjvC,KAAKovC,KACPpvC,KAAK6jB,QAAQljB,KAAKX,KAAKovC,MACqB,MAAnC7tC,eAAeC,QAAQ,QAChCxB,KAAK6jB,QAAQljB,KAAK,KAElBX,KAAK6jB,QAAQurB,MAEjB,IChD6H,MCQ/H,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCoHhC,wBACA,yCACA,6MACA,YACA,OACA,WACA,YACA,WAEA,SACA,YACA,cAGA,gBACA,OACA,qBAEA,EACA,UACA,4BACA,iCACA,sBACA,yBACA,gEACA,IAEA,EACA,EACA,iC,QACA,oHACA,OACA,eACA,iBACA,wBAIA,eACA,gDAEA,OACA,mCACA,uCACA,gDAEA,EACA,8B,QACA,kHACA,oDACA,OACA,iCACA,gCACA,8B,CAIA,WACA,EACA,iC,YAEA,oHACA,+GACA,yIACA,GAEA,8BACA,GACA,qCACA,iCACA,sBACA,uBAEA,6GACA,uCACA,KAEA,uBAGA,YACA,sCACA,EACA,mBACA,OACA,2BAEA,EACA,SACA,oBACA,gDACA,EACA,yBACA,0CACA,EACA,mCACA,oBACA,EACA,+BACA,qBACA,gCAEA,EACA,8CACA,qBACA,gDAEA,EACA,mCACA,qBACA,iFACA,qFACA,2FAEA,EACA,gCACA,qBACA,8FACA,wFAEA,EACA,qC,OACA,iEAEA,uDACA,EACA,kBACA,kFACA,oBACA,EACA,oB,MAAA,OACA,mKACA,8DACA,2BACA,kBACA,2DACA,oBACA,KAEA,sBAEA,EACA,sCACA,gDAEA,sDACA,kCACA,GACA,iBAEA,qCACA,OACA,mB,MAKA,oBA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,UAAUK,GAAG,CAAC,OAASlB,EAAI6gC,SAAS,SAAS7gC,EAAIS,IAC/qF,EACI,GAAkB,GCiHtB,wBACA,oCACA,wKACA,YACA,OACA,WACA,YACA,WAEA,SACA,YACA,cAGA,gBACA,OACA,qBACA,sBAEA,EACA,UACA,4BACA,iCACA,sBACA,yBACA,gEACA,IAEA,EACA,EACA,iC,QACA,+GACA,OACA,eACA,iBACA,wBAIA,eACA,2CAEA,OACA,mCACA,uCACA,gDAEA,EACA,8B,QACA,6GACA,+CACA,OACA,iCACA,gCACA,8B,CAIA,WACA,EACA,iC,YAEA,+GACA,0GACA,oIACA,GAEA,8BACA,GACA,qCACA,iCACA,sBACA,uBAEA,wGACA,uCACA,KAEA,uBAGA,YACA,sCACA,EACA,mBACA,OACA,2BAEA,EACA,SACA,oBACA,gDACA,EACA,+BACA,qBACA,gCAEA,EACA,yCACA,qBACA,2CAEA,EACA,mCACA,qBACA,4EACA,gFACA,sFAEA,EACA,gCACA,qBACA,yFACA,mFAEA,EACA,qC,OACA,iEAEA,uDACA,EACA,kBACA,kFACA,oBACA,EACA,oB,MAAA,OACA,8JACA,yDACA,2BACA,kBACA,sDACA,oBACA,KAEA,sBAEA,EACA,sCACA,gDAEA,sDACA,kCACA,GACA,iBAEA,qCACA,OACA,mB,MAKA,oBACA,sBAEA,kCACA,mC,CAEA,GACA,EACA,2CACA,4BAEA,+GACA,sCACA,qFACA,gBACA,iBACA,GACA,EACA,8B,UAYA,OAVA,+CACA,kEAEA,wMACA,kHAEA,2FACA,yFAGA,CACA,EACA,oCACA,sBACA,4BAEA,gCACA,IACA,4BAEA,oCACA,WAEA,gCAGA,kDAEA,KC3T6Q,MCQzQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,wCAAwC,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIsmC,qBAAqBrmC,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,KAAKA,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAAEJ,EAAiB,cAAEC,EAAG,aAAa,CAACmG,IAAI,mBAAmB7F,MAAM,CAAC,GAAK,mBAAqBP,EAAIiQ,KAAK,oBAAoBjQ,EAAIgK,iBAAiB,0BAA0B,GAAG,gBAAgB,MAAMhK,EAAIS,MAAM,KAAKR,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAAEJ,EAAiB,cAAEC,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,uBAAuB,YAAYb,EAAIoK,OAAOC,IAAI,uBAAuB,KAAO,sBAAsB,UAAW,EAAK,SAAWrK,EAAI2qC,eAAe,QAAU3qC,EAAIa,GAAG,gCAAgCiI,MAAM,CAACvH,MAAOvB,EAAIsoC,cAAyB,YAAEv/B,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIsoC,cAAe,cAAet/B,EAAI,EAAEvH,WAAW,+BAA+BzB,EAAIS,MAAM,GAAGR,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAAEJ,EAAiB,cAAEC,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,QAAUE,WAAW,YAAYlB,MAAM,CAAC,KAAOP,EAAIa,GAAG,iBAAiB,YAAYb,EAAIoK,OAAOC,IAAI,uBAAuB,KAAO,uBAAuBvB,MAAM,CAACvH,MAAOvB,EAAIsoC,cAAmB,MAAEv/B,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIsoC,cAAe,QAASt/B,EAAI,EAAEvH,WAAW,yBAAyBzB,EAAIS,MAAM,KAAMT,EAAiB,cAAEC,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAiB,cAAEC,EAAG,kBAAkB,CAACM,MAAM,CAAC,QAAUP,EAAIsoC,cAAc,kBAAiB,GAAOpnC,GAAG,CAAC,MAAQlB,EAAIuoC,0BAA0BvoC,EAAIS,MAAM,KAAKT,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAiB,cAAEC,EAAG,yBAAyB,CAACM,MAAM,CAAC,UAAYP,EAAIsoC,cAActK,YAAY98B,GAAG,CAAC,MAAQlB,EAAIumC,sBAAsBvmC,EAAIS,MAAM,KAAKR,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAiB,cAAEC,EAAG,2BAA2B,CAACM,MAAM,CAAC,UAAYP,EAAIsoC,cAActK,WAAWK,iBAAiBn9B,GAAG,CAAC,MAAQlB,EAAI2mC,qCAAqC3mC,EAAIS,MAAM,KAAKR,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,8CAA8CZ,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAiB,cAAEC,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIwoC,sBAAsB,SAAWxoC,EAAIyoC,uBAAuBvnC,GAAG,CAAC,MAAQlB,EAAI0oC,0BAA0B1oC,EAAIS,MAAM,GAAGR,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAiB,cAAEC,EAAG,aAAa,CAACM,MAAM,CAAC,MAAQP,EAAI2oC,mBAAmB,SAAW3oC,EAAIyoC,uBAAuBvnC,GAAG,CAAC,MAAQlB,EAAI4oC,uBAAuB5oC,EAAIS,MAAM,GAAGR,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAIsoC,cAAwB,WAAEroC,EAAG,oBAAoB,CAACM,MAAM,CAAC,MAAQP,EAAIsoC,cAActK,WAAW6K,eAAe3nC,GAAG,CAAC,MAAQlB,EAAI8oC,0BAA0B9oC,EAAIS,MAAM,KAAKR,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAiB,cAAEC,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,8BAA8B,KAAO,GAAGiI,MAAM,CAACvH,MAAOvB,EAAIsoC,cAActK,WAAWK,gBAA4B,aAAEt1B,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIsoC,cAActK,WAAWK,gBAAiB,eAAgBr1B,EAAI,EAAEvH,WAAW,2DAA2DzB,EAAIS,MAAM,KAAKR,EAAG,MAAM,CAACG,YAAY,6BAA6B,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,SAAS,KAAO,EAAE,MAAQP,EAAIa,GAAG,wBAAwB,cAAc,YAAYK,GAAG,CAAC,SAAWlB,EAAI8e,WAAW,GAAG7e,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,SAAS,KAAO,EAAE,SAAWP,EAAIwlC,SAAS,MAAQxlC,EAAIa,GAAG,sBAAsB,cAAc,UAAUK,GAAG,CAAC,OAASlB,EAAI6gC,SAAS,OAAO5gC,EAAG,UAAU,CAACM,MAAM,CAAC,GAAKP,EAAIiQ,KAAO,QAAQ,KAAO,OAAO,SAAW,GAAG,kBAAkB,GAAG,cAAc,IAAI/O,GAAG,CAAC,MAAQlB,EAAI4qC,aAAa9hC,MAAM,CAACvH,MAAOvB,EAAa,UAAE+I,SAAS,SAAUC,GAAMhJ,EAAI6qC,UAAU7hC,CAAG,EAAEvH,WAAW,cAAc,CAACxB,EAAG,MAAM,CAACM,MAAM,CAAC,KAAO,gBAAgB0I,KAAK,gBAAgB,CAAChJ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,mCAAoCb,EAAa,UAAEC,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACA,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,yCAA0Cb,EAAe,YAAEC,EAAG,MAAM,CAACA,EAAG,IAAI,CAACA,EAAG,IAAI,CAACyD,YAAY,CAAC,cAAc,SAAS,CAAC1D,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,kCAAkC,OAAOb,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI8qC,YAAY12B,cAAcnU,EAAG,IAAI,CAACA,EAAG,IAAI,CAACyD,YAAY,CAAC,cAAc,SAAS,CAAC1D,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,iCAAiC,OAAOb,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI8qC,YAAYz2B,UAAU,OAAOpU,EAAG,IAAI,CAACA,EAAG,IAAI,CAACyD,YAAY,CAAC,cAAc,SAAS,CAAC1D,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8B,OAAOb,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI8qC,YAAYx2B,UAAUrU,EAAG,IAAI,CAACA,EAAG,IAAI,CAACyD,YAAY,CAAC,cAAc,SAAS,CAAC1D,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwB,OAAOb,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI8qC,YAAYl2B,gBAAgB3U,EAAG,IAAI,CAACA,EAAG,IAAI,CAACyD,YAAY,CAAC,cAAc,SAAS,CAAC1D,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6B,OAAOb,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI8qC,YAAYt5B,SAASvR,EAAG,IAAI,CAACA,EAAG,IAAI,CAACyD,YAAY,CAAC,cAAc,SAAS,CAAC1D,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,kCAAkC,OAAOb,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIymB,iBAAiB,OAAOxmB,EAAG,IAAI,CAACA,EAAG,IAAI,CAACyD,YAAY,CAAC,cAAc,SAAS,CAAC1D,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,2BAA2B,OAAOb,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI+qC,+BAAgC/qC,EAAI8qC,YAAY9M,YAAch+B,EAAI8qC,YAAY9M,WAAWwI,mBAAoBvmC,EAAG,IAAI,CAACA,EAAG,IAAI,CAACyD,YAAY,CAAC,cAAc,SAAS,CAAC1D,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,2CAA2C,OAAOb,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,iBAAiB,OAAOb,EAAIS,KAAMT,EAAI8qC,YAAY9M,YAAch+B,EAAI8qC,YAAY9M,WAAWyI,cAAexmC,EAAG,IAAI,CAACA,EAAG,IAAI,CAACyD,YAAY,CAAC,cAAc,SAAS,CAAC1D,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,sCAAsC,OAAOb,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,iBAAiB,OAAOb,EAAIS,OAAOT,EAAIS,SAAST,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,kBAAkBG,MAAM,CAAC,KAAO,gBAAgB0I,KAAK,gBAAgB,CAAChJ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,0CAA0C,CAAEJ,EAAI8qC,cAAgB9qC,EAAI8qC,YAAY9M,WAAY/9B,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,SAAS,KAAO,EAAE,MAAQP,EAAIa,GAAG,yBAAyB,cAAc,aAAaK,GAAG,CAAC,UAAYlB,EAAIgrC,mBAAmBhrC,EAAIS,KAAKR,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,SAAS,KAAO,EAAE,MAAQP,EAAIa,GAAG,wBAAwB,cAAc,YAAYK,GAAG,CAAC,SAAWlB,EAAI4qC,gBAAgB,UAAU,EACxuN,EACI,GAAkB,GCiOtB,wBACA,4CACA,6MACA,YACA,OACA,WACA,YACA,WAEA,SACA,YACA,cAGA,gBACA,OACA,qBACA,YACA,aACA,mBACA,8BACA,iBAEA,EACA,UACA,0B,MACA,sEACA,EACA,iBACA,+BACA,EACA,kBACA,8BACA,EACA,2BACA,8BACA,qCACA,yCACA,EACA,wBACA,mBACA,qCACA,iCACA,EACA,4BACA,iCACA,sBACA,yBACA,gEACA,IAEA,EACA,EAEA,iC,QACA,oHACA,OACA,eACA,iBACA,wBAIA,eACA,gDAEA,OACA,mCACA,uCACA,gDAEA,EACA,8B,QACA,gIAEA,oDAEA,OACA,iCACA,gCACA,8BAEA,EACA,iC,4BACA,2HAEA,6KACA,+KACA,0MACA,GAEA,8BACA,gBACA,OACA,qCACA,iCACA,sBACA,uBAEA,6GACA,uCACA,KAEA,uBAGA,YACA,sC,MAEA,oBACA,aACA,qBACA,QACA,WACA,SACA,aACA,iBACA,kBACA,0BACA,YACA,QACA,aACA,4BACA,mBACA,4BACA,iCACA,SACA,yBACA,iBACA,sBACA,8BACA,KACA,YACA,uBACA,wBACA,oBACA,gBACA,qCACA,eACA,+BACA,eACA,KACA,YACA,+BACA,qBACA,qBACA,UACA,sBACA,iBACA,kBACA,gBACA,qDACA,oBACA,wBACA,4BACA,wBACA,0BACA,4BACA,kCACA,mBACA,iBACA,oBACA,qBACA,eACA,iBACA,oBACA,iBAEA,kBACA,SACA,cACA,YACA,iBACA,uBACA,wBACA,gBACA,qCACA,eACA,+BACA,eACA,KACA,YACA,+BACA,qBACA,qBACA,UACA,sBACA,iBACA,kBACA,gBACA,qDACA,oBACA,wBACA,4BACA,wBACA,0BACA,4BACA,kCACA,oBACA,yBACA,mBACA,qBACA,sBACA,iBAEA,kBAEA,KACA,cACA,YACA,oBACA,eACA,mBACA,iBACA,kBACA,cACA,WAGA,EACA,mBACA,OACA,2BAEA,EACA,SACA,oBACA,gDACA,EACA,mCACA,oBACA,EACA,+BACA,qBAEA,gCACA,EACA,8CACA,qBAEA,gDACA,EAEA,mCACA,qBAEA,iFACA,qFACA,2FACA,EACA,gCACA,qBAEA,8FACA,wFACA,EACA,qC,OACA,iEAEA,uDACA,EACA,kBACA,kBACA,4EACA,oDACA,oBACA,EACA,oB,MAAA,OAEA,mKACA,8DACA,2BACA,kBACA,2DACA,oBACA,KAEA,sBAEA,EACA,sCACA,gDAEA,sDACA,kCACA,GACA,iBAEA,qCACA,OACA,mB,MAKA,oBACA,sBAEA,6BACA,QACA,sBAEA,wB,CAGA,GACA,EACA,8CACA,OAEA,mBACA,YACA,cACA,sBACA,mBACA,oBACA,YACA,8BACA,mBAGA,gBACA,UACA,mBACA,sCACA,qBACA,gBACA,eACA,eACA,wBACA,kDACA,wBACA,YACA,kBACA,SACA,gCACA,gCACA,kBACA,0BACA,YACA,+BACA,0BACA,YACA,kCACA,kBACA,SACA,0BACA,gCACA,wBACA,qBACA,yBACA,kBACA,wBACA,2BAGA,QACA,EACA,6BAEA,0CACA,6CAIA,kCACA,kBAEA,EACA,wBACA,WACA,oDACA,eACA,QACA,EACA,6B,4BAAA,oB,oFACA,gB,GAEA,iBACA,MAEA,oBAEA,uI,iBAEA,O,sBAAA,sB,OAQA,OARA,WAEA,SACA,wBACA,kBACA,+CACA,oEAEA,gBAGA,iBACA,K,aAMA,O,WAHA,uBACA,oBACA,iBACA,I,cAKA,qGAEA,4CACA,yBACA,0CAEA,0BAGA,wEACA,gBACA,cACA,mEAEA,kCACA,iBAEA,gBACA,kCACA,gBACA,I,aAEA,gHACA,uCACA,cACA,gEACA,gBACA,cACA,iBACA,I,wBAEA,iB,YAEA,gC,4BAAA,oB,iDACA,UAEA,kDAEA,iBAIA,mGAEA,0CACA,gCAIA,kDACA,gBACA,cACA,mEAEA,kCACA,iBAEA,gBACA,kCACA,gBACA,IAEA,iB,KA5BA,G,QA8BA,4CACA,OACA,QACA,uDACA,iEACA,2BACA,yDACA,mEACA,gCACA,oBACA,eACA,yCACA,mDACA,mCACA,8CAEA,QACA,EACA,wBACA,SACA,SAEA,uBAEA,qDAEA,oDACA,2BAIA,iBAGA,oBACA,EACA,yBACA,0CACA,EACA,2BAGA,GADA,kBACA,oBACA,yBAEA,6BACA,2B,CAEA,EACA,2CACA,MAEA,kDAEA,iBACA,SAEA,EADA,6BACA,sGAEA,iHAEA,sCACA,cACA,qFACA,gBACA,cACA,iBACA,GAjBA,CAkBA,EACA,8B,UAYA,OAVA,+CACA,kEAEA,sLACA,4HAEA,gGACA,mGAGA,CACA,EACA,uBACA,iBACA,EACA,oCACA,IAEA,sBACA,4BAEA,gCACA,IACA,4BAEA,oCACA,WAEA,gCAGA,mDAEA,KCnyBqR,MCQjR,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe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BACA,QACA,WACA,SACA,aACA,iBACA,kBACA,0BACA,YACA,QACA,aACA,4BACA,mBACA,4BACA,iCACA,SACA,yBACA,iBACA,sBACA,8BACA,KACA,YACA,uBACA,wBACA,oBACA,gBACA,qCACA,eACA,+BACA,eACA,KACA,YACA,+BACA,qBACA,qBACA,UACA,sBACA,iBACA,kBACA,gBACA,qDACA,oBACA,wBACA,4BACA,wBACA,0BACA,4BACA,kCACA,mBACA,iBACA,oBACA,qBACA,eACA,iBACA,oBACA,iBAEA,kBACA,SACA,cACA,YACA,iBACA,uBACA,wBACA,gBACA,0BACA,eACA,+BACA,eACA,KACA,YACA,+BACA,qBACA,qBACA,UACA,sBACA,iBACA,kBACA,gBACA,qDACA,oBACA,wBACA,4BACA,wBACA,0BACA,4BACA,kCACA,oBACA,yBACA,mBACA,qBACA,sBACA,iBAEA,kBAEA,KACA,cACA,YACA,oBACA,eACA,mBACA,iBACA,kBACA,cACA,WAIA,EACA,mBACA,OACA,2BAEA,EACA,SACA,oBACA,gDACA,EACA,mCACA,oBACA,EACA,+BACA,qBAEA,gCACA,EACA,yCACA,qBAEA,2CACA,EACA,mCACA,qBACA,4EACA,gFACA,sFACA,EACA,gCACA,qBAEA,yFACA,mFACA,EACA,qC,OACA,iEAEA,uDACA,EACA,kBACA,kBACA,4EACA,oDACA,oBACA,EACA,oB,MAAA,OACA,8JACA,yDACA,2BACA,kBACA,sDACA,oBACA,KAEA,sBAEA,EACA,sCACA,gDAEA,sDACA,kCACA,GACA,iBAEA,qCACA,OACA,mB,MAKA,oBACA,sBAEA,kCACA,QACA,sBAEA,wB,CAGA,GACA,EACA,wCACA,MAEA,kDAEA,iBACA,+GACA,uCACA,cACA,gEACA,gBACA,cACA,iBACA,GAZA,CAaA,EACA,2CACA,MAEA,kDAEA,iBACA,kHACA,sCACA,cACA,qFACA,gBACA,cACA,iBACA,GAZA,CAaA,EACA,8B,cAWA,OATA,+CACA,sCAEA,wMACA,sHAEA,2FACA,6FAEA,CACA,E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CAAgC,MACrua,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIzB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAOJ,EAAI2G,GAAI3G,EAAQ,MAAE,SAAS5C,GAAM,OAAO6C,EAAG,MAAM,CAACI,IAAIjD,EAAKiD,IAAIyB,MAAM9B,EAAI2W,gBAAgBpW,MAAM,CAAC,MAAQnD,IAAO,CAAC6C,EAAG,WAAW,CAACM,MAAM,CAAC,MAAQnD,EAAKiD,IAAI,QAAUL,EAAI4W,WAAWxZ,EAAKiD,KAAK,MAAQjD,EAAK4J,MAAM9F,GAAG,CAAC,QAAU,SAASQ,GAAQ,OAAO1B,EAAI6W,UAAUzZ,EAAK,MAAM,EAAE,IAAG,IAC3b,EACI,GAAkB,GCatB,wBACA,6BACA,yBACA,OACA,MACA,WACA,8BAEA,OACA,WACA,YAEA,MACA,YACA,+BAGA,UACA,2BACA,+CACA,GAEA,SACA,uBACA,gEACA,EACA,sBACA,iBACA,iEAEA,MAEA,UAGA,cAEA,qBACA,KCrD6P,MCQzP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC4XhC,wBACA,sBACA,YACA,aACA,wBACA,iBACA,iBACA,iBACA,sBACA,uBACA,eAEA,kBACA,sBACA,OACA,UACA,YACA,aAEA,OACA,aACA,aAGA,UACA,yBACA,wCACA,EACA,+BACA,eACA,cACA,0BACA,iBACA,0BACA,qBACA,2CAEA,wCACA,EACA,4BACA,kBACA,sBAEA,kBACA,EACA,wCACA,wGACA,yDACA,GACA,EACA,oCACA,oGACA,qDACA,GACA,EACA,uCACA,uGACA,wDACA,GACA,EACA,wCACA,wGACA,yDACA,GACA,EACA,mBACA,WACA,uDACA,+CACA,GACA,EACA,wBACA,WACA,mGACA,oDACA,GACA,EACA,iCACA,WACA,4GACA,6DACA,GACA,EACA,4CACA,iEACA,yDACA,GACA,EACA,wCACA,2DACA,wDACA,GACA,E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,8CACA,uBACA,CACA,wCACA,kBACA,iBAIA,CACA,wCACA,gBACA,cAEA,EACA,mCACA,8BAEA,qDACA,oCACA,8CACA,8CACA,OACA,oEACA,0CACA,uCACA,+CACA,0BACA,kCAEA,EACA,iC,MACA,uBAGA,2CACA,8CACA,0EACA,GAEA,mBACA,OACA,2BAEA,EACA,8BACA,gBACA,mLACA,kDACA,kBACA,WACA,gBACA,iBACA,G,MAEA,eACA,wCACA,mBACA,QACA,eACA,gBACA,oBACA,mBACA,sBACA,mBACA,wBACA,kBACA,oBACA,sBACA,uBACA,yBACA,mCACA,qBACA,kCACA,oCACA,qBACA,uBACA,yBACA,+BACA,eACA,aACA,qCACA,eACA,eACA,YACA,kBACA,YACA,aACA,KACA,iBACA,2BACA,qBACA,+BACA,YACA,sBACA,oBACA,UACA,iBACA,uBACA,gBACA,kBACA,+BACA,qDACA,gBACA,oBACA,wBACA,4BACA,iBACA,WACA,mCACA,UAEA,cAEA,EACA,SACA,oBACA,gDACA,EACA,oCACA,eACA,EACA,mCACA,gBAEA,gDACA,oDACA,0DACA,EACA,gCACA,gBAEA,+DACA,wDACA,EACA,qCACA,gBAEA,uCACA,EACA,kCACA,gBAEA,0CACA,uFACA,EACA,qCACA,gBAEA,sEACA,mIACA,4CACA,4FACA,EACA,kBACA,kBACA,4EACA,mDACA,oBACA,EACA,oB,EAAA,QACA,iFACA,8BACA,2BACA,aACA,0CACA,oBACA,KAEA,sBAEA,EACA,sCACA,gDAEA,sDACA,kCACA,GACA,iBAEA,qCACA,OACA,mB,MAKA,aACA,SACA,mBAEA,gBAGA,gBACA,+BACA,GACA,EACA,kCACA,kBAEA,oDAEA,iBACA,qGAGA,mDACA,cACA,+DACA,gBACA,cACA,iBACA,GAdA,CAeA,EACA,qCACA,kBAEA,oDAEA,iBACA,wGAEA,kD,MACA,cACA,sHACA,gBACA,cACA,iBACA,GAbA,CAcA,EACA,8BACA,UAGA,kBACA,qCAEA,qDACA,6DAEA,oBACA,yCAEA,GAZA,CAaA,EA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,EAAG,YAAY,CAACM,MAAM,CAAC,KAAOP,EAAIa,GAAG,yBAAyB,YAAW,GAAMiI,MAAM,CAACvH,MAAOvB,EAAIwkB,cAA8B,iBAAEzb,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIwkB,cAAe,mBAAoBxb,EAAI,EAAEvH,WAAW,qCAAqC,MACn8E,EACI,GAAkB,GCiFtB,wBACA,8BACA,0BACA,OACA,OACA,YACA,cAGA,gBACA,OACA,iBAEA,EACA,OACA,kBACA,oBACA,GAEA,mBACA,aACA,8BAEA,EACA,SACA,kBACA,sCACA,KC9GuQ,MCQnQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC4IhC,wBACA,uBACA,mNACA,YACA,OACA,YACA,YACA,YACA,WAEA,SACA,YACA,cAGA,gBACA,OACA,UACA,YACA,gBAEA,EACA,UACA,kBACA,wBACA,EACA,wBACA,mBACA,0CACA,wCACA,EACA,4BACA,iCACA,sBACA,yBACA,gEACA,IAEA,EACA,EACA,iCACA,8BAEA,eACA,OACA,8CACA,kDACA,2DAEA,EACA,8BACA,qBAEA,CACA,8CACA,6CACA,2CALA,IAOA,EACA,gCACA,8BAGA,uCACA,8CACA,uBACA,CACA,wCACA,kBACA,iBAIA,CACA,wCACA,gBACA,cAEA,EACA,mCACA,8BACA,qDACA,oCACA,8CACA,8CACA,OACA,oEACA,0CACA,uCACA,+CACA,0BACA,kCAEA,EACA,iC,MACA,uBAEA,2CACA,8CACA,0EACA,GAEA,mBACA,OACA,2BAEA,EACA,8BACA,gBACA,8KACA,kDACA,kBACA,WACA,gBACA,iBACA,G,MAEA,eACA,wCACA,mBACA,QACA,eACA,gBACA,oBACA,mBACA,sBACA,mBACA,wBACA,kBACA,oBACA,sBACA,uBACA,yBACA,mCACA,qBACA,kCACA,oCACA,qBACA,uBACA,yBACA,+BACA,eACA,aACA,qCACA,eACA,eACA,YACA,kBACA,YACA,aACA,KACA,iBACA,2BACA,qBACA,+BACA,YACA,sBACA,oBACA,UACA,iBACA,uBACA,gBACA,kBACA,+BACA,qDACA,gBACA,oBACA,wBACA,4BACA,iBACA,WACA,mCACA,SACA,mBACA,iBACA,oBACA,qBACA,eACA,iBACA,qBAEA,cAEA,EACA,SACA,oBACA,gDACA,EACA,8BACA,eACA,EACA,mCACA,gBAEA,gDACA,oDACA,0DACA,EACA,gCACA,gBAEA,+DACA,wDACA,EACA,qCACA,gBAEA,uCACA,EACA,kCACA,gBAEA,0CACA,uFACA,EACA,qCACA,gBAEA,sEACA,mIACA,4CACA,4FACA,EACA,kBACA,kBACA,4EACA,mDACA,oBACA,EACA,oB,EAAA,QACA,iFACA,8BACA,2BACA,aACA,0CACA,oBACA,KAEA,sBAEA,EACA,sCACA,gDAEA,sDACA,kCACA,GACA,iBAEA,qCACA,OACA,mB,MAKA,aACA,SACA,mBAEA,gBAGA,gBACA,+BACA,GACA,EACA,kCACA,kBAEA,oDAEA,iBACA,gGAEA,mDACA,cACA,+DACA,gBACA,cACA,iBACA,GAbA,CAcA,EACA,qCACA,kBAEA,oDAEA,iBACA,mGAEA,kD,MACA,cACA,sHACA,gBACA,cACA,iBACA,GAbA,CAcA,EACA,8BACA,UAGA,kBACA,qCAEA,qDACA,6DAEA,oBACA,yCAGA,GAbA,CAcA,EACA,oCACA,sBACA,4BAEA,gCACA,IACA,4BAEA,oCACA,WAEA,gCAGA,kDAEA,KC1egQ,MCQ5P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIzB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAa,UAAEyB,WAAW,cAAcrB,YAAY,WAAW,CAACH,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,KAAMD,EAAgB,aAAEC,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAA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CA,oCAEA,iFAEA,EACA,OACA,kBACA,WACA,GAEA,mBACA,oBACA,EACA,SAEA,+BACA,2CACA,6BACA,EACA,gCACA,2CACA,6BACA,EACA,iCACA,4CACA,6BACA,EACA,oCACA,iEACA,6DACA,6BACA,EACA,+BACA,uCACA,6BACA,EACA,iCACA,6CACA,6BACA,EACA,yBACA,qCACA,6BACA,EACA,8BACA,iDACA,6BACA,EACA,4BACA,+CACA,6BACA,EACA,uBACA,kCACA,6BACA,EACA,qCACA,gDACA,6BACA,EACA,yBACA,8BACA,KACA,kBAEA,+BAEA,EACA,iCACA,sBACA,KACA,kBAEA,uBAEA,EACA,yBACA,yBACA,KC5P4P,MCQxP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCqBhC,wBACA,sBACA,4BACA,OACA,YACA,YACA,qBAEA,OACA,YACA,aAEA,SACA,aACA,aAGA,gBACA,OACA,sCAEA,EACA,UACA,yBACA,WACA,gCACA,6FACA,qDACA,IAEA,0FACA,kDACA,GAEA,EACA,0BACA,WACA,qGACA,mDACA,GACA,EACA,qBACA,WACA,wGACA,sDACA,GACA,EACA,2BACA,WACA,gCACA,OACA,mGACA,gCACA,mBACA,oDACA,IAEA,OACA,gGACA,gCACA,mBACA,oDACA,GAEA,EACA,2BACA,WACA,iEACA,sDACA,GACA,EACA,gBACA,WACA,mGACA,4DACA,GACA,EACA,mBACA,WACA,8FACA,uDACA,GACA,EACA,8BACA,WACA,yGACA,kEACA,GACA,GAEA,SACA,0BACA,6BACA,KCrI+P,MCQ3P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI7uC,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAA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,CAACG,YAAY,WAAW,CAACH,EAAG,OAAO,CAACG,YAAY,oBAAoB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,iCAAiCZ,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI0sC,OAAO,QAAQzsC,EAAG,OAAO,CAACG,YAAY,oBAAoB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,uCAAuCZ,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIiyC,oBAAoB,IAAIjyC,EAAIY,GAAGZ,EAAIkyC,sBACpf,EACI,GAAkB,GCStB,wBACA,kBACA,OACA,OACA,YACA,WAEA,MACA,YACA,WAEA,MACA,YACA,YAGA,UACA,8BACA,mCACA,EACA,4BACA,0BACA,gCACA,KClCqP,MCQjP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCchC,wBACA,aACA,2BACA,OACA,OACA,YACA,WAEA,MACA,YACA,WAEA,MACA,YACA,WAEA,mBACA,aACA,YAEA,YACA,YACA,YAGA,gBACA,OACA,kBACA,SAEA,EACA,UACA,uBACA,wCACA,EACA,8BACA,kBACA,EACA,4BACA,0BACA,gCACA,EACA,uBACA,2BACA,EACA,sBACA,6CACA,EACA,2BACA,0BACA,EACA,iBACA,eACA,SAGA,8FACA,KACA,IACA,4BACA,uCACA,IACA,6BACA,iD,CAEA,QACA,GAEA,mBACA,2BACA,EACA,SACA,8BACA,+BACA,EACA,2BAEA,sBAGA,OAFA,wBAEA,EAIA,oCAEA,qBAEA,iBAIA,yCAIA,wBAEA,GACA,EACA,sBACA,4BACA,4BACA,EACA,sBACA,4BACA,2BACA,EACA,kBACA,4BACA,uBACA,EACA,gCACA,sBACA,KCnJgP,MCQ5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCmChC,wBACA,kBACA,qGACA,OACA,YACA,YACA,YAEA,MACA,YACA,WAEA,MACA,YACA,YAEA,OACA,YACA,WAEA,cACA,WACA,8BAEA,eACA,WACA,8BAEA,OACA,YACA,cAGA,UACA,qBACA,8EACA,GAEA,SACA,2BACA,2BACA,EACA,2BACA,sBACA,EACA,uBACA,kBACA,KCrG2P,MCQvP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIlyC,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACJ,EAAI2G,GAAI3G,EAAiB,eAAE,SAAS6wC,GAAM,OAAO5wC,EAAG,WAAW,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,OAAQvB,EAAIkjC,QAASzhC,WAAW,aAAapB,IAAIwwC,EAAKjrC,GAAGrF,MAAM,CAAC,KAAOswC,EAAK,QAAU7wC,EAAImyC,MAAM,cAAc,WAAW,IAAGlyC,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAW,QAAEyB,WAAW,YAAYrB,YAAY,WAAW,CAACH,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,MAAM,MAC/lB,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAID,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,WAAW0B,MAAM,CAAC,QAAY9B,EAAI6wC,KAAKrxC,SAAWlE,KAAK8G,OAAOlF,MAAMk1C,WAAWC,UAAU,CAACpyC,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,WAAWc,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAI8wC,cAAc9wC,EAAI6wC,KAAKjrC,GAAG,IAAI,CAAC5F,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI6wC,KAAKxvC,MAAM,OAAOpB,EAAG,MAAM,CAACG,YAAY,WAAW,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIsyC,WAAWtyC,EAAI6wC,OAAO,SAAS5wC,EAAG,MAAM,CAACG,YAAY,kDAAkD,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAAEJ,EAAI6wC,KAAqB,iBAAE5wC,EAAG,OAAO,CAACD,EAAIQ,GAAG,IAAKR,EAAIY,GAAGZ,EAAI6wC,KAAKjS,kBAAkB,OAAQ5+B,EAAIS,SAASR,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAAqB,WAAnBJ,EAAIuyC,WAAyBtyC,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,4BAA4B,cAAc,UAAUK,GAAG,CAAC,OAASlB,EAAI0/B,aAAa,GAAG1/B,EAAIS,KAAyB,SAAnBT,EAAIuyC,WAAuBtyC,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,oBAAoB,cAAc,QAAQK,GAAG,CAAC,KAAOlB,EAAIwyC,WAAW,GAAGxyC,EAAIS,KAAyB,WAAnBT,EAAIuyC,WAAyBtyC,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI6wC,KAAK4B,eAAe,IAAIzyC,EAAIY,GAAGZ,EAAIa,GAAG,oCAAoCZ,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI6wC,KAAK6B,gBAAgB,IAAI1yC,EAAIY,GAAGZ,EAAIa,GAAG,uCAAuCb,EAAIS,UAC15C,EACI,GAAkB,GCFhBkyC,GAAgB,CACpBthC,cAAa,SAAEC,EAAeC,EAAYC,GACxC,MAAO,CAACF,EAAe,CAACC,EAAYC,GAAMzC,OAAOnE,SAAS6G,KAAK,MAAM1C,OAAOnE,SAAS6G,KAAK,KAC5F,GAGF,MC2CA,wBACA,gBACA,yBACA,YACA,OACA,MACA,YACA,aAEA,SACA,YACA,WAEA,YACA,YACA,iBACA,sBAEA,gDACA,IAGA,SACA,uBACA,sDACA,EACA,0BACA,0DACA,oBACA,EACA,kBACA,4BACA,EACA,oBACA,8BACA,KCpFyP,MCQrP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCkBhC,wBACA,yBACA,oCACA,OACA,QACA,WACA,8BAEA,QACA,YACA,aAGA,gBACA,OACA,WACA,oCACA,SAEA,EACA,UACA,oCACA,OACA,aAaA,OAZA,kCACA,iCACA,qCACA,KAGA,cACA,2BACA,8DACA,KAGA,CACA,GAEA,mBACA,eACA,EACA,SACA,oBACA,gBACA,gJACA,OACA,oCACA,eACA,YACA,GACA,KCxFkQ,MCQ9P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIzR,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACJ,EAAI2G,GAAI3G,EAAiB,eAAE,SAAS6wC,GAAM,OAAO5wC,EAAG,WAAW,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,OAAQvB,EAAIkjC,QAASzhC,WAAW,aAAapB,IAAIwwC,EAAKjrC,GAAGrF,MAAM,CAAC,KAAOswC,EAAK,QAAU7wC,EAAImyC,MAAM,cAAc,WAAW,IAAGlyC,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAW,QAAEyB,WAAW,YAAYrB,YAAY,WAAW,CAACH,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,MAAM,MAC1lB,EACI,GAAkB,GCmCtB,wBACA,oBACA,oCACA,OACA,QACA,WACA,8BAEA,QACA,YACA,aAGA,gBACA,OACA,WACA,oCACA,SAEA,EACA,UACA,oCACA,OACA,aAaA,OAZA,kCACA,iCACA,qCACA,KAGA,cACA,2BACA,8DACA,KAGA,CACA,GAEA,mBACA,eACA,EACA,SACA,oBACA,gBACA,2IACA,OACA,oCACA,eACA,YACA,GACA,KCxF6P,MCQzP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAID,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,uBAAuB0B,MAAM,CAAC,SAAa9B,EAAIy0B,kBAAkB,CAACx0B,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,WAAW,CAACmB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOvB,EAAe,YAAEyB,WAAW,gBAAgBlB,MAAM,CAAC,KAAO,IAAI,YAAcP,EAAIa,GAAG,kCAAkCqI,SAAS,CAAC,MAASlJ,EAAe,aAAGkB,GAAG,CAAC,MAAQ,SAASQ,GAAWA,EAAOoK,OAAOC,YAAiB/L,EAAI4yC,YAAYlxC,EAAOoK,OAAOvK,MAAK,OAAOtB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,sBAAsB,cAAc,cAAc,SAAsC,IAA3Bb,EAAI4yC,YAAYtvC,QAAcpC,GAAG,CAAC,YAAclB,EAAI6yC,sBAAsB,OAAO5yC,EAAG,WAAW,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAI8yC,OAAS9yC,EAAI8yC,MAAMxvC,OAAS,EAAG7B,WAAW,8BAA8BlB,MAAM,CAAC,MAAQP,EAAI8yC,MAAM,QAAU9yC,EAAImyC,MAAM,UAAYnyC,EAAI+yC,UAAU,MAAQ/yC,EAAIgzC,aAAa,aAAahzC,EAAIizC,UAAU,qBAAoB,GAAO/xC,GAAG,CAAC,QAAUlB,EAAIkzC,YAAY,MACtwC,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIlzC,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACA,EAAG,MAAM,CAACG,YAAY,YAAYJ,EAAI2G,GAAI3G,EAAc,YAAE,SAASmzC,GAAQ,OAAOlzC,EAAG,SAAS,CAACI,IAAI,UAAY8yC,EAAOvtC,GAAGrF,MAAM,CAAC,KAAO4yC,EAAO,SAAWnzC,EAAIozC,kBAAkBD,EAAOvtC,IAAI,MAAQ5F,EAAIqP,MAAM,UAAYrP,EAAI+yC,UAAU,aAAa/yC,EAAIizC,UAAU,oBAAoBjzC,EAAIqzC,gBAAgBnyC,GAAG,CAAC,OAASlB,EAAI6T,SAAS,IAAG,GAAG5T,EAAG,UAAU,CAAC6I,MAAM,CAACvH,MAAOvB,EAAa,UAAE+I,SAAS,SAAUC,GAAMhJ,EAAI6qC,UAAU7hC,CAAG,EAAEvH,WAAW,cAAc,CAACxB,EAAG,MAAM,CAACM,MAAM,CAAC,KAAO,gBAAgB0I,KAAK,gBAAgB,CAAChJ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwBZ,EAAG,MAAM,CAACG,YAAY,cAAcG,MAAM,CAAC,KAAO,gBAAgB0I,KAAK,gBAAgB,CAAChJ,EAAG,YAAY,CAACM,MAAM,CAAC,cAAc,MAAM,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,kBAAkBK,GAAG,CAAC,IAAMlB,EAAIszC,iBAAiBrzC,EAAG,YAAY,CAACM,MAAM,CAAC,cAAc,MAAM,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,kBAAkBK,GAAG,CAAC,IAAM,SAASQ,GAAQ1B,EAAI6qC,WAAY,CAAK,MAAM,GAAG5qC,EAAG,MAAM,CAACA,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,kCAAmCb,EAAS,MAAEC,EAAG,IAAI,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIuzC,eAAevzC,EAAIwzC,QAAQ,OAAOxzC,EAAIS,KAAMT,EAAS,MAAEC,EAAG,IAAI,CAACD,EAAIQ,GAAG,MAAMR,EAAIY,GAAGZ,EAAIwzC,MAAM9c,QAAQ,KAAK12B,EAAIY,GAAGZ,EAAIyzC,cAAczzC,EAAIwzC,MAAMtuC,OAAO,OAAOlF,EAAIS,UAAU,EACnxC,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAAC6B,MAAM,wCAA0C9B,EAAIyM,YAAYlM,MAAM,CAAC,GAAK,OAASP,EAAI0zC,KAAK9tC,KAAK,CAAC3F,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACG,YAAY,6BAA6B2C,MAAO/C,EAAiB,kBAAMC,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,8BAA8B,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI0zC,KAAKhd,aAAaz2B,EAAG,OAAO,CAACG,YAAY,QAAQ,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIyzC,cAAczzC,EAAI0zC,KAAKxuC,YAAalF,EAAa,UAAEC,EAAG,MAAM,CAACG,YAAY,UAAUG,MAAM,CAAC,MAAQ,UAAUW,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAI2zC,WAAW3zC,EAAI0zC,KAAK,IAAI,CAACzzC,EAAG,OAAO,CAACA,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,UAAU,KAAKP,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,WAAW,CAAGJ,EAAI0zC,KAAKE,QAA8D5zC,EAAIS,KAAzDR,EAAG,MAAM,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI0zC,KAAKzc,SAAS,SAAoBj3B,EAAI0zC,KAAKE,QAA+W3zC,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,+BAAlaZ,EAAG,MAAM,CAACA,EAAG,IAAI,CAACmB,WAAW,CAAC,CAACC,KAAK,YAAYC,QAAQ,sBAAsBC,MAAM,CAAGya,OAAO,GAAQva,WAAW,kBAAkBwa,IAAI,aAAa,CAACjc,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI0zC,KAAKG,SAAS,OAAO5zC,EAAG,IAAI,CAACA,EAAG,IAAI,CAACM,MAAM,CAAC,KAAO,SAASW,GAAG,CAAC,MAAQ,SAASQ,GAAgC,OAAxBA,EAAOkL,iBAAwB5M,EAAI8zC,SAAQ,EAAK,IAAI,CAAC9zC,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,4BAAwHb,EAAe,YAAEC,EAAG,MAAM,CAACG,YAAY,+BAA+Bc,GAAG,CAAC,MAAQ,SAASQ,GAAQ1B,EAAIyuC,aAAc,CAAK,IAAI,CAACxuC,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,kBAAkB8E,QAAQ,WAAY3F,EAAI+zC,aAAe,SAAS/zC,EAAIS,MAAOT,EAAIyuC,aAAezuC,EAAI+zC,aAAe,EAAG9zC,EAAG,MAAM,CAACG,YAAY,6BAA6Bc,GAAG,CAAC,MAAQ,SAASQ,GAAQ1B,EAAIyuC,aAAc,CAAI,IAAI,CAACxuC,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,2BAA2Bb,EAAIS,KAAKT,EAAI2G,GAAI3G,EAAoB,kBAAE,SAASg0C,EAAMtmC,GAAG,OAAOzN,EAAG,QAAQ,CAACI,IAAI,SAAW2zC,EAAMpuC,GAAGrF,MAAM,CAAC,KAAOyzC,EAAM,MAAQh0C,EAAIqP,MAAM,aAAarP,EAAIizC,UAAU,UAAUvlC,GAAK1N,EAAIi0C,iBAAiB3wC,OAAS,GAAGpC,GAAG,CAAC,OAASlB,EAAI2zC,WAAW,MAAQ,SAASjyC,GAAQ,OAAO1B,EAAI8zC,SAAQ,EAAK,IAAI,IAAI9zC,EAAe,YAAEC,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,WAAW,CAACmB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOvB,EAAgB,aAAEyB,WAAW,iBAAiBlB,MAAM,CAAC,GAAK,SAAWP,EAAI0zC,KAAK9tC,GAAG,KAAO,IAAI,YAAc,mBAAmBsD,SAAS,CAAC,MAASlJ,EAAgB,cAAGkB,GAAG,CAAC,MAAQ,SAASQ,GAAWA,EAAOoK,OAAOC,YAAiB/L,EAAIk0C,aAAaxyC,EAAOoK,OAAOvK,MAAK,OAAOtB,EAAG,MAAM,CAACG,YAAY,WAAW,CAAEJ,EAAkB,eAAEC,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,+BAA+BiI,MAAM,CAACvH,MAAOvB,EAAW,QAAE+I,SAAS,SAAUC,GAAMhJ,EAAIm0C,QAAQnrC,CAAG,EAAEvH,WAAW,aAAazB,EAAIS,KAAKR,EAAG,YAAY,CAACM,MAAM,CAAC,cAAc,QAAQ,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,gBAAgB,SAAuC,IAA5Bb,EAAIk0C,aAAa5wC,QAAcpC,GAAG,CAAC,MAAQlB,EAAIo0C,kBAAkB,KAAKp0C,EAAIS,MAAM,EACpgG,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAAC6B,MAAM,4BAA8B9B,EAAIyM,YAAYlM,MAAM,CAAC,GAAK,OAASP,EAAI0zC,KAAK9tC,KAAK,CAAC3F,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,8BAA8B,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI0zC,KAAKhd,aAAaz2B,EAAG,OAAO,CAACG,YAAY,QAAQ,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIyzC,cAAczzC,EAAI0zC,KAAKxuC,YAAalF,EAAa,UAAEC,EAAG,OAAO,CAACG,YAAY,UAAUG,MAAM,CAAC,MAAQ,UAAUW,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAI+H,MAAM,SAAU/H,EAAI0zC,KAAK,IAAI,CAACzzC,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,UAAU,GAAGP,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,IAAI,CAACmB,WAAW,CAAC,CAACC,KAAK,YAAYC,QAAQ,sBAAsBC,MAAM,CAAGya,OAAO,GAAQva,WAAW,kBAAkBwa,IAAI,aAAa,CAACjc,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI0zC,KAAKG,SAAS,OAAO5zC,EAAG,IAAI,CAAED,EAAU,OAAEC,EAAG,IAAI,CAACM,MAAM,CAAC,KAAO,SAASW,GAAG,CAAC,MAAQ,SAASQ,GAAgC,OAAxBA,EAAOkL,iBAAwB5M,EAAI+H,MAAM,QAAQ,IAAI,CAAC/H,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,oBAAoBb,EAAIS,UACzjC,EACI,GAAkB,GC0BpB,IACEY,KAAM,YACN2G,WAAY,CAAC,EACbgG,OAAQ,CAACjJ,GACTwC,MAAO,CACLmsC,KAAM,CACJ1wC,KAAMkL,OACNtG,UAAU,GAEZyH,MAAO,CACLrM,KAAM2E,OACNF,QAAS,GAEXwrC,UAAWroC,QACXypC,OAAQzpC,SAEV,IAAAzI,GACE,MAAO,CACP,CACF,EACAG,SAAU,CACRmK,YAAa,WACX,OAAOnR,KAAKo4C,KAAK9tC,KAAOtK,KAAK+T,MAAQ,UAAY,EACnD,GAEF5M,QAAS,CACP,aAAAgxC,CAAelxB,GACb,OAAO,QAAWA,GAAMmV,QAAQC,OAAO,kBACzC,ICxDkI,MCOpI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCmE9B,IACEt2B,KAAM,aACN2G,WAAY,CAAE4V,UAAS,QAAO,iBAAe,IAC7C5P,OAAQ,CAACjJ,GACTwC,MAAO,CACLmsC,KAAM,CACJ1wC,KAAMkL,OACNtG,UAAU,GAEZ+F,SAAU,CACR3K,KAAMtF,MACN+J,QAAS,IAAM,IAEjBsrC,UAAW,CACT/vC,KAAMtF,MACN+J,QAAS,IAAM,IAEjB4H,MAAO,CACLrM,KAAM2E,OACNF,QAAS,GAEXwrC,UAAWroC,QACXyoC,eAAgBzoC,SAElB,IAAAzI,GACE,MAAO,CACLgyC,SAAS,EACTD,aAAc,GACdI,mBAAmB,EACnBC,aAAa,EAEjB,EACAjyC,SAAU,CACRmK,YAAa,WACX,OAAOnR,KAAKo4C,KAAK9tC,KAAOtK,KAAK+T,MAAQ,UAAY,EACnD,EACA0kC,aAAc,WACZ,OAAOz4C,KAAKqS,SAASrK,MACvB,EACAkxC,YAAa,WACX,MAAMnwC,EAAO/I,KACPm5C,EAAQz3C,EAAEO,KAAKjC,KAAKy3C,WAAW,SAAUpzC,GAC7C,OAAO0E,EAAKqvC,KAAK5b,WAAan4B,EAAEiG,EAClC,IAEA,OAAQ6uC,GAASA,EAAMh4C,IAAOg4C,EAAMh4C,IAAM,EAC5C,EACAi4C,cAAe,WACb,MAAO,oCAAsCp5C,KAAKk5C,YAAc,wCAClE,EACA/F,YAAa,CACX9vC,IAAK,WACH,OAAOrD,KAAKg5C,mBAAqBh5C,KAAKy4C,aAAe,CACvD,EACAz1C,IAAK,SAAUq2C,GACbr5C,KAAKg5C,kBAAoBK,CAC3B,GAEFV,iBAAkB,WAChB,OAAI34C,KAAKmzC,YACA,CAACnzC,KAAKqS,SAASrS,KAAKqS,SAASrK,OAAS,IAGxChI,KAAKqS,QACd,GAEF7F,QAAS,WACPxM,KAAKs5C,kBACP,EACAnyC,QAAS,CACPmyC,iBAAkB,WAChB,MAAMvwC,EAAO/I,KACb,GAAIA,KAAKqS,SAAU,CACjB,IAAI8mC,EAAQz3C,EAAEw2B,KAAKl4B,KAAKqS,UAAU,SAAUhO,GAC1C,OAAOA,EAAEiG,KAAOvB,EAAKgL,KACvB,IAEIolC,IACFn5C,KAAKg5C,mBAAoB,GAGvBG,GACFn5C,KAAK6T,WAAU,WACb,MAAMtB,EAAUyB,SAASulC,eAAe,OAASxwC,EAAKgL,OACtDxB,EAAQ65B,eAAe,CAAEoN,SAAU,UACrC,GAEJ,CAEIx5C,KAAKo4C,KAAK9tC,KAAOtK,KAAK+T,OACxB/T,KAAK6T,WAAU,WACb,MAAMtB,EAAUyB,SAASulC,eAAe,OAASxwC,EAAKgL,OACtDxB,EAAQ65B,eAAe,CAAEoN,SAAU,UACrC,GAEJ,EACAhB,QAAS,SAAUiB,GAEjB,GADAz5C,KAAKi5C,aAAej5C,KAAKi5C,YACrBj5C,KAAKi5C,YAAa,CACpB,MAAM3uC,EAAK,SAAWtK,KAAKo4C,KAAK9tC,GAChCtK,KAAK6T,WAAU,WACb,MAAMtB,EAAUyB,SAASulC,eAAejvC,GACxCiI,EAAQwB,MAAM,CAAE2lC,eAAe,IAC3BD,GAAQlnC,EAAQ65B,eAAe,CAAEoN,SAAU,SAAUG,MAAO,WAClE,GACF,CACF,EACA,aAAAxB,CAAelxB,GACb,OAAO,QAAWA,GAAMmV,QAAQC,OAAO,kBACzC,EACAgc,WAAY,SAAUuB,GACpB55C,KAAKyM,MAAM,SAAUmtC,EACvB,EACAd,cAAe,WACb94C,KAAKkiB,KAAKzV,MAAM,kBAAmB,CACjCosC,QAAS74C,KAAK64C,QACdlvC,QAAS3J,KAAK44C,aACdiB,SAAU75C,KAAKo4C,KAAK9tC,IACnBtK,KAAK85C,UACV,EACAA,UAAW,WACT95C,KAAK44C,aAAe,GACpB54C,KAAK64C,SAAU,EACf74C,KAAKi5C,aAAc,CACrB,ICjNmI,MCQrI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCsB9B,IACElzC,KAAM,WACN2G,WAAY,CAAE4V,UAAS,SAAQ,IAC/B5P,OAAQ,CAACjJ,GACTwC,MAAO,CACLurC,MAAO,CACL9vC,KAAMtF,MACN+J,QAAS,IAAM,IAEjBosC,QAAS,CACP7wC,KAAMwE,OACNC,QAAS,IAEXivB,OAAQ,CACN1zB,KAAMwE,OACNC,QAAS,IAEXvC,KAAM,CACJlC,KAAMwE,OACNC,QAAS,IAEXwvB,QAAS,CACPj0B,KAAMwE,OACNC,QAAS,IAEXovB,QAAS,CACP7zB,KAAMwE,OACNC,QAAS,IAEXsrC,UAAW,CACT/vC,KAAMtF,MACN+J,QAAS,IAAM,IAEjB4H,MAAO,CACLrM,KAAM2E,OACNF,QAAS,GAEXwrC,UAAWroC,QACXyoC,eAAgBzoC,SAElB,IAAAzI,GACE,MAAO,CACLqxC,MAAO,KACP3I,WAAW,EAEf,EACAvoC,SAAU,CACR+yC,QAAS,WACP,GAAI/5C,KAAK66B,QAAQ,UAAY76B,KAAK66B,QAAQ,YACxC,OAAO,EAGT,GAAqB,MAAjB76B,KAAKw3C,MAAM,KAAex3C,KAAK66B,QAAQ,OAAS76B,KAAK66B,QAAQ,OAAQ,CACvE,IAAI/H,EAAS9yB,KAAKg6C,SAASh6C,KAAKw3C,MAAM,GAAGyC,UAAU3mC,WAAY,qBAC/D,OAAOwf,CACT,CAEA,SAAI9yB,KAAKu7B,UAAWv7B,KAAKg6C,SAASh6C,KAAKu7B,QAAQjoB,WAAY,cAI7D,EACA4mC,WAAY,WACV,OAAOx4C,EAAE4f,QAAQ5f,EAAE+R,OAAOzT,KAAKw3C,OAAO,SAAUnzC,GAC9C,OAA6B,OAAtBA,EAAE63B,eACX,IAAI,CAAC,MAAO,CAAC,QACf,GAEFhuB,MAAO,CACLqhC,UAAW,SAAUphC,GACdA,IACHnO,KAAKk4C,MAAQ,KAEjB,GAEF1rC,QAAS,WACP,GAAkB,MAAdxM,KAAK+T,MAAe,CACtB,IAAIpK,EAAU,CACZW,GAAItK,KAAK+T,MACT5J,YAAa,GAEfnK,KAAK8J,kBAAkBH,EACzB,CACF,EACAxC,QAAS,CACP,aAAAgxC,CAAelxB,GACb,OAAO,QAAWA,GAAMmV,QAAQC,OAAO,kBACzC,EACAyb,kBAAmB,SAAUqC,GAC3B,OAAOz4C,EAAE4f,QAAQ5f,EAAE+R,OAAOzT,KAAKw3C,OAAO,SAAUnzC,GAC9C,OAAOA,EAAE63B,kBAAoBie,CAC/B,IAAI,CAAC,MAAO,CAAC,OACf,EACA5hC,OAAQ,SAAUlU,GAChBrE,KAAKk4C,MAAQ7zC,EACbrE,KAAKuvC,WAAY,CACnB,EACAyI,cAAe,WACbh4C,KAAKuvC,WAAY,EACjBvvC,KAAKyM,MAAM,UAAWzM,KAAKk4C,MAAM5tC,GACnC,EACA2tC,eAAgB,SAAUxtC,GACxB,GAAIA,EAAIkxB,QAAS,OAAOlxB,EAAIkxB,QAC5B,GAAIlxB,EAAI8tC,QAAQvwC,QAAU,IAAMyC,EAAI8tC,QAAQ31C,MAAM,KAAKoF,QAAU,EAAG,MAAO,IAAMyC,EAAI8tC,QAAU,IAC/F,IAAI6B,EAAQ3vC,EAAI8tC,QAAQ31C,MAAM,KAAK4L,OAAO,EAAG,GAAG2H,KAAK,KAAO,MAC5D,OAAIikC,EAAMpyC,QAAU,GAAW,IAAMoyC,EAAQ,IACtC,IAAMA,EAAMte,UAAU,EAAG,IAAM,MACxC,ICpJkI,MCQpI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCqB9B,IACE/1B,KAAM,mBACN2G,WAAY,CAAE4V,UAAS,WAAU,IACjC,IAAAzb,GACE,MAAO,CACL2wC,MAAO,KACPF,YAAa,GACbT,MAAO72C,KAAKC,OAAO6jB,OAAOxZ,GAC1B6uB,iBAAiB,EAErB,EACAnyB,SAAU,CACR2wC,UAAW,WACT,OAAQ33C,KAAKq6C,gCAAgCr6C,KAAK62C,MACpD,EACAY,UAAW,WACT,OAAO/1C,EAAEoZ,IAAI9a,KAAKw3C,OAAO,SAAUnzC,GACjC,MAAO,CAAEiG,GAAIjG,EAAEm4B,SAAUr7B,IAAKkD,EAAEi2C,eAClC,GACF,EACA5C,aAAc,WACZ,IAAI/tC,EAAU4wC,SAASv6C,KAAKC,OAAOmlB,MAAM3a,KACzC,OAAQd,IAAYokC,MAAMpkC,GAAYA,EAAU,IAClD,GAGF6C,QAAS,WACPxM,KAAKw6C,cACLx6C,KAAKkiB,KAAKiB,IAAI,kBAAmBnjB,KAAKy6C,YACxC,EACAp3B,cAAe,WACbrjB,KAAKkiB,KAAKqB,KAAK,kBACjB,EACApc,QAAS,CACPszC,YAAa,SAAUC,EAAOC,GAC5B36C,KAAK46C,YAAY,CACfrC,QAASmC,EAAM/wC,QACfkxC,wBAAyB76C,KAAK62C,MAC9B3a,gBAAiBwe,EAAMb,SACvBiB,KAAM96C,KAAKC,OAAOC,OACjB,GACHF,KAAKm5B,iBAAkB,EACvBwhB,GACF,EACA/C,QAAS,SAAUvzC,GACjB,MAAM0E,EAAO/I,KACPmB,EAAM,GAAGnB,KAAK8G,OAAOlF,MAAM+G,SAASU,eAAiBrJ,KAAK8G,OAAOlF,MAAMM,aAAa64C,iBAAiB,MAAM12C,IACjHrE,KAAKgJ,MAAMuB,KAAKpJ,GAAKoC,MAAK,SAAU0F,GACRF,EAAKyxC,aACP,IACA,SAAU/jB,GACR7yB,QAAQC,IAAI,+BACd,GAC5B,EACA,WAAA22C,GACEx6C,KAAKm5B,iBAAkB,EACvB,IAAIh4B,EAAMnB,KAAK8G,OAAOlF,MAAM+G,SAASU,eAAiBrJ,KAAK8G,OAAOlF,MAAMM,aAAa84C,YAAY,GAAG3wC,QAAQ,MAAOrK,KAAK62C,OACpH9tC,EAAO/I,KACXA,KAAKgJ,MAAM3F,IAAIlC,GAAKoC,MAAK0F,IACvBF,EAAKyuC,MAAQ91C,EAAEgI,OAAOT,EAAKvF,MAAM,SAAUiG,GACzC,OAAO,IAAOA,EAAQC,KACxB,IAAGC,UACHd,EAAKowB,iBAAkB,IAE3B,EACAoe,kBAAmB,WACjBv3C,KAAK46C,YAAY,CACfrC,QAASv4C,KAAKs3C,YACduD,wBAAyB76C,KAAK62C,MAC9BiE,KAAM96C,KAAKC,OAAOC,MAEtB,EACA06C,YAAa,SAAUK,EAAYC,GACjC,GAAgC,IAA5Bl7C,KAAKs3C,YAAYtvC,QAAiBkzC,EAAtC,CAGA,IAAInyC,EAAO/I,KACXA,KAAKm7C,aAAc,EACnB,IAAIh6C,EAAM,GAAGnB,KAAK8G,OAAOlF,MAAM+G,SAASU,eAAiBrJ,KAAK8G,OAAOlF,MAAMM,aAAak5C,eAAe,KACvGp7C,KAAKq7C,oBACLr7C,KAAKgJ,MAAMuB,KAAKpJ,EAAK85C,GAAY13C,MAAM0F,IACrCF,EAAKyxC,aAAY,GANnB,CAQF,EACA,iBAAAa,GACEr7C,KAAKs3C,YAAc,EACrB,IC9HmI,MCQrI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC4FhC,wBACA,sBACA,mJACA,OACA,IACA,YACA,YAEA,YACA,YACA,qBAGA,gBACA,OACA,gBACA,gBACA,iBACA,QACA,eACA,iBACA,aACA,gBACA,qBACA,eACA,kBACA,aAEA,EACA,UACA,yBACA,gDACA,EACA,0BACA,iDACA,EACA,sBACA,6CACA,EACA,2BACA,kDACA,EACA,qBACA,gDACA,kEACA,4CACA,mEAIA,EACA,sBACA,gDACA,mDACA,2CACA,oDAEA,EAEA,EACA,oBACA,4CACA,GAEA,8BAEA,iEAIA,OAHA,0BAEA,uFAGA,qBACA,kBACA,oBACA,iCAGA,GAFA,eACA,iBACA,cAkBA,OAjBA,eAEA,2CAEA,uEACA,uBACA,gCACA,iCACA,kCACA,4BACA,8BACA,qCACA,sBACA,0BACA,qCACA,6BAEA,cACA,eACA,qCACA,MACA,gBACA,sCACA,MACA,YACA,kCAGA,0GACA,kDACA,aACA,gDACA,2DACA,iDAEA,kB,CAEA,GACA,EACA,yBACA,mCACA,8CACA,mCACA,EACA,SACA,mBACA,+HACA,wBACA,EACA,oCACA,wCACA,yBACA,eACA,EACA,gCACA,iCACA,KACA,4BAEA,uBAEA,EACA,0BACA,8BACA,wDACA,eACA,EACA,sBACA,mDACA,qDACA,wDACA,eACA,EACA,kBACA,+DACA,mDACA,wDACA,gBACA,EACA,qBACA,mBACA,0BACA,CACA,sBACA,iCACA,WACA,iDACA,YACA,O,CAEA,EACA,mBACA,sCACA,yBACA,wDACA,eACA,EACA,0BACA,wFAGA,4FACA,yBACA,2CAJA,yBACA,yCAKA,uDACA,EACA,2BACA,8EACA,EACA,oB,UACA,OAEA,2CACA,eACA,iBACA,SACA,KACA,2BACA,+BACA,oDACA,qDACA,0BACA,iEACA,mEACA,qEACA,+GACA,2DACA,wBACA,yBAEA,uEACA,kEAGA,wEACA,iDAGA,yEACA,qEAGA,wCACA,kDACA,gBACA,6FACA,oGAEA,gBACA,8FACA,mGACA,oDAGA,kBACA,mBAEA,uCAGA,OAFA,iBACA,QAEA,wCACA,SACA,yBAEA,SACA,yBAEA,qBACA,eAEA,eACA,iBACA,4CACA,cACA,GACA,EACA,gCAEA,IADA,SACA,mBACA,uBAIA,OAFA,4BAEA,CACA,KCxX+P,MCQ3P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI5yC,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,6BAA6B,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAAEJ,EAAS,MAAEC,EAAG,aAAa,CAACM,MAAM,CAAC,WAAWP,EAAIk4B,MAAMtyB,MAAM5F,EAAIS,KAAKR,EAAG,aAAa,CAACM,MAAM,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,EACI,GAAkB,GCyGtB,wBACA,OACA,UACA,aACA,YAEA,OACA,YACA,YAEA,gBACA,MACA,YACA,oBAEA,QACA,YACA,mBACA,OACA,WACA,eACA,0CACA,sHACA,oBACA,OACA,kBACA,iBACA,mBAEA,YACA,uBACA,cACA,qBACA,mBACA,wBACA,8CACA,sBACA,iBAEA,oBACA,SACA,QACA,iBAEA,kBACA,eAEA,GAEA,OACA,WACA,+BAGA,gBACA,aACA,SACA,KACA,UACA,IACA,QACA,WACA,qBAGA,QACA,CACA,aACA,SACA,KACA,UACA,IACA,QACA,WACA,qBAGA,QACA,CACA,OACA,UACA,SACA,UACA,QACA,OACA,SACA,QACA,UAEA,aACA,UAEA,SACA,sBACA,wBACA,SAEA,SACA,WACA,mBACA,QACA,SACA,OACA,UACA,UAEA,WACA,gBAEA,EACA,SACA,gBAEA,OADA,gBACA,YACA,EACA,sBACA,WACA,oGACA,eACA,EACA,yBACA,2CAGA,qDAFA,iCAIA,oBACA,iEACA,gEACA,8DACA,mFACA,SACA,6BACA,uBAGA,SACA,SACA,kBACA,uBAGA,IAFA,2BACA,uBACA,cACA,QACA,QACA,WACA,eACA,WACA,wBAEA,mCAEA,yHACA,mBAEA,2B,CAEA,aACA,+CACA,OACA,wBACA,WACA,kBACA,eACA,WACA,4CAEA,Y,CAEA,kBACA,kBACA,GACA,QACA,WACA,cACA,eACA,WACA,uCAEA,S,CAEA,uBACA,oDACA,eACA,aACA,wBACA,MACA,cACA,yBACA,MACA,WACA,sBACA,M,CAIA,cACA,EACA,2CACA,uCACA,mCACA,kGACA,kBAEA,GACA,EACA,2BAMA,OALA,oBACA,4DACA,iBAEA,IACA,CACA,EACA,qCAQA,OAPA,eACA,mBACA,2BACA,iBAEA,IAEA,CACA,EACA,wBAMA,OALA,oBACA,yDACA,iBAEA,IACA,CACA,EACA,gCACA,kFACA,sBACA,mBACA,cACA,kBAEA,wBAEA,EACA,qBACA,+BACA,SAKA,GAHA,WACA,yBAEA,mDACA,kCACA,YACA,IACA,mCACA,iBACA,CACA,wBACA,iDACA,mBACA,aACA,mCACA,MACA,6B,MAGA,0BACA,Y,CAGA,yBACA,UACA,cACA,MACA,UACA,qBAEA,oBACA,MAEA,EACA,+BACA,yCACA,qBAEA,IADA,SACA,kBACA,UAEA,oBACA,qBACA,2BACA,0CACA,oCACA,WACA,GACA,EACA,oBACA,UACA,WACA,sBACA,qBACA,sBACA,uBACA,MACA,YACA,sBACA,qBACA,sBACA,uBACA,MACA,UACA,sBACA,qBACA,sBACA,uBACA,MACA,WACA,sBACA,qBACA,sBACA,uBACA,MACA,QACA,qBACA,sBACA,uBACA,sBAEA,EACA,qBACA,qBACA,EACA,8BACA,sCACA,GACA,yCACA,mCACA,4BACA,sBACA,wB,CAEA,MAEA,EACA,oBACA,8EACA,wCACA,EACA,qBACA,sCACA,OACA,SAEA,6EACA,wCACA,EACA,qBACA,oBACA,mBAEA,oDACA,oCACA,+BAEA,6CACA,0BACA,0CACA,oCAEA,oBAIA,sBACA,EACA,wBACA,2CACA,aACA,oBACA,aACA,wB,CAGA,EACA,kBACA,uDACA,+GACA,qDACA,yE,MAEA,iDAEA,uBACA,mCACA,EACA,iBACA,oBACA,uBACA,mCACA,EACA,oBACA,iDACA,wDACA,uBACA,qBAGA,EACA,wBAEA,2BACA,kDACA,6CACA,sCACA,qCAEA,kBACA,SAGA,iCACA,gCACA,GACA,KCjhBsP,MCQlP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCiBhC,wBACA,qBACA,YACA,kBAEA,OACA,OACA,YACA,YAEA,OACA,YACA,YAEA,aACA,YACA,YAEA,iBACA,SACA,YACA,YAEA,SACA,YACA,cAEA,OACA,WACA,8BAEA,oBAEA,gBACA,OACA,gBACA,WACA,MACA,kCACA,mCACA,qCACA,oCACA,kCACA,oCACA,mCAEA,OACA,8BACA,+BACA,4BACA,4BACA,0BACA,2BACA,2BACA,6BACA,gCACA,8BACA,+BACA,gCAEA,oBACA,4CACA,YACA,cACA,aACA,mCACA,qBAEA,YACA,4BAEA,OACA,iBACA,kBACA,sBAEA,SACA,sCACA,8CACA,kEAEA,kBACA,gBAEA,YACA,WACA,0CACA,sHACA,2BAEA,aACA,iBACA,0CACA,sHACA,2BAGA,EACA,UACA,uBACA,SAEA,OADA,gGACA,CACA,GAEA,OACA,qBACA,+EACA,EACA,kBACA,uEACA,gBACA,mBAEA,GAEA,mBACA,+CACA,EACA,SACA,wBACA,KAEA,CACA,QACA,eACA,eAIA,6BACA,gD,MATA,wBAYA,KC1KqP,MCQjP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfhC,aAAIyX,IAAI,OAER,MAAMglC,GAAuB,CAC3B,UAAAj3C,CAAY0N,EAAOyE,GACjB,MAAO,GAAGzE,wBAA4B,IAAOyE,EAAK,GAAI,CAAC,aAAc,wBAAwBuf,OAAO,gBACtG,EACA,QAAAtf,CAAU9W,EAAO6W,GACf,OAAO,IAAO7W,EAAO,CAAC,aAAc,yBAA2B,IAAO6W,EAAK,GAAI,CAAC,aAAc,uBAChG,GAGF,UCyCA,+BAYA,4BACA,cACA,sDACA,OACA,QACA,YACA,YACA,mBACA,OACA,UACA,wBACA,iBAEA,IAGA,gBACA,OACA,oBACA,kBACA,kBACA,uCACA,eACA,mBACA,YACA,uBACA,oBACA,qBACA,mBACA,2BACA,oBACA,uBACA,gBACA,eAIA,EACA,UACA,+BACA,2BACA,uFACA,EACA,GAEA,8BAEA,qCACA,yBACA,kBAEA,GACA,EACA,mBACA,wEACA,EACA,SACA,+BACA,0CACA,EACA,oBACA,uBACA,0BACA,EACA,sBACA,uBACA,0BACA,EACA,mCACA,gDACA,IACA,iBACA,eAEA,GACA,EACA,wBACA,qBACA,UACA,+FACA,yCAEA,KCtJuP,MCOnP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC6ChC,wBACA,uBAEA,mCACA,OACA,OACA,YACA,aAEA,gBACA,aACA,YAEA,gBACA,aACA,YAEA,OACA,YACA,YACA,cAEA,QACA,aACA,YAEA,SACA,aACA,aAGA,UACA,wBACA,qHACA,EACA,sBACA,yCACA,EACA,wBACA,yBACA,2BACA,0DACA,qBACA,mDACA,kBACA,kDAGA,QACA,EACA,wBACA,wFACA,EACA,4BACA,8DACA,EACA,uBACA,OACA,uCACA,0CACA,uCAEA,EACA,uBAEA,4BAEA,kCAEA,0CAEA,mCACA,iBACA,GAEA,SACA,wBACA,0BACA,EACA,wBACA,+BACA,4EACA,iFAEA,oBACA,EACA,yBACA,8BACA,4CACA,yCACA,mBACA,EACA,wBACA,0BACA,EACA,0BACA,4BACA,KChKgQ,MCQ5P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC6QhC,+BAEA,4BACA,4BACA,iJACA,kBACA,OACA,OACA,YACA,aAEA,OACA,YACA,cAEA,aACA,aACA,mBACA,QACA,GAEA,aACA,aACA,mBACA,QACA,GAEA,gBACA,aACA,mBACA,QACA,GAEA,SACA,YACA,mBACA,OACA,YACA,sBACA,WACA,mBAEA,0BACA,8BACA,wBACA,mBACA,YACA,iBACA,iBAEA,GAEA,yBACA,YACA,YACA,iBAGA,gBACA,OACA,oBACA,UACA,aAEA,EACA,UACA,sBACA,yCACA,EACA,gC,MACA,uEACA,EACA,kBAEA,sDACA,EACA,oBACA,sCACA,EACA,oCACA,kCACA,oCACA,8BAEA,Q,CAEA,QAEA,EACA,eAEA,iDACA,EACA,yBACA,0HACA,EACA,wBACA,WAEA,qEACA,EACA,mBAEA,+FACA,EACA,iCACA,4BACA,SAIA,oFACA,QACA,EACA,4BACA,4BACA,SAGA,WAEA,yEAEA,QACA,EACA,6BAEA,+EACA,EACA,0BAEA,yEACA,EACA,2BACA,WACA,KAQA,OAPA,wDACA,uCAEA,yCAEA,IACA,qCACA,4BACA,EACA,qBACA,WAEA,yDAIA,OAHA,8BACA,6CAEA,CACA,EACA,0BACA,mFACA,0EACA,iHACA,uCACA,EACA,yBACA,+FACA,wIAEA,gHACA,qCACA,EACA,2BACA,EACA,8BACA,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,SAAS58C,GAAgC,OAAxBA,EAAOkL,iBAAwB5M,EAAIm+C,aAAat3C,EAAM,IAAI,CAAC7G,EAAIQ,GAAG,IAAIR,EAAIY,GAAG0L,EAAO/K,OAAO,MAAM,IAAG,GAAGvB,EAAIS,MAC7hD,EACI,GAAkB,GC0CtB,wBACA,4BACA,OACA,OACA,YACA,aAEA,SACA,WACA,aAEA,aACA,YACA,8BAGA,gBACA,OACA,cACA,cACA,mBACA,oBACA,gBACA,WACA,iBAEA,EACA,mBACA,+CACA,oBACA,EACA,SACA,oCACA,sDACA,qEAEA,gBACA,kBACA,sBAEA,kBACA,EACA,0BACA,mBACA,yBACA,wCACA,oBACA,EACA,yBACA,qBACA,eACA,EACA,2BACA,4CACA,cAEA,EACA,yBACA,gBACA,cAEA,EACA,yBACA,sCACA,4CACA,0CACA,wCACA,qBACA,gBAEA,KClHgQ,MCQ5P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QC2ChC,wBACA,4CACA,OACA,cACA,YACA,YACA,sBACA,4DACA,GAEA,UACA,YACA,aAEA,wBACA,WACA,cAGA,gBACA,OACA,mBACA,oBAEA,EACA,UACA,2BACA,gCACA,GAEA,mBACA,qFACA,EACA,SACA,kBACA,wBACA,oBACA,EACA,gBACA,wBACA,EACA,uBAEA,yBAEA,2BAIA,qCACA,EACA,sBACA,yBACA,oBACA,KCpH8P,MCQ1P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QC6GhC,wBACA,uBACA,uLACA,OACA,IACA,YACA,YAEA,SACA,YACA,YAEA,aACA,YACA,WACA,cAGA,gBACA,OACA,0BACA,aACA,gBACA,aACA,WACA,UAEA,EACA,UACA,wBACA,8DACA,QACA,EACA,yBACA,gDACA,EACA,oB,MACA,iIACA,EACA,sB,MACA,6EACA,EACA,wB,MACA,4DACA,2BACA,0DACA,qBACA,mDACA,kBACA,kDAEA,QACA,GAEA,8BACA,uBACA,sGAEA,oCACA,WACA,SACA,4BACA,qDACA,IAE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ACA,EACA,sBACA,4CACA,EACA,wBACA,yBACA,4BACA,2BACA,0DACA,qBACA,mDACA,kBACA,kDAIA,QACA,EACA,wBACA,8FACA,EACA,4BACA,gCACA,oGACA,6GACA,EACA,uBACA,OACA,iJACA,6IACA,0IAEA,EACA,uBAEA,4BAEA,kCAEA,0CAEA,mCACA,iBACA,GAEA,SACA,yBACA,2BACA,EACA,yBACA,4BACA,2BACA,gBACA,mCACA,qHACA,EACA,yBACA,0BACA,sDACA,0EAEA,mFAEA,iEACA,iEAEA,2DACA,+EAEA,wFAEA,sEACA,qEAEA,oBACA,EACA,yBACA,2BACA,EACA,0BACA,4BACA,KChMiQ,MCQ7P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCyPhC,wBACA,wBACA,0IACA,WACA,GACA,GACA,IACA,OACA,OACA,YACA,aAEA,OACA,YACA,aAEA,aACA,aACA,mBACA,QACA,GAEA,gBACA,aACA,mBACA,QACA,GAEA,aACA,aACA,mBACA,QACA,GAEA,SACA,YACA,mBACA,OACA,YACA,sBACA,WACA,mBAEA,0BACA,8BACA,wBACA,kBACA,YACA,iBACA,iBAEA,GAEA,yBACA,YACA,YACA,iBAGA,gBACA,OACA,qBACA,UACA,aAEA,EACA,UACA,sBACA,4BACA,EACA,mBACA,6IACA,EACA,gC,UACA,gKACA,EACA,kBAEA,kEACA,EACA,oBACA,gEACA,EACA,oCACA,wDACA,0DACA,8BAEA,Q,CAEA,QAEA,EACA,eAEA,4CACA,EACA,yBACA,0HACA,EACA,oCACA,OAEA,yDAEA,mGACA,8BACA,EACA,iCACA,WACA,KACA,EACA,EACA,GACA,8BACA,gDACA,GACA,EACA,8BAEA,oEACA,mEACA,sCACA,EACA,uCACA,OAEA,qDAEA,uGACA,+BAEA,uGACA,uCACA,EACA,2BAEA,sGACA,EACA,6BAEA,sGACA,EACA,0BAEA,gGACA,EACA,2BACA,WACA,KAQA,OAPA,uDACA,gCAEA,iCAEA,IACA,sCACA,4BACA,EACA,qBAEA,uFACA,EACA,0BACA,gIACA,mHACA,uCACA,EACA,uCACA,2CACA,WACA,4BACA,0BACA,6BACA,8BACA,wBACA,0BACA,4BACA,EACA,oBACA,8CACA,GAEA,OACA,kBACA,gBACA,GAEA,SACA,0BACA,SAIA,qEAHA,mDAIA,EACA,yBACA,uBAKA,2BAHA,qCAIA,EACA,wBACA,uBAGA,4GAFA,wGAGA,EACA,yBACA,qBACA,EACA,8BACA,SAIA,4FAHA,mDAIA,EACA,oCACA,OACA,eACA,gDACA,MACA,uBACA,oBACA,mCACA,OACA,eAEA,gBACA,eACA,YAEA,+EAEA,qCACA,G,MAGA,cAEA,GACA,EACA,8B,EAAA,OACA,kBACA,+CACA,yDACA,4DAEA,8DAGA,IACA,kDACA,mEAEA,WAEA,oCACA,eACA,iBACA,GACA,KCphBiQ,MCQ7P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfhC,IACEgC,QAAS,CACP,0BAAA09C,CAA4BC,EAA6BC,GACvD,OAAO,gBACL,GAActpC,eAAeqpC,GAC7B,GAAcrpC,eAAespC,IAAgC/8C,OAAS,CAC1E,EACA,sBAAAg9C,CAAwBC,EAAyBC,GAC/C,OAAO,gBACL,GAAczpC,eAAewpC,GAC7B,GAAcxpC,eAAeypC,IAA4Bl9C,OAAS,CACtE,EAEA,cAAAm9C,CAAgBC,EAAoBC,EAAoBC,EAAmBC,GACzE,OAAOvlD,KAAKwlD,aAAaF,EAAmBC,IAC5CvlD,KAAKwlD,aAAaJ,EAAoBC,EACxC,EAGA,YAAAG,CAAcC,EAAOC,GACnB,OAAuF,KAA/E1lD,KAAK2lD,wBAAwB,GAAW9kC,aAAa4kC,IAAUC,EACzE,EACA,uBAAAC,CAAyB1rC,GACvB,OAAIA,EAAM,GACD,EAELA,GAAO,GACF,EAELA,GAAO,GACF,EAELA,GAAO,GACF,EAELA,GAAO,GACF,GAEF,EACT,ICQJ,wBACA,2BACA,4DACA,qBACA,OACA,WACA,YACA,aAEA,gBACA,eACA,UACA,YACA,aAEA,OACA,YACA,aAEA,iBACA,aACA,YAEA,OACA,YACA,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sBAAsB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,iCAAiC,OAAOZ,EAAG,QAAQ,CAACM,MAAM,CAAC,MAAQP,EAAI4P,MAAMgvC,MAAM,SAAS5+C,EAAImhD,cAAc,OAAOlhD,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI2wC,kBAAkB3wC,EAAI4P,MAAMA,MAAMghC,wBAAwB,UAAU,EACj4D,EACI,GAAkB,GC0DtB,wBACA,yBACA,oCACA,eACA,OACA,OACA,YACA,cAGA,UACA,oBACA,yDACA,EACA,qBACA,+CACA,EACA,0BAEA,yDACA,EACA,uBAEA,oDACA,EACA,yBACA,kJACA,EACA,2BACA,6BACA,EACA,8BACA,kDACA,qCACA,IAEA,uEACA,GAEA,SACA,+BACA,0CACA,EACA,8BACA,SAIA,4FAHA,mDAIA,EACA,oCACA,mDACA,KChHkQ,MCQ9P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCchC,wBACA,4BACA,+CACA,OACA,MACA,WACA,cAGA,gBACA,OACA,8DACA,UAEA,EACA,UACA,yBACA,oBACA,iBAEA,sDAEA,sDACA,sDAGA,mCACA,OACA,wBACA,wFACA,KACA,wBACA,4DACA,QAEA,iCACA,uCACA,IAEA,IAEA,QACA,GAEA,SACA,gCACA,iCACA,KChFqQ,MCQjQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC8FhC,wBACA,4BACA,wIACA,YACA,OACA,OACA,YACA,aAEA,YACA,YACA,cAGA,gBACA,OACA,iBACA,sBACA,gBACA,iBACA,QACA,aACA,aACA,gBACA,aACA,iBACA,aACA,eACA,QACA,sBACA,YAGA,EACA,UACA,qBACA,oEACA,EACA,mBACA,4CACA,gBAEA,iFAEA,EACA,kBACA,4CACA,gBAEA,gHAEA,EACA,sCACA,4BAEA,gHACA,iCACA,EACA,yBACA,wBAEA,oEAEA,EACA,6BACA,iCACA,GAEA,mBACA,mBACA,oBACA,EACA,mBACA,qBAEA,yEACA,gFACA,oDACA,EACA,yBACA,2CACA,+CACA,qCACA,EACA,SACA,kCACA,OACA,kBACA,gNAEA,oCACA,kBACA,cACA,GACA,EACA,oCACA,OACA,GACA,sCACA,oBACA,sBACA,uBAEA,mHACA,kBACA,uCACA,QACA,mBACA,gBAEA,0CAEA,2CACA,EACA,yBACA,WACA,kBACA,yHAEA,qGACA,oCACA,8DACA,qCACA,cACA,GACA,EACA,gCACA,qBAEA,6CACA,kBACA,EACA,kCACA,GACA,mCACA,2DACA,uBAEA,sHACA,uC,MACA,2JACA,uEACA,EACA,6BACA,oDACA,qBACA,qDACA,IAEA,QACA,2DACA,qBACA,6C,CAEA,EACA,6BACA,oDACA,qBACA,qDACA,IAEA,2CACA,wEACA,8CAEA,EACA,mBACA,qBACA,EACA,iDACA,GACA,mCACA,2DACA,uBAEA,uHACA,uCACA,mBACA,iBACA,GACA,EACA,oDACA,GACA,mCACA,2DACA,uBAEA,sHACA,kBACA,uCACA,mBACA,iBACA,gBAEA,4CACA,GACA,EACA,4BACA,WACA,mBACA,+D,gBACA,sOACA,oMACA,qKACA,kMACA,GACA,EACA,oCACA,sBACA,4BAEA,gCACA,IACA,4BAEA,oCACA,WAEA,gCAGA,kDAEA,EACA,qBACA,wBACA,KCnVqQ,MCQjQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI5wC,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAQH,EAAY,SAAEC,EAAG,MAAM,CAACG,YAAY,uCAAuC,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAAEJ,EAAS,MAAEC,EAAG,aAAa,CAACM,MAAM,CAAC,WAAWP,EAAIk4B,MAAMtyB,MAAM5F,EAAIS,KAAKR,EAAG,eAAe,GAAID,EAAqB,kBAAEC,EAAG,MAAM,CAACG,YAAY,uCAAuC,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,2CAA2Cb,EAAIS,OAAQT,EAAS,MAAEC,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,gDAAgD,CAACH,EAAG,uBAAuB,CAACM,MAAM,CAAC,MAAQP,EAAIk4B,OAAOh3B,GAAG,CAAC,QAAUlB,EAAIw+C,WAAW11C,MAAM,CAACvH,MAAOvB,EAAY,SAAE+I,SAAS,SAAUC,GAAMhJ,EAAIikB,SAASjb,CAAG,EAAEvH,WAAW,cAAcxB,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAa,UAAEyB,WAAW,cAAcrB,YAAY,WAAW,CAACH,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,MAAM,GAAGA,EAAG,MAAM,CAACG,YAAY,oCAAoC,CAAGJ,EAAIy+C,kBAA48Bz+C,EAAIS,KAA77BR,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,MAAM,CAACG,YAAY,8CAA8C,CAACH,EAAG,iBAAiB,CAACM,MAAM,CAAC,MAAQP,EAAIk4B,MAAM,cAAc,YAAY,YAAW,GAAOh3B,GAAG,CAAC,cAAgBlB,EAAI+uC,oBAAoB,GAAG9uC,EAAG,MAAM,CAACG,YAAY,+CAA+C,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,yCAAyCZ,EAAG,uBAAuB,CAACM,MAAM,CAAC,KAAOP,EAAI0+C,oBAAoBx9C,GAAG,CAAC,kBAAoBlB,EAAI2+C,uBAAuB1+C,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAa,UAAEyB,WAAW,cAAcrB,YAAY,WAAW,CAACH,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,MAAOD,EAAIisC,WAAajsC,EAAIksC,UAAWjsC,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,0BAA0BP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6B,MAAM,KAAKb,EAAIS,MAAM,KAAeT,EAAqB,kBAAEC,EAAG,MAAM,CAACG,YAAY,mCAAmC,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,2CAA2Cb,EAAIS,KAAMT,EAAIk4B,OAASl4B,EAAIy+C,kBAAmBx+C,EAAG,MAAM,CAACG,YAAY,iCAAiC,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,2BAA2B,CAACM,MAAM,CAAC,UAAYP,EAAIo+B,UAAU,SAAWp+B,EAAIikB,SAAS,MAAQjkB,EAAIk4B,MAAM,MAAQl4B,EAAI4+C,MAAM,WAAW5+C,EAAI6+C,QAAQ,UAAU7+C,EAAIq0C,OAAO,mBAAmBr0C,EAAI8+C,iBAAiB59C,GAAG,CAAC,KAAOlB,EAAI++C,OAAO,KAAO/+C,EAAIyG,OAAO,MAAQzG,EAAIqoC,YAAY,KAAKroC,EAAIS,SAAST,EAAIS,OAAOT,EAAIS,IAC3kF,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,+BAA+B0B,MAAM9B,EAAIg/C,oBAAoB,CAAC/+C,EAAG,MAAM,CAACG,YAAY,oCAAoC,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACG,YAAY,YAAY,CAAGJ,EAAI6+C,QAA0K7+C,EAAIS,KAArKR,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,IAAI,CAACM,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAIkP,OAAO,CAACjP,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,mBAAmB,KAAgBP,EAAIq0C,OAA0Kr0C,EAAIS,KAAtKR,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,IAAI,CAACM,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAI7D,OAAO,CAAC8D,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,oBAAoB,SAAkBN,EAAG,wBAAwB,CAACM,MAAM,CAAC,MAAQP,EAAIk4B,MAAM,gBAAe,EAAK,gBAAe,EAAM,oBAAmB,EAAK,QAAUl4B,EAAIi/C,WAAW/9C,GAAG,CAAC,QAAUlB,EAAIw+C,WAAW11C,MAAM,CAACvH,MAAOvB,EAAa,UAAE+I,SAAS,SAAUC,GAAMhJ,EAAIo+B,UAAUp1B,CAAG,EAAEvH,WAAW,gBAAgB,GAAGxB,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,IAAI,CAACM,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAIk/C,QAAQ,CAACl/C,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,kCAAkCZ,EAAG,+BAA+B,CAACM,MAAM,CAAC,SAAWP,EAAIikB,SAAS,UAAYjkB,EAAIo+B,UAAU,MAAQp+B,EAAIk4B,MAAM,mBAAmBl4B,EAAI8+C,gBAAgB,MAAQ9+C,EAAI4+C,UAAU,IACz3C,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAI5+C,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,gCAAgC,CAAEJ,EAAmB,gBAAEC,EAAG,MAAM,CAACA,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,OAAO,CAACG,YAAY,SAAS,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,wCAAwCZ,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,6CAA6C,SAASZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,YAAY,CAACG,YAAY,2BAA2BG,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,mCAAmC,cAAc,oBAAoBK,GAAG,CAAC,iBAAmBlB,EAAIm/C,uBAAuB,OAAOl/C,EAAG,MAAM,CAACA,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,OAAO,CAACG,YAAY,SAAS,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,4CAA4CZ,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,QAAQ,CAACM,MAAM,CAAC,MAAQP,EAAI4+C,UAAU,KAAK3+C,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,2CAA2C,SAASZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,YAAY,CAACG,YAAY,iBAAiBG,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,gCAAgC,cAAc,UAAU,UAAYb,EAAIw3C,UAAUt2C,GAAG,CAAC,QAAUlB,EAAIo/C,YAAY,KAAOp/C,EAAIq/C,kBAAwPr/C,EAAIS,KAAzOR,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,IAAI,CAACM,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAIs/C,oBAAoB,CAACt/C,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,kDAA4Db,EAAqB,kBAAEC,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,8BAA8B,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,qDAAqDZ,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,IAAI,CAACG,YAAY,uBAAuBG,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAIu/C,sBAAsB,CAACv/C,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,kDAAkDZ,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,YAAY,CAACG,YAAY,+BAA+BG,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,6CAA6C,cAAc,wBAAwBK,GAAG,CAAC,qBAAuBlB,EAAIw/C,yBAAyB,KAAKx/C,EAAIS,QACl7E,EACI,GAAkB,GCyFtB,wBACA,oCACA,kCACA,OACA,UACA,YACA,aAEA,WACA,YACA,aAEA,OACA,YACA,aAEA,iBACA,aACA,aAGA,gBACA,OACA,8DACA,qBAEA,EACA,UACA,oBACA,0JACA,0FACA,GAEA,SACA,mBACA,uHACA,EACA,6BACA,yBACA,EACA,gCACA,6FACA,EACA,+BACA,yBACA,EACA,8BACA,iGACA,KC3I6Q,MCQzQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAQH,EAAIo+B,WAAap+B,EAAIo+B,UAAUJ,WAAY/9B,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAA2B,wBAAEC,EAAG,iBAAiB,CAACM,MAAM,CAAC,WAAaP,EAAIo+B,UAAUhqB,UAAU,MAAQpU,EAAI43C,2BAA2B33C,EAAG,aAAa,CAACM,MAAM,CAAC,WAAaP,EAAIo+B,UAAUhqB,UAAU,MAAQpU,EAAIo+B,UAAUlH,SAAS,MAAQl3B,EAAIo+B,UAAUJ,WAAWK,gBAAgB0L,OAAS,EAAI/pC,EAAIo+B,UAAUJ,WAAWK,gBAAgBnhC,MAAM,uBAAuB8C,EAAIo+B,UAAUJ,WAAWK,gBAAgBQ,sBAAsB,GAAG5+B,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIo+B,UAAUhqB,WAAW,IAAIpU,EAAIY,GAAGZ,EAAIo+B,UAAU/pB,aAAapU,EAAG,MAAM,CAACG,YAAY,aAAa,CAAGJ,EAAIo+B,UAAU6M,WAAqGjrC,EAAIS,KAA7FR,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,OAAO,MAAQP,EAAIa,GAAG,6BAAuCb,EAAwB,qBAAEC,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,QAAQ,MAAQP,EAAIa,GAAG,uCAAuCb,EAAIS,MAAM,KAAKR,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIswC,kBAAkBrwC,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,kCAAkC,KAAKb,EAAIY,GAAGZ,EAAIsoB,eAAiB,QAAStoB,EAAIo+B,UAAUJ,WAAWK,gBAAgC,iBAAEp+B,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,aAAa,cAAc,UAAUN,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIo+B,UAAUJ,WAAWK,gBAAgBO,qBAAqB3+B,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,aAAa,cAAc,WAAW,GAAGP,EAAIS,SAASR,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAIo+B,UAAUJ,WAAwB,cAAEv8B,WAAW,uCAAuCrB,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI6oC,cAAc7oC,EAAIo+B,UAAUJ,WAAW6K,gBAAgB,OAAO5oC,EAAG,MAAM,CAACG,YAAY,YAAY,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI2wC,kBAAkB3wC,EAAIo+B,UAAUJ,WAAWK,gBAAgBuS,wBAAwB,SAAS3wC,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,qBAAqB,GAAGN,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,oBAAoB,KAAKb,EAAIY,GAAGZ,EAAI2R,SAAW,QAAQ1R,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,gCAAgC,KAAKb,EAAIY,GAAGZ,EAAIohD,mBAAmB3lD,kBAAmBuE,EAAe,YAAEC,EAAG,MAAM,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI83C,QAAQC,WAAWC,oBAAoB,OAAOh4C,EAAIS,OAAQT,EAAe,YAAEC,EAAG,MAAM,CAACG,YAAY,SAAS,CAAEJ,EAAuB,oBAAEC,EAAG,MAAM,CAACA,EAAG,mBAAmB,CAAC6I,MAAM,CAACvH,MAAOvB,EAA4B,yBAAE+I,SAAS,SAAUC,GAAMhJ,EAAIi4C,yBAAyBjvC,CAAG,EAAEvH,WAAW,+BAA+B,GAAGxB,EAAG,MAAM,CAACA,EAAG,YAAY,CAAC6I,MAAM,CAACvH,MAAOvB,EAAI83C,QAAQC,WAAkB,QAAEhvC,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI83C,QAAQC,WAAY,UAAW/uC,EAAI,EAAEvH,WAAW,iCAAiC,KAAKzB,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,kCAAkC,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,CAAC,MAAO,aAAa,GAAGN,EAAG,MAAM,CAACG,YAAY,WAAW,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,2BAA2B,MAAMZ,EAAG,SAAS,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIk4C,kBAAoB,UAAWl4C,EAAe,YAAEC,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,YAAY,CAAC6I,MAAM,CAACvH,MAAOvB,EAAI83C,QAA8B,uBAAE/uC,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI83C,QAAS,yBAA0B9uC,EAAI,EAAEvH,WAAW,qCAAqC,GAAGzB,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,kCAAkC,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,CAAC,MAAO,aAAa,GAAGN,EAAG,MAAM,CAACG,YAAY,WAAW,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+B,MAAMZ,EAAG,SAAS,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAImoB,uBAAyB,UAAWnoB,EAAe,YAAEC,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,YAAY,CAAC6I,MAAM,CAACvH,MAAOvB,EAAI83C,QAAkC,2BAAE/uC,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI83C,QAAS,6BAA8B9uC,EAAI,EAAEvH,WAAW,yCAAyC,GAAGzB,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,iBAAiB,GAAGN,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,sBAAsB,KAAKZ,EAAG,SAAS,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIm4C,OAAO18C,eAAiB,aAAawE,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6B,MAAMZ,EAAG,SAAS,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIo4C,mBAAqB,YAAap4C,EAAe,YAAEC,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,mBAAmB,CAAC6I,MAAM,CAACvH,MAAOvB,EAAI83C,QAAmB,YAAE/uC,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI83C,QAAS,cAAe9uC,EAAI,EAAEvH,WAAW,0BAA0B,GAAGzB,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,eAAe,GAAGN,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,sBAAsB,KAAKZ,EAAG,SAAS,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIuV,KAAO,KAAK,IAAIvV,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8BZ,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6B,MAAMZ,EAAG,SAAS,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIq4C,gBAAkB,YAAar4C,EAAe,YAAEC,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,YAAY,CAAC6I,MAAM,CAACvH,MAAOvB,EAAI83C,QAAgB,SAAE/uC,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI83C,QAAS,WAAY9uC,EAAI,EAAEvH,WAAW,uBAAuB,GAAGzB,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,CAAC,MAAO,eAAe,GAAGN,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,yBAAyB,MAAMZ,EAAG,SAAS,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI4I,qBAAqB5I,EAAIo+B,UAAU9e,iBAAiB,KAAKtf,EAAIY,GAAGZ,EAAIa,GAAG,kCAAkC,SAAUb,EAAmB,gBAAEC,EAAG,MAAM,CAACA,EAAG,SAAS,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI6I,sBAAsB7I,EAAIS,OAAQT,EAAe,YAAEC,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,YAAY,CAAC6I,MAAM,CAACvH,MAAOvB,EAAI83C,QAAqB,cAAE/uC,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI83C,QAAS,gBAAiB9uC,EAAI,EAAEvH,WAAW,4BAA4B,GAAGzB,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,gCAAgC,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,eAAe,GAAGN,EAAG,MAAM,CAACG,YAAY,WAAW,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwB,MAAMZ,EAAG,SAAS,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI0oB,iBAAmB,YAAYzoB,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,mBAAmB,GAAGN,EAAG,MAAM,CAACG,YAAY,WAAW,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,gCAAgC,MAAMZ,EAAG,SAAS,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIoI,WAAa,YAAYnI,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAIo+B,UAAUJ,WAAgC,sBAAEv8B,WAAW,+CAA+CrB,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,WAAW,GAAGN,EAAG,MAAM,CAACG,YAAY,WAAW,CAAEJ,EAAIo+B,UAAUJ,WAAqC,2BAAE/9B,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,yCAAyC,MAAMb,EAAIY,GAAGZ,EAAIo+B,UAAUJ,WAAWW,+BAA+B1+B,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,0DAA0DZ,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,SAAS,CAACM,MAAM,CAAC,QAAUP,EAAIa,GAAG,mBAAmB,CAACZ,EAAG,MAAM,CAACM,MAAM,CAAC,KAAO,QAAQ0I,KAAK,QAAQ,CAAChJ,EAAG,kBAAkB,CAACM,MAAM,CAAC,SAAW,sCAAsC,6BAA6BP,EAAIk4B,MAAMtyB,GAAG,YAAY5F,EAAIs4C,UAAUxvC,MAAM,CAACvH,MAAOvB,EAAIo+B,UAAoB,WAAEr1B,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIo+B,UAAW,aAAcp1B,EAAI,EAAEvH,WAAW,2BAA2B,MAAM,KAAKxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,SAAS,CAACM,MAAM,CAAC,QAAUP,EAAIa,GAAG,iCAAiC,CAACZ,EAAG,MAAM,CAACM,MAAM,CAAC,KAAO,QAAQ0I,KAAK,QAAQ,CAAChJ,EAAG,IAAI,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIu4C,gBAAgB,YAAY,KAAMv4C,EAAIo+B,UAAUJ,WAAWK,gBAAoC,qBAAEp+B,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,SAAS,CAACM,MAAM,CAAC,QAAUP,EAAIa,GAAG,mCAAmC,CAACZ,EAAG,MAAM,CAACM,MAAM,CAAC,KAAO,QAAQ0I,KAAK,QAAQ,CAAChJ,EAAG,KAAK,CAACG,YAAY,OAAO,CAACH,EAAG,KAAK,CAACG,YAAY,UAAU,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,qCAAqC,OAAOZ,EAAG,KAAK,CAACG,YAAY,UAAU,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIo+B,UAAUJ,WAAWK,gBAAgByhB,0BAA0B,OAAO9/C,EAAIY,GAAGZ,EAAIo+B,UAAUJ,WAAWK,gBAAgB0hB,wBAAwB,cAAc,KAAK//C,EAAIS,KAAMT,EAAY,SAAEC,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,SAAS,CAACM,MAAM,CAAC,QAAUP,EAAIa,GAAG,qCAAqC,CAACZ,EAAG,MAAM,CAACM,MAAM,CAAC,KAAO,QAAQ0I,KAAK,QAAQ,CAAChJ,EAAG,KAAK,CAACG,YAAY,OAAO,CAACH,EAAG,KAAK,CAACG,YAAY,UAAU,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,mCAAmC,OAAOZ,EAAG,KAAK,CAACG,YAAY,UAAU,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI64C,0BAA0B,SAAS54C,EAAG,KAAK,CAACG,YAAY,OAAO,CAACH,EAAG,KAAK,CAACG,YAAY,UAAU,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,iCAAiC,OAAOZ,EAAG,KAAK,CAACG,YAAY,UAAU,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIo+B,UAAUJ,WAAWK,gBAAgB4L,eAAe,cAAc,KAAKjqC,EAAIS,OAAQT,EAAU,OAAEC,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAAEJ,EAAI+4C,aAAe/4C,EAAIg5C,eAAgB/4C,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,mBAAmB,CAACM,MAAM,CAAC,MAAQP,EAAIk4B,MAAM,OAASl4B,EAAIi3C,OAAO,mBAAmBj3C,EAAIg5C,eAAe,mBAAmBh5C,EAAI+4C,aAAa73C,GAAG,CAAC,cAAgBlB,EAAIggD,cAAc,eAAiBhgD,EAAIk5C,eAAe,cAAgBl5C,EAAIkgD,eAAep3C,MAAM,CAACvH,MAAOvB,EAAa,UAAE+I,SAAS,SAAUC,GAAMhJ,EAAIo+B,UAAUp1B,CAAG,EAAEvH,WAAW,gBAAgB,KAAKzB,EAAIS,OAAOT,EAAIS,KAAMT,EAAa,UAAEC,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,YAAY,GAAGD,EAAIS,OAAOT,EAAIS,IACr5T,EACI,GAAkB,GCiRtB,wBACA,6BACA,0IACA,WACA,GACA,GACA,IACA,OACA,OACA,YACA,aAEA,OACA,YACA,aAEA,aACA,aACA,mBACA,QACA,GAEA,gBACA,aACA,mBACA,QACA,GAEA,aACA,aACA,mBACA,QACA,GAEA,SACA,YACA,mBACA,OACA,YACA,sBACA,WACA,mBAEA,0BACA,8BACA,kBACA,YACA,iBACA,iBAEA,GAEA,yBACA,YACA,YACA,iBAGA,gBACA,OACA,qBACA,UACA,aAEA,EACA,UACA,sBACA,4BACA,EACA,gC,UACA,2KACA,EACA,kBAEA,kEACA,EACA,oBACA,qEACA,EACA,oCACA,6DACA,+DACA,8BAEA,Q,CAEA,QAEA,EACA,eAEA,4CACA,EACA,yBACA,0HACA,EACA,yBACA,WAEA,sDACA,gGACA,8BACA,EACA,mBACA,uEACA,qMAEA,yFAEA,EACA,iCACA,WACA,KACA,EACA,EACA,GACA,8BACA,gDACA,GACA,EACA,8BAEA,oEACA,mEACA,sCACA,EACA,iCAEA,gHACA,QACA,EACA,4BACA,WAEA,qDAEA,oGACA,+BACA,QACA,EACA,2BAEA,wGACA,EACA,6BAEA,2GACA,EACA,0BAEA,qGACA,EACA,sCACA,OACA,KAQA,OAPA,uDACA,gCAEA,iCAEA,IACA,sCACA,4BACA,EACA,qBAEA,4FACA,EACA,0BACA,gIACA,mHACA,uCACA,EACA,+BACA,6BAGA,0BACA,uCAGA,EACA,oCACA,iBACA,EACA,oBACA,mDACA,GAEA,OACA,kBACA,gBACA,GAEA,SACA,0BACA,SAIA,qEAHA,mDAIA,EACA,yBACA,2BACA,EACA,yBACA,uBAKA,2BAHA,qCAIA,EACA,wBACA,uBAGA,iHAFA,6GAGA,EACA,8BACA,SAIA,4FAHA,mDAIA,EACA,yBACA,qBACA,EACA,oCACA,OACA,eACA,gDACA,MACA,uBACA,oBACA,mCACA,OACA,eAEA,gBACA,eACA,YAEA,+EAEA,qCACA,G,MAGA,cAEA,GACA,EACA,8B,EAAA,OACA,kBACA,+CACA,8DACA,iEAEA,mEAGA,IACA,kDACA,mEAEA,WAEA,oCACA,eACA,iBACA,GACA,KCpiBsQ,MCQlQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC4ChC,wBACA,gCACA,sEACA,qBACA,OACA,WACA,YACA,aAEA,gBACA,eACA,UACA,YACA,aAEA,OACA,YACA,aAEA,iBACA,aACA,YAEA,OACA,YACA,cAGA,gBACA,OACA,YACA,sBACA,WACA,mBAEA,aAEA,EACA,UACA,8BACA,8CACA,EACA,kCACA,qIACA,EACA,sCACA,iJACA,EACA,iCACA,yEACA,+CACA,WAGA,MACA,EACA,oBACA,gKACA,EACA,yBACA,2BACA,EACA,yBACA,uBACA,uEACA,kDACA,EACA,yBAEA,qCAGA,sFACA,sCAGA,2EAQA,MALA,oFACA,qCAIA,2CACA,EACA,4BACA,uEACA,qMAEA,yFAEA,EACA,2BACA,6FACA,EACA,mCACA,WACA,YACA,8BACA,gDACA,GACA,EACA,qBACA,OACA,2BACA,mDACA,2DACA,uCACA,uBACA,iCACA,iCAEA,GAEA,OACA,qBAEA,iBACA,4EACA,WACA,mBAEA,oBACA,GAEA,8BACA,qBAEA,gDACA,eACA,kBACA,kBACA,MAEA,GACA,EACA,yBACA,YACA,YAEA,EACA,SACA,gBACA,kBACA,EACA,gBACA,kBACA,EACA,iBACA,mBACA,EACA,oCACA,OAEA,sHACA,cACA,0FACA,oDACA,gCAEA,eACA,cACA,+EACA,WACA,kBAEA,GACA,EACA,qBACA,wBACA,KC1OyQ,MCQrQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC6FhC,wBACA,iCACA,kJACA,YACA,OACA,OACA,YACA,aAEA,YACA,YACA,cAGA,gBACA,OACA,iBACA,sBACA,gBACA,iBACA,QACA,aACA,aACA,gBACA,aACA,iBACA,aACA,eACA,QACA,sBACA,YAGA,EACA,UACA,qBACA,oEACA,EACA,mBACA,4CACA,gBAEA,iFAEA,EACA,kBACA,4CACA,gBAEA,gHAEA,EACA,sCACA,4BAEA,gHACA,iCACA,EACA,yBACA,wBAEA,oEAEA,EACA,6BACA,iCACA,GAEA,mBACA,mBACA,oBACA,EACA,mBACA,qBAEA,yEACA,gFACA,oDACA,EACA,yBACA,2CACA,+CACA,qCACA,EACA,SACA,kCACA,OACA,kBACA,qNAEA,oCACA,kBACA,cACA,GACA,EACA,oCACA,OACA,GACA,sCACA,oBACA,sBACA,uBAEA,uMACA,kBACA,uCACA,QACA,mBACA,gBAEA,0CAEA,2CACA,EACA,yBACA,WACA,kBACA,8HAEA,qGACA,oCACA,8DACA,qCACA,cACA,GACA,EACA,gCACA,qBAEA,6CACA,kBACA,EACA,kCACA,GACA,wCACA,qEACA,uBAEA,2HACA,uC,MACA,2JACA,gBACA,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R,EAAIY,GAAGpB,EAAOkvC,YAAYzuC,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGpB,EAAO+D,OAAO,QAAQ,IAAG,EAChc,EACI,GAAkB,GCkEpB,IACElC,KAAM,kBACNkG,MAAO,CACLm6C,SAAU,CACR1+C,KAAMtF,MACN,UACE,MAAO,EACT,GAEF6D,MAAO,CACLyB,KAAM2E,OACNC,UAAU,IAGdnF,QAAS,CACP,UAAAmU,CAAYvW,GACV,OAAOA,IAAQ/E,KAAKiG,KACtB,ICrFwI,MCQ1I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCqHhC,wBACA,wBACA,2FACA,OACA,YACA,YACA,aAEA,OACA,YACA,cAGA,gBACA,OACA,UACA,oEACA,uEACA,uEAEA,aACA,WACA,WACA,cACA,eAEA,EACA,UACA,0BACA,sCACA,EACA,8BACA,WACA,qCACA,+BACA,IAEA,iBAEA,EACA,EACA,qBACA,8DACA,EACA,oBACA,qDACA,EACA,wBACA,yDACA,EACA,0BACA,8DACA,EACA,0BACA,uEACA,GAEA,SACA,kBAGA,2CACA,EACA,oBAEA,sCACA,EACA,eAEA,uCACA,EACA,4BACA,2CACA,EACA,kCAEA,2BACA,yHACA,8HACA,GACA,qBACA,qBACA,oDACA,4BACA,kDACA,uCAEA,uCACA,eACA,iBACA,aACA,YACA,GACA,EACA,6BACA,iBACA,EACA,4BACA,iBACA,KC3OiQ,MCQ7P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCuBhC,wBACA,oCACA,0DACA,YACA,OACA,OACA,YACA,aAEA,UACA,YACA,aAEA,WACA,YACA,cAGA,UACA,yCACA,+EACA,oCACA,GACA,EACA,2B,MACA,8EACA,GAEA,SACA,iBACA,mBACA,EACA,4BACA,6BACA,EACA,uBACA,wBACA,EACA,wBACA,yBACA,KClF6Q,MCQzQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC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ACA,2DACA,OACA,OACA,YACA,aAEA,UACA,YACA,aAEA,WACA,YACA,cAGA,gBACA,OACA,QACA,aACA,aAEA,EACA,UACA,yBACA,0EACA,GAEA,mBACA,oBACA,EACA,SACA,mBAEA,gGACA,EACA,uCACA,0CACA,4GACA,uCACA,0BACA,GACA,EACA,kCAEA,0CACA,8GACA,uCACA,qBACA,GACA,EACA,mCACA,0CACA,+GACA,uCACA,sBACA,GACA,EACA,4C,MACA,OACA,sDACA,4CACA,oDAEA,KC5G0Q,MCQtQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC2ChC,wBACA,qCACA,mHACA,OACA,SACA,YACA,aAEA,YACA,YACA,aAEA,aACA,YACA,cAGA,gBACA,OACA,gBACA,iBACA,aACA,aACA,gBACA,oBAEA,EACA,8BAEA,uEAIA,qBACA,aAHA,sFAKA,EACA,mBACA,oBACA,EACA,SACA,2BACA,kBACA,kCACA,eACA,SAEA,wBACA,yBAEA,iCACA,qBACA,sBAEA,4BAEA,kDACA,kBACA,mBAEA,GACA,GACA,EACA,qC,EAAA,OAEA,4DACA,sCACA,8CACA,IACA,EACA,mBAEA,8FACA,EACA,oBACA,oIACA,wBACA,EACA,uB,MACA,6DACA,yMACA,8MACA,wBACA,EACA,wB,MAEA,GACA,qCACA,mCACA,sBACA,uBAEA,6DACA,iHACA,sHACA,2BACA,EACA,sBACA,WACA,EACA,2BACA,8FACA,EACA,uBACA,8FACA,KCvK8Q,MCQ1Q,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAQH,EAAiB,cAAEC,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU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,WAAW,KAAI,GAAG1/B,EAAIS,KAAQT,EAAI49C,OAAU59C,EAAI49C,MAAMt6C,QAAYtD,EAAI09C,gBAAsK19C,EAAIS,KAAzJR,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,oCAAoC,YACj3C,EACI,GAAkB,GCgEtB,wBACA,yBACA,uDACA,OACA,WACA,YACA,aAEA,OACA,YACA,aAEA,UACA,aACA,aAGA,gBACA,OACA,mBAEA,EACA,UACA,iB,MACA,mFACA,GAEA,SACA,oCACA,kLACA,qCACA,qBACA,yBACA,2CACA,EACA,iBACA,uBACA,EACA,uBACA,uBACA,EACA,gCACA,uLAEA,uCACA,yBACA,2CACA,EACA,oCACA,sBACA,4BAEA,gCACA,IACA,4BAEA,oCACA,WAEA,gCAGA,kDAEA,KClIkQ,MCQ9P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCwGhC,wBACA,wBACA,kLACA,YACA,OACA,IACA,YACA,YAEA,SACA,YACA,YAEA,YACA,YACA,aAGA,gBACA,OACA,0BACA,aACA,aACA,SACA,UACA,WAEA,EACA,UACA,wBACA,gEACA,QACA,EACA,mBACA,uDACA,EACA,0B,UACA,gDACA,+DACA,SACA,2EACA,+EACA,EACA,yBACA,2BACA,EACA,oB,QACA,mDACA,mKACA,EACA,sBACA,4CACA,EACA,wB,MACA,6DACA,4BACA,OACA,0DACA,OACA,mDACA,OACA,kDAIA,QACA,GAEA,8BAGA,2IACA,eACA,0CAEA,cACA,IAEA,uBACA,sGACA,sCACA,WACA,SACA,8BACA,qDACA,IAEA,+C,CAEA,IAEA,oCACA,iBACA,G,MAGA,mBACA,iBACA,GAEA,EACA,SACA,6B,EAAA,OACA,eACA,OACA,6CACA,kCACA,sBACA,uBAEA,6DACA,iHACA,sHACA,qBACA,kBAEA,mBACA,WACA,GACA,EACA,uBAEA,4BAEA,kCAEA,0CACA,cACA,EACA,y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AAC,qBAAuBlB,EAAIw/C,yBAAyB,KAAKx/C,EAAIS,QAC57E,EACI,GAAkB,GC0FtB,wBACA,gCACA,kCACA,OACA,UACA,YACA,aAEA,WACA,YACA,aAEA,OACA,YACA,aAEA,iBACA,aACA,aAGA,gBACA,OACA,8DACA,qBAEA,EACA,UACA,oBACA,qJACA,0FACA,GAEA,SACA,mBACA,uHACA,EACA,6BACA,yBACA,EACA,gCACA,6FACA,EACA,+BACA,yBACA,EACA,8BACA,iGACA,KC5IyQ,MCQrQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCsChC,wBACA,0BACA,4DACA,WACA,GACA,GACA,IACA,OACA,UACA,YACA,aAEA,gBACA,eACA,WACA,YACA,aAEA,OACA,YACA,aAEA,iBACA,aACA,YAEA,OACA,YACA,eAGA,gBACA,OACA,aAEA,EACA,UACA,8BACA,8CACA,EACA,iCACA,gGACA,mCACA,WAGA,MACA,EACA,oBACA,2JACA,EACA,yBACA,2BACA,EACA,yBACA,uBACA,kEACA,kDACA,EACA,yBAEA,qCAGA,sFACA,sCAGA,2EAQA,MALA,oFACA,qCAIA,2CACA,EACA,2BACA,6FACA,EACA,mCACA,WACA,KACA,EACA,EACA,GACA,8BACA,gDACA,GACA,EACA,qBACA,OACA,uCACA,uBACA,iCACA,iCAEA,GAEA,yBACA,YACA,YAEA,EACA,SACA,gBACA,kBACA,EACA,gBACA,kBACA,EACA,iBACA,mBACA,EACA,mBACA,wBACA,KC9KmQ,MCQ/P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,YAAcP,EAAImL,aAAarC,MAAM,CAA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CA,IAEA,IACA,QACA,GAEA,SACA,+BACA,gCACA,KC/EsQ,MCQlQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC2FhC,wBACA,6BACA,yIACA,YACA,OACA,OACA,YACA,aAEA,aACA,YACA,cAGA,gBACA,OACA,gBACA,qBACA,gBACA,iBACA,QACA,aACA,aACA,aACA,iBACA,aACA,eACA,QACA,sBACA,YAGA,EACA,UACA,sB,UACA,kEACA,+FACA,kGACA,EACA,qBACA,kEACA,EACA,mB,MACA,0CACA,wGACA,EACA,kB,MACA,0CACA,sIACA,EACA,sCACA,mCAEA,8IACA,iCACA,EACA,yB,QACA,0LACA,EACA,4BACA,gCACA,GAEA,mBACA,oBACA,oBACA,qBAEA,yEACA,gFACA,oDACA,EACA,yBACA,2CACA,+CACA,qCACA,EACA,SACA,wBACA,WACA,GACA,sCACA,mCACA,sBACA,uBAEA,2HACA,uCACA,kBACA,GACA,EACA,mCACA,OACA,8LACA,kBACA,oCACA,QACA,kBACA,gBAEA,0CAEA,2CACA,EACA,wBACA,WACA,kBACA,0HAEA,uGACA,oCACA,6DACA,mCACA,cACA,GACA,EACA,+BACA,qBACA,+CACA,kBACA,EACA,kCACA,GACA,mCACA,2DACA,uBAEA,sHACA,uCACA,gHACA,gBACA,6CACA,GACA,EACA,kBACA,WACA,gD,MACA,qFACA,IAEA,QACA,6DACA,oBACA,sC,CAEA,EACA,kBACA,WACA,gD,MACA,qFACA,IAEA,yCACA,0DACA,oBACA,sC,CAEA,EACA,mBACA,oBACA,EACA,iDACA,GACA,mCACA,2DACA,uBAEA,uHACA,uCACA,kBACA,gBACA,gBAEA,4CACA,GACA,EACA,oDACA,GACA,mCACA,2DACA,uBAEA,sHACA,kBACA,uCACA,kBACA,gBACA,gBAEA,4CACA,GACA,EACA,4BACA,WACA,mBACA,6D,gBACA,sOACA,oMACA,qKACA,kMACA,GACA,EACA,mBACA,wBACA,EACA,oCACA,sBACA,4BAEA,gCACA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,uEACA,kDACA,EACA,yBAEA,qCAGA,sFACA,sCAGA,2EAQA,MALA,oFACA,qCAIA,2CACA,EACA,4BACA,uEACA,qMAEA,yFAEA,EACA,2BACA,6FACA,EACA,mCACA,WACA,KACA,EACA,EACA,GACA,8BACA,gDACA,GACA,EACA,qBACA,OACA,2BACA,mDACA,2DACA,uCACA,uBACA,iCACA,iCAEA,GAEA,OACA,oBAEA,iBACA,4EACA,WACA,mBAEA,oBACA,GAEA,8BACA,qBAEA,gDACA,eACA,kBACA,kBACA,MAEA,GACA,EACA,yBACA,YACA,YAEA,EACA,SACA,gBACA,kBACA,EACA,gBACA,kBACA,EACA,iBACA,mBACA,EACA,oCACA,OAEA,sHACA,cACA,6FACA,oDACA,gCAEA,eACA,cACA,+EACA,WACA,kBAEA,GACA,EACA,mBACA,wBACA,KC3OwQ,MCQpQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC2FhC,wBACA,kCACA,mJACA,YACA,OACA,OACA,YACA,aAEA,aACA,YACA,cAGA,gBACA,OACA,gBACA,qBACA,gBACA,iBACA,QACA,aACA,aACA,aACA,iBACA,aACA,eACA,QACA,sBACA,YAGA,EACA,UACA,sB,UACA,kEACA,+FACA,kGACA,EACA,qBACA,kEACA,EACA,mB,MACA,0CACA,6GACA,EACA,kB,MACA,0CACA,2IACA,EACA,sCACA,mCAEA,mJACA,iCACA,EACA,yB,QACA,oMACA,EACA,4BACA,gCACA,GAEA,mBACA,oBACA,oBACA,qBAEA,yEACA,gFACA,oDACA,EACA,yBACA,2CACA,+CACA,qCACA,EACA,SACA,wBACA,WACA,GACA,sCACA,mCACA,sBACA,uBAEA,gIACA,uCACA,kBACA,GACA,EACA,mCACA,OACA,mMACA,kBACA,oCACA,QACA,kBACA,gBAEA,0CAEA,2CACA,EACA,wBACA,WACA,kBACA,+HAEA,uGACA,oCACA,6DACA,mCACA,cACA,GACA,EACA,+BACA,qBACA,oDACA,kBACA,EACA,kCACA,GACA,wCACA,qEACA,uBAEA,2HACA,uCACA,gHACA,gBACA,6CACA,GACA,EACA,kBACA,WACA,gD,MACA,0FACA,IAEA,QACA,kEACA,oBACA,sC,CAEA,EACA,kBACA,WACA,gD,MACA,0FACA,IAEA,yCACA,+DACA,oBACA,sC,CAEA,EACA,mBACA,oBACA,EACA,iDACA,GACA,wCACA,qEACA,uBAEA,4HACA,uCACA,kBACA,gBACA,gBAEA,4CACA,GACA,EACA,oDACA,GACA,wCACA,qEACA,uBAEA,2HACA,kBACA,uCACA,kBACA,gBACA,gBAEA,4CACA,GACA,EACA,4BACA,WACA,mBACA,6D,gBACA,sOACA,oMACA,qKACA,kMACA,GACA,EACA,mBACA,wBACA,EACA,oCACA,sBACA,4BAEA,gCACA,IACA,4BAEA,oCACA,WAEA,gCAGA,kDAEA,KC3U2Q,MCQvQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCgBhC,wBACA,0BACA,+EACA,OACA,SACA,YACA,aAEA,aACA,YACA,cAGA,gBACA,OACA,aACA,aAEA,EACA,UACA,6BACA,+BACA,GAEA,8BACA,kBACA,kCACA,eACA,cACA,gBAEA,6BACA,GACA,EACA,SACA,oBACA,oIACA,wBACA,KCzEmQ,MCQ/P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAQH,EAAa,UAAEC,EAAG,MAAM,CAACG,YAAY,2CAA2C,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAAEJ,EAAS,MAAEC,EAAG,aAAa,CAACM,MAAM,CAAC,WAAWP,EAAIk4B,MAAMtyB,MAAM5F,EAAIS,KAAKR,EAAG,eAAe,GAAGA,EAAG,MAAM,CAACG,YAAY,uCAAuC,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,+CAAgDb,EAAIk4B,M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ACA,4BACA,6BACA,EACA,uBACA,wBACA,EACA,wBACA,yBACA,KClFyQ,MCQrQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCwBhC,wBACA,iCACA,6DACA,OACA,OACA,YACA,aAEA,UACA,YACA,aAEA,WACA,YACA,cAGA,gBACA,OACA,QACA,aACA,aAEA,EACA,UACA,4BACA,gCACA,GAEA,mBACA,oBACA,EACA,SACA,mBAEA,iGACA,oBACA,EACA,uCACA,0CACA,4GACA,uCACA,0BACA,GACA,EACA,kCAEA,0CACA,8GACA,uCACA,qBACA,GACA,EACA,mCACA,0CACA,+GACA,uCACA,sBACA,GACA,EACA,4C,MACA,OACA,sDACA,4CACA,oDAEA,KC7G0Q,MCQtQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCwChC,wBACA,qCACA,mHACA,OACA,SACA,YACA,aAEA,YACA,YACA,aAEA,aACA,YACA,cAGA,gBACA,OACA,gBACA,iBACA,aACA,aAEA,EACA,mBACA,WACA,EACA,SACA,2BACA,kBACA,kCACA,eACA,SAEA,wBACA,yBAEA,iCACA,qBACA,sBAEA,4BAEA,kDACA,kBACA,mBAEA,GACA,GACA,EACA,qC,QAAA,OAEA,6DACA,iFACA,sFAEA,iEACA,+BACA,4CACA,KAEA,+BACA,iDACA,IAEA,EACA,oBACA,oIACA,wBACA,EACA,wB,MAEA,GACA,qCACA,mCACA,sBACA,uBAEA,6DACA,iHACA,sHACA,2BACA,EACA,uB,MACA,6DACA,yMACA,8MACA,wBACA,EACA,sBACA,WACA,EACA,2BACA,gGACA,EACA,uBACA,gGACA,KC7J8Q,MCQ1Q,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,UAAU,CAACM,MAAM,C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AI6E,QAAQomD,cAAehrD,EAAG,YAAY,CAACG,YAAY,sBAAsBG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,6BAA6B,cAAc,mBAAmBK,GAAG,CAAC,gBAAkBlB,EAAI6rD,wBAAwB7rD,EAAIS,MAAM,KAAKT,EAAIS,KAA+B,IAAzBT,EAAImrD,iBAAwBlrD,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,MAAM,CAACG,YAAY,WAAW,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,gCAAgC,WAAWb,EAAIS,QACr4L,EACI,GAAkB,GCsKtB,wBACA,8BACA,qEACA,kBACA,OACA,WACA,YACA,cAEA,eACA,aACA,aAGA,gBACA,OACA,QACA,gBACA,mBACA,SACA,eACA,cACA,aAEA,EACA,UACA,qBAEA,wCACA,EACA,qBACA,kCACA,WACA,iCAEA,kCACA,IACA,mB,CAEA,SACA,EACA,yBACA,8EACA,2FACA,EACA,8BAEA,+GACA,EACA,2BAEA,2GACA,EACA,0C,MAEA,kIACA,EACA,0C,MAEA,kIACA,EACA,wB,MAMA,kEACA,OACA,qCACA,OACA,0CACA,OACA,sCACA,OACA,mCAGA,QACA,EACA,iB,MACA,+DACA,EACA,iB,MACA,+DACA,EACA,2B,MACA,wGACA,WACA,KAKA,OAJA,kDAEA,iCACA,IACA,Y,CAEA,SACA,EACA,0BAEA,0GACA,EACA,6B,MACA,gHAIA,sFACA,EACA,wBAEA,sDACA,EACA,0BAEA,wDACA,GAEA,mBACA,yDACA,EACA,yBACA,uCACA,EACA,SACA,0B,MACA,4EAEA,cAEA,GACA,EACA,6BACA,kCACA,EACA,sBACA,qBACA,WACA,2HACA,oCACA,kBACA,cACA,gBACA,iBACA,IAEA,kIAEA,oDACA,UACA,IAEA,kIAEA,mDACA,SACA,GACA,EACA,+BACA,wBACA,WACA,qIACA,oCACA,qBACA,gBACA,gBACA,oBACA,GACA,EACA,mBAEA,gBAEA,mDACA,aACA,wBACA,kBAEA,2BACA,0BAEA,EACA,0BAEA,YACA,EACA,sBACA,0DACA,EACA,8BACA,oEACA,EACA,gCACA,sEACA,KC1WuQ,MCQnQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAASD,EAAI8rD,KAAmuC9rD,EAAIS,KAAjuCR,EAAG,MAAM,CAACG,YAAY,+BAA+B,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,cAAc,CAACG,YAAY,gBAAgB2C,MAAO/C,EAAiB,iBAAK,GAAGC,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIo+B,UAAUhqB,WAAW,IAAIpU,EAAIY,GAAGZ,EAAIo+B,UAAU/pB,aAAapU,EAAG,MAAMA,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIo+B,UAAU9pB,UAAUrU,EAAG,MAAMA,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI0f,YAAa1f,EAAW,QAAEC,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,KAAKR,EAAIY,GAAGZ,EAAI+f,QAAQ1e,MAAM,OAAOrB,EAAIS,OAAST,EAAIuG,QAA2ftG,EAAG,MAAM,CAACG,YAAY,iCAAiC,CAACH,EAAG,OAAO,CAACG,YAAY,QAAQ,CAACH,EAAG,YAAY,KAAzlBA,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAAGJ,EAAIkI,SAAgOjI,EAAG,OAAO,CAACA,EAAG,OAAO,CAACG,YAAY,cAAcG,MAAM,CAAC,SAAW,KAAKW,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAIsH,YAAYtH,EAAIo+B,UAAUx4B,GAAI,EAAE,IAAI,CAAC5F,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,uCAAuC,SAA1aZ,EAAG,OAAO,CAAED,EAAc,WAAEC,EAAG,OAAO,CAACG,YAAY,cAAcG,MAAM,CAAC,SAAW,KAAKW,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAIsH,YAAYtH,EAAIo+B,UAAUx4B,GAAG,IAAI,CAAC5F,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI+rD,YAAY,OAAO/rD,EAAIS,YACt9B,EACI,GAAkB,GCoCpB,IACEY,KAAM,qBACN2G,WAAY,CAAEgkD,YAAW,WAAS,IAClCzkD,MAAO,CACL62B,UAAW,CACTp7B,KAAMkL,OACNzG,QAAS,MAEX2K,KAAM,CACJpP,KAAMwE,OACNC,QAAS,KAGbtF,KAAM,WACJ,MAAO,CACL+F,UAAU,EACV3B,SAAS,EACTulD,MAAM,EAEV,EACAxpD,SAAU,CACRoyC,cAAe,WACb,IAAI2U,EAAO/tD,KAAK8iC,WAAa9iC,KAAK8iC,UAAU6tB,SAAW3wD,KAAK8iC,UAAU6tB,SAAW,GACjF,MAAO,mBAAqB5C,EAAO,gEACrC,EACA0C,WAAY,WACV,GAAIzwD,KAAK66B,QAAQ,UAAY76B,KAAK66B,QAAQ,sBAAwB76B,KAAK66B,QAAQ,oBAAsB76B,KAAK66B,QAAQ,kBAAoB76B,KAAK66B,QAAQ,kBAAoB76B,KAAK66B,QAAQ,4BAA8B76B,KAAK66B,QAAQ,0BAA2B,CACxP,GAAkB,MAAd76B,KAAK8W,KACP,OAAO9W,KAAKuF,GAAG,sCACV,GAAkB,MAAdvF,KAAK8W,KACd,OAAO9W,KAAKuF,GAAG,oCAEnB,CACA,MAAO,EACT,EACA6e,QAAS,WACP,OAAQpkB,KAAK8iC,UAAU1e,QAAU,IAAIwsC,SAAS,EAAG,IACnD,EACAnsC,QAAS,WACP,GAAIzkB,KAAK8iC,UAAW,CAClB,MAAM/5B,EAAO/I,KACb,OAAO0B,EAAEO,KAAK8G,EAAKjC,OAAOlF,MAAMgU,UAAU,SAAUpS,GAClD,OAAOA,EAAE8G,KAAOvB,EAAK+5B,UAAUmX,SACjC,GACF,CAEA,OAAO,IACT,GAEF9yC,QAAS,CACP6E,YAAa,SAAU1B,GACH,MAAdtK,KAAK8W,KACP9W,KAAK6wD,YAAYvmD,EAAI,GACE,MAAdtK,KAAK8W,MACd9W,KAAK6wD,YAAYvmD,EAAI,EAEzB,EACAumD,YAAa,SAAUvmD,EAAIwmD,GACzB,KAAI9wD,KAAKiL,SAAW6lD,EAAW,GAAKA,EAAW,GAA/C,CAGA9wD,KAAKiL,SAAU,EAEf,IAAIvH,EAAO,CAAC,EACZA,EAAKqtD,SAAW1kD,OAAO/B,GACvB5G,EAAKstD,SAAW3kD,OAAOykD,GACvB,IAAIr7C,EAAOzV,KAAK8G,OAAOlF,MAAM+G,SAAS41C,cAAgBv+C,KAAK8G,OAAOlF,MAAMM,aAAa+uD,kBAAkB,GAEnGloD,EAAO/I,KACXA,KAAKgJ,MAAMuB,KAAKkL,EAAK/R,GAAMH,MAAKC,IAC9BuF,EAAKkC,SAAU,EACflC,EAAK6D,UAAY7D,EAAK6D,SACtB7D,EAAKynD,MAAO,KACXh8B,IACDzrB,EAAKkC,SAAU,EACflC,EAAKynD,MAAO,IAfd,CAiBF,ICnH2I,MCQ7I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI9rD,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,+BAA+B,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIikB,SAAS7P,WAAW,IAAIpU,EAAIY,GAAGZ,EAAIikB,SAAS5P,UAAU,OAASrU,EAAIuG,QAAkPtG,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,OAAO,CAACG,YAAY,QAAQ,CAACH,EAAG,YAAY,KAAtUA,EAAG,MAAM,CAACG,YAAY,YAAY,CAAEJ,EAAgB,aAAEC,EAAG,OAAO,CAACA,EAAG,OAAO,CAACG,YAAY,cAAcG,MAAM,CAAC,SAAW,KAAKW,GAAG,CAAC,MAAQlB,EAAIwsD,iBAAiB,CAACxsD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6B,SAASb,EAAIS,UACxiB,EACI,GAAkB,GC8BtB,wBACA,4BACA,wBACA,OACA,UACA,YACA,cAGA,gBACA,OACA,YACA,WAEA,EACA,UACA,wBACA,4CACA,GAEA,SACA,qCACA,gEACA,uEACA,sBACA,uFACA,4FAEA,IACA,sCACA,wDAEA,oCACA,oCACA,GACA,gBAEA,4CACA,GAEA,EACA,gCACA,kCACA,mHACA,iCACA,SACA,4DACA,GACA,KChFqQ,MCQjQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,+BAA+B,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIo+B,UAAUhqB,WAAW,IAAIpU,EAAIY,GAAGZ,EAAIo+B,UAAU/pB,UAAU,OAASrU,EAAIuG,QAAgPtG,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,OAAO,CAACG,YAAY,QAAQ,CAACH,EAAG,YAAY,KAApUA,EAAG,MAAM,CAACG,YAAY,YAAY,CAAEJ,EAAa,UAAEC,EAAG,OAAO,CAACA,EAAG,OAAO,CAACG,YAAY,cAAcG,MAAM,CAAC,SAAW,KAAKW,GAAG,CAAC,MAAQlB,EAAIysD,kBAAkB,CAACzsD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6B,SAASb,EAAIS,UACxiB,EACI,GAAkB,GC4BtB,wBACA,mCACA,wBACA,OACA,WACA,YACA,aAEA,SACA,YACA,aAEA,gBACA,YACA,aAEA,cACA,aACA,aAGA,gBACA,OACA,YACA,WAEA,EACA,UACA,qBACA,yBACA,6DACA,iEACA,EACA,qBACA,6BACA,mMAEA,4MACA,GAEA,SACA,sCACA,mEACA,qBACA,uCACA,oCACA,gBACA,cACA,G,CAEA,KChF4Q,MCQxQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,+BAA+B,CAACH,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI0sD,OAAOtuB,UAAUuuB,UAAU,OAAQ3sD,EAAW,QAAEC,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,OAAO,CAACG,YAAY,QAAQ,CAACH,EAAG,YAAY,KAAKD,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,sCAAsC,CAAGJ,EAAI0sD,OAAOtuB,UAAUwuB,UAAa5sD,EAAI0sD,OAAOtuB,UAAUyuB,eAAuN7sD,EAAIS,KAA3MR,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,6BAA6B,cAAc,cAAcK,GAAG,CAAC,WAAalB,EAAI8sD,gBAA0B9sD,EAAI0sD,OAAOtuB,UAAUwuB,WAAa5sD,EAAI0sD,OAAOtuB,UAAUyuB,eAAgB5sD,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,gCAAgC,cAAc,gBAAgBK,GAAG,CAAC,aAAelB,EAAI+sD,kBAAkB/sD,EAAIS,KAAMT,EAAI0sD,OAAOtuB,UAAwB,eAAEn+B,EAAG,MAAM,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,2BAA2B,KAAKZ,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,WAAW,GAAGP,EAAIS,MAAM,IAC9rC,EACI,GAAkB,GC6CtB,wBACA,oCACA,oCACA,OACA,WACA,YACA,cAEA,cACA,aACA,YAEA,uBACA,YACA,aAGA,gBACA,OACA,YACA,WAEA,EACA,UACA,mCACA,iCACA,EACA,4BACA,6BACA,0FAEA,8FACA,EACA,+BACA,6BACA,6FAEA,iGACA,EACA,0BACA,yBACA,CACA,oCACA,qDAOA,GAEA,SACA,mCACA,wBACA,sBAEA,uCACA,qCACA,8BACA,gBACA,uBACA,GACA,EACA,qCACA,2BACA,sBACA,uCACA,qCACA,sCACA,gBACA,uBACA,GACA,KCxH6Q,MCQzQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAQD,EAAW,QAAEC,EAAG,MAAM,CAACG,YAAY,+BAA+B,CAACH,EAAG,MAAM,CAACG,YAAY,0BAA0B,CAACH,EAAG,cAAc,CAACG,YAAY,gBAAgB2C,MAAO/C,EAAiB,iBAAK,GAAGC,EAAG,MAAM,CAACG,YAAY,+BAA+B,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI6E,QAAQuP,WAAW,IAAIpU,EAAIY,GAAGZ,EAAI6E,QAAQwP,UAAU,OAAOpU,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAAEJ,EAAwB,qBAAEC,EAAG,MAAM,CAAED,EAAIgtD,eAAiBhtD,EAAIitD,eAAgBhtD,EAAG,aAAa,CAACM,MAAM,CAAC,GAAKP,EAAIitD,eAAe,MAAQjtD,EAAIgtD,iBAAiBhtD,EAAIS,MAAM,GAAGR,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,WAAW,CAAC6I,MAAM,CAACvH,MAAOvB,EAAiB,cAAE+I,SAAS,SAAUC,GAAMhJ,EAAIgtD,cAAchkD,CAAG,EAAEvH,WAAW,oBAAoB,OAAOzB,EAAIS,IACrxB,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,yCAAyC,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,WAAW,CAACG,YAAY,eAAeG,MAAM,CAAC,MAAQ,GAAG,YAAcP,EAAIa,GAAG,iCAAiC,MAAQb,EAAIktD,cAAc,mBAAmB,6BAA6B,cAAa,GAAOhsD,GAAG,CAAC,MAAQlB,EAAImtD,QAAQrkD,MAAM,CAACvH,MAAOvB,EAAe,YAAE+I,SAAS,SAAUC,GAAMhJ,EAAIotD,YAAYpkD,CAAG,EAAEvH,WAAW,kBAAkB,IACtf,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIzB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,0BAA0B,CAACH,EAAG,cAAc,CAACM,MAAM,CAAC,MAAQP,EAAIuD,MAAM,MAAQvD,EAAIqtD,eAAe,YAAcrtD,EAAImL,YAAY,YAAW,GAAMrC,MAAM,CAACvH,MAAOvB,EAAgB,aAAE+I,SAAS,SAAUC,GAAMhJ,EAAI8vC,aAAa9mC,CAAG,EAAEvH,WAAW,kBAAkBxB,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,KAAK,CAACG,YAAY,eAAeJ,EAAI2G,GAAI3G,EAAiB,eAAE,SAAS5C,GAAM,OAAO6C,EAAG,KAAK,CAACI,IAAIjD,EAAKmE,MAAMnB,YAAY,mBAAmBG,MAAM,CAAC,MAAQnD,EAAKmE,QAAQ,CAACtB,EAAG,OAAO,CAAC6B,MAAM,CAAC09B,MAAK,EAAM8tB,UAAUlwD,EAAKmwD,SAAS,CAACttD,EAAG,OAAO,CAACG,YAAY,OAAO,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGxD,EAAK4J,SAAU5J,EAAKmwD,QAAUvtD,EAAIwtD,eAAgBvtD,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,QAAQ,aAAaP,EAAIa,GAAGb,EAAIwtD,eAAgB,CAACC,KAAMrwD,EAAK4J,QAAQ9F,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAIF,WAAW1C,EAAK,KAAK4C,EAAIS,KAAMrD,EAAKmwD,SAAWvtD,EAAIwtD,eAAgBvtD,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,SAASW,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAIF,WAAW1C,EAAK,KAAK4C,EAAIS,MAAM,IAAI,IAAG,MAAM,EACnhC,EACI,GAAkB,GCkEpB,IACEY,KAAM,uBACN2G,WAAY,CAAE0lD,YAAW,IACzBnmD,MAAO,CACLhE,MAAO,CACLP,KAAMwE,OACNC,QAAS,IAEXlG,MAAO,CACLyB,KAAMtF,MACN+J,QAAS,IAAM,IAEjBiM,MAAO,CACL1Q,KAAMtF,MACN+J,QAAS,IAAM,IAEjB0D,YAAa,CACXnI,KAAMwE,OACNC,QAAS,IAEX+lD,eAAgB,CACdxqD,KAAMwE,OACNC,QAAS,KAGb,IAAAtF,GACE,MAAO,CACLwrD,aAAa,EACb7d,aAAc,KAElB,EACAxtC,SAAU,CACR+qD,eAAgB,WACd,OAAOrwD,EAAE+R,OAAO/R,EAAE4wD,WAAWtyD,KAAKoY,MAAOpY,KAAKuyD,gBAAgB,SAAUluD,GAAK,OAAOA,EAAE4tD,MAAO,GAC/F,EACA,aAAAM,GACE,MAAMrlD,EAAM,GACNjG,EAAU,GAYhB,OAXAjH,KAAKiG,MAAMiS,SAAQpW,IACjB,IAAI0wD,EAAM9wD,EAAEO,KAAKjC,KAAKoY,OAAO,SAAU/T,GACrC,OAAOA,EAAE4B,QAAUnE,CACrB,IACI0wD,IACFtlD,EAAIvM,KAAK6xD,GACLA,EAAIP,QACNhrD,EAAQtG,KAAK6xD,GAEjB,IAEKtlD,CACT,GAEFgB,MAAO,CACLkK,MAAO,SAAUjK,GACfnO,KAAKqyD,aAAc,CACrB,EACA7d,aAAc,SAAU1yC,GAEtB,GAAIA,IAAS9B,KAAKuyD,cAAcr6B,MAAK9lB,GAAMA,EAAEnM,QAAUnE,IAAQ,CAE7D,IAAI2wD,EAAa/wD,EAAEO,KAAKjC,KAAKoY,OAAO,SAAUhG,GAC5C,OAAOA,EAAEnM,QAAUnE,CACrB,IACA9B,KAAKyf,KAAKzf,KAAKuyD,cAAevyD,KAAKuyD,cAAcvqD,OAAQyqD,GACzDzyD,KAAKyM,MAAM,QAASzM,KAAKuyD,cAC3B,CACF,GAEFprD,QAAS,CACP,UAAA3C,CAAY1C,GACV,IAAIyJ,EAAS7J,EAAER,QAAQlB,KAAKuyD,cAAezwD,GAC3C9B,KAAK0K,QAAQ1K,KAAKuyD,cAAehnD,GACjCvL,KAAKyM,MAAM,QAASzM,KAAKuyD,eACzBvyD,KAAKw0C,aAAe,IACtB,IC9I0I,MCQ5I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCA9B,IACEzuC,KAAM,uBACN2G,WAAY,CAAEgmD,SAAQ,IACtBzmD,MAAO,CACLiiD,MAAO,CACLxmD,KAAMtF,MACN+J,QAAS,IAAM,IAEjB7B,GAAI,CACF5C,KAAMwE,OACNC,QAAS,KAGbtF,KAAM,WACJ,MAAO,CACLirD,YAAa,GAEjB,EACA9qD,SAAU,CACR2rD,UAAW,WACT,MAAM5pD,EAAO/I,KAKP4yD,EAAelxD,EAAE4M,MAAMtO,KAAKkuD,MAAOluD,KAAK8xD,aAe9C,OAZApwD,EAAE6W,OAAOq6C,GAAc,SAAUT,GAC/B,MAAMU,EAAuBnxD,EAAEO,KAAK8G,EAAK6oD,eAAe,SAAUjuD,GAChE,MAAU,KAANA,GAEGA,EAAEsC,QAAUksD,CACrB,IAEMW,EAAa/pD,EAAK+oD,YAAYpwD,EAAER,QAAQ6H,EAAK+oD,YAAaK,IAEhE,OAAOzwD,EAAEqxD,YAAYD,IAAeD,CACtC,IAEO,CACLG,OAAQhzD,KAAKsK,GACb4jD,MAAO0E,EAEX,EACAhB,cAAe,WACb,MAAMlE,EAAU1tD,KAAK66B,QAAQ,SACvBo4B,EAAkBjzD,KAAK66B,QAAQ,iBAC/Bq4B,EAAqBlzD,KAAK66B,QAAQ,oBAClCs4B,EAAkBnzD,KAAK66B,QAAQ,iBAC/Bu4B,EAAapzD,KAAK66B,QAAQ,YAC1Bw4B,EAAOrzD,KAAK66B,QAAQ,MACpBy4B,EAAoBtzD,KAAK66B,QAAQ,mBACjC04B,EAA4BvzD,KAAK66B,QAAQ,2BACzC24B,EAA2BxzD,KAAK66B,QAAQ,0BAE9C,IAAI1lB,EAAK,GAgBT,OAfAA,EAAGxU,KAAK,CAAEsF,MAAO,QAASyF,KAAM1L,KAAKuF,GAAG,eAAgB0sD,OAAQvE,IAChEv4C,EAAGxU,KAAK,CAAEsF,MAAO,gBAAiByF,KAAM1L,KAAKuF,GAAG,uBAAwB0sD,OAAQvE,IAChFv4C,EAAGxU,KAAK,CAAEsF,MAAO,mBAAoByF,KAAM1L,KAAKuF,GAAG,0BAA2B0sD,OAAQvE,GAAWuF,IACjG99C,EAAGxU,KAAK,CAAEsF,MAAO,gBAAiByF,KAAM1L,KAAKuF,GAAG,uBAAwB0sD,OAAQvE,IAChFv4C,EAAGxU,KAAK,CAAEsF,MAAO,WAAYyF,KAAM1L,KAAKuF,GAAG,kBAAmB0sD,OAAQvE,GAAWyF,GAAmBF,GAAmBC,IACvH/9C,EAAGxU,KAAK,CAAEsF,MAAO,KAAMyF,KAAM1L,KAAKuF,GAAG,YAAa0sD,OAAQvE,GAAWyF,GAAmBF,GAAmBC,GAAsBE,IACjIj+C,EAAGxU,KAAK,CAAEsF,MAAO,KAAMyF,KAAM1L,KAAKuF,GAAG,YAAa0sD,OAAQvE,GAAWyF,GAAmBF,GAAmBC,GAAsBE,GAAcC,IAE/Il+C,EAAGxU,KAAK,CAAEsF,MAAO,kBAAmByF,KAAM1L,KAAKuF,GAAG,yBAA0B0sD,OAAQvE,IACpFv4C,EAAGxU,KAAK,CAAEsF,MAAO,0BAA2ByF,KAAM1L,KAAKuF,GAAG,iCAAkC0sD,OAAQvE,IACpGv4C,EAAGxU,KAAK,CAAEsF,MAAO,yBAA0ByF,KAAM1L,KAAKuF,GAAG,gCAAiC0sD,OAAQvE,GAAW4F,GAAqBC,IAClIp+C,EAAGxU,KAAK,CAAEsF,MAAO,mBAAoByF,KAAM1L,KAAKuF,GAAG,0BAA2B0sD,OAAQvE,GAAW4F,GAAqBC,GAA6BC,IACnJr+C,EAAGxU,KAAK,CAAEsF,MAAO,sBAAuByF,KAAM1L,KAAKuF,GAAG,6BAA8B0sD,OAAQvE,GAAW4F,IACvGn+C,EAAGxU,KAAK,CAAEsF,MAAO,oBAAqByF,KAAM1L,KAAKuF,GAAG,2BAA4B0sD,OAAQvE,GAAWyF,GAAmBF,GAAmBK,GAAqBC,IAEvJp+C,CACT,GAEFjH,MAAO,CACLggD,MAAO,CACL5oC,MAAM,EACNC,QAAS,SAAUpX,EAAKC,GACtBpO,KAAK8xD,YAAc3jD,CACrB,IAGJ3B,QAAS,WACPxM,KAAK8xD,YAAc9xD,KAAKkuD,KAC1B,EACA/mD,QAAS,CACP0qD,OAAQ,SAAU5rD,GAChBjG,KAAK8xD,YAAcpwD,EAAEoZ,IAAI7U,GAAO,SAAUwtD,GAAK,OAAOA,EAAExtD,KAAM,IAC9DjG,KAAK8xD,YAAcpwD,EAAE+R,OAAOzT,KAAK8xD,aAAa,SAAU2B,GAAK,MAAa,KAANA,CAAS,IAC7EzzD,KAAK0zD,UACP,EACAA,SAAU,SAAUjmD,GAClB,MAAM1E,EAAO/I,KACb,IAAIyV,EAAMzV,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAayxD,SAAS,GAC3F3zD,KAAKgJ,MAAMuB,KAAKkL,EAAKzV,KAAK2yD,WAAWpvD,MAAKC,IACxCuF,EAAKmZ,KAAKzV,MAAM,wBAAyBzM,KAAK2yD,UAAS,IACtDn+B,IACG/mB,GAEFA,EAAS,cACX,GAEJ,IC1H6I,MCQ/I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCM9B,IACE1H,KAAM,mBACN2G,WAAY,CAAEgkD,YAAW,cAAY,YAAU,IAC/CzkD,MAAO,CACL1C,QAAS,CACP7B,KAAMkL,OACNzG,QAAS,MAEX+hD,MAAO,CACLxmD,KAAMtF,MACN+J,QAAS,IAAM,IAEjB6mD,OAAQ,CACNtrD,KAAMwE,OACNC,QAAS,KAGbtF,KAAM,WACJ,MAAO,CAAC,CACV,EACAG,SAAU,CACRoyC,cAAe,WACb,IAAI2U,EAAO/tD,KAAKuJ,SAAWvJ,KAAKuJ,QAAQqyB,SAAW57B,KAAKuJ,QAAQqyB,SAAW,GAC3E,MAAO,mBAAqBmyB,EAAO,gEACrC,EACA2D,cAAe,WACb,GAAI1xD,KAAKkuD,MACP,OAAOluD,KAAKkuD,MAGd,MAAMnlD,EAAO/I,KACb,IAAIm5C,EAAQz3C,EAAEO,KAAKjC,KAAK8G,OAAOlF,MAAMgyD,cAAc,SAAUvvD,GAC3D,OAAO0E,EAAK4oD,iBAAmBttD,EAAE2uD,MACnC,IAEA,OAAI7Z,GAASA,EAAM+U,MACV/U,EAAM+U,MAGR,EACT,EACAyD,eAAgB,WACd,OAAO3xD,KAAKgzD,QAAUhzD,KAAKuJ,QAAQe,EACrC,EACAupD,qBAAsB,WAEpB,OAAQ7zD,KAAK66B,QAAQ,UAAY76B,KAAK66B,QAAQ,kBAAoB76B,KAAK66B,QAAQ,kBAAoB76B,KAAK66B,QAAQ,qBAAuB76B,KAAK66B,QAAQ,4BAA8B76B,KAAK66B,QAAQ,oBAAsB76B,KAAK66B,QAAQ,2BAA6B76B,KAAK66B,QAAQ,aAAe76B,KAAK66B,QAAQ,KAC1S,GAEF1zB,QAAS,CAAC,GC1EiI,MCQ3I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIzC,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACA,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIuD,OAAO,OAAOtD,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8B,OAAOZ,EAAG,mBAAmB,CAACM,MAAM,CAAC,MAAQP,EAAIkH,iBAAiB4B,MAAM,CAACvH,MAAOvB,EAAIovD,eAA8B,gBAAErmD,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIovD,eAAgB,kBAAmBpmD,EAAI,EAAEvH,WAAW,qCAAqC,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,2BAA2B,OAAOZ,EAAG,mBAAmB,CAACM,MAAM,CAAC,MAAQP,EAAI0I,gBAAgBI,MAAM,CAACvH,MAAOvB,EAAIovD,eAAqB,OAAErmD,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIovD,eAAgB,SAAUpmD,EAAI,EAAEvH,WAAW,4BAA4B,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8B,OAAOZ,EAAG,mBAAmB,CAACM,MAAM,CAAC,MAAQP,EAAI6I,iBAAiBC,MAAM,CAACvH,MAAOvB,EAAIovD,eAA8B,gBAAErmD,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIovD,eAAgB,kBAAmBpmD,EAAI,EAAEvH,WAAW,qCAAqC,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,4BAA4B,OAAOZ,EAAG,eAAe,CAACM,MAAM,CAAC,MAAQP,EAAIuK,iBAAiBzB,MAAM,CAACvH,MAAOvB,EAAIovD,eAA8B,gBAAErmD,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIovD,eAAgB,kBAAmBpmD,EAAI,EAAEvH,WAAW,qCAAqC,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8B,OAAOZ,EAAG,mBAAmB,CAACM,MAAM,CAAC,MAAQP,EAAIqpB,iBAAiBvgB,MAAM,CAACvH,MAAOvB,EAAIovD,eAAsC,wBAAErmD,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIovD,eAAgB,0BAA2BpmD,EAAI,EAAEvH,WAAW,6CAA6C,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,kCAAkC,OAAOZ,EAAG,mBAAmB,CAACM,MAAM,CAAC,MAAQP,EAAIqvD,eAAevmD,MAAM,CAACvH,MAAOvB,EAAIovD,eAA4B,cAAErmD,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIovD,eAAgB,gBAAiBpmD,EAAI,EAAEvH,WAAW,mCAAmC,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,sCAAsC,OAAOZ,EAAG,mBAAmB,CAACM,MAAM,CAAC,MAAQP,EAAIyV,yBAAyB3M,MAAM,CAACvH,MAAOvB,EAAIovD,eAAsC,wBAAErmD,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIovD,eAAgB,0BAA2BpmD,EAAI,EAAEvH,WAAW,6CAA6C,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+B,OAAOZ,EAAG,eAAe,CAACM,MAAM,CAAC,MAAQP,EAAIsvD,WAAWxmD,MAAM,CAACvH,MAAOvB,EAAIovD,eAAwB,UAAErmD,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIovD,eAAgB,YAAapmD,EAAI,EAAEvH,WAAW,+BAA+B,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,kCAAkC,OAAOZ,EAAG,mBAAmB,CAACM,MAAM,CAAC,MAAQP,EAAIkU,mBAAmBpL,MAAM,CAACvH,MAAOvB,EAAIovD,eAAgC,kBAAErmD,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIovD,eAAgB,oBAAqBpmD,EAAI,EAAEvH,WAAW,uCAAuC,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,yBAAyB,OAAOZ,EAAG,eAAe,CAACM,MAAM,CAAC,MAAQP,EAAIuvD,YAAYzmD,MAAM,CAACvH,MAAOvB,EAAIovD,eAA2B,aAAErmD,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIovD,eAAgB,eAAgBpmD,EAAI,EAAEvH,WAAW,kCAAkC,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,kCAAkC,OAAOZ,EAAG,kBAAkB,CAACM,MAAM,CAAC,MAAQP,EAAIwvD,YAAY,YAAcxvD,EAAIa,GAAG,yCAAyCiI,MAAM,CAACvH,MAAOvB,EAAIovD,eAA2B,aAAErmD,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIovD,eAAgB,eAAgBpmD,EAAI,EAAEvH,WAAW,kCAAkC,KAAKxB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,YAAY,CAACG,YAAY,gBAAgBG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,yBAAyB,cAAc,UAAUK,GAAG,CAAC,OAASlB,EAAIosC,YAAYnsC,EAAG,YAAY,CAACG,YAAY,gBAAgBG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,wBAAwB,cAAc,UAAUK,GAAG,CAAC,OAASlB,EAAIyvD,YAAY,IACxqJ,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIzvD,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAAC6B,MAAM,CAAE,cAAe9B,EAAIgQ,QAAS,4BAA4B,EAAM,kBAAkB,EAAM,cAAehQ,EAAI0vD,aAAc,CAACzvD,EAAG,eAAe,CAACM,MAAM,CAAC,MAAQP,EAAI8vC,aAAa,QAAU9vC,EAAI0T,MAAM,YAAc1T,EAAImL,YAAY,MAAQ,OAAO,WAAW,OAAO,cAAcnL,EAAI2vD,WAAW,WAAa3vD,EAAI4vD,WAAW,UAAW,GAAO1uD,GAAG,CAAC,MAAQlB,EAAI6vD,aAAa,EAC3b,EACI,GAAkB,G,sBCgBpB,IACE7nD,WAAY,CACV8nD,aAAY,MAEdhnD,MAAO,CACLinD,KAAM,eACNrgD,MAAO,UAETnI,MAAO,CACLuoC,aAAc,CACZ9sC,KAAMkL,OACNzG,QAAS,MAEXiM,MAAO,CACL1Q,KAAMtF,MACN+J,QAAS,IAAM,IAEjBioD,WAAY,CACV1sD,KAAM4H,QACNnD,SAAS,GAEXuI,QAAS,CACPhN,KAAM4H,QACNnD,SAAS,GAEX0D,YAAa,CACXnI,KAAMwE,OACNC,QAAS,IAEXmoD,WAAY,CACV5sD,KAAM4H,QACNnD,SAAS,GAEXkoD,WAAY,CACV3sD,KAAM4H,QACNnD,SAAS,IAGbhF,QAAS,CACP,QAAAotD,CAAUntD,GACRpH,KAAKyM,MAAM,SAAUrF,EACvB,IC3DgJ,MCQlJ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI1C,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAAC6B,MAAM,CAAE,6BAA6B,EAAM,kBAAkB,GAAOvB,MAAM,CAAC,GAAK,QAAQW,GAAG,CAAC,MAAQlB,EAAIgwD,UAAU,CAAC/vD,EAAG,cAAc,CAACmG,IAAI,OAAO7F,MAAM,CAAC,MAAQP,EAAI6tD,cAAc,iBAAgB,EAAK,mBAAkB,EAAM,YAAc,GAAG,MAAQ,OAAO,WAAW,OAAO,QAAU7tD,EAAI0T,MAAM,YAAa,EAAM,UAAW,GAAMxS,GAAG,CAAC,MAAQlB,EAAI6vD,SAAS,KAAO7vD,EAAIiwD,OAAO,MAAQjwD,EAAIqoC,YAAY,EACxd,EACI,GAAkB,GCoBpB,IACErgC,WAAY,CACVkoD,YAAW,MAEbpnD,MAAO,CACLinD,KAAM,gBACNrgD,MAAO,UAETnI,MAAO,CACLsmD,cAAe,CACb7qD,KAAMtF,MACN+J,QAAS,IAAM,IAEjBiM,MAAO,CACL1Q,KAAMtF,MACN+J,QAAS,IAAM,IAEjB0D,YAAa,CACXnI,KAAMwE,OACNC,QAAS,KAGb,IAAAtF,GACE,MAAO,CACLguD,WAAW,EACXC,WAAW,EAEf,EACA3tD,QAAS,CACP,MAAAwtD,GACE30D,KAAK80D,WAAY,CACnB,EACA,OAAA/nB,GACE/sC,KAAK60D,WAAY,CACnB,EACA,OAAAH,GACO10D,KAAK60D,WAAc70D,KAAK80D,YAC3B90D,KAAKmS,MAAMwN,KAAKw0B,QAAUn0C,KAAKmS,MAAMwN,KAAKw0B,QAE5Cn0C,KAAK60D,WAAY,EACjB70D,KAAK80D,WAAY,CACnB,EACA,QAAAP,CAAUntD,GACRpH,KAAKyM,MAAM,SAAUrF,EACvB,IClE+I,MCQjJ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI1C,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,6BAA6B,CAACH,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,gCAAgC,CAACH,EAAG,QAAQ,CAACmB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOvB,EAAe,YAAEyB,WAAW,gBAAgBrB,YAAY,eAAeG,MAAM,CAAC,KAAO,OAAO,YAAcP,EAAImL,aAAajC,SAAS,CAAC,MAASlJ,EAAe,aAAGkB,GAAG,CAAC,MAAQ,CAAC,SAASQ,GAAWA,EAAOoK,OAAOC,YAAiB/L,EAAIqwD,YAAY3uD,EAAOoK,OAAOvK,MAAK,EAAEvB,EAAIsT,aAAa,QAAU,CAAC,SAAS5R,GAAQ,OAAIA,EAAOsB,KAAKxG,QAAQ,QAAQwD,EAAIqL,GAAG3J,EAAO4J,QAAQ,QAAQ,GAAG5J,EAAOrB,IAAI,SAAgB,KAAYL,EAAIswD,mBAAmB9kD,MAAM,KAAMC,UAAU,EAAE,SAAS/J,GAAQ,OAAO1B,EAAIuwD,cAAc7uD,EAAO,GAAG,SAAW,SAASA,GAAQ,OAAO1B,EAAIwwD,cAAc9uD,EAAO,EAAE,KAAO1B,EAAIywD,gBAAiBzwD,EAAgB,aAAEC,EAAG,KAAK,CAACG,YAAY,YAAYJ,EAAI2G,GAAI3G,EAAgB,cAAE,SAAS5C,GAAM,OAAO6C,EAAG,KAAK,CAACI,IAAIjD,EAAK0E,MAAM,CAAEu8C,YAAajhD,IAAS4C,EAAIs+C,aAAcp9C,GAAG,CAAC,WAAa,SAASQ,GAAQ1B,EAAIs+C,YAAclhD,CAAI,EAAE,WAAa,SAASsE,GAAQ1B,EAAIs+C,YAAc,IAAI,EAAE,MAAQ,SAAS58C,GAAQ,OAAO1B,EAAI0wD,WAAWtzD,EAAK,IAAI,CAAC4C,EAAIQ,GAAG,IAAIR,EAAIY,GAAGxD,GAAM,MAAM,IAAG,GAAG4C,EAAIS,UACvwC,EACI,GAAkB,GC8BtB,wBACA,kCACA,OACA,OACA,WACA,aAEA,OACA,YACA,aAEA,aACA,YACA,cAGA,gBACA,OACA,uBACA,gBACA,gBACA,iBAEA,EACA,OACA,oBACA,kBACA,GAEA,SACA,uBACA,mBACA,qBACA,qBACA,EACA,8BACA,8BACA,qCAEA,EACA,kCACA,qBACA,iDACA,gEAEA,8BACA,qCAEA,EACA,0BACA,4CACA,kBAEA,EACA,0BACA,gCACA,oBACA,kBAEA,EACA,mCACA,uBACA,kBACA,kCACA,iBAEA,OACA,KCnGqQ,MCQjQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCyIhC,wBACA,0BACA,gFACA,kBACA,OACA,OACA,YACA,aAGA,gBACA,OACA,YACA,gBACA,2BACA,iBACA,UACA,mBACA,6BACA,0BACA,gCACA,mBACA,qBACA,2BACA,iBAEA,WACA,YACA,cACA,eACA,mBACA,iBACA,kBACA,mBACA,cACA,mBACA,qBACA,2BACA,aACA,mBACA,eAEA,EACA,8BACA,sIACA,mHACA,4HACA,iJACA,yHACA,gIACA,6KACA,+LACA,wHACA,6HACA,EACA,mBACA,oBAEA,uDAEA,OADA,mDACA,CACA,YAEA,qCACA,EACA,SACA,8BACA,SACA,WACA,cAEA,kDACA,EACA,oBACA,2FACA,uFAEA,GACA,oFACA,kEACA,yFACA,gFACA,0BACA,0BACA,wFACA,mEACA,6DACA,yEACA,+CAGA,sBACA,EACA,mBACA,qBACA,2BACA,iBACA,UACA,mBACA,mBACA,qBACA,2BACA,6BACA,0BACA,gCACA,iBAEA,mBACA,EACA,2BACA,6BACA,EAEA,gDACA,wDAEA,qDACA,QACA,EAEA,0CACA,wDAEA,+DACA,KCxRmQ,MCQ/P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,sBCwLhC,wBACA,kBACA,8LACA,kBACA,OACA,QACA,cACA,aAEA,IACA,YACA,aAEA,SACA,UACA,aAEA,SACA,eACA,cAGA,gBACA,OACA,gBACA,yCACA,iBACA,UACA,mBACA,oBACA,mBACA,qBACA,0BACA,iBACA,wBAEA,aACA,UACA,OACA,OACA,QACA,aACA,WACA,WACA,uBACA,yBACA,yIACA,uBAEA,EACA,UACA,qBAEA,kGACA,EACA,iCACA,4FAKA,EACA,yBACA,WACA,8DACA,kEACA,GACA,EACA,wB,MACA,wEACA,GAEA,OACA,0BACA,oBACA,EACA,mBACA,YACA,oBACA,EACA,qBACA,oBACA,YACA,oBACA,EACA,UAGA,mBACA,yEACA,EACA,8BACA,2BACA,gBACA,kBACA,eACA,mDACA,iBACA,IACA,mBAEA,eAEA,4CACA,IAEA,oBAEA,EACA,yBACA,sCACA,EACA,SACA,gC,EAAA,OACA,gBACA,WAIA,GAFA,2BAEA,6BACA,OACA,OACA,OACA,yBACA,oCACA,sBACA,oCACA,+BACA,iCACA,wCACA,aACA,mBACA,WACA,WACA,sBACA,sBACA,yBAGA,6DACA,8FACA,mGAEA,uCACA,yBAGA,+BAGA,uDACA,4CACA,2CACA,wCACA,sCAGA,kBAgBA,OAfA,iBAGA,4BAEA,kJACA,IAGA,wBACA,mDACA,IACA,qBAGA,oBACA,IACA,kBACA,aAEA,kCACA,qHACA,+EAEA,0EAGA,6BAGA,UACA,UAbA,CAcA,gBAEA,eACA,aACA,gEACA,G,CAEA,EACA,iCACA,cACA,EACA,oCACA,0DACA,sBACA,YAEA,EACA,gCACA,sDACA,EACA,8BACA,YACA,YACA,oBACA,EACA,8BACA,6BACA,2BAEA,+BACA,EACA,sBACA,0BACA,EACA,uBACA,iBACA,oBACA,EACA,yBACA,qBACA,oBACA,EACA,qBACA,qBACA,oBACA,EACA,oBACA,+HACA,wBACA,EACA,6B,MAAA,OAIA,GAHA,gBACA,2BAEA,oGAEA,4DACA,OACA,eACA,eACA,oDACA,wDACA,wCACA,oEACA,8CACA,oEACA,gDACA,uBACA,0BACA,kCACA,oDACA,qDAEA,aACA,uCACA,iBACA,wBACA,YACA,G,MACA,8BACA,GACA,eACA,eACA,oDACA,wDACA,wCACA,oEACA,8CACA,oEACA,gDACA,uBACA,kCACA,oDACA,qDAEA,aAEA,oCACA,iBACA,wBACA,YACA,G,KACA,CACA,aAEA,oCACA,iBACA,wBACA,YACA,G,MAEA,6BACA,6DACA,4GACA,iHAFA,IAIA,GACA,mBACA,wCACA,wBACA,eACA,gBAGA,uCACA,iBACA,wBACA,YACA,G,MACA,gCACA,GACA,eACA,eACA,yBACA,oCACA,sBACA,oCACA,+BACA,iCACA,wCACA,aACA,WACA,mBACA,WACA,sBACA,sBACA,yBAG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,WACA,KAKA,OAJA,kDAEA,iCACA,IACA,Y,CAEA,SACA,EACA,0BAEA,0GACA,EACA,6B,MACA,gHAKA,sFACA,EACA,wBAEA,sDACA,EACA,0BAEA,wDACA,GAEA,mBACA,yDACA,EACA,yBACA,uCACA,EACA,SACA,6B,MACA,4GACA,EACA,sB,MACA,2FACA,EACA,0B,MACA,4EAEA,cAEA,GACA,EACA,6BACA,kCACA,EACA,sBACA,qBACA,WACA,2HACA,oCACA,kBACA,cACA,gBACA,iBACA,IAEA,kIAEA,oDACA,UACA,IAEA,kIAEA,mDACA,SACA,GACA,EACA,+BACA,wBACA,WACA,qIACA,oCACA,qBACA,gBACA,gBACA,oBACA,GACA,EACA,mBAEA,gBAEA,mDACA,aACA,wBACA,kBAEA,2BACA,0BAEA,EACA,0BAEA,YACA,EACA,sBACA,0DACA,EACA,8BACA,oEACA,EACA,gCACA,sEACA,KClY+Q,MCQ3Q,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QC0MhC,wBACA,0BACA,uMACA,kBACA,OACA,QACA,cACA,aAEA,IACA,YACA,aAEA,SACA,UACA,aAEA,SACA,eACA,cAGA,gBACA,OACA,gBACA,yCACA,iBACA,UACA,mBACA,oBACA,mBACA,qBACA,0BACA,iBACA,uBACA,iBAEA,aACA,UACA,OACA,OACA,QACA,aACA,WACA,cACA,WACA,WACA,uBACA,yBACA,iIACA,uBACA,eAEA,EACA,UACA,0BACA,uDACA,EACA,yBACA,6FACA,EACA,iCACA,iEAEA,EACA,8BACA,kEAEA,EACA,yBACA,WACA,8DACA,kEACA,GACA,EACA,wB,MACA,wEACA,EACA,iCACA,iDACA,GAEA,OACA,0BACA,oBACA,EACA,mBACA,YACA,oBACA,EACA,qBACA,oBACA,YACA,oBACA,EACA,UAGA,mBACA,8CACA,EACA,8BACA,2BACA,gBACA,kBACA,eACA,mDACA,iBACA,IACA,mBAEA,eAEA,4CACA,IAEA,oBAEA,EACA,yBACA,sCACA,EACA,SACA,iCACA,eACA,8BACA,yCACA,iBACA,UACA,mBACA,oBACA,mBACA,qBACA,0BACA,iBACA,uBACA,iBAGA,EACA,iCACA,gFACA,EACA,oCACA,gBACA,oBACA,qCACA,wCACA,OACA,eACA,eACA,mBACA,qBACA,iBACA,0BACA,oBACA,+BACA,iBACA,cACA,0BACA,2BACA,UACA,mBACA,uBACA,iBAGA,aACA,kDACA,uCACA,iBACA,wBACA,YACA,IAEA,sCACA,iBACA,wBACA,YACA,GAEA,EACA,kCACA,0BACA,gBACA,OACA,OACA,SACA,oDACA,wDACA,wCACA,oEACA,8CACA,oEACA,gDACA,uBACA,0BACA,2BACA,kCACA,oDACA,oDACA,+CAGA,aACA,mFAYA,sCACA,oBACA,8BAEA,uDACA,8DACA,kDACA,4C,CAGA,IArBA,uCACA,oBACA,8BACA,uDACA,8DACA,kDACA,4C,CAGA,IAcA,e,MAEA,qCACA,uCAEA,EACA,oCACA,0DACA,sBACA,YAEA,EACA,4BACA,iDACA,wGACA,wHACA,CACA,6CACA,kBACA,IACA,6CACA,yC,CAEA,EACA,gCACA,sDACA,EACA,8BACA,YACA,YACA,oBACA,EACA,8BACA,6BACA,2BAEA,+BACA,EACA,sBACA,0BACA,EACA,uBACA,iBACA,oBACA,EACA,yBACA,qBACA,oBACA,EACA,qBACA,qBACA,oBACA,EACA,oBACA,+HACA,wBACA,EACA,6B,MAAA,OAIA,GAHA,gBACA,2BAEA,yEAEA,sFAyBA,CACA,aACA,oCACA,iBACA,wBACA,YACA,G,KA/BA,CACA,OACA,eACA,eACA,oDACA,wDACA,wCACA,oEACA,8CACA,oEACA,gDACA,uBACA,0BACA,2BACA,kCACA,oDACA,oDACA,+CAEA,aACA,uCACA,iBACA,wBACA,YACA,G,MASA,6BACA,6DACA,4GACA,iHAFA,IAIA,GACA,mBACA,wCACA,wBACA,eACA,gBAEA,uCACA,iBACA,wBACA,YACA,G,MACA,gCACA,GACA,eACA,eACA,yBACA,oCACA,sBACA,oCACA,+BACA,iCAC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CACA,mBACA,YACA,uBACA,oBACA,qBACA,mBACA,2BACA,oBACA,uBACA,gBACA,eAGA,eACA,oBACA,uBACA,wBAEA,eAEA,EACA,UACA,mBACA,oDACA,EACA,+BACA,+BACA,EACA,yCACA,WACA,sFAEA,+BACA,wEACA,GACA,EACA,2CACA,uDACA,OACA,WACA,qCAEA,GACA,EACA,2BACA,eACA,0DACA,sBACA,GACA,EACA,gBACA,qDACA,qBACA,GACA,GAEA,0CACA,WACA,sFAEA,+BACA,0EACA,GACA,EACA,2BACA,WACA,qFAEA,+BACA,kHACA,GACA,EACA,0BACA,WACA,oFAEA,+BACA,+GACA,GACA,EACA,2BACA,WACA,8EAEA,+BACA,+GACA,GACA,EACA,6BACA,WACA,gFACA,6DACA,+BACA,gGACA,GACA,EACA,2BACA,WACA,6EAEA,+BACA,uHACA,GACA,EACA,yBACA,WACA,8DACA,kEACA,GACA,EACA,yBACA,4DACA,0CACA,GACA,EACA,wBACA,oDACA,EACA,mBACA,8BACA,EACA,4BAEA,iMAKA,EACA,oCACA,iEACA,GAEA,OACA,oBACA,iBACA,WAEA,qCACA,4EACA,G,CAEA,EACA,4BACA,0BACA,uBAEA,oCACA,sC,CAEA,GAEA,mBAEA,oCACA,EACA,uBACA,EACA,8BAMA,GALA,8FACA,2BAEA,0BAEA,uBACA,IAOA,EAPA,KACA,gDACA,gCACA,mFACA,GACA,IAIA,2CAEA,mD,MACA,mDACA,yCACA,IACA,MAIA,YADA,iEAIA,aACA,QAEA,yB,MACA,mDACA,oDACA,IACA,IAEA,SAIA,2BACA,6DACA,oD,CAGA,qCACA,yBACA,kBAEA,GACA,EACA,yBACA,oDACA,EACA,SACA,yBAEA,yEACA,kBACA,EACA,yCACA,kDACA,4CACA,IAEA,IACA,6CACA,sBACA,IAEA,EACA,+BACA,+BAEA,kBACA,EACA,mCACA,kCAEA,kBACA,EACA,iCACA,iCAEA,kBACA,EACA,iCACA,iCAEA,kBACA,EACA,oCACA,oCACA,oCAEA,kBACA,EACA,kCACA,k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,aAGA,gBACA,OACA,YACA,aACA,UACA,gCACA,8BACA,iBACA,kBACA,qBACA,iBACA,yBAEA,EACA,mBACA,uCACA,EACA,UACA,2BAEA,8LACA,EACA,8BAEA,2DACA,EACA,sBAEA,4HACA,EACA,qCACA,qCACA,WACA,4EACA,WAEA,wBACA,EACA,8B,MACA,cACA,SAEA,8DACA,8CACA,8EAEA,GACA,EACA,yB,MACA,2DACA,2FACA,EACA,qBACA,6DACA,EACA,+BAEA,gDACA,GAEA,mBACA,uBACA,gBACA,EACA,SACA,sCACA,oHACA,oC,MACA,cACA,oEACA,gBACA,eAEA,+CACA,0BACA,GACA,GACA,EACA,gCACA,iHACA,oCACA,qBACA,sBACA,gBACA,eAEA,+CACA,0BACA,GACA,GACA,EACA,0BACA,0BACA,uBACA,sCACA,EACA,0BACA,0BACA,uBACA,qBACA,EACA,2BACA,0BACA,sBACA,wCACA,EACA,2BACA,0BACA,sBACA,sBACA,EACA,8BACA,uBACA,sBACA,8CACA,EACA,8BACA,uBACA,sBACA,yBACA,EACA,uBACA,WACA,EACA,wBACA,YACA,EACA,2BACA,iBACA,yBACA,EACA,+BACA,gDACA,MACA,iHACA,4BACA,Y,MAIA,OAHA,mBACA,qEAEA,aACA,gBAIA,OAHA,mBAEA,4CACA,4BACA,IACA,iBAEA,iDACA,G,CAEA,GACA,EACA,gCACA,oFACA,GACA,mBACA,sBAEA,uCACA,oBAEA,iDACA,gBAEA,2CACA,GACA,EACA,8BACA,4BACA,EACA,0B,IAAA,OACA,gHACA,0DACA,0GACA,uCACA,+CACA,gBACA,cACA,G,CAEA,4BACA,EACA,qCACA,gHAEA,OACA,oCACA,QACA,2BAEA,gBACA,cACA,GACA,EACA,8BACA,GACA,qCACA,gCAEA,qCACA,mCAEA,EACA,iCACA,2CACA,EACA,gBACA,mBACA,KCva2P,MCQvP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIl3D,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAAEJ,EAAa,UAAEC,EAAG,MAAM,CAACG,YAAY,WAAWJ,EAAI2G,GAAI3G,EAAa,WAAE,SAASmhC,EAAEzzB,GAAG,OAAOzN,EAAG,MAAM,CAACI,IAAIqN,EAAEtN,YAAY,eAAe,CAACH,EAAG,cAAc,CAACM,MAAM,CAAC,GAAK,mBAAqB4gC,EAAEv7B,GAAK,aAAa,CAAC5F,EAAIQ,GAAG,IAAIR,EAAIY,GAAGugC,EAAE9/B,MAAM,QAAQ,EAAE,IAAG,GAAGpB,EAAG,MAAM,CAACG,YAAY,iCAAiC,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,YAAY,GAAGA,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,8BAChhB,EACI,GAAkB,GCoBpB,IACEQ,KAAM,oBACN2G,WAAY,CAAEk7B,QAAO,IACrB/gC,KAAM,WACJ,MAAO,CACL03B,UAAW,KAEf,EACA/xB,QAAS,WACFxM,KAAK67D,YAAe77D,KAAK66B,QAAQ,kBAAqB76B,KAAK66B,QAAQ,oBAGtE76B,KAAKgJ,MAAM3F,IAAIrD,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAaq8B,UAAU,IAAIh7B,MAAKgS,IACxGvV,KAAKu+B,UAAYhpB,EAAQ7R,QACxB8wB,IACDx0B,KAAK2sC,eAAe3sC,KAAKuF,GAAG,sBAAqB,IALnDvF,KAAKssC,4BAA4B/oC,MAAK,IAAMvD,KAAK6jB,QAAQljB,KAAK,aAQlE,GCxCuI,MCQvI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI+D,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAAEJ,EAA2B,wBAAEC,EAAG,MAAM,CAACG,YAAY,WAAWJ,EAAI2G,GAAI3G,EAA2B,yBAAE,SAASmhC,EAAEzzB,GAAG,OAAOzN,EAAG,MAAM,CAACI,IAAIqN,EAAEtN,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAAe,IAAb+gC,EAAE5uB,OAActS,EAAG,cAAc,CAACM,MAAM,CAAC,GAAK,eAAiB4gC,EAAEr8B,YAAY,CAAC9E,EAAIQ,GAAG,IAAIR,EAAIY,GAAGugC,EAAE/sB,WAAW,IAAIpU,EAAIY,GAAGugC,EAAE9sB,UAAU,KAAKrU,EAAIY,GAAGZ,EAAIo3D,cAAcj2B,EAAE/8B,UAAU,KAAKpE,EAAIY,GAAGZ,EAAIa,GAAG,8BAAgCb,EAAIq3D,kCAAkCl2B,EAAE5uB,SAAW,KAAOvS,EAAIa,GAAG,4BAA8B,KAAOb,EAAIs3D,wBAAwBn2B,EAAErB,mBAAmB,OAAO7/B,EAAG,cAAc,CAACM,MAAM,CAAC,GAAK,eAAiB4gC,EAAEr8B,YAAY,CAAC9E,EAAIQ,GAAG,IAAIR,EAAIY,GAAGugC,EAAE/sB,WAAW,IAAIpU,EAAIY,GAAGugC,EAAE9sB,UAAU,KAAKrU,EAAIY,GAAGZ,EAAIo3D,cAAcj2B,EAAE/8B,UAAU,KAAKpE,EAAIY,GAAGZ,EAAIa,GAAG,8BAAgCb,EAAIq3D,kCAAkCl2B,EAAE5uB,UAAU,QAAQ,GAAGtS,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,MAAM,CAACA,EAAG,oBAAoB,CAACG,YAAY,iBAAiBG,MAAM,CAAC,KAAO,aAAaW,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAIu3D,aAAap2B,EAAEv7B,GAAG,MAAM,MAAM,IAAG,GAAG3F,EAAG,MAAM,CAACG,YAAY,iCAAiC,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,YAAY,GAAGA,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,8BACt1C,EACI,GAAkB,GCuCtB,wBACA,yBACA,wBACA,gBACA,OACA,+BAEA,EACA,8BAEA,gBAIA,oCAFA,sFAIA,EACA,SACA,mDACA,iGACA,oCACA,gCACA,gBAEA,4CACA,GACA,EACA,0BACA,SACA,2CAEA,EACA,EACA,oCACA,oEAEA,0GAEA,6CACA,gCACA,gBAEA,6CACA,GATA,CAUA,KCrFkQ,MCQ9P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIb,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,6CAA6C,CAACH,EAAG,kBAAkB,CAACM,MAAM,CAAC,QAAUP,EAAIuC,YAAY,EAC9L,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIvC,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,mCAAmCJ,EAAI2G,GAAI3G,EAAW,SAAE,SAASmW,EAAEuvC,GAAG,OAAOzlD,EAAG,cAAc,CAACI,IAAI,OAAS8V,EAAEnP,KAAO,WAAa0+C,EAAI,IAAM1lD,EAAIiQ,KAAK7P,YAAY,MAAMG,MAAM,CAAC,GAAK4V,EAAEpF,MAAM,CAAC/Q,EAAIQ,GAAG,IAAIR,EAAIY,GAAGuV,EAAEnP,MAAM,MAAM,IAAG,EACrV,EACI,GAAkB,GCatB,wBACA,iCACA,OACA,SACA,WACA,iCCpB0Q,MCQtQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCX9B,IACE3F,KAAM,yBACN2G,WAAY,CACVwvD,gBAAe,IAEjBjwD,MAAO,CACLqiD,QAAS,CACP5mD,KAAMwE,OACNC,QAAS,IAEX7B,GAAI,CACF5C,KAAMwE,OACNC,QAAS,IAEXsH,OAAQ,CACN/L,KAAMwE,OACNC,QAAS,KAGb,IAAAtF,GACE,MAAO,CACLs1D,gBAAiB,GAErB,EACAn1D,SAAU,CACRC,QAAS,WACP,IAAIkO,EAAKnV,KAAKm8D,gBAAgBC,SAa9B,OAXAjnD,EAAGxU,KAAK,CAAE8U,IAAK,kBAAmB/J,KAAM1L,KAAKuF,GAAG,uBAAwB+oD,QAAS,aACjFn5C,EAAGxU,KAAK,CAAE8U,IAAK,iBAAkB/J,KAAM1L,KAAKuF,GAAG,sBAAuB+oD,QAAS,YAC/En5C,EAAGxU,KAAK,CAAE8U,IAAK,cAAe/J,KAAM1L,KAAKuF,GAAG,mBAAoB+oD,QAAS,SACzEn5C,EAAGxU,KAAK,CAAE8U,IAAK,kBAAmB/J,KAAM1L,KAAKuF,GAAG,uBAAwB+oD,QAAS,aACjFn5C,EAAGxU,KAAK,CAAE8U,IAAK,eAAgB/J,KAAM1L,KAAKuF,GAAG,oBAAqB+oD,QAAS,UAC3En5C,EAAGxU,KAAK,CAAE8U,IAAK,uBAAwB/J,KAAM1L,KAAKuF,GAAG,2BAA4B+oD,QAAS,kBAC1Fn5C,EAAGxU,KAAK,CAAE8U,IAAK,oBAAqB/J,KAAM1L,KAAKuF,GAAG,kCAAmC+oD,QAAS,eAC9Fn5C,EAAGxU,KAAK,CAAE8U,IAAK,oBAAqB/J,KAAM1L,KAAKuF,GAAG,sBAAuB+oD,QAAS,aAClFn5C,EAAGxU,KAAK,CAAE8U,IAAK,kBAAmB/J,KAAM,qBAAsB4iD,QAAS,aACvEn5C,EAAGxU,KAAK,CAAE8U,IAAK,uBAAwB/J,KAAM1L,KAAKuF,GAAG,2BAA4B+oD,QAAS,kBAC1Fn5C,EAAGxU,KAAK,CAAE8U,IAAK,wCAAyC/J,KAAM1L,KAAKuF,GAAG,4BAA6B+oD,QAAS,aACrGn5C,CACT,IChD0I,MCO5I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5B,GAAS,WAAkB,IAAIzQ,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,6CAA6C,CAACH,EAAG,kBAAkB,CAACM,MAAM,CAAC,QAAUP,EAAIuC,YAAY,EAC9L,EACI,GAAkB,GCMpB,IACElB,KAAM,mBACN2G,WAAY,CACVwvD,gBAAe,IAEjBjwD,MAAO,CACLqiD,QAAS,CACP5mD,KAAMwE,OACNC,QAAS,IAEX7B,GAAI,CACF5C,KAAMwE,OACNC,QAAS,IAEXsH,OAAQ,CACN/L,KAAMwE,OACNC,QAAS,KAGb,IAAAtF,GACE,MAAO,CACLs1D,gBAAiB,GAErB,EACAn1D,SAAU,CACRC,QAAS,WACP,IAAIkO,EAAKnV,KAAKm8D,gBAAgBC,SAQ9B,OANAjnD,EAAGxU,KAAK,CAAE8U,IAAK,kBAAmB/J,KAAM1L,KAAKuF,GAAG,uBAAwB+oD,QAAS,aACjFn5C,EAAGxU,KAAK,CAAE8U,IAAK,iBAAkB/J,KAAM1L,KAAKuF,GAAG,sBAAuB+oD,QAAS,YAC/En5C,EAAGxU,KAAK,CAAE8U,IAAK,cAAe/J,KAAM1L,KAAKuF,GAAG,mBAAoB+oD,QAAS,SACzEn5C,EAAGxU,KAAK,CAAE8U,IAAK,eAAgB/J,KAAM1L,KAAKuF,GAAG,oBAAqB+oD,QAAS,UAC3En5C,EAAGxU,KAAK,CAAE8U,IAAK,oBAAqB/J,KAAM1L,KAAKuF,GAAG,sBAAuB+oD,QAAS,aAE3En5C,CACT,IC3CsI,MCOxI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5B,GAAS,WAAkB,IAAIzQ,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,6CAA6C,CAACH,EAAG,kBAAkB,CAACM,MAAM,CAAC,QAAUP,EAAIuC,YAAY,EAC9L,EACI,GAAkB,GCMpB,IACElB,KAAM,sBACN2G,WAAY,CACVwvD,gBAAe,IAEjBjwD,MAAO,CACLqiD,QAAS,CACP5mD,KAAMwE,OACNC,QAAS,IAEX7B,GAAI,CACF5C,KAAMwE,OACNC,QAAS,IAEXsH,OAAQ,CACN/L,KAAMwE,OACNC,QAAS,KAGb,IAAAtF,GACE,MAAO,CACLs1D,gBAAiB,GAErB,EACAn1D,SAAU,CACRC,QAAS,WACP,IAAIkO,EAAKnV,KAAKm8D,gBAAgBC,SAO9B,OALAjnD,EAAGxU,KAAK,CAAE8U,IAAK,kBAAmB/J,KAAM1L,KAAKuF,GAAG,uBAAwB+oD,QAAS,aACjFn5C,EAAGxU,KAAK,CAAE8U,IAAK,iBAAkB/J,KAAM1L,KAAKuF,GAAG,sBAAuB+oD,QAAS,YAC/En5C,EAAGxU,KAAK,CAAE8U,IAAK,cAAe/J,KAAM1L,KAAKuF,GAAG,mBAAoB+oD,QAAS,SACzEn5C,EAAGxU,KAAK,CAAE8U,IAAK,eAAgB/J,KAAM1L,KAAKuF,GAAG,oBAAqB+oD,QAAS,UAEpEn5C,CACT,IC1CyI,MCO3I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5B,GAAS,WAAkB,IAAIzQ,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI+5B,SAAS14B,WAAWpB,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,kBAAkB,CAACM,MAAM,CAAC,QAAUP,EAAIuC,YAAY,IAC3T,EACI,GAAkB,GCoBtB,wBACA,0BACA,YACA,oBAEA,OACA,SACA,YACA,YAEA,IACA,YACA,YAEA,QACA,YACA,aAGA,gBACA,OACA,iBACA,iGACA,wFACA,+FACA,4FAEA,SACA,mBAEA,EACA,UACA,mBACA,oCAIA,OAFA,wFAEA,CACA,GAEA,mBACA,mBACA,EACA,SACA,uCACA,oCACA,WACA,iBACA,gBACA,IACA,uBAEA,WAEA,GACA,EACA,wBACA,cACA,+GACA,uBACA,KClF8P,MCO1P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5B,GAAS,WAAkB,IAAIvC,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI+f,QAAQ1e,SAAyB,IAAfrB,EAAIi3C,OAAch3C,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,oBAAoB,CAACG,YAAY,2BAA2BG,MAAM,CAAC,MAAQP,EAAIa,GAAG,gCAAgC,aAAa,UAAU,YAAYb,EAAIoK,OAAOC,IAAI,eAAe,KAAO,eAAenJ,GAAG,CAAC,UAAUlB,EAAI23D,mBAAmB7uD,MAAM,CAACvH,MAAOvB,EAAI+f,QAAmB,YAAEhX,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI+f,QAAS,cAAe/W,EAAI,EAAEvH,WAAW,0BAA0B,GAAGxB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8BZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI+f,QAAQqU,iBAAiBn0B,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,iCAAiCZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIq0B,wBAAwBp0B,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,iCAAiCZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI43D,wBAAwB33D,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,+BAA+B,CAACH,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAAiB,IAAfJ,EAAIi3C,OAAch3C,EAAG,kBAAkB,CAACG,YAAY,wCAAwCG,MAAM,CAAC,aAAaP,EAAI+f,QAAQna,GAAG,MAAQ5F,EAAIa,GAAG,gCAAgC,SAAWb,EAAI+f,QAAQ83C,SAAS,mBAAmB73D,EAAI83D,iBAAiB52D,GAAG,CAAC,cAAgBlB,EAAI+3D,kBAAkB/3D,EAAIS,MAAM,SAAST,EAAIS,KAAKR,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+C,IAAfb,EAAIi3C,OAAch3C,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,cAAc,CAACM,MAAM,CAAC,MAAQP,EAAI+f,QAAQskC,eAAe,GAAGrkD,EAAIS,KAAqB,IAAfT,EAAIi3C,OAAch3C,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,gCAAgC,CAACH,EAAG,YAAY,KAAKD,EAAIS,MAAsB,IAAhBT,EAAIi3C,OAAeh3C,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,gCAAgC,CAACH,EAAG,OAAO,CAACG,YAAY,0BAA0B,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,mCAAmCZ,EAAG,IAAI,CAACG,YAAY,qBAAqBG,MAAM,CAAC,KAAO,qBAAqB,SAAW,KAAKW,GAAG,CAAC,MAAQlB,EAAIg4D,eAAe,CAAC/3D,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,OAAO,KAAO,KAAK,cAAc,GAAG,cAAc,UAAUN,EAAG,MAAMA,EAAG,OAAO,CAACG,YAAY,uBAAuB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,4BAA4B,OAAOb,EAAIS,KAAKR,EAAG,kBAAkB,CAACM,MAAM,CAAC,QAAUP,EAAIuC,YAAY,EACj8E,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIvC,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAAED,EAAW,QAAEC,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACJ,EAAI2G,GAAI3G,EAAW,SAAE,SAASf,EAAEyO,GAAG,OAAOzN,EAAG,SAAS,CAACI,IAAI,aAAeL,EAAIiQ,KAAO,IAAMvC,EAAI,IAAMzO,EAAE6F,UAAUvE,MAAM,CAAC,UAAYtB,EAAE,kBAAiB,IAAO,IAAkB,IAAde,EAAI0sC,MAAazsC,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,uBAAuB,OAAOb,EAAIS,MAAM,KAAKT,EAAIS,OAAOR,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAOP,EAAIkzB,KAAK,KAAOlzB,EAAImzB,KAAK,MAAQnzB,EAAI0sC,MAAM,cAAc1sC,EAAI4xC,WAAW,UAAU,KAAK1wC,GAAG,CAAC,gBAAkBlB,EAAIsqD,kBAAkB,aAAetqD,EAAI0qD,WAAW,cAAgB,SAAShpD,GAAQ,OAAO1B,EAAIi4D,WAAW,EAAE,EAAE,UAAY,SAASv2D,GAAQ,OAAO1B,EAAIi4D,UAAU,EAAE,MAAM,EACnyB,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIj4D,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,+BAA+B,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkBc,GAAG,CAAC,MAAQlB,EAAI+qD,UAAU,CAAC9qD,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,cAAc,CAACG,YAAY,gBAAgB2C,MAAO/C,EAAiB,iBAAK,GAAGC,EAAG,MAAM,CAACG,YAAY,aAAa,CAAEJ,EAAQ,KAAEC,EAAG,oBAAoB,CAACG,YAAY,sBAAsBG,MAAM,CAAC,KAAO,eAAe,cAAc,UAAUN,EAAG,oBAAoB,CAACG,YAAY,sBAAsBG,MAAM,CAAC,KAAO,aAAa,cAAc,UAAUP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIo+B,UAAU/pB,UAAUrU,EAAIY,GAAGZ,EAAIo+B,UAAUhqB,UAAY,KAAOpU,EAAIo+B,UAAUhqB,UAAY,IAAI,MAAM,GAAGnU,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAAEJ,EAAIgrD,eAAiBhrD,EAAIo+B,UAAU6sB,cAAehrD,EAAG,OAAO,CAACA,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,kBAAkBN,EAAG,OAAO,CAACG,YAAY,iBAAiB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,0BAA0B,GAAGb,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,cAAcP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIkrD,iBAAiBlrD,EAAIo+B,UAAUh6B,UAAU,MAAM,GAAGnE,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,oBAAoBP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIo+B,UAAUb,gBAAgB,KAAMv9B,EAAQ,KAAEC,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,eAAe,cAAc,UAAUN,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,aAAa,cAAc,WAAW,KAAKN,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAQ,KAAEyB,WAAW,SAASrB,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIua,iBAAiBta,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,qCAAqCZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIorD,mCAAmCnrD,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8BZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIqrD,mCAAmCprD,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,qBAAqBZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIo+B,UAAU9pB,UAAUrU,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,2BAA2BZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIo+B,UAAUxpB,gBAAgB3U,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,uBAAuBZ,EAAG,KAAK,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIo+B,UAAU9sB,eAAe,KAAKtR,EAAIY,GAAGZ,EAAIo+B,UAAU1e,SAAS,IAAI1f,EAAIY,GAAGZ,EAAIo+B,UAAU5sB,MAAM,OAAOvR,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,2BAA2BZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI29B,WAAW39B,EAAIo+B,UAAU7oB,aAAatV,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,sCAAsCZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIo+B,UAAUb,mBAAmBt9B,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,mCAAmCZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIkrD,iBAAiBlrD,EAAIo+B,UAAUh6B,aAAanE,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,uCAAuCZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIw9B,cAAcx9B,EAAIo+B,UAAU7zB,qBAAqBtK,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8BZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIkU,sBAAsBjU,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,4BAA4BZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIyS,mBAAmBxS,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,0BAA0BZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIo+B,UAAUnrB,YAAY,gBAAgBhT,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8BZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI4I,qBAAqB5I,EAAIo+B,UAAU9e,oBAAoBrf,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,0CAA0CZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI6I,oBAAoB5I,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,oCAAoCZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIsrD,uBAAuBrrD,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,iCAAiCZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIurD,oBAAoBtrD,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,qBAAqBZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI28B,UAAU18B,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,qBAAqBZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI0Y,UAAUzY,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,gCAAgCZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIu6B,iBAAiBt6B,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,kCAAkCZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIwrD,uBAAuBvrD,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAAEJ,EAAIyrD,cAAgB,EAAGxrD,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,YAAY,GAAGD,EAAIS,KAAMT,EAAIyrD,eAAiB,EAAGxrD,EAAG,MAAM,CAACA,EAAG,KAAK,CAACD,EAAIQ,GAAG,oCAAqCR,EAAU,OAAEC,EAAG,KAAK,CAACA,EAAG,iBAAiB,CAACM,MAAM,CAAC,OAASP,EAAI49B,UAAU39B,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,qBAAqBZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI0rD,eAAe,GAAG1rD,EAAIS,KAAKR,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,yBAA0Bb,EAAa,UAAEC,EAAG,KAAK,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI69B,WAAW,OAAO59B,EAAG,KAAK,CAACD,EAAIQ,GAAG,aAAaR,EAAIS,SAASR,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,YAAY,CAACG,YAAY,sBAAsBG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,sBAAsB,cAAc,QAAQK,GAAG,CAAC,KAAOlB,EAAI2rD,aAAc3rD,EAAIgrD,gBAAkBhrD,EAAIo+B,UAAU6sB,cAAehrD,EAAG,YAAY,CAACG,YAAY,sBAAsBG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,2BAA2B,cAAc,iBAAiBK,GAAG,CAAC,cAAgBlB,EAAI4rD,sBAAsB5rD,EAAIS,KAAMT,EAAIgrD,eAAiBhrD,EAAIo+B,UAAU6sB,cAAehrD,EAAG,YAAY,CAACG,YAAY,sBAAsBG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,6BAA6B,cAAc,mBAAmBK,GAAG,CAAC,gBAAkBlB,EAAI6rD,wBAAwB7rD,EAAIS,MAAM,MACh9K,EACI,GAAkB,GCqJtB,wBACA,wBACA,qEACA,kBACA,OACA,WACA,YACA,cAEA,eACA,aACA,aAGA,gBACA,OACA,QACA,gBACA,SACA,cACA,aAEA,EACA,UACA,0C,MAEA,oIACA,EACA,0C,MAEA,oIACA,EACA,qBAEA,wCACA,EACA,qBACA,kCACA,WACA,iCAEA,kCACA,IACA,mB,CAEA,SACA,EACA,yBACA,8EACA,2FACA,EACA,8BAEA,+GACA,EACA,2BAEA,2GACA,EACA,wBAMA,oCACA,OACA,qCACA,OACA,0CACA,OACA,sCACA,OACA,mCAEA,WACA,EACA,iBACA,gCACA,EACA,iBACA,gCACA,EACA,2BACA,0EACA,WACA,KAKA,OAJA,oDAEA,iCACA,IACA,Y,CAEA,SACA,EACA,0BAEA,4GACA,EACA,6BACA,sFAIA,sFACA,EACA,wBAEA,wDACA,EACA,0BAEA,0DACA,GAEA,mBACA,yDACA,EACA,yBACA,uCACA,EACA,SACA,0BACA,eAEA,cAEA,GACA,EACA,6BACA,kCACA,EACA,sBACA,qBACA,WACA,2HACA,oCACA,kBACA,cACA,gBACA,iBACA,IAEA,kIAGA,oDACA,UACA,IAEA,kIAEA,mDACA,SACA,GACA,EACA,mBAEA,gBAEA,mDACA,aACA,wBACA,iBAEA,EACA,0BAEA,YACA,EACA,sBACA,0DACA,EACA,8BACA,oEACA,EACA,gCACA,sEACA,KCzUiQ,MCQ7P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCc9B,IACEY,KAAM,cACN2G,WAAY,CAAEkwD,MAAK,UAAQ,IAC3B3wD,MAAO,CACLuqD,MAAO,CACL9uD,KAAMtF,MACN+J,QAAS,IAAM,KAGnBtF,KAAM,WACJ,MAAO,CACLiN,OAAQ,GACR8jB,KAAM,EACNC,KAAM,EACNuZ,MAAO,EACPkF,WAAY,EAEhB,EACAtvC,SAAU,CACRmqB,QAAS,WACP,OAAOnxB,KAAKw2D,MAAM9iD,MAAM1T,KAAK63B,KAAM73B,KAAK63B,KAAO73B,KAAK43B,KACtD,GAEFprB,QAAS,WACPxM,KAAK68D,cAAc,GACnB78D,KAAKkiB,KAAKiB,IAAI,uBAAwBnjB,KAAK68D,eAC3C78D,KAAKkiB,KAAKiB,IAAI,2BAA4BnjB,KAAK88D,eAC/C98D,KAAKkiB,KAAKiB,IAAI,6BAA8BnjB,KAAK+8D,gBACnD,EACA15C,cAAe,WACbrjB,KAAKkiB,KAAKqB,KAAK,4BACfvjB,KAAKkiB,KAAKqB,KAAK,6BACjB,EACApc,QAAS,CACP,iBAAA6nD,CAAmBO,GACjBvvD,KAAK43B,KAAO23B,EACZvvD,KAAK68D,eACP,EACA5N,UAAW,SAAU6B,GACnB,MAAO,mBAAqBA,CAC9B,EACA1B,WAAY,SAAUjhD,GACpBnO,KAAK68D,cAAc1uD,EAAI0pB,KACzB,EACA8kC,UAAW,SAAUxuD,GACfA,EAAM,EACJnO,KAAK63B,KAAO,GACd73B,KAAK68D,cAAcjhD,KAAKuB,IAAI,EAAGnd,KAAK63B,KAAO73B,KAAK43B,OAG9C53B,KAAK43B,KAAO53B,KAAK63B,KAAO73B,KAAKoxC,OAC/BpxC,KAAK68D,cAAcjhD,KAAKohD,IAAIh9D,KAAK63B,KAAO73B,KAAK43B,KAAM53B,KAAKoxC,MAAQ,GAGtE,EACAyrB,cAAe,SAAUI,GACvBj9D,KAAK63B,KAAOolC,EACZj9D,KAAKoxC,MAAQpxC,KAAKw2D,MAAMxuD,MAC1B,EACA,aAAA80D,CAAetzD,GACb,IAAIrI,EAAMnB,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAag7D,cAAc,GAAG7yD,QAAQ,MAAOb,GAElHxJ,KAAKgJ,MAAM3F,IAAIlC,GAAKoC,MAClBC,IACE,MAAM+zD,EAAO71D,EAAEO,KAAKjC,KAAKw2D,OAAO,SAAU2G,GACxC,OAAOA,EAAE3zD,YAAcA,CACzB,IAEI+tD,IAEFA,EAAK5H,cAAgB,IAAIvuD,KAC3B,IAEFozB,IACE5wB,QAAQC,IAAI,SAAU2wB,EAAC,GAG7B,EACA,eAAAuoC,CAAiBvzD,GACf,IAAIrI,EAAMnB,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAak7D,gBAAgB,GAAG/yD,QAAQ,MAAOb,GAEpHxJ,KAAKgJ,MAAM3F,IAAIlC,GAAKoC,MAClBC,IACE,MAAM+zD,EAAO71D,EAAEO,KAAKjC,KAAKw2D,OAAO,SAAU2G,GACxC,OAAOA,EAAE3zD,YAAcA,CACzB,IAEI+tD,IAEFA,EAAK5H,cAAgB,KACvB,IAEFn7B,IACE5wB,QAAQC,IAAI,SAAU2wB,EAAC,GAG7B,ICjIoI,MCQtI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI9vB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,kBAAkBG,MAAM,CAAC,GAAK,kBAAkBP,EAAIiQ,SAAS,CAAChQ,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,IAAI,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,OAAQvB,EAAI24D,WAAYl3D,WAAW,gBAAgBrB,YAAY,YAAYG,MAAM,CAAC,SAAW,IAAI,KAAO,uBAAuBW,GAAG,CAAC,MAAQlB,EAAIqtB,aAAa,CAACrtB,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIuD,OAAO,KAAKtD,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,aAAa,cAAc,WAAW,GAAGN,EAAG,IAAI,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAc,WAAEyB,WAAW,eAAerB,YAAY,wBAAwBG,MAAM,CAAC,SAAW,IAAI,KAAO,uBAAuBW,GAAG,CAAC,MAAQlB,EAAIqtB,aAAa,CAACrtB,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIuD,OAAO,KAAKtD,EAAG,oBAAoB,CAACG,YAAY,cAAcG,MAAM,CAAC,KAAO,QAAQ,cAAc,WAAW,GAAGN,EAAG,IAAI,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAc,WAAEyB,WAAW,eAAerB,YAAY,YAAYG,MAAM,CAAC,SAAW,IAAI,KAAO,uBAAuBW,GAAG,CAAC,MAAQlB,EAAI44D,gBAAgB,CAAC34D,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,QAAQ,cAAc,WAAW,KAAMP,EAAc,WAAEC,EAAG,MAAM,CAACG,YAAY,8BAA8B,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAI64D,eAAiB74D,EAAI24D,WAAY14D,EAAG,QAAQ,CAACG,YAAY,YAAY0B,MAAM,CAAE,UAAW9B,EAAI24D,aAAc,CAAC34D,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,sCAAsCb,EAAIS,SAAST,EAAIS,KAAMT,EAAc,WAAEC,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,WAAW,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,QAAUE,WAAW,YAAYlB,MAAM,CAAC,aAAa,QAAQ,YAAcP,EAAIolC,gBAAgB,KAAO,+BAA+B,UAAW,EAAM,YAAYplC,EAAIoK,OAAOC,IAAI,iCAAiCvB,MAAM,CAACvH,MAAOvB,EAAc,WAAE+I,SAAS,SAAUC,GAAMhJ,EAAImd,WAAWnU,CAAG,EAAEvH,WAAW,iBAAiB,KAAKxB,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,YAAY,CAACG,YAAY,aAAaG,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,qCAAqC,cAAc,cAAcK,GAAG,CAAC,WAAalB,EAAI84D,iBAAiB,KAAK94D,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,OAAO,CAAEJ,EAAY,SAAEC,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAc,WAAEC,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAAEJ,EAAc,WAAEC,EAAG,OAAOD,EAAI2G,GAAI3G,EAAmB,iBAAE,SAASkjB,GAAS,OAAOjjB,EAAG,OAAO,CAACI,IAAI6iB,EAAQ3iB,MAAM,CAAC,MAAQ2iB,EAAQ,eAAc,GAAMhiB,GAAG,CAAC,OAAS,SAASQ,GAAQ,OAAO1B,EAAI+4D,gBAAgB71C,EAAQ,IAAI,IAAG,GAAGljB,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIg5D,yBAAyBh5D,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,YAAY,CAAEJ,EAAY,SAAEC,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAAEJ,EAAc,WAAEC,EAAG,MAAM,CAACG,YAAY,eAAe,CAAEJ,EAAc,WAAEC,EAAG,OAAO,CAACG,YAAY,iCAAiC,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,wCAAwCZ,EAAG,mBAAmB,CAACmG,IAAI,YAAY7F,MAAM,CAAC,oBAAoB,QAAQ,QAAUP,EAAIi5D,mBAAmBnwD,MAAM,CAACvH,MAAOvB,EAAa,UAAE+I,SAAS,SAAUC,GAAMhJ,EAAIk5D,UAAUlwD,CAAG,EAAEvH,WAAW,gBAAgB,GAAGzB,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,wCAAwCZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIm5D,8BAA8Bn5D,EAAIS,QACx1G,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,wBAAwBJ,EAAI2G,GAAI3G,EAAW,SAAE,SAAS6N,EAAQhH,GAAO,OAAO5G,EAAG,WAAW,CAACI,IAAIwN,EAAQtM,MAAMhB,MAAM,CAAC,GAAK,WAAWP,EAAIiQ,QAAQpJ,IAAQ,MAAQgH,EAAQtM,MAAM,MAAQsM,EAAQ7G,KAAK,cAAchH,EAAIuB,MAAM,YAAW,EAAK,KAAOvB,EAAIo5D,WAAWl4D,GAAG,CAAC,MAAQlB,EAAIq5D,kBAAkB,IAAG,EAC/X,EACI,GAAkB,GCgBpB,IACEh4D,KAAM,mBACN2G,WAAY,CAAEsxD,SAAQ,IACtB/xD,MAAO,CACLhG,MAAO,CACLyB,KAAM2E,OACNC,UAAU,GAEZrF,QAAS,CACPS,KAAMtF,MACN,UACE,MAAO,EACT,GAEFuc,eAAgB,CACdjX,KAAMwE,OACNC,QAAS,IAEX8xD,gBAAiB,CACfv2D,KAAMwE,OACNC,QAAS,IAEX+xD,YAAa,CACXx2D,KAAMwE,OACNC,QAAS,KAGb,IAAAtF,GACE,MAAO,CACLs3D,aAAa,EAEjB,EACAn3D,SAAU,CACR,SAAA82D,GACE,MAAO,SAAS99D,KAAK2U,MACvB,GAEFxN,QAAS,CACP42D,gBAAiB,SAAU93D,GACzBjG,KAAKyM,MAAM,QAASxG,EACtB,IC1DsI,MCOxI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCgG9B,IACEF,KAAM,kBACN2G,WAAY,CACV4V,UAAS,EACTlJ,SAAQ,GACRglD,iBAAgB,GAChBl6B,KAAI,IAENj4B,MAAO,CACLguC,UAAW,CACTvyC,KAAM2E,OACNF,QAAS,GAEXlE,MAAO,CACLP,KAAMwE,OACNC,QAAS,IAEXowD,SAAU,CACR70D,KAAMtF,MACN,UACE,MAAO,EACT,GAEFo6D,gBAAiB,CACf90D,KAAM2E,OACNF,QAAS,IAGb,IAAAtF,GACE,MAAO,CACLw2D,YAAY,EACZx7C,WAAY,KACZw8C,cAAe,GACfC,gBAAiB,GACjBV,UAAW,EACXW,iBAAkB,KAEtB,EACAv3D,SAAU,CACR,OAAA0N,GACE,QAAI1U,KAAKs+D,gBAAgBt2D,OAAS,GACT,IAAnBhI,KAAK49D,UAMb,EACA,aAAAL,GACE,OAAOv9D,KAAKu8D,SAASv0D,OAAS,GAAKhI,KAAKs+D,gBAAgBt2D,OAAS,CACnE,EACA,UAAAw2D,GACE,MAAMC,EAAUh8D,KAAKowB,UAAU7yB,KAAK0+D,mBAC9BC,EAAUl8D,KAAKowB,UAAU7yB,KAAK4+D,mBAEpC,OAAOH,IAAYE,CACrB,EACA,iBAAAD,GACE,IAAIH,EAAmB,CACrBj0D,GAAItK,KAAKi6C,UACTsiB,SAAU,GACVC,gBAAiBx8D,KAAKw8D,iBAGxB,MAAM8B,EAAkBt+D,KAAKq+D,cAAcvjD,IAAI9a,KAAK6+D,WAOpD,OANAN,EAAmB,CACjBj0D,GAAItK,KAAKi6C,UACTsiB,SAAU+B,EACV9B,gBAAiBx8D,KAAKw8D,iBAGjB+B,CACT,EACA,iBAAAK,GACyB,OAAnB5+D,KAAK49D,WACP59D,KAAK8+D,sBAGP,IAAIP,EAAmB,CACrBj0D,GAAItK,KAAKi6C,UACTsiB,SAAU,GACVC,gBAAiBx8D,KAAK49D,WAGxB,MAAMU,EAAkBt+D,KAAKs+D,gBAAgBxjD,IAAI9a,KAAK6+D,WAUtD,OATAN,EAAmB,CACjBj0D,GAAItK,KAAKi6C,UACTsiB,SAAU+B,EACV9B,gBAAiBx8D,KAAK49D,WAIxB59D,KAAKu+D,iBAAmBA,EAEjBA,CACT,EACA,mBAAAV,GACE,OAAI79D,KAAKu9D,cACAv9D,KAAK++D,uBAGP/+D,KAAKuF,GAAG,sCACjB,EACA,sBAAAw5D,GACE,IAAIh2D,EAAO/I,KACX,MAAMg/D,EAAQt9D,EAAEoZ,IAAI9a,KAAK8G,OAAOlF,MAAM46D,iBAAiB,SAAUruD,EAAKpJ,GACpE,MAAO,CACLkB,MAAOkI,EAAI7D,GACXoB,KAAM3C,EAAKxD,GAAG,mCAAqC4I,EAAIzC,MAE3D,IAEM5J,EAAOk9D,EAAMvrD,QAAQpP,GAClBA,EAAE4B,QAAUjG,KAAKw8D,kBAG1B,OAAO16D,EAAOA,EAAK,GAAG4J,KAAO,IAC/B,EACAiyD,kBAAmB,WACjB,IAAI50D,EAAO/I,KACX,OAAO0B,EAAEoZ,IAAI9a,KAAK8G,OAAOlF,MAAM46D,iBAAiB,SAAUruD,EAAKpJ,GAC7D,MAAO,CACLkB,MAAOkI,EAAI7D,GACXoB,KAAM3C,EAAKxD,GAAG,mCAAqC4I,EAAIzC,MAE3D,GACF,EACAuzD,qBAAsB,WACpB,OAAOv9D,EAAEoZ,IAAI9a,KAAK8G,OAAOlF,MAAM46D,iBAAiB,SAAUruD,EAAKpJ,GAC7D,OAAOoJ,EAAIzC,IACb,GACF,EACAwzD,WAAY,WACV,OAAOlrD,SAASulC,eAAe,kBAAkBv5C,KAAK2U,OACxD,EACA,eAAAm1B,GACE,OAAO9pC,KAAKuF,GAAG,iCACjB,EACA,gBAAAm4D,GACE,OAAI19D,KAAKu8D,SACAv8D,KAAKu8D,SAASzhD,IAAI9a,KAAKm/D,SAAShpD,KAAK,MAGvC,EACT,EACA,gBAAAipD,GACE,OAAO19D,EAAEoZ,IAAIpZ,EAAE29D,QAAQr/D,KAAKs+D,gBAAiB,UAAWgB,GAC5B,IAAtBA,EAAWt3D,OACNs3D,EAAW,GAEX59D,EAAE+R,OAAO6rD,GAAa13C,GACpBA,EAAQ5O,QACd,IAGT,GAEFqK,cAAe,WACbhjB,OAAO8T,oBAAoB,QAASnU,KAAKu/D,YACzCl/D,OAAO8T,oBAAoB,QAASnU,KAAKw/D,aAC3C,EACA,OAAAhzD,GACEnM,OAAO4T,iBAAiB,QAASjU,KAAKu/D,YAAY,GAClDl/D,OAAO4T,iBAAiB,QAASjU,KAAKw/D,cAAc,GACpDx/D,KAAKy/D,aACP,EACAt4D,QAAS,CACP,aAAAm2D,GACEt9D,KAAKy/D,cACLz/D,KAAKq9D,YAAa,CACpB,EACA,kBAAAqC,GACE1/D,KAAK+xB,YACP,EACAytC,aAAc,SAAUprD,GACtBpU,KAAKu/D,WAAWnrD,EAClB,EACAmrD,WAAY,SAAUnrD,GAElBpU,KAAKq9D,YACLjpD,EAAM5D,QACNxQ,KAAKk/D,iBACgBrsD,IAArBuB,EAAM5D,OAAOuB,MACZ/R,KAAKk/D,WAAW1qD,SAASJ,EAAM5D,SAEhCxQ,KAAK+xB,YAET,EACA,YAAAyrC,GACEx9D,KAAKyY,WAAWC,cAAcnV,MAAM0F,IAClC,GAAIA,EAAM,CACR,MAAM+P,EAAQhZ,KAAK6hB,WAAW1hB,cACzBH,KAAKs+D,gBAAgBr8D,MAAM2lB,GAAYA,EAAQznB,gBAAkB6Y,KACpEhZ,KAAKs+D,gBAAgB39D,KAAKqY,EAE9B,CACAhZ,KAAK6hB,WAAa,OAEtB,EACA,eAAA47C,CAAiB71C,GACf5nB,KAAKs+D,gBAAkBt+D,KAAKs+D,gBAAgB7qD,QAAQpP,GAAMA,IAAMujB,GAClE,EACA,WAAA63C,GACEz/D,KAAK6hB,WAAa,KAClB7hB,KAAKq+D,cAAgBr+D,KAAKu8D,SAASzhD,IAAI9a,KAAKm/D,UAAY,GACxDn/D,KAAKs+D,gBAAkBt+D,KAAKu8D,SAASzhD,IAAI9a,KAAKm/D,UAAY,GAC1Dn/D,KAAK49D,UAAY59D,KAAKw8D,eACxB,EACA,mBAAAsC,GACE9+D,KAAK49D,UAAY,CACnB,EACAiB,UAAW,SAAU/8D,GACnB,IAAI8lB,EAAU,CACZqyB,UAAWj6C,KAAKi6C,UAChBjhC,MAAOlX,GAGT,OAAO8lB,CACT,EACAu3C,QAAS,SAAUv3C,GACjB,MAAM3hB,EAAQ2hB,EAAQ5O,MACtB,OAAO/S,CACT,EACA8rB,WAAY,WAGV,GAFA/xB,KAAKq9D,YAAcr9D,KAAKq9D,WAEpBr9D,KAAKq9D,WAEPr9D,KAAKy/D,mBAKL,GAFAz/D,KAAKu+D,iBAAmBv+D,KAAK4+D,kBAEzB5+D,KAAKw+D,WAAY,CACnB,IAAKx+D,KAAK0U,QAER,YADA1U,KAAKq9D,YAAa,GAGpBr9D,KAAKyM,MAAM,gBAAiBzM,KAAKu+D,iBACnC,CAEJ,ICnWwI,MCQ1I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC8D9B,IACEx4D,KAAM,eACN2G,WAAY,CACVwvD,gBAAe,GACfyD,gBAAe,GACfC,kBAAiB,GACjBC,YAAW,GACXj4B,QAAO,IAET37B,MAAO,CACLqiD,QAAS,CACP5mD,KAAMwE,OACNC,QAAS,IAEX7B,GAAI,CACF5C,KAAMwE,OACNC,QAAS,IAEXsH,OAAQ,CACN/L,KAAMwE,OACNC,QAAS,KAGb,IAAAtF,GACE,MAAO,CACL4d,QAAS,CACPna,GAAI,EACJ0c,YAAa,GACbjhB,KAAM,GACNw2D,SAAU,GACVC,gBAAiB,GAEnB7gB,OAAQ,EACRmkB,aAAc,EAElB,EACA94D,SAAU,CACRC,QAAS,WACP,MAAMk1D,EAAkB,CACtB,CAAE1mD,IAAK,kBAAoBzV,KAAKsK,GAAK,QAASoB,KAAM1L,KAAKuF,GAAG,mBAAoB+oD,QAAS,QACzF,CAAE74C,IAAK,kBAAoBzV,KAAKsK,GAAK,SAAUoB,KAAM1L,KAAKuF,GAAG,oBAAqB+oD,QAAS,SAC3F,CAAE74C,IAAK,kBAAoBzV,KAAKsK,GAAK,YAAaoB,KAAM1L,KAAKuF,GAAG,uBAAwB+oD,QAAS,YAC7Fn5C,EAAKgnD,EAAgBC,SAS3B,OARIp8D,KAAK66B,QAAQ,UAAY76B,KAAK66B,QAAQ,oBAAsB76B,KAAK66B,QAAQ,kBAAoB76B,KAAK66B,QAAQ,kBAAoB76B,KAAK66B,QAAQ,4BAA8B76B,KAAK66B,QAAQ,uBACxL1lB,EAAGxU,KAAK,CAAE8U,IAAK,oBAAqB/J,KAAM1L,KAAKuF,GAAG,uBAAwB+oD,QAAS,aAGrFn5C,EAAGxU,KACD,CAAE8U,IAAK,kBAAoBzV,KAAKsK,GAAK,SAAUoB,KAAM1L,KAAKuF,GAAG,mBAAoB+oD,QAAS,UAGrFn5C,CACT,EACA,eAAAqnD,GACE,OAAIx8D,KAAKykB,QAAQ+3C,gBACRx8D,KAAKykB,QAAQ+3C,gBAEf,CACT,EACAzjC,gBAAiB,WACf,OAA8B,IAA1B/4B,KAAKykB,QAAQ1d,SACR/G,KAAKuF,GAAG,gBACoB,IAA1BvF,KAAKykB,QAAQ1d,SACf/G,KAAKuF,GAAG,gBACoB,IAA1BvF,KAAKykB,QAAQ1d,SACf/G,KAAKuF,GAAG,uBAGV,EACT,EACA+2D,gBAAiB,WACf,OAAQt8D,KAAKykB,QAAQ3O,UAAY9V,KAAKykB,QAAQ3O,SAAS9N,OAAUhI,KAAKykB,QAAQ3O,SAASK,KAAK,MAAQ,EACtG,GAEF3J,QAAS,WACPxM,KAAK08D,cACP,EACAv1D,QAAS,CACPk1D,kBAAmB,WACjB,IAAIl7D,EAAMnB,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAa69D,uBAAuB,GAAG11D,QAAQ,MAAOrK,KAAKsK,IAC5H01D,EAAW,CACbC,QAASjgE,KAAKykB,QAAQuC,aAGxBhnB,KAAKgJ,MAAMuB,KAAKpJ,EAAK6+D,EACvB,EACAE,YAAa,WACX,IAAI/+D,EAAMnB,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAai+D,iBAAiB,GAAG91D,QAAQ,MAAOrK,KAAKsK,IAE1HtK,KAAKogE,mBAAmBj/D,EAAK,EAC/B,EACAs7D,eAAgB,SAAU8B,GACxB,IAAIp9D,EAAMnB,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAam+D,iBAAiB,GAAGh2D,QAAQ,MAAOrK,KAAKsK,IACtH01D,EAAWzB,EAEfv+D,KAAKgJ,MAAMuB,KAAKpJ,EAAK6+D,GAAUz8D,MAAKC,IAElCxD,KAAKusC,iBAAiBvsC,KAAKuF,GAAG,0BAC9BvF,KAAKkgE,aAAY,IACfn6C,IAEF/lB,KAAK2sC,eAAe3sC,KAAKuF,GAAG,sBAAqB,GAErD,EACA+6D,aAAc,SAAU7qD,EAAK8e,GAC3Bv0B,KAAKgJ,MAAM3F,IAAIoS,GAAKlS,MAAKC,IACvBxD,KAAK27C,OAAS,EACd37C,KAAK8/D,aAAe,EACpB9/D,KAAKykB,QAAUjhB,EAAEE,QAChB8wB,IACGD,EAAQ,EACVv0B,KAAKsgE,aAAa7qD,EAAK8e,EAAQ,IAE/Bv0B,KAAK27C,QAAU,EACf37C,KAAK8/D,cAAgB,EACvB,GAEJ,EACAM,mBAAoB,SAAU3qD,EAAK8e,GACjCv0B,KAAKgJ,MAAM3F,IAAIoS,GAAKlS,MAAKC,IACvBxD,KAAK8/D,aAAe,EACpB9/D,KAAKykB,QAAQ+3C,gBAAkBh5D,EAAEE,KAAK84D,gBACtCx8D,KAAKykB,QAAQ83C,SAAW/4D,EAAEE,KAAK64D,YAC9B/nC,IACGD,EAAQ,EACVv0B,KAAKogE,mBAAmB3qD,EAAK8e,EAAQ,GAErCv0B,KAAK8/D,cAAgB,CACvB,GAEJ,EACApD,aAAc,WACZ18D,KAAK27C,OAAS,EACd,IAAIx6C,EAAMnB,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAaq+D,YAAY,GAAGl2D,QAAQ,MAAOrK,KAAKsK,IACrHtK,KAAKsgE,aAAan/D,EAAK,EACzB,ICxNqI,MCQvI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIuD,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,uCAAuC,CAACH,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,cAAc,CAACG,YAAY,YAAYG,MAAM,CAAC,GAAK,kBAAoBP,EAAI4F,GAAK,cAAc,CAAC5F,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI6sB,gBAAgBxrB,MAAM,QAAQ,GAAGpB,EAAG,MAAM,CAACG,YAAY,iCAAiC,CAACH,EAAG,YAAY,CAACG,YAAY,yBAAyBG,MAAM,CAAC,SAAU,EAAK,MAAQP,EAAIa,GAAG,kCAAkC,KAAO,EAAE,aAAab,EAAIa,GAAG,kCAAkC,cAAc,wBAAwBK,GAAG,CAAC,qBAAuBlB,EAAI87D,yBAAyB,KAAK77D,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,oBAAoBP,EAAI6sB,gBAAgBC,YAAY,SAAW9sB,EAAI+7D,oBAAoB76D,GAAG,CAAC,WAAalB,EAAIg8D,aAAa,YAAch8D,EAAIi8D,cAAc,cAAgBj8D,EAAIk8D,oBAAoB,GAAGj8D,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,uCAAuCK,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAIm8D,qBAAqBn8D,EAAI5C,KAAK,GAAG0L,MAAM,CAACvH,MAAOvB,EAAI6sB,gBAAwC,yBAAE9jB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI6sB,gBAAiB,2BAA4B7jB,EAAI,EAAEvH,WAAW,+CAA+C,GAAGxB,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAAED,EAAkB,eAAEC,EAAG,KAAK,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,4CAA4C,OAAOb,EAAIS,KAAMT,EAAkB,eAAEC,EAAG,KAAK,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIo8D,gBAAgB,OAAOp8D,EAAIS,KAAKR,EAAG,KAAK,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,4CAA4C,KAAOb,EAAI6sB,gBAAgBwvC,SAAiQr8D,EAAIS,KAA3PR,EAAG,OAAO,CAACiB,GAAG,CAAC,MAAQ,SAASQ,GAAQ1B,EAAIs8D,SAAWt8D,EAAIs8D,OAAO,IAAI,CAAEt8D,EAAW,QAAEC,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,kBAAkBN,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,iBAAiB,KAAgBP,EAAI6sB,gBAAgBwvC,SAAiGr8D,EAAIS,KAA3FR,EAAG,KAAK,CAAC6B,MAAM,CAAE,YAAa9B,EAAIs8D,UAAW,CAACt8D,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIu8D,YAAY,OAAiBv8D,EAAI6sB,gBAAwB,SAAE5sB,EAAG,KAAK,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,uBAAuB,OAAOb,EAAIS,SAASR,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,oCAAoCZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI6sB,gBAAgB6lB,mBAAmBzyC,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,mCAAmCZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI6sB,gBAAgB4lB,wBAAwBxyC,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,uBAAuB,CAACM,MAAM,CAAC,mBAAmBP,EAAI6sB,gBAAgBG,gBAAgB,iCAAiChtB,EAAI6sB,gBAAgBjnB,GAAG,WAAW,IAAI1E,GAAG,CAAC,aAAelB,EAAIw8D,eAAe,aAAex8D,EAAIy8D,eAAe,eAAiBz8D,EAAI08D,qBAAqB,GAAK18D,EAAIi3C,OAAsHj3C,EAAIS,KAAlHR,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,gCAAgC,CAACH,EAAG,YAAY,MAA+B,IAAhBD,EAAIi3C,OAAeh3C,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,gCAAgC,CAACH,EAAG,OAAO,CAACG,YAAY,0BAA0B,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,sCAAsCZ,EAAG,IAAI,CAACG,YAAY,qBAAqBG,MAAM,CAAC,KAAO,qBAAqB,SAAW,KAAKW,GAAG,CAAC,MAAQlB,EAAIg4D,eAAe,CAAC/3D,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,OAAO,KAAO,KAAK,cAAc,GAAG,cAAc,UAAUN,EAAG,MAAMA,EAAG,OAAO,CAACG,YAAY,uBAAuB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,4BAA4B,OAAOb,EAAIS,KAAKR,EAAG,kBAAkB,CAACM,MAAM,CAAC,QAAUP,EAAIy3D,oBAAoB,EACjkH,EACI,GAAkB,GCsHtB,wBACA,uBACA,YACA,mBACA,YACA,WACA,qBACA,qBACA,yBAEA,YACA,OACA,SACA,YACA,YAEA,IACA,YACA,YAEA,QACA,YACA,aAGA,gBACA,OACA,iBACA,2GACA,oHACA,sGACA,4GAEA,iBACA,KACA,sDACA,eACA,mBACA,YACA,iBACA,gBACA,4BACA,YACA,YACA,kBAEA,uBACA,SACA,WAEA,EACA,UACA,0BACA,sHACA,EACA,sBACA,sHACA,EACA,8BAEA,8IACA,GAEA,mBACA,mBACA,EACA,SACA,gCACA,4CACA,oBACA,EACA,wBACA,cACA,+HACA,OACA,mDACA,oBACA,UACA,6BACA,EACA,qBACA,2FACA,6CACA,EACA,oCACA,yCACA,mCACA,OAEA,yBAEA,GACA,EACA,gCACA,gBACA,EACA,qCACA,mCACA,KAEA,yBAGA,+BAEA,gBACA,sBACA,GACA,EACA,0BAEA,6EACA,EACA,4BAEA,2BACA,0EACA,EACA,qCACA,6GACA,mCACA,OAEA,yBAEA,GACA,EACA,uCAEA,uDACA,eACA,IAEA,mCACA,OAEA,yBAEA,GACA,KCnQgQ,MCQ5P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIz3D,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACG,YAAY,qCAAqC,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,YAAcP,EAAImL,aAAarC,MAAM,CAACvH,MAAOvB,EAAU,OAAE+I,SAAS,SAAUC,GAAMhJ,EAAIoP,OAAOpG,CAAG,EAAEvH,WAAW,aAAa,GAAGxB,EAAG,MAAM,CAACG,YAAY,gDAAgD,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,MAAQ,aAAa,KAAO,EAAE,cAAc,UAAUW,GAAG,CAAC,OAASlB,EAAI28D,kBAAkB,KAAM38D,EAAY,SAAEC,EAAG,MAAM,CAACG,YAAY,WAAWJ,EAAI2G,GAAI3G,EAAiB,eAAE,SAASmhC,EAAEzzB,GAAG,OAAOzN,EAAG,MAAM,CAACI,IAAIqN,EAAEtN,YAAY,eAAe,CAACH,EAAG,cAAc,CAACM,MAAM,CAAC,GAAK,kBAAoB4gC,EAAEv7B,GAAK,UAAU,CAAC5F,EAAIQ,GAAG,IAAIR,EAAIY,GAAGugC,EAAE9/B,MAAM,QAAQ,EAAE,IAAG,GAAGpB,EAAG,MAAM,CAACG,YAAY,iCAAiC,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,YAAY,GAAGA,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,8BAC/7B,EACI,GAAkB,GC8BpB,IACEQ,KAAM,mBACN2G,WAAY,CAAE40D,UAAS,aAAW,UAAS,IAC3Cr1D,MAAO,CACLqiD,QAAS,CACP5mD,KAAMwE,OACNC,QAAS,IAEX7B,GAAI,CACF5C,KAAMwE,OACNC,QAAS,IAEXsH,OAAQ,CACN/L,KAAMwE,OACNC,QAAS,KAGbtF,KAAM,WACJ,MAAO,CACL+O,SAAU,KACV/F,YAAa7P,KAAKuF,GAAG,sCACrBuO,OAAQ,GAEZ,EACA9M,SAAU,CACRyO,IAAK,WACH,IAAIN,EAAKnV,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAQpC,OAPKv8B,KAAKsK,IAGR6K,GAAMnV,KAAK8G,OAAOlF,MAAMM,aAAaq/D,mBAAmB,GACxDpsD,EAAKA,EAAG9K,QAAQ,MAAOrK,KAAKsK,KAH5B6K,GAAMnV,KAAK8G,OAAOlF,MAAMM,aAAa0T,SAAS,GAMzCT,CACT,EACA,aAAAulD,GACE,MAAoB,KAAhB16D,KAAK8T,OACA9T,KAAK4V,SAEP5V,KAAK4V,SAASnC,QAAO3R,GACnBA,EAAKiE,KAAK5F,cAAci8D,OAAO,IAAMt6D,EAAKiE,KAAK5F,eAAee,QAAQlB,KAAK8T,OAAO3T,gBAAkB,GAE/G,GAEFqM,QAAS,WACPxM,KAAKgJ,MAAM3F,IAAIrD,KAAKyV,KAAKlS,MAAKgS,IAC5BvV,KAAK4V,SAAWL,EAAQ7R,OAE5B,EACAyD,QAAS,CACP,aAAAk6D,GACE,IAAIG,EAAc,IACT,6CAGLC,EAAsBlpB,IACxB,IAAImpB,GAAkB3zB,MAAMwK,GAC5B,OAAImpB,EACK,QAAUnpB,EAAUA,EAAQjlC,WAAWjJ,QAAQ,IAAK,MAAQ,IAAM,OAElE,KAAOkuC,EAAUA,EAAQjlC,WAAWjJ,QAAQ,IAAK,MAAQ,IAAM,IACxE,EAGEs3D,EAAW,CAACppB,EAASqpB,KACvBrpB,EAAUA,EAAQjlC,WACXilC,EAAQvwC,OAAS45D,EACpB,IAAIx/D,MAAOw/D,EAAW,EAAKrpB,EAAQvwC,QAAQmO,KAAK,KAAOoiC,EACvDA,GAGFspB,EAAiBv2C,IACnB,OAAQA,EAAKnrB,eACb,IAAK,UACH,MAAO,SACT,IAAK,UACH,MAAO,QACT,IAAK,YACH,MAAO,gBACT,QACE,MAAO,GACT,EAEE2hE,EAAgBj7D,IAGlB,IAFA,IAAI0xC,EAAU,GACVwpB,EAAU,OACL3vD,EAAI,EAAGA,EAAIvL,EAAKmB,OAAQoK,IAAK,CACpC,IAAI4vD,EAAMn7D,EAAKuL,GACfmmC,GAAWkpB,EAAmBE,EAASK,EAAI/rC,SAAU,IACrDsiB,GAAWkpB,EAAmBO,EAAIhlC,aAClCub,GAAWkpB,EAAmBO,EAAIlpC,cAClCyf,GAAWkpB,EAAmBI,EAAcG,EAAIj7D,WAChDwxC,EAAUA,EAAQ7kC,MAAM,GAAI,GAC5B6kC,GAAWwpB,CACb,CAEA,OAAOxpB,EAAQ7kC,MAAM,GAAI,EAAC,EAG5B,SAASuuD,EAAoBp7D,GAC3B,IAAIq7D,EAAoC,kBAATr7D,EAAoBpE,KAAKC,MAAMmE,GAAQA,EAElEg/B,EAAI,IAAIzkC,KACR+gE,EAAc,GAAGt8B,EAAE19B,iBAAiB09B,EAAEI,WAAa,KAAKJ,EAAEK,aAAaL,EAAEM,cAAcN,EAAEO,aAAe,GAAM,IAAMP,EAAEO,aAAgBP,EAAEO,eACxIg8B,EAAiB,WAAWD,IAC5BE,EAAY,YAMhB,GAJAA,GAAab,IACba,GAAaP,EAAaI,GAGtBnhE,UAAUuhE,iBAAkB,CAI9B,IAHA,IAAIC,EAAWF,EACXG,EAAK,IAAIC,YAAYF,EAASv6D,QAC9B06D,EAAa,IAAIC,WAAWH,GACvB7jC,EAAI,EAAGA,EAAI+jC,EAAW16D,OAAQ22B,IAAK,CAC1C,IAAIikC,EAAWL,EAAS5jC,GAAGkkC,WAAW,GAClCD,EAAW,MACbA,EAAW,KAEbF,EAAW/jC,GAAKikC,CAClB,CACA7hE,UAAUuhE,iBAAiB,IAAIQ,KAAK,CAACJ,GAAa,CAAEh7D,KAAM,iCAAmC06D,EAAiB,OAChH,KAAO,CACL,IAAItnB,EAAO9mC,SAAS+uD,cAAc,KAC9BttD,EAAM,+BAAiCutD,OAAOX,GAClDvnB,EAAKv6C,KAAOkV,EACZqlC,EAAKrzC,MAAQ,oBACbqzC,EAAKmoB,SAAWb,EAAiB,OACjCpuD,SAAStQ,KAAKw/D,YAAYpoB,GAC1BA,EAAK9S,QACLh0B,SAAStQ,KAAKy/D,YAAYroB,EAC5B,CACF,CAEA,IAAIllC,EAAW5V,KAAK06D,cAAc5/C,KAAIzW,GAAKA,EAAEiG,KACzCnJ,EAAMnB,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAakhE,eAAe,GACjGpjE,KAAKgJ,MAAMuB,KAAKpJ,EAAKyU,GAAUrS,MAAMU,IACnCg+D,EAAmBh+D,EAAS4C,KAAI,GAEpC,IC7KoI,MCQtI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAInC,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAa,UAAEC,EAAG,MAAM,CAACG,YAAY,iCAAiC,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,YAAY,GAAGA,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6Bb,EAAIS,SAASR,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,gCAAgCZ,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAAEJ,EAAgC,6BAAEC,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,yBAAyB,cAAc,eAAeK,GAAG,CAAC,YAAclB,EAAI2+D,uBAAuB3+D,EAAIS,MAAM,KAAMT,EAAyB,sBAAEC,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,cAAc,CAACM,MAAM,CAAC,UAAY,EAAE,mBAAmB,IAAIW,GAAG,CAAC,KAAOlB,EAAI4+D,kBAAkB,OAAS5+D,EAAI6+D,4BAA4B,KAAK7+D,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,EAAGJ,EAAIisC,WAAajsC,EAAI8+D,aAAax7D,OAAQrD,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAOP,EAAI8+D,iBAAiB,GAAG9+D,EAAIS,KAAOT,EAAIisC,WAAcjsC,EAAI8+D,aAAax7D,OAAoGtD,EAAIS,KAAhGR,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwB,WAAoBZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,kCAAkCZ,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,yBAAyB,cAAc,eAAeK,GAAG,CAAC,YAAclB,EAAI++D,0BAA0B,KAAM/+D,EAA2B,wBAAEC,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,cAAc,CAACM,MAAM,CAAC,UAAY,EAAE,mBAAmB,IAAIW,GAAG,CAAC,KAAOlB,EAAIg/D,oBAAoB,OAASh/D,EAAIi/D,8BAA8B,KAAKj/D,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,EAAGJ,EAAIisC,WAAajsC,EAAIk/D,eAAe57D,OAAQrD,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAOP,EAAIk/D,mBAAmB,GAAGl/D,EAAIS,KAAOT,EAAIisC,WAAcjsC,EAAIk/D,eAAe57D,OAAoGtD,EAAIS,KAAhGR,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwB,YACt7E,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIb,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,eAAe,KAAO,aAAa,UAAW,EAAK,YAAYb,EAAIoK,OAAOC,IAAI,eAAevB,MAAM,CAACvH,MAAOvB,EAAIk4B,MAAU,KAAEnvB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIk4B,MAAO,OAAQlvB,EAAI,EAAEvH,WAAW,iBAAiB,GAAGxB,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,oBAAoB,OAAOZ,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIwC,UAAU,SAAWxC,EAAIm/D,mBAAmBj+D,GAAG,CAAC,OAASlB,EAAIo/D,sBAAsB,KAAKn/D,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,gBAAgB,CAACM,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,uBAAuBiI,MAAM,CAACvH,MAAOvB,EAAIk4B,MAAiB,YAAEnvB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIk4B,MAAO,cAAelvB,EAAI,EAAEvH,WAAW,wBAAwB,KAAKxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,uBAAuB,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,MAAQP,EAAIa,GAAG,mBAAmB,KAAO,iBAAiB,MAAQb,EAAIq/D,gBAAgB,SAAmC,IAAxBr/D,EAAIk4B,MAAME,UAAgB,YAAYp4B,EAAIoK,OAAOC,IAAI,mBAA6C,IAAxBrK,EAAIk4B,MAAME,WAAiBtvB,MAAM,CAACvH,MAAOvB,EAAIk4B,MAAc,SAAEnvB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIk4B,MAAO,WAAYlvB,EAAI,EAAEvH,WAAW,qBAAqB,KAAKxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,cAAc,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,yBAAyB,aAAab,EAAIa,GAAG,0BAA0BiI,MAAM,CAACvH,MAAOvB,EAAIk4B,MAAoB,eAAEnvB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIk4B,MAAO,iBAAkBlvB,EAAI,EAAEvH,WAAW,2BAA2B,KAAMzB,EAAIs/D,gBAAiBr/D,EAAG,MAAM,CAACA,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,iBAAiB,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,4BAA8BE,WAAW,gCAAgClB,MAAM,CAAC,KAAOP,EAAIa,GAAG,4BAA4B,KAAO,2BAA2B,MAAQb,EAAIk4B,MAAMK,eAAe,UAAW,EAAM,YAAYv4B,EAAIoK,OAAOC,IAAI,6BAA6BnJ,GAAG,CAAC,MAAQlB,EAAIu/D,4BAA4B,OAAOv/D,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,8BAA8B,CAACH,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,SAAS,KAAO,EAAE,MAAQP,EAAIa,GAAG,iBAAiB,cAAc,cAAcK,GAAG,CAAC,WAAalB,EAAIw/D,kBAAkBv/D,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,SAAS,KAAO,EAAE,MAAQP,EAAIa,GAAG,eAAe,KAAO,gBAAgB,cAAc,eAAeK,GAAG,CAAC,YAAclB,EAAIy/D,kBAAkB,UACv9F,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIz/D,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,WAAWJ,EAAI2G,GAAI3G,EAAS,OAAE,SAAS+uD,GAAG,OAAO9uD,EAAG,YAAY,CAACI,IAAI0uD,EAAEnpD,GAAGrF,MAAM,CAAC,MAAQwuD,EAAE/nD,KAAK,QAAUhH,EAAI4W,WAAWm4C,EAAEnpD,KAAK1E,GAAG,CAAC,MAAQlB,EAAIgwD,UAAU,IAAG,EACtP,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIhwD,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,YAAY0B,MAAM,CAAC,QAAW9B,EAAIoH,SAASlG,GAAG,CAAC,MAAQlB,EAAIgwD,UAAU,CAAC/vD,EAAG,OAAO,CAACG,YAAY,gBAAgB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAGb,EAAIuD,YAChO,EACI,GAAkB,GCKpB,IACElC,KAAM,YACNkG,MAAO,CACLhE,MAAO,CACLP,KAAMwE,OACN,UACE,MAAO,mBACT,GAEFJ,QAAS,CACPpE,KAAM4H,QACN,UACE,OAAO,CACT,IAGJnI,QAAS,CACP,OAAAutD,CAASjB,GACPzzD,KAAKyM,MAAM,QAAS,CAAEnC,GAAItK,KAAKokE,OAAOr/D,IAAKkD,MAAOjI,KAAKiI,MAAO2E,UAAW5M,KAAK8L,SAChF,IC1BqI,MCQvI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCV9B,IACE/F,KAAM,UACN2G,WAAY,CAAE23D,UAAS,IACvBp4D,MAAO,CACLmM,MAAO,CACL1Q,KAAMtF,MACN,UAAa,MAAO,EAAG,GAEzBwK,SAAU,CACRlF,KAAMtF,MACN,UAAa,MAAO,EAAG,IAG3B+E,QAAS,CACP,OAAAutD,CAASjB,GACP,MAAMlB,EAAgB,IAAIvyD,KAAK4M,UAE3B2lD,EAAcr6B,MAAM10B,GAAMA,EAAE8G,KAAOmpD,EAAEnpD,KACvCioD,EAAc/jD,OAAO+jD,EAAc5wD,WAAW6B,GAAMA,EAAE8G,KAAOmpD,EAAEnpD,KAAK,GAC7DioD,EAAc5xD,KAAK8yD,GAC5BzzD,KAAKyM,MAAM,SAAU8lD,EACvB,EACA,UAAAj3C,CAAYm4C,GACV,OAAOzzD,KAAK4M,SAASsrB,MAAM10B,GAAMA,EAAE8G,KAAOmpD,GAC5C,ICjCmI,MCQrI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QChBhC,aAAI72C,IAAI,OAER,MAAM0nD,GAAqC,CACzC,UAAA35D,CAAY0N,EAAOyE,GACjB,MAAO,gCACT,EACA,QAAAC,CAAU9W,EAAO6W,GACf,IAAIxE,EAA6B,OAAtBrS,EAAMyiB,aAAwBziB,EAAMyiB,YAAc,EAC7D,OAAOpQ,CACT,GAGF,UC4FE,MAAU2F,OAAO,4BAA6B,IAE9C,QACElY,KAAM,cACN2G,WAAY,CAAE4V,UAAS,gBAAe,aAAW,eAAa,wBAAsB,kBAAgB,WAAS,IAC7GrW,MAAO,CACLs4D,UAAW,CACT78D,KAAM2E,OACNF,QAAS,GAEXq4D,gBAAiB,CACf98D,KAAM4H,QACNnD,SAAS,GAEXs4D,eAAgB,CACd/8D,KAAM4H,QACNnD,SAAS,IAGb,IAAAtF,GACE,MAAO,CACL+1B,MAAO,CACL72B,KAAM,GACNihB,YAAa,GACb09C,eAAgB1kE,KAAK8G,OAAOlF,MAAM2H,QAAQC,UAC1CikD,QAAS,GACTkX,gBAAgB,EAChB1qB,UAAWj6C,KAAKykE,eAAiBp4D,OAAOrM,KAAKC,OAAO6jB,OAAOxZ,KAAO,EAClEo0B,WAAY1+B,KAAKwkE,gBAAkBn4D,OAAOrM,KAAKC,OAAO6jB,OAAOxZ,KAAO,EACpEwyB,UAAW98B,KAAKukE,UAChBj8C,SAAU,KACVphB,UAAW,GAEbA,UAAW,GACX28D,kBAAmB,GACnBE,gBAAiB,KAErB,EACA,OAAAv3D,GACE,MAAM8e,EAAOtrB,KAAK8G,OAAOlF,MAAM+nB,kBAC/B3pB,KAAKkH,UAAYlH,KAAK8G,OAAOlF,MAAMsuB,eAAezc,QAAQmxD,GAAe,IAATA,EAAEt6D,KAAUwQ,KAAK24C,IACxE,CAAEnpD,GAAImpD,EAAEnpD,GAAIoB,KAAM,kBAAoB4f,EAAKrpB,MAAM2iE,GAAMA,EAAE92D,YAAYmW,gBAAkBwvC,EAAE/nD,KAAKuY,gBAAepW,YAEtH7N,KAAK6jE,kBAAoB7jE,KAAKkH,UAAUuM,QAAQggD,GAAe,OAATA,EAAEnpD,IAAwB,IAATmpD,EAAEnpD,KAAoBmpD,EAAEnpD,GAAKtK,KAAK48B,MAAM11B,aAAeusD,EAAEnpD,IAClI,EACA,OAAAxB,GACE9I,KAAK6kE,gBACL7kE,KAAK8kE,0BACP,EACA39D,QAAS,CACP,iBAAA28D,CAAmB18D,GACjBpH,KAAK48B,MAAM11B,UAAYE,EAAE2U,QAAO,CAACE,EAAGw3C,IAAMx3C,EAAIw3C,EAAEnpD,IAAI,GACpDtK,KAAK6jE,kBAAoBz8D,CAC3B,EACA,aAAAy9D,GACE,IAAI97D,EAAO/I,KACXA,KAAK+jE,gBAAkBriE,EAAEoZ,IAAI9a,KAAK8G,OAAOlF,MAAMmsB,iBAAiB,SAAU5f,EAAKpJ,GAC7E,MAAO,CAAEkB,MAAOkI,EAAI7D,GAAIoB,KAAM3C,EAAKxD,GAAG,iBAAmB4I,EAAIzC,MAC/D,GACF,EACA,aAAAs4D,GACE,OAAgC,IAAzBhkE,KAAK48B,MAAME,SACpB,EACA,uBAAAmnC,CAAyBhnC,GACvBj9B,KAAK48B,MAAMK,eAAiBA,CAC9B,EACA,wBAAA6nC,GACM9kE,KAAKgkE,iBACuB,IAA1BhkE,KAAK48B,MAAMqd,UACbj6C,KAAK48B,MAAMK,eAAiB,CAC1BW,mBAAoB,IACpBlV,YAAa1oB,KAAK48B,MAAM8B,YAG1B1+B,KAAK48B,MAAMK,eAAiB,CAC1BW,mBAAoB,IACpBlV,YAAa1oB,KAAK48B,MAAMqd,WAI5Bj6C,KAAK48B,MAAMK,eAAiB,CAC1BW,oBAAqB,EACrBlV,YAAa,KAGnB,EACA,aAAAy7C,GACEnkE,KAAKyY,WAAWC,cAAcnV,MAAK0F,IAC7BA,GACFjJ,KAAKyM,MAAM,OAAQzM,KAAK48B,MAC1B,GAEJ,EACA,cAAAsnC,GACElkE,KAAKyM,MAAM,SAAUzM,KAAK48B,MAC5B,IC1MoI,MCQtI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCyEhC,wBACA,0BACA,gEACA,gBACA,OACA,gBACA,kBACA,aACA,yBACA,2BAEA,EACA,UACA,wCAEA,uDACA,GAEA,mBACA,iBACA,EACA,SACA,iCACA,kBACA,0GACA,yCACA,oCACA,aAEA,0CACA,sBACA,IAEA,4CACA,sBACA,IACA,cACA,GACA,EACA,+BACA,6BACA,EACA,yCACA,cACA,sCACA,eACA,0BACA,GACA,EACA,mCACA,6BACA,EACA,iCACA,+BACA,EACA,2CACA,cACA,sCACA,eACA,4BACA,GACA,EACA,qCACA,+BACA,EACA,wBACA,WACA,mGACA,wBACA,KCjK8P,MCQ1P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIl4B,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAa,UAAEC,EAAG,MAAM,CAACG,YAAY,iCAAiC,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,YAAY,GAAGA,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6Bb,EAAIS,SAASR,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,gCAAgCZ,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAAEJ,EAAgC,6BAAEC,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,yBAAyB,cAAc,eAAeK,GAAG,CAAC,YAAclB,EAAI2+D,uBAAuB3+D,EAAIS,MAAM,KAAMT,EAAyB,sBAAEC,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,cAAc,CAACM,MAAM,CAAC,UAAY,EAAE,oBAAoB,IAAIW,GAAG,CAAC,KAAOlB,EAAI4+D,kBAAkB,OAAS5+D,EAAI6+D,4BAA4B,KAAK7+D,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,EAAGJ,EAAIisC,WAAajsC,EAAI8+D,aAAax7D,OAAQrD,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAOP,EAAI8+D,iBAAiB,GAAG9+D,EAAIS,KAAOT,EAAIisC,WAAcjsC,EAAI8+D,aAAax7D,OAAoGtD,EAAIS,KAAhGR,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwB,WAAoBZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,kCAAkCZ,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,yBAAyB,cAAc,eAAeK,GAAG,CAAC,YAAclB,EAAI++D,0BAA0B,KAAM/+D,EAA2B,wBAAEC,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,cAAc,CAACM,MAAM,CAAC,UAAY,EAAE,oBAAoB,IAAIW,GAAG,CAAC,KAAOlB,EAAIg/D,oBAAoB,OAASh/D,EAAIi/D,8BAA8B,KAAKj/D,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,EAAGJ,EAAIisC,WAAajsC,EAAIk/D,eAAe57D,OAAQrD,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAOP,EAAIk/D,mBAAmB,GAAGl/D,EAAIS,KAAOT,EAAIisC,WAAcjsC,EAAIk/D,eAAe57D,OAAoGtD,EAAIS,KAAhGR,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwB,YACx7E,EACI,GAAkB,GC0FtB,wBACA,0BACA,gEACA,gBACA,OACA,gBACA,kBACA,aACA,yBACA,2BAEA,EACA,UACA,wCAEA,wDACA,GAEA,mBACA,iBACA,EACA,SACA,iCACA,kBACA,2GACA,yCACA,oCACA,aAEA,0CACA,sBACA,IAEA,4CACA,sBACA,IACA,cACA,GACA,EACA,+BACA,6BACA,EACA,yCACA,cACA,sCACA,eACA,0BACA,GACA,EACA,mCACA,6BACA,EACA,iCACA,+BACA,EACA,2CACA,cACA,sCACA,eACA,4BACA,GACA,EACA,qCACA,+BACA,EACA,wBACA,WACA,oGACA,wBACA,KCjK+P,MCQ3P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIb,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAQH,EAAa,UAAEC,EAAG,MAAM,CAACG,YAAY,eAAe,CAAEJ,EAAiB,cAAEC,EAAG,MAAM,CAACA,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwB,IAAIb,EAAIY,GAAGZ,EAAIg+C,cAAc38C,aAAapB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,cAAc,CAACM,MAAM,CAAC,MAAQP,EAAIg+C,eAAe98C,GAAG,CAAC,QAAUlB,EAAIqgE,eAAe,OAASrgE,EAAIsgE,cAAc,OAAStgE,EAAIugE,kBAAkB,KAAKtgE,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,CAACmG,IAAI,iBAAiB7F,MAAM,CAAC,MAAQP,EAAIg+C,eAAe98C,GAAG,CAAC,UAAYlB,EAAIwgE,gBAAgB,KAAKvgE,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,eAAe,CAACM,MAAM,CAAC,MAAQP,EAAIg+C,eAAe98C,GAAG,CAAC,eAAiBlB,EAAIygE,iBAAiB,iBAAmBzgE,EAAI0gE,uBAAuB,OAAO1gE,EAAIS,KAAMT,EAAa,UAAEC,EAAG,MAAM,CAACA,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,gCAAgC,CAACH,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,MAAM,KAAO,SAAS,GAAGN,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,yCAAyCb,EAAIS,OAAOT,EAAIS,IAC3xC,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,0BAA0B,OAAQb,EAAIk4B,MAAc,SAAEj4B,EAAG,OAAO,CAACG,YAAY,UAAU,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,mCAAmCb,EAAIS,KAAOT,EAAIk4B,MAAMsf,SAAwGx3C,EAAIS,KAAlGR,EAAG,OAAO,CAACG,YAAY,YAAY,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,yCAAkDZ,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAAGJ,EAAIk4B,MAAMsf,SAA2Lx3C,EAAIS,KAArLR,EAAG,YAAY,CAACG,YAAY,cAAcG,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,8BAA8B,WAAa,EAAE,cAAc,YAAYK,GAAG,CAAC,SAAWlB,EAAIshD,cAAwBthD,EAAIk4B,MAAc,SAAEj4B,EAAG,YAAY,CAACG,YAAY,gBAAgBG,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,gCAAgC,WAAa,EAAE,cAAc,cAAcK,GAAG,CAAC,WAAalB,EAAI2gE,gBAAgB3gE,EAAIS,MAAM,GAAGR,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAAGJ,EAAIk4B,MAAMsf,SAAiLx3C,EAAIS,KAA3KR,EAAG,YAAY,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,4BAA4B,WAAa,EAAE,cAAc,UAAUK,GAAG,CAAC,OAASlB,EAAI4tB,aAAsB,IACvuC,EACI,GAAkB,GC8CpB,IACEvsB,KAAM,cACN2G,WAAY,CAAE4V,UAAS,GACvBrW,MAAO,CACL2wB,MAAO,CACLl1B,KAAMkL,OACNzG,QAAS,OAGbhF,QAAS,CACP,UAAA6+C,GACEhmD,KAAKyM,MAAM,SACb,EACA,YAAA44D,GACErlE,KAAKyM,MAAM,UACb,EACA,QAAA6lB,GACEtyB,KAAKyM,MAAM,SACb,IClEoI,MCQtI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI/H,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,eAAe,KAAO,aAAa,UAAW,EAAK,YAAYb,EAAIoK,OAAOC,IAAI,eAAevB,MAAM,CAACvH,MAAOvB,EAAIk4B,MAAU,KAAEnvB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIk4B,MAAO,OAAQlvB,EAAI,EAAEvH,WAAW,iBAAiB,GAAGxB,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,oBAAoB,OAAOZ,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIwC,UAAU,SAAWxC,EAAIm/D,mBAAmBj+D,GAAG,CAAC,OAASlB,EAAIo/D,sBAAsB,KAAKn/D,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,sBAAsB,KAAO,GAAGiI,MAAM,CAACvH,MAAOvB,EAAIk4B,MAAiB,YAAEnvB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIk4B,MAAO,cAAelvB,EAAI,EAAEvH,WAAW,wBAAwB,KAAKxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,uBAAuB,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,MAAQP,EAAIa,GAAG,mBAAmB,KAAO,iBAAiB,MAAQb,EAAIq/D,gBAAgB,UAAW,EAAK,YAAYr/D,EAAIoK,OAAOC,IAAI,mBAAmBvB,MAAM,CAACvH,MAAOvB,EAAIk4B,MAAc,SAAEnvB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIk4B,MAAO,WAAYlvB,EAAI,EAAEvH,WAAW,qBAAqB,KAAKxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAA0B,IAAxBJ,EAAIk4B,MAAME,WAAmBp4B,EAAI4gE,uBAAwB3gE,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,MAAM,CAACA,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,6BAA6B,KAAO,eAAe,MAAQb,EAAI4kB,iBAAiB,UAAW,EAAM,WAAW,IAAI9b,MAAM,CAACvH,MAAOvB,EAAwB,qBAAE+I,SAAS,SAAUC,GAAMhJ,EAAI6gE,qBAAqB73D,CAAG,EAAEvH,WAAW,2BAA2B,KAAKzB,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,iBAAiB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,yBAAyB,aAAab,EAAIa,GAAG,0BAA0BiI,MAAM,CAACvH,MAAOvB,EAAIk4B,MAAoB,eAAEnvB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIk4B,MAAO,iBAAkBlvB,EAAI,EAAEvH,WAAW,2BAA2B,KAAMzB,EAAIs/D,gBAAiBr/D,EAAG,MAAM,CAACA,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,iBAAiB,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,4BAA8BE,WAAW,gCAAgClB,MAAM,CAAC,KAAOP,EAAIa,GAAG,4BAA4B,KAAO,2BAA2B,MAAQb,EAAIk4B,MAAMK,eAAe,UAAW,EAAM,YAAYv4B,EAAIoK,OAAOC,IAAI,6BAA6BnJ,GAAG,CAAC,MAAQlB,EAAIu/D,4BAA4B,OAAOv/D,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,8BAA8B,CAACH,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,SAAS,KAAO,EAAE,MAAQP,EAAIa,GAAG,eAAe,KAAO,gBAAgB,cAAc,aAAaK,GAAG,CAAC,UAAYlB,EAAIwgE,gBAAgB,QACppG,EACI,GAAkB,GCkHtB,6CAYA,4BACA,iBACA,+IACA,OACA,OACA,YACA,eAGA,gBACA,OACA,WACA,aACA,iBACA,4BACA,qBACA,qBAGA,EACA,UACA,4BACA,6CACA,yCACA,IACA,yDAGA,OADA,aACA,CACA,EACA,kCACA,sDACA,GAEA,OACA,mCACA,uBAEA,yEACA,yB,CAEA,GAEA,8BACA,sCACA,wGACA,+HACA,IACA,0HACA,EACA,mBACA,qBACA,yBACA,EACA,SACA,yCACA,IACA,MACA,+CACA,mDACA,oCACA,uBACA,qBACA,0DAEA,2BAEA,G,CACA,SACA,iD,CAEA,EACA,8BACA,gEACA,wBACA,EACA,yBACA,+BACA,EACA,yBACA,WACA,6EACA,qDACA,GACA,EACA,oCACA,kEACA,mDACA,EACA,uBACA,WACA,gDACA,GACA,4BAEA,GACA,KChO0P,MCQtP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIxgE,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,0CAA0CZ,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACJ,EAAI2G,GAAI3G,EAAgB,cAAE,SAAS49B,GAAQ,OAAO39B,EAAG,MAAM,CAACI,IAAIu9B,EAAOh4B,GAAGxF,YAAY,UAAU,CAACH,EAAG,iBAAiB,CAACM,MAAM,CAAC,OAASq9B,GAAQ18B,GAAG,CAAC,OAASlB,EAAI0/B,SAAS,UAAY1/B,EAAI8gE,YAAY,YAAc9gE,EAAIulC,kBAAkB,EAAE,IAAKvlC,EAAIk4B,MAAM6wB,QAAQzlD,OAA0GtD,EAAIS,KAAtGR,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,8BAAuC,KAA8B,IAAxBb,EAAIk4B,MAAME,UAAiBn4B,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,sCAAsCb,EAAIS,KAA8B,IAAxBT,EAAIk4B,MAAME,UAAiBn4B,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,qBAAqB,CAACM,MAAM,CAAC,MAAQP,EAAIk4B,UAAU,KAAKl4B,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,oCAAoCZ,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,iBAAiB,CAACM,MAAM,CAAC,MAAQP,EAAIk4B,UAAU,MAC9wC,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIl4B,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAAEJ,EAAI+gE,YAAc/gE,EAAI+gE,WAAWz9D,OAAQrD,EAAG,MAAM,CAACG,YAAY,wBAAwBJ,EAAI2G,GAAI3G,EAAc,YAAE,SAASR,GAAQ,OAAOS,EAAG,MAAM,CAACI,IAAIb,EAAOwhE,UAAU,CAAwB,IAAtBxhE,EAAOuhE,WAAkB9gE,EAAG,MAAM,CAACG,YAAY,UAAU,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8B,IAAIb,EAAIY,GAAGZ,EAAIihE,cAAczhE,EAAOwhE,WAAW,QAAQhhE,EAAIS,KAA4B,IAAtBjB,EAAOuhE,WAAkB9gE,EAAG,MAAM,CAACG,YAAY,WAAW,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+B,IAAIb,EAAIY,GAAGZ,EAAIihE,cAAczhE,EAAOwhE,WAAW,QAAQhhE,EAAIS,KAA4B,IAAtBjB,EAAOuhE,WAAkB9gE,EAAG,MAAM,CAACG,YAAY,WAAW,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8B,IAAIb,EAAIY,GAAGZ,EAAIihE,cAAczhE,EAAOwhE,WAAW,OAAOhhE,EAAIS,MAAM,IAAG,GAAGT,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,YAAcP,EAAImL,aAAarC,MAAM,CAACvH,MAAOvB,EAAc,WAAE+I,SAAS,SAAUC,GAAMhJ,EAAIgM,WAAWhD,CAAG,EAAEvH,WAAW,iBAAiB,KAAKxB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,uBAAuB,CAACM,MAAM,CAAC,KAAOP,EAAIqkD,WAAW,sBAAsBrkD,EAAIuxD,mBAAmB,YAAYvxD,EAAIkhE,YAAYhgE,GAAG,CAAC,aAAelB,EAAImhE,eAAe,gBAAkBnhE,EAAIohE,kBAAkB,eAAiBphE,EAAIqhE,oBAAoBphE,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAa,UAAEyB,WAAW,cAAcrB,YAAY,WAAW,CAACH,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,MAAM,KAAKA,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAa,UAAEyB,WAAW,cAAcrB,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAOP,EAAImzB,KAAK,KAAOnzB,EAAIkzB,KAAK,MAAQlzB,EAAI0sC,MAAM,cAAc,GAAGxrC,GAAG,CAAC,gBAAkBlB,EAAIsqD,kBAAkB,aAAetqD,EAAI+vC,eAAe,cAAgB/vC,EAAIgwC,gBAAgB,UAAYhwC,EAAIiwC,gBAAgB,KAAKjwC,EAAIM,GAAG,MACx8D,EACI,GAAkB,CAAC,WAAY,IAAIN,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,cAC5J,GCHI,GAAS,WAAkB,IAAIJ,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,MAAM,CAACG,YAAY,SAAS,CAAGJ,EAAIuxD,mBAAmBjuD,OAAwHtD,EAAIS,KAApHR,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,oCAAoC,OAAiBb,EAAIuxD,mBAAyB,OAAEtxD,EAAG,MAAM,CAACG,YAAY,uBAAuBJ,EAAI2G,GAAI3G,EAAsB,oBAAE,SAASo+B,GAAW,OAAOn+B,EAAG,OAAO,CAACI,IAAI+9B,EAAUx4B,GAAGrF,MAAM,CAAC,eAAc,GAAMW,GAAG,CAAC,OAAS,SAASQ,GAAQ,OAAO1B,EAAIshE,sBAAsBljC,EAAU,GAAGt1B,MAAM,CAACvH,MAAO68B,EAAc,KAAEr1B,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAKqjB,EAAW,OAAQp1B,EAAI,EAAEvH,WAAW,mBAAmB,IAAG,GAAGzB,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,OAAO,CAACG,YAAY,gBAAgB,CAAEJ,EAAY,SAAEC,EAAG,WAAWD,EAAIS,MAAM,GAAIT,EAAIuxD,mBAAmBjuD,SAAWtD,EAAIwlC,SAAUvlC,EAAG,YAAY,CAACG,YAAY,8CAA8CG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,wBAAwB,KAAO,gBAAgB,cAAc,kBAAkBK,GAAG,CAAC,eAAiBlB,EAAIqhE,oBAAoBrhE,EAAIS,MAAM,GAAGR,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,cAAcJ,EAAI2G,GAAI3G,EAAQ,MAAE,SAAS5C,GAAM,OAAO6C,EAAG,MAAM,CAACI,IAAIjD,EAAKwI,GAAGxF,YAAY,YAAY,CAACH,EAAG,sBAAsB,CAACM,MAAM,CAAC,UAAYnD,GAAM8D,GAAG,CAAC,aAAelB,EAAImhE,eAAe,gBAAkBnhE,EAAIohE,sBAAsB,EAAE,IAAG,MACz5C,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIphE,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,cAAc,CAACG,YAAY,gBAAgB2C,MAAO/C,EAAiB,iBAAK,GAAGC,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,IAAI,CAACM,MAAM,CAAC,KAAO,MAAM,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIo+B,UAAU/8B,SAASpB,EAAG,OAAO,CAACG,YAAY,WAAW,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI+f,gBAAgB9f,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAA6B,IAA3BJ,EAAIo+B,UAAUl2B,UAAmBlI,EAAIo+B,UAAUmjC,eAA6NvhE,EAAIS,KAAjNR,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,6BAA6B,cAAc,gBAAgBK,GAAG,CAAC,aAAelB,EAAImhE,kBAAuD,IAA3BnhE,EAAIo+B,UAAUl2B,SAAgBjI,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+B,KAAKZ,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,YAAY,GAAGP,EAAIS,KAAiC,IAA3BT,EAAIo+B,UAAUl2B,SAAgBjI,EAAG,MAAM,CAACG,YAAY,eAAe,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,uBAAuB,KAAKZ,EAAG,oBAAoB,CAACG,YAAY,cAAcG,MAAM,CAAC,KAAO,2BAA2B,GAAGP,EAAIS,KAAMT,EAAIo+B,UAAwB,eAAEn+B,EAAG,MAAM,CAACG,YAAY,eAAe,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,0BAA0B,KAAKZ,EAAG,oBAAoB,CAACG,YAAY,cAAcG,MAAM,CAAC,KAAO,2BAA2B,GAAGP,EAAIS,MAAM,IAC93C,EACI,GAAkB,GC0CpB,IACEY,KAAM,sBACN2G,WAAY,CAAE4V,UAAS,cAAa,IACpCrW,MAAO,CACL62B,UAAW,CACTp7B,KAAMkL,OACNtG,UAAU,IAGd,IAAAzF,GACE,MAAO,CAEP,CACF,EACAG,SAAU,CACR,OAAAyd,GACE,IAAI1b,EAAO/I,KACPykB,EAAU/iB,EAAEO,KAAKjC,KAAK8G,OAAOlF,MAAMgU,UAAWpS,GACzCA,EAAE8G,KAAOvB,EAAK+5B,UAAUmX,YAGjC,OAAOx1B,EAAUA,EAAQ1e,KAAO,EAClC,EACAqzC,cAAe,WACb,IAAI2U,EAAO/tD,KAAK8iC,UAAUlH,SAAW57B,KAAK8iC,UAAUlH,SAAW,GAC/D,MAAO,mBAAqBmyB,EAAO,gEACrC,GAEF5mD,QAAS,CACP0+D,eAAgB,WACd7lE,KAAKyM,MAAM,eAAgBzM,KAAK8iC,UAClC,EACAgjC,kBAAmB,WACjB9lE,KAAKyM,MAAM,kBAAmBzM,KAAK8iC,UACrC,IC9EmJ,MCQrJ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCyC9B,IACE/8B,KAAM,sBACN2G,WAAY,CAAEw5D,oBAAmB,aAAW,OAAM,WAAS,IAC3Dj6D,MAAO,CACL0T,KAAM,CACJjY,KAAMtF,MACN+J,QAAS,IAAM,IAEjB8pD,mBAAoB,CAClBvuD,KAAMtF,MACN+J,QAAS,IAAM,IAEjB+9B,SAAU,CACRxiC,KAAM4H,QACNnD,SAAS,IAGbhF,QAAS,CACP,cAAA0+D,CAAgB/iC,GACd9iC,KAAKyM,MAAM,eAAgBq2B,EAC7B,EACA,iBAAAgjC,CAAmBhjC,GACjB9iC,KAAKyM,MAAM,kBAAmBq2B,EAChC,EACA,gBAAAijC,GACE/lE,KAAKyM,MAAM,iBAAkBzM,KAAKi2D,mBACpC,EACA,qBAAA+P,CAAuBljC,GACrB9iC,KAAKyM,MAAM,kBAAmBq2B,EAChC,ICzFmJ,MCQrJ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC2H9B,IACE/8B,KAAM,iBACN2G,WAAY,CAAE40D,UAAS,wBAAsB,SAAO,WAAS,IAC7Dr1D,MAAO,CACL2wB,MAAO,CACLl1B,KAAMkL,OACNtG,UAAU,IAGd,IAAAzF,GACE,MAAO,CACLa,KAAM,WACNmI,YAAa7P,KAAKuF,GAAG,oCACrBmL,WAAY,GACZ+C,OAAQ,GACR0yD,SAAU,GACVtuC,KAAM,EACND,KAAM,GACNwZ,MAAO,EACPtO,UAAW,CACTsjC,UAAW,GACXt5D,UAAW,IAEbi8C,WAAY,GACZkN,mBAAoB,GACpBtlB,WAAW,EACXi1B,YAAY,EACZH,WAAY,GAEhB,EACAz+D,SAAU,CACR,SAAAq/D,GACE,OAAOrmE,KAAKoxC,MAAQpxC,KAAK43B,IAC3B,EACAwhB,cAAe,WACb,IAAI2U,EAAQ/tD,KAAK8G,OAAOlF,MAAM2H,SAAWvJ,KAAK8G,OAAOlF,MAAM2H,QAAQqyB,SAAY57B,KAAK8G,OAAOlF,MAAM2H,QAAQqyB,SAAW,GACpH,MAAO,mBAAqBmyB,EAAO,gEACrC,GAEF7/C,MAAO,CACL,UAAAwC,GACE1Q,KAAK63B,KAAO,EACZ73B,KAAK6zC,UACP,EACA,KAAAjX,CAAO0pC,EAASl4D,GACdpO,KAAK6zC,UACP,GAEF,OAAArnC,GACExM,KAAK6zC,WACL7zC,KAAKkiB,KAAKiB,IAAI,uBAAwBnjB,KAAKumE,eAC3CvmE,KAAKkiB,KAAKiB,IAAI,sBAAuBnjB,KAAKwmE,uBAC1CxmE,KAAKkiB,KAAKiB,IAAI,4BAA6BnjB,KAAKymE,2BAChDzmE,KAAKkiB,KAAKiB,IAAI,yBAA0BnjB,KAAK0mE,uBAC/C,EACArjD,cAAe,WACbrjB,KAAKkiB,KAAKqB,KAAK,wBACfvjB,KAAKkiB,KAAKqB,KAAK,uBACfvjB,KAAKkiB,KAAKqB,KAAK,6BACfvjB,KAAKkiB,KAAKqB,KAAK,yBACjB,EACApc,QAAS,CACP,iBAAA6nD,CAAmBO,GACjBvvD,KAAK43B,KAAO23B,EACZvvD,KAAK68D,eACP,EACA,cAAApoB,CAAgB5vB,GACd7kB,KAAK63B,KAAOhT,EAAKgT,KACjB73B,KAAK6zC,UACP,EACA,eAAAa,GACE10C,KAAK63B,MAAQ73B,KAAK43B,KAClB53B,KAAK6zC,UACP,EACA,WAAAc,GACE30C,KAAK63B,MAAQ73B,KAAK43B,KAClB53B,KAAK6zC,UACP,EACA,cAAAgyB,CAAgB/iC,GACd,IAAI6jC,EAAoBjlE,EAAEO,KAAKjC,KAAK+oD,YAAY,SAAU0K,GACxD,OAAOA,EAAEnpD,KAAOw4B,EAAUx4B,EAC5B,IACAq8D,EAAkB/5D,SAAW,EAC7B5M,KAAKyf,KAAKzf,KAAKi2D,mBAAoBj2D,KAAKi2D,mBAAmBjuD,OAAQ2+D,EACrE,EACA,iBAAAb,CAAmBhjC,GACjB,IAAI6jC,EAAoBjlE,EAAEO,KAAKjC,KAAK+oD,YAAY,SAAU0K,GACxD,OAAOA,EAAEnpD,KAAOw4B,EAAUx4B,EAC5B,IAEIq8D,IAAmBA,EAAkB/5D,SAAW,GACpD,IAAIrB,EAAQ7J,EAAEC,UAAU3B,KAAKi2D,oBAAoB,SAAUxC,GACzD,OAAOA,EAAEnpD,KAAOw4B,EAAUx4B,EAC5B,IACAtK,KAAK0K,QAAQ1K,KAAKi2D,mBAAoB1qD,EACxC,EACAw6D,iBAAkB,WAChB,GAAI/lE,KAAK4lE,WACP,OAEF5lE,KAAK4lE,YAAa,EAClB5lE,KAAKylE,WAAa,GAElB,MAAM18D,EAAO/I,KACb,IAAIigE,EAAU,CACZlP,SAAU/wD,KAAK48B,MAAMtyB,GACrB0mD,SAAUhxD,KAAKi2D,mBACf2Q,SAAU5mE,KAAK48B,MAAM72B,MAGnB0P,EAAM,GACmB,IAAzBzV,KAAK48B,MAAME,UACbrnB,EAAMzV,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAa2kE,uBAAuB,IAErG5G,EAAU,CACRlP,SAAU/wD,KAAK48B,MAAMtyB,GACrB0mD,SAAUtvD,EAAEoZ,IAAI9a,KAAKi2D,oBAAoB,SAAU5xD,GACjD,OAAOA,EAAEiG,EACX,KAGFmL,EAAMzV,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAa4kE,gBAAgB,IAGhG9mE,KAAKgJ,MAAMw1C,IAAI/oC,EAAKwqD,GAAS18D,MAAKC,IAChCA,EAAEE,KAAKwU,SAAQ7T,IACbrE,KAAKylE,WAAW9kE,KAAK0D,EAAC,IAExB0E,EAAKktD,mBAAqB,GAC1BltD,EAAK68D,YAAa,EAClB78D,EAAKmZ,KAAKzV,MAAM,aAGhBgyC,YAAW,KACTz+C,KAAKylE,WAAa,EAAC,GAClB,IAAI,IACNjxC,IACD5wB,QAAQC,IAAI,OAAQ2wB,GACpBzrB,EAAK68D,YAAa,IAEtB,EACA,QAAA/xB,GACE,IAAI9qC,EAAO/I,KACX+I,EAAK4nC,WAAY,EACjB,IAAIxvC,EAAMnB,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAa6kE,oBAAoB,GACnG18D,QAAQ,WAAYrK,KAAK0Q,YACzBrG,QAAQ,SAAUrK,KAAK63B,MACvBxtB,QAAQ,SAAUrK,KAAK43B,MAE1B53B,KAAKgJ,MAAM3F,IAAIlC,GAAKoC,MAAKuvB,IACvB9yB,KAAKoxC,MAAQte,EAAOpvB,KAAK0tC,MACzBpxC,KAAK+oD,WAAarnD,EAAEoZ,IAAIgY,EAAOpvB,KAAKytB,SAAS,SAAUrvB,GACrD,MAAO,CACLwI,GAAIxI,EAAKwI,GACTvE,KAAM,GAAGjE,EAAKiX,aAAajX,EAAKgX,YAChCmhC,UAAWn4C,EAAKm4C,UAChBhgC,IAAKnY,EAAKmY,IACV2hB,SAAU95B,EAAK85B,SACfhvB,SAAU7D,EAAKi+D,eAAellE,EAAKwI,IACnC27D,eAAgBl9D,EAAKk+D,iBAAiBnlE,EAAKwI,IAC3C0O,MAAOlX,EAAKkX,MAEhB,IAEAhZ,KAAK2wC,WAAY,IAErB,EACA41B,cAAe,WACb,MAAMx9D,EAAO/I,KACbA,KAAK+oD,WAAW7wC,SAAQ,SAAU7T,GAChCA,EAAEuI,SAAW7D,EAAKi+D,eAAe3iE,EAAEiG,IACnCjG,EAAE4hE,eAAiBl9D,EAAKk+D,iBAAiB5iE,EAAEiG,GAC7C,GACF,EACA,cAAA08D,CAAgB18D,GACd,OAAI5I,EAAEC,UAAU3B,KAAK48B,MAAM6wB,SAAS,SAAU3rD,GAC5C,OAAOA,EAAKwI,KAAOA,CACrB,KAAM,EAAY,EAEd5I,EAAEC,UAAU3B,KAAKi2D,oBAAoB,SAAUn0D,GACjD,OAAOA,EAAKwI,KAAOA,CACrB,KAAM,EACG,EAGF,CACT,EACA,gBAAA28D,CAAkB38D,GAChB,OAAI5I,EAAEC,UAAU3B,KAAK48B,MAAMsqC,gBAAgB,SAAUplE,GACnD,OAAOA,EAAKwI,KAAOA,CACrB,KAAM,EAAY,EAEX,CACT,EACA,qBAAAk8D,CAAuB1jC,GACrB9iC,KAAKylE,WAAa,GAClB,IAAIkB,EAAoBjlE,EAAEO,KAAKjC,KAAK+oD,YAAY,SAAU0K,GACxD,OAAOA,EAAEnpD,KAAOw4B,EAAUx4B,EAC5B,IACIq8D,IACFA,EAAkB/5D,SAAW,EAC7B+5D,EAAkBV,eAAiB,GAErCjmE,KAAK48B,MAAM6wB,QAAQ9sD,KAAKmiC,EAC1B,EACA,yBAAA2jC,CAA2B3jC,GACzB9iC,KAAKylE,WAAa,GAClB,IAAIkB,EAAoBjlE,EAAEO,KAAKjC,KAAK+oD,YAAY,SAAU0K,GACxD,OAAOA,EAAEnpD,KAAOw4B,EAAUx4B,EAC5B,IACIq8D,IACFA,EAAkB/5D,SAAW,EAC7B+5D,EAAkBV,eAAiB,GAGrC,MAAMl9D,EAAO/I,KACb0B,EAAEO,KAAKjC,KAAK48B,MAAM6wB,SAAS,SAAUgG,EAAGloD,GAClCkoD,EAAEnpD,KAAOw4B,EAAUx4B,IACrBvB,EAAK6zB,MAAM6wB,QAAQj/C,OAAOjD,EAAO,EAErC,GACF,EACA,sBAAAm7D,GACE1mE,KAAKylE,WAAa,EACpB,EACA,aAAAE,CAAer7D,GACb,IAAIg4B,EAAStiC,KAAK+oD,WAAW9mD,MAAKoC,GAAKA,EAAEiG,KAAOA,IAChD,OAAIg4B,EAAe,GAAGA,EAAOv8B,OACtB,EACT,ICnXuI,MCQzI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIrB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAAEJ,EAAIk4B,MAAMsqC,gBAAsD,IAApCxiE,EAAIk4B,MAAMsqC,eAAel/D,OAAcrD,EAAG,IAAI,CAACD,EAAIQ,GAAG,2BAA2BR,EAAIS,KAAKT,EAAI2G,GAAI3G,EAAIk4B,MAAoB,gBAAE,SAAS0F,GAAQ,OAAO39B,EAAG,MAAM,CAACI,IAAIu9B,EAAOh4B,GAAGxF,YAAY,mBAAmB,CAACH,EAAG,gBAAgB,CAACM,MAAM,CAAC,OAASq9B,EAAO,WAAW59B,EAAIk4B,MAAMtyB,GAAG,aAAa5F,EAAIk4B,MAAM72B,SAAS,EAAE,KAAI,IAC3e,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIrB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,cAAc,CAACG,YAAY,gBAAgB2C,MAAO/C,EAAiB,iBAAK,GAAGC,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,IAAI,CAACM,MAAM,CAAC,KAAO,MAAM,CAACP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI49B,OAAOvpB,UAAU,KAAKrU,EAAIY,GAAGZ,EAAI49B,OAAOxpB,cAAcnU,EAAG,OAAO,CAACG,YAAY,WAAW,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI+f,QAAQ/f,EAAI49B,OAAO2X,mBAAmBt1C,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAAEJ,EAAI49B,OAAuB,iBAAE39B,EAAG,MAAM,CAACG,YAAY,eAAe,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,0BAA0B,KAAKZ,EAAG,oBAAoB,CAACG,YAAY,cAAcG,MAAM,CAAC,KAAO,2BAA2B,GAAGP,EAAIS,KAAOT,EAAIkhE,YAAelhE,EAAIyiE,OAAUziE,EAAI49B,OAAO8kC,iBAA2O1iE,EAAIS,KAA7NR,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,oCAAoC,cAAc,gBAAgBK,GAAG,CAAC,aAAelB,EAAI2iE,uBAAkC3iE,EAAIkhE,YAAelhE,EAAIyiE,MAAsNziE,EAAIS,KAAnNR,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,iBAAiB,cAAc,mBAAmBK,GAAG,CAAC,gBAAkBlB,EAAIgiE,2BAAqChiE,EAAIkhE,YAAclhE,EAAIyiE,MAAOxiE,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,0CAA0C,cAAc,aAAaK,GAAG,CAAC,UAAYlB,EAAI4iE,oBAAoB5iE,EAAIS,MAAOT,EAAIkhE,YAAclhE,EAAIyiE,MAAOxiE,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+B,KAAKZ,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,YAAY,GAAGP,EAAIS,KAAMT,EAAc,WAAEC,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,KAAKD,EAAIS,MAAM,MACn3D,EACI,GAAkB,GC2DpB,IACEY,KAAM,gBACN2G,WAAY,CAAE4V,UAAS,cAAa,WAAS,IAC7CrW,MAAO,CACLq2B,OAAQ,CACN56B,KAAMkL,OACNzG,QAAS,MAEXqvB,QAAS,CACP9zB,KAAM2E,OACNF,QAAS,GAEX2xD,UAAW,CACTp2D,KAAMwE,OACNC,QAAS,KAGb,IAAAtF,GACE,MAAO,CACL++D,YAAY,EACZuB,OAAO,EAEX,EACAngE,SAAU,CACRoyC,cAAe,WACb,IAAI2U,EAAO/tD,KAAKsiC,OAAO1G,SAAW57B,KAAKsiC,OAAO1G,SAAW,GACzD,MAAO,mBAAqBmyB,EAAO,gEACrC,GAEF5mD,QAAS,CACP,gBAAAmgE,GACE,MAAMv+D,EAAO/I,KACPigE,EAAU,CAAElP,SAAU/wD,KAAKw7B,QAASw1B,SAAU,CAAChxD,KAAKsiC,OAAOh4B,KAC3DmL,EAAMzV,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAaqlE,gBAAgB,GACpGvnE,KAAKgJ,MAAMuB,KAAKkL,EAAKwqD,GAAS18D,MAAKC,IACjC,MAAMrC,EAAM,GAAGnB,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAa2kE,uBAAuB,KACxG75B,EAAgB,CACpB1iC,GAAItK,KAAKsiC,OAAOh4B,GAChBvE,KAAM/F,KAAK8G,OAAOlF,MAAM2H,QAAQuP,UAAY,IAAM9Y,KAAK8G,OAAOlF,MAAM2H,QAAQwP,SAC5EkhC,UAAWj6C,KAAKsiC,OAAO2X,WAEnButB,GAAoB,EACpBC,EAAoB,CACxB1W,SAAU/wD,KAAKw7B,QACfw1B,SAAU,CAAChkB,GACX45B,SAAU5mE,KAAK89D,UACf4J,SAAUF,GAEZxnE,KAAKgJ,MAAMw1C,IAAIr9C,EAAKsmE,GAAmBlkE,MAAM0F,IAC3CF,EAAKo+D,OAAQ,EACbp+D,EAAKmZ,KAAKzV,MAAM,4BAA6B1D,EAAKu5B,OAAM,GACzD,GAEL,EACA+kC,oBAAqB,WACnB,GAAIrnE,KAAK4lE,WACP,OAEF5lE,KAAK4lE,YAAa,EAElB,MAAM78D,EAAO/I,KACPigE,EAAU,CACdlP,SAAU/wD,KAAKw7B,QACfw1B,SAAU,CAAChxD,KAAKsiC,OAAOh4B,KAGnBmL,EAAMzV,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAa4kE,gBAAgB,GACpG9mE,KAAKgJ,MAAMw1C,IAAI/oC,EAAKwqD,GAAS18D,MAAKC,IAChCuF,EAAK68D,YAAa,EAClB78D,EAAKo+D,OAAQ,EACbp+D,EAAKmZ,KAAKzV,MAAM,sBAAuBzM,KAAKsiC,OAAM,IACjD9N,IACDzrB,EAAK68D,YAAa,IAEtB,EACAc,uBAAwB,WACtB,GAAI1mE,KAAK4lE,WACP,OAEF5lE,KAAK4lE,YAAa,EAElB,MAAM78D,EAAO/I,KACPigE,EAAU,CACdlP,SAAU/wD,KAAKw7B,QACfw1B,SAAUhxD,KAAKsiC,OAAOh4B,IAGlBmL,EAAMzV,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAaylE,0BAA0B,GAC9G3nE,KAAKgJ,MAAMuB,KAAKkL,EAAKwqD,GAAS18D,MAAKC,IACjCuF,EAAK68D,YAAa,EAClB78D,EAAKmZ,KAAKzV,MAAM,yBAA0BzM,KAAKsiC,QAC/Cv5B,EAAKmZ,KAAKzV,MAAM,uBAAwBwzD,EAAO,IAC9CzrC,IACDzrB,EAAK68D,YAAa,IAEtB,EACA,OAAAnhD,CAASw1B,GACP,IAAIx1B,EAAU/iB,EAAEO,KAAKjC,KAAK8G,OAAOlF,MAAMgU,UAAWpS,GACzCA,EAAE8G,KAAO2vC,IAGlB,OAAOx1B,EAAUA,EAAQ1e,KAAO,EAClC,ICnK0I,MCQ5I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCK9B,IACEA,KAAM,sBACN2G,WAAY,CAAEk7D,cAAa,IAC3B37D,MAAO,CACL2wB,MAAO,CACLl1B,KAAMkL,OACNzG,QAAS,KAAe,CAAC,KAG7B,OAAAK,GACExM,KAAKkiB,KAAKiB,IAAI,yBAA0BnjB,KAAK0mE,uBAC/C,EACArjD,cAAe,WACbrjB,KAAKkiB,KAAKqB,KAAK,yBACjB,EACApc,QAAS,CACP,sBAAAu/D,CAAwB5jC,GACtB,MAAM/5B,EAAO/I,KACb0B,EAAEO,KAAKjC,KAAK48B,MAAMsqC,gBAAgB,SAAUzT,EAAGloD,GACzCkoD,GAAKA,EAAEnpD,KAAOw4B,EAAUx4B,IAC1BvB,EAAK6zB,MAAMsqC,eAAe14D,OAAOjD,EAAO,EAE5C,GACF,IC/C2I,MCQ7I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI7G,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,cAAc,CAACG,YAAY,gBAAgB2C,MAAO/C,EAAiB,iBAAK,GAAGC,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,OAAO,CAACG,YAAY,QAAQ,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI49B,OAAOvpB,UAAU,KAAKrU,EAAIY,GAAGZ,EAAI49B,OAAOxpB,cAAepU,EAAI49B,OAAc,QAAE39B,EAAG,OAAO,CAACG,YAAY,WAAW,CAACH,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,WAAW,GAAGP,EAAIS,KAAKR,EAAG,OAAO,CAACG,YAAY,WAAW,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI+f,gBAAgB9f,EAAG,MAAM,CAACG,YAAY,sCAAsC,CAAGJ,EAAI49B,OAAOorB,QAA4MhpD,EAAIS,KAAvMR,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,4BAA4B,cAAc,aAAaK,GAAG,CAAC,UAAYlB,EAAI8gE,eAAyB9gE,EAAI49B,OAAc,QAAE39B,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,8BAA8B,cAAc,eAAeK,GAAG,CAAC,YAAclB,EAAIulC,iBAAiBvlC,EAAIS,KAAKR,EAAG,YAAY,CAACG,YAAY,oCAAoCG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,6BAA6B,cAAc,mBAAmBK,GAAG,CAAC,gBAAkBlB,EAAI0/B,aAAa,IACxzC,EACI,GAAkB,GCgFpB,IACEr+B,KAAM,sBACN2G,WAAY,CAAE4V,UAAS,cAAa,IACpC5P,OAAQ,CAAC,IACTzG,MAAO,CACLq2B,OAAQ,CACN56B,KAAMkL,OACNzG,QAAS,OAGbtF,KAAM,WACJ,MAAO,CACL++D,YAAY,EAEhB,EACA5+D,SAAU,CACR,GAAAiT,GACE,OAAOja,KAAK6gB,aAAa7gB,KAAKsiC,OAAOroB,IACvC,EACA,OAAAwK,GACE,IAAI1b,EAAO/I,KACPykB,EAAU/iB,EAAEO,KAAKjC,KAAK8G,OAAOlF,MAAMgU,UAAWpS,GACzCA,EAAE8G,KAAOvB,EAAKu5B,OAAO2X,YAG9B,OAAOx1B,EAAUA,EAAQ1e,KAAO,EAClC,EACA,aAAAqzC,GACE,IAAI2U,EAAQ/tD,KAAK8G,OAAOlF,MAAM2H,SAAWvJ,KAAK8G,OAAOlF,MAAM2H,QAAQqyB,SAAY57B,KAAK8G,OAAOlF,MAAM2H,QAAQqyB,SAAW,GACpH,MAAO,mBAAqBmyB,EAAO,gEACrC,GAEF5mD,QAAS,CACP,WAAAq+D,GACExlE,KAAKyM,MAAM,YAAazM,KAAKsiC,OAC/B,EACA,aAAA2H,GACEjqC,KAAKyM,MAAM,cAAezM,KAAKsiC,OACjC,EACA,QAAA8B,GACMpkC,KAAK4lE,aAGT5lE,KAAK4lE,YAAa,EAClB5lE,KAAKyM,MAAM,SAAUzM,KAAKsiC,OAAQtiC,MACpC,IC/H4I,MCQ9I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC4B9B,IACE+F,KAAM,eACN2G,WAAY,CAAEm7D,eAAc,sBAAoB,kBAAgB,IAChE57D,MAAO,CACL2wB,MAAO,CACLl1B,KAAMkL,OACNzG,QAAS,OAGbnF,SAAU,CACR,YAAA8gE,GACE,OAAOpmE,EAAEgI,OAAO1J,KAAK48B,MAAM6wB,SAAUsa,GAC5BA,EAAEjvD,WAEb,GAEF3R,QAAS,CACP,WAAAq+D,CAAaljC,GACXtiC,KAAKyM,MAAM,iBAAkB61B,EAC/B,EACA,aAAA2H,CAAe3H,GACbtiC,KAAKyM,MAAM,mBAAoB61B,EACjC,EACA,QAAA8B,CAAU9B,EAAQqY,GAChB,MAAM5xC,EAAO/I,KACPigE,EAAU,CAAElP,SAAU/wD,KAAK48B,MAAMtyB,GAAI0mD,SAAU,CAAC1uB,EAAOh4B,KACvDmL,EAAMzV,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAaqlE,gBAAgB,GACpGvnE,KAAKgJ,MAAMuB,KAAKkL,EAAKwqD,GAAS18D,MAAKC,IACjCuF,EAAK2B,QAAQ3B,EAAK6zB,MAAM6wB,QAAS1kD,EAAKi/D,gBAAgB1lC,IACtDv5B,EAAKmZ,KAAKzV,MAAM,uBAAwBwzD,GACxCtlB,EAAGirB,YAAa,KACfpxC,IACDmmB,EAAGirB,YAAa,IAEpB,EACA,eAAAoC,CAAiB1lC,GACf,OAAO5gC,EAAEC,UAAU3B,KAAK48B,MAAM6wB,SAAS,SAAUsa,GAC/C,OAAOA,EAAEz9D,KAAOg4B,EAAOh4B,EACzB,GACF,ICtFqI,MCQvI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC8BhC,wBAEA,mBACA,yDACA,gBACA,OACA,mBACA,aACA,aAEA,EACA,UACA,uCAEA,2DAKA,GAEA,OACA,yBACA,iCACA,EACA,mBAEA,kBACA,wBAEA,GAEA,mBACA,iBAGA,yCACA,EACA,yBAEA,2BACA,EACA,SACA,+BAGA,sGAEA,sKAEA,yKAGA,oBACA,gBAIA,EACA,mBACA,uBACA,SAEA,WAGA,YAEA,IAFA,+CACA,yDACA,GACA,EACA,uCAEA,kDACA,0BACA,GACA,EACA,gBACA,mBACA,EACA,mBAEA,OACA,QACA,YACA,0BACA,sBACA,gCACA,4BAEA,qCACA,WACA,IACA,gCACA,oBACA,sBACA,oBAEA,EACA,wCACA,OACA,uFACA,GACA,qCACA,2BACA,gBAEA,sCACA,aACA,GACA,EACA,0CACA,OACA,yFACA,GACA,qCACA,2BACA,gBAEA,sCACA,aACA,GACA,EACA,wBACA,wCACA,uCACA,GACA,EACA,yBACA,+BACA,qCACA,EACA,0BACA,WACA,+BACA,oCACA,uEACA,oBACA,oDAEA,GACA,EACA,yBACA,WACA,6BACA,8BACA,kIACA,uCACA,EACA,qDAEA,qDAEA,GACA,EACA,qBAEA,4BACA,OACA,sHACA,oCACA,sBACA,gBACA,oBACA,eAEA,GACA,EACA,wB,4BAAA,oB,6CACA,gF,qEAIA,O,sBAFA,kGACA,iBACA,wB,cAAA,WAEA,KAEA,0DAGA,+CAGA,GACA,iBAGA,I,+BAEA,wCAGA,mDACA,K,4CCj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CA,KACA,EACA,EACA,CACA,SACA,wCAIA,MACA,aACA,WACA,0BACA,mBAEA,IACA,YACA,sDACA,mCAEA,qDAGA,4CACA,GAEA,KCrGkQ,MCQ9P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QC4BhC,wBACA,kBACA,yBACA,OACA,WACA,YACA,aAEA,QACA,YACA,YAEA,QACA,YACA,aAGA,gBACA,OACA,YACA,WACA,iBACA,sBACA,eACA,eACA,wBAEA,EACA,mBACA,uBACA,EACA,SAEA,uCACA,EACA,0CACA,4CACA,2BAEA,mCACA,2BAEA,iEACA,gEAEA,wBACA,aACA,WACA,mHACA,OACA,WACA,8EACA,+EAEA,MAEA,WACA,aAEA,IACA,YACA,wCAEA,4CACA,GAEA,EACA,+BACA,8CACA,2BACA,2BACA,6BACA,8DAEA,EACA,gCACA,mDACA,iDACA,mCACA,sCACA,0BACA,0DACA,EACA,mCACA,aACA,uBACA,0BACA,2BACA,6BACA,8DAEA,MACA,0CACA,8CACA,2DAEA,qBACA,MACA,aACA,UACA,sBAEA,WACA,aAEA,IACA,YAEA,4CACA,G,CAGA,EACA,qCACA,aACA,uBACA,2BACA,6BACA,8DAEA,MACA,0CACA,gDACA,2DAEA,kBACA,sBACA,MACA,YACA,cAEA,wBACA,yEACA,8BACA,SACA,sCACA,6BACA,UACA,4B,EAGA,WACA,aAEA,IACA,YAEA,4CACA,G,CAEA,EACA,yBACA,6DACA,KCxMoQ,MCQhQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCuBhC,wBACA,qBACA,kDACA,OACA,SACA,YACA,aAEA,SACA,YACA,+CACA,aAEA,IACA,YACA,cAGA,gBACA,OACA,oBACA,qBACA,WACA,8SAEA,EACA,UACA,kBACA,gBACA,4BACA,mBACA,2BACA,mBACA,QACA,SAEA,GAEA,SACA,yBACA,0BACA,EACA,8B,uHAMA,O,sBAJA,EACA,+CACA,mDACA,gBACA,uCACA,YAEA,K,cAHA,S,+BAKA,kD,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,UACzC,EACAiqC,iBAAkB,WAChB/sE,KAAKkiB,KAAKzV,MAAM,mBAAoBzM,KAAK8iC,UAC3C,IClMuI,MCQzI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCC9B,IACE/8B,KAAM,gBACN2G,WAAY,CAAEk7B,QAAO,iBAAe,IACpC37B,MAAO,CACL0T,KAAM,CACJjY,KAAMtF,MACN+J,QAAS,IAAM,IAEjBuhD,QAAS,CACPhmD,KAAM4H,QACNnD,SAAS,GAEXwkC,UAAW,CACTjpC,KAAM4H,QACNnD,SAAS,GAEXygE,gBAAiB,CACfllE,KAAM4H,QACNnD,SAAS,IAGbnF,SAAU,CACR,WAAAsmE,GACE,OAAO5rE,EAAE4f,QAAQthB,KAAK2f,KAAM,CAACmjB,GAAaA,EAAUhqB,UAAU3Y,eAChE,GAEFgH,QAAS,CACP,QAAAi9B,CAAUtB,GACR9iC,KAAKyM,MAAM,SAAUq2B,EACvB,ICjDsI,MCQxI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QC4GhC,6CAYA,4BACA,aACA,wEACA,YACA,gBACA,OACA,aACA,YACA,aACA,oBACA,gBACA,eAEA,EACA,UACA,yB,MACA,4BACA,kFACA,EACA,oBACA,eACA,SAEA,+BAMA,OALA,gBACA,oBACA,OAGA,CACA,EACA,sBACA,uCAGA,yCACA,oBAJA,EAQA,EACA,oBAEA,8DACA,EACA,oB,MAEA,6FACA,EACA,oBACA,eACA,SAEA,WACA,YAEA,IAFA,wCACA,8CACA,GACA,EACA,2BACA,eACA,SAEA,WACA,YAEA,IAFA,+CACA,8CACA,GACA,EACA,yB,MACA,iEACA,EACA,2B,MACA,uEACA,EACA,+BAGA,sGAEA,8IAEA,iJAGA,YACA,mBAIA,GAEA,8BACA,6CACA,wIACA,oCACA,sBACA,aACA,IACA,oDACA,uDACA,EACA,yBACA,qDACA,wDACA,EACA,SACA,qB,MAEA,OADA,oHACA,CACA,EACA,sCACA,YAGA,iEACA,uBACA,qCACA,mBACA,IAEA,EACA,oCACA,aAGA,4BACA,EACA,sCACA,eAGA,8FACA,GACA,gCACA,sBACA,gBAEA,sCACA,aACA,G,CACA,EACA,wCACA,eAGA,gGACA,GACA,gCACA,sBACA,gBAEA,sCACA,aACA,G,CACA,EACA,0B,MACA,yGACA,EACA,kC,EAAA,OACA,2EACA,2FACA,uCACA,aACA,GACA,EACA,sCACA,eAGA,6IACA,uBAEA,6CACA,kBACA,wBACA,G,CACA,EACA,uCACA,eAGA,wJACA,yCACA,aACA,G,CACA,EACA,sCACA,aAGA,uBACA,iBACA,qCACA,aACA,IACA,EACA,wCACA,aAGA,uBACA,iBACA,qCACA,aACA,IACA,EACA,gCACA,wBAEA,iCAGA,kBACA,SAKA,EAHA,yCAGA,kHAEA,uHAEA,oCACA,eAEA,mCACA,eAIA,uDACA,kBACA,GACA,gBACA,eAEA,6DACA,6CAEA,eAEA,iBAEA,GAEA,4CAGA,GACA,EACA,uBACA,eACA,oDAEA,wBACA,kDAEA,sGACA,GACA,iBACA,qBACA,mCACA,+BACA,+CACA,WACA,IACA,yCACA,8BAEA,0BACA,EACA,mB,MACA,kGACA,KC3ZsP,MCQlP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIp+B,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,gBAAgB,SAAWb,EAAIa,GAAG,sBAAsBZ,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,sBAAsB,CAACiB,GAAG,CAAC,OAASlB,EAAIoqD,4BAA4B,SAASnqD,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,gBAAgB,CAACM,MAAM,CAAC,iBAAmB,GAAG,MAAQP,EAAI0sC,MAAM,KAAO1sC,EAAImzB,KAAK,KAAOnzB,EAAIkzB,MAAMhyB,GAAG,CAAC,gBAAkBlB,EAAIsqD,sBAAsB,GAAGrqD,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAI6jE,QAAU7jE,EAAI6jE,OAAOvgE,OAAS,IAAMtD,EAAI60B,cAAe50B,EAAG,MAAM,CAACA,EAAG,YAAY,CAACM,MAAM,CAAC,KAAOP,EAAI6jE,OAAO,UAAW,MAAS,GAAG7jE,EAAIS,KAAQT,EAAI6jE,QAAgC,IAAtB7jE,EAAI6jE,OAAOvgE,QAAkBtD,EAAI60B,cAA8G70B,EAAIS,KAAnGR,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,0BAAoCb,EAAiB,cAAEC,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,YAAY,GAAGD,EAAIS,WAAWR,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAOP,EAAIkzB,KAAK,KAAOlzB,EAAImzB,KAAK,MAAQnzB,EAAI0sC,MAAM,cAAc1sC,EAAI4xC,WAAW,UAAU,IAAI,mBAAoB,GAAO1wC,GAAG,CAAC,aAAelB,EAAI0qD,WAAW,cAAgB1qD,EAAI2qD,cAAc,UAAY3qD,EAAI4qD,cAAc,MAAM,EACt8C,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAI5qD,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACA,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIuD,OAAO,OAAOtD,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwB,OAAOZ,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAAC6B,MAAM,CAAE,iBAAiB,EAAM,kBAAkB,IAAQ,CAAC7B,EAAG,QAAQ,CAACmB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOvB,EAAc,WAAEyB,WAAW,eAAerB,YAAY,eAAeG,MAAM,CAAC,SAAW,KAAK2I,SAAS,CAAC,MAASlJ,EAAc,YAAGkB,GAAG,CAAC,MAAQ,SAASQ,GAAWA,EAAOoK,OAAOC,YAAiB/L,EAAI6oE,WAAWnnE,EAAOoK,OAAOvK,MAAK,WAAWtB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwB,OAAOZ,EAAG,mBAAmB,CAACM,MAAM,CAAC,MAAQP,EAAImpB,YAAYjoB,GAAG,CAAC,OAASlB,EAAI8oE,qBAAqBhgE,MAAM,CAACvH,MAAOvB,EAAIovD,eAAyB,WAAErmD,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIovD,eAAgB,aAAcpmD,EAAI,EAAEvH,WAAW,gCAAgC,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,2BAA2B,OAAOZ,EAAG,mBAAmB,CAACM,MAAM,CAAC,MAAQP,EAAI+oE,gBAAgB7nE,GAAG,CAAC,OAASlB,EAAIo/D,mBAAmBt2D,MAAM,CAACvH,MAAOvB,EAAIovD,eAAwB,UAAErmD,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIovD,eAAgB,YAAapmD,EAAI,EAAEvH,WAAW,+BAA+B,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwB,OAAOZ,EAAG,mBAAmB,CAACM,MAAM,CAAC,MAAQP,EAAIgpE,YAAY9nE,GAAG,CAAC,OAASlB,EAAIipE,qBAAqBngE,MAAM,CAACvH,MAAOvB,EAAIovD,eAAyB,WAAErmD,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIovD,eAAgB,aAAcpmD,EAAI,EAAEvH,WAAW,gCAAgC,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,4BAA4B,OAAOZ,EAAG,eAAe,CAACM,MAAM,CAAC,MAAQP,EAAIigE,gBAAgB/+D,GAAG,CAAC,OAASlB,EAAIkpE,yBAAyBpgE,MAAM,CAACvH,MAAOvB,EAAIovD,eAA6B,eAAErmD,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIovD,eAAgB,iBAAkBpmD,EAAI,EAAEvH,WAAW,oCAAoC,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6B,OAAOZ,EAAG,iBAAiB,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,4BAA8BE,WAAW,gCAAgClB,MAAM,CAAC,KAAO,2BAA2B,MAAQP,EAAIu4B,eAAe,UAAW,EAAM,YAAYv4B,EAAIoK,OAAOC,IAAI,6BAA6BnJ,GAAG,CAAC,MAAQlB,EAAIu/D,4BAA4B,MACtvF,EACI,GAAkB,GCiFtB,wBACA,2BACA,mEACA,kBACA,OACA,OACA,YACA,aAGA,gBACA,OACA,YACA,gBACA,cACA,cACA,mBACA,cACA,aACA,YACA,gCAEA,eACA,qBACA,yBACA,cACA,kBACA,cACA,mBACA,cACA,gBACA,sBACA,kBAEA,sBACA,YAEA,EACA,OACA,uBACA,kCACA,GAEA,8BACA,sCACA,6GACA,qIACA,IACA,6HACA,yHACA,mHACA,EACA,SACA,8BACA,wCACA,EACA,gCACA,yCACA,EACA,gCACA,yCACA,EACA,oCACA,6CACA,EACA,uCACA,iCACA,0CACA,2BACA,6BACA,EACA,oCACA,6BAEA,gEADA,mDAEA,EACA,2BACA,6BACA,EACA,mCACA,qCAEA,GACA,2BACA,0EACA,kBACA,0EACA,wEACA,YACA,wEAEA,sBACA,KC/KoQ,MCQhQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCwC9B,IACEl+D,KAAM,WACN2G,WAAY,CAAEo+D,QAAO,WAAS,uBAAqB,aAAW,gBAAc,SAAO,IACnF,IAAAjkE,GACE,MAAO,CACLgnE,gBAAiB,cACjBt0C,eAAe,EACfq1B,uBAAuB,EACvB96C,OAAQ,GACR+6C,uBAAuB,EACvBiF,eAAgB,CACdt4B,aAAS3oB,EACT3L,UAAW,GACXg1C,UAAU,EACVyoB,oBAAgB9xD,EAChBgb,WAAY,GACZ6/C,WAAY,GACZI,gBAAiB,GACjBP,WAAY,GACZQ,oBAAqB,GACrBl2C,KAAM,EACND,KAAM,IAERo2C,YAAa,EACbC,cAAe,EACf1F,OAAQ,GACRn3B,MAAO,EACPkF,WAAY,EACZ1e,KAAM,GACNC,KAAM,EACNq2C,OAAO,EACPC,sBAAsB,EAE1B,EACAnnE,SAAU,CACR,WAAAonE,GACE,OAAOpuE,KAAKuoE,QAAQ90D,QAAQ3R,GAA4B,IAAnBA,EAAKg7B,YAAiB90B,MAC7D,EACA,OAAAwzB,GACE,OAAOx7B,KAAKC,OAAOmlB,MAAMoW,OAC3B,GAEFttB,MAAO,CACL,cAAA4lD,GACE9zD,KAAKquE,UAAUruE,KAAK43B,KAAM53B,KAAK63B,KACjC,GAEF,OAAArrB,GACMxM,KAAKw7B,UACPx7B,KAAKmuE,sBAAuB,EAC5BnuE,KAAK8zD,eAAet4B,QAAUx7B,KAAKw7B,SAErCx7B,KAAKquE,UAAUruE,KAAK43B,KAAM53B,KAAK63B,KACjC,EACA1wB,QAAS,CACP,gBAAAmnE,GAEE,MAAMC,EAAa,IAAIC,IAAInuE,OAAOC,SAASC,MAG3CguE,EAAWz6D,OAAS,GAGpBzT,OAAOouE,QAAQC,aAAa,CAAC,EAAG,GAAIH,EACtC,EACA,uBAAAzf,CAAyBgF,GACvB9zD,KAAKsuE,mBACD7rE,KAAKowB,UAAU7yB,KAAK8zD,kBAAoBrxD,KAAKowB,UAAUihC,KACzD9zD,KAAK8zD,eAAiB,IAAK9zD,KAAK8zD,kBAAmBA,GACnD9zD,KAAK63B,KAAO,EAEhB,EACA,oBAAA82B,GACE3uD,KAAK6uD,uBAAyB7uD,KAAK6uD,qBACrC,EACA,SAAAwf,QAC8Bx7D,IAAxB7S,KAAK8zD,iBACP9zD,KAAK8zD,eAAiB,CAAE5sD,UAAW,GACXg1C,UAAU,EACVyoB,oBAAgB9xD,EAChBgb,WAAY,GACZ6/C,WAAY,GACZI,gBAAiB,GACjBP,WAAY,GACZQ,oBAAqB,GACrBl2C,KAAM,EACND,KAAM,IAGhC53B,KAAK8zD,eAAel8B,KAAO53B,KAAK43B,KAChC53B,KAAK8zD,eAAej8B,KAAO73B,KAAK63B,KAChC73B,KAAKu5B,eAAgB,EACrB,MAAMxwB,EAAO/I,KACb,IAAImB,EAAM,GAAGnB,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAaysE,eAAe,KACpG3uE,KAAKgJ,MAAMuB,KAAKpJ,EAAKnB,KAAK8zD,gBAAgBvwD,MAAMsD,IAC9CkC,EAAKw/D,OAAS1hE,EAAKnD,MAAM0U,MAAM0C,KAAKhZ,IAAkB,IAAKA,EAAM8sE,YAAa5uE,KAAK8G,OAAOlF,MAAMgU,SAAS3T,MAAMuB,GAAMA,EAAE8G,KAAOxI,EAAKm4C,aAAYl0C,SAC/IgD,EAAKqoC,MAAQvqC,EAAKnD,MAAM0tC,MACC,IAArBvqC,EAAKnD,MAAM0tC,OAAepxC,KAAKmuE,sBACjCnuE,KAAKihC,cAAcjhC,KAAKuF,GAAG,4BAG7BwD,EAAKwwB,eAAgB,EAIjBv5B,KAAK8zD,eAAet4B,UACtBx7B,KAAKmuE,sBAAuB,EAC5BnuE,KAAK8zD,eAAet4B,aAAU3oB,EAChC,GAEJ,EACA,iBAAAm8C,CAAmBO,GACjBvvD,KAAK43B,KAAO23B,EACZvvD,KAAK63B,KAAO,EACZ73B,KAAKquE,UAAUruE,KAAK43B,KAAM53B,KAAK63B,KACjC,EACA,UAAAu3B,CAAYjhD,GACVnO,KAAK63B,KAAO1pB,EAAI0pB,KAChB73B,KAAKquE,UAAUruE,KAAK43B,KAAM53B,KAAK63B,KACjC,EACA,aAAAw3B,GACErvD,KAAK63B,MAAQ73B,KAAK43B,KAClB53B,KAAKquE,UAAUruE,KAAK43B,KAAM53B,KAAK63B,KACjC,EACA,SAAAy3B,GACEtvD,KAAK63B,MAAQ73B,KAAK43B,KAClB53B,KAAKquE,UAAUruE,KAAK43B,KAAM53B,KAAK63B,KACjC,IC1LiI,MCQnI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAInzB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,yBAAyBZ,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,eAAe,KAAO,aAAa,UAAW,EAAK,YAAYb,EAAIoK,OAAOC,IAAI,eAAevB,MAAM,CAACvH,MAAOvB,EAAIk4B,MAAU,KAAEnvB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIk4B,MAAO,OAAQlvB,EAAI,EAAEvH,WAAW,iBAAiB,KAAKxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,uBAAuBiI,MAAM,CAACvH,MAAOvB,EAAIk4B,MAAiB,YAAEnvB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIk4B,MAAO,cAAelvB,EAAI,EAAEvH,WAAW,wBAAwB,KAAKxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,uBAAuB,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,MAAQP,EAAIa,GAAG,mBAAmB,KAAO,iBAAiB,MAAQb,EAAIq/D,gBAAgB,SAA8B,IAAnBr/D,EAAIk4B,MAAMl1B,KAAW,YAAYhD,EAAIoK,OAAOC,IAAI,mBAAwC,IAAnBrK,EAAIk4B,MAAMl1B,MAAY8F,MAAM,CAACvH,MAAOvB,EAAIk4B,MAAc,SAAEnvB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIk4B,MAAO,WAAYlvB,EAAI,EAAEvH,WAAW,qBAAqB,KAAKxB,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,oBAAoB,OAAOZ,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIwC,UAAU,SAAWxC,EAAImqE,mBAAmBjpE,GAAG,CAAC,OAASlB,EAAIo/D,sBAAsB,GAAGn/D,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,iBAAiB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,yBAAyB,aAAab,EAAIa,GAAG,0BAA0BiI,MAAM,CAACvH,MAAOvB,EAAIk4B,MAAoB,eAAEnvB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIk4B,MAAO,iBAAkBlvB,EAAI,EAAEvH,WAAW,2BAA2B,GAAGxB,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,8BAA8B,CAACH,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,SAAS,KAAO,EAAE,MAAQP,EAAIa,GAAG,eAAe,KAAO,gBAAgB,cAAc,eAAeK,GAAG,CAAC,YAAclB,EAAIoqE,sBAAsB,gBAAgB,EAC93E,EACI,GAAkB,GCoFpB,IACE/oE,KAAM,cACN2G,WAAY,CAAEo+D,QAAO,aAAW,gBAAe,aAAW,wBAAsB,kBAAgB,WAAS,IACzG7+D,MAAO,CACLvE,KAAM,CACJA,KAAM2E,OACN,UACE,OAAO,CACT,IAGJ,IAAAxF,GACE,MAAO,CACL+1B,MAAO,CACL72B,KAAM,GACNihB,YAAa,GACb09C,gBAAiB,EACjBjX,QAAS,GACTkX,gBAAgB,EAChB7nC,UAAW98B,KAAK0H,KAChBuyC,UAAW,KACX/yC,UAAW,GAEbA,UAAW,GACX2nE,kBAAmB,GACnB9K,gBAAiB,KAGrB,EACA,OAAAv3D,GACE,MAAM8e,EAAOtrB,KAAK8G,OAAOlF,MAAM+nB,kBAC/B3pB,KAAKkH,UAAYlH,KAAK8G,OAAOlF,MAAMsuB,eAAezc,QAAQmxD,GAAe,IAATA,EAAEt6D,KAAUwQ,KAAK24C,IACxE,CAAEnpD,GAAImpD,EAAEnpD,GAAIoB,KAAM,kBAAoB4f,EAAKrpB,MAAM2iE,GAAMA,EAAE92D,YAAYmW,gBAAkBwvC,EAAE/nD,KAAKuY,gBAAepW,WAExH,EACA,OAAA/E,GACE9I,KAAK48B,MAAMqd,UAAY5tC,OAAOrM,KAAK26B,SAAS+wC,mBAC5C1rE,KAAK6kE,eACP,EACA19D,QAAS,CACP,iBAAA28D,CAAmB18D,GACjBpH,KAAK48B,MAAM11B,UAAYE,EAAE2U,QAAO,CAACE,EAAGw3C,IAAMx3C,EAAIw3C,EAAEnpD,IAAI,GACpDtK,KAAK6uE,kBAAoBznE,CAC3B,EACA,aAAAy9D,GACE,IAAI97D,EAAO/I,KACXA,KAAK+jE,gBAAkBriE,EAAEoZ,IAAI9a,KAAK8G,OAAOlF,MAAMmsB,iBAAiB,SAAU5f,EAAKpJ,GAC7E,MAAO,CAAEkB,MAAOkI,EAAI7D,GAAIoB,KAAM3C,EAAKxD,GAAG,iBAAmB4I,EAAIzC,MAC/D,GACF,EACAojE,kBAAmB,WACjB,IAAI/lE,EAAO/I,KACXA,KAAKyY,WAAWC,cAAcnV,MAAMwrE,IAClC,GAAIA,EAAY,CACd,IAAI5tE,EAAM,GAAG4H,EAAKjC,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAa8sE,gBAAgB,KACrGhvE,KAAKgJ,MAAMuB,KAAKpJ,EAAK4H,EAAK6zB,OAAOr5B,MAAM0F,IACrCF,EAAK8a,QAAQljB,KAAK,iBAAiBsI,EAAKvF,OAAM,GAElD,IAEJ,IClJoI,MCQtI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIgB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,gCAAgC,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,4BAA4BZ,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,4BAA6Bb,EAAmB,gBAAEC,EAAG,MAAM,CAA4B,OAA1BD,EAAIuqE,kBAA4BtqE,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIwqE,uBAAuB1hE,MAAM,CAACvH,MAAOvB,EAAqB,kBAAE+I,SAAS,SAAUC,GAAMhJ,EAAIuqE,kBAAkBvhE,CAAG,EAAEvH,WAAW,wBAAwB,GAAGzB,EAAIS,OAAOT,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,QAAQ,CAACmB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOvB,EAAkB,eAAEyB,WAAW,mBAAmBlB,MAAM,CAAC,KAAO,OAAO,YAAcP,EAAIa,GAAG,qCAAqCqI,SAAS,CAAC,MAASlJ,EAAkB,gBAAGkB,GAAG,CAAC,MAAQ,SAASQ,GAAWA,EAAOoK,OAAOC,YAAiB/L,EAAIyqE,eAAe/oE,EAAOoK,OAAOvK,MAAK,OAAOtB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,WAAW,CAACmB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOvB,EAAe,YAAEyB,WAAW,gBAAgBlB,MAAM,CAAC,KAAO,IAAI,YAAcP,EAAIa,GAAG,kCAAkCqI,SAAS,CAAC,MAASlJ,EAAe,aAAGkB,GAAG,CAAC,MAAQ,SAASQ,GAAWA,EAAOoK,OAAOC,YAAiB/L,EAAI4yC,YAAYlxC,EAAOoK,OAAOvK,MAAK,OAAOtB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAAED,EAAoB,iBAAEC,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,+BAA+BiI,MAAM,CAACvH,MAAOvB,EAAW,QAAE+I,SAAS,SAAUC,GAAMhJ,EAAIm0C,QAAQnrC,CAAG,EAAEvH,WAAW,aAAazB,EAAIS,MAAM,GAAGR,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,sBAAsB,cAAc,eAAeK,GAAG,CAAC,YAAclB,EAAI6yC,qBAAqB5yC,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,YAAY,KAAO,EAAE,MAAQP,EAAIa,GAAG,iBAAiB,cAAc,SAAS,UAAYb,EAAI0qE,mBAAmBxpE,GAAG,CAAC,OAASlB,EAAI22C,sBAAsB,SAAU32C,EAAI8yC,OAAS9yC,EAAI8yC,MAAMxvC,OAAQrD,EAAG,WAAW,CAACM,MAAM,CAAC,MAAQP,EAAI8yC,MAAM,QAAU9yC,EAAIzE,OAAO6jB,OAAOyX,QAAQ,UAAY72B,EAAI+yC,UAAU,MAAQ/yC,EAAIgzC,aAAa,aAAahzC,EAAIg4B,aAAa,oBAAoBh4B,EAAI2qE,kBAAkBzpE,GAAG,CAAC,QAAUlB,EAAIkzC,WAAWlzC,EAAIS,KAAMT,EAAmB,gBAAEC,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,GAAGD,EAAIS,MAAM,GAAGR,EAAG,MAAM,CAACG,YAAY,gDAAgD,CAACH,EAAG,IAAI,CAACG,YAAY,OAAOG,MAAM,CAAC,SAAW,IAAI,KAAO,wBAAwBW,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAImf,QAAQurB,MAAM,IAAI,CAACzqC,EAAG,oBAAoB,CAACG,YAAY,OAAOG,MAAM,CAAC,KAAO,kBAAkBP,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,uBAAuB,MAAM,QACnzF,EACI,GAAkB,GC6FtB,wBACA,kBACA,iEACA,gBACA,OACA,WACA,kBACA,eACA,WACA,uBACA,aACA,gBACA,mBAEA,EACA,UACA,sCACA,qBAIA,sKACA,EACA,oBACA,qDACA,EACA,6BACA,qDACA,EACA,qBACA,kBAIA,iDACA,kBACA,iBACA,8BACA,IAPA,EAQA,EACA,wB,MACA,mEACA,iBACA,EACA,iCACA,wHACA,EACA,4BACA,iEACA,GAEA,OACA,gCACA,qBACA,iBACA,6B,CAEA,GAEA,8BACA,6BACA,yHACA,oCACA,sBACA,aACA,IACA,mBACA,6BACA,iDACA,EACA,yBACA,iCACA,EACA,SACA,gCACA,OACA,6BAEA,iCAGA,8HAEA,4CAGA,qHAGA,oCACA,gBAEA,iBAEA,cACA,gBACA,eAEA,iBAGA,4CAEA,GACA,EACA,0BACA,eAGA,sCACA,wBACA,IACA,IAGA,kBACA,gDACA,kBACA,mCACA,oDACA,sBACA,2BACA,0BACA,sFACA,wBACA,GACA,I,CACA,EACA,oBACA,WACA,0HACA,qCACA,eACA,IACA,YACA,2CACA,GACA,EACA,kCACA,OACA,qBACA,8IACA,oCACA,sCACA,kBACA,cACA,oBACA,gBACA,sCACA,qBAEA,gBACA,GACA,EACA,iCACA,WACA,6LACA,oCACA,yBACA,GACA,EACA,6CACA,2MACA,qCACA,4BACA,gBACA,wBACA,GACA,EACA,4BACA,YACA,uBACA,YACA,uBAEA,wBAEA,EACA,6BACA,YAGA,kBACA,4BACA,yBACA,mCACA,oDACA,yBACA,0BACA,sFACA,wBACA,EACA,EACA,0BACA,qBAIA,WACA,wBACA,8GACA,yBACA,uCACA,eACA,G,CACA,EACA,6BACA,uBACA,mBACA,KChTsP,MCQlP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIb,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,8BAA8B,CAAEJ,EAAgB,aAAEC,EAAG,MAAM,CAACA,EAAG,YAAY,GAAGA,EAAG,MAAM,CAACA,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,OAAO,CAACG,YAAY,uBAAuB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+BZ,EAAG,KAAK,CAACG,YAAY,WAAW,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIk4B,MAAM72B,MAAM,OAAOpB,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIk4B,MAAM5V,gBAAgBriB,EAAG,MAAM,CAACG,YAAY,eAAeH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,SAAS,KAAO,EAAE,MAAQP,EAAIa,GAAG,2BAA2B,KAAO,gBAAgB,cAAc,aAAaK,GAAG,CAAC,UAAYlB,EAAI84B,oBAAoB74B,EAAG,MAAM,CAACG,YAAY,WAAWH,EAAG,YAAY,CAACG,YAAY,oCAAoCG,MAAM,CAAC,KAAO,SAAS,KAAO,EAAE,MAAQP,EAAIa,GAAG,4BAA4B,KAAO,gBAAgB,cAAc,oBAAoBK,GAAG,CAAC,iBAAmBlB,EAAI4qE,qBAAqB,QACllC,EACI,GAAkB,GC2CpB,IACEvpE,KAAM,mBACN2G,WAAY,CAAE4V,UAAS,UAAS,IAChC,IAAAzb,GACE,MAAO,CACL0oE,cAAc,EACd3yC,MAAO,CACL5V,YAAa,IAGnB,EACA,OAAAxa,GACExM,KAAKmsE,WACP,EACAhlE,QAAS,CACP,gBAAAmoE,GACE,MAAMvmE,EAAO/I,KACPigE,EAAU,CACdlP,SAAU/wD,KAAKC,OAAO6jB,OAAOxZ,GAC7B0mD,SAAUhxD,KAAK8G,OAAOlF,MAAM2H,QAAQC,WAGhCiM,EAAMzV,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAaylE,0BAA0B,GAC9G3nE,KAAKgJ,MAAMuB,KAAKkL,EAAKwqD,GAAS18D,MAAKC,IACjCxD,KAAK6jB,QAAQljB,KAAK,IAAG,IACpB6zB,IACDzrB,EAAK68D,YAAa,IAEtB,EACA,gBAAApoC,GACEx9B,KAAKuvE,cAAe,EACpB,IAAIpuE,EAAM,GAAGnB,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAastE,sBAAsB,KAAKnlE,QAAQ,MAAOrK,KAAKC,OAAO6jB,OAAOxZ,IAClJtK,KAAKgJ,MAAMw1C,IAAIr9C,EAAK,MAAMoC,MAAM0F,IACCjJ,KAAKuvE,cAAe,EACpBvvE,KAAK6jB,QAAQljB,KAAK,iBAAiBX,KAAKC,OAAO6jB,OAAOxZ,KAAI,IAE3DiQ,IACC3W,QAAQC,IAAI,2BAA4B0W,GACxCva,KAAKuvE,cAAe,IAEvD,EACA,SAAApD,GACE,IAAIpjE,EAAO/I,KACPw7B,EAAUx7B,KAAKC,OAAO6jB,OAAOxZ,GAE5BkxB,GAASx7B,KAAK6jB,QAAQljB,KAAK,YAGhC,IAAIQ,EAAM,GAAG4H,EAAKjC,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAautE,kBAAkB,SAASj0C,IAChHx7B,KAAKgJ,MAAM3F,IAAIlC,GAAKoC,MAAM0F,IACxBF,EAAK6zB,MAAQ3zB,EAAKvF,QACjBqiB,IACmB,MAAhBA,EAAK7hB,QACPlE,KAAKqsC,cACP,GAEJ,ICrGyI,MCQ3I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI3nC,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAQD,EAAe,YAAEC,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,OAAO,CAACiB,GAAG,CAAC,MAAQ,SAASQ,GAAQ1B,EAAIgrE,YAAc,IAAI,IAAI,CAAC/qE,EAAG,oBAAoB,CAACG,YAAY,OAAOG,MAAM,CAAC,KAAO,kBAAkBP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,sBAAsB,MAAM,OAAOZ,EAAG,MAAM,CAACG,YAAY,OAAOJ,EAAI2G,GAAI3G,EAAY,UAAE,SAAS0C,EAAEgL,GAAG,OAAOzN,EAAG,MAAM,CAACI,IAAIqN,EAAEtN,YAAY,gCAAgC,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe0B,MAAM,CAAEoG,SAAUlI,EAAIklE,WAAaxiE,EAAEjG,KAAM8D,MAAM,CAAC,IAAMmC,EAAEwM,KAAK,IAAM,2BAA2BhO,GAAG,CAAC,MAAQ,SAASQ,GAAQ1B,EAAIklE,SAAWxiE,EAAEjG,GAAG,MAAM,IAAG,GAAGwD,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,YAAY,CAACG,YAAY,kCAAkCG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,oBAAoB,cAAc,OAAOK,GAAG,CAAC,IAAM,SAASQ,GAAQ1B,EAAIgrE,YAAc,IAAI,KAAK/qE,EAAG,YAAY,CAACG,YAAY,kCAAkCG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,oBAAoB,cAAc,aAAaK,GAAG,CAAC,UAAYlB,EAAIirE,oBAAoB,SAAShrE,EAAG,MAAM,CAACG,YAAY,cAAc,CAAEJ,EAAc,WAAEC,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,KAAKD,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,SAASsD,YAAY,CAAC,aAAa,gBAAgB,CAACzD,EAAG,YAAY,GAAGA,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa2C,MAAO/C,EAAkB,iBAAIC,EAAG,MAAM,CAACG,YAAY,aAAa2C,MAAO/C,EAAmB,kBAAIC,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,KAAK,CAACA,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,iBAAiBH,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,OAAO,CAACG,YAAY,eAAe,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIqxB,YAAYhwB,eAA0C,OAA1BrB,EAAIoyB,SAASxO,SAAmB3jB,EAAG,OAAO,CAACG,YAAY,YAAY,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIkrE,qBAAqBlrE,EAAIS,KAA4B,OAAtBT,EAAIoyB,SAASpvB,KAAe/C,EAAG,OAAO,CAACG,YAAY,QAAQ,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIoT,iBAAiBpT,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,OAAO,CAAEJ,EAAmB,gBAAEC,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,iCAAiC,WAAWb,EAAIS,OAAQT,EAAIm2B,QAAQ,UAAYn2B,EAAIm2B,QAAQ,kBAAoBn2B,EAAImrE,WAAanrE,EAAIorE,cAAgBprE,EAAIqrE,MAAOprE,EAAG,MAAM,CAACG,YAAY,WAAW,CAAEJ,EAAkB,eAAEC,EAAG,YAAY,CAACG,YAAY,8BAA8BG,MAAM,CAAC,YAAc,sBAAsB,SAAW,GAAG,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIsrE,YAAY,cAAc,aAAa,SAAWtrE,EAAImyB,8BAA8BjxB,GAAG,CAAC,WAAalB,EAAIurE,wBAAwBvrE,EAAIS,KAAMT,EAAiB,cAAEC,EAAG,YAAY,CAACG,YAAY,8BAA8BG,MAAM,CAAC,SAAW,GAAG,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIqrE,MAAQrrE,EAAIa,GAAG,qBAAuBb,EAAIa,GAAG,kBAAkB,cAAc,gBAAgBK,GAAG,CAAC,aAAelB,EAAIwrE,sBAAsBxrE,EAAIS,MAAOT,EAAIyrE,eAAiBzrE,EAAI0rE,OAAQzrE,EAAG,YAAY,CAACG,YAAY,8BAA8BG,MAAM,CAAC,SAAW,GAAG,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,kBAAkB,cAAc,aAAaK,GAAG,CAAC,UAAYlB,EAAI2rE,mBAAmB3rE,EAAIS,KAAOT,EAAIyrE,gBAAkBzrE,EAAImrE,YAAanrE,EAAIorE,aAA2NprE,EAAIS,KAAhNR,EAAG,YAAY,CAACG,YAAY,8BAA8BG,MAAM,CAAC,SAAW,GAAG,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,kBAAkB,cAAc,aAAaK,GAAG,CAAC,UAAYlB,EAAI4rE,mBAA6B5rE,EAAiB,cAAEC,EAAG,YAAY,CAACG,YAAY,8BAA8BG,MAAM,CAAC,SAAW,GAAG,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,oBAAoB,cAAc,eAAeK,GAAG,CAAC,YAAclB,EAAI6rE,qBAAqB7rE,EAAIS,KAAMT,EAAIoyB,SAAW,GAAEnyB,EAAG,QAAQ,CAACmB,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,wBAAwBuqC,UAAU,CAAC,aAAc,KAAQzrC,YAAY,0CAA0C,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,qBAAqB,OAAOb,EAAIS,KAAMT,EAAa,UAAEC,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmBH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,oCAAoCb,EAAIS,MAAM,GAAIT,EAAkB,eAAEC,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,CAACG,YAAY,8BAA8BG,MAAM,CAAC,YAAc,aAAa,KAAO,UAAU,SAAW,GAAG,KAAO,EAAE,MAAQP,EAAIsrE,YAAY,cAAc,aAAa,SAAWtrE,EAAImyB,8BAA8BjxB,GAAG,CAAC,WAAalB,EAAIurE,yBAAyB,GAAGvrE,EAAIS,SAASR,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAAEJ,EAAiB,cAAEC,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACmG,IAAI,aAAahG,YAAY,UAAU,CAAEJ,EAAIgK,kBAAoBhK,EAAIgK,iBAAiB1G,OAAS,EAAGrD,EAAG,gBAAgB,CAACG,YAAY,uBAAuBG,MAAM,CAAC,oBAAoBP,EAAIgK,oBAAoBhK,EAAIS,MAAM,KAAKR,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,sCAAsCZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAUJ,EAAI2G,GAAI3G,EAAyB,uBAAE,SAAS0C,EAAEgL,GAAG,OAAOzN,EAAG,MAAM,CAACI,IAAIqN,EAAEtN,YAAY,eAAe,CAACH,EAAG,SAAS,CAACG,YAAY,gBAAgB0B,MAAM,CACn6KoG,SACElI,EAAI8rE,mBAAmBl6C,aAAelvB,EAAEkvB,YAC1C1wB,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAI+rE,qBAAqBrpE,EAAEkvB,WAAW,IAAI,CAAC5xB,EAAIQ,GAAG,IAAIR,EAAIY,GAAG8B,EAAEsE,MAAM,OAAQhH,EAAI8rE,mBAAmBl6C,aAAelvB,EAAEkvB,WAAY3xB,EAAG,SAAS,CAACG,YAAY,kBAAkBc,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAIgsE,kBAAkBtpE,EAAEkvB,WAAW,IAAI,CAAC5xB,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6B,IAAIb,EAAIY,GAAG8B,EAAEsE,MAAM,OAAOhH,EAAIS,MAAM,IAAG,GAAGR,EAAG,MAAM,CAACG,YAAY,UAAUJ,EAAI2G,GAAI3G,EAAwB,sBAAE,SAAS0C,EAAEgL,GAAG,OAAOzN,EAAG,MAAM,CAACI,IAAIqN,EAAEtN,YAAY,eAAe,CAACH,EAAG,SAAS,CAACG,YAAY,0BAA0B,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAG8B,EAAEsE,MAAM,OAAO/G,EAAG,SAAS,CAACG,YAAY,kBAAkBc,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAIisE,eAAevpE,EAAEkD,GAAG,IAAI,CAAC5F,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,0BAA0B,IAAIb,EAAIY,GAAG8B,EAAEsE,MAAM,QAAQ,IAAG,SAAS/G,EAAG,MAAM,CAACG,YAAY,0BAA0B,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,kBAAkB,YAAYb,EAAIoK,OAAOC,IAAI,kBAAkB,KAAO,iBAAiB,UAAW,GAAMvB,MAAM,CAACvH,MAAOvB,EAAI8rE,mBAAuB,KAAE/iE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI8rE,mBAAoB,OAAQ9iE,EAAI,EAAEvH,WAAW,8BAA8B,KAAKxB,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,yBAAyB,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,6BAA+BE,WAAW,iCAAiClB,MAAM,CAAC,KAAOP,EAAIa,GAAG,kCAAkC,KAAO,iCAAiC,UAAW,EAAK,MAAQb,EAAIksE,mBAAmB,YAAYlsE,EAAIoK,OAAOC,IAAI,mCAAmCnJ,GAAG,CAAC,MAAQlB,EAAImsE,4BAA4B,KAAKlsE,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,+BAA+B,CAACH,EAAG,IAAI,CAAC6B,MAAM,CAAEoG,UAAWlI,EAAIosE,iBAAkB7rE,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAIqsE,sBAAsB,CAACrsE,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,uBAAuBZ,EAAG,IAAI,CAAC6B,MAAM,CAAEoG,SAAUlI,EAAIosE,iBAAkB7rE,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAIssE,uBAAuB,CAACtsE,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,mCAAmCZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,iCAAiCZ,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,eAAe,CAACM,MAAM,CAAC,KAAOP,EAAI02D,+BAA+B,KAAO,GAAG5tD,MAAM,CAACvH,MAAOvB,EAAIoyB,SAAiB,SAAErpB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIoyB,SAAU,WAAYppB,EAAI,EAAEvH,WAAW,wBAAwB,KAAKxB,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,OAAQvB,EAAIosE,gBAAiB3qE,WAAW,qBAAqBrB,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6BZ,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,eAAe,CAACM,MAAM,CAAC,KAAOP,EAAIupB,WAAW,KAAO,GAAGzgB,MAAM,CAACvH,MAAOvB,EAAIoyB,SAAa,KAAErpB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIoyB,SAAU,OAAQppB,EAAI,EAAEvH,WAAW,oBAAoB,KAAKxB,EAAG,MAAM,CAACG,YAAY,MAAMsD,YAAY,CAAC,aAAa,SAAS,CAACzD,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,sBAAsB,aAAab,EAAIa,GAAG,uBAAuBiI,MAAM,CAACvH,MAAOvB,EAAIoyB,SAAiB,SAAErpB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIoyB,SAAU,WAAYppB,EAAI,EAAEvH,WAAW,wBAAwB,GAAGxB,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,wBAAwB,aAAab,EAAIa,GAAG,yBAAyBiI,MAAM,CAACvH,MAAOvB,EAAIoyB,SAAiB,SAAErpB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIoyB,SAAU,WAAYppB,EAAI,EAAEvH,WAAW,wBAAwB,GAAGxB,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,MAAM,CAACG,YAAY,gCAAgC,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6B,OAAOZ,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIwC,UAAU,SAAWxC,EAAIm/D,mBAAmBj+D,GAAG,CAAC,OAASlB,EAAIo/D,sBAAsB,SAASn/D,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,6BAA6B,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+B,OAAOZ,EAAG,cAAc,CAACM,MAAM,CAAC,OAAS,UAAU,OAAS,MAAM,YAAcP,EAAIa,GAAG,yCAAyC,eAAeb,EAAIa,GAAG,0BAA4B,KAAK,aAAab,EAAIa,GAAG,uBAAuBK,GAAG,CAAC,OAASlB,EAAIusE,2BAA2B,KAAKtsE,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,0BAA0B,cAAc,YAAYK,GAAG,CAAC,SAAW,SAASQ,GAAQ1B,EAAIgrE,YAAc,CAAC,MAAM,KAAK/qE,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,6BAA6B,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8B,OAAOZ,EAAG,cAAc,CAACM,MAAM,CAAC,OAAS,UAAU,OAAS,MAAM,YAAcP,EAAIa,GAAG,oCAAoC,eAAeb,EAAIa,GAAG,0BAA4B,KAAK,aAAab,EAAIa,GAAG,uBAAuBK,GAAG,CAAC,OAASlB,EAAIwsE,sBAAsB,KAAKvsE,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,6BAA6B,cAAc,YAAYK,GAAG,CAAC,SAAW,SAASQ,GAAQ1B,EAAIgrE,YAAc,CAAC,MAAM,KAAK/qE,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,6BAA6B,CAACH,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,+BAA+BiI,MAAM,CAACvH,MAAOvB,EAAI8rE,mBAAmC,iBAAE/iE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI8rE,mBAAoB,mBAAoB9iE,EAAI,EAAEvH,WAAW,0CAA0C,SAASzB,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAAEJ,EAAI0rE,QAAU1rE,EAAIyrE,cAAexrE,EAAG,IAAI,CAACG,YAAY,cAAcG,MAAM,CAAC,SAAW,IAAI,KAAO,uBAAuBW,GAAG,CAAC,MAAQlB,EAAIysE,iBAAiB,CAACxsE,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,aAAa,cAAc,WAAW,GAAGP,EAAIS,KAAOT,EAAI0sE,eAY3nMzsE,EAAG,MAAM,CAACG,YAAY,mCAAmC,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,OAAO,CAACG,YAAY,wBAAwB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIosE,gBAAkBpsE,EAAIa,GAAG,+BAAiCb,EAAIa,GAAG,0BAA0BZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,qCAAqC,CAACH,EAAG,aAAa,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAepB,IAAIL,EAAI26C,aAAap6C,MAAM,CAAC,MAAQP,EAAIosE,gBACjoBpsE,EAAIa,GAAG,mCACPb,EAAIa,GAAG,uBAAuB,YAAYb,EAAIoK,OAAOC,IAAI,uBAAuB,KAAO,sBAAsB,UAAW,EAAK,QAAUrK,EAAI2sE,iBAAiB,QAAU3sE,EAAI66C,mBAAmB35C,GAAG,CAAC,MAAQlB,EAAI4sE,sBAAsB9jE,MAAM,CAACvH,MAAOvB,EAAoB,iBAAE+I,SAAS,SAAUC,GAAMhJ,EAAI2sE,iBAAiB3jE,CAAG,EAAEvH,WAAW,uBAAuB,GAAGxB,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,OAAQvB,EAAIoyB,SAAStP,SAAUrhB,WAAW,uBAAuBrB,YAAY,qCAAqC,CAACH,EAAG,aAAa,CAACM,MAAM,CAAC,MAAQP,EAAIosE,gBAC1iBpsE,EAAIa,GAAG,qBACPb,EAAIa,GAAG,uBAAuB,SAAWb,EAAIoyB,SAAStP,UAAUha,MAAM,CAACvH,MAAOvB,EAAkB,eAAE+I,SAAS,SAAUC,GAAMhJ,EAAI6sE,eAAe7jE,CAAG,EAAEvH,WAAW,qBAAqB,GAAGxB,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,OAAQvB,EAAIoyB,SAAStP,WAAa9iB,EAAIosE,gBAAiB3qE,WAAW,2CAA2CrB,YAAY,qCAAqC,CAACH,EAAG,aAAa,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,qBAAqB,SAAWb,EAAIoyB,SAAStP,UAAUha,MAAM,CAACvH,MAAOvB,EAAgB,aAAE+I,SAAS,SAAUC,GAAMhJ,EAAI8sE,aAAa9jE,CAAG,EAAEvH,WAAW,mBAAmB,GAAGxB,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,OAAQvB,EAAIosE,gBAAiB3qE,WAAW,qBAAqBrB,YAAY,qCAAqC,CAACH,EAAG,aAAa,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,CACv0BqG,UAAU,EACVmlE,YAAa/sE,EAAI2sE,iBACjBK,aAAahtE,EAAIitE,mBAChBxrE,WAAW,wMAAwMpB,IAAIL,EAAI26C,aAAap6C,MAAM,CAAC,MAAQP,EAAIa,GAAG,qBAAqB,QAAUb,EAAIktE,eAAe,YAAYltE,EAAIoK,OAAOC,IAAI,qBAAqB,KAAO,oBAAoB,UAAW,EAAK,MAAQrK,EAAImtE,aAAa,QAAUntE,EAAI66C,mBAAmB/xC,MAAM,CAACvH,MAAOvB,EAAkB,eAAE+I,SAAS,SAAUC,GAAMhJ,EAAIktE,eAAelkE,CAAG,EAAEvH,WAAW,qBAAqB,KAAKxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,oBAAoB,aAAab,EAAIa,GAAG,qBAAqBiI,MAAM,CAACvH,MAAOvB,EAAIoyB,SAAiB,SAAErpB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIoyB,SAAU,WAAYppB,EAAI,EAAEvH,WAAW,wBAAwB,KAAKxB,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAS,MAAEyB,WAAW,WAAW,CAACxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,4BAA4B,MAAQb,EAAIotE,YAAY,aAAaptE,EAAIa,GAAG,6BAA6BK,GAAG,CAAC,MAAQlB,EAAIqtE,2BAA2B,KAAKptE,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAe,YAAEyB,WAAW,iBAAiB,CAACxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,iBAAiB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,oBAAoB,MAAQb,EAAIstE,2BAA2B,YAAW,EAAK,MAAQttE,EAAIutE,qBAAqBrsE,GAAG,CAAC,MAAQlB,EAAIwtE,sBAAsB,KAAKvtE,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,6CAA6C,CAACH,EAAG,aAAa,CAACI,IAAIL,EAAI26C,aAAap6C,MAAM,CAAC,MAAQP,EAAIa,GAAG,4BAA4B,MAAQb,EAAIytE,eAAe,QAAUztE,EAAIytE,eAAe,YAAYztE,EAAIoK,OAAOC,IAAI,4BAA4B,KAAO,2BAA2B,QAAUrK,EAAI66C,kBAAkB,MAAQ76C,EAAI0tE,qBAAqBxsE,GAAG,CAAC,MAAQlB,EAAI2tE,2BAA2B,GAAG1tE,EAAG,MAAM,CAACG,YAAY,wCAAwC,CAACH,EAAG,MAAM,CAACG,YAAY,QAAQ,CAACH,EAAG,OAAO,CAACG,YAAY,UAAU,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,mCAAmCZ,EAAG,cAAc,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,eAAiBE,WAAW,mBAAmBlB,MAAM,CAAC,MAAQoH,OAAO3H,EAAIoyB,SAASpP,QAAQ,IAAM,EAAE,IAAM,GAAG,YAAYhjB,EAAIoK,OAAOC,IACt4E,kCACA,KAAO,kCAAkCnJ,GAAG,CAAC,MAAQlB,EAAI4tE,uBAAuB3tE,EAAG,OAAO,CAACG,YAAY,UAAU,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,oCAAoC,WAAWZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,aAAa,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,CACxVqG,UAAU,EACVimE,aAAc7tE,EAAI8tE,eACjBrsE,WAAW,2IAA2IpB,IAAIL,EAAI26C,aAAap6C,MAAM,CAAC,MAAQP,EAAIa,GAAG,kCAAkC,QAAUb,EAAIijB,qBAAqB,YAAYjjB,EAAIoK,OAAOC,IAAI,kCAAkC,KAAO,iCAAiC,QAAUrK,EAAI66C,kBAAkB,eAAc,EAAK,YAAc76C,EAAIa,GAAG,wBAAwB,MAAQb,EAAI+tE,2BAA2BjlE,MAAM,CAACvH,MAAOvB,EAAwB,qBAAE+I,SAAS,SAAUC,GAAMhJ,EAAIijB,qBAAqBja,CAAG,EAAEvH,WAAW,2BAA2B,WAzB6oLxB,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,OAAO,CAACG,YAAY,OAAOG,MAAM,CAAC,cAAc,SAAS,CAACN,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,CAAC,MAAO,SAAS,cAAc,WAAW,KAAKN,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIguE,oBAAoB,KAC5mNhuE,EAAIiuE,mBAAqBjuE,EAAIguE,oBAC1BhuE,EAAIosE,gBACiDpsE,EAAIS,KAA5DR,EAAG,OAAO,CAACD,EAAIQ,GAAG,MAAMR,EAAIY,GAAGZ,EAAIiuE,uBAAgChuE,EAAG,MAAOD,EAAIoyB,SAAiB,SAAEnyB,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwBZ,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,mBAAmB,IAAIb,EAAIY,GAAGZ,EAAIkuE,oBAAoB,KAClPluE,EAAImuE,mBAAqBnuE,EAAIkuE,oBAC1BluE,EAAIosE,gBACiDpsE,EAAIS,KAA5DR,EAAG,OAAO,CAACD,EAAIQ,GAAG,MAAMR,EAAIY,GAAGZ,EAAImuE,uBAAgCluE,EAAG,MAAOD,EAAIoyB,SAASrP,UAAY,EAAG9iB,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIouE,iBAAiBnuE,EAAG,QAAQD,EAAIS,KAClMT,EAAIoyB,SAASnP,uBACVjjB,EAAImyB,6BACPlyB,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,mCAAmC,KAAKb,EAAIY,GAAGZ,EAAIquE,8BAA8BpuE,EAAG,QAC9ID,EAAIoyB,SAASnP,sBACXjjB,EAAImyB,6BACNlyB,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,0CAA0CZ,EAAG,QAAQD,EAAIS,aAashBR,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAAEJ,EAAI0rE,QAAU1rE,EAAIyrE,cAAexrE,EAAG,IAAI,CAACG,YAAY,cAAcG,MAAM,CAAC,SAAW,IAAI,KAAO,uBAAuBW,GAAG,CAAC,MAAQlB,EAAIsuE,qBAAqB,CAACruE,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,aAAa,cAAc,WAAW,GAAGP,EAAIS,KAAOT,EAAIuuE,mBAEz1BtuE,EAAG,MAAM,CAACG,YAAY,mCAAmC,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,OAAO,CAACG,YAAY,wBAAwB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8BZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAOP,EAAIa,GAAG,uBAAuB,KAAO,sBAAsB,YAAW,GAAMiI,MAAM,CAACvH,MAAOvB,EAAI8rE,mBAA4B,UAAE/iE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI8rE,mBAAoB,YAAa9iE,EAAI,EAAEvH,WAAW,mCAAmC,KAAKxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAOP,EAAIa,GAAG,2BAA2B,KAAO,0BAA0B,YAAW,GAAMiI,MAAM,CAACvH,MAAOvB,EAAI8rE,mBAAgC,cAAE/iE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI8rE,mBAAoB,gBAAiB9iE,EAAI,EAAEvH,WAAW,uCAAuC,KAAKxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,qCAAqC,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,uBAAyBb,EAAIoyB,SAAS3O,SAAmCzjB,EAAIS,KAA7BR,EAAG,OAAO,CAACD,EAAIQ,GAAG,SAAkBP,EAAG,uBAAuB,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,CACx4CqG,UAAW5H,EAAIoyB,SAAS3O,UACvBhiB,WAAW,kGAAkGlB,MAAM,CAAC,eAAc,EAAK,UAAYP,EAAIoyB,SAAS3O,SAAS,KAAO,oBAAoB,YAAYzjB,EAAIoK,OAAOC,IAAI,qBAAqB,MAAQrK,EAAIwuE,oBAAoB,YAAa,EAAK,YAAa,EAAK,MAAQxuE,EAAIoR,UAAUlQ,GAAG,CAAC,OAASlB,EAAIyuE,oBAAoB3lE,MAAM,CAACvH,MAAOvB,EAAuB,oBAAE+I,SAAS,SAAUC,GAAMhJ,EAAIwuE,oBAAoBxlE,CAAG,EAAEvH,WAAW,0BAA0B,KAAKxB,EAAG,MAAM,CAACG,YAAY,qCAAqC,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,CACjoBqG,UAAW5H,EAAIoyB,SAAS3O,UACvBhiB,WAAW,8FAA8FlB,MAAM,CAAC,UAAYP,EAAIoyB,SAAS3O,SAAS,KAAOzjB,EAAIa,GAAG,kBAAkB,KAAO,iBAAiB,YAAYb,EAAIoK,OAAOC,IAAI,mBAAmBvB,MAAM,CAACvH,MAAOvB,EAAI8rE,mBAAuB,KAAE/iE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI8rE,mBAAoB,OAAQ9iE,EAAI,EAAEvH,WAAW,8BAA8B,WANukBxB,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,OAAO,CAACG,YAAY,OAAOG,MAAM,CAAC,cAAc,SAAS,CAACN,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,iBAAiB,cAAc,WAAW,KAAKN,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAAEJ,EAAqB,kBAAEC,EAAG,IAAI,CAACG,YAAY,QAAQ,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI0uE,mBAAmB,OAAO1uE,EAAIS,KAAMT,EAAIoyB,SAAiB,SAAEnyB,EAAG,IAAI,CAACG,YAAY,QAAQ,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,uBAAuB,OAAOb,EAAIS,KAAMT,EAAe,YAAEC,EAAG,IAAI,CAACM,MAAM,CAAC,KAAO,sBAAsBW,GAAG,CAAC,MAAQlB,EAAI2uE,UAAU,CAAC3uE,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,2BAA2Bb,EAAIS,KAAMT,EAAI4uE,aAAe5uE,EAAI6uE,aAAc5uE,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,SAAS,CAACyD,YAAY,CAAC,MAAQ,OAAO,OAAS,SAASnD,MAAM,CAAC,OAASP,EAAI8uE,UAAU,KAAO9uE,EAAI+uE,UAAU/uE,EAAI2G,GAAI3G,EAAW,SAAE,SAASqjE,GAAG,OAAOpjE,EAAG,YAAY,CAACI,IAAIgjE,EAAEz9D,GAAGrF,MAAM,CAAC,SAAW8iE,EAAEt1D,SAAS,WAAY,EAAM,WAAY,GAAO7M,GAAG,CAAC,kBAAkB,SAASQ,GAAQ,OAAO1B,EAAI+a,KAAKsoD,EAAG,WAAY3hE,EAAO,IAAI,IAAG,IAAI,GAAG1B,EAAIS,KAC7hET,EAAI0rE,QAAU1rE,EAAI4uE,aAAe5uE,EAAI6uE,cAAgB7uE,EAAIgvE,cACzD/uE,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,4BAA4B,OAAOb,EAAIS,aAI8TR,EAAG,MAAM,CAACG,YAAY,eAAe,CAAEJ,EAAI0rE,QAAU1rE,EAAIyrE,cAAexrE,EAAG,IAAI,CAACG,YAAY,cAAcG,MAAM,CAAC,SAAW,IAAI,KAAO,uBAAuBW,GAAG,CAAC,MAAQlB,EAAIivE,gBAAgB,CAAChvE,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,aAAa,cAAc,WAAW,GAAGP,EAAIS,KAAOT,EAAIkvE,cAAqXjvE,EAAG,MAAM,CAACG,YAAY,mCAAmC,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAOP,EAAIa,GAAG,iBAAiB,KAAO,gBAAgB,YAAW,GAAMiI,MAAM,CAACvH,MAAOvB,EAAI8rE,mBAAwB,MAAE/iE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI8rE,mBAAoB,QAAS9iE,EAAI,EAAEvH,WAAW,+BAA+B,OAAruBxB,EAAG,MAAM,CAACG,YAAY,6BAA6B,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,OAAO,CAACG,YAAY,OAAOG,MAAM,CAAC,cAAc,SAAS,CAACN,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAO,YAAY,cAAc,WAAW,KAAKN,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIqxB,YAAY7O,OAAO,eAAqZviB,EAAG,MAAM,CAACG,YAAY,eAAe,CAAEJ,EAAI0rE,QAAU1rE,EAAIyrE,cAAexrE,EAAG,IAAI,CAACG,YAAY,cAAcG,MAAM,CAAC,SAAW,IAAI,KAAO,uBAAuBW,GAAG,CAAC,MAAQlB,EAAImvE,wBAAwB,CAAClvE,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,aAAa,cAAc,WAAW,GAAGP,EAAIS,KAAOT,EAAIovE,sBAAyenvE,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,yBAAyB,KAAO,GAAGiI,MAAM,CAACvH,MAAOvB,EAAI8rE,mBAA8B,YAAE/iE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI8rE,mBAAoB,cAAe9iE,EAAI,EAAEvH,WAAW,qCAAqC,OAAx0BxB,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA8Bb,EAAIqxB,YAAuB,YAAEpxB,EAAG,IAAI,CAACmB,WAAW,CAAC,CAACC,KAAK,YAAYC,QAAQ,sBAAsBC,MAAM,CAAGya,OAAO,GAAQva,WAAW,kBAAkBwa,IAAI,YAAY5b,IAAIL,EAAI26C,cAAc,CAAC36C,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIqxB,YAAY/O,aAAa,OAAOtiB,EAAIS,aAA0YR,EAAG,MAAM,CAACG,YAAY,eAAe,CAAEJ,EAAI0rE,QAAU1rE,EAAIyrE,cAAexrE,EAAG,IAAI,CAACG,YAAY,cAAcG,MAAM,CAAC,SAAW,IAAI,KAAO,uBAAuBW,GAAG,CAAC,MAAQlB,EAAIqvE,oBAAoB,CAACpvE,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,aAAa,cAAc,WAAW,GAAGP,EAAIS,KAAOT,EAAIsvE,kBAAumBrvE,EAAG,MAAM,CAACG,YAAY,iCAAiC,CAACH,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,yBAAyBZ,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,uBAAuB,KAAO,sBAAsB,YAAYb,EAAIoK,OAAOC,IAAI,uBAAuB,UAAW,GAAMvB,MAAM,CAACvH,MAAOvB,EAAIoyB,SAASlP,QAAiB,UAAEna,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIoyB,SAASlP,QAAS,YAAala,EAAI,EAAEvH,WAAW,gCAAgCxB,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,sBAAsB,KAAO,qBAAqB,YAAYb,EAAIoK,OAAOC,IAAI,sBAAsB,UAAW,GAAMvB,MAAM,CAACvH,MAAOvB,EAAIoyB,SAASlP,QAAgB,SAAEna,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIoyB,SAASlP,QAAS,WAAYla,EAAI,EAAEvH,WAAW,+BAA+BxB,EAAG,YAAY,CAACM,MAAM,CAAC,KAAOP,EAAIa,GAAG,mBAAmB,KAAO,yBAAyB,YAAW,GAAMiI,MAAM,CAACvH,MAAOvB,EAAIoyB,SAASlP,QAAa,MAAEna,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIoyB,SAASlP,QAAS,QAASla,EAAI,EAAEvH,WAAW,4BAA4BxB,EAAG,YAAY,CAACM,MAAM,CAAC,KAAOP,EAAIa,GAAG,mBAAmB,KAAO,yBAAyB,YAAW,GAAMiI,MAAM,CAACvH,MAAOvB,EAAIoyB,SAASlP,QAAa,MAAEna,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIoyB,SAASlP,QAAS,QAASla,EAAI,EAAEvH,WAAW,6BAA6B,SAAtpExB,EAAG,MAAM,CAACG,YAAY,iCAAiC,CAACH,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,yBAA0Bb,EAAIoyB,SAAgB,QAAEnyB,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIoyB,SAASlP,QAAQ9O,WAAW,IAAIpU,EAAIY,GAAGZ,EAAIoyB,SAASlP,QAAQ7O,UAAU,OAAOrU,EAAIS,KAAMT,EAAIoyB,SAASlP,QAAa,MAAEjjB,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIoyB,SAASlP,QAAQ5O,UAAUtU,EAAIS,KAAKR,EAAG,MAAOD,EAAIoyB,SAASlP,QAAa,MAAEjjB,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIoyB,SAASlP,QAAQ3O,UAAUvU,EAAIS,aAA0lDT,EAAIqrE,MAAiErrE,EAAIS,KAA9DR,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,cAAc,OAAiBD,EAAIm2B,QAAQ,UAAYn2B,EAAIm2B,QAAQ,kBAAoBn2B,EAAImrE,WAAanrE,EAAIorE,aAAcnrE,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAAEJ,EAAI0rE,QAAU1rE,EAAIyrE,gBAAkBzrE,EAAIm2B,QAAQ,UAAYn2B,EAAIm2B,QAAQ,kBAAoBn2B,EAAImrE,WAAYlrE,EAAG,IAAI,CAACG,YAAY,cAAcG,MAAM,CAAC,SAAW,IAAI,KAAO,uBAAuBW,GAAG,CAAC,MAAQlB,EAAIuvE,mBAAmB,CAACtvE,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,aAAa,cAAc,WAAW,GAAGP,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,cAAc,CAACM,MAAM,CAAC,OAASP,EAAIoyB,SAASvO,YAAY,gBAAgB7jB,EAAIm2B,QAAQ,UAAYn2B,EAAIm2B,QAAQ,kBAAoBn2B,EAAImrE,WAAanrE,EAAIqrE,QAAUrrE,EAAIwvE,kBAAkBtuE,GAAG,CAAC,SAAWlB,EAAIslC,WAAW,YAActlC,EAAIulC,kBAAkB,SAASvlC,EAAIS,KAAOT,EAAI0rE,QAAU1rE,EAAIyrE,eAAkBzrE,EAAIqrE,MAAOprE,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,4CAA4CZ,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,mBAAmB,CAACmG,IAAI,2BAA2B7F,MAAM,CAAC,oBAAoB,QAAQ,QAAUP,EAAIyvE,0BAA0B3mE,MAAM,CAACvH,MAAOvB,EAAIoyB,SAA0B,kBAAErpB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIoyB,SAAU,oBAAqBppB,EAAI,EAAEvH,WAAW,iCAAiC,KAAKzB,EAAIS,MAAQT,EAAI0rE,QAAU1rE,EAAIyrE,eAAkBzrE,EAAIqrE,QAA6C,IAAnCrrE,EAAIoyB,SAASs9C,kBAAyBzvE,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,CAAG9E,IAAK,CAAEkzE,kBAAkB,IAAUluE,WAAW,wCAAwClB,MAAM,CAAC,KAAOP,EAAIa,GAAG,2BAA2B,KAAO,0BAA0B,YAAcb,EAAIa,GAAG,sCAAsC,YAAYb,EAAIoK,OAAOC,IAAI,4BAA4BvB,MAAM,CAACvH,MAAOvB,EAAI8rE,mBAA8B,YAAE/iE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI8rE,mBAAoB,cAAe9iE,EAAI,EAAEvH,WAAW,qCAAqC,GAAGzB,EAAIS,MAAST,EAAI0rE,QAAU1rE,EAAIyrE,eAAkBzrE,EAAIqrE,QAA6C,IAAnCrrE,EAAIoyB,SAASs9C,mBAA4B1vE,EAAI4vE,cAAe3vE,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACmG,IAAI,iBAAiBhG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAiB,cAAEC,EAAG,iBAAiB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,qBAAqB,CAACZ,EAAG,iBAAiB,CAACM,MAAM,CAAC,eAAeP,EAAI6vE,mBAAmB,QAAU7vE,EAAIoyB,SAASxsB,IAAIkD,MAAM,CAACvH,MAAOvB,EAAIoyB,SAAmB,WAAErpB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIoyB,SAAU,aAAcppB,EAAI,EAAEvH,WAAW,0BAA0B,GAAGzB,EAAIS,MAAST,EAAI0rE,QAAU1rE,EAAIyrE,eAAkBzrE,EAAIqrE,QAA6C,IAAnCrrE,EAAIoyB,SAASs9C,oBAA6B1vE,EAAImrE,WAAanrE,EAAIorE,cAAgBprE,EAAIm2B,QAAQ,UAAYn2B,EAAIm2B,QAAQ,kBAAmBl2B,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,8BAA8B,MAAQb,EAAIoyB,SAAS09C,iBAAiB,aAAa9vE,EAAIa,GAAG,+BAA+BK,GAAG,CAAC,MAAQlB,EAAI+vE,8BAA8B,KAAK/vE,EAAIS,KAAMT,EAAiB,cAAEC,EAAG,iBAAiB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,oBAAoBiI,MAAM,CAACvH,MAAOvB,EAAIoyB,SAAmB,WAAErpB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIoyB,SAAU,aAAcppB,EAAI,EAAEvH,WAAW,yBAAyBzB,EAAIS,MAAM,OAAOT,EAAIS,MAAOT,EAAIm2B,QAAQ,UAAYn2B,EAAIm2B,QAAQ,kBAAoBn2B,EAAImrE,WAAanrE,EAAIorE,eAAoD,IAAnCprE,EAAIoyB,SAASs9C,kBAAyBzvE,EAAG,MAAM,CAACG,YAAY,qCAAqC,CAAEJ,EAAI0rE,QAAU1rE,EAAIyrE,cAAexrE,EAAG,IAAI,CAACG,YAAY,cAAcG,MAAM,CAAC,SAAW,IAAI,KAAO,uBAAuBW,GAAG,CAAC,MAAQlB,EAAIgwE,6BAA6B,CAAC/vE,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,aAAa,cAAc,WAAW,GAAGP,EAAIS,KAAOT,EAAIiwE,yBAAy0BhwE,EAAG,MAAM,CAACG,YAAY,iCAAiC,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,6CAA6CZ,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,QAAUE,WAAW,YAAYlB,MAAM,CAAC,aAAa,QAAQ,YAAcP,EAAIa,GAAG,qCAAqC,KAAO,oCAAoC,UAAW,EAAM,YAAYb,EAAIoK,OAAOC,IAAI,sCAAsCvB,MAAM,CAACvH,MAAOvB,EAAgC,6BAAE+I,SAAS,SAAUC,GAAMhJ,EAAIkwE,6BAA6BlnE,CAAG,EAAEvH,WAAW,mCAAmC,KAAKxB,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,YAAY,CAACG,YAAY,aAAaG,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,qCAAqC,cAAc,0BAA0BK,GAAG,CAAC,uBAAyBlB,EAAImwE,6BAA6B,KAAKlwE,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,OAAOD,EAAI2G,GAAI3G,EAAIowE,qBAA6B,UAAE,SAASltD,EAAQrc,GAAO,OAAO5G,EAAG,OAAO,CAACI,IAAIwG,EAAMtG,MAAM,CAAC,MAAQ2iB,EAAQ5O,MAAM,eAAc,GAAMpT,GAAG,CAAC,OAAS,SAASQ,GAAQ,OAAO1B,EAAI+4D,gBAAgB71C,EAAQ,IAAI,IAAG,KAAKjjB,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,qCAAqC,OAAOZ,EAAG,mBAAmB,CAACmG,IAAI,+BAA+B7F,MAAM,CAAC,oBAAoB,QAAQ,QAAUP,EAAIqwE,gCAAgCvnE,MAAM,CAACvH,MAAOvB,EAAIowE,qBAA0C,sBAAErnE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIowE,qBAAsB,wBAAyBpnE,EAAI,EAAEvH,WAAW,iDAAiD,GAAjiFxB,EAAG,MAAM,CAACG,YAAY,iCAAiC,CAACH,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,2CAA4Cb,EAAoB,iBAAEC,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,MAAM,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIg5D,yBAAyBh5D,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAA2B,wBAAEyB,WAAW,6BAA6B,CAACzB,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,qCAAqC,OAAOZ,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIm5D,wCAA6xDn5D,EAAIS,MAAQT,EAAI0rE,QAAU1rE,EAAIyrE,eAAkBzrE,EAAIqrE,QAA6C,IAAnCrrE,EAAIoyB,SAASs9C,kBAAyBzvE,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,uBAAuB,CAAEJ,EAAIm2B,QAAQ,UAAYn2B,EAAIm2B,QAAQ,kBAAoBn2B,EAAImrE,WAAanrE,EAAIorE,aAAcnrE,EAAG,MAAM,CAACA,EAAG,wBAAwB,CAACiB,GAAG,CAAC,OAASlB,EAAIswE,uBAAuB,cAAgBtwE,EAAIuwE,sBAAsBznE,MAAM,CAACvH,MAAOvB,EAAIoyB,SAAmB,WAAErpB,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAIoyB,SAAU,aAAcppB,EAAI,EAAEvH,WAAW,0BAA0B,GAAGzB,EAAIS,WAAWT,EAAIS,OAAQT,EAAIm2B,QAAQ,UAAYn2B,EAAIm2B,QAAQ,kBAAoBn2B,EAAImrE,WAAanrE,EAAIorE,cAAgBprE,EAAIqrE,MAAOprE,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,EAAGJ,EAAIqrE,QAAUrrE,EAAIm2B,QAAQ,UAAYn2B,EAAIm2B,QAAQ,kBAAoBn2B,EAAImrE,WAAanrE,EAAIorE,cAAenrE,EAAG,YAAY,CAACG,YAAY,kCAAkCG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,kCAAkC,cAAc,wBAAwBK,GAAG,CAAC,qBAAuBlB,EAAIwwE,0BAA0BxwE,EAAIS,KAAMT,EAAiB,cAAEC,EAAG,YAAY,CAACG,YAAY,kCAAkCG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIqrE,MAAQrrE,EAAIa,GAAG,qBAAuBb,EAAIa,GAAG,kBAAkB,cAAc,gBAAgBK,GAAG,CAAC,aAAelB,EAAIwrE,sBAAsBxrE,EAAIS,MAAOT,EAAIyrE,eAAiBzrE,EAAI0rE,OAAQzrE,EAAG,YAAY,CAACG,YAAY,kCAAkCG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,kBAAkB,cAAc,aAAaK,GAAG,CAAC,UAAYlB,EAAI2rE,mBAAmB3rE,EAAIS,KAAMT,EAAiB,cAAEC,EAAG,YAAY,CAACG,YAAY,kCAAkCG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,oBAAoB,cAAc,eAAeK,GAAG,CAAC,YAAclB,EAAI6rE,qBAAqB7rE,EAAIS,KAAOT,EAAIyrE,gBAAkBzrE,EAAIqrE,QAAWrrE,EAAIm2B,QAAQ,UAAYn2B,EAAIm2B,QAAQ,kBAAoBn2B,EAAImrE,WAAanrE,EAAIorE,cAAenrE,EAAG,YAAY,CAACG,YAAY,kCAAkCG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,gCAAgC,UAAYb,EAAIywE,qBAAqBntE,OAAO,cAAc,sBAAsBpC,GAAG,CAAC,mBAAqBlB,EAAI0wE,sBAAsB1wE,EAAIS,KAAMT,EAAIoyB,SAAW,GAAEnyB,EAAG,QAAQ,CAACmB,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,wBAAwBuqC,UAAU,CAAC,aAAc,KAAQzrC,YAAY,0CAA0C,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,qBAAqB,OAAOb,EAAIS,MAAM,WAAWT,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,GAAGA,EAAG,UAAU,CAACM,MAAM,CAAC,GAAKP,EAAIiQ,KAAO,QAAQ,KAAO,KAAK,SAAW,GAAG,kBAAkB,GAAG,cAAc,IAAI/O,GAAG,CAAC,MAAQlB,EAAI4qC,aAAa9hC,MAAM,CAACvH,MAAOvB,EAAa,UAAE+I,SAAS,SAAUC,GAAMhJ,EAAI6qC,UAAU7hC,CAAG,EAAEvH,WAAW,cAAc,CAAoB,IAAlBzB,EAAI2wE,UAAiB1wE,EAAG,MAAM,CAACG,YAAY,+CAA+C,CAACH,EAAG,YAAY,CAACG,YAAY,kDAAkDG,MAAM,CAAC,KAAO,UAAU,YAAc,uBAAuB,KAAO,EAAE,MAAQP,EAAIa,GAAG,0BAA0B,cAAc,cAAc,SAAWb,EAAImyB,8BAA8BjxB,GAAG,CAAC,YAAclB,EAAI4wE,aAAa3wE,EAAG,YAAY,CAACG,YAAY,kDAAkDG,MAAM,CAAC,KAAO,UAAU,YAAc,iBAAiB,KAAO,EAAE,MAAQP,EAAIa,GAAG,qBAAqB,cAAc,cAAc,SAAWb,EAAImyB,8BAA8BjxB,GAAG,CAAC,YAAclB,EAAI6wE,aAAa,GAAG7wE,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,yBAAyB,CACxne,IAAlBJ,EAAI2wE,WAAmB3wE,EAAIm2B,QAAQ,UAAYn2B,EAAIm2B,QAAQ,kBAAoBn2B,EAAImrE,WAAanrE,EAAIorE,aACpGnrE,EAAG,MAAM,CAAGD,EAAImrE,WAAcnrE,EAAI8wE,gBAAiB9wE,EAAI+wE,WAAmL/wE,EAAIS,KAA3KR,EAAG,YAAY,CAACM,MAAM,CAAC,MAAQP,EAAIoyB,SAAS3P,WAAW,qBAAqBziB,EAAIqxB,YAAYhP,iBAAiB,aAAariB,EAAI8E,WAAW5D,GAAG,CAAC,KAAOlB,EAAIgxE,eAA0BhxE,EAAI8wE,eAAkB9wE,EAAI+wE,WAAoK/wE,EAAIS,KAA5JR,EAAG,kBAAkB,CAACM,MAAM,CAAC,MAAQP,EAAIoyB,SAAS3P,WAAW,qBAAqBziB,EAAIqxB,YAAYhP,kBAAkBnhB,GAAG,CAAC,KAAOlB,EAAIixE,sBAAgCjxE,EAAImrE,WAAanrE,EAAI8wE,eAAiB9wE,EAAI+wE,WAAY9wE,EAAG,YAAY,CAACM,MAAM,CAAC,MAAQP,EAAIoyB,SAAS3P,WAAW,qBAAqBziB,EAAIqxB,YAAYhP,iBAAiB,aAAariB,EAAI8E,UAAU,aAAa,IAAI5D,GAAG,CAAC,KAAOlB,EAAIgxE,eAAehxE,EAAIS,KAAMT,EAAI8wE,gBAAkB9wE,EAAI+wE,WAAY9wE,EAAG,kBAAkB,CAACM,MAAM,CAAC,MAAQP,EAAIoyB,SAAS3P,WAAW,WAAWziB,EAAIoyB,SAASxsB,GAAG,qBAAqB5F,EAAIqxB,YAAYhP,iBAAiB,aAAa,IAAInhB,GAAG,CAAC,KAAOlB,EAAIixE,qBAAqBjxE,EAAIS,MAAM,GAAGT,EAAIS,OAAOR,EAAG,MAAM,CAACG,YAAY,kBAAkBG,MAAM,CAAC,KAAO,gBAAgB0I,KAAK,gBAAgB,CAAChJ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAAoB,IAAlBJ,EAAI2wE,UAAiB1wE,EAAG,KAAK,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwB,OAAOb,EAAIS,KAAwB,IAAlBT,EAAI2wE,WAAoB3wE,EAAI8wE,cAAgF9wE,EAAIS,KAArER,EAAG,KAAK,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwB,OAAmC,IAAlBb,EAAI2wE,WAAmB3wE,EAAI8wE,cAAe7wE,EAAG,KAAK,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,0BAA0B,OAAOb,EAAIS,WAAWR,EAAG,MAAM,CAACG,YAAY,kBAAkBG,MAAM,CAAC,KAAO,gBAAgB0I,KAAK,gBAAgB,CAAChJ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,yCAAyCc,GAAG,CAAC,MAAQlB,EAAI4qC,cAAc,CAAC3qC,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,4BAA4BZ,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,QAAQ,cAAc,WAAW,SAASN,EAAG,UAAU,CAACmG,IAAI,cAAc7F,MAAM,CAAC,GAAK,cAAc,KAAO,KAAK,SAAW,GAAG,kBAAkB,GAAG,cAAc,KAAK,CAAEP,EAAIoyB,SAASrP,UAAY,EAAG9iB,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,yCAAyCZ,EAAG,mBAAmB,CAACmG,IAAI,YAAY7F,MAAM,CAAC,oBAAoB,QAAQ,QAAUP,EAAIkxE,kBAAkBpoE,MAAM,CAACvH,MAAOvB,EAAuB,oBAAE+I,SAAS,SAAUC,GAAMhJ,EAAImxE,oBAAoBnoE,CAAG,EAAEvH,WAAW,0BAA0B,GAAGxB,EAAG,MAAM,CAACA,EAAG,IAAI,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,qCAAqCZ,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,2BAA2B,MAAQb,EAAIoxE,cAAc,aAAapxE,EAAIa,GAAG,4BAA4BK,GAAG,CAAC,MAAQlB,EAAIqxE,oBAAoB,GAAGpxE,EAAG,YAAY,CAACG,YAAY,gBAAgBG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,oBAAoB,UAAYb,EAAIoxE,cAAc,cAAc,eAAelwE,GAAG,CAAC,YAAclB,EAAIsxE,uBAAuBrxE,EAAG,MAAM,CAACG,YAAY,kBAAkBG,MAAM,CAAC,KAAO,gBAAgB0I,KAAK,gBAAgB,CAAChJ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAAEJ,EAAIoyB,SAASpP,OAAS,EAAG/iB,EAAG,KAAK,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,uCAAuC,OAAOZ,EAAG,KAAK,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,iCAAiC,aAAaZ,EAAG,MAAM,CAACG,YAAY,kBAAkBG,MAAM,CAAC,KAAO,gBAAgB0I,KAAK,gBAAgB,CAAChJ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,yCAAyCc,GAAG,CAAC,MAAQlB,EAAIuxE,kBAAkB,CAACtxE,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,4BAA4BZ,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,QAAQ,cAAc,WAAW,QAAQ,IAAI,IAC3jH,EACI,GAAkB,GCtClB,GAAS,WAAkB,IAAIP,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,QAAQ,CAACG,YAAY,YAAYG,MAAM,CAAC,IAAMP,EAAIiQ,OAAO,CAACjQ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIuD,UAAUtD,EAAG,QAAQ,CAACmB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOvB,EAAW,QAAEyB,WAAW,WAAW,CAACJ,KAAK,WAAWC,QAAQ,aAAaC,MAAM,YAAcE,WAAW,gBAAgBK,MAAM,CAAE,aAAc9B,EAAIoK,OAAOC,IAAI,WAAY,+BAA+B,GAAO9J,MAAM,CAAC,GAAKP,EAAIiQ,KAAK,KAAO,OAAO,KAAO,WAAW/G,SAAS,CAAC,MAASlJ,EAAW,SAAGkB,GAAG,CAAC,MAAQ,CAAC,SAASQ,GAAWA,EAAOoK,OAAOC,YAAiB/L,EAAIwxE,QAAQ9vE,EAAOoK,OAAOvK,MAAK,EAAE,SAASG,GAAQ,OAAO1B,EAAIyxE,WAAW/vE,EAAOoK,OAAOvK,MAAM,OACrsB,EACI,GAAkB,GCFtB,MAAMmwE,GAAqB,CACzB,UAAAzrE,CAAY0N,EAAOyE,GACjB,MAAO,GAAGzE,gCACZ,EACA,QAAA0E,CAAU9W,EAAO6W,GACf,IAAImxB,EAAQooC,OAAO,+BACnB,OAAOpoC,EAAMlsC,KAAKkE,EACpB,GAGF,UCSE,MAAUgY,OAAO,YAAa,IAE9B,QACElY,KAAM,UACNkG,MAAO,CACLhE,MAAO,CACLP,KAAMwE,OACNC,QAAS,IAEXuI,QAASpF,QACTrJ,MAAO,CACLyB,KAAMkL,OACNtG,UAAU,IAGd,IAAAzF,GACE,MAAO,CACLqvE,QAAS,QACTI,QAAS,CACPjvD,KAAM,EACNC,OAAQ,GAGd,EACApZ,MAAO,CACL,KAAAjI,CAAO24B,GACDA,GAAQ5+B,KAAKqhD,QAAQziB,EAC3B,GAEF,OAAApyB,GACExM,KAAKqhD,QAAQrhD,KAAKiG,MACpB,EACAkB,QAAS,CACP,OAAAk6C,CAASlzC,GAEPnO,KAAKs2E,QAAQjvD,KAAOrnB,KAAKiG,MAAMohB,KAC/BrnB,KAAKs2E,QAAQhvD,OAAStnB,KAAKiG,MAAMqhB,OAEjC,IAAIivD,EAAMv2E,KAAKs2E,QAAQjvD,KAAO,EAAIrnB,KAAKs2E,QAAQjvD,KAAO,IAAIrnB,KAAKs2E,QAAQjvD,OACnEk6B,EAAOvhD,KAAKs2E,QAAQhvD,OAAS,EAAItnB,KAAKs2E,QAAQhvD,OAAS,IAAItnB,KAAKs2E,QAAQhvD,SAC5EtnB,KAAKk2E,QAAU,GAAGK,KAAOh1B,GAC3B,EACA,UAAA40B,CAAYhoE,GACV,IAAI8/B,EAAQooC,OAAO,+BACnB,GAAKpoC,EAAMlsC,KAAK/B,KAAKk2E,SAArB,CACA,IAAI1+C,EAAOx3B,KAAKk2E,QAAQtzE,MAAM,KAC1B2zE,EAAMlqE,OAAOmrB,EAAK,IAClB+pB,EAAOl1C,OAAOmrB,EAAK,IACnB++C,EAAM,IAAMA,EAAM,GAClBh1B,EAAO,IAAMA,EAAO,IACxBvhD,KAAKs2E,QAAQjvD,KAAOkvD,EACpBv2E,KAAKs2E,QAAQhvD,OAASi6B,EACtBvhD,KAAKyM,MAAM,QAASzM,KAAKs2E,SARM,CASjC,ICxEmI,MCQrI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI5xE,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACJ,EAAI2G,GAAI3G,EAAiB,eAAE,SAASytD,EAAK5mD,GAAO,OAAO5G,EAAG,MAAM,CAACI,IAAIotD,EAAKptD,IAAID,YAAY,iBAAiB,CAACH,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOksD,EAAW,OAAEhsD,WAAW,gBAAgBrB,YAAY,SAAS,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,qBAAqBC,MAAOvB,EAAI8xE,sBAAsBjrE,GAAQpF,WAAW,+BAA+BoqC,UAAU,CAAC,SAAU,KAAQzrC,YAAY,OAAOG,MAAM,CAAC,KAAO,qBAAqB,gBAAgB,OAASktD,EAAKptD,IAAI,YAAYL,EAAIoK,OAAOC,IAAI,OAASojD,EAAKptD,IAAM,uBAAuB,SAAU,EAAK,YAAcL,EAAIa,GAAG,kCAAkCiI,MAAM,CAACvH,MAAOksD,EAAS,KAAE1kD,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK0yC,EAAM,OAAQzkD,EAAI,EAAEvH,WAAW,gBAAgB,GAAGxB,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOksD,EAAW,OAAEhsD,WAAW,gBAAgBrB,YAAY,cAAc,CAACH,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,mCAAmC,MAAqC,IAA7B4sD,EAAKskB,oBAA0B,aAAa/xE,EAAIa,GAAG,oCAAoCK,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAIgyE,+BAA+BvkB,EAAM/rD,EAAO,MAAM,GAAGzB,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,cAAc,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOksD,EAAKie,QAAUje,EAAKskB,oBAAsB,EAAGtwE,WAAW,+CAA+C,CAACJ,KAAK,WAAWC,QAAQ,aAAaC,MAAM,kBAAoBE,WAAW,sBAAsBlB,MAAM,CAAC,MAAQoH,OAAO8lD,EAAKwkB,yBAAyB,KAAO,EAAE,IAAM,EAAE,IAAM,IAAM,KAAO,kBAAkB,gBAAgB,OAASxkB,EAAKptD,IAAI,YAAYL,EAAIoK,OAAOC,IAAI,OAASojD,EAAKptD,IAAM,oBAAoB,SAAU,GAAMa,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAIkyE,yBAAyBzkB,EAAM/rD,EAAO,MAAM,GAAGzB,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,OAAQksD,EAAKie,OAAQjqE,WAAW,iBAAiBrB,YAAY,UAAU,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAG6sD,EAAKpsD,SAAuC,IAA7BosD,EAAKskB,oBAA2B9xE,EAAG,OAAO,CAACD,EAAIQ,GAAG,KAAKR,EAAIY,GAAG6sD,EAAK0kB,aAAe1kB,EAAK0kB,aAAa7uE,OAAS,GAAG,OAAOrD,EAAG,OAAO,CAACD,EAAIQ,GAAG,KAAKR,EAAIY,GAAG6sD,EAAK0kB,aAAe1kB,EAAK0kB,aAAa7uE,OAAS,GAAG,IAAItD,EAAIY,GAAG6sD,EAAKskB,qBAAqB,SAAS9xE,EAAG,MAAM,CAACG,YAAY,oBAAoB0B,MAAM,CAAC,KAAQ2rD,EAAKie,SAAS,CAACzrE,EAAG,IAAI,CAACG,YAAY,YAAY0B,MAAM,CAAE,SAAY9B,EAAIoK,OAAOgoE,IAAI,OAAS3kB,EAAKptD,MAAOE,MAAM,CAAC,SAAW,IAAI,KAAO,uBAAuBW,GAAG,CAAC,MAAQ,SAASQ,GAAQ1B,EAAIoK,OAAOgoE,IAAI,OAAS3kB,EAAKptD,MAAQL,EAAIqyE,SAAS5kB,EAAK,IAAI,CAACxtD,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,MAAQP,EAAIa,GAAG,kBAAkB,KAAO4sD,EAAKie,OAAS,QAAU,aAAa,cAAc,WAAW,GAAGzrE,EAAG,IAAI,CAAC6B,MAAM,CAAE,SAAa2rD,EAAK0kB,cAAgB1kB,EAAK0kB,aAAa7uE,QAAWtD,EAAIsyE,YAAYhvE,QAAU,GAAI/C,MAAM,CAAC,SAAW,IAAI,KAAO,uBAAuBW,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAIuyE,WAAW1rE,EAAM,IAAI,CAAC5G,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,MAAQP,EAAIwyE,eAAe/kB,GAAM,KAAO,QAAQ,cAAc,WAAW,MAAM,IAAGxtD,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,aAAa,CAACM,MAAM,CAAC,KAAO,SAAS,CAAEP,EAAiB,cAAEC,EAAG,MAAM,CAACG,YAAY,WAAW,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6B,OAAOb,EAAIS,QAAQ,GAAGR,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,YAAY,CAACG,YAAY,cAAcG,MAAM,CAAC,KAAO,EAAE,SAAWP,EAAIyyE,UAAU,MAAQzyE,EAAIa,GAAG,qBAAqB,WAAa,EAAE,cAAc,WAAWK,GAAG,CAAC,QAAUlB,EAAI0yE,YAAY,MAAM,QACxmH,EACI,GAAkB,GCsFtB,KAOA,wBACA,sBACA,YACA,aACA,eACA,iBACA,aAEA,sBACA,OAEA,OACA,WACA,8BAEA,SACA,YACA,cAGA,gBACA,OACA,eAEA,EACA,UACA,yBAEA,QACA,EACA,qBAEA,wDACA,0CACA,IACA,EACA,eACA,eAEA,uBACA,EACA,gBAEA,yCACA,2BACA,UACA,yEACA,UAEA,GACA,IAGA,OACA,yBAEA,aACA,GAEA,mBAEA,6BACA,EACA,SACA,kCAEA,kIACA,EACA,6CACA,mDACA,EACA,uCACA,yDACA,EACA,mBAEA,2CACA,uBACA,IAEA,oDACA,QAEA,qBACA,sBACA,2BACA,UACA,UAEA,EACA,kBAEA,gBAEA,sCAEA,EACA,qBACA,mBAEA,uBACA,EACA,uBAEA,6GAEA,gCAEA,EACA,2BACA,+FAEA,yDACA,2BACA,KCjN+P,MCQ3P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI1yE,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAAEJ,EAAS,MAAEC,EAAG,QAAQ,CAACG,YAAY,YAAYG,MAAM,CAAC,IAAMP,EAAIiQ,OAAO,CAACjQ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIuD,UAAUvD,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACJ,EAAI2G,GAAI3G,EAAS,OAAE,SAAS2yE,GAAU,OAAO1yE,EAAG,IAAI,CAACI,IAAIsyE,EAAS/sE,IAAI,CAAC5F,EAAIQ,GAAG,IAAIR,EAAIY,GAAG+xE,EAAStxE,MAAM,KAAMsxE,EAASZ,oBAAsB,EAAG9xE,EAAG,OAAO,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAG+xE,EAASR,aAAa7uE,QAAQ,IAAItD,EAAIY,GAAG+xE,EAASZ,qBAAqB,OAAO9xE,EAAG,OAAO,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAG+xE,EAASR,aAAa7uE,QAAQ,QAAQ,KAAKtD,EAAIuB,OAAUvB,EAAIuB,OAA6B,GAApBvB,EAAIuB,MAAM+B,OAAcrD,EAAG,MAAM,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,sBAAsB,OAAOb,EAAIS,MAAM,QAC3wB,EACI,GAAkB,GCmBpB,IACEY,KAAM,iBACN2G,WAAY,CACZ,EACAT,MAAO,CACLhG,MAAO,CACLyB,KAAMtF,MACN,UACE,MAAO,EACT,GAEF6F,MAAO,CACLP,KAAMwE,OACNC,QAAS,MClC4H,MCQzI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIzH,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,QAAQ,CAACG,YAAY,cAAc,CAACH,EAAG,QAAQ,CAACG,YAAY,eAAe,CAACH,EAAG,KAAKD,EAAI2G,GAAI3G,EAAW,SAAE,SAAS4yE,EAAOllE,GAAG,OAAOzN,EAAG,KAAK,CAACI,IAAIqN,EAAE5L,MAAM9B,EAAI6yE,YAAYD,GAAQ1xE,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAIgF,OAAO4tE,EAAO,IAAI,CAAC5yE,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI8yE,aAAaF,IAAS,KAAK3yE,EAAG,OAAO,CAACG,YAAY,QAAQ0B,MAAM9B,EAAI+yE,WAAWH,EAAOvxE,MAAQ,EAAI,MAAQ,SAAS,IAAG,KAAKpB,EAAG,QAAQ,CAAGD,EAAIgzE,cAAiBhzE,EAAIgzE,aAAa1vE,OAAgJtD,EAAIS,KAA5IR,EAAG,KAAK,CAACA,EAAG,KAAK,CAACG,YAAY,SAASG,MAAM,CAAC,QAAUP,EAAIizE,QAAQ3vE,SAAS,CAACtD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,wBAAwB,SAAkBb,EAAI2G,GAAI3G,EAAgB,cAAE,SAASkzE,EAAQxlE,GAAG,OAAOzN,EAAG,KAAK,CAACI,IAAIqN,GAAG1N,EAAI2G,GAAI3G,EAAW,SAAE,SAASmzE,EAAUl5C,GAAG,OAAOh6B,EAAG,KAAK,CAACI,IAAI45B,EAAEn4B,MAAM9B,EAAI6yE,YAAYM,IAAY,CAAEnzE,EAAIozE,kBAAkBD,GAAYlzE,EAAG,MAAM,CAAED,EAAIqzE,QAAQF,EAAWD,GAAUjzE,EAAG,MAAM,CAACA,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO4yE,EAAUG,UAAUpyE,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAIuzE,0BAA0BL,EAAQ,MAAM,GAAGlzE,EAAIS,OAA2B,iBAAnB0yE,EAAU9xE,KAAyBpB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAO,YAAY2I,SAAS,CAAC,QAAUgqE,EAAQC,EAAU9xE,OAAOH,GAAG,CAAC,OAAS,SAASQ,GAAQ,OAAO1B,EAAI+H,MAAM,SAAUmrE,EAAQ,OAA2B,WAAnBC,EAAU9xE,KAAmBpB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAO,YAAY2I,SAAS,CAAC,QAAUgqE,EAAQC,EAAU9xE,OAAOH,GAAG,CAAC,OAAS,SAASQ,GAAQ,OAAO1B,EAAI+H,MAAM,gBAAiBmrE,EAAQ,OAAOjzE,EAAG,MAAM,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIwzE,WAAWN,EAAQC,EAAU9xE,QAAQ,QAAQ,IAAG,EAAE,KAAI,UAChvD,EACI,GAAkB,GC0DtB,wBACA,6BACA,OACA,OACA,WACA,+BAGA,gBACA,OACA,WACA,cACA,UACA,aAEA,CACA,eACA,mCAEA,CACA,aACA,4BAEA,CACA,aACA,4BAEA,CACA,kBACA,mCAEA,CACA,YACA,mCAEA,CACA,oBACA,mCAEA,CACA,aACA,2BACA,qCACA,wBAEA,CACA,cACA,oCAEA,aACA,mCAEA,EACA,UACA,wBACA,mBACA,+CACA,wBACA,oBAsBA,OApBA,IACA,wBACA,6CACA,OACA,aACA,cACA,aAEA,GACA,KAGA,IACA,gCAGA,OAFA,OACA,QACA,mBACA,KAGA,CACA,EACA,wBACA,SAkBA,OAjBA,qCACA,yCACA,QACA,QACA,YACA,wCACA,uBACA,cACA,cACA,qBACA,oBACA,iBACA,4BACA,iBAEA,GACA,IACA,CACA,GAGA,8BACA,kCACA,sBACA,GACA,EACA,SACA,uBACA,uBACA,kCAEA,CACA,EACA,8BACA,SAMA,OAJA,aACA,MAGA,CACA,EACA,sBACA,aAEA,YAKA,EACA,wBACA,iBAQA,OAPA,wBACA,cAEA,aACA,gBAGA,CACA,EACA,mBACA,oBACA,kDACA,EACA,yBACA,2BACA,2DAEA,yCACA,EAEA,yCAGA,IAFA,SACA,gBACA,oBACA,sCACA,S,CAEA,QACA,EACA,mCACA,sBACA,EACA,6BACA,6BACA,EACA,sCACA,SACA,mEACA,aACA,UACA,gBACA,oBACA,yBACA,+BACA,aAGA,EACA,wBACA,SACA,2CAEA,EACA,KC1PsQ,MCQlQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIrB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,mCAAmC,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+B,WAAYb,EAAkB,eAAEC,EAAG,MAAM,CAACG,YAAY,OAAO,CAAGJ,EAAIyzE,UAAuXxzE,EAAG,eAAe,CAACM,MAAM,CAAC,KAAO,oBAAoBuI,MAAM,CAACvH,MAAOvB,EAAiB,cAAE+I,SAAS,SAAUC,GAAMhJ,EAAI0zE,cAAc1qE,CAAG,EAAEvH,WAAW,mBAA7fxB,EAAG,eAAe,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,oBAAsBE,WAAW,wBAAwBlB,MAAM,CAAC,KAAO,mBAAmB,YAAYP,EAAIoK,OAAOC,IAAI,qBAAqBnJ,GAAG,CAAC,OAASlB,EAAI2zE,uBAAuB7qE,MAAM,CAACvH,MAAOvB,EAAiB,cAAE+I,SAAS,SAAUC,GAAMhJ,EAAI0zE,cAAc1qE,CAAG,EAAEvH,WAAW,mBAAuLxB,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,QAAQ,CAACG,YAAY,uBAAuB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,gDAAiDb,EAAoB,iBAAEC,EAAG,IAAI,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIqiB,kBAAkB,OAAOriB,EAAIS,KAAKR,EAAG,gBAAgB,CAACM,MAAM,CAAC,KAAO,GAAGuI,MAAM,CAACvH,MAAOvB,EAAI4zE,iBAAyB,SAAE7qE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI4zE,iBAAkB,WAAY5qE,EAAI,EAAEvH,WAAW,gCAAgC,GAAGxB,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,gBAAgB,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,kBAAoBE,WAAW,sBAAsBlB,MAAM,CAAC,MAAQP,EAAIa,GAAG,8BAA8B,aAAab,EAAIa,GAAG,8BAA8B,KAAO,mBAAmB,cAAa,EAAK,kBAAiB,EAAM,YAAYb,EAAIoK,OAAOC,IAAI,qBAAqBvB,MAAM,CAACvH,MAAOvB,EAAI4zE,iBAAiC,iBAAE7qE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI4zE,iBAAkB,mBAAoB5qE,EAAI,EAAEvH,WAAW,wCAAwC,GAAGxB,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,kBAAkB,cAAc,QAAQK,GAAG,CAAC,KAAOlB,EAAIwyC,WAAW,IAAI,GAAGvyC,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,kCAAkC,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+B,OAAOZ,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,kBAAkB,UAAW,MAAS,QAC73E,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIb,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAAC6B,MAAM,CAAE,cAAe9B,EAAIgQ,QAAS,cAAgB,IAAQhQ,EAAI2G,GAAI3G,EAAQ,MAAE,SAAS5C,GAAM,OAAO6C,EAAG,WAAW,CAACI,IAAIjD,EAAKwI,GAAGrF,MAAM,CAAC,mBAAmB,WAAW,MAAQnD,EAAK4J,KAAK,UAAU,IAAI9F,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAI6W,UAAUzZ,EAAK,GAAG0L,MAAM,CAACvH,MAAOnE,EAAa,SAAE2L,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK3d,EAAM,WAAY4L,EAAI,EAAEvH,WAAW,kBAAkB,IAAG,MACpiB,EACI,GAAkB,GCmBtB,wBACA,8BACA,yBACA,OACA,YACA,gBAEA,OACA,MACA,WACA,8BAEA,SACA,aACA,aAGA,SACA,sBACA,8BACA,KCzC8P,MCQ1P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC6DhC,wBACA,iBACA,YACA,YACA,iBACA,gBACA,kBAEA,OACA,WACA,aACA,YAEA,aACA,aACA,YAEA,OACA,WACA,mBACA,QACA,GAEA,kBACA,YACA,YAEA,WACA,YACA,eAGA,gBACA,OACA,iBACA,kBACA,WACA,YACA,oBACA,4BAGA,EACA,UACA,0BACA,uDACA,GAEA,uB,EAAA,OAEA,wGAIA,kDACA,mJACA,qBACA,SAIA,OAFA,sFAEA,CACA,WACA,YACA,WAEA,GACA,EACA,SACA,iCACA,4CACA,EACA,2BACA,WAaA,OAXA,oBACA,iEAEA,YACA,cACA,EAIA,IAEA,CACA,EACA,6BACA,gDACA,IACA,2CACA,yCACA,mCAEA,mCAEA,uBACA,6BACA,GACA,KCpL0P,MCQtP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIzB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+B,WAAYb,EAAkB,eAAEC,EAAG,MAAM,CAACG,YAAY,OAAO,CAAGJ,EAAIyzE,UAAuXxzE,EAAG,eAAe,CAACM,MAAM,CAAC,KAAO,oBAAoBuI,MAAM,CAACvH,MAAOvB,EAAiB,cAAE+I,SAAS,SAAUC,GAAMhJ,EAAI0zE,cAAc1qE,CAAG,EAAEvH,WAAW,mBAA7fxB,EAAG,eAAe,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,oBAAsBE,WAAW,wBAAwBlB,MAAM,CAAC,KAAO,mBAAmB,YAAYP,EAAIoK,OAAOC,IAAI,qBAAqBnJ,GAAG,CAAC,OAASlB,EAAI2zE,uBAAuB7qE,MAAM,CAACvH,MAAOvB,EAAiB,cAAE+I,SAAS,SAAUC,GAAMhJ,EAAI0zE,cAAc1qE,CAAG,EAAEvH,WAAW,mBAAuLxB,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,uBAAyB,KAAK,KAAO,sBAAsB,YAAYb,EAAIoK,OAAOC,IAAI,wBAAwBvB,MAAM,CAACvH,MAAOvB,EAAI4zE,iBAA0B,UAAE7qE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI4zE,iBAAkB,YAAa5qE,EAAI,EAAEvH,WAAW,gCAAgCxB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,sBAAwB,KAAK,KAAO,qBAAqB,YAAYb,EAAIoK,OAAOC,IAAI,uBAAuBvB,MAAM,CAACvH,MAAOvB,EAAI4zE,iBAAyB,SAAE7qE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI4zE,iBAAkB,WAAY5qE,EAAI,EAAEvH,WAAW,gCAAgC,GAAGxB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,iBAAmBE,WAAW,qBAAqBlB,MAAM,CAAC,KAAOP,EAAIa,GAAG,mBAAqB,KAAK,KAAO,kBAAkB,YAAYb,EAAIoK,OAAOC,IAAI,oBAAoBvB,MAAM,CAACvH,MAAOvB,EAAI4zE,iBAAsB,MAAE7qE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI4zE,iBAAkB,QAAS5qE,EAAI,EAAEvH,WAAW,6BAA6B,GAAGxB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAelB,MAAM,CAAC,KAAOP,EAAIa,GAAG,mBAAqB,KAAK,KAAO,kBAAkB,YAAYb,EAAIoK,OAAOC,IAAI,oBAAoBvB,MAAM,CAACvH,MAAOvB,EAAI4zE,iBAAsB,MAAE7qE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI4zE,iBAAkB,QAAS5qE,EAAI,EAAEvH,WAAW,6BAA6B,GAAGxB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,YAAY,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,oBAAsBE,WAAW,wBAAwBlB,MAAM,CAAC,KAAOP,EAAIa,GAAG,qBAAuB,KAAK,KAAO,oBAAoB,YAAYb,EAAIoK,OAAOC,IAAI,sBAAsBvB,MAAM,CAACvH,MAAOvB,EAAI4zE,iBAAwB,QAAE7qE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI4zE,iBAAkB,UAAW5qE,EAAI,EAAEvH,WAAW,+BAA+B,GAAGxB,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,QAAQ,CAACG,YAAY,uBAAuB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,gDAAiDb,EAAoB,iBAAEC,EAAG,IAAI,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIqiB,kBAAkB,OAAOriB,EAAIS,KAAKR,EAAG,gBAAgB,CAACM,MAAM,CAAC,KAAO,GAAGuI,MAAM,CAACvH,MAAOvB,EAAI4zE,iBAAyB,SAAE7qE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI4zE,iBAAkB,WAAY5qE,EAAI,EAAEvH,WAAW,gCAAgC,GAAGxB,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,6BAA6B,aAAab,EAAIa,GAAG,8BAA8BiI,MAAM,CAACvH,MAAOvB,EAAI4zE,iBAAgC,gBAAE7qE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI4zE,iBAAkB,kBAAmB5qE,EAAI,EAAEvH,WAAW,uCAAuC,GAAGxB,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,gBAAgB,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,kBAAoBE,WAAW,sBAAsBlB,MAAM,CAAC,MAAQP,EAAIa,GAAG,8BAA8B,aAAab,EAAIa,GAAG,8BAA8B,KAAO,mBAAmB,cAAa,EAAK,kBAAiB,EAAM,YAAYb,EAAIoK,OAAOC,IAAI,qBAAqBvB,MAAM,CAACvH,MAAOvB,EAAI4zE,iBAAiC,iBAAE7qE,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAK/a,EAAI4zE,iBAAkB,mBAAoB5qE,EAAI,EAAEvH,WAAW,wCAAwC,GAAGxB,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,kBAAkB,cAAc,QAAQK,GAAG,CAAC,KAAOlB,EAAIwyC,WAAW,IAAI,GAAGvyC,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,kCAAkC,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+B,OAAOZ,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,kBAAkB,UAAW,MAAS,QAC50J,EACI,GAAkB,GC8HtB,wBACA,uBACA,YACA,YACA,aACA,iBACA,gBACA,kBAEA,OACA,SACA,YACA,cAEA,WACA,aACA,YAEA,OACA,WACA,mBACA,QACA,GAEA,kBACA,YACA,YAEA,mBACA,YACA,eAGA,gBACA,OACA,iBACA,kBACA,WACA,aACA,YACA,SACA,SACA,WACA,mBACA,6BACA,YACA,oBACA,4BAGA,EACA,UACA,0BACA,uDACA,GAEA,8BACA,mFACA,IACA,0CACA,oCACA,4CACA,0CACA,oCACA,yCAIA,kDACA,mKACA,qBACA,SAIA,OAFA,sDAEA,CACA,WACA,YACA,WAEA,GACA,EACA,SACA,iCACA,4CACA,EACA,6BACA,gDACA,IACA,2CACA,yCACA,mCAEA,mCAEA,uBACA,6BACA,GACA,KClOgQ,MCQ5P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIb,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,qCAAsCb,EAAc,WAAEC,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,WAAW,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,QAAUE,WAAW,YAAYlB,MAAM,CAAC,aAAa,QAAQ,YAAcP,EAAIolC,gBAAgB,KAAO,uBAAuB,YAAYplC,EAAIoK,OAAOC,IAAI,yBAAyBvB,MAAM,CAACvH,MAAOvB,EAAc,WAAE+I,SAAS,SAAUC,GAAMhJ,EAAImd,WAAWnU,CAAG,EAAEvH,WAAW,iBAAiB,GAAGxB,EAAG,YAAY,CAACG,YAAY,aAAaG,MAAM,CAAC,KAAO,EAAE,MAAQP,EAAIa,GAAG,sBAAsB,cAAc,YAAYK,GAAG,CAAC,SAAWlB,EAAIslC,eAAe,KAAKtlC,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,OAAO,CAAEJ,EAAU,OAAEC,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAc,WAAEC,EAAG,OAAOD,EAAI2G,GAAI3G,EAAkB,gBAAE,SAAS+9B,GAAO,OAAO99B,EAAG,OAAO,CAACI,IAAI09B,EAAMzpB,MAAMxS,MAAM,CAAC,SAAY9B,EAAI6zE,WAAW91C,IAAQx9B,MAAM,CAAC,eAAeP,EAAI6zE,WAAW91C,IAAQ78B,GAAG,CAAC,OAAS,SAASQ,GAAQ,OAAO1B,EAAIulC,cAAcxH,EAAM,GAAGj1B,MAAM,CAACvH,MAAOw8B,EAAW,MAAEh1B,SAAS,SAAUC,GAAMhJ,EAAI+a,KAAKgjB,EAAO,QAAS/0B,EAAI,EAAEvH,WAAW,gBAAgB,IAAG,GAAGxB,EAAG,MAAMD,EAAI2G,GAAI3G,EAAkB,gBAAE,SAAS+9B,GAAO,OAAO99B,EAAG,MAAM,CAACI,IAAI09B,EAAMzpB,OAAO,CAACtU,EAAIQ,GAAG,IAAIR,EAAIY,GAAGm9B,EAAMzpB,OAAO,MAAM,IAAG,KAAKtU,EAAIS,QAC5+C,EACI,GAAkB,GCuDtB,wBACA,mBACA,YACA,YACA,YACA,SAEA,OACA,QACA,WACA,mBACA,QACA,GAEA,YACA,aACA,aAGA,gBACA,OACA,kBAEA,EACA,UACA,2BACA,oDACA,EACA,0BACA,2DACA,oBACA,KAEA,4DAEA,GACA,GAEA,SACA,iCACA,gDACA,2CAGA,IACA,0JACA,gDAGA,oBACA,GACA,EACA,0BACA,2BACA,EACA,uBACA,0CACA,KClH4P,MCQxP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,6BAA6B,CAACH,EAAG,gBAAgB,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,wBAA0BE,WAAW,4BAA4BlB,MAAM,CAAC,KAAOP,EAAIqT,KAAK,YAAcrT,EAAImL,YAAY,SAAWnL,EAAI4H,SAAS,SAAW5H,EAAIiD,SAAS,KAAO,iCAAiC,WAAWjD,EAAIgQ,UAAYhQ,EAAIoK,OAAOC,IAAI,kCAAkC,MAAQrK,EAAI8jB,eAAe,KAAO9jB,EAAIg5B,YAAY93B,GAAG,CAAC,MAAQlB,EAAIi5B,WAAWh5B,EAAG,WAAW,CAACG,YAAY,KAAKG,MAAM,CAAC,GAAKP,EAAIg5B,aAAah5B,EAAI2G,GAAI3G,EAAsB,oBAAE,SAAS5C,GAAM,OAAO6C,EAAG,SAAS,CAACI,IAAIjD,EAAKwI,GAAG9D,MAAM,CAAE,mBAAsB1E,EAAK2mB,qBAAsB,CAAC/jB,EAAIQ,GAAG,IAAIR,EAAIY,GAAGxD,EAAKiE,MAAM,MAAM,IAAG,IAAI,EAC1xB,EACI,GAAkB,GCuBpB,IACEA,KAAM,0BACN2G,WAAY,CAAEmxB,cAAa,IAC3B5xB,MAAO,CACL8L,KAAM,CACJrQ,KAAMwE,OACNC,QAAS,IAEXlG,MAAO,CACLyB,KAAMkL,OACNzG,QAAS,KACA,CACLsc,mBAAoB,KACpBC,YAAa,QAInB7Y,YAAa,CACXnI,KAAMwE,OACNC,QAAS,IAEXG,SAAUgD,QACV3H,SAAU2H,QACVoF,QAASpF,SAEX,IAAAzI,GACE,MAAO,CACL2hB,eAAgB,GAEpB,EACAxhB,SAAU,CACR,UAAA02B,GACE,MAAO,YAAY19B,KAAK2U,MAC1B,EACA,kBAAA6jE,GAEE,MAAMC,EAAgC,EAChCC,EAA6B,IAC7BC,EAA4B,IAClC,IAAIh5D,EAAO,GAEX,IAAK3f,KAAK8G,OAAOlF,MAAMw8B,eAAiBp+B,KAAK8G,OAAOlF,MAAMw8B,aAAap2B,OAAQ,OAAO2X,EAEtF,IAAK,IAAI0e,EAAmB,EAAGA,EAAmBr+B,KAAK8G,OAAOlF,MAAMw8B,aAAap2B,OAAQq2B,IAAoB,CAC3G,IAAIC,EAAct+B,KAAK8G,OAAOlF,MAAMw8B,aAAaC,GAEjD1e,EAAKhf,KAAK,CACRgkB,KAAM,GAAG8zD,KAAiCn6C,EAAYh0B,KACtDvE,KAAMu4B,EAAYv4B,KAClByiB,eAAgB,CACdC,mBAAoBgwD,EACpB/vD,YAAa4V,EAAYh0B,KAG/B,CAEA,IAAKtK,KAAK8G,OAAOlF,MAAM28B,YAAcv+B,KAAK8G,OAAOlF,MAAM28B,UAAUv2B,OAAQ,OAAO2X,EAEhF,IAAK,IAAI6e,EAAgB,EAAGA,EAAgBx+B,KAAK8G,OAAOlF,MAAM28B,UAAUv2B,OAAQw2B,IAAiB,CAC/F,IAAIC,EAAWz+B,KAAK8G,OAAOlF,MAAM28B,UAAUC,GACvC5oB,EAAWlU,EAAEgI,OAAOhI,EAAE+R,OAAOzT,KAAK8G,OAAOlF,MAAMgU,UAAW6O,GAErDA,EAAQia,aAAeD,EAASn0B,MACpCma,GAEIA,EAAQ1e,OAGjB4Z,EAAKhf,KAAK,CACRgkB,KAAM,GAAG+zD,KAA8Bj6C,EAASn0B,KAChDvE,KAAM04B,EAAS14B,KAAKke,cACpBuE,eAAgB,CACdC,mBAAoBiwD,EACpBhwD,YAAa+V,EAASn0B,MAI1B,IAAK,IAAIq0B,EAAI,EAAGA,EAAI/oB,EAAS5N,OAAQ22B,IAAK,CACxC,IAAIla,EAAU7O,EAAS+oB,GACvBhf,EAAKhf,KAAK,CACRgkB,KAAM,GAAGg0D,KAA6Bl0D,EAAQna,KAC9CvE,KAAM0e,EAAQ1e,KACdyiB,eAAgB,CACdC,mBAAoBkwD,EACpBjwD,YAAajE,EAAQna,KAG3B,CACF,CACA,OAAOqV,CACT,GAEFzR,MAAO,CACL,KAAAjI,CAAO24B,GACL5+B,KAAK6+B,YAAYD,EACnB,GAEF,OAAA91B,GACE,IAAIC,EAAO/I,KACXA,KAAKyY,WAAWwF,OAAO,wBAAyB,CAC9C,UAAAtT,CAAY0N,EAAOyE,GACjB,MAAO,wBACT,EACA,QAAAC,CAAU9W,EAAO6W,GAEf,IAAIhb,EAAOJ,EAAEO,KAAK8G,EAAKyvE,oBAAqBhwD,GACnCA,EAAeziB,OAASE,IAGjC,QAAKnE,CAKP,GAEJ,EACA,OAAA0K,GACMxM,KAAKiG,OACPjG,KAAK6+B,YAAY7+B,KAAKiG,MAE1B,EACAkB,QAAS,CACP,WAAA03B,CAAa1wB,GACX,GAAKA,EAEE,CACL,IAAI2wB,EAAKp9B,EAAEO,KAAKjC,KAAKw4E,oBAAqBhwD,GACjCA,EAAe7D,OAAS,GAAGxW,EAAIsa,sBAAsBta,EAAIua,gBAGhE1oB,KAAKwoB,eADHsW,EACoBA,EAAG/4B,KAEH,IAE1B,MAVE/F,KAAKwoB,eAAiB,IAW1B,EACA,OAAAmV,CAASi7C,GACP54E,KAAKwoB,eAAiBowD,EACtB,IAAI7vE,EAAO/I,KACXA,KAAKyY,WAAWsE,WAAWxZ,MAAKuvB,IAC9B,GAAIA,EAAQ,CACV,IAAIhxB,EAAOJ,EAAEO,KAAK8G,EAAKyvE,oBAAqB12E,GACnCA,EAAKiE,KAAK5F,gBAAkBy4E,EAAmBz4E,gBAGxD,IAAK2B,EAEH,YADAiH,EAAK0D,MAAM,QAAS,MAItB,IAAI5F,EAAO/E,EAAK0mB,eAEhBzf,EAAK0D,MAAM,QAAS5F,EACtB,IAEJ,ICrLgJ,MCQlJ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAInC,EAAI1E,KAAQ0E,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOH,EAAIM,GAAG,EACvG,EACI,GAAkB,CAAC,WAAY,IAAIN,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,oCAChK,GCMA,wBACA,iBACA,mBAGA,wBAEA,sCACA,CACA,uCACA,+BACA,eACA,MACA,+GAGA,4CACA,UACA,mB,CAGA,IC9B0P,MCOtP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,UCfhC,aAAI8X,IAAI,OAER,MAAMi8D,GAA6B,CACjC,UAAAluE,CAAY0N,EAAOyE,GACjB,MAAO,iCACT,EACA,QAAAC,CAAU9W,EAAO6W,GACf,IAAIxE,EAAOrS,EAAMyiB,YAAc,EAC/B,OAAOpQ,CACT,GAGF,UCfI,GAAS,WAAkB,IAAI5T,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,SAASc,GAAG,CAAC,MAAQlB,EAAIo0E,iBAAiB,CAACn0E,EAAG,OAAO,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIuD,UAA4B,YAAjBvD,EAAIq0E,SAAwBp0E,EAAG,MAAM,CAAED,EAAa,UAAEC,EAAG,oBAAoB,CAACG,YAAY,oBAAoBG,MAAM,CAAC,KAAO,aAAa,cAAc,UAAUN,EAAG,oBAAoB,CAACG,YAAY,oBAAoBG,MAAM,CAAC,KAAO,eAAe,cAAc,WAAW,IAAIP,EAAIq0E,SAAuBp0E,EAAG,MAAM,CAACA,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,aAAa,cAAc,WAAW,MAAwHP,EAAIquC,UAA2CruC,EAAIS,KAApCR,EAAG,MAAM,CAACD,EAAI6M,GAAG,YAAY,IACn1B,EACI,GAAkB,GC+BtB,wBACA,2BACA,OACA,OACA,YACA,aAEA,aACA,aACA,YAEA,YACA,aACA,YAEA,kBACA,aACA,aAGA,gBACA,OACA,gCAEA,EACA,UAEA,oBACA,0CACA,YACA,kCACA,SAGA,GAEA,SACA,0BACA,8BACA,KCxE6Q,MCQzQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QC65C9B,MAAU0M,OAAO,cAAe,IAChC,MAAUA,OAAO,eAAgB,IACjC,MAAUA,OAAO,oBAAqB,IAEtC,QACElY,KAAM,QACN8gB,SAAU,YACVna,WAAY,CACVssE,eAAc,GACd90C,KAAI,GACJ+0C,qBAAoB,GACpBj6D,cAAa,GACb8rD,QAAO,GACPl4C,UAAS,GACTsmD,aAAY,GACZC,cAAa,GACbC,cAAa,GACb92D,UAAS,EACT+2D,WAAU,GACVC,WAAU,GACVC,eAAc,GACdC,YAAW,GACXpb,iBAAgB,GAChBqb,OAAM,OACNC,UAAS,UACTC,eAAc,GACdC,eAAc,GACdC,sBAAqB,GACrBC,UAAS,GACTC,gBAAe,GACfC,YAAW,GACXC,uBAAsB,GACtBryC,QAAO,GACPsyC,UAAS,GACTC,QAAO,IAETznE,OAAQ,CAAC,GACA0nE,GACA,GACA,IACT,IAAAvzE,GACE,MAAO,CACLwzE,aAAc,KACdC,eAAgB,GAChBC,SAAU,GACVzkE,SAAU,GACVggE,eAAe,EACf0E,UAAW,KACX9K,YAAa,KACb9F,SAAU,KACV6Q,gBAAgB,EAChBlrC,WAAW,EACXmrC,aAAa,EACbrF,UAAW,EACXsF,mBAAoB,CAAC,GAAI,IAAK,IAC9BC,UAAW,KACXpK,mBAAoB,CAAC,EACrBsB,aAAa,EACb+D,oBAAqB,EACrB1D,eAAgB,KAChBF,oBAAqB,EACrBnB,iBAAiB,EACjB5pE,UAAW,GACX28D,kBAAmB,GACnB/sC,SAAU,CACRxsB,IAAK,EACLvE,KAAM,GACNquE,kBAAmB,EACnBrtD,iBAAkB,GAClBC,YAAa,GACbC,KAAM,GACN3mB,SAAU,GACV4mB,MAAO,GACPC,WAAY,GACZC,UAAW,CACTpM,IAAK,EACLG,MAAO,EACPC,KAAM,EACNiM,KAAM,EACNC,OAAQ,GAEVC,QAAS,CACPvM,IAAK,EACLG,MAAO,EACPC,KAAM,EACNiM,KAAM,EACNC,OAAQ,GAEVE,UAAU,EACVC,UAAW,EACXC,OAAQ,EACRC,qBAAsB,KACtB3R,cAAe,GACfoO,QAAS,GACTlO,KAAM,GACN0R,QAAS,CACP9O,UAAW,GACXC,SAAU,GACVC,MAAO,GACPC,MAAO,IAET4O,aAAc,GACdC,MAAO,GACPC,WAAY,GACZC,SAAU,GACVC,cAAe,GACfC,UAAW,GACXC,UAAU,EACVC,UAAU,EACVosD,kBAAkB,EAClBnsD,SAAU,GACVC,SAAU,EACV5gB,KAAM,EACN6gB,YAAa,GACbC,eAAgB,CACdC,mBAAoB,KACpBC,YAAa,MAEfxhB,UAAW,GAGbgsE,oBAAqB,CAAC,EACtB3zB,kBAAmB,CACjBO,WAAY,CACV+6B,QAAS,eACTC,OAAQ,iBACR,aAAc,OACd,gBAAiB,OACjB36B,MAAO,YAGXgwB,eAAe,EACfiB,gBAAgB,EAChB6B,oBAAoB,EACpBW,eAAe,EACfI,mBAAmB,EACnBW,0BAA0B,EAC1Bb,uBAAuB,EACvBI,kBAAkB,EAClBnE,OAAO,EACPK,QAAQ,EACRoD,UAAW,CAET/8D,IAAK,MACLC,IAAK,OAEP+8D,QAAS,EACTF,cAAc,EACdwH,QAAS,GACTrH,eAAe,EACfsH,YAAY,EACZC,WAAW,EACX1G,oBAAoB,EACpB2G,wBAAyB,KACzBC,YAAa,GACb97B,aAAc,EACdy1B,qBAAsB,CACpBvY,SAAU,GACV6e,sBAAuB,GAEzBxG,6BAA8B,GAC9BO,qBAAsB,GACtBkG,mBAAoB,EAExB,EACA,QAAAC,GACE,MAAO,CACLC,KAAM,CAAC,CAAEC,SAAU,WAAYjjC,QAASv4C,KAAK+1B,YAAYhwB,MAAQ,CAAEy1E,SAAU,SAAUjjC,QAASl4C,OAAOC,SAASC,MAAQ,CAAEi7E,SAAU,WAAYjjC,QAASv4C,KAAK82B,SAAShP,QAE3K,EACA9gB,SAAU,CACR,SAAAwC,GACE,OAAIxJ,KAAK8G,OAAOlF,MAAM2H,QAAQC,UAAoBxJ,KAAK8G,OAAOlF,MAAM2H,QAAQC,UAA0B,IACxG,EACA,mBAAAq0D,GACE,OAAI79D,KAAKy7E,wBACAz7E,KAAK07E,oCAAoC17E,KAAK80E,qBAAqBsG,uBAGrEp7E,KAAKuF,GAAG,sCACjB,EAEA,uBAAAk2E,GACE,OAAOz7E,KAAK80E,qBAAqBvY,UAC/Bv8D,KAAK80E,qBAAqBvY,SAASv0D,OAAS,CAChD,EACA,gBAAA01D,GACE,OAAI19D,KAAK80E,sBAAsBvY,UAAYv8D,KAAK80E,sBAAsBvY,SAASv0D,OAAS,EAC/EhI,KAAK80E,qBAAqBvY,SAASzhD,KAAI6gE,GAAKA,EAAE3iE,QAAO7C,KAAK,MAG5D,EACT,EACAy/D,iBAAkB,WAChB,IAAI3uE,EAAU,GACV20E,EAAU57E,KAAKuF,GAAG,6BAClBs2E,EAAU77E,KAAKuF,GAAG,6BAItB,OAHA0B,EAAQtG,KAAK,CAAEsF,MAAO,EAAGyF,KAAMkwE,IAC/B30E,EAAQtG,KAAK,CAAEsF,MAAO,EAAGyF,KAAMmwE,IAExB50E,CACT,EACA60E,6BAA8B,WAC5B,OAAiC,IAA7B97E,KAAK61E,mBAKX,EACA,kBAAAjF,GACE,OAAK5wE,KAAK82B,SAAStO,eAIZ,CACLC,mBACEzoB,KAAK82B,SAAStO,eAAeC,oBAAsB,EAC/Cpc,OAAOrM,KAAK82B,SAAStO,eAAeC,oBACpC,KACNC,YAAa1oB,KAAK82B,SAAStO,eAAeE,YACtCrc,OAAOrM,KAAK82B,SAAStO,eAAeE,aACpC,KACJpe,GAAItK,KAAK82B,SAAStO,eAAele,GAC7B+B,OAAOrM,KAAK82B,SAAStO,eAAele,IACpC,MAbG,IAeX,EAEA0lE,YAAa,WACX,OAAOhwE,KAAKw1E,cACRx1E,KAAKuF,GAAG,mBACRvF,KAAKuF,GAAG,sBACd,EACAmJ,iBAAkB,WAChB,GAAI1O,KAAKy6E,eACP,MAAO,GAET,IAAI1xE,EAAO/I,KACPmV,EAAK,SAAMnV,KAAK8O,OAAOsJ,OAAO,SAAU/T,GAC1C,GAAgB,sBAAZA,EAAEgU,OAA4C,iBAAXhU,EAAEiU,KAAyB,CAChE,IAAIiC,EAAQxR,EAAKxD,GAAG,8BAAgC,IAAMwD,EAAK4oE,kBAC/D,MAAO,CAACp3D,EAAO,KAAM,GACvB,CACE,MAAO,CAAClW,EAAEgU,MAAOhU,EAAEiU,KAAM,GAE7B,IAUA,OARItY,KAAKw6E,WACPrlE,EAAGxU,KAAK,CAAC,GAAIX,KAAKw6E,UAAW,KAG1Bx6E,KAAK82B,SAAS3P,YAAkD,IAApCnnB,KAAK82B,SAAS3P,WAAWnf,QACxDmN,EAAGxU,KAAK,CAAC,0BAA2B,KAAM,KAGrCwU,CACT,EACA4mE,gBAAiB,WACf,OAAQ/7E,KAAK82B,SAASH,QAAU32B,KAAK82B,SAASF,YAC3C52B,KAAKw1E,gBAAkBx1E,KAAK6vE,YAAc7vE,KAAK+vE,KACpD,EACAiM,eAAgB,WACd,SACIh8E,KAAK82B,SAASH,QAAU32B,KAAK82B,SAASF,YACrC52B,KAAKw1E,eAAsD,IAApCx1E,KAAK82B,SAASs9C,sBAIlCp0E,KAAK6vE,YAAc7vE,KAAK+vE,MAClC,EACAkM,qBAAsB,WACpB,IAAIlzE,EAAO/I,KACP6nB,EAAe,SAAM7nB,KAAK8G,OAAOlF,MAAMqM,cAAc,SAAU5J,GACjE,GAAIA,EAEF,OADAA,EAAEqH,KAAO3C,EAAKuE,qBAAqBjJ,EAAEwJ,SAC9BxJ,CAEX,IAGA,OAAK0E,EAAK4xE,mBAIH,YAAS9yD,GAAc,SAAU4O,GACtC,OACE1tB,EAAK4xE,mBAAmBz5E,QAAQu1B,EAAEnsB,KAAO,IACxC,UAAOvB,EAAKmzE,uBAAuB,SAAUC,GAC5C,OAAOA,EAAE7lD,aAAeG,EAAEnsB,EAC5B,GAEJ,IAVSud,CAWX,EACAq0D,sBAAuB,WACrB,IAAInzE,EAAO/I,KACX,OAAO,SAAMA,KAAK82B,SAASjP,cAAc,SAAUxjB,GACjD,MAAMqS,EAAM,UAAO3N,EAAKjC,OAAOlF,MAAMqM,cAAc,SAAUwoB,GAC3D,OAAOA,EAAEnsB,KAAOjG,EAAEiyB,UACpB,IAEA,MAAO,CACLA,WAAYjyB,EAAEiyB,WACd5qB,KAAM3C,EAAKuE,qBAAqBoJ,EAAI7I,SAExC,GACF,EACAkoB,YAAa,WACX,OAAI/1B,KAAKmwE,cACAnwE,KAAKwwE,mBAKPxwE,KAAKq2B,iBAAiBr2B,KAAK82B,SACpC,EACA,SAAA+4C,GACE,OACE7vE,KAAK8G,OAAOlF,MAAM2H,SAClBvJ,KAAK8G,OAAOlF,MAAM2H,QAAQC,YAAcxJ,KAAK82B,SAASslD,SAE1D,EACA,YAAAtM,GACE,IAAI/mE,EAAO/I,KACX,OACEA,KAAKy1E,iBAQE5iE,IAPP,UAAO7S,KAAK82B,SAASvO,aAAa,SAAUka,GAC1C,OACEA,EAAMzpB,MAAM7Y,gBACZ4I,EAAK4xB,SACH,8DACAx6B,aAEN,GAEJ,EACA,aAAAq1E,GACE,OAA2B,MAApBx1E,KAAKq8E,aAA0C,MAAnBr8E,KAAKs8E,UAC1C,EACA,UAAA7G,GACE,OAAoC,MAA7Bz1E,KAAK8G,OAAOlF,MAAM2H,OAC3B,EAGA,WAAA8yE,GACE,MAAMtzE,EAAO/I,KACb,IAAIu8E,EACJ,GAAIxzE,EAAKjC,OAAOlF,MAAM2H,QACpB,IAAK,IAAI6I,EAAI,EAAGA,EAAIpS,KAAK82B,SAAS3P,WAAWnf,OAAQoK,IAUnD,GATAmqE,EAAmB,UACjBxzE,EAAK+tB,SAAS3P,WAAW/U,GAAGykE,cAC5B,SAAU2F,GACR,OACEA,EAAYhzE,YAAcT,EAAKjC,OAAOlF,MAAM2H,QAAQC,SAExD,IAGE+yE,EACF,OAAOv8E,KAAK82B,SAAS3P,WAAW/U,GAKtC,OAAO,IACT,EACA,UAAAkqE,GACE,IAAIvzE,EAAO/I,KAEX,MAAMkuD,EAAQ,UAAOluD,KAAK8G,OAAOlF,MAAM66E,cAAc,SAAUtqB,GAC7D,OAAOA,EAAKuqB,UAAY3zE,EAAK+tB,SAASxsB,EACxC,IACA,OAAO4jD,CACT,EACA,eAAAyuB,GACE,IAAIC,EAAK58E,KAAK82B,SAAS1P,UACnBtkB,EAAM,MACNuuB,EAAQ,IAAO,CAACurD,EAAGxhE,KACHwhE,EAAGzhE,MAAQ,EACXyhE,EAAG5hE,IACH4hE,EAAGv1D,KACHu1D,EAAGt1D,SAEvB,OAAOxkB,EAAMuuB,CACf,EAEAwrD,eAAgB,WACd,OAAI78E,KAAK82B,SAAShP,MACT,uCAAuC9nB,KAAK82B,SAAShP,SAEvD,EACT,EACAg1D,gBAAiB,WACf,OAAI98E,KAAK82B,SAAS/O,WACT,uCAAuC/nB,KAAK82B,SAAS/O,cAEvD,EACT,EACA6nD,iBAAkB,WAChB,OAAO5vE,KAAKsvB,iDAAiDtvB,KAAK82B,SAASxO,SAC7E,EACAyF,gBAAiB,WACf,IAAIhlB,EAAO/I,KACX,OAAO,SAAMA,KAAK8G,OAAOlF,MAAMmsB,iBAAiB,SAAU5f,EAAKpJ,GAC7D,MAAO,CAAEkB,MAAOkI,EAAI7D,GAAIoB,KAAM3C,EAAKxD,GAAG,iBAAmB4I,EAAIzC,MAC/D,GACF,EACA0vD,+BAAgC,WAC9B,IAAIryD,EAAO/I,KACP+8E,EAAa,YAAS/8E,KAAK8G,OAAOlF,MAAM4rB,yBAA0BnpB,GAAe,IAATA,EAAEiG,KAE9E,OAAO,SAAMyyE,GAAY,SAAU5uE,EAAKpJ,GACtC,MAAO,CAAEkB,MAAOkI,EAAI7D,GAAIoB,KAAM3C,EAAKxD,GAAG,2BAA6B4I,EAAIzC,MAAM4H,WAC/E,GACF,EACAwE,aAAc,WACZ,OAAO9X,KAAK8wE,gBACR9wE,KAAKwvB,yBAAyBxvB,KAAKg9E,qBACnCh9E,KAAKuvB,6BAA6BvvB,KAAK82B,SAASpvB,KACtD,EACAumB,WAAY,WACV,IAAIllB,EAAO/I,KACX,OAAO,SACL,YAASA,KAAK8G,OAAOlF,MAAMqsB,YAAY,SAAU7b,GAC/C,MAAkB,kBAAXA,EAAE1G,IACX,KACA,SAAUyC,EAAKpJ,GACb,MAAO,CACLkB,MAAOkI,EAAI7D,GACXoB,KAAM3C,EAAKxD,GAAG,cAAgB4I,EAAIzC,MAEtC,GAEJ,EACAsxE,oBAAqB,WACnB,OAAO,UAAOh9E,KAAK8G,OAAOlF,MAAMqsB,WAAY,CAAEviB,KAAM,kBAAmBpB,EACzE,EAEAwoE,eAAgB,WACd,OAAO9yE,KAAKuF,GAAG,4BACZ8E,QACC,eACArK,KAAKuwB,8BACHvwB,KAAK82B,SAASrP,WACdtnB,eAEHkK,QAAQ,WAAYrK,KAAK82B,SAASpP,QAClCrd,QACC,UACA,IAAOrK,KAAK82B,SAASmmD,eAAgB,uBAAuB5gD,OAC1D,cAGR,EACA21C,2BAA4B,WAC1B,IAAIjpE,EAAO/I,KACX,OAAO,SACLA,KAAK8G,OAAOlF,MAAMusB,4BAClB,SAAUhgB,EAAKpJ,GACb,MAAO,CAAEkB,MAAOkI,EAAI7D,GAAIoB,KAAM3C,EAAKxD,GAAG,kBAAoB4I,EAAIzC,MAChE,GAEJ,EAMAwxE,YAAa,WACX,IAAIn0E,EAAO/I,KACX,OACEA,KAAK+1B,YAAYmnD,aACjB,SAAM,UAAOn0E,EAAK+tB,SAASjP,aAAc,eAAgB,cAE7D,EACA0pD,eAAgB,CACd,GAAAluE,GACE,MAAO,CACLgkB,KAAMrnB,KAAK82B,SAAS1P,UAAUC,KAC9BC,OAAQtnB,KAAK82B,SAAS1P,UAAUE,OAEpC,EACA,GAAAtkB,CAAKmL,GACHnO,KAAK82B,SAAS1P,UAAUC,KAAOlZ,EAAIkZ,KACnCrnB,KAAK82B,SAAS1P,UAAUE,OAASnZ,EAAImZ,MACvC,GAEFkqD,aAAc,CACZ,GAAAnuE,GACE,MAAO,CACLgkB,KAAMrnB,KAAK82B,SAASvP,QAAQF,KAC5BC,OAAQtnB,KAAK82B,SAASvP,QAAQD,OAElC,EACA,GAAAtkB,CAAKmL,GACHnO,KAAK82B,SAASvP,QAAQF,KAAOlZ,EAAIkZ,KACjCrnB,KAAK82B,SAASvP,QAAQD,OAASnZ,EAAImZ,MACrC,GAEF,aAAAkrD,GACE,OAAO,IAAO,CAACxyE,KAAK82B,SAAS1P,UAAUhM,KAAMpb,KAAK82B,SAAS1P,UAAUjM,MAAQ,EAAGnb,KAAK82B,SAAS1P,UAAUpM,MAAMqhB,OAAO,aACvH,EACAg1C,iBAAkB,CAChBhuE,IAAK,WACH,OAAO,IAAO,CAACrD,KAAK82B,SAAS1P,UAAUhM,KAAMpb,KAAK82B,SAAS1P,UAAUjM,MAAQ,EAAGnb,KAAK82B,SAAS1P,UAAUpM,MAAMqhB,OAAO,aACvH,EACAr5B,IAAK,SAAUq2C,GACb,IAAIxT,EAAI,IAAOwT,EAAU,cACzBr5C,KAAK82B,SAAS1P,UAAUhM,KAAOyqB,EAAEzqB,OACjCpb,KAAK82B,SAAS1P,UAAUjM,MAAQ0qB,EAAE1qB,QAAU,EAC5Cnb,KAAK82B,SAAS1P,UAAUpM,IAAM6qB,EAAE5e,MAClC,GAEF2rD,mBAAoB,WAClB,OAAO5yE,KAAKu3B,WACVv3B,KAAK82B,SAAS1P,UAAUC,KACxBrnB,KAAK82B,SAAS1P,UAAUE,OAE5B,EACA61D,WAAY,CACV,GAAA95E,GACE,MAAM+5E,EAAcp9E,KAAKq7E,mBAAqB9gC,SAASv6C,KAAKq7E,mBAAoB,IAAM,GACtF,OAAO,IAAOr7E,KAAKqxE,iBAAkB,cAAcrkE,IAAIowE,EAAa,QAAQ/gD,OAAO,aACrF,GAEFw1C,aAAc,CACZ,GAAAxuE,GACE,MAAO,CAAC,CAAEqE,KAAM,SAAUi5B,KAAM,IAAO3gC,KAAKqxE,iBAAkB,cAAcgM,SAAS,EAAG,QAAQhhD,OAAO,cAAeihD,GAAIt9E,KAAKm9E,YACjI,GAGFvL,eAAgB,CACdvuE,IAAK,WACH,OAAO,IAAO,CAACrD,KAAK82B,SAASvP,QAAQnM,KAAMpb,KAAK82B,SAASvP,QAAQpM,MAAQ,EAAGnb,KAAK82B,SAASvP,QAAQvM,MAAMqhB,OAAO,aACjH,EACAr5B,IAAK,SAAUq2C,GACb,IAAIxT,EAAI,IAAOwT,EAAU,cACzBr5C,KAAK82B,SAASvP,QAAQnM,KAAOyqB,EAAEzqB,OAC/Bpb,KAAK82B,SAASvP,QAAQpM,MAAQ0qB,EAAE1qB,QAAU,EAC1Cnb,KAAK82B,SAASvP,QAAQvM,IAAM6qB,EAAE5e,MAChC,GAEF0qD,kBAAmB,CACjBtuE,IAAK,WACH,OAAO,IAAOrD,KAAKm9E,YAAY9gD,OAAO,aACxC,GAEFw2C,iBAAkB,WAChB,OAAO7yE,KAAKu3B,WACVv3B,KAAK82B,SAASvP,QAAQF,KACtBrnB,KAAK82B,SAASvP,QAAQD,OAE1B,EACAorD,mBAAoB,WAClB,OAAO1yE,KAAKu9E,cAAclhD,OAAO,aACnC,EACAs2C,iBAAkB,WAChB,OAAO3yE,KAAKw9E,YAAYnhD,OAAO,aACjC,EACA,aAAAkhD,GACE,OAAO,IAAO,CAACv9E,KAAK82B,SAAS1P,UAAUhM,KACxBpb,KAAK82B,SAAS1P,UAAUjM,MAAQ,EAChCnb,KAAK82B,SAAS1P,UAAUpM,IACxBhb,KAAK82B,SAAS1P,UAAUC,KACxBrnB,KAAK82B,SAAS1P,UAAUE,QACzC,EACA,WAAAk2D,GACE,OAAO,IAAO,CAACx9E,KAAK82B,SAASvP,QAAQnM,KACtBpb,KAAK82B,SAASvP,QAAQpM,MAAQ,EAC9Bnb,KAAK82B,SAASvP,QAAQvM,IACtBhb,KAAK82B,SAASvP,QAAQF,KACtBrnB,KAAK82B,SAASvP,QAAQD,QACvC,EACAK,qBAAsB,CACpB,GAAAtkB,GACE,OAAOrD,KAAK82B,SAASnP,qBACjB,QAAW3nB,KAAK82B,SAASnP,sBAAsB0U,OAAO,cACtD,IACN,EACA,GAAAr5B,CAAKmL,GACHnO,KAAK82B,SAASnP,qBAAuBxZ,EACjC,IAAOA,EAAK,cAAcsvE,MAAM,OAAOC,SACvC,IACN,GAEF,2BAAA3K,GACE,OAAI/yE,KAAK82B,SAASnP,qBACT,QACA3nB,KAAK82B,SAASnP,sBAClByU,QACAC,OAAO,cAEL,EACT,EACA,4BAAAxF,GACE,MAAM/D,EACJ9yB,KAAK82B,SAASnP,sBACd,QAAW3nB,KAAK82B,SAASnP,sBAAwB,MAEnD,OAAOmL,CACT,EACA,yBAAA2/C,GACE,MAAO,CAAC,CACN/qE,KAAM,SACN41E,GAAI,IAAOt9E,KAAKu9E,eAAevwE,IAAI,EAAG,OAAOqvB,OAAO,eAExD,EACA,mBAAA+1C,GACE,MAAMuL,EAAY,GAClB,IAAK,IAAIvrE,EAAI,EAAGA,GAAK,GAAIA,IAAK,CAC5B,MAAMwrE,EAAY59E,KAAK69E,wBACrB79E,KAAKu9E,cACLv9E,KAAKiyE,oBACL7/D,GAEFurE,EAAUh9E,KAAKi9E,EAAUvhD,OAAO,cAClC,CACA,MAAO,CAAC,CACN30B,KAAM,OACNi2E,UAAWA,GAEf,EAEArK,YAAa,WACX,MACkC,KAAhCtzE,KAAK82B,SAAS9gB,eACS,KAAvBhW,KAAK82B,SAAS5gB,MACY,KAA1BlW,KAAK82B,SAAS1S,OAElB,EACAgvD,kBAAmB,WACjB,MAAM0K,EAAe,CAAC99E,KAAK+1B,YAAY7N,UAAWloB,KAAK+1B,YAAY/f,eAChEvC,OAAOnE,SACP6G,KAAK,MACR,OAAOnW,KAAK+V,cACV+nE,EACA99E,KAAK82B,SAAS1S,QACdpkB,KAAK+1B,YAAY7f,KAErB,EACA6nE,yBAA0B,WACxB,MAAO,GAAG/9E,KAAK+1B,YAAY/f,iBAAiBhW,KAAK+1B,YAAY7f,QAAQlW,KAAK82B,SAAS1S,SACrF,EACA45D,cAAe,WACb,OACGh+E,KAAK+vE,OAAU/vE,KAAKowE,QAAUpwE,KAAKmwE,aAExC,EACA,8BAAA4E,GACE,MAAMhsE,EAAO/I,KACP8yB,EAAS,SACb9yB,KAAK8G,OAAOlF,MAAM46D,iBAClB,SAAUruD,EAAKpJ,GACb,MAAO,CACLkB,MAAOkI,EAAI7D,GACXoB,KAAM3C,EAAKxD,GAAG,mCAAqC4I,EAAIzC,MAE3D,IAEF,OAAOonB,CACT,EACA,wBAAAqhD,GACE,MAAMprE,EAAO/I,KACP8yB,EAAS,SACb9yB,KAAK8G,OAAOlF,MAAMwyE,mBAClB,SAAUjmE,EAAKpJ,GACb,MAAO,CACLkB,MAAOkI,EAAI7D,GACXoB,KAAM3C,EAAKxD,GAAG,8BAAgC4I,EAAIzC,MAEtD,IAEF,OAAOonB,CACT,EACAwhD,cAAe,WACb,OAAQt0E,KAAKg+E,gBAAkBh+E,KAAKk9E,aAAel9E,KAAK82B,SAAS09C,gBACnE,GAEFtmE,MAAO,CACLqvE,cAAe,SAAU3+C,EAAQq/C,GAC/B,GAAsB,IAAlBA,EAAO7iE,SAAiBpb,KAAKg7E,aAAeh7E,KAAKi7E,UAAW,CAG9D,MAAMj6D,EAAO,aAAgB4d,EAAO5d,KAAKi9D,IAEnCC,EAAW,aACf,IAAOt/C,GAAQu/C,QAAQ,OAAOn9D,KAAK,IAAOi9D,GAAQE,QAAQ,SAGtD52D,EAAU,IAAOvnB,KAAKw9E,aAAaxwE,IAAIgU,GAC7ChhB,KAAK82B,SAASvP,QAAQnM,KAAOmM,EAAQnM,OACrCpb,KAAK82B,SAASvP,QAAQpM,MAAQoM,EAAQpM,QAAU,EAChDnb,KAAK82B,SAASvP,QAAQvM,IAAMuM,EAAQN,OACpCjnB,KAAK82B,SAASvP,QAAQF,KAAOE,EAAQF,OACrCrnB,KAAK82B,SAASvP,QAAQD,OAASC,EAAQD,SAEnCtnB,KAAK2nB,uBACP3nB,KAAK2nB,qBAAuB,IAC1B3nB,KAAK2nB,qBACL,cACA3a,IAAIkxE,IAGJl+E,KAAK+vE,OAAO/vE,KAAK+xE,uBAAuB/xE,KAAK8xE,YACnD,CACF,EACApC,YAAa,SAAU9wC,EAAQq/C,GAC7B,IAAKr/C,EACH,MAAO,GAMM,IAAXA,EACF5+B,KAAK2pE,iBAAiB,cAEtB3pE,KAAK2pE,iBAAiB,aAE1B,EACA,QAAA7yC,GACE92B,KAAKo+E,oBACP,GAEF,OAAAt1E,GACE,MAAMu1E,EAAcr+E,KAAK8G,OAAOlF,MAAMy8E,YACtCr+E,KAAKq7E,mBAAqBgD,EAAYp8E,MAAMuB,GAAiB,2BAAXA,EAAEuC,OAAmCE,MAGvFjG,KAAK8V,SAAW9V,KAAK8G,OAAOlF,MAAMkU,SAASgF,KAAI,CAACqhE,EAAG/pE,KAC1C,CAAEnM,MAAOmM,EAAG1G,KAAMywE,EAAE/3D,YAE7BpkB,KAAKo+E,qBACLp+E,KAAK8G,OAAOw3E,WAAU,CAACC,EAAU38E,KACT,gBAAlB28E,EAAS72E,OACX1H,KAAKq/C,cAAgB,EACvB,GAEJ,EACA,OAAA7yC,GACE,GAAIxM,KAAKC,OAAO6jB,OAAOxZ,GAAI,CACzBtK,KAAK82B,SAASxsB,GAAK+B,OAAOrM,KAAKC,OAAO6jB,OAAOxZ,IAC7C,MAAMvB,EAAO/I,KACbA,KAAKw+E,UAAUx+E,KAAK82B,SAASxsB,IAAI,SAAUrG,GACzC8E,EAAKmqE,oBAAsBnqE,EAAK+M,SAAS7T,MACtCk6E,GAAMA,EAAEzwE,OAAS3C,EAAK+tB,SAAS1S,WAGJ,SAA5Brb,EAAK9I,OAAO6jB,OAAOhN,MACnB/N,EAAK8xB,QAAQ,UACb9xB,EAAK8xB,QAAQ,kBACb9xB,EAAK8mE,WACL9mE,EAAK+mE,gBAEL/mE,EAAKqnE,QAAS,GAEgB,SAA5BrnE,EAAK9I,OAAO6jB,OAAOhN,OAChB/N,EAAK8mE,WACR9mE,EAAKknE,uBAGX,GACF,MACEjwE,KAAKy+E,cAEDz+E,KAAK26B,UAAY36B,KAAK26B,SAAS+wC,oBACjC1rE,KAAK82B,SAASmjB,UAAY5tC,OAAOrM,KAAK26B,SAAS+wC,mBAC/C1rE,KAAK82B,SAAStO,eAAeC,mBAAqB,IAClDzoB,KAAK82B,SAAStO,eAAeE,YAAc1oB,KAAK82B,SAASmjB,WAG3Dj6C,KAAK2wE,eAAe,IACpB3wE,KAAKywE,qBAAqB,IAAI,GAE9BzwE,KAAK82B,SAAS3P,WAAa,CAAC,CAC1Bu1D,QAAS,EACTjG,oBAAqB,EACrB1wE,KAAM,gBAER/F,KAAK82B,SAASvO,YAAc,CAAC,CAC3BvP,MACEhZ,KAAK26B,SACH,8DAEJk1C,WAAW,GAGjB,EACA,gBAAA6O,CAAkBpB,EAAI38C,EAAM9/B,GACtBb,KAAK0vE,aACP1vE,KAAK0vE,YAAc,KAGnB7uE,GAAK,IAGLA,GAEJ,EACAsG,QAAS,CACP,gBAAAwiE,CAAkBD,GACXA,GAA4B,IAAlBA,EAAO1hE,QAAiB,CAAC,YAAa,cAAcuL,SAASm2D,KAC1E1pE,KAAKu6E,SAAW,IAElB,MAAMp5E,EACJnB,KAAK8G,OAAOlF,MAAM+G,SAASC,eAC3B5I,KAAK8G,OAAOlF,MAAMM,aAAay8E,UAAU,GACzC,uBAAuBjV,IAEzB1pE,KAAKgJ,MAAM3F,IAAIlC,GAAKoC,MACjBuvB,KACmB,IAAdA,EAAO+V,KACT7oC,KAAKu6E,SAAWznD,EAAOpvB,KAAKk7E,WAAWnrE,QAAQrB,GAAMA,EAAEysE,SAAS,SAAWzsE,EAAEysE,SAAS,UAAS/jE,KAAK1T,IAC3F,CACLjG,IAAK,4DAA8DiG,EACnEwM,KAAM,4DAA8DxM,QAIxD,IAAd0rB,EAAO+V,KACT7oC,KAAKiL,SAAU,EACjB,IAED8a,IAEC/lB,KAAK2sC,eAAe3sC,KAAKuF,GAAG,sBAAqB,GAGvD,EACA,oBAAA+rE,CAAsBnjE,GACpBnO,KAAKqxE,iBAAmBljE,CAC1B,EACA,WAAAswE,GAGKz+E,KAAK66B,QAAQ,UACb76B,KAAK66B,QAAQ,aACb76B,KAAK66B,QAAQ,WACb76B,KAAK66B,QAAQ,kBAIb76B,KAAK66B,QAAQ,qBACb76B,KAAK26B,SAASC,uBAEf56B,KAAK6jB,QAAQljB,KAAK,UAGpBX,KAAK8+E,aAIA9+E,KAAKi7E,YAERj7E,KAAK82B,SAASslD,UAAYp8E,KAAK8G,OAAOlF,MAAM2H,QAAQC,WAEtDxJ,KAAK+vE,OAAQ,EAEb,MAAM3oD,EAAYpnB,KAAK++E,WACjBx3D,EAAUvnB,KAAK++E,WAAW/xE,IAAI,EAAG,QAEvChN,KAAK82B,SAAS1P,UAAUhM,KAAOgM,EAAUhM,OAEzCpb,KAAK82B,SAAS1P,UAAUjM,MAAQiM,EAAUjM,QAAU,EACpDnb,KAAK82B,SAAS1P,UAAUpM,IAAMoM,EAAUH,OACxCjnB,KAAK82B,SAAS1P,UAAUC,KAAOD,EAAUC,OACzCrnB,KAAK82B,SAAS1P,UAAUE,OAASF,EAAUE,SAE3CtnB,KAAK82B,SAASvP,QAAQnM,KAAOmM,EAAQnM,OAErCpb,KAAK82B,SAASvP,QAAQpM,MAAQoM,EAAQpM,QAAU,EAChDnb,KAAK82B,SAASvP,QAAQvM,IAAMuM,EAAQN,OACpCjnB,KAAK82B,SAASvP,QAAQF,KAAOE,EAAQF,OACrCrnB,KAAK82B,SAASvP,QAAQD,OAASC,EAAQD,QACzC,EACA,cAAAm1C,CAAgBqY,GACd,MAAM3zE,EACJnB,KAAK8G,OAAOlF,MAAM+G,SAAS2N,aAC3BtW,KAAK8G,OAAOlF,MAAMM,aAAa88E,wBAAwB,GAAG30E,QACxD,MACArK,KAAK82B,SAASxsB,IAGlBtK,KAAKgJ,MAAMuB,KAAKpJ,EAAK2zE,GAAsBvxE,MACxCC,IAECxD,KAAKusC,iBAAiBvsC,KAAKuF,GAAG,0BAC9BvF,KAAKkgE,aAAY,IAElBn6C,IAEC/lB,KAAK2sC,eAAe3sC,KAAKuF,GAAG,sBAAqB,GAGvD,EACA,WAAA26D,GACE,GAAMlgE,KAAK66B,QAAQ,UAAY76B,KAAK66B,QAAQ,kBAAoB76B,KAAK6vE,WAAa7vE,KAAK8vE,aAAvF,CAEA,IAAI3uE,EACFnB,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAC3Bv8B,KAAK8G,OAAOlF,MAAMM,aAAa+8E,wBAAwB,GAAG50E,QACxD,MACArK,KAAK82B,SAASxsB,IAElBtK,KAAKgJ,MAAM3F,IAAIlC,GAAKoC,MACjBC,IACCxD,KAAK80E,qBAAqBsG,sBAAwB53E,EAAEE,KAAK03E,sBACzDp7E,KAAK80E,qBAAqBvY,SAAW/4D,EAAEE,KAAK64D,SAASzhD,KAAK6gE,IAAe,CAAE3iE,MAAO2iE,EAAE3iE,SAAS,IAE9Fwb,IACkB,MAAbA,EAAEtwB,QAAkBlE,KAAK2sC,eAAe3sC,KAAKuF,GAAG,sBAAuB,GAduB,CAiBxG,EAEA,mCAAAm2E,CAAqC9d,GACnC,MAAM97D,EAAO,YAAS9B,KAAK8G,OAAOlF,MAAM46D,iBAAkBn4D,GACjDA,EAAEiG,KAAOszD,IAGlB,OAAI97D,GAAQA,EAAKkG,OAAS,EACjBhI,KAAKuF,GAAG,mCAAqCzD,EAAK,GAAG4J,MAErD1L,KAAKuF,GAAG,uCAEnB,EACA,eAAAk4D,CAAiB71C,GACf5nB,KAAK80E,qBAAqBvY,SAAWv8D,KAAK80E,qBAAqBvY,SAAS9oD,QACrEpP,GAAMA,EAAE2U,MAAM7Y,gBAAkBynB,EAAQ5O,MAAM7Y,eAEnD,EACA,OAAAuU,GACE,QAAI1U,KAAKs+D,gBAAgBt2D,OAAS,GACY,IAAxChI,KAAK82B,SAASskD,sBAMtB,EACA,wBAAAvG,GACE70E,KAAKyY,WACFsE,SAAS,qCACTxZ,MAAM0F,IACL,GAAIA,EAAM,CACR,MAAM+P,EAAQhZ,KAAK40E,6BAA6Bz0E,cAE7CH,KAAK80E,qBAAqBvY,SAASt6D,MACjC2lB,GAAYA,EAAQ5O,MAAM7Y,gBAAkB6Y,KAG/ChZ,KAAK80E,qBAAqBvY,SAAS57D,KAAK,CAAEqY,MAAOA,GAErD,CACAhZ,KAAK40E,6BAA+B,OAE1C,EACA,mBAAAsK,CAAqB/wE,GACnBnO,KAAKiyE,oBAAsB9jE,CAC7B,EACA,kBAAAglE,CAAoBhlE,GAClB,MAAMlI,EAAQkI,GAAO,CAAEzC,KAAM,IAC7B1L,KAAKkzE,oBAAsBlzE,KAAK8V,SAAS7T,MACtCk6E,GAAMA,EAAEzwE,OAASzF,EAAMyF,OAE1B,MAAMyzE,EAAan/E,KAAK8G,OAAOlF,MAAMkU,SAAS7T,MAC3Ck6E,GAAMA,EAAE/3D,UAAYne,EAAMyF,OAE7B1L,KAAKwwE,mBAAmBt6D,KAAOipE,EAAaA,EAAWz5D,OAAS,GAChE1lB,KAAK82B,SAAS1S,QAAUne,EAAMyF,IAChC,EACA,iBAAAo4D,CAAmB18D,GACjBpH,KAAK82B,SAAS5vB,UAAYE,EAAE2U,QAAO,CAACE,EAAGw3C,IAAMx3C,EAAIw3C,EAAEnpD,IAAI,GACvDtK,KAAK6jE,kBAAoBz8D,CAC3B,EACA,kBAAAg3E,GACE,MAAM9yD,EAAOtrB,KAAK8G,OAAOlF,MAAM+nB,kBAC/B3pB,KAAKkH,UAAYlH,KAAK8G,OAAOlF,MAAMsuB,eAChCzc,QAAQmxD,GAAe,IAATA,EAAEt6D,KAChBwQ,KAAK24C,IACG,CACLnpD,GAAImpD,EAAEnpD,GACNoB,KACE,kBACA4f,EAAKrpB,MACF2iE,GAAMA,EAAE92D,YAAYmW,gBAAkBwvC,EAAE/nD,KAAKuY,gBAC9CpW,YAGV7N,KAAK6jE,kBAAoB7jE,KAAKkH,UAAUuM,QAAQggD,GACrC,OAATA,EAAEnpD,IAAwB,IAATmpD,EAAEnpD,KAEdmpD,EAAEnpD,GAAKtK,KAAK82B,SAAS5vB,aAAeusD,EAAEnpD,IAE/C,EACA,aAAA80E,GACE/+E,OAAO2R,SAAS,CAAED,IAAK,EAAGynC,SAAU,UACtC,EACAm2B,gBAAiB,WACU,IAArB3vE,KAAK0vE,YACP1vE,KAAK82B,SAAShP,MAAQ9nB,KAAK4pE,SAE3B5pE,KAAK82B,SAAS/O,WAAa/nB,KAAK4pE,SAGlC5pE,KAAK0vE,YAAc,KACnBrvE,OAAO2R,SAAS,EAAG,EACrB,EACAs9B,YAAa,WACXtvC,KAAKq1E,UAAY,EACjBr1E,KAAKuvC,WAAY,EACjBvvC,KAAK06E,aAAc,CACrB,EACA,eAAAzE,GACEj2E,KAAKmS,MAAMktE,YAAYC,MACzB,EACAhK,UAAW,WACTt1E,KAAK6jB,QAAQljB,KAAK,eAAiBX,KAAKC,OAAOC,KAAO,QACxD,EACAq1E,SAAU,WACRv1E,KAAKq1E,UAAY,EACjBr1E,KAAK6T,WAAU,WACbxT,OAAO2R,SAAS,EAAGgC,SAAStQ,KAAK+a,aACnC,GACF,EACA8gE,aAAc,WACZh+E,eAAekC,QAAQ,oBAAqBzD,KAAKC,OAAOC,KAAO,SAC/DF,KAAK6jB,QAAQljB,KAAK,CAAEoF,KAAM,UAC5B,EACAkqE,qBAAsB,WACpB,GAAIjwE,KAAKk9E,YAAa,CACpB,MAAMsC,EACJx/E,KAAK8G,OAAOlF,MAAM+G,SAAS2N,aAC3BtW,KAAK8G,OAAOlF,MAAMM,aAAau9E,iBAAiB,GAC5C54E,EAAO,CACX6X,IAAK1e,KAAK82B,UAEZ92B,KAAKgJ,MAAMuB,KAAKi1E,EAAc34E,GAAMtD,MAAK,KACvClD,OAAOC,SAASC,KAAOP,KAAKk9E,cAEhC,MACEl9E,KAAKowE,QAAS,EACdpwE,KAAKuvC,WAAY,EACbvvC,KAAKy1E,YAGHz1E,KAAKw1E,cAFTx1E,KAAKq1E,UAAY,EAKfr1E,KAAKq1E,UAAY,CAIzB,EACAqK,qBAAsB,WAChB1/E,KAAK46E,WAAa56E,KAAK46E,UAAUtwE,IACnCtK,KAAK2wE,eAAe3wE,KAAK46E,UAAUtwE,GAEvC,EACAqmE,eAAgB,SAAUrmE,GACnBA,IAIH,UAAOtK,KAAKk8E,uBAAuB,SAAU73E,GAC3C,OAAOA,EAAEiyB,aAAehsB,CAC1B,MAKFtK,KAAK82B,SAASjP,aAAalnB,KAAK,CAC9BuV,KAAM,GACN8Q,YAAa,GACbsP,WAAYhsB,EACZvE,KAAM,GACNmiB,UAAW,GACXhB,MAAO,GACPlR,cAAe,KAEjBhW,KAAKywE,qBAAqBnmE,GAAI,IAChC,EACAomE,kBAAmB,SAAUpmE,GAC3B,MAAMq1E,EAAM3/E,KAAKwwE,mBAAmBl6C,WAChChsB,IAAOtK,KAAKwwE,mBAAmBl6C,aACjCt2B,KAAK82B,SAASjP,aAAe,YAC3B7nB,KAAK82B,SAASjP,cACd,SAAUxjB,GACR,OAAOA,EAAEiyB,aAAehsB,CAC1B,KAGJtK,KAAKywE,qBAAqBkP,EAC5B,EACAlP,qBAAsB,SAAUtiE,EAAKyxE,GACnC,MAAM72E,EAAO/I,KACT4/E,EACF72E,EAAKynE,mBAAqB,UACxBznE,EAAK+tB,SAASjP,cACd,SAAUxjB,GACR,OAAOA,EAAEiyB,aAAenoB,CAC1B,KAGFnO,KAAKy6E,gBAAiB,EACtB1xE,EAAK0P,WAAWsE,WAAWxZ,MAAMkwD,IAC3BA,IACF1qD,EAAKynE,mBAAqB,UACxBznE,EAAK+tB,SAASjP,cACd,SAAUxjB,GACR,OAAOA,EAAEiyB,aAAenoB,CAC1B,IAEJ,IAGN,EACA,SAAAqwE,CAAWl0E,EAAImD,EAAUoyE,GACvB7/E,KAAKg7E,YAAa,EAClB,IAAI75E,EACFnB,KAAK8G,OAAOlF,MAAM+G,SAAS2N,aAC3BtW,KAAK8G,OAAOlF,MAAMM,aAAa49E,SAAS,GAAGz1E,QAAQ,OAAQC,GAE7D,GAAIu1E,EAAW,CACb,MAAME,EAAuB,IAAhBnkE,KAAKokE,SAClB7+E,GAAO,QAAQ4+E,GACjB,CAEA//E,KAAKgJ,MAAM3F,IAAIlC,GAAKoC,MACjBU,IACCjE,KAAK82B,SAAW7yB,EAASP,KACzB1D,KAAK82B,SAAS9O,SAAWhoB,KAAK82B,SAAShP,MACvC9nB,KAAK82B,SAAS7O,cAAgBjoB,KAAK82B,SAAS/O,WAG5C/nB,KAAKwwE,mBAAqBxwE,KAAK+1B,YAC/B,IAAIkqD,EAAiBjgF,KAAK82B,SAAShP,MACZ,KAAnBm4D,IACFA,EACE,yEAECA,EAAe7/E,WAAW,UAC7B6/E,EAAiB,IAEnBjgF,KAAK8wE,gBACH9wE,KAAK82B,SAASpvB,OAAS1H,KAAKg9E,oBAC9Bh9E,KAAKg7E,YAAa,EAClBh7E,KAAKkgE,cACDzyD,GACFA,EAASxJ,EACX,IAEDA,IACyB,MAApBA,EAASC,OAEXlE,KAAK6jB,QAAQxZ,QAAQ,sBAAsBrK,KAAK82B,SAASxsB,MAEzDtK,KAAK6jB,QAAQxZ,QAAQ,UACvB,GAGN,EACA,UAAAy0E,GACE9+E,KAAKmwE,cACHnwE,KAAKoxE,eACLpxE,KAAKizE,mBACLjzE,KAAK4zE,cACL5zE,KAAKg0E,kBACLh0E,KAAK8zE,sBACL9zE,KAAKk0E,iBACLl0E,KAAK20E,0BACL,CACJ,EACA,WAAAuL,GACElgF,KAAKmwE,cACHnwE,KAAKoxE,eACLpxE,KAAKizE,mBACLjzE,KAAK4zE,cACL5zE,KAAKg0E,kBACLh0E,KAAK8zE,sBACL9zE,KAAKk0E,iBACLl0E,KAAK20E,0BACL,CACJ,EACAzE,mBAAoB,WAGlB,GAFAlwE,KAAKi7E,WAAY,EACjBj7E,KAAKy6E,gBAAiB,EAClBz6E,KAAK8wE,gBAAiB,CACxB,IAAIxmE,EAAK,EACLtK,KAAK82B,SAASvP,SAChBjd,EAAKtK,KAAK82B,SAASvP,QAAQ4L,IAC3BnzB,KAAK82B,SAASvP,QAAU,eAAYvnB,KAAK82B,SAAS1P,WAClDpnB,KAAK82B,SAASvP,QAAQ4L,IAAM7oB,GAE5BtK,KAAK82B,SAASvP,QAAU,eAAYvnB,KAAK82B,SAAS1P,WAEpDpnB,KAAK82B,SAASpvB,KAAO1H,KAAKg9E,mBAC5B,CACAh9E,KAAKyY,WAAWsE,WAAWxZ,MAAMuvB,IAC/B,GAAIA,EACF,OAAO9yB,KAAKulC,OAEZvlC,KAAKmS,MAAMguE,WAAW/zC,gBACxB,GAEJ,EACA,IAAA7G,GAWE,GAVAvlC,KAAKg7E,YAAa,EAClBh7E,KAAKw6E,UAAY,KAEbx6E,KAAK82B,SAAStP,WAChBxnB,KAAK82B,SAAS1P,UAAUC,KAAO,EAC/BrnB,KAAK82B,SAAS1P,UAAUE,OAAS,EACjCtnB,KAAK82B,SAASvP,QAAQF,KAAO,GAC7BrnB,KAAK82B,SAASvP,QAAQD,OAAS,IAG7BtnB,KAAK+vE,MAAO,CACd,GAAwC,IAApC/vE,KAAK82B,SAAS3P,WAAWnf,OAAc,CACzChI,KAAKg7E,YAAa,EAClBh7E,KAAKu0E,oBAAqB,EAC1B,MAAM6L,EAAapgF,KAAKmS,MAAMwnE,eACxB5nE,EAAMquE,EAAWC,UAEvB,YADAhgF,OAAO2R,SAAS,EAAGD,EAErB,CAEA,MAAMuuE,EACJtgF,KAAK8G,OAAOlF,MAAM+G,SAAS2N,aAC3BtW,KAAK8G,OAAOlF,MAAMM,aAAaq+E,SAAS,GAE1C,OAAOvgF,KAAKgJ,MACTuB,KAAK+1E,EAAQtgF,KAAK82B,UAClBvzB,MAAM0F,IACLjJ,KAAK82B,SAASxsB,GAAK+B,OAAOpD,EAAKvF,MAC/B1D,KAAKy8D,eAAez8D,KAAK80E,sBAElB90E,KAAKwgF,4BAEbl8E,OAAOyhB,IACN/lB,KAAKw6E,UAAYz0D,EAAKriB,KACf1D,KAAKo/E,mBAEb77E,MAAM0F,IACAjJ,KAAKw6E,WACRx6E,KAAK6jB,QAAQxZ,QAAQ,UAAUrK,KAAK82B,SAASxsB,MAE/CtK,KAAKg7E,YAAa,IAExB,CAAO,CACL,MAAMyF,EACJzgF,KAAK8G,OAAOlF,MAAM+G,SAAS2N,aAC3BtW,KAAK8G,OAAOlF,MAAMM,aAAaw+E,YAAY,GAE7C1gF,KAAKgJ,MACFw1C,IAAIiiC,EAAWzgF,KAAK82B,UACpBvzB,MAAK,IACGvD,KAAKwgF,2BAEbj9E,MAAM0F,IACLjJ,KAAKg7E,YAAa,EAElBh7E,KAAKy8D,eAAez8D,KAAK80E,sBAEzB90E,KAAKw+E,UAAUx+E,KAAK82B,SAASxsB,GAAI,MAAM,GACvCtK,KAAKkgF,aAAY,GAEvB,CACF,EACA,sBAAAM,GACE,GAAIxgF,KAAKm7E,aAAanzE,OAAQ,CAC5B,MAAM7G,EAAM,GACVnB,KAAK8G,OAAOlF,MAAM+G,SAASU,eAC3BrJ,KAAK8G,OAAOlF,MAAMM,aAAay+E,0BAA0B,KAErDC,EAA0B,CAC9BC,OAAQ7gF,KAAKm7E,YACbuB,QAAS18E,KAAK82B,SAASxsB,IAEzB,OAAOtK,KAAKgJ,MAAMuB,KAAKpJ,EAAKy/E,EAC9B,CACF,EACA,OAAAvN,GACErzE,KAAK0zE,eAAgB,EACrB1zE,KAAKoW,eAAepW,KAAK+9E,0BAA0Bx6E,MAChD0F,IACC,GAAIA,EAAKvF,KAAKytB,QAAQnpB,OAAQ,CAC5B,MAAM84E,EAAQ73E,EAAKvF,KAAKytB,QAAQ,GAAG4vD,SAASzgF,SAC5C,IAAI0gF,EAAS,CACX12E,GAAI,EACJmI,SAAU,CACRgE,IAAKqqE,EAAMrqE,IACXC,IAAKoqE,EAAMpqE,MAGf1W,KAAKyf,KAAKzf,KAAK+6E,QAAS,EAAGiG,GAC3BhhF,KAAKwzE,UAAYwN,EAAOvuE,SACxBzS,KAAKyzE,QAAU,GACfzzE,KAAKuzE,cAAe,CACtB,MACEvzE,KAAKuzE,cAAe,EACpBvzE,KAAK0zE,eAAgB,CACvB,IAED3tD,IACC/lB,KAAKuzE,cAAe,EACpBvzE,KAAK0zE,eAAgB,IAG3B,EACAzC,uBAAwB,SAAU7pE,GAChC,IAAI6gC,EAAQ7gC,EAAEoJ,OAAOy3B,OAAS7gC,EAAE8gC,aAAaD,MACxCA,EAAMjgC,QAGXhI,KAAKmoC,YAAYF,EAAM,GAAI,YAC7B,EACAipC,kBAAmB,SAAU9pE,GAC3B,IAAI6gC,EAAQ7gC,EAAEoJ,OAAOy3B,OAAS7gC,EAAE8gC,aAAaD,MACxCA,EAAMjgC,QAGXhI,KAAKmoC,YAAYF,EAAM,GAAI,aAC7B,EACAE,YAAa,SAAUC,EAAM64C,GAC3B,IAAI54C,EAAS,IAAIC,WACjBD,EAAOE,OAAUnhC,IACA,cAAX65E,EACFjhF,KAAK82B,SAAShP,MAAQ1gB,EAAEoJ,OAAOsiB,OAE/B9yB,KAAK82B,SAAS/O,WAAa3gB,EAAEoJ,OAAOsiB,MACtC,EAEFuV,EAAOG,cAAcJ,EACvB,EACAioC,gBAAiB,WACfrwE,KAAKmwE,eAAiBnwE,KAAKmwE,aAC7B,EACAG,gBAAiB,WAEftwE,KAAKi7E,WAAY,EAEjBj7E,KAAKy+E,cAELz+E,KAAKkhF,qBACP,EACA,mBAAAA,GAEElhF,KAAK82B,SAASqqD,WAAa,EAG3BnhF,KAAK82B,SAASnP,qBAAuB,QAAW,CAAC3nB,KAAK82B,SAAS1P,UAAUhM,KACxBpb,KAAK82B,SAAS1P,UAAUjM,MAAQ,EAChCnb,KAAK82B,SAAS1P,UAAUpM,IACxB,EACA,EACA,EACA,IAG7Chb,KAAK82B,SAAS3P,YAChBnnB,KAAK82B,SAAS3P,WAAWjP,SAAQkpE,WACxBA,EAAU92E,GACjBtK,KAAK82B,SAAS3P,WAAWjP,SAAQkpE,IAE/BA,EAAUvK,aAAe,EAAC,GAC3B,IAIL72E,KAAKqhF,kBACP,EACAA,iBAAkB,WAChBrhF,KAAK82B,SAASjP,aAAa3P,SAAQ6d,IACjCA,EAAYmnD,YAAc,IAAI,GAElC,EAEA3M,kBAAmB,WACbvwE,KAAK+vE,MACP/vE,KAAK6jB,QAAQxZ,QAAQ,YAGvBrK,KAAKw+E,UAAUx+E,KAAK82B,SAASxsB,GAAI,MAAM,GACvCtK,KAAKkgF,cACLlgF,KAAKowE,QAAS,EAChB,EACAkR,kBAAmB,WACjBthF,KAAK06E,aAAc,CACrB,EACA1E,oBAAqB,WACnBh2E,KAAKuvC,WAAY,EACjB,IAAIxmC,EAAO/I,KACPuhF,EACFx4E,EAAKjC,OAAOlF,MAAM+G,SAAS2N,aAC3BtW,KAAK8G,OAAOlF,MAAMM,aAAas/E,YAAY,GACxCn3E,QAAQ,OAAQtB,EAAK+tB,SAASxsB,IAC9BD,QAAQ,cAAerK,KAAK87E,8BAEjC,OAAO97E,KAAKgJ,MAAMiE,OAAOs0E,GAAWh+E,MAAM0F,IACxCjJ,KAAK6jB,QAAQljB,KAAK,UAAS,GAE/B,EACA,sBAAAu0E,GACE,MAAMuM,EAAW,IAAI,eACfC,EAAYD,EAASE,aAAa,gBAGxCD,EAAU/J,QAAU,CAAC,CAAEv3B,OAAQ,aAAcr7C,IAAK,YAAa68E,MAAO,IACjD,CAAExhC,OAAQ,YAAar7C,IAAK,WAAY68E,MAAO,IAC/C,CAAExhC,OAAQ,UAAWr7C,IAAK,UAAW68E,MAAO,IAC5C,CAAExhC,OAAQ,QAASr7C,IAAK,QAAS68E,MAAO,IACxC,CAAExhC,OAAQ,QAASr7C,IAAK,QAAS68E,MAAO,IACxC,CAAExhC,OAAQ,WAAYr7C,IAAK,UAAW68E,MAAO,IAC7C,CAAExhC,OAAQ,OAAQr7C,IAAK,OAAQ68E,MAAO,IACtC,CAAExhC,OAAQ,eAAgBr7C,IAAK,eAAgB68E,MAAO,IACtD,CAAExhC,OAAQ,YAAar7C,IAAK,WAAY68E,MAAO,KAGpE,MAAMC,EAAYH,EAAUI,OAAO,GACnCD,EAAUE,KAAO,CAAEC,MAAM,GAGzBhiF,KAAK82B,SAAS3P,WAAWjP,SAAQi6C,IAC/BA,EAAK0kB,aAAa3+D,SAAQskE,IACxBkF,EAAUxY,OAAO,CACf+Y,UAAWzF,EAAY1jE,UACvBopE,SAAU1F,EAAYzjE,SACtBjQ,QAAS,QAAW0zE,EAAY1zE,SAASszB,QAAQC,OAAO,oBACxDpjB,MAAOujE,EAAYvjE,MACnBD,MAAOwjE,EAAYxjE,MACnBtD,QAAS8mE,EAAYp4D,QACrB+tC,KAAMA,EAAKpsD,KACXo8E,aAAc3F,EAAY2F,aAC1BC,SAAU5F,EAAY4F,UACvB,GACF,IAIHP,EAAUQ,UAASC,IACjBA,EAAKC,UAAY,CAAEC,SAAU,SAAUC,WAAY,SAAS,IAE9Df,EAAUgB,WAAa,QAGvBjB,EAASkB,KAAKC,cAAcr/E,MAAKs/E,IAC/B,GAAe,OAAXA,EAAiB,OAGrB,MAAM/nC,EAAO9mC,SAAS+uD,cAAc,KACpCjoB,EAAKv6C,KAAOiuE,IAAIsU,gBAAgB,IAAIhgB,KAAK,CAAC+f,GAAS,CAAEn7E,KAAM,uEAC3D,MAAMq7E,GAAkB,IAAI3hF,MAAOklC,cAAc08C,OAAO,EAAG,IAAI34E,QAAQ,KAAM,KAAKA,QAAQ,IAAK,KAC/FywC,EAAKmoB,SAAW,sBAAsB8f,SAGtC/uE,SAAStQ,KAAKw/D,YAAYpoB,GAG1BA,EAAK9S,QACL8S,EAAKviC,QAAO,IACXjU,OAAMC,IACPX,QAAQ2W,MAAMhW,GACdvE,KAAK8G,OAAO5D,SAAS,cAAe,CAAEyG,QAAS3J,KAAKuF,GAAG,kBAAkB,GAE7E,EACA,oBAAA0vE,CAAsB9mE,GACpB,MAAMgS,EAAI,UACR,UAAOngB,KAAK82B,SAAS3P,WAAY,CAAC,OAAQhZ,EAAIgkD,OAAO0kB,aACrD,CAAC,KAAM1oE,EAAI7D,KAGb,GAAItK,KAAKm1E,qBAAqB5hE,SAAS4M,EAAE7V,IAAK,CAE5C,MAAM24E,EAAgBjjF,KAAKm1E,qBAAqBj0E,QAAQif,EAAE7V,KACnC,IAAnB24E,GACFjjF,KAAKm1E,qBAAqB3mE,OAAOy0E,EAAe,EAEpD,MAEEjjF,KAAKm1E,qBAAqBx0E,KAAKwf,EAAE7V,GAGrC,EACA,kBAAA8qE,GAGE,GAAyC,IAArCp1E,KAAKm1E,qBAAqBntE,QAG1Bk7E,QAAQljF,KAAKuF,GAAG,4BAA4B+N,YAAa,CAC3DtT,KAAK82B,SAAS3P,WAAWjP,SAAQi6C,IAE/BA,EAAK0kB,aAAe1kB,EAAK0kB,aAAapjE,QAAO+oE,IAC1Cx8E,KAAKm1E,qBAAqB5hE,SAASipE,EAAYlyE,MAIlD6nD,EAAK0kB,aAAa3+D,SAAQskE,IACxBA,EAAYjkE,QAAS,IACtB,IAGH,IAAI4qE,EAAa,GACfnjF,KAAK8G,OAAOlF,MAAM+G,SAAS2N,aAC3BtW,KAAK8G,OAAOlF,MAAMM,aAAakhF,wBAAwB,KAEzD,OAAOpjF,KAAKgJ,MAAMuB,KAAK44E,EAAYnjF,KAAKm1E,sBAAsB5xE,MAAM0F,IAClEjJ,KAAKuvC,WAAY,EACjBvvC,KAAKg7E,YAAa,EAElBh7E,KAAKm1E,qBAAuB,GAE5Bn1E,KAAKw+E,UAAUx+E,KAAK82B,SAASxsB,GAAI,MAAM,EAAI,GAE/C,CACF,EACA,sBAAA0qE,CAAwB7mE,GACtB,MAAMgS,EAAI,UACR,UAAOngB,KAAK82B,SAAS3P,WAAY,CAAC,OAAQhZ,EAAIgkD,OAAO0kB,aACrD,CAAC,KAAM1oE,EAAI7D,KAEb6V,EAAEgiE,cAAgBhiE,EAAEgiE,YACtB,EACA,WAAAzM,CAAa8G,GACXx8E,KAAKg7E,YAAa,EAClB,IAAIqI,EAAU,GACZrjF,KAAK8G,OAAOlF,MAAM+G,SAAS2N,aAC3BtW,KAAK8G,OAAOlF,MAAMM,aAAa43E,UAAU,KAEvCjzE,EAAO,CACTy8E,QAAS9G,EAAY8G,QACrBlB,SAAU5F,EAAY4F,UAExB,MAAMniB,EAAU,CAAElP,SAAUlqD,EAAMmqD,SAAUhxD,KAAK82B,UACjD,OAAO92B,KAAKgJ,MAAMuB,KAAK84E,EAASpjB,GAAS18D,MAAM0F,IAC7CjJ,KAAKuvC,WAAY,EACjBvvC,KAAKg7E,YAAa,EAClBh7E,KAAKw+E,UAAUx+E,KAAK82B,SAASxsB,GAAI,MAAM,EAAI,GAE/C,EACA,iBAAAqrE,CAAmB6G,GACjBx8E,KAAKg7E,YAAa,EAClB,MAAMqI,EAAU,GACdrjF,KAAK8G,OAAOlF,MAAM+G,SAAS2N,aAC3BtW,KAAK8G,OAAOlF,MAAMM,aAAa63E,gBAAgB,KAE3C9Z,EAAU,CAAElP,SAAUyrB,EAAaxrB,SAAUhxD,KAAK82B,UACxD,OAAO92B,KAAKgJ,MAAMuB,KAAK84E,EAASpjB,GAAS18D,MAAM0F,IAC7C,MAAMs6E,EAAY,CAChB7G,QAAS18E,KAAK82B,SAASxsB,GACvBvE,KAAM/F,KAAK82B,SAAS/wB,KACpBu9E,QAASr6E,EAAKvF,KAAK4/E,QACnBE,eAAgBv6E,EAAKvF,KAAK8/E,eAC1BpB,SAAUn5E,EAAKvF,KAAK0+E,SACpBqB,kBAAmBx6E,EAAKvF,KAAK+/E,kBAC7B3qE,UAAW7P,EAAKvF,KAAKoV,UACrBC,SAAU9P,EAAKvF,KAAKqV,SACpBC,MAAO/P,EAAKvF,KAAKsV,MACjBC,MAAOhQ,EAAKvF,KAAKuV,MACjBmL,QAASnb,EAAKvF,KAAK0gB,SAIjBnb,EAAKvF,KAAK4/E,SAAWr6E,EAAKvF,KAAK4/E,QAAQt7E,OAAS,EAClDhI,KAAK8G,OAAO1D,OAAO,iBAAkBmgF,IAErCvjF,KAAK8G,OAAO1D,OAAO,oBAAqBmgF,GACxCvjF,KAAK6jB,QAAQxZ,QAAQ,iBAAiBpB,EAAKvF,KAAK+/E,sBAGlDzjF,KAAKuvC,WAAY,EACjBvvC,KAAKg7E,YAAa,EAClBh7E,KAAKw+E,UAAUx+E,KAAK82B,SAASxsB,GAAI,MAAM,EAAI,IACzCiQ,IACiB,0CAAfA,EAAM7W,OACR1D,KAAK2sC,eAAe3sC,KAAKuF,GAAGgV,EAAM7W,OAClC1D,KAAKuvC,WAAY,EACjBvvC,KAAKg7E,YAAa,EAElBh7E,KAAKw+E,UAAUx+E,KAAK82B,SAASxsB,GAAI,MAAM,GACzC,GAEJ,EACA,UAAA0/B,CAAYD,GACV,IAAI25C,EAAW,CACb1qE,MAAO+wB,EACP8lC,WAAW,EACX6M,QAAS18E,KAAK82B,SAASxsB,IAEzBtK,KAAK82B,SAASvO,YAAY5nB,KAAK+iF,GAC/B1jF,KAAKm7E,YAAYx6E,KAAKopC,EACxB,EACA,aAAAE,CAAexH,GACbziC,KAAK82B,SAASvO,YAAcvoB,KAAK82B,SAASvO,YAAY9U,QACnDpP,GAAMA,IAAMo+B,IAEfziC,KAAKm7E,YAAcn7E,KAAKm7E,YAAY1nE,QAAQpP,GAAMA,IAAMo+B,EAAMzpB,OAChE,EACA,uBAAA63D,CAAyBroD,GACvBxoB,KAAK82B,SAAStO,eAAiBA,CACjC,EACA,gBAAAyrD,GACEj0E,KAAKk0E,kBAAoBl0E,KAAKk0E,gBAChC,EACA/C,eAAgB,WACdnxE,KAAKoxE,gBAAkBpxE,KAAKoxE,cAC9B,EACA4B,mBAAoB,WAClBhzE,KAAKizE,oBAAsBjzE,KAAKizE,kBAClC,EACAU,cAAe,WACb3zE,KAAK4zE,eAAiB5zE,KAAK4zE,aAC7B,EACAG,kBAAmB,WACjB/zE,KAAKg0E,mBAAqBh0E,KAAKg0E,iBACjC,EACAU,2BAA4B,WAC1B10E,KAAK20E,0BAA4B30E,KAAK20E,wBACxC,EACAd,sBAAuB,WACrB7zE,KAAK8zE,uBAAyB9zE,KAAK8zE,qBACrC,EACA,UAAA6P,CAAYzN,GACV,IAAKA,EAAS,MAAO,CAAC,EAAG,GACzB,MAAM0N,EAAe1N,EAAQtzE,MAAM,KAEP,IAAxBghF,EAAa57E,SACf47E,EAAa,GAAK,EAClBA,EAAa,GAAK,GAGpB,IAAIC,EAAKx3E,OAAOu3E,EAAa,IACzB5mB,EAAM3wD,OAAOu3E,EAAa,IAQ9B,OANI71C,MAAM81C,KAAKA,EAAK,GAChB91C,MAAMivB,KAAMA,EAAM,GAElB6mB,EAAK,KAAIA,EAAK,GACd7mB,EAAM,KAAIA,EAAM,GAEb,CAAC6mB,EAAI7mB,EACd,EACA,UAAAzlC,CAAYssD,EAAI7mB,GACd,IAAI8mB,EAAQD,EAAGvwE,WACXuwE,GAAM,IAAGC,EAAQ,IAAID,KAEzB,IAAIE,EAAS/mB,EAAI1pD,WAGjB,OAFI0pD,GAAO,IAAG+mB,EAAS,IAAI/mB,KAEpB,GAAG8mB,KAASC,GACrB,EACAhF,SAAU,WACR,IAAIhX,EAAI,MACJic,EACFjc,EAAEzgD,UAAYygD,EAAEkc,UAAYlc,EAAEmc,cAC1Bnc,EAAE/6D,IAAI,EAAG,QAAQmxE,QAAQ,QACzBpW,EAAEoW,QAAQ,QAChB,OAAO6F,CACT,EACA,eAAAjO,CAAiB9vE,GACfjG,KAAK81E,cAAgB7vE,CACvB,EACA,sBAAA8rE,CAAwBD,GAClBA,EAEF9xE,KAAKkyE,kBAAkBlyE,KAAKiyE,qBAG5BjyE,KAAK82B,SAASrP,UAAY,EAE5BznB,KAAK8xE,YAAcA,CACrB,EACA,yBAAA2C,CAA2BtmE,GACzBnO,KAAK82B,SAAS09C,iBAAmBrmE,CACnC,EACA,iBAAA+jE,CAAmBiS,GAEjBnkF,KAAKiyE,oBAAsBjyE,KAAK82B,SAASrP,UAAY08D,EAErDnkF,KAAKsyE,oBAAoBtyE,KAAK82B,SAASpP,OACzC,EACA,sBAAA2qD,CAAwB+R,GACtBpkF,KAAKmyE,eAAiBiS,EACtBpkF,KAAK82B,SAASpP,OAAS1nB,KAAKqkF,qBAC1BrkF,KAAKiyE,oBACLmS,EAEJ,EACA,mBAAA9R,CAAqBgS,GACnBtkF,KAAK82B,SAASpP,OAAS48D,EACvBtkF,KAAKmyE,eAAiBnyE,KAAK69E,wBACzB79E,KAAKu9E,cACLv9E,KAAKiyE,oBACLqS,GACAjoD,OAAO,aACX,EACA,uBAAAwhD,CAAyBxsD,EAAOusC,EAAW2mB,GACzC,MAAMC,EAAY,IAAOnzD,GAEzB,OADAkzD,GAAe,EACP3mB,GACR,KAAK,EACH4mB,EAAUx3E,IAAIu3E,EAAa,SAC3B,MACF,KAAK,EACHC,EAAUx3E,IAAkB,EAAdu3E,EAAiB,SAC/B,MACF,KAAK,EACHC,EAAUx3E,IAAIu3E,EAAa,UAC3B,MAEF,OAAOC,CACT,EACA,oBAAAH,CAAsBzmB,EAAW6mB,GAC/B,MAAMC,EAAW,IAAO1kF,KAAKu9E,eAAeY,QAAQ,OAC9CqG,EAAY,IAAOC,EAAO,cAChC,IAAIF,EAAc,EAClB,OAAQ3mB,GACR,KAAK,EACH2mB,EAAcC,EAAUxjE,KAAK0jE,EAAU,SACvC,MACF,KAAK,EACHH,EAAcC,EAAUxjE,KAAK0jE,EAAU,SAAW,EAClD,MACF,KAAK,EACHH,EAAcC,EAAUxjE,KAAK0jE,EAAU,UACvC,MAEF,OAAOH,EAAc,CACvB,EACA,mBAAAxT,GACE/wE,KAAK8wE,iBAAkB,EACvB9wE,KAAK82B,SAAS1O,UAAW,EACrBpoB,KAAK82B,SAASpvB,OAAS1H,KAAKg9E,sBAC9Bh9E,KAAK82B,SAASpvB,KAAO,GAEzB,EACA,oBAAAspE,GACEhxE,KAAK8wE,iBAAkB,EACvB9wE,KAAK82B,SAAS1O,UAAW,CAC3B,IC3nG8H,MCQhI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI1jB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,0BAA0B,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,IAAI,CAACG,YAAY,OAAOG,MAAM,CAAC,SAAW,IAAI,KAAO,+BAA+BW,GAAG,CAAC,MAAQlB,EAAIuqC,SAAS,CAACtqC,EAAG,oBAAoB,CAACG,YAAY,OAAOG,MAAM,CAAC,KAAO,kBAAkBP,EAAIQ,GAAG,WAAW,OAAOP,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,sCAAsCZ,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAACG,YAAY,qCAAqC,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,YAAcP,EAAImL,aAAarC,MAAM,CAACvH,MAAOvB,EAAc,WAAE+I,SAAS,SAAUC,GAAMhJ,EAAIgM,WAAWhD,CAAG,EAAEvH,WAAW,iBAAiB,KAAKxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,OAAO,CAACG,YAAY,YAAY,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,2BAA2BZ,EAAG,OAAO,CAAC,EAAE,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,oCAAoCZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,sBAAsB,CAACM,MAAM,CAAC,UAAYP,EAAIigF,cAAc,OAAOhgF,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,4BAA4B,cAAc,kBAAkBK,GAAG,CAAC,eAAiBlB,EAAIkgF,yBAAyB,QACvkD,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIlgF,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,KAAKD,EAAI2G,GAAI3G,EAAa,WAAE,SAASmgF,EAASt5E,GAAO,OAAO5G,EAAG,KAAK,CAACI,IAAIwG,GAAO,CAAC5G,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,OAAO,CAACG,YAAY,iBAAiB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGu/E,EAAS58E,UAAUtD,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGu/E,EAASn9E,YAAY,IAAG,IAClW,EACI,GAAkB,GCYpB,IACE3B,KAAM,iBACNkG,MAAO,CACL04E,UAAW,CACTj9E,KAAMtF,MACN+J,QAAS,IAAM,IAEjBlE,MAAO,CACLP,KAAMwE,OACNC,QAAS,IAEXzE,KAAM,CACJA,KAAMwE,OACNC,QAAS,KAIbhF,QAAS,CAET,GCjC8I,MCO9I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCyC9B,IACEpB,KAAM,cACN8gB,SAAU,cACVna,WAAY,CACV40D,UAAS,aAAW,sBAAqB,IAE3C,IAAAz6D,GACE,MAAO,CACL6J,WAAY,GACZo0E,aAAc,GACdH,UAAW,CACT,CAAE18E,MAAO,4BAA6BP,KAAM,0BAC5C,CAAEO,MAAO,sBAAuBP,KAAM,WACtC,CAAEO,MAAO,gBAAiBP,KAAM,0BAChC,CAAEO,MAAO,2BAA4BP,KAAM,cAGjD,EACAP,QAAS,CACP,eAAA49E,CAAiBC,GACfhlF,KAAK8kF,aAAeE,CACtB,EACAJ,qBAAsB,WACpB5kF,KAAK6jB,QAAQljB,KAAK,SACpB,ICnFoI,MCQtI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI+D,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,oBAAoB,CAACH,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,+BAA+BZ,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,sBAAsB,CAACM,MAAM,CAAC,YAAYP,EAAI0jB,SAAS,gBAAgB1jB,EAAIovD,gBAAgBluD,GAAG,CAAC,OAASlB,EAAIoqD,4BAA4B,SAASnqD,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAa,UAAEyB,WAAW,cAAcrB,YAAY,8BAA8B,CAACH,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,YAAY,KAAKD,EAAI2G,GAAI3G,EAAa,WAAE,SAASga,GAAK,OAAO/Z,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,OAAQvB,EAAIisC,UAAWxqC,WAAW,eAAepB,IAAI2Z,EAAIpU,GAAGxF,YAAY,+BAA+B,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,SAAWyZ,MAAQ,EAAE,KAAI,GAAG/Z,EAAG,MAAM,CAACmB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAOvB,EAAa,UAAEyB,WAAW,cAAcrB,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAOP,EAAImzB,KAAK,KAAOnzB,EAAIkzB,KAAK,MAAQlzB,EAAI0sC,MAAM,cAAc,GAAGxrC,GAAG,CAAC,aAAelB,EAAI+vC,eAAe,cAAgB/vC,EAAIgwC,gBAAgB,UAAYhwC,EAAIiwC,gBAAgB,KAAOjwC,EAAI2wB,WAAc3wB,EAAIisC,UAAmKjsC,EAAIS,KAA5JR,EAAG,MAAM,CAACG,YAAY,6BAA6B,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,sCAA+C,EACnjD,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIb,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,gBAAgB,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,0BAA0B,MAAQ,cAAc,WAAab,EAAIa,GAAG,wBAAwB,QAAU,GAAG,QAAU,eAAeZ,EAAG,OAAO,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAAC6B,MAAM,CAAE,iBAAiB,EAAM,kBAAkB,IAAQ,CAAC7B,EAAG,QAAQ,CAACmB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOvB,EAAc,WAAEyB,WAAW,eAAerB,YAAY,eAAeG,MAAM,CAAC,SAAW,IAAI,YAAcP,EAAIa,GAAG,sCAAsCqI,SAAS,CAAC,MAASlJ,EAAc,YAAGkB,GAAG,CAAC,MAAQ,SAASQ,GAAWA,EAAOoK,OAAOC,YAAiB/L,EAAI6oE,WAAWnnE,EAAOoK,OAAOvK,MAAK,UAAU,GAAGtB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,kBAAkB,MAAQ,gBAAgB,WAAab,EAAIa,GAAG,0BAA0B,QAAU,GAAG,QAAU,eAAeZ,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,MAAM,CAAC6B,MAAM,CAAE,iBAAiB,EAAM,kBAAkB,IAAQ,CAAC7B,EAAG,QAAQ,CAACmB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOvB,EAAU,OAAEyB,WAAW,WAAWrB,YAAY,eAAeG,MAAM,CAAC,SAAW,IAAI,YAAcP,EAAIa,GAAG,oCAAoCqI,SAAS,CAAC,MAASlJ,EAAU,QAAGkB,GAAG,CAAC,MAAQ,SAASQ,GAAWA,EAAOoK,OAAOC,YAAiB/L,EAAI6C,OAAOnB,EAAOoK,OAAOvK,MAAK,UAAU,KAAKtB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,uBAAuB,MAAQ,kBAAkB,WAAab,EAAIa,GAAG,2BAA2B,QAAU,GAAG,QAAU,eAAeZ,EAAG,aAAa,CAACI,IAAIL,EAAI26C,aAAap6C,MAAM,CAAC,QAAUP,EAAIugF,mBAAmB,YAAYvgF,EAAIoK,OAAOC,IAAI,uBAAuB,KAAO,2BAA2B,UAAW,EAAM,YAAcrK,EAAIa,GAAG,yBAAyBiI,MAAM,CAACvH,MAAOvB,EAAmB,gBAAE+I,SAAS,SAAUC,GAAMhJ,EAAIwgF,gBAAgBx3E,CAAG,EAAEvH,WAAW,sBAAsB,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,qBAAqB,MAAQ,gBAAgB,WAAab,EAAIa,GAAG,yBAAyB,QAAU,GAAG,QAAU,eAAeZ,EAAG,aAAa,CAACI,IAAIL,EAAI26C,aAAap6C,MAAM,CAAC,QAAUP,EAAIktE,eAAe,YAAYltE,EAAIoK,OAAOC,IAAI,qBAAqB,KAAO,yBAAyB,UAAW,EAAM,eAAc,EAAK,YAAcrK,EAAIa,GAAG,wBAAwB,MAAQ,CAAC,CAACmC,KAAM,SAAUi5B,KAAMj8B,EAAIygF,iBAAkB7H,GAAI,QAAQ9vE,MAAM,CAACvH,MAAOvB,EAAiB,cAAE+I,SAAS,SAAUC,GAAMhJ,EAAI0gF,cAAc13E,CAAG,EAAEvH,WAAW,oBAAoB,GAAGxB,EAAG,MAAM,CAACG,YAAY,6CAA6C,CAACH,EAAG,MAAM,CAACG,YAAY,yBAAyBc,GAAG,CAAC,MAAQlB,EAAIiqD,uBAAuB,CAAChqD,EAAG,OAAO,CAACG,YAAY,+BAA+B,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,+CAAgDb,EAAyB,sBAAEC,EAAG,oBAAoB,CAACG,YAAY,8BAA8BG,MAAM,CAAC,KAAO,eAAe,cAAc,UAAUN,EAAG,oBAAoB,CAACG,YAAY,8BAA8BG,MAAM,CAAC,KAAO,aAAa,cAAc,WAAW,OAAQP,EAAyB,sBAAEC,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIuD,OAAO,OAAOtD,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,4BAA4B,MAAQ,uBAAuB,WAAab,EAAIa,GAAG,gCAAgC,QAAU,GAAG,QAAU,eAAeZ,EAAG,eAAe,CAACI,IAAIL,EAAI26C,aAAap6C,MAAM,CAAC,MAAQP,EAAI2gF,gBAAgBz/E,GAAG,CAAC,OAASlB,EAAI4gF,mBAAmB93E,MAAM,CAACvH,MAAOvB,EAAY,SAAE+I,SAAS,SAAUC,GAAMhJ,EAAIyjB,SAASza,CAAG,EAAEvH,WAAW,eAAe,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,2BAA2B,MAAQ,sBAAsB,WAAab,EAAIa,GAAG,0BAA0B,QAAU,GAAG,QAAU,eAAeZ,EAAG,eAAe,CAACI,IAAIL,EAAI26C,aAAap6C,MAAM,CAAC,MAAQP,EAAIgpE,YAAY9nE,GAAG,CAAC,OAASlB,EAAIipE,qBAAqBngE,MAAM,CAACvH,MAAOvB,EAAiB,cAAE+I,SAAS,SAAUC,GAAMhJ,EAAI6gF,cAAc73E,CAAG,EAAEvH,WAAW,oBAAoB,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,uBAAuB,MAAQ,kBAAkB,WAAab,EAAIa,GAAG,sBAAsB,QAAU,GAAG,QAAU,eAAeZ,EAAG,eAAe,CAACI,IAAIL,EAAI26C,aAAap6C,MAAM,CAAC,MAAQP,EAAIupB,YAAYroB,GAAG,CAAC,OAASlB,EAAI8gF,qBAAqBh4E,MAAM,CAACvH,MAAOvB,EAAa,UAAE+I,SAAS,SAAUC,GAAMhJ,EAAI+gF,UAAU/3E,CAAG,EAAEvH,WAAW,gBAAgB,GAAGxB,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,6BAA6B,MAAQ,wBAAwB,WAAab,EAAIa,GAAG,0BAA0B,QAAU,GAAG,QAAU,eAAeZ,EAAG,mBAAmB,CAACI,IAAIL,EAAI26C,aAAap6C,MAAM,CAAC,MAAQP,EAAIghF,gBAAgB9/E,GAAG,CAAC,OAASlB,EAAIo/D,mBAAmBt2D,MAAM,CAACvH,MAAOvB,EAAa,UAAE+I,SAAS,SAAUC,GAAMhJ,EAAIwC,UAAUwG,CAAG,EAAEvH,WAAW,gBAAgB,GAAGxB,EAAG,MAAM,CAACG,YAAY,8BAA8B,CAACH,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,kCAAkC,MAAQ,0BAA0B,WAAab,EAAIa,GAAG,mCAAmC,QAAU,GAAG,QAAU,eAAeZ,EAAG,iBAAiB,CAACM,MAAM,CAAC,KAAO,iCAAiC,MAAQP,EAAI8jB,eAAe,UAAW,EAAM,YAAW,GAAM5iB,GAAG,CAAC,MAAQlB,EAAImsE,4BAA4B,OAAOnsE,EAAIS,MACr/K,EACI,GAAkB,GCAf,SAASwgF,GAA4BC,GAC1C,MACiB,kBAARA,GACC,OAARA,GACkC,kBAA3BA,EAAIn9D,oBACgB,kBAApBm9D,EAAIl9D,WAEf,CCTA,IAAI,GAAS,WAAkB,IAAIhkB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIuD,OAAO,KAAKtD,EAAG,OAAO,CAACM,MAAM,CAAC,GAAK,WAAaP,EAAImhF,QAAQ,CAAClhF,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,CAAC,MAAQ,mBAAmB,cAAc,QAAQW,GAAG,CAAC,MAAQlB,EAAIohF,aAAcphF,EAAgB,aAAEC,EAAG,cAAc,CAACM,MAAM,CAAC,MAAQP,EAAImhF,MAAM,QAAUnhF,EAAIqhF,WAAW,QAAUrhF,EAAIshF,QAAQ,SAAWthF,EAAIuhF,SAAS,aAAevhF,EAAIwhF,cAActgF,GAAG,CAAC,UAAY,SAASQ,GAAQ,OAAO1B,EAAIohF,UAAU1/E,EAAO,KAAK1B,EAAIS,MAAM,QACjqB,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIT,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,qBAAqB2C,MAAO/C,EAAsB,oBAAG,CAACC,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,SAAS,CAACG,YAAY,iBAAiBG,MAAM,CAAC,KAAO,UAAUW,GAAG,CAAC,MAAQ,SAASQ,GAAQ,OAAO1B,EAAIoD,gBAAgB,OAAOnD,EAAG,MAAM,CAACmG,IAAI,UAAUhG,YAAY,WAAWG,MAAM,CAAC,GAAK,YAAcP,EAAImhF,QAAQ,CAAClhF,EAAG,MAAM,CAACG,YAAY,mBAAmBG,MAAM,CAAC,GAAK,YAAcP,EAAImhF,MAAQ,aAAa,CAAClhF,EAAG,OAAO,CAACM,MAAM,CAAC,SAAW,KAAK2I,SAAS,CAAC,UAAYlJ,EAAIY,GAAGZ,EAAI6zC,iBAChlB,EACI,GAAkB,GCwBtB,wBACA,mBACA,OACA,OACA,YACA,aAEA,SACA,YACA,aAEA,SACA,YACA,YAEA,UACA,YACA,YAEA,cACA,YACA,mBACA,OACA,UACA,WAEA,IAGA,gBACA,QAGA,EACA,UACA,8BACA,uDAEA,OACA,eACA,4BAEA,GAGA,mBACA,mBACA,EACA,SACA,0BACA,uBACA,EACA,wBACA,2DACA,oDACA,uDACA,EACA,wBACA,8DACA,uDACA,2DACA,uBACA,EACA,+BACA,yBACA,2CAEA,yBACA,mBAGA,EACA,wBAEA,mBACA,EACA,0BAEA,kBACA,mBAEA,GAEA,yBACA,8DACA,uDACA,0DAEA,IClHiQ,MCQ7P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCOhC,wBACA,mBACA,4BACA,OACA,OACA,YACA,aAEA,OACA,YACA,aAEA,YACA,YACA,aAEA,SACA,YACA,YAEA,UACA,YACA,YAEA,SACA,YACA,aAGA,gBACA,OACA,gBACA,cACA,UACA,YAGA,EACA,SACA,sBACA,IAEA,gCAGA,oCACA,KCxEoQ,MCQhQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCuLhC,wBACA,2BACA,4FACA,kBACA,OACA,OACA,YACA,YAEA,UACA,aACA,YAEA,cACA,YACA,+BAGA,gBACA,OACA,yBACA,YACA,eACA,qBACA,yBACA,kCACA,cACA,aACA,kBACA,8BACA,cACA,kBACA,qBACA,mBACA,cACA,UACA,6BACA,mCACA,eAGA,EACA,UACA,0BACA,WACA,EACA,8BACA,iCACA,EACA,4BACA,4FACA,EACA,UACA,eACA,wBACA,EACA,gBACA,mBACA,GAEA,eACA,eACA,6BACA,EACA,gBACA,wBACA,GAEA,WACA,eACA,yBACA,EACA,gBACA,oBACA,IAGA,OACA,iBACA,oBACA,wCACA,GAEA,eACA,oBACA,sCACA,GAEA,cACA,oBACA,IAEA,eACA,8BAGA,WACA,2BAGA,oBACA,0FACA,sEAEA,gBACA,8EACA,kEAEA,eACA,oFAEA,qEAGA,kBACA,kGAGA,kBACA,6FAGA,uBACA,sCAEA,EACA,SAEA,uBACA,kCACA,EACA,mBACA,8BACA,GAEA,8BACA,gDACA,0CACA,6GACA,qIACA,IAEA,iKAEA,+LACA,qKACA,qCACA,yBACA,kBAEA,GACA,EACA,SACA,gCACA,sDACA,EACA,8BACA,MAEA,wCACA,wCAHA,CAIA,EACA,gCACA,+DACA,EACA,8BACA,2DACA,EACA,oCACA,4EACA,sBACA,EACA,gCACA,2DACA,EACA,uCACA,iCACA,0CACA,2BACA,6BACA,EACA,mC,MACA,sDACA,sBACA,KClYoQ,MCQhQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCsDhC,wBACA,iBACA,YACA,WACA,uBACA,aACA,SACA,YAEA,gBACA,OACA,aACA,gBACA,gBACA,qBACA,kBACA,iBACA,gBACA,gBACA,aACA,UACA,cACA,wBACA,eACA,aACA,OACA,SAEA,UACA,YACA,aACA,eACA,iBACA,yBACA,QACA,OACA,QAEA,EACA,UACA,qBACA,8BACA,EACA,qBACA,kEACA,GAEA,mBACA,kBACA,sFAEA,wBACA,EACA,SACA,6B,MACA,8CAWA,GATA,iBACA,4DAGA,qBACA,oEAGA,sDACA,wBACA,qCACA,UACA,gD,CAKA,GADA,kDACA,oBACA,iCACA,UACA,4C,CAKA,GADA,iDACA,mBACA,wCACA,sBACA,+C,CAKA,GADA,8CACA,oBACA,wGACA,6CACA,iF,CAKA,GADA,mDACA,mDACA,0CACA,+BACA,oBACA,oF,CAIA,GADA,wCACA,eACA,oCACA,sBACA,wCACA,Y,CAKA,GADA,yCACA,eACA,oCACA,sBACA,wCACA,Y,CAGA,EACA,6BACA,0BAGA,gBACA,wCAIA,mCAIA,8BAKA,EAGA,iCACA,gEACA,6BACA,SACA,OACA,4DACA,+CACA,iBACA,qBACA,gDACA,OACA,8BAGA,mB,CAKA,mBAGA,oDACA,sCACA,EACA,oCAEA,6CAEA,6BAGA,yCACA,yBAGA,0DACA,mEACA,YACA,2BACA,yBACA,iBAEA,EACA,qBACA,kBACA,SAEA,EADA,cACA,iGAEA,2FAEA,gEACA,4DACA,WACA,yDACA,yBACA,qBACA,cACA,gBACA,8BACA,GACA,EACA,8BACA,YACA,iBACA,EACA,2BACA,iBACA,iBACA,EACA,2BACA,qBACA,2BACA,iBACA,EACA,uBACA,iCACA,qBACA,kBACA,EACA,sBACA,mCACA,mCACA,yBACA,gBACA,KC/S0P,MCQtP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI7zC,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,yBAAyB,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAAEJ,EAAqB,kBAAEC,EAAG,KAAK,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,qCAAqC,OAAOb,EAAIS,KAAOT,EAAIyhF,kBAA8FzhF,EAAIS,KAA/ER,EAAG,KAAK,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,kCAAkC,WAAoBZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAAEJ,EAAqB,kBAAEC,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,gCAAgC,OAAOb,EAAIS,KAAOT,EAAIyhF,kBAA6HzhF,EAAIS,KAA9GR,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6B,SAAkBZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,0BAA0B,CAACH,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,wBAAwB,cAAc,cAAcK,GAAG,CAAC,WAAalB,EAAI0hF,iBAAiB,QAC9gC,EACI,GAAkB,GCoCpB,IACErgF,KAAM,iBACN2G,WAAY,CACV4V,UAAS,GAEXrW,MAAO,CACLw3E,kBAAmB,CACjB/7E,KAAMwE,OACNC,QAAS,KAGb,IAAAtF,GACE,MAAO,CACLs/E,mBAAmB,EAEvB,EACA,OAAAr9E,GACE,GAAsC,IAAlC9I,KAAKyjF,kBAAkBz7E,OAA3B,CAKA,IAAIq+E,EAAW,GAAGrmF,KAAK8G,OAAOlF,MAAM+G,SAAS2N,aAAetW,KAAK8G,OAAOlF,MAAMM,aAAaokF,iBAAiB,KAAKj8E,QAAQ,sBAAuBrK,KAAKyjF,mBACrJ,OAAOzjF,KAAKgJ,MAAM3F,IAAIgjF,GAAU9iF,MAAK0F,IACnC,IAAI6pB,EAASzmB,OAAOpD,EAAKvF,MAEzB,OAAQovB,GACR,KAAK,EACH9yB,KAAKmmF,mBAAoB,EACzB,MAEF,KAAK,EACHnmF,KAAKmmF,mBAAoB,EACzB,MAEF,KAAM,EACJnmF,KAAKmmF,mBAAoB,EACzB,MACF,GAlBF,CAFEnmF,KAAKmmF,mBAAoB,CAsB7B,EACAh/E,QAAS,CACP,YAAAi/E,GACEpmF,KAAK6jB,QAAQxZ,QAAQ,gBACvB,IClFuI,MCQzI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI3F,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,kCAAkCZ,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkBJ,EAAI2G,GAAI3G,EAAY,UAAE,SAASga,GAAK,OAAO/Z,EAAG,MAAM,CAACI,IAAI2Z,EAAIpU,GAAGxF,YAAY,+BAA+B,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,SAAWyZ,MAAQ,EAAE,IAAG,GAAKha,EAAI6hF,UAAmC,GAAvB7hF,EAAI6hF,SAASv+E,OAAyJtD,EAAIS,KAAhJR,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,sCAA+C,EAC1mB,EACI,GAAkB,GC2CpB,IACEQ,KAAM,oBACN2G,WAAY,CACVo+D,QAAO,GACP0b,UAAS,IAEX,IAAA3/E,GACE,MAAO,CACL0/E,SAAU,GAEd,EACA,OAAAz9E,GACE9I,KAAKo4B,WACP,EACAjxB,QAAS,CACP,SAAAixB,GACE,IAAIj3B,EAAMnB,KAAK8G,OAAOlF,MAAM+G,SAAS2N,aAAetW,KAAK8G,OAAOlF,MAAMM,aAAaukF,eAAe,GAClGzmF,KAAKgJ,MAAM3F,IAAIlC,GAAKoC,MAAKU,IACvBjE,KAAKumF,SAAWtiF,EAASP,QACxBO,IACDL,QAAQC,IAAI,gBAAe,GAE/B,ICnE0I,MCQ5I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIa,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,+BAA+B,CAACH,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,qCAAqCZ,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkBJ,EAAI2G,GAAI3G,EAAY,UAAE,SAASga,GAAK,OAAO/Z,EAAG,MAAM,CAACI,IAAI2Z,EAAIpU,GAAGxF,YAAY,+BAA+B,CAACH,EAAG,YAAY,CAACM,MAAM,CAAC,SAAWyZ,MAAQ,EAAE,IAAG,GAAKha,EAAI6hF,UAAmC,GAAvB7hF,EAAI6hF,SAASv+E,OAAyJtD,EAAIS,KAAhJR,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,sCAA+C,EAChnB,EACI,GAAkB,GC0CpB,IACEQ,KAAM,uBACN2G,WAAY,CACVo+D,QAAO,GACP0b,UAAS,IAEX,IAAA3/E,GACE,MAAO,CACL0/E,SAAU,GAEd,EACA,OAAAz9E,GACE9I,KAAKo4B,WACP,EACAjxB,QAAS,CACP,SAAAixB,GACE,IAAIj3B,EAAMnB,KAAK8G,OAAOlF,MAAM+G,SAAS2N,aAAetW,KAAK8G,OAAOlF,MAAMM,aAAawkF,kBAAkB,GACrG1mF,KAAKgJ,MAAM3F,IAAIlC,GAAKoC,MAAKU,IACvBjE,KAAKumF,SAAWtiF,EAASP,QACxBO,IACDL,QAAQC,IAAI,gBAAe,GAE/B,IClE6I,MCQ/I,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIa,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,0BAA0BZ,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAAEJ,EAAI+E,WAAa/E,EAAIy0B,gBAAiBx0B,EAAG,MAAMD,EAAI2G,GAAI3G,EAAY,UAAE,SAASiF,EAAQ4B,GAAO,OAAO5G,EAAG,UAAU,CAACI,IAAIL,EAAIiQ,KAAO,YAAcpJ,EAAMtG,MAAM,CAAC,QAAU0E,IAAU,IAAG,GAAGjF,EAAIS,KAAOT,EAAI+E,UAAa/E,EAAIy0B,gBAA8Hz0B,EAAIS,KAAjHR,EAAG,MAAM,CAACG,YAAY,cAAc,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,wCAAkDb,EAAmB,gBAAEC,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,YAAY,GAAGD,EAAIS,cAAc,EAChvB,EACI,GAAkB,GCsCpB,IACEY,KAAM,WACN2G,WAAY,CAAEo+D,QAAO,WAAS,WAAS,IACvCp4D,OAAQ,CAACjJ,GACT,IAAA5C,GACE,MAAO,CACL4C,SAAU,GACV0vB,iBAAiB,EAErB,EACA,OAAA3sB,GACExM,KAAKw6C,aACP,EACArzC,QAAS,CACP,WAAAqzC,GACE,IAAIzxC,EAAO/I,KAIX,GAHA+I,EAAKowB,iBAAkB,EAGnBpwB,EAAKjC,OAAOlF,MAAM6H,SAASzB,OAAS,EAGtC,OAFAe,EAAKowB,iBAAkB,OACvBpwB,EAAKU,SAAWV,EAAKjC,OAAOlF,MAAM6H,UAKpCzJ,KAAKmJ,eAAe5F,MAAK,KACvBwF,EAAKowB,iBAAkB,EACvBpwB,EAAKU,SAAWV,EAAKjC,OAAOlF,MAAM6H,WAEtC,ICtEiI,MCQnI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI/E,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAQD,EAAW,QAAEC,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,KAAKA,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIiF,QAAQgyB,kBAAkBh3B,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,mBAAmB,OAAOZ,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIiiF,gBAAgB,SAAShiF,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,iBAAiB,OAAOZ,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIg3B,UAAU,SAAUh3B,EAAIiF,SAAWjF,EAAIiF,QAAQ4uC,QAAS5zC,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,IAAI,CAACmB,WAAW,CAAC,CAACC,KAAK,YAAYC,QAAQ,sBAAsBC,MAAM,CAAGya,OAAO,GAAQva,WAAW,kBAAkBwa,IAAI,YAAY/S,SAAS,CAAC,UAAYlJ,EAAIY,GAAGZ,EAAIiF,QAAQ4uC,cAAc7zC,EAAIS,KAAMT,EAAIiF,SAAuC,IAA5BjF,EAAIiF,QAAQQ,YAAmBxF,EAAG,MAAM,CAACG,YAAY,sBAAsB,CAACH,EAAG,YAAY,CAACG,YAAY,6BAA6BG,MAAM,CAAC,KAAO,UAAU,KAAO,EAAE,MAAQP,EAAIa,GAAG,kBAAkB,cAAc,iBAAiBK,GAAG,CAAC,cAAgB,SAASQ,GAAQ1B,EAAIsoE,YAActoE,EAAIsoE,UAAU,MAAM,GAAGtoE,EAAIS,SAASR,EAAG,UAAU,CAACM,MAAM,CAAC,MAAQP,EAAIa,GAAG,oBAAoBiI,MAAM,CAACvH,MAAOvB,EAAc,WAAE+I,SAAS,SAAUC,GAAMhJ,EAAIsoE,WAAWt/D,CAAG,EAAEvH,WAAW,eAAe,CAACxB,EAAG,MAAM,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,0BAA0B,OAAOZ,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAO,eAAe,QAAUP,EAAIuoE,gBAAgBrnE,GAAG,CAAC,OAAS,SAASQ,GAAQ1B,EAAIsoE,YAActoE,EAAIsoE,UAAU,EAAE,OAAStoE,EAAI4tB,UAAU3kB,KAAK,kBAAkB,IAAI,GAAGhJ,EAAG,MAAM,CAACD,EAAIQ,GAAG,UAC72D,EACI,GAAkB,GCDhB0hF,GAAiB,yCAEvB,MCsEE,IACE7gF,KAAM,gBACN2G,WAAY,CAAE4V,UAAS,QAAO,WAAS,IACvC5P,OAAQ,CAACjJ,GACT,IAAA5C,GACE,MAAO,CACLmmE,YAAY,EACZrjE,QAAS,CAAC,EACVyxB,OAAQ,CAAC,EAEb,EACAp0B,SAAU,CACR,QAAA00B,GACE,OAAO,QAAW17B,KAAK2J,QAAQC,MAAMwyB,QAAQC,OAAO,kBACtD,EACA,cAAAsqD,GACE,OAAI3mF,KAAKo7B,OAAOtiB,UACP9Y,KAAKo7B,OAAOtiB,UAAY,IAAM9Y,KAAKo7B,OAAOriB,SAE5C/Y,KAAK2J,QAAQyxB,MACtB,GAEF,OAAA5uB,GACE,IAAIzD,EAAO/I,KACXA,KAAK2K,aAAapH,MAAK,WACrB,GAAIwF,EAAKY,QAAQ6yB,SAAU,CACzB,IAAIF,GAAcvzB,EAAKjC,OAAOlF,MAAM+G,SAAS4zB,YAAcxzB,EAAKjC,OAAOlF,MAAMM,aAAaqH,QAAQ,IAAIc,QAAQ,MAAOtB,EAAKY,QAAQ6yB,UAElIzzB,EAAKC,MAAM3F,IAAIi5B,GAAY/4B,MAAKC,IAC9BuF,EAAKqyB,OAAS53B,EAAEE,KAChBqF,EAAKe,kBAAkBf,EAAKY,QAAO,GAEvC,MACEZ,EAAKe,kBAAkBf,EAAKY,QAEhC,GACF,EACAxC,QAAS,CACP8lE,aAAc,WACZ,MAAO,CACL,CAAEvhE,KAAM1L,KAAKuF,GAAG,kBAAmB6O,MAAO,UAC1C,CAAE1I,KAAM1L,KAAKuF,GAAG,kBAAmB6O,MAAO,UAE9C,EACA,WAAAyyE,GACE,IAAI99E,EAAO/I,KACP8mF,EAAYz6E,OAAOtD,EAAK9I,OAAO6jB,OAAOxZ,IACtCH,EAAckC,OAAOtD,EAAK9I,OAAO6jB,OAAOpc,MAC5C,OAAOhG,EAAEO,KAAK8G,EAAKjC,OAAOlF,MAAM6H,UAAU,SAAUgB,GAClD,OAAOA,EAAIH,KAAOw8E,GAAar8E,EAAIN,cAAgBA,CACrD,GACF,EACA,WAAA48E,CAAat8E,GACX,IAAIu8E,EAAa,GAAe38E,QAAQ,sBAAuB,QAC3D4jC,EAAQ,IAAIooC,OAAO2Q,EAAY,KACnC,MAAMC,EAAU5mF,OAAOC,SAAS4mF,SAAW,KAAO7mF,OAAOC,SAAS6mF,UAAY9mF,OAAOC,SAASytD,KAAO,IAAM1tD,OAAOC,SAASytD,KAAO,IAElI,OAAOtjD,EAAIJ,QAAQ4jC,EAAOg5C,EAC5B,EACA,UAAAt8E,GACE,IAAI5B,EAAO/I,KACX,OAAO,IAAI8D,SAAQ,CAACsF,EAASrF,KACvBgF,EAAKjC,OAAOlF,MAAM6H,SAASzB,OAAS,GACtCe,EAAKY,QAAUZ,EAAK89E,cACpB99E,EAAKY,QAAQ4uC,QAAUxvC,EAAKg+E,YAAYh+E,EAAKY,QAAQ4uC,SACrDnvC,KAGApJ,KAAKmJ,eAAe5F,MAAK,KACvBwF,EAAKY,QAAUZ,EAAK89E,cACpB99E,EAAKY,QAAQ4uC,QAAUxvC,EAAKg+E,YAAYh+E,EAAKY,QAAQ4uC,SACrDnvC,GAAQ,GAEZ,GAEJ,EACA,QAAAkpB,GACEtyB,KAAKiK,cAAcjK,KAAK2J,SAASpG,MAAK,KACpCvD,KAAK6jB,QAAQxZ,QAAQ,YAAW,GAEpC,ICzJsI,MCQxI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI3F,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,gEAAgE,CAAe,IAAbJ,EAAIkF,KAAYjF,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,0CAA0CZ,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,WAAW,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,WAAaE,WAAW,eAAerB,YAAY,eAAeG,MAAM,CAAC,KAAOP,EAAIa,GAAG,iBAAiB,YAAYb,EAAIoK,OAAOC,IAAI,SAAS,KAAO,QAAQ,sBAAsB,OAAO,aAAe,kBAAkBvB,MAAM,CAACvH,MAAOvB,EAAmB,gBAAE+I,SAAS,SAAUC,GAAMhJ,EAAI0iF,gBAAgB15E,CAAG,EAAEvH,WAAW,sBAAsB,GAAGxB,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,CAACG,YAAY,iBAAiBG,MAAM,CAAC,MAAQP,EAAIa,GAAG,mBAAmB,KAAO,EAAE,WAAa,EAAE,cAAc,iBAAiBK,GAAG,CAAC,gBAAgBlB,EAAI2iF,gBAAgB,KAAK3iF,EAAIS,KAAmB,IAAbT,EAAIkF,KAAYjF,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,YAAY,GAAGA,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,qCAAsC,CAAEyT,MAAOtU,EAAI0iF,0BAA2B1iF,EAAIS,KAAmB,IAAbT,EAAIkF,KAAYjF,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,WAAW,KAAO,SAAS,GAAGN,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,sCAAuC,CAAEyT,MAAOtU,EAAI0iF,0BAA2B1iF,EAAIS,KAAmB,IAAbT,EAAIkF,KAAYjF,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,CAAC,MAAO,SAAS,KAAO,SAAS,GAAGN,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,2CAA4C,CAAEyT,MAAOtU,EAAI0iF,wBAAyBziF,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,YAAY,CAACG,YAAY,iBAAiBG,MAAM,CAAC,cAAc,cAAc,MAAQP,EAAIa,GAAG,iBAAiB,KAAO,EAAE,WAAa,GAAGK,GAAG,CAAC,cAAc,SAASQ,GAAQ1B,EAAIkF,KAAO,CAAC,MAAM,KAAKlF,EAAIS,MACvlE,EACI,GAAkB,GC0DpB,IACEY,KAAM,8BACN2G,WAAY,CAAE0M,SAAQ,aAAW,UAAS,IAC1C,IAAAvS,GACE,MAAO,CACLugF,gBAAiB,GACjBx9E,KAAM,EACN61B,SAAU,GACVgK,gBAAiB,GACjBx+B,SAAS,EACTgN,gBAAiB,CAAC,QAAS,WAAY,kBAE3C,EACAjR,SAAU,CACR0H,iBAAkB,WAChB,IAAK1O,KAAKiY,gBACR,MAAO,GAGT,IAAI/K,EAAM,GACNnE,EAAO/I,KASX,OARAA,KAAKiY,gBAAgBC,SAAQ,SAAUC,GACrC,IAAI5T,EAAM7C,EAAEO,KAAK8G,EAAK+F,OAAOsJ,OAAO,SAAUtW,GAC5C,OAAOA,EAAKuW,QAAUF,CACxB,IACW,MAAP5T,GACF2I,EAAIvM,KAAK,CAAC,WAAa4D,EAAI8T,MAAOnM,OAAO3H,EAAI+T,MAAOpM,OAAO3H,EAAIkG,MAEnE,IACOyC,CACT,GAEF/F,QAAS,CACPkgF,YAAa,WACXrnF,KAAK4J,KAAO,EACZ,MAAM6L,GAAOzV,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAaolF,QAAQ,IAAIj9E,QAAQ,UAAWrK,KAAKonF,iBACzHpnF,KAAKgJ,MAAM3F,IAAIoS,GAAKlS,MAAKC,IACvBxD,KAAK4J,KAAO,KACX4qB,IACDx0B,KAAK4J,KAAO,IAEhB,ICrGuI,MCQzI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIlF,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,yEAAyE,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAAEJ,EAAW,QAAEC,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,CAAC,MAAO,SAAS,KAAO,SAAS,GAAGN,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,6CAA6Cb,EAAIS,KAAMT,EAAS,MAAEC,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,oBAAoB,CAACG,YAAY,YAAYG,MAAM,CAAC,KAAO,CAAC,MAAO,SAAS,KAAO,SAAS,GAAGN,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,OAAO,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,sCAAsCb,EAAIS,KAAKR,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,gBAAgB,CAACG,YAAY,OAAOG,MAAM,CAAC,oBAAoBP,EAAIgK,qBAAqB,KAAOhK,EAAI6iF,QAAkL7iF,EAAIS,KAA7KR,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,gBAAgB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,6CAAsDZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,cAAc,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,iBAAmBE,WAAW,qBAAqB2E,IAAI,WAAWhG,YAAY,eAAeG,MAAM,CAAC,KAAOP,EAAIa,GAAG,oBAAoB,aAAa,WAAW,YAAYb,EAAIoK,OAAOC,IAAI,YAAY,KAAO,WAAW,sBAAsB,OAAO,aAAe,SAASvB,MAAM,CAACvH,MAAOvB,EAAY,SAAE+I,SAAS,SAAUC,GAAMhJ,EAAI+6B,SAAS/xB,CAAG,EAAEvH,WAAW,eAAe,GAAGxB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,cAAc,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,CAAEqG,SAAU5H,EAAI6kC,eAAgBC,UAAU9kC,EAAI+6B,UAAYt5B,WAAW,oDAAoDrB,YAAY,eAAeG,MAAM,CAAC,aAAa,WAAW,KAAOP,EAAIa,GAAG,0BAA0B,aAAa,WAAW,YAAYb,EAAIoK,OAAOC,IAAI,kBAAkB,KAAO,iBAAiB,sBAAsB,OAAO,aAAe,SAASvB,MAAM,CAACvH,MAAOvB,EAAmB,gBAAE+I,SAAS,SAAUC,GAAMhJ,EAAI+kC,gBAAgB/7B,CAAG,EAAEvH,WAAW,sBAAsB,KAAOzB,EAAIuG,QAAmQtG,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,YAAY,KAArVA,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,YAAY,CAACG,YAAY,aAAaG,MAAM,CAAC,cAAc,aAAa,MAAQP,EAAIa,GAAG,gBAAgB,KAAO,EAAE,WAAa,GAAGK,GAAG,CAAC,aAAalB,EAAI0tB,WAAW,QACh/E,EACI,GAAkB,GC8FtB,wBACA,kCACA,oEACA,OACA,OACA,YACA,aAGA,gBACA,OACA,YACA,QACA,4BACA,mBACA,WACA,WACA,SACA,8CAEA,EACA,UACA,0BACA,6BACA,EACA,uCACA,KACA,OAUA,OARA,2BACA,qDACA,8CAEA,2DACA,KAGA,sBAIA,0CAEA,yCACA,kBACA,IAEA,SACA,yDAEA,IACA,GAbA,CAcA,EACA,yBACA,OACA,iBACA,uBAEA,GAEA,SACA,6BACA,OAEA,iCAEA,gDACA,MACA,aAEA,uFACA,kDAEA,kBACA,gB,cACA,0KACA,cAEA,6GACA,YAEA,YACA,G,MAEA,6CAIA,GACA,KCzL8P,MCQ1P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI1tB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,yEAAyE,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,wCAAwCG,MAAM,CAAC,KAAO,UAAU,aAAa,MAAM,CAACP,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,sCAAsC,WAAWZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,gBAAgB,CAACG,YAAY,OAAOG,MAAM,CAAC,oBAAoBP,EAAIgK,qBAAqB,KAAK/J,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,gBAAgB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,+CAA+CZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,cAAc,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,yBAA2BE,WAAW,6BAA6BrB,YAAY,eAAeG,MAAM,CAAC,KAAOP,EAAIa,GAAG,2BAA2B,aAAa,WAAW,YAAYb,EAAIoK,OAAOC,IAAI,mBAAmB,KAAO,kBAAkB,sBAAsB,OAAO,aAAe,SAASvB,MAAM,CAACvH,MAAOvB,EAAmB,gBAAE+I,SAAS,SAAUC,GAAMhJ,EAAI4kC,gBAAgB57B,CAAG,EAAEvH,WAAW,sBAAsB,KAAKxB,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,OAAO,CAACG,YAAY,gBAAgB,CAACJ,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,4CAA4CZ,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,cAAc,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,iBAAmBE,WAAW,qBAAqB2E,IAAI,WAAWhG,YAAY,eAAeG,MAAM,CAAC,KAAOP,EAAIa,GAAG,oBAAoB,aAAa,WAAW,YAAYb,EAAIoK,OAAOC,IAAI,YAAY,KAAO,WAAW,sBAAsB,OAAO,aAAe,SAASvB,MAAM,CAACvH,MAAOvB,EAAY,SAAE+I,SAAS,SAAUC,GAAMhJ,EAAI+6B,SAAS/xB,CAAG,EAAEvH,WAAW,eAAe,GAAGxB,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,cAAc,CAACmB,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAaC,MAAM,CAAEqG,SAAU5H,EAAI6kC,eAAgBC,UAAU9kC,EAAI+6B,UAAYt5B,WAAW,oDAAoDrB,YAAY,eAAeG,MAAM,CAAC,aAAa,WAAW,KAAOP,EAAIa,GAAG,0BAA0B,aAAa,WAAW,YAAYb,EAAIoK,OAAOC,IAAI,kBAAkB,KAAO,iBAAiB,sBAAsB,OAAO,aAAe,SAASvB,MAAM,CAACvH,MAAOvB,EAAmB,gBAAE+I,SAAS,SAAUC,GAAMhJ,EAAI+kC,gBAAgB/7B,CAAG,EAAEvH,WAAW,sBAAsB,KAAOzB,EAAIuG,QAAmQtG,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,YAAY,KAArVA,EAAG,MAAM,CAACG,YAAY,YAAY,CAACH,EAAG,MAAM,CAACG,YAAY,wBAAwB,CAACH,EAAG,YAAY,CAACG,YAAY,aAAaG,MAAM,CAAC,cAAc,aAAa,MAAQP,EAAIa,GAAG,gBAAgB,KAAO,EAAE,WAAa,GAAGK,GAAG,CAAC,aAAalB,EAAI0tB,WAAW,MACh0F,EACI,GAAkB,GC4FtB,+BAYA,4BACA,yCACA,oEACA,OACA,OACA,YACA,aAGA,gBACA,OACA,mBACA,4BACA,YACA,mBACA,WACA,gEAEA,EACA,UACA,0BACA,6BACA,EACA,uCACA,KACA,OAUA,OARA,2BACA,qDACA,8CAEA,2DACA,KAGA,sBAIA,0CAEA,yCACA,kBACA,IAEA,SACA,yDAEA,IACA,GAbA,CAcA,GAEA,SACA,yBACA,0CACA,EACA,6BACA,OAEA,iCACA,gDACA,MACA,aACA,+FACA,GACA,kCACA,cACA,qBAEA,oCACA,sBAEA,iCAEA,gB,QACA,6GACA,kBACA,YACA,G,CAEA,GACA,KC3LqQ,MCQjQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAI1tB,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI+f,QAAQ1e,MAAM,WAAWpB,EAAG,MAAM,CAACG,YAAY,eAAe,CAAEJ,EAAkB,eAAEC,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,YAAY,GAAGD,EAAIS,KAAOT,EAAIi0B,eAAwRj0B,EAAIS,KAA5QR,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI+f,QAAQqU,cAAc,OAAOn0B,EAAG,MAAM,CAACG,YAAY,mBAAmB,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,8BAA8B,IAAIb,EAAIY,GAAGZ,EAAIq0B,iBAAiB,SAAoBr0B,EAAIi0B,eAAkOj0B,EAAIS,KAAtNR,EAAG,IAAI,CAACmB,WAAW,CAAC,CAACC,KAAK,YAAYC,QAAQ,sBAAsBC,MAAM,CAAGya,OAAO,GAAQva,WAAW,kBAAkBwa,IAAI,YAAY7b,YAAY,UAAU,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAI+f,QAAQuC,aAAa,SAAoBtiB,EAAIi0B,eAAqaj0B,EAAIS,KAAzZR,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,iCAAiCZ,EAAG,IAAI,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6B,OAA4C,IAApCb,EAAI+f,QAAQwa,aAAaj3B,OAAcrD,EAAG,IAAI,CAACG,YAAY,UAAU,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,2BAA2B,OAAOb,EAAIS,OAAOR,EAAG,SAAS,CAACM,MAAM,CAAC,OAASP,EAAI+f,QAAQwa,iBAAiB,GAAcv6B,EAAIi0B,eAA+aj0B,EAAIS,KAAnaR,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,mCAAmCZ,EAAG,IAAI,CAACD,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,+BAA+B,OAA8C,IAAtCb,EAAI+f,QAAQyrC,eAAeloD,OAAcrD,EAAG,IAAI,CAACG,YAAY,UAAU,CAACJ,EAAIQ,GAAG,IAAIR,EAAIY,GAAGZ,EAAIa,GAAG,6BAA6B,OAAOb,EAAIS,OAAOR,EAAG,SAAS,CAACM,MAAM,CAAC,OAASP,EAAI+f,QAAQyrC,mBAAmB,IAChuD,EACI,GAAkB,GCFlB,GAAS,WAAkB,IAAIxrD,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAQH,EAAI6jE,OAAOvgE,OAAS,EAAGrD,EAAG,MAAM,CAACG,YAAY,iBAAiBJ,EAAI2G,GAAI3G,EAAU,QAAE,SAAS5C,EAAKyJ,GAAO,OAAO5G,EAAG,MAAM,CAACI,IAAIjD,EAAKwI,GAAGxF,YAAY,SAAS,CAACH,EAAG,YAAY,CAACI,IAAIL,EAAIiQ,KAAOpJ,EAAQ,SAAStG,MAAM,CAAC,MAAQnD,EAAK,UAAW,EAAK,gBAAe,MAAS,EAAE,IAAG,GAAG4C,EAAIS,IACnX,EACI,GAAkB,GCUtB,wBACA,cACA,0BACA,OACA,QACA,WACA,iCClBuP,MCQnP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC2E9B,IACEY,KAAM,UACN2G,WAAY,CAAE67D,OAAM,WAAS,IAC7B71D,OAAQ,CAACjJ,GACT,IAAA5C,GACE,MAAO,CACL4d,QAAS7R,OAEb,EACA5L,SAAU,CACR+xB,gBAAiB,WACf,OAA8B,IAA1B/4B,KAAKykB,QAAQ1d,SACR/G,KAAKuF,GAAG,gBACoB,IAA1BvF,KAAKykB,QAAQ1d,SACf/G,KAAKuF,GAAG,gBACoB,IAA1BvF,KAAKykB,QAAQ1d,SACf/G,KAAKuF,GAAG,uBAGV,EACT,GAEFuD,QAAS,WACP9I,KAAKwnF,cACP,EACArgF,QAAS,CACP,YAAAqgF,GACE,IAAIz+E,EAAO/I,KACX+I,EAAK4vB,gBAAiB,EACtB,IAAIx3B,EAAMnB,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAauiB,QAAQ,GAC1FzkB,KAAKgJ,MAAM3F,IAAIlC,GAAKoC,MAAK0F,IACvBF,EAAK0b,QAAUxb,EAAKvF,KACpBqF,EAAK4vB,gBAAiB,IAE1B,IChIgI,MCQlI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIj0B,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAI+iF,4BAA4B9iF,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,MAAM,CAACG,YAAY,OAAO,CAACH,EAAG,MAAM,CAACG,YAAY,UAAU,CAACH,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAGR,EAAIY,GAAGZ,EAAIa,GAAG,kCAAkCZ,EAAG,MAAM,CAACG,YAAY,OAAO8I,SAAS,CAAC,UAAYlJ,EAAIY,GAAGZ,EAAIa,GAAG,iCAAiCZ,EAAG,MAAM,CAACG,YAAY,WAAW,CAACH,EAAG,aAAa,CAACM,MAAM,CAAC,MAAQP,EAAIwG,YAAY,aAAaxG,EAAIwG,YAAY,SAAU,EAAK,cAAc,gBAAgBtF,GAAG,CAAC,aAAelB,EAAIgjF,mBAAmB,cACz0B,EACI,GAAkB,GCqCtB,wBACA,wBACA,yBACA,OACA,iBACA,aACA,aAGA,UACA,uBACA,oCACA,EACA,6BACA,4BACA,4CACA,kCACA,GAEA,SACA,0BACA,sBACA,KC7DwP,MCQpP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCnB5B,GAAS,WAAkB,IAAIhjF,EAAI1E,KAAQ0E,EAAIE,MAAMD,GAAG,OAAOD,EAAIM,GAAG,EAC1E,EACI,GAAkB,CAAC,WAAY,IAAIN,EAAI1E,KAAK2E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,2BAA2B,CAACH,EAAG,KAAK,CAACD,EAAIQ,GAAG,wBACzI,GCIE,IACEa,KAAM,YCR0H,MCQhI,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,Q,qBCdhC,IACEoB,QAAS,CACPwgF,cAAe,WACb3nF,KAAKgJ,MAAM3F,IAAIrD,KAAK8G,OAAOlF,MAAM+G,SAASi/E,cAAgB5nF,KAAK8G,OAAOlF,MAAMM,aAAa2lF,YAAY,IAAItkF,MAAKU,IAC5GjE,KAAK8G,OAAO1D,OAAO,cAAea,EAASP,KAAI,GAEnD,EAGAokF,cAAe,SAAUC,EAAiBC,GACxC,IAAIz+E,EAAUvJ,KAAK8G,OAAOlF,MAAM2H,QAChC,GAAIA,EAAS,CACX,IAAIkM,EAAMzV,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAa+lF,gBAAgB,GAClG,OAAOjoF,KAAKgJ,MAAMw1C,IAAI/oC,EAAKlM,GACxBhG,MAAK0F,GACGjJ,KAAKkoF,wBAEb3kF,MAAK0F,GACGjJ,KAAKmoF,kBAEb5kF,MACCU,IACyB,MAAnB8jF,GACFA,EAAgB9jF,EAClB,IAEFuR,IACyB,MAAnBwyE,GACFA,EAAgBxyE,EAClB,GAER,CACF,EACA4yE,iBAAkB,SAAUL,EAAiBC,GAC3C,IAAIz+E,EAAUvJ,KAAK8G,OAAOlF,MAAM2H,QAChC,GAAIA,EAAS,CACX,IAAIkM,EAAMzV,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAammF,iBAAiB,GACnG,OAAOroF,KAAKgJ,MAAMw1C,IAAI/oC,EAAKlM,GACxBhG,MAAK0F,GACGjJ,KAAKkoF,wBAEb3kF,MAAK0F,GACGjJ,KAAKmoF,kBAEb5kF,MACCU,IACyB,MAAnB8jF,GACFA,EAAgB9jF,EAClB,IAEFuR,IACyB,MAAnBwyE,GACFA,EAAgBxyE,EAClB,GAER,CACF,EACA2yE,cAAe,SAAUG,GACvB,OAAO,IAAIxkF,SAAQ,CAACsF,EAASrF,KAC3B,aAAItD,KAAK4C,IAAI,KAAMzB,MAAMN,MAAMgC,QAAS,CAAEP,QAAS,CAAEqB,cAAe,UAAYkkF,KAAe/kF,MAAKuvB,IAClGvxB,eAAekC,QAAQ,aAAcqvB,EAAOpvB,MAC5C,KAAMR,SAAS,qBAAsB4vB,EAAOpvB,MAC5C0F,EAAQ0pB,EAAOpvB,KAAI,IAClB8wB,IACD5wB,QAAQC,IAAI2wB,GACG,yBAAXA,EAAE3tB,MACJ7G,KAAKqG,OAAO,SACd,GACD,GAEL,EACAA,OAAQ,SAAUkiF,GAChBvoF,KAAK8G,OAAOlF,MAAM2H,QAAU,CAAC,EAC7BvJ,KAAK8G,OAAO1D,OAAO,UACnB,IAAI9B,EAAQC,eAAeC,QAAQ,aACnCxB,KAAKgJ,MAAM3F,IAAIrD,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAamE,OAAO,GAAK,cAAgB/E,GAAOiC,MAAKU,IAC7H1C,eAAeiD,WAAW,aAC1BjD,eAAeiD,WAAW,cACtB+jF,GACFvoF,KAAK6jB,QAAQljB,KAAK4nF,GAEpBjoF,SAASkoF,QAAO,IAElBvkF,IACEL,QAAQC,IAAI,0BAA2BI,GACvC1C,eAAeiD,WAAW,aAC1BjD,eAAeiD,WAAW,cACtB+jF,GACFvoF,KAAK6jB,QAAQljB,KAAK4nF,GAEpBjoF,SAASkoF,QAAO,GAEpB,EACAC,aAAc,SAAUV,EAAiBC,GACvC,IAAKhoF,KAAK8G,OAAOlF,MAAM8mF,eAAgB,CACrC1oF,KAAK8G,OAAO1D,OAAO,uBACnB,IAAI2F,EAAO/I,KACXA,KAAKgJ,MAAM3F,IAAIrD,KAAK8G,OAAOlF,MAAM+G,SAAS4zB,YAAcv8B,KAAK8G,OAAOlF,MAAMM,aAAaymF,YAAY,IAAIplF,MAAKU,IAC1G8E,EAAKjC,OAAO1D,OAAO,aAAca,EAASP,MAClB,OAApBqkF,GACFA,EAAgB9jF,EAClB,IAEFA,IAC0B,OAApB+jF,GACFA,EAAgB/jF,EAClB,GAEJ,CACF,EACA,mBAAAikF,GACE,OAAO,IAAIpkF,SAAQ,CAACsF,EAASrF,KAC3B/D,KAAKyoF,cAAcxkF,IACjBmF,EAAQnF,EAAQ,IACdM,IACFR,EAAOQ,EAAG,GACX,GAEL,EACAw3D,kCAAmC,SAAUzxD,GAC3C,OAAKA,EAEE,MAA2BA,GAFhB,KAGpB,EACA0xD,wBAAyB,SAAU1xD,GASjC,OAAQA,EAAGgJ,YACT,IAAK,IAAK,OAAOtT,KAAKuF,GAAG,8BACzB,IAAK,IAAK,OAAOvF,KAAKuF,GAAG,6BACzB,IAAK,IAAK,OAAOvF,KAAKuF,GAAG,2BACzB,IAAK,IAAK,OAAOvF,KAAKuF,GAAG,+BACzB,IAAK,IAAK,OAAOvF,KAAKuF,GAAG,6BAE7B,EACAu8B,sBAAuB,SAAUx3B,GAC/B,OAAO5I,EAAEO,KAAKjC,KAAK8G,OAAOlF,MAAMsrE,wBAAwB,SAAUryD,GAAK,OAAOA,EAAEvQ,KAAOA,CAAG,IAAGoB,IAC/F,EACAm2B,2BAA4B,SAAUv3B,GACpC,OAAO5I,EAAEO,KAAKjC,KAAK8G,OAAOlF,MAAM4rB,yBAAyB,SAAU3S,GAAK,OAAOA,EAAEvQ,KAAOA,CAAG,IAAGoB,IAChG,EACAq2B,sBAAuB,SAAUz3B,GAC/B,OAAO5I,EAAEO,KAAKjC,KAAK8G,OAAOlF,MAAMurE,uBAAuB,SAAUtyD,GAAK,OAAOA,EAAEvQ,KAAOA,CAAG,IAAGoB,IAC9F,EACA4B,qBAAsB,SAAUO,GAC9B,IAAKA,EACH,MAAO,GAET,IAAItC,EAAQqH,OAAOg3C,KAAK5pD,KAAK8G,OAAOlF,MAAMimB,aAAa7nB,KAAK4oF,eAAe1hF,WAAWhG,QAAQ2M,GAC9F,IAAe,IAAXtC,EACF,OAAOvL,KAAKuF,GAAG,aAAesI,GAE9B,IAAIs+B,EAAKzqC,EAAEO,KAAKjC,KAAK8G,OAAOlF,MAAMqM,cAAc5J,GACvCA,EAAEwJ,UAAYA,IAEvB,OAAOs+B,EAAGr+B,WAEd,EACAu0B,WAAY,SAAUwmD,GACpB,IAAIhjD,EAAI,IAAIzkC,KAAKynF,GACjB,OAAOhjD,EAAEK,UAAY,KAAOL,EAAEI,WAAa,GAAK,IAAMJ,EAAE19B,aAC1D,EACAge,QAAS,SAAUwN,GACjB,OAAOA,EAAI7C,OAAO,GAAG3wB,cAAgBwzB,EAAIjgB,MAAM,EACjD,EACAiF,iBAAkB,SAAU5T,GAC1B,IAAKA,EAAK,OAAO,KACjB,IAAI+jF,EAAgB/jF,EAAI+rB,OAAO,GAAG3wB,cAAgB4E,EAAI2O,MAAM,GAC5D,OAAOo1E,CACT,EACA3mD,iBAAkB,SAAU73B,EAAIiC,GAC9B,GAAIwhC,MAAMzjC,GAAK,OAAOA,EACtB,IAAIxI,EAAOJ,EAAEO,KAAKsK,GAAY,SAAUlI,GAAK,OAAOA,EAAEiG,KAAOA,CAAG,IAChE,IAAKxI,EAAM,OAAOwI,EAClB,IAAIvF,EAAMjD,EAAKiE,KACX+iF,EAAgB9oF,KAAK2Y,iBAAiB5T,GAC1C,OAAO+jF,CACT,EACA1mD,SAAU,SAAU93B,EAAIiC,GACtB,GAAIwhC,MAAMzjC,GAAK,OAAOA,EACtB,IAAIxI,EAAOJ,EAAEO,KAAKsK,GAAY,SAAUlI,GAAK,OAAOA,EAAEiG,KAAOA,CAAG,IAChE,OAAKxI,EACEA,EAAK4J,KADMpB,CAEpB,EACAy+E,MAAO,SAAUnD,GACf,IAAK,IAAI/qE,KAAK+qE,EACPA,EAAI/qE,WACA+qE,EAAI/qE,GAGf,OAAO+qE,CACT,EACA5rC,SAAU,SAAU1vC,EAAI5C,GACtB,IAAIpG,EAAQtB,KAAK26B,SACjB,GAAIr5B,EAAO,CACT,IAAI0nF,EAAM1nF,EAAMoG,GAChB,QAAKshF,IAGD5mF,MAAMC,QAAQ2mF,GACTA,EAAI9nF,QAAQoJ,IAAO,EAExB0+E,EAAI11E,WAAWC,SAAS,KACnBy1E,EAAIpmF,MAAM,KAAK1B,QAAQoJ,IAAO,EAEhC0+E,IAAQ1+E,EACjB,CACA,OAAO,CACT,EACAuwB,QAAS,SAAUs3B,GACjB,OAAOnyD,KAAKg6C,SAASmY,EAAM,+DAC7B,EACA82B,eAAgB,SAAU92B,GACxBnyD,KAAKg6C,SAASmY,EAAM,gEACpB,MAAM7wD,EAAQ,KAAMM,MAAMqB,gBAC1B,IAAK3B,EAAO,OAAO,EAEnB,GAAIA,EAAO,CACT,IAAI0nF,EAAM1nF,EAAM,gEAChB,QAAK0nF,IAGD5mF,MAAMC,QAAQ2mF,GACTA,EAAI9nF,QAAQixD,IAAS,EAE1B62B,EAAI11E,WAAWC,SAAS,KACnBy1E,EAAIpmF,MAAM,KAAK1B,QAAQixD,IAAS,EAElC62B,IAAQ72B,EACjB,CACA,OAAO,CACT,EACA,YAAA+2B,GACE,OAAOlpF,KAAKipF,eAAe,QAC7B,EACA,sBAAAE,GACE,OAAOnpF,KAAKipF,eAAe,kBAC7B,EACAG,UAAW,SAAU3kE,GAEnB,OADAA,EAAUA,EAAQnR,WACXtT,KAAKg6C,SAASv1B,EAAS,oBAChC,EACA4kE,WAAY,SAAU5qD,GAEpB,OADAA,EAAWA,EAASnrB,WACbtT,KAAKg6C,SAASvb,EAAU,qBACjC,EACA6qD,eAAgB,SAAUhoF,GACxB,OAAO,KAAUA,EACnB,EACAioF,iBAAkB,SAAU9kE,EAASga,GACnC,OAAOz+B,KAAK66B,QAAQ,UAAY76B,KAAK66B,QAAQ,kBAAoB76B,KAAK66B,QAAQ,qBAC7E76B,KAAK66B,QAAQ,aAAe76B,KAAKqpF,WAAW5qD,KACzCz+B,KAAK66B,QAAQ,OAAS76B,KAAK66B,QAAQ,QAAU76B,KAAKopF,UAAU3kE,EAClE,EAEA,QAAAo3C,GACE,OAAO77D,KAAK66B,QAAQ,QACtB,EACA,kBAAAwwC,CAAoB5sC,GAClB,OAAOz+B,KAAK66B,QAAQ,UACb76B,KAAK66B,QAAQ,aAAe76B,KAAKqpF,WAAW5qD,IAC5Cz+B,KAAK66B,QAAQ,kBAAoB76B,KAAKqpF,WAAW5qD,IAClDz+B,KAAK66B,QAAQ,kBACb76B,KAAK66B,QAAQ,mBACrB,EACA,iBAAAuwC,CAAmBnxB,EAAWuvC,GAAa,GACzC,IAAI9qD,EAAa,EACjB,MAAMja,EAAU/iB,EAAEO,KAAKjC,KAAK8G,OAAOlF,MAAMgU,UAAW6O,GAC3CpY,OAAOoY,EAAQna,MAAQ+B,OAAO4tC,KAEvC,QAAIx1B,IACFia,EAAaja,EAAQia,WAIhB1+B,KAAKqrE,mBAAmB3sC,IACvB1+B,KAAK66B,QAAQ,OAAS76B,KAAKopF,UAAUnvC,IACpCj6C,KAAK66B,QAAQ,OAAS2uD,GAAexpF,KAAKopF,UAAUnvC,GAC/D,EACA,oBAAAiuB,CAAsBxpC,EAAa,GACjC,OAAO1+B,KAAK66B,QAAQ,UACb76B,KAAK66B,QAAQ,oBACZ6D,EAAa,GAAK1+B,KAAK66B,QAAQ,4BAA8B76B,KAAKqpF,WAAW3qD,EAAWprB,WAClG,EACA,+BAAA+mC,CAAiCovC,GAC/B,OAAOzpF,KAAKkoE,wBACJloE,KAAK66B,QAAQ,2BAA6B76B,KAAK0pF,yBAAyBD,IACxEzpF,KAAK66B,QAAQ,4BAA8B76B,KAAK0pF,yBAAyBD,EACnF,EACA,gCAAAE,CAAkCC,GAChC,GAAI5pF,KAAKkoE,uBAAwB,OAAO,EAExC,GAAIloE,KAAK66B,QAAQ,2BAA6B76B,KAAK66B,QAAQ,2BAA4B,CACrF,IAAIse,EAAQz3C,EAAEO,KAAK2nF,GAAOC,GACjB7pF,KAAK0pF,yBAAyBG,KAEvC,OAAOv6E,QAAQ6pC,EACjB,CACA,OAAO,CACT,EACA,aAAA2wC,CAAeL,GACb,OAAOzpF,KAAKkoE,wBACJloE,KAAK66B,QAAQ,4BAA8B76B,KAAK0pF,yBAAyBD,IACzEzpF,KAAK66B,QAAQ,2BAA6B76B,KAAK0pF,yBAAyBD,IACxEzpF,KAAK66B,QAAQ,qBAAuB76B,KAAK0pF,yBAAyBD,EAC5E,EACA,gBAAAM,CAAkBN,GAChB,OAAOzpF,KAAKkoE,wBACJloE,KAAK66B,QAAQ,2BAA6B76B,KAAK0pF,yBAAyBD,IACxEzpF,KAAK66B,QAAQ,wBAA0B76B,KAAK0pF,yBAAyBD,IAAQ/nF,EAAEO,KAAKjC,KAAK8G,OAAOlF,MAAMooF,qBAAqB3lF,GAAKA,IAAMgI,OAAOo9E,IACvJ,EACA,eAAAQ,GACE,OAAOjqF,KAAK66B,QAAQ,UACb76B,KAAK66B,QAAQ,kBACb76B,KAAK66B,QAAQ,oBACb76B,KAAK66B,QAAQ,kBACb76B,KAAK66B,QAAQ,4BACb76B,KAAK66B,QAAQ,oBACtB,EACA,aAAAgyC,CAAerjE,GACb,OAAOxJ,KAAKg6C,SAASxwC,EAAW,YAClC,EACA,wBAAAkgF,CAA0BD,GACxB,IAAInoF,EAAQtB,KAAK26B,SAEjB,GADA8uD,EAAMp9E,OAAOo9E,GACTnoF,EAAO,CACT,IAAI4oF,EAAS5oF,EAAM2qE,iBAAmB3qE,EAAM2qE,iBAAiBrpE,MAAM,KAAO,KACtEunF,EAAY7oF,EAAM4qE,oBAAsB5qE,EAAM4qE,oBAAoBtpE,MAAM,KAAO,KAKnF,OAHKsnF,IAAQA,EAAS,IACjBC,IAAWA,EAAY,IAEvBD,EAAOliF,QAAWmiF,EAAUniF,QAGjCkiF,EAAS,IAAI,IAAIr9E,IAAIzK,MAAMu+B,KAAKupD,GAAQ7lF,GAAKrE,KAAKoqF,SAAS/lF,OAC3D8lF,EAAY,IAAI,IAAIt9E,IAAIzK,MAAMu+B,KAAKwpD,GAAW9lF,GAAKrE,KAAKoqF,SAAS/lF,OAE1D6lF,EAAOhpF,QAAQuoF,IAAQ,GAAKU,EAAUjpF,QAAQuoF,IAAQ,IANb,CAOlD,CACA,OAAO,CACT,EACA,QAAAW,CAAUC,GAER,IAAIC,EAAaD,EAASE,YAAY,KACtC,OAAoB,IAAhBD,EAA0B,EACvBj+E,OAAOg+E,EAASvuD,UAAUwuD,EAAa,GAChD,EACA3mE,YAAa,SAAU6mE,EAAM/0E,EAAKwqD,EAASl3D,GAKzC,OAJKA,IACHA,EAAO/I,MAGF,IAAI8D,SAAQ,SAAUsF,EAASrF,GACpCgF,EAAKC,MAAMwhF,GAAM/0E,EAAKwqD,GAAS18D,MAAKgS,IAClCnM,EAAQmM,EAAQ1O,KAAI,IACnBvC,OAAMiW,IACPxW,EAAOwW,EAAK,GAEhB,GACF,GAEFvT,SAAU,CACRyjF,WAAY,WACV,IAAInpF,EAAQC,eAAeC,QAAQ,aACnC,OAAIF,EACK,CAAEyB,QAAS,CAAEqB,cAAe,UAAY9C,IAExC,IAEX,EACAsnF,cAAe,WACb,OAAOh2E,OAAOg3C,KAAK5pD,KAAK8G,OAAOlF,MAAMimB,cAAc,EACrD,EACA8S,SAAU,WACR,IAAIiiD,EAAK,KAAMh7E,MAAMqB,gBAErB,OAAI25E,GAIG,IACT,EACA8N,SAAU,WACR,IAAI9N,EAAK,KAAMh7E,MAAMy8E,YACrB,OAAIzB,GAGG,IACT,ICrUJ,aAAIhgE,IAAI,MAER,MAAM+tE,GAAS,IAAI,KAAO,CACxB7zE,KAAM,UACN8zE,OAAQ,CACN,CACE1qF,KAAM,IACN6F,KAAM,QACNyB,UAAW,GACX+zE,KAAM,CAAEsP,QAAQ,IAElB,CACE3qF,KAAM,kBACN6F,KAAM,UACNyB,UAAW,GACXyE,OAAO,EACPsvE,KAAM,CAAEsP,QAAQ,IAElB,CACE3qF,KAAM,uBACN6F,KAAM,eACNyB,UAAW,GACXyE,OAAO,EACPsvE,KAAM,CAAEsP,QAAQ,IAElB,CACE3qF,KAAM,WACN6F,KAAM,cACNyB,UAAW,GACX+zE,KAAM,CAAEsP,QAAQ,IAElB,CACE3qF,KAAM,SACN6F,KAAM,YACNyB,UAAW,GACX+zE,KAAM,CAAEsP,QAAQ,IAElB,CACE3qF,KAAM,YACN6F,KAAM,WACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAM7+E,EAAQ,IAAK6+E,EAAM1lE,OAEzB,OADAnZ,EAAM8+E,gBAAkBz7E,QAAQrD,EAAM8+E,iBAC/B9+E,CACT,EACAsvE,KAAM,CAAEsP,QAAQ,IAElB,CACE3qF,KAAM,cACN6F,KAAM,aACNyB,UAAW,GACX+zE,KAAM,CAAEsP,QAAQ,GAChBG,MAAO,CAAC,cAAe,iBAEzB,CACE9qF,KAAM,eACN6F,KAAM,SACNyB,UAAW,GACX+zE,KAAM,CAAEsP,QAAQ,GAChBG,MAAO,CAAC,YAAa,eAEvB,CACE9qF,KAAM,0BACN6F,KAAM,OACNyB,UAAW,GACX+zE,KAAM,CAAEsP,QAAQ,GAChB5+E,OAAO,EACP++E,MAAO,CAAC,qBAAsB,2BAEhC,CACE9qF,KAAM,iDACN6F,KAAM,aACNyB,UAAW,GACXyE,OAAO,EACPsvE,KAAM,CAAEsP,QAAQ,GAChBG,MAAO,CAAC,4CAA6C,kDAGvD,CACE9qF,KAAM,gBACN6F,KAAM,cACNyB,UAAW,GACX+zE,KAAM,CAAEsP,QAAQ,IAElB,CACE3qF,KAAM,+BACN6F,KAAM,qBACNyB,UAAW,GACX+zE,KAAM,CAAEsP,QAAQ,GAChBG,MAAO,CAAC,sBAAuB,IAAMC,mBAAmB,8BAE1D,CACE/qF,KAAM,iCACN6F,KAAM,0BACNyB,UAAW,GACX+zE,KAAM,CAAEsP,QAAQ,GAChBG,MAAO,CAAC,2BAA4B,IAAMC,mBAAmB,gCAE/D,CACE/qF,KAAM,kBACN6F,KAAM,mBACNyB,UAAW,GACX+zE,KAAM,CAAEsP,QAAQ,IAElB,CACE3qF,KAAM,yCACN6F,KAAM,iBACNyB,UAAW,GACX+zE,KAAM,CAAEsP,QAAQ,GAChBG,MAAO,CAAC,mBAAoB,6CAE9B,CACE9qF,KAAM,sBACN6F,KAAM,YACNyB,UAAW,GACXyE,OAAO,EACPsvE,KAAM,CAAEsP,QAAQ,GAChBG,MAAO,CAAC,mBAAoB,sBAE9B,CACE9qF,KAAM,SACN6F,KAAM,QACNyB,UAAW,GACX+zE,KAAM,CAAEsP,QAAQ,IAElB,CACE3qF,KAAM,YACN6F,KAAM,WACNyB,UAAW,GACX+zE,KAAM,CAAEsP,QAAQ,GAChB5+E,OAAO,GAET,CACE/L,KAAM,WACN6F,KAAM,UACNyB,UAAW,IAEb,CACEtH,KAAM,mBACN6F,KAAM,iBACNyB,UAAW,GACXyE,OAAO,GAET,CACE/L,KAAM,6BACN6F,KAAM,oBACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAM7+E,EAAQ,IAAK6+E,EAAMhnE,QAEzB,OADA7X,EAAMsvB,SAAWtvB,EAAMsvB,QAChBtvB,CACT,GAEF,CACE/L,KAAM,sCACN6F,KAAM,qBACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAM7+E,EAAQ,IAAK6+E,EAAMhnE,QAGzB,OAFA7X,EAAMsvB,SAAWtvB,EAAMsvB,QACvBtvB,EAAMi/E,QAAUj/E,EAAMi/E,OACfj/E,CACT,GAEF,CACE/L,KAAM,qDACN6F,KAAM,kBACNyB,UAAW,GACXyE,OAAO,GAET,CACE/L,KAAM,6CACN6F,KAAM,oBACNyB,UAAW,GACXyE,OAAO,GAET,CACE/L,KAAM,0DACN6F,KAAM,yBACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAM7+E,EAAQ,IAAK6+E,EAAMhnE,QAIzB,OAHA7X,EAAMsvB,SAAWtvB,EAAMsvB,QACvBtvB,EAAM8vC,aAAe9vC,EAAM8vC,YAC3B9vC,EAAM+6C,YAAc/6C,EAAM+6C,WACnB/6C,CACT,GAEF,CACE/L,KAAM,qDACN6F,KAAM,mBACNyB,UAAW,GACXyE,OAAO,GAET,CACE/L,KAAM,+CACN6F,KAAM,qBACNyB,UAAW,GACXyE,OAAO,GAET,CACE/L,KAAM,2DACN6F,KAAM,yBACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAM7+E,EAAQ,IAAK6+E,EAAMhnE,QAIzB,OAHA7X,EAAMsvB,SAAWtvB,EAAMsvB,QACvBtvB,EAAM8vC,aAAe9vC,EAAM8vC,YAC3B9vC,EAAM+6C,YAAc/6C,EAAM+6C,WACnB/6C,CACT,GAGF,CACE/L,KAAM,wBACN6F,KAAM,mBACNyB,UAAW,IAGb,CACEtH,KAAM,yBACN6F,KAAM,oBACNyB,UAAW,IAEb,CACEtH,KAAM,gCACN6F,KAAM,0BACNyB,UAAW,IAEb,CACEtH,KAAM,kCACN6F,KAAM,4BACNyB,UAAW,IAEb,CACEtH,KAAM,6BACN6F,KAAM,uBACNyB,UAAW,IAEb,CACEtH,KAAM,iCACN6F,KAAM,2BACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAO,CACL/a,OAAO,EAEX,GAEF,CACE7vE,KAAM,4BACN6F,KAAM,sBACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAO,CACL/a,OAAO,EAEX,GAEF,CACE7vE,KAAM,iCACN6F,KAAM,iBACNyB,UAAW,GACXyE,OAAO,GAET,CACE/L,KAAM,iBACN6F,KAAM,mBACNyB,UAAW,IAEb,CACEtH,KAAM,iCACN6F,KAAM,aACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAM7+E,EAAQ,IAAK6+E,EAAMhnE,QAGzB,OAFA7X,EAAMsvB,SAAWtvB,EAAMsvB,QACvBtvB,EAAMi/E,QAAUj/E,EAAMi/E,OACfj/E,CACT,GAEF,CAEE/L,KAAM,SACN6F,KAAM,QACNyB,UAAW,IAEb,CAYEtH,KAAM,kBACN6F,KAAM,uBACNyB,UAAW,GACXyE,OAAO,GAET,CAIE/L,KAAM,sBACN6F,KAAM,oBACNyB,UAAW,GACXyE,OAAO,GAET,CAiBE/L,KAAM,8BACN6F,KAAM,gCACNyB,UAAW,GACXyE,OAAO,GAET,CACE/L,KAAM,aACN6F,KAAM,YACNyB,UAAW,IAEb,CACEtH,KAAM,kBACN6F,KAAM,WACNyB,UAAW,IAEb,CACEtH,KAAM,mBACN6F,KAAM,YACNyB,UAAW,IAEb,CACEtH,KAAM,sCACN6F,KAAM,mBACNyB,UAAW,IAEb,CACEtH,KAAM,iBACN6F,KAAM,cACNyB,UAAW,GACXyE,MAAO,CAAEvE,KAAM,IAEjB,CACExH,KAAM,+BACN6F,KAAM,aACNyB,UAAW,IAEb,CACEtH,KAAM,UACN6F,KAAM,WACNyB,UAAW,IAEb,CACEtH,KAAM,oBACN6F,KAAM,QACNyB,UAAW,IAEb,CACEtH,KAAM,+BACN6F,KAAM,mBACNyB,UAAW,IAEb,CACEtH,KAAM,YACN6F,KAAM,WACNyB,UAAW,IAEb,CACEtH,KAAM,sBACN6F,KAAM,gBACNyB,UAAW,IAEb,CACEtH,KAAM,wCACN6F,KAAM,sBACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAM7+E,EAAQ,IAAK6+E,EAAMhnE,QAEzB,OADA7X,EAAMuvB,SAAWvvB,EAAMuvB,QAChBvvB,CACT,GAEF,CACE/L,KAAM,mCACN6F,KAAM,iBACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAM7+E,EAAQ,IAAK6+E,EAAMhnE,QAEzB,OADA7X,EAAMuvB,SAAWvvB,EAAMuvB,QAChBvvB,CACT,GAEF,CACE/L,KAAM,qDACN6F,KAAM,uBACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAM7+E,EAAQ,IAAK6+E,EAAMhnE,QAGzB,OAFA7X,EAAMuvB,SAAWvvB,EAAMuvB,QACvBvvB,EAAMkqC,YAAclqC,EAAMkqC,WACnBlqC,CACT,GAEF,CACE/L,KAAM,gDACN6F,KAAM,kBACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAM7+E,EAAQ,IAAK6+E,EAAMhnE,QAGzB,OAFA7X,EAAMuvB,SAAWvvB,EAAMuvB,QACvBvvB,EAAMkqC,YAAclqC,EAAMkqC,WACnBlqC,CACT,GAGF,CACE/L,KAAM,uCACN6F,KAAM,6BACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAM7+E,EAAQ,IAAK6+E,EAAMhnE,QAEzB,OADA7X,EAAMuvB,SAAWvvB,EAAMuvB,QAChBvvB,CACT,GAGF,CACE/L,KAAM,mDACN6F,KAAM,8BACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAM7+E,EAAQ,IAAK6+E,EAAMhnE,QAGzB,OAFA7X,EAAMuvB,SAAWvvB,EAAMuvB,QACvBvvB,EAAMzC,WAAayC,EAAMzC,UAClByC,CACT,GAGF,CACE/L,KAAM,yDACN6F,KAAM,2BACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAM7+E,EAAQ,IAAK6+E,EAAMhnE,QAGzB,OAFA7X,EAAMuvB,SAAWvvB,EAAMuvB,QACvBvvB,EAAMzC,WAAayC,EAAMzC,UAClByC,CACT,GAGF,CACE/L,KAAM,kCACN6F,KAAM,wBACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAM7+E,EAAQ,IAAK6+E,EAAMhnE,QAEzB,OADA7X,EAAMuvB,SAAWvvB,EAAMuvB,QAChBvvB,CACT,GAGF,CACE/L,KAAM,8CACN6F,KAAM,yBACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAM7+E,EAAQ,IAAK6+E,EAAMhnE,QAGzB,OAFA7X,EAAMuvB,SAAWvvB,EAAMuvB,QACvBvvB,EAAMzC,WAAayC,EAAMzC,UAClByC,CACT,GAGF,CACE/L,KAAM,oDACN6F,KAAM,sBACNyB,UAAW,GACX,KAAAyE,CAAO6+E,GACL,MAAM7+E,EAAQ,IAAK6+E,EAAMhnE,QAGzB,OAFA7X,EAAMuvB,SAAWvvB,EAAMuvB,QACvBvvB,EAAMzC,WAAayC,EAAMzC,UAClByC,CACT,GAEF,CACE/L,KAAM,UACN6F,KAAM,YACNyB,UAAW,GACXyE,OAAO,GAET,CACE/L,KAAM,oBACN6F,KAAM,kBACNyB,UAAW,IAEb,CACEtH,KAAM,uBACN6F,KAAM,qBACNyB,UAAW,IAEb,CACEtH,KAAM,gBACN6F,KAAM,kBACNyB,UAAW,GACXyE,OAAO,EACPsvE,KAAM,CAAEsP,QAAQ,IAElB,CACE3qF,KAAM,SACN6F,KAAM,WACNyB,UAAW,IAEb,CACEtH,KAAM,mCACN6F,KAAM,mBACNyB,UAAW,GACXyE,OAAO,EACPsvE,KAAM,CAAEsP,QAAQ,IAElB,CACE3qF,KAAM,aACN6F,KAAM,YACNyB,UAAW,GACX+zE,KAAM,CAAEsP,QAAQ,IAElB,CACE3qF,KAAM,mBACN6F,KAAM,gBACNyB,UAAW,IAEb,CACEtH,KAAM,eACN6F,KAAM,cACNyB,UAAW,IAEb,CACEtH,KAAM,WACN6F,KAAM,UACNyB,UAAW,IAEb,CACEtH,KAAM,iBACN6F,KAAM,aACNyB,UAAW,GACX2jF,YAAa,CAAC7N,EAAI38C,EAAM9/B,KACtB,MAAMqoF,EAAe,GAAa/hF,QAAQ+hF,gBAAkB,GAAa/hF,QAAQgiF,yBAC7ED,EACFroF,IAEAA,GAAK,EACP,GAGJ,CACEX,KAAM,YACNsH,UAAW,GACX+zE,KAAM,CAAEsP,QAAQ,IAElB,CACE3qF,KAAM,IACNqoF,SAAU,YACVhN,KAAM,CAAEsP,QAAQ,KAGpB,cAAAO,CAAgB9N,EAAI38C,EAAM0qD,GAExB,MAAO,CAAEhnF,EAAG,EAAGoyB,EAAG,EACpB,IAGFk0D,GAAOW,YAAW,CAAChO,EAAI38C,EAAM9/B,KACvBy8E,EAAGp9E,KAAKE,WAAW,gBACrBC,OAAOC,SAASC,KAAO+8E,EAAG98E,UAEiB,MAAvCe,eAAeC,QAAQ,eACpB87E,EAAG/B,KAAKsP,SACXxqF,OAAOC,SAASC,KAAO,eAAiB+8E,EAAGp9E,OAK/CqB,eAAekC,QAAQ,OAAQk9B,EAAKzgC,MACpCW,IACF,IAGF,U,+xBCrqBA,aAAI+b,IAAI,OAER,I,GAAM2uE,GAAoD,CACxD5gF,WAAU,SAAE0N,EAAeyE,GACzB,MAAO,cAAgBzE,CACzB,EACA0E,SAAQ,SAAE9W,EAAe6W,GACvB,SAAI1a,MAAMC,QAAQ4D,IAAUA,EAAM+B,OAAS,IAElC/B,EAAMiyB,MAAK,SAAAp2B,GAAQ,MAAgB,kBAATA,IAAuC,IAAlBA,EAAK8K,QAAjC,GAK9B,GAGF,M,uDC6EA,MAAQI,IAAI,QACZ,MAAQA,IAAI,QACZ,MAAQA,IAAI,QACZ,MAAQA,IAAIw+E,GAAA,IACZ,MAAQx+E,IAAIy+E,GAAA,IACZ,MAAQz+E,IAAI0+E,GAAA,IACZ,MAAQ1+E,IAAI2+E,GAAA,IACZ,MAAQ3+E,IAAI4+E,GAAA,IACZ,MAAQ5+E,IAAI6+E,GAAA,IACZ,MAAQ7+E,IAAI8+E,GAAA,IACZ,MAAQ9+E,IAAI++E,GAAA,IACZ,MAAQ/+E,IAAIg/E,GAAA,IACZ,MAAQh/E,IAAIi/E,GAAA,IACZ,MAAQj/E,IAAIk/E,GAAA,IACZ,MAAQl/E,IAAIm/E,GAAA,IACZ,MAAQn/E,IAAIo/E,GAAA,IACZ,MAAQp/E,IAAI,OACZ,MAAQA,IAAIq/E,GAAA,IACZ,MAAQr/E,IAAIs/E,GAAA,IACZ,MAAQt/E,IAAIu/E,GAAA,IACZ,MAAQv/E,IAAIw/E,GAAA,IACZ,MAAQx/E,IAAIy/E,GAAA,IACZ,MAAQz/E,IAAI0/E,GAAA,IACZ,MAAQ1/E,IAAI2/E,GAAA,IACZ,MAAQ3/E,IAAI4/E,GAAA,IACZ,MAAQ5/E,IAAI6/E,GAAA,IACZ,MAAQ7/E,IAAI8/E,GAAA,IACZ,MAAQ9/E,IAAI+/E,GAAA,IACZ,MAAQ//E,IAAIggF,GAAA,IACZ,MAAQhgF,IAAIigF,GAAA,IACZ,MAAQjgF,IAAIkgF,GAAA,IACZ,MAAQlgF,IAAImgF,GAAA,IACZ,MAAQngF,IAAIogF,GAAA,IACZ,MAAQpgF,IAAIqgF,GAAA,IACZ,MAAQrgF,IAAIsgF,GAAA,IACZ,MAAQtgF,IAAIugF,GAAA,IACZ,MAAQvgF,IAAIwgF,GAAA,IACZ,MAAQxgF,IAAIygF,GAAA,IACZ,MAAQzgF,IAAI0gF,GAAA,IACZ,MAAQ1gF,IAAI2gF,GAAA,IACZ,MAAQ3gF,IAAI4gF,GAAA,IACZ,MAAQ5gF,IAAI6gF,GAAA,IACZ,MAAQ7gF,IAAI8gF,GAAA,IACZ,MAAQ9gF,IAAI+gF,GAAA,IACZ,MAAQ/gF,IAAIghF,GAAA,IACZ,MAAQhhF,IAAIihF,GAAA,IACZ,MAAQjhF,IAAIkhF,GAAA,IACZ,MAAQlhF,IAAImhF,GAAA,IACZ,MAAQnhF,IAAI,QACZ,MAAQA,IAAIohF,GAAA,IACZ,MAAQphF,IAAIqhF,GAAA,IACZ,MAAQrhF,IAAIshF,GAAA,IACZ,MAAQthF,IAAIuhF,GAAA,IACZ,MAAQvhF,IAAIwhF,GAAA,IACZ,MAAQxhF,IAAIyhF,GAAA,IACZ,MAAQzhF,IAAI0hF,GAAA,IACZ,MAAQ1hF,IAAI2hF,GAAA,IACZ,MAAQ3hF,IAAI4hF,GAAA,IACZ,MAAQ5hF,IAAI,OACZ,MAAQA,IAAI6hF,GAAAA,YACZ,MAAQ7hF,IAAI8hF,GAAA,IACZ,MAAQ9hF,IAAI+hF,GAAA,IACZ,MAAQ/hF,IAAIgiF,GAAA,IACZ,MAAQhiF,IAAIiiF,GAAA,IACZ,MAAQjiF,IAAIkiF,GAAA,IACZ,MAAQliF,IAAImiF,GAAA,IACZ,MAAQniF,IAAIoiF,GAAA,IACZ,MAAQpiF,IAAIqiF,GAAA,IACZ,MAAQriF,IAAIsiF,GAAA,IACZ,MAAQtiF,IAAIuiF,GAAA,IACZ,MAAQviF,IAAIwiF,GAAA,IACZ,MAAQxiF,IAAIyiF,GAAA,IAEZ,aAAIjoF,UAAU,oBAAqB,OACnC,aAAIA,UAAU,sBAAuB,OAKrC,aAAIkoF,OAAOC,eAAgB,EAG3B,IAAIC,GAAW,IAAI,aACnBh9E,OAAOi9E,iBAAiB,aAAIl1E,UAAW,CACrCuH,KAAM,CACJ7e,IAAK,WACH,OAAOusF,EACT,KAKJ,aAAIhzE,IAAI,MACR,aAAIA,IAAI,OAER,gBAAsBqB,OAAO,kBAAmB,IAChD,gBAAsBA,OAAO,oBAAqB,IAElD,aAAIrB,IAAI,IACR,aAAIA,IAAI,QAER,aAAIA,IAAI,OACR,aAAIA,IAAI,MAER,aAAIA,IAAI,GAAe,CACrBkzE,KAAM,CACJ/qF,IAAK,0CACLgrF,UAAW,iBAEbC,mBAAmB,IAGrB,aAAIpzE,IAAI,KAAgB,CAEtBtS,GAAI,uCACJqgF,OAAQ,GACRsF,SAAU,YAKZ5vF,OAAOqB,EAAI,EAAQ,MAEnB,EAAQ,MAGR,aAAIwuF,MAAM,IACV,aAAIA,MAAM,IACV,aAAIC,UAAU,YAAa,IAGzB,IAAMC,GAAS/vF,OAAO2T,SAAS+uD,cAAc,UAC7CqtB,GAAOC,UAAY,mWAKkB,QAArC,GAAAhwF,OAAO2T,SAASsqC,cAAc,eAAO,WAAEgyC,OAAOF,IAIhD,IAAIG,GAAmB,aAAI9vF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAasuF,aAAa,IAC5GC,GAAsB,aAAIhwF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAawuF,gBAAgB,IAClHC,GAA6B,aAAIlwF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAAS41C,cAAgB5U,GAAA,EAAM/nC,MAAMM,aAAa0uF,gBAAgB,IACxHC,GAAkB,aAAIpwF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAa4uF,YAAY,IAC1GC,GAAwB,aAAItwF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAa8uF,iBAAiB,IACrHC,GAAsB,aAAIxwF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAawf,aAAa,IAC/GwvE,GAAsB,aAAIzwF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAaivF,mBAAmB,IAGrHC,GAA+B,aAAI3wF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAamvF,wBAAwB,IACnIC,GAA2B,aAAI7wF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAaqvF,kBAAkB,IACzHC,GAAwB,aAAI/wF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAauvF,eAAe,IACnHC,GAAuB,aAAIjxF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAayvF,cAAc,IACjHC,GAA2B,aAAInxF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAa2vF,kBAAkB,IACzHC,GAAyB,aAAIrxF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAa6vF,gBAAgB,IACrHC,GAAyB,aAAIvxF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAa+vF,gBAAgB,IACrHC,GAAiB,aAAIzxF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAainB,QAAQ,IACrGgpE,GAAmB,aAAI1xF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAa4K,UAAU,IACzGslF,GAAiC,aAAI3xF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAamwF,wBAAwB,IACrIC,GAA0B,aAAI7xF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAaqwF,iBAAiB,IACvHC,GAA4B,aAAI/xF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAauwF,mBAAmB,IAC3HC,GAA0B,aAAIjyF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAaywF,iBAAiB,IACvHC,GAAuB,aAAInyF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAa2wF,cAAc,IACjHC,GAAiC,aAAIryF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAa6wF,wBAAwB,IACrIC,GAAwB,aAAIvyF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAaurE,eAAe,IACnHwlB,GAAkB,aAAIxyF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAagxF,SAAS,IAEvGC,GAAmC,aAAI1yF,KAAK4C,IAAIsmC,GAAA,EAAM/nC,MAAM+G,SAASC,eAAiB+gC,GAAA,EAAM/nC,MAAMM,aAAakxF,0BAA0B,IAI7ItvF,QAAQuvF,IAAI,CAACnC,GACXL,GACAN,GACAE,GACAE,GACAuB,GACAQ,GACAE,GACAxB,GACAE,GACAI,GACAY,GACAR,GACAU,GACAL,GACAX,GACAI,GACAuB,GACAL,GACAd,GACAI,GACAY,GACAC,GACAhC,GACAF,KAAwBxtF,MACxB,SAAAU,GACE0lC,GAAA,EAAMvmC,OAAO,kBAAmBa,EAAS,GAAGP,MAC5CimC,GAAA,EAAMvmC,OAAO,cAAea,EAAS,GAAGP,MACxCimC,GAAA,EAAMvmC,OAAO,eAAgBa,EAAS,GAAGP,MACzCimC,GAAA,EAAMvmC,OAAO,kBAAmBa,EAAS,GAAGP,MAC5CimC,GAAA,EAAMvmC,OAAO,yBAA0Ba,EAAS,GAAGP,MACnDimC,GAAA,EAAMvmC,OAAO,aAAca,EAAS,GAAGP,MACvCimC,GAAA,EAAMvmC,OAAO,sBAAuBa,EAAS,GAAGP,MAChDimC,GAAA,EAAMvmC,OAAO,mBAAoBa,EAAS,GAAGP,MAC7CimC,GAAA,EAAMvmC,OAAO,6BAA8Ba,EAAS,GAAGP,MACvDimC,GAAA,EAAMvmC,OAAO,uBAAwBa,EAAS,GAAGP,MACjDimC,GAAA,EAAMvmC,OAAO,mBAAoBa,EAAS,IAAIP,MAC9CimC,GAAA,EAAMvmC,OAAO,sBAAuBa,EAAS,IAAIP,MACjDimC,GAAA,EAAMvmC,OAAO,qBAAsBa,EAAS,IAAIP,MAChDimC,GAAA,EAAMvmC,OAAO,wBAAyBa,EAAS,IAAIP,MACnDimC,GAAA,EAAMvmC,OAAO,uBAAwBa,EAAS,IAAIP,MAClDimC,GAAA,EAAMvmC,OAAO,oBAAqBa,EAAS,IAAIP,MAC/CimC,GAAA,EAAMvmC,OAAO,uBAAwBa,EAAS,IAAIP,MAClDimC,GAAA,EAAMvmC,OAAO,+BAAgCa,EAAS,IAAIP,KAAKA,MAC/DimC,GAAA,EAAMvmC,OAAO,6BAA8Ba,EAAS,IAAIP,MACxDimC,GAAA,EAAMvmC,OAAO,qBAAsBa,EAAS,IAAIP,MAChDimC,GAAA,EAAMvmC,OAAO,6BAA8Ba,EAAS,IAAIP,MACxDimC,GAAA,EAAMvmC,OAAO,oBAAqBa,EAAS,IAAIP,MAC/CimC,GAAA,EAAMvmC,OAAO,cAAea,EAAS,IAAIP,MACzCimC,GAAA,EAAMvmC,OAAO,kBAAmBa,EAAS,IAAIP,MAC7CimC,GAAA,EAAMvmC,OAAO,kBAAmBa,EAAS,IAAIP,MACzCrD,OAAOC,SAASgzF,KAAKpyF,QAAQ,eAAiB,GAChDyoC,GAAA,EAAMvmC,OAAO,cAAe,MAE1B/C,OAAOC,SAASgzF,KAAKpyF,QAAQ,cAAgB,GAC/CyoC,GAAA,EAAMvmC,OAAO,cAAe,MAE1B/C,OAAOC,SAASgzF,KAAKpyF,QAAQ,aAAe,GAC9CyoC,GAAA,EAAMvmC,OAAO,cAAe,MAG9B,IAAMmwF,EAAO,IAAI,KAAQ,CAEvBhsF,OAAQoiC,GAAA,EAAM/nC,MAAMmF,SACpBysF,eAAgB,KAChB/pF,SAAUkgC,GAAA,EAAM/nC,MAAMimB,eAGxB,GAAOyjE,YAAW,SAAUhO,EAAI38C,EAAM9/B,GAGpB,SAAZy8E,EAAGv3E,MAAiC,SAAd46B,EAAK56B,MAC7BlF,GAAK,GACLR,OAAOouE,QAAQglB,UAAU,KAAM,GAAInW,EAAG98E,WAEtCK,GAEJ,IAGA,IAAI,aAAI,CACNsrC,GAAI,OACJonD,KAAMA,EACN5pD,MAAK,KACLghD,OAAM,GACNlmF,OAAQ,SAAAivF,GAAK,OAAAA,EAAEC,EAAF,EACb9O,SAAU,UAEd,IACA,SAAAnjF,GAIE,IAAMkyF,EAAO,CAAC,EACdjqD,GAAA,EAAMvmC,OAAO,kBAAmBwwF,GAEhC,IAAML,EAAO,IAAI,KAAQ,CAEvBhsF,OAAQoiC,GAAA,EAAM/nC,MAAMmF,SACpBysF,eAAgB,KAChB/pF,SAAUkgC,GAAA,EAAM/nC,MAAMimB,eAIxB,IAAI,aAAI,CACNskB,GAAI,OACJonD,KAAMA,EACN5pD,MAAK,KACLghD,OAAM,GACNlmF,OAAQ,SAAAivF,GAAK,OAAAA,EAAEC,EAAF,EACb9O,SAAU,6BAEd,IACAvgF,OAAM,SAAAC,GACNX,QAAQC,IAAI,iBAAkBU,EAChC,G,uBCjYA,IAAIuW,EAAM,CACT,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,KACR,UAAW,KACX,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,IACX,aAAc,IACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,QAAS,KACT,WAAY,KACZ,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,gBAAiB,KACjB,aAAc,KACd,gBAAiB,KACjB,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,IACR,UAAW,IACX,UAAW,KACX,aAAc,KACd,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,WAAY,KACZ,cAAe,KACf,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,UAAW,KACX,OAAQ,KACR,UAAW,KACX,WAAY,KACZ,cAAe,KACf,UAAW,KACX,aAAc,KACd,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,YAAa,KACb,eAAgB,KAChB,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,KACR,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,QAAS,KACT,WAAY,KACZ,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,UAAW,KACX,aAAc,KACd,QAAS,KACT,WAAY,KACZ,OAAQ,KACR,UAAW,KACX,QAAS,KACT,WAAY,KACZ,QAAS,KACT,aAAc,KACd,gBAAiB,KACjB,WAAY,KACZ,UAAW,KACX,aAAc,KACd,OAAQ,KACR,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,KACR,YAAa,KACb,eAAgB,KAChB,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,gBAAiB,KACjB,OAAQ,KACR,UAAW,KACX,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,IACX,aAAc,KAIf,SAAS+4E,EAAeC,GACvB,IAAIxpF,EAAKypF,EAAsBD,GAC/B,OAAOE,EAAoB1pF,EAC5B,CACA,SAASypF,EAAsBD,GAC9B,IAAIE,EAAoBn5E,EAAEC,EAAKg5E,GAAM,CACpC,IAAI1sF,EAAI,IAAIpD,MAAM,uBAAyB8vF,EAAM,KAEjD,MADA1sF,EAAEud,KAAO,mBACHvd,CACP,CACA,OAAO0T,EAAIg5E,EACZ,CACAD,EAAejqC,KAAO,WACrB,OAAOh3C,OAAOg3C,KAAK9uC,EACpB,EACA+4E,EAAezqF,QAAU2qF,EACzBE,EAAOC,QAAUL,EACjBA,EAAevpF,GAAK,I,wFCnSpB,EAAQ,MACR,aAAIsS,IAAI,MAER,MAAM+sB,EAAQ,IAAI,WAAW,CAC3B/nC,MAAO,CACL80D,gBAAiB,GACjBT,mBAAoB,GACpBk+B,sBAAuB,CAAC,CAAE7pF,GAAI,EAAGoB,KAAM,cAAgB,CAAEpB,GAAI,EAAGoB,KAAM,QAAU,CAAEpB,GAAI,EAAGoB,KAAM,UAC/FkoD,aAAc,GACdwgC,0BAA0B,EAC1BvsE,aAAc,CAAC,EACfyjD,UAAW,CAAC,KACV,KACA,KACA,MACF11D,SAAU,GACV2oB,UAAW,GACXH,aAAc,GACd4rD,oBAAqB,GACrBjjF,SAAUxF,eAAeC,QAAQ,UAC7BD,eAAeC,QAAQ,UACvB,KACJ0F,UAAW,CAAC,KACV,KACA,KACA,QACFoT,cAAe,CAAC,KAAM,KAAM,MAC5BrM,aAAc,KACdk/D,sBAAuB,CAAC,CAAE7iE,GAAI,EAAGoB,KAAM,iBACrC,CAAEpB,GAAI,EAAGoB,KAAM,oBACf,CAAEpB,GAAI,EAAGoB,KAAM,gBACf,CAAEpB,GAAI,EAAGoB,KAAM,sBACf,CAAEpB,GAAI,EAAGoB,KAAM,kBACf,CAAEpB,GAAI,EAAGoB,KAAM,aACf,CAAEpB,GAAI,EAAGoB,KAAM,eACf,CAAEpB,GAAI,EAAGoB,KAAM,oBACf,CAAEpB,GAAI,EAAGoB,KAAM,uBACf,CAAEpB,GAAI,GAAIoB,KAAM,qBAChB,CAAEpB,GAAI,GAAIoB,KAAM,6BAChB,CAAEpB,GAAI,GAAIoB,KAAM,wBAChB,CAAEpB,GAAI,GAAIoB,KAAM,wBAChB,CAAEpB,GAAI,GAAIoB,KAAM,WAClBwhE,uBAAwB,CAAC,CAAE5iE,GAAI,EAAGoB,KAAM,iBACtC,CAAEpB,GAAI,EAAGoB,KAAM,mBACf,CAAEpB,GAAI,EAAGoB,KAAM,oBACf,CAAEpB,GAAI,EAAGoB,KAAM,iBACf,CAAEpB,GAAI,EAAGoB,KAAM,sBACf,CAAEpB,GAAI,EAAGoB,KAAM,oBACf,CAAEpB,GAAI,EAAGoB,KAAM,oBACf,CAAEpB,GAAI,EAAGoB,KAAM,eACf,CAAEpB,GAAI,EAAGoB,KAAM,YACf,CAAEpB,GAAI,GAAIoB,KAAM,gBAChB,CAAEpB,GAAI,GAAIoB,KAAM,kCAChB,CAAEpB,GAAI,GAAIoB,KAAM,aAClBuT,aAAc,CAAC,CAAE3U,GAAI,EAAGoB,KAAM,cAC5B,CAAEpB,GAAI,EAAGoB,KAAM,mBACf,CAAEpB,GAAI,EAAGoB,KAAM,eACf,CAAEpB,GAAI,EAAGoB,KAAM,aACjB2C,sBAAuB,CAAC,KACtB,KACA,KACA,KACA,KACA,KACA,KACA,MAEFs/B,wBAAyB,CAAC,CAAE1nC,MAAO,KAAMyF,KAAM,eAC7C,CAAEzF,MAAO,KAAMyF,KAAM,eACrB,CAAEzF,MAAO,KAAMyF,KAAM,eACrB,CAAEzF,MAAO,KAAMyF,KAAM,eACrB,CAAEzF,MAAO,KAAMyF,KAAM,cACrB,CAAEzF,MAAO,KAAMyF,KAAM,YACrB,CAAEzF,MAAO,KAAMyF,KAAM,YACrB,CAAEzF,MAAO,KAAMyF,KAAM,iBACrB,CAAEzF,MAAO,OAAQyF,KAAM,aACzBie,kBAAmB,GACnBuG,eAAgB,GAChB/G,QAAS,GACTuC,iBAAkB,GAClBiB,aAAc,GACdxS,wBAAyB,GACzB0S,sBAAuB,GACvB2vC,gBAAiB,CAAC,CAAElyD,GAAI,EAAGoB,KAAM,SAAW,CAAEpB,GAAI,EAAGoB,KAAM,WAC3D0vE,sBAAuB,CAAC,CAAE9wE,GAAI,EAAGoB,KAAM,QAAU,CAAEpB,GAAI,EAAGoB,KAAM,SAAW,CAAEpB,GAAI,EAAGoB,KAAM,WAC1F0oE,kBAAmB,CAAC,CAAE9pE,GAAI,EAAGoB,KAAM,OAAS,CAAEpB,GAAI,EAAGoB,KAAM,YAAc,CAAEpB,GAAI,EAAGoB,KAAM,SACxF+gB,mBAAoB,CAAC,CAAEniB,GAAI,EAAGoB,KAAM,cAAgB,CAAEpB,GAAI,EAAGoB,KAAM,uBAAwB,CAAEpB,GAAI,EAAGoB,KAAM,kCAAmC,CAAEpB,GAAI,EAAGoB,KAAM,8BAA+B,CAAEpB,GAAI,EAAGoB,KAAM,kBAC1MmN,0BAA2B,GAC3BD,kBAAmB,GACnBoU,cAAe,GACfE,iBAAkB,GAClBE,gBAAiB,GACjB6C,mBAAoB,GACpBvF,kBAAmB,GACnBiD,eAAgB,GAChBH,wBAAyB,GACzBO,gBAAiB,GACjBjY,SAAU,GACV+X,WAAY,WACV,OAAOjb,OAAOg3C,KAAK,MAAW9uC,KAAI/V,IAAgB,CAAEuF,GAAI+B,OAAOtH,GAAM2G,KAAM,KAAU3G,MACvF,EACAkpB,WAAY,CAAC,CAAE3jB,GAAI,EAAGoB,KAAM,SAC1B,CAAEpB,GAAI,EAAGoB,KAAM,YACf,CAAEpB,GAAI,EAAGoB,KAAM,cACf,CAAEpB,GAAI,EAAGoB,KAAM,QACf,CAAEpB,GAAI,GAAIoB,KAAM,WAChB,CAAEpB,GAAI,GAAIoB,KAAM,sBAChB,CAAEpB,GAAI,GAAIoB,KAAM,QAChB,CAAEpB,GAAI,IAAKoB,KAAM,gBACjB,CAAEpB,GAAI,KAAMoB,KAAM,iBAClB,CAAEpB,GAAI,IAAKoB,KAAM,eACjB,CAAEpB,GAAI,IAAKoB,KAAM,UACnByiB,2BAA4B,CAAC,CAAE7jB,GAAI,EAAGoB,KAAM,UAAY,CAAEpB,GAAI,EAAGoB,KAAM,YAAc,CAAEpB,GAAI,EAAGoB,KAAM,YACpGurB,aAAc,CACZo9D,KACE,+EACFn9D,MACE,iFAEJ/f,eAAgB,CAAC,CAAE7M,GAAI,EAAGoB,KAAM,OAC9B,CAAEpB,GAAI,EAAGoB,KAAM,UACf,CAAEpB,GAAI,EAAGoB,KAAM,QACf,CAAEpB,GAAI,EAAGoB,KAAM,SACjBorC,WAAY,CACV2R,OAAQ,EACR1R,QAAS,GAEXprC,YAAa,CACXqN,MAAO,GACPM,YAAa,GACbR,UAAW,GACXC,SAAU,GACV/C,cAAe,GACfoO,QAAS,GACTlO,KAAM,GACN6D,QAAS,QACTE,IAAK,GACLtC,WAAY,GACZqM,eAAgB,GAChB7J,wBAAyB,EACzBm6E,iBAAiB,EACjBvzD,wBAAwB,EACxBD,sBAAsB,EACtBl1B,gBAAiB,GACjB2oF,wBAAyB,EACzB37E,kBAAmB,GACnBrL,gBAAiB,GACjBH,eAAgB,GAChB+J,eAAgB,GAChB8qB,eAAgB,GAChBgY,UAAW,KACXh7B,aAAc,EACd7B,MAAO,KACPnO,iBAAiB,GAEnBiiC,aAAc,CACZxgC,WAAY,CACViY,SAAU,GACVma,UAAW,IAEbjL,KAAM,EACNsZ,SAAU,GACVE,WAAY,WACZmjD,kBAAmB,KAAkBC,WACrC9mE,eAAgB,GAChBX,cAAe,GACflgB,UAAW,GACXsgB,gBAAiB,GACjBlmB,UAAW,GACXwrC,YAAa,GACbV,KAAM,GACNvlB,mBAAoB,GACpBtD,QAAS,IAEXszD,aAAc,GACdiY,iBAAkB,CAAC,EACnB/tB,kBAAmB,CAAC,EACpB0X,YAAa,CACXsW,iBAAkB,0BAEpBhsF,SAAU,CACRC,eAAgB,gDAChB2zB,YAAa,gDACbgiB,cAAe,gDACfl1C,eAAgB,gDAChBiN,aAAc,gDACdoM,eAAgB,gDAChBkyE,oBAAqB,gDACrBC,aAAc,gDACdjN,cAAe,iDAEjB1lF,aAAc,CAEZwG,iBAAkB,CAAC,kBAAmB,OAAO,GAG7Cia,SAAU,CAAC,wBAAyB,QAAQ,GAC5CE,eAAgB,CAAC,wBAAyB,OAAO,GACjDE,cAAe,CAAC,uBAAwB,UAAU,GAClD+xE,cAAe,CAAC,sBAAuB,OAAO,GAC9CC,YAAa,CAAC,eAAgB,OAAO,GACrC7vE,YAAa,CAAC,eAAgB,OAAO,GACrCjC,eAAgB,CAAC,wBAAyB,QAAQ,GAClD0D,mBAAoB,CAAC,iBAAkB,OAAO,GAG9CkB,aAAc,CAAC,4BAA6B,QAAQ,GACpDmtE,mBAAoB,CAAC,4BAA6B,OAAO,GACzDrrC,kBAAmB,CAAC,4BAA6B,OAAO,GACxDwnC,mBAAoB,CAAC,mCAAoC,OAAO,GAChEL,YAAa,CAAC,qCAAsC,OAAO,GAC3DE,iBAAkB,CAAC,6CAA8C,OAAO,GACxEtvE,aAAc,CAAC,yCAA0C,OAAO,GAChE8uE,aAAc,CAAC,sCAAuC,OAAO,GAC7DE,gBAAiB,CAAC,yCAA0C,OAAO,GACnEj1B,gBAAiB,CAAC,8BAA+B,OAAO,GACxDw5B,eAAgB,CAAC,8BAA+B,OAAO,GACvD/tF,UAAW,CAAC,yBAA0B,OAAO,GAC7CguF,gBAAiB,CAAC,+BAAgC,OAAO,GACzD/rE,QAAS,CAAC,6BAA8B,OAAO,GAC/CwpE,iBAAkB,CAAC,sCAAuC,OAAO,GACjEE,cAAe,CAAC,mCAAoC,OAAO,GAC3DE,wBAAyB,CAAC,6CAA8C,OAAO,GAC/E1B,wBAAyB,CAAC,6CAA8C,OAAO,GAC/E+B,0BAA2B,CAAC,iCAAkC,OAAO,GACrE7B,kBAAmB,CAAC,uCAAwC,OAAO,GACnEI,cAAe,CAAC,mCAAoC,OAAO,GAC3DY,iBAAkB,CAAC,sCAAuC,OAAO,GACjER,gBAAiB,CAAC,qCAAsC,OAAO,GAC/DU,mBAAoB,CAAC,wCAAyC,OAAO,GACrE3lF,UAAW,CAAC,+BAAgC,OAAO,GACnD2kF,eAAgB,CAAC,oCAAqC,OAAO,GAC7DI,kBAAmB,CAAC,2CAA4C,OAAO,GACvEI,gBAAiB,CAAC,qCAAsC,OAAO,GAC/DI,wBAAyB,CAAC,6CAA8C,OAAO,GAG/Er9D,MAAO,CAAC,oCAAqC,QAAQ,GACrD3O,SAAU,CAAC,+BAAgC,QAAQ,GACnD8uE,0BAA2B,CAAC,gDAAiD,QAAQ,GAErFC,WAAY,CAAC,6BAA8B,QAAQ,GACnDC,YAAa,CAAC,wCAAyC,QAAQ,GAC/DC,sBAAuB,CAAC,4CAA6C,QAAQ,GAC7E1rD,YAAa,CAAC,kCAAmC,OAAO,GACxD2rD,OAAQ,CAAC,6EAA8E,OAAO,GAC9FC,WAAY,CAAC,iCAAkC,QAAQ,GACvDlO,QAAS,CAAC,sCAAuC,OAAO,GACxDmO,cAAe,CAAC,oCAAqC,QAAQ,GAC7DpvF,OAAQ,CAAC,6BAA8B,OAAO,GAG9CqvF,gBAAiB,CAAC,kCAAmC,OAAO,GAC5DnsF,QAAS,CAAC,8BAA+B,OAAO,GAChDosF,wBAAyB,CAAC,gDAAiD,OAAO,GAClF1zF,KAAM,CAAC,mHAAoH,OAAO,GAClI2zF,cAAe,CAAC,gHAAiH,OAAO,GACxI7uB,oBAAqB,CAAC,8EAA+E,OAAO,GAC5G8uB,oBAAqB,CAAC,oGAAqG,OAAO,GAClIC,cAAe,CAAC,oEAAqE,OAAO,GAC5FnN,YAAa,CAAC,qBAAsB,OAAO,GAC3CV,gBAAiB,CAAC,sBAAuB,OAAO,GAChDI,iBAAkB,CAAC,mCAAoC,OAAO,GAC9D0N,WAAY,CAAC,kBAAmB,UAAU,GAC1CC,mBAAoB,CAAC,oCAAqC,OAAO,GACjEC,qBAAsB,CAAC,uCAAwC,OAAO,GACtEC,gBAAiB,CAAC,kCAAmC,UAAU,GAC/DC,sBAAuB,CAAC,2CAA4C,OAAO,GAC3EC,2BAA4B,CAAC,6CAA8C,UAAU,GACrFxgF,SAAU,CAAC,mCAAoC,OAAO,GACtDwtD,eAAgB,CAAC,0CAA2C,QAAQ,GACpE7C,YAAa,CAAC,uCAAwC,OAAO,GAC7D81B,UAAW,CAAC,oCAAqC,OAAO,GACxD5xE,QAAS,CAAC,kCAAmC,OAAO,GACpD88C,mBAAoB,CAAC,qDAAsD,OAAO,GAClFhjC,UAAW,CAAC,oCAAqC,OAAO,GACxDE,SAAU,CAAC,wCAAyC,OAAO,GAC3DshC,uBAAwB,CAAC,uDAAwD,QAAQ,GACzFI,iBAAkB,CAAC,yDAA0D,OAAO,GACpFE,iBAAkB,CAAC,yDAA0D,QAAQ,GACrFi2B,iBAAkB,CAAC,8FAA+F,QAAQ,GAC1HpoC,MAAO,CAAC,4BAA6B,OAAO,GAC5CqoC,WAAY,CAAC,sCAAuC,OAAO,GAC3Dr5B,cAAe,CAAC,oCAAqC,OAAO,GAC5DE,gBAAiB,CAAC,sCAAuC,OAAO,GAChEo5B,sBAAuB,CAAC,4CAA6C,QAAQ,GAC7EC,uBAAwB,CAAC,6CAA8C,QAAQ,GAG/ElW,SAAU,CAAC,wBAAyB,QAAQ,GAC5CT,SAAU,CAAC,6BAA8B,OAAO,GAChD4W,SAAU,CAAC,6NAA8N,OAAO,GAChPr+D,eAAgB,CAAC,mOAAoO,OAAO,GAC5Ps+D,iBAAkB,CAAC,kCAAmC,QAAQ,GAC9DC,uBAAwB,CAAC,wCAAyC,QAAQ,GAC1ElW,YAAa,CAAC,2BAA4B,OAAO,GACjDc,YAAa,CAAC,4CAA6C,UAAU,GACrE1H,UAAW,CAAC,yBAA0B,QAAQ,GAC9C+c,WAAY,CAAC,0BAA2B,QAAQ,GAChDzT,wBAAyB,CAAC,uCAAwC,QAAQ,GAC1ErJ,gBAAiB,CAAC,+BAAgC,QAAQ,GAC1DuM,iBAAkB,CAAC,gEAAiE,OAAO,GAC3FwQ,cAAe,CAAC,6BAA8B,OAAO,GACrDC,iBAAkB,CAAC,gCAAiC,OAAO,GAC3DC,YAAa,CAAC,yBAA0B,OAAO,GAC/CC,aAAc,CAAC,4BAA6B,OAAO,GACnDC,oBAAqB,CAAC,mCAAoC,OAAO,GACjEzQ,eAAgB,CAAC,8BAA+B,OAAO,GACvDC,kBAAmB,CAAC,iCAAkC,OAAO,GAC7DnwE,QAAS,CAAC,4BAA6B,OAAO,GAC9CQ,SAAU,CAAC,6BAA8B,OAAO,GAChDogF,UAAW,CAAC,oCAAqC,OAAO,GACxD1X,iBAAkB,CAAC,yCAA0C,QAAQ,GACrER,wBAAyB,CAAC,uEAAwE,OAAO,GACzGD,wBAAyB,CAAC,uEAAwE,QAAQ,GAG1GoY,iBAAkB,CAAC,yBAA0B,QAAQ,GACrDC,oBAAqB,CAAC,gCAAiC,OAAO,GAC9DC,oBAAqB,CAAC,gCAAiC,UAAU,GACjEC,iBAAkB,CAAC,6BAA8B,OAAO,GACxDC,iBAAkB,CAAC,4BAA6B,OAAO,GAGvD3P,YAAa,CAAC,8BAA+B,OAAO,GACpD4P,eAAgB,CAAC,8BAA+B,OAAO,GAGvDnvB,UAAW,CAAC,wBAAyB,OAAO,GAC5CqG,eAAgB,CAAC,sCAAuC,QAAQ,GAChE+oB,gBAAiB,CAAC,gCAAiC,OAAO,GAC1DC,iBAAkB,CAAC,iCAAkC,OAAO,GAC5DC,cAAe,CAAC,wCAAyC,OAAO,GAChE5oB,gBAAiB,CAAC,iCAAkC,QAAQ,GAC5D6oB,iBAAkB,CAAC,kCAAmC,QAAQ,GAC9DC,UAAW,CAAC,yBAA0B,OAAO,GAC7CjxB,uBAAwB,CAAC,sCAAuC,OAAO,GACvEkxB,WAAY,CAAC,8BAA+B,OAAO,GACnDC,eAAgB,CAAC,8BAA+B,OAAO,GACvDC,iBAAkB,CAAC,gCAAiC,OAAO,GAC3DC,cAAe,CAAC,6BAA8B,OAAO,GACrD3rB,aAAc,CAAC,4BAA6B,OAAO,GACnD4rB,aAAc,CAAC,iCAAkC,OAAO,GACxD1oB,kBAAmB,CAAC,iCAAkC,OAAO,GAC7DnD,YAAa,CAAC,2BAA4B,OAAO,GACjD8rB,YAAa,CAAC,gCAAiC,QAAQ,GACvDtxB,gBAAiB,CAAC,+BAAgC,OAAO,GACzDS,gBAAiB,CAAC,kCAAmC,QAAQ,GAC7DI,0BAA2B,CAAC,4CAA6C,QAAQ,GACjF6H,sBAAuB,CAAC,yCAA0C,OAAO,GACzE6oB,mBAAoB,CAAC,uCAAwC,OAAO,GACpE5qB,eAAgB,CAAC,oCAAqC,OAAO,GAG7D6qB,oBAAqB,CAAC,qCAAsC,QAAQ,GACpEC,eAAgB,CAAC,gCAAiC,QAAQ,GAC1DC,wBAAyB,CAAC,mDAAoD,OAAO,GACrFC,6BAA8B,CAAC,wDAAyD,OAAO,GAC/FC,uBAAwB,CAAC,+DAAgE,UAAU,GACnGC,kBAAmB,CAAC,0DAA2D,UAAU,GACzFC,uBAAwB,CAAC,wCAAyC,OAAO,GACzEC,kBAAmB,CAAC,mCAAoC,OAAO,GAC/DC,8BAA+B,CAAC,wCAAyC,OAAO,GAChFC,mCAAoC,CAAC,6CAA8C,OAAO,GAC1FC,2BAA4B,CAAC,oDAAqD,OAAO,GACzFC,wBAAyB,CAAC,wDAAyD,OAAO,GAC1FC,mBAAoB,CAAC,mDAAoD,OAAO,GAChFC,2BAA4B,CAAC,0CAA2C,OAAO,GAC/EC,gCAAiC,CAAC,+CAAgD,OAAO,GACzFC,uBAAwB,CAAC,sCAAuC,QAAQ,GACxEC,kBAAmB,CAAC,iCAAkC,QAAQ,GAC9DC,wBAAyB,CAAC,uCAAwC,QAAQ,GAC1EC,wBAAyB,CAAC,yDAA0D,QAAQ,GAC5FC,mBAAoB,CAAC,kCAAmC,QAAQ,GAChEC,mBAAoB,CAAC,oDAAqD,QAAQ,GAClFC,sBAAuB,CAAC,oCAAqC,QAAQ,GACrEC,2BAA4B,CAAC,6BAA8B,QAAQ,GACnEC,gCAAiC,CAAC,kCAAmC,QAAQ,GAC7EC,2BAA4B,CAAC,qDAAsD,OAAO,GAC1FC,mCAAoC,CAAC,4DAA6D,QAAQ,GAC1GC,8BAA+B,CAAC,uDAAwD,QAAQ,GAChGC,sCAAuC,CAAC,+DAAgE,OAAO,GAC/GC,iCAAkC,CAAC,0DAA2D,OAAO,GACrGC,2BAA4B,CAAC,oDAAqD,OAAO,GACzFC,mCAAoC,CAAC,4DAA6D,OAAO,GACzGC,8BAA+B,CAAC,uDAAwD,OAAO,GAC/FC,4BAA6B,CAAC,4CAA6C,OAAO,GAClFC,+BAAgC,CAAC,gDAAiD,OAAO,GACzFC,oCAAqC,CAAC,qDAAsD,OAAO,GACnGC,qBAAsB,CAAC,6DAA8D,OAAO,GAC5FC,0BAA2B,CAAC,kEAAmE,OAAO,GACtGC,sBAAuB,CAAC,+DAAgE,OAAO,GAC/FC,2BAA4B,CAAC,oEAAqE,OAAO,GACzGC,sBAAuB,CAAC,2CAA4C,QAAQ,GAC5EC,2BAA4B,CAAC,gDAAiD,QAAQ,GACtFC,sBAAuB,CAAC,gDAAiD,QAAQ,GACjFC,2BAA4B,CAAC,qDAAsD,QAAQ,GAC3FC,oBAAqB,CAAC,8CAA+C,QAAQ,GAC7EC,yBAA0B,CAAC,mDAAoD,QAAQ,GACvFC,uBAAwB,CAAC,iDAAkD,QAAQ,GACnFC,4BAA6B,CAAC,sDAAuD,QAAQ,GAC7FC,+BAAgC,CAAC,yDAA0D,QAAQ,GACnGC,oCAAqC,CAAC,8DAA+D,QAAQ,GAC7GC,8BAA+B,CAAC,wDAAyD,QAAQ,GACjGC,mCAAoC,CAAC,6DAA8D,QAAQ,GAC3GvqC,kBAAmB,CAAC,qCAAsC,QAAQ,GAClEmX,mBAAoB,CAAC,yCAA0C,OAAO,GACtEqzB,uBAAwB,CAAC,6CAA8C,OAAO,GAC9EC,eAAgB,CAAC,+CAAgD,OAAO,GACxEC,sCAAuC,CAAC,gDAAiD,QAAQ,GACjGC,iCAAkC,CAAC,2CAA4C,QAAQ,GACvFC,UAAW,CAAC,oCAAqC,OAAO,GACxDC,4BAA6B,CAAC,oEAAqE,QAAQ,GAC3GC,uBAAwB,CAAC,+DAAgE,QAAQ,GACjGC,2BAA4B,CAAC,kEAAmE,QAAQ,GACxGC,sBAAuB,CAAC,6DAA8D,QAAQ,GAC9FC,8BAA+B,CAAC,sEAAuE,QAAQ,GAC/GC,yBAA0B,CAAC,iEAAkE,QAAQ,GACrGC,6BAA8B,CAAC,oEAAqE,QAAQ,GAC5GC,wBAAyB,CAAC,+DAAgE,QAAQ,GAClGC,yBAA0B,CAAC,kFAAmF,UAAU,GACxHC,8BAA+B,CAAC,4FAA6F,UAAU,GACvI3L,gBAAiB,CAAC,6DAA8D,OAAO,GACvF4L,qBAAsB,CAAC,kEAAmE,OAAO,GACjG30C,iCAAkC,CAAC,kEAAmE,OAAO,GAC7GC,4BAA6B,CAAC,6DAA8D,OAAO,GACnG20C,sBAAuB,CAAC,0CAA2C,QAAQ,GAC3EC,iBAAkB,CAAC,qCAAsC,QAAQ,GACjEC,yBAA0B,CAAC,6CAA8C,OAAO,GAChFC,oBAAqB,CAAC,wCAAyC,OAAO,GACtEC,sBAAuB,CAAC,mDAAoD,OAAO,GACnFC,iBAAkB,CAAC,8CAA+C,OAAO,GACzEC,0BAA2B,CAAC,oEAAqE,QAAQ,GACzGC,qBAAsB,CAAC,+DAAgE,QAAQ,GAC/FC,2BAA4B,CAAC,sEAAuE,QAAQ,GAC5GC,sBAAuB,CAAC,iEAAkE,QAAQ,GAClGC,+BAAgC,CAAC,yEAA0E,UAAU,GACrHC,0BAA2B,CAAC,oEAAqE,UAAU,GAC3GC,gCAAiC,CAAC,2EAA4E,UAAU,GACxHC,2BAA4B,CAAC,sEAAuE,UAAU,GAC9GC,4BAA6B,CAAC,kEAAmE,OAAO,GACxGC,uBAAwB,CAAC,6DAA8D,OAAO,GAC9FC,mCAAoC,CAAC,4CAA6C,UAAU,GAC5FC,8BAA+B,CAAC,uCAAwC,UAAU,GAClFC,kBAAmB,CAAC,iDAAkD,QAAQ,GAC9EC,wBAAyB,CAAC,uDAAwD,QAAQ,GAE1FC,qBAAsB,CAAC,oDAAqD,OAAO,GAGnFp1D,YAAa,CAAC,wBAAyB,QAAQ,GAC/Ck2C,UAAW,CAAC,yBAA0B,OAAO,GAC7Cmf,aAAc,CAAC,gCAAiC,OAAO,GACvDC,YAAa,CAAC,2BAA4B,UAAU,GACpDC,cAAe,CAAC,6BAA8B,OAAO,GAGrD9K,SAAU,CAAC,wBAAyB,OAAO,GAC3Cx9E,QAAS,CAAC,4BAA6B,OAAO,GAG9CuoF,aAAc,CAAC,4BAA6B,OAAO,GACnDtqC,SAAU,CAAC,+BAAgC,QAAQ,GAGnDuqC,iBAAkB,CAAC,kDAAmD,QAAQ,GAC9EC,sBAAuB,CAAC,uDAAwD,QAAQ,GACxFC,oBAAqB,CAAC,mDAAoD,QAAQ,GAClFC,yBAA0B,CAAC,wDAAyD,QAAQ,GAG5FC,YAAa,CAAC,mCAAoC,QAAQ,GAC1DC,uCAAwC,CAAC,8DAA+D,QAAQ,GAChHC,kCAAmC,CAAC,yDAA0D,QAAQ,GACtGl1F,oBAAqB,CAAC,uCAAwC,OAAO,GACrEstD,uBAAwB,CAAC,0CAA2C,OAAO,GAC3EO,wBAAyB,CAAC,2CAA4C,OAAO,GAC7Enc,YAAa,CAAC,wDAAyD,OAAO,GAC9E6b,iBAAkB,CAAC,wCAAyC,QAAQ,GACpEzb,eAAgB,CAAC,sCAAuC,QAAQ,GAChE0b,2BAA4B,CAAC,kDAAmD,QAAQ,GACxFC,sBAAuB,CAAC,+CAAgD,QAAQ,GAChF7sD,oBAAqB,CAAC,oDAAqD,QAAQ,GACnFE,uBAAwB,CAAC,+DAAgE,QAAQ,GACjGq0F,mBAAoB,CAAC,8CAA+C,QAAQ,GAC5EroC,mBAAoB,CAAC,0CAA2C,QAAQ,GACxErb,iBAAkB,CAAC,wCAAyC,QAAQ,GACpE2jD,aAAc,CAAC,oCAAqC,OAAO,GAC3DC,aAAc,CAAC,oCAAqC,QAAQ,GAC5DC,iCAAkC,CAAC,wDAAyD,QAAQ,GACpGje,0BAA2B,CAAC,iDAAkD,QAAQ,IAExFke,aAAc,uBACdC,iBAAkB,0CAClBv1F,QAAS,KACT23B,MAAO,yQACP69D,oBAAqB,2BAErBt5F,UAAW,CACTu5F,GAAI,uBACJC,GAAI,oBACJC,GAAI,wBAEN15F,QAAS,CACPw5F,GAAI,iCACJC,GAAI,iCACJC,GAAI,kCAENz1F,SAAU,GACV4qB,MAAO,CAAC,EACRq0D,gBAAgB,EAChBtiE,WAAY,KACZ9kB,MAAO,CAELgC,QAAS,0EAGTzB,WAAY,CAAC,IAAIw0E,OAAO,0CACtB,IAAIA,OAAO,+BACX,IAAIA,OAAO,4CACX,IAAIA,OAAO,6CACX,IAAIA,OAAO,2CACX,IAAIA,OAAO,gDACX,IAAIA,OAAO,yCACX,IAAIA,OAAO,yCACX,IAAIA,OAAO,oCACX,IAAIA,OAAO,qEACblzE,cAAc,GAEhBF,qBAAiB4P,GAEnBssF,QAAS,CACP,kBAAAC,CAAoBC,EAAS/9F,GAC3B+9F,EAAQj8F,OAAO,qBAAsB,IAAU9B,GACjD,EAEA,UAAAg+F,CAAYD,EAASE,GACnBF,EAAQj8F,OAAO,aAAcm8F,EAC/B,EAEA,WAAAC,CAAaH,EAAS3U,GACpB2U,EAAQj8F,OAAO,cAAesnF,EAChC,GAEF+U,UAAW,CACT,aAAAC,CAAe99F,EAAO+9F,GAChBA,GAASA,EAAMr1F,IAAmB,IAAbq1F,EAAMr1F,KAC7B1I,EAAMwkB,WAAau5E,EAAMr1F,GAE7B,EACA,WAAAs1F,CAAah+F,EAAO0pB,GAClB1pB,EAAMmF,SAAWukB,CACnB,EACA,eAAAu0E,CAAiBj+F,EAAOssD,GACtBtsD,EAAMgyD,aAAe1F,CACvB,EACA,kBAAA4xC,CAAoBl+F,EAAO4L,GACzB5L,EAAM+J,YAAYC,gBAAkB4B,CACtC,EACA,iBAAAuyF,CAAmBn+F,EAAO4L,GACxB5L,EAAM+J,YAAY4oF,wBAA0B/mF,CAC9C,EACA,eAAAwyF,CAAiBp+F,EAAO4L,GACtB5L,EAAM+J,YAAYyB,eAAiBI,CACrC,EACA,kBAAAyyF,CAAoBr+F,EAAO4L,GACzB5L,EAAM+J,YAAY4B,gBAAkBC,CACtC,EACA,gBAAA0yF,CAAkBt+F,EAAO4L,GACvB5L,EAAM+J,YAAYyY,QAAU5W,CAC9B,EACA,mBAAA2yF,CAAqBv+F,EAAO4L,GAC1B5L,EAAM+J,YAAYs2B,eAAiBz0B,CACrC,EACA,kBAAA4yF,CAAoBx+F,EAAO4L,GACzB5L,EAAM+J,YAAYsuC,UAAYzsC,CAChC,EACA,uBAAA6yF,CAAyBz+F,EAAO4L,GAC9B5L,EAAM+J,YAAYwL,eAAiB3J,CACrC,EACA,mBAAA8yF,CAAqB1+F,EAAO4L,GAC1B5L,EAAM+J,YAAYgM,WAAanK,CACjC,EACA,kBAAA+yF,CAAoB3+F,EAAO4L,GACzB5L,EAAM+J,YAAYiN,kBAAoBpL,CACxC,EACA,aAAAgzF,CAAe5+F,EAAO4L,GACpB5L,EAAM+J,YAAYuK,KAAO1I,CAC3B,EACA,yBAAAizF,CAA2B7+F,EAAO4L,GAChC5L,EAAM+J,YAAYmN,UAAYtL,EAAMsL,UACpClX,EAAM+J,YAAYoN,SAAWvL,EAAMuL,SACnCnX,EAAM+J,YAAYqN,MAAQxL,EAAMwL,MAChCpX,EAAM+J,YAAY2N,YAAc9L,EAAMyL,MACtCrX,EAAM+J,YAAYo1B,uBAAyBvzB,EAAM2L,KACjDvX,EAAM+J,YAAYm1B,qBAAuBtzB,EAAM0L,MACjD,EACA,2BAAAwnF,CAA6B9+F,EAAO4L,GAClC5L,EAAM+J,YAAYqK,cAAgBxI,EAAMsM,cACxClY,EAAM+J,YAAYyY,QAAU5W,EAAMkI,QAClC9T,EAAM+J,YAAYuK,KAAO1I,EAAM0I,KAC/BtU,EAAM+J,YAAYoO,QAAUvM,EAAMuM,QAClCnY,EAAM+J,YAAYsO,IAAMzM,EAAMyM,IAC9BrY,EAAM+J,YAAYqY,eAAiBxW,EAAMzG,SACzCnF,EAAM+J,YAAYwO,wBAA0B3M,EAAM2M,uBACpD,EACA,0BAAAwmF,CAA4B/+F,EAAO4L,GACjC5L,EAAM+J,YAAYsO,IAAMzM,EAAMozF,IAC9Bh/F,EAAM+J,YAAYgM,WAAanK,EAAMqzF,UACvC,EACA,wBAAAC,CAA0Bl/F,EAAO4L,GAC/B5L,EAAM+J,YAAYsD,gBAAkBzB,CACtC,EACA,eAAAuzF,CAAiBn/F,EAAO4L,GACtB5L,EAAMimB,aAAera,CACvB,EACA,WAAAwzF,CAAap/F,EAAO4L,GAClB5L,EAAMgU,SAAWpI,CACnB,EACA,eAAAyzF,CAAiBr/F,EAAO4L,GACtB5L,EAAM8f,aAAelU,CACvB,EACA,eAAA0zF,CAAiBt/F,EAAO4L,GACtB5L,EAAMovF,iBAAmBxjF,CAC3B,EACA,YAAA2zF,CAAcv/F,EAAO4L,GACnB5L,EAAM28B,UAAY/wB,CACpB,EACA,eAAA4zF,CAAiBx/F,EAAO4L,GACtB5L,EAAMw8B,aAAe5wB,CACvB,EACA,sBAAA6zF,CAAwBz/F,EAAO4L,GAC7B5L,EAAMooF,oBAAsBx8E,CAC9B,EACA,kBAAA8zF,CAAoB1/F,EAAO4L,GACzB5L,EAAMmsB,gBAAkBvgB,CAC1B,EACA,UAAA+zF,CAAY3/F,EAAO4L,GACjB5L,EAAMunB,QAAU3b,CAClB,EACA,0BAAAg0F,CAA4B5/F,EAAO4L,GACjC5L,EAAM4rB,wBAA0BhgB,CAClC,EACA,mBAAAi0F,CAAqB7/F,EAAO4L,GAC1B5L,EAAM8pB,iBAAmBle,CAC3B,EACA,gBAAAk0F,CAAkB9/F,EAAO4L,GACvB5L,EAAM+qB,aAAenf,CACvB,EACA,0BAAAm0F,CAA4B//F,EAAO4L,GACjC5L,EAAMuY,wBAA0B3M,CAClC,EACA,0BAAAo0F,CAA4BhgG,EAAO4L,GACjC5L,EAAMirB,sBAAwBrf,CAChC,EACA,4BAAAq0F,CAA8BjgG,EAAO4L,GACnC5L,EAAMiX,0BAA4BrL,CACpC,EACA,oBAAAs0F,CAAsBlgG,EAAO4L,GAC3B5L,EAAMgX,kBAAoBpL,CAC5B,EACA,gBAAAu0F,CAAkBngG,EAAO4L,GACvB5L,EAAMorB,cAAgBxf,CACxB,EACA,mBAAAw0F,CAAqBpgG,EAAO4L,GAC1B5L,EAAMsrB,iBAAmB1f,CAC3B,EACA,kBAAAy0F,CAAoBrgG,EAAO4L,GACzB5L,EAAMwrB,gBAAkB5f,CAC1B,EACA,qBAAA00F,CAAuBtgG,EAAO4L,GAC5B5L,EAAMquB,mBAAqBziB,CAC7B,EACA,oBAAA20F,CAAsBvgG,EAAO4L,GAC3B5L,EAAM8oB,kBAAoBld,CAC5B,EACA,iBAAA40F,CAAmBxgG,EAAO4L,GACxB5L,EAAM+rB,eAAiBngB,CACzB,EACA,oBAAA60F,CAAsBzgG,EAAO4L,GAC3B5L,EAAM+nB,kBAAoBnc,CAC5B,EACA,iBAAA80F,CAAmB1gG,EAAO4L,GACxB5L,EAAMsuB,eAAiB1iB,CACzB,EACA,WAAA+0F,CAAa3gG,EAAO4L,GAClB5L,EAAMkU,SAAWtI,CACnB,EACA,UAAAg1F,CAAY5gG,EAAO4L,GACjB5L,EAAM2H,QAAUiE,EAChB5L,EAAM8mF,gBAAiB,CACzB,EACA,yBAAA+Z,CAA2B7gG,EAAO4L,GAChC5L,EAAM2H,QAAQm5B,WAAal1B,CAC7B,EACA,eAAAk1F,CAAiB9gG,EAAO4L,GACtB5L,EAAM+J,YAAYsT,aAAezR,CACnC,EACA,QAAAm1F,CAAU/gG,EAAO4L,GACf5L,EAAM+J,YAAYyR,MAAQ5P,CAC5B,EACA,WAAAo1F,CAAahhG,EAAO4L,GAClB5L,EAAM2H,QAAQ6T,MAAQ5P,EAAM4P,MAC5Bxb,EAAM2H,QAAQ83B,MAAQ7zB,EAAM6zB,MAC5Bz/B,EAAM2H,QAAQ0V,aAAezR,EAAMyR,aACnCrd,EAAM2H,QAAQ4Q,wBAA0B3M,EAAM2M,wBAC9CvY,EAAM2H,QAAQikB,wBAA0BhgB,EAAMggB,uBAChD,EACA,kCAAAq1E,CAAoCjhG,EAAOqE,GACzCrE,EAAM2H,QAAQikB,wBAA0BvnB,CAC1C,EACA,mBAAA68F,CAAqBlhG,GACnBA,EAAM8mF,gBAAiB,CACzB,EACA,aAAAqa,CAAenhG,EAAO4L,GACpB5L,EAAM2H,QAAQ6D,eAAiBI,CACjC,EACA,eAAAw1F,CAAiBphG,EAAO4L,GACtB5L,EAAM2H,QAAQqC,gBAAkB4B,CAClC,EACA,gBAAAy1F,CAAkBrhG,EAAO4L,GACvB5L,EAAM2H,QAAQgE,gBAAkBC,CAClC,EACA,eAAA01F,CAAiBthG,EAAO4L,GACtB5L,EAAM2H,QAAQuP,UAAYtL,EAAMsL,UAChClX,EAAM2H,QAAQwP,SAAWvL,EAAMuL,SAC/BnX,EAAM2H,QAAQ+P,YAAc9L,EAAM8L,YAClC1X,EAAM2H,QAAQyM,cAAgBxI,EAAMwI,cACpCpU,EAAM2H,QAAQ6a,QAAU5W,EAAM4W,QAC9BxiB,EAAM2H,QAAQ2M,KAAO1I,EAAM0I,KAC3BtU,EAAM2H,QAAQwQ,QAAUvM,EAAMuM,QAC9BnY,EAAM2H,QAAQ0Q,IAAMzM,EAAMyM,IAC1BrY,EAAM2H,QAAQya,eAAiBxW,EAAMwW,cACvC,EACA,eAAAm/E,CAAiBvhG,EAAO4L,GACtB5L,EAAM2H,QAAQqP,kBAAoBpL,CACpC,EACA,gBAAA41F,CAAkBxhG,EAAO4L,GACvB5L,EAAM2H,QAAQ4N,eAAiB3J,CACjC,EACA,aAAA61F,CAAezhG,EAAO4L,GACpB5L,EAAM2H,QAAQoO,WAAanK,CAC7B,EACA,iBAAA81F,CAAmB1hG,EAAO4L,GACxB5L,EAAM2H,QAAQ04B,eAAiBz0B,CACjC,EACA,cAAA+1F,CAAgB3hG,EAAO4L,GACrB5L,EAAM2H,QAAQ0wC,UAAYzsC,CAC5B,EACA,kBAAAg2F,CAAoB5hG,EAAO4L,GACzB5L,EAAM2H,QAAQgf,YAAc/a,CAC9B,EACA,sBAAAi2F,CAAwB7hG,EAAO4L,GAC7B5L,EAAM2H,QAAQ0F,gBAAkBzB,CAClC,EACA,eAAAk2F,CAAiB9hG,EAAO4L,GACtB5L,EAAMqM,aAAeT,CACvB,EACA,eAAAm2F,CAAiB/hG,EAAO6R,GACtB7R,EAAMsvC,aAAez9B,CACvB,EACA,WAAAmwF,CAAahiG,EAAO4L,GAClB5L,EAAM6H,SAAW+D,CACnB,EACA,MAAAnH,CAAQzE,GACNA,EAAM8mF,gBAAiB,EACvB9mF,EAAM2H,QAAU,IAClB,EACA,YAAAs6F,CAAcjiG,EAAO4L,GACnB5L,EAAM0pE,UAAY99D,CACpB,EACA,cAAAs2F,CAAgBliG,EAAOqE,GACrB,IAAIsF,EAAQ7J,EAAEC,UAAUC,EAAM66E,cAAc,SAAUtqB,GACpD,OAAOA,EAAK7nD,KAAOrE,EAAMqE,EAC3B,KAEe,IAAXiB,EAEF3J,EAAM66E,aAAalxE,GAAStF,EAG5BrE,EAAM66E,aAAa97E,KAAKsF,EAE5B,EACA,iBAAA89F,CAAmBniG,EAAOqE,GACxBvE,EAAE6W,OAAO3W,EAAM66E,cAAc,SAAUtqB,GACrC,OAAOA,EAAK7nD,KAAOrE,EAAMqE,EAC3B,GACF,EACA,OAAA05F,CAASpiG,EAAO4L,GACVA,GAASA,EAAMzI,KAAOyI,EAAM3K,IAC9BjB,EAAMyyB,MAAM7mB,EAAMzI,KAAO,CAAEkB,MAAOuH,EAAMvH,MAAOpD,IAAK2K,EAAM3K,KAE1De,QAAQC,IAAI,4BAA6BjC,EAAO4L,EAEpD,EACA,WAAAy2F,CAAariG,GACXA,EAAM2H,QAAU,IAClB,EACA,kBAAA61F,CAAoBx9F,EAAOqE,GACzBrE,EAAMqB,gBAAkBgD,CAC1B,EACA,oBAAAi+F,CAAsBtiG,GACpBA,EAAMqB,qBAAkB4P,CAC1B,EACA,kBAAAsxF,CAAoBviG,EAAOqE,GACzBrE,EAAMN,MAAM6B,aAAe8C,CAC7B,EACA,WAAAu5F,CAAa59F,EAAO4L,GAClB5L,EAAMy8E,YAAc7wE,CACtB,EACA,UAAA8xF,CAAY19F,EAAO4L,GACjB5L,EAAMy8E,YAAYnmE,SAAQ,SAAUqnF,GAC9BA,EAAQx5F,OAASyH,EAAMzH,OACzBw5F,EAAQt5F,MAAQuH,EAAMvH,MAE1B,GACF,EACA,aAAAm+F,CAAexiG,GACbA,EAAMy8E,YAAc,EACtB,EACA,oBAAAgmB,CAAsBziG,EAAO0iG,GAC3B1iG,EAAM2H,QAAQqyB,SAAW0oE,CAC3B,KAIJ,K,oCCrhBA,IAAYC,EAcAC,EAOAC,EAQAC,EASAC,EAmBAC,EAMAC,EAKAC,EAIAC,EAMAC,EAKAC,EAMAC,EAKAC,EAKAC,EAOAC,EAOAC,EAMAC,EAKAC,EAOAC,EAgBAC,EAIAC,EAQAC,EA6gBAC,EASAC,EAWAC,EAaAC,EAUAC,EAkBA1R,EAoBA2R,EAMAC,EAQAC,EAOAC,EASAC,EAOAC,EAMAC,EA8PAC,E,yhBAtiCZ,SAAYlC,GACX,8CACA,8BACA,+BACA,wCACA,uCACA,8CACA,kDACA,8CACA,oCACA,2EACA,4CACA,uCACA,CAbD,CAAYA,IAAAA,EAAc,KAc1B,SAAYC,GACX,gDACA,kCACA,wCACA,gCACA,mCACA,CAND,CAAYA,IAAAA,EAAqB,KAOjC,SAAYC,GACX,0CACA,0CACA,0CACA,0CACA,0CACA,yCACA,CAPD,CAAYA,IAAAA,EAAqB,KAQjC,SAAYC,GACX,0BACA,8CACA,gCACA,kCACA,0BACA,4CACA,uCACA,CARD,CAAYA,IAAAA,EAAa,KASzB,SAAYC,GACX,yCACA,kCACA,8CACA,8CACA,+BACA,mCACA,2BACA,qCACA,kCACA,kCACA,wCACA,wCACA,sDACA,yBACA,qCACA,iCACA,uBACA,CAlBD,CAAYA,IAAAA,EAAa,KAmBzB,SAAYC,GACX,8BACA,4BACA,sBACA,yBACA,CALD,CAAYA,IAAAA,EAAc,KAM1B,SAAYC,GACX,gCACA,oCACA,6BACA,CAJD,CAAYA,IAAAA,EAAkB,KAK9B,SAAYC,GACX,0BACA,2BACA,CAHD,CAAYA,IAAAA,EAAgB,KAI5B,SAAYC,GACX,0BACA,+BACA,4CACA,iCACA,CALD,CAAYA,IAAAA,EAAe,KAM3B,SAAYC,GACX,0BACA,sBACA,uBACA,CAJD,CAAYA,IAAAA,EAAM,KAKlB,SAAYC,GACX,gCACA,oCACA,2BACA,6BACA,CALD,CAAYA,IAAAA,EAAkB,KAM9B,SAAYC,GACX,oCACA,wCACA,2BACA,CAJD,CAAYA,IAAAA,EAAS,KAKrB,SAAYC,GACX,qBACA,oCACA,iCACA,CAJD,CAAYA,IAAAA,EAAuB,KAKnC,SAAYC,GACX,0BACA,8BACA,kCACA,8BACA,+BACA,CAND,CAAYA,IAAAA,EAAgB,KAO5B,SAAYC,GACX,sCACA,0CACA,kCACA,gCACA,mCACA,CAND,CAAYA,IAAAA,EAAc,KAO1B,SAAYC,GACX,4BACA,0BACA,sCACA,mBACA,CALD,CAAYA,IAAAA,EAAa,KAMzB,SAAYC,GACX,kCACA,mCACA,mCACA,CAJD,CAAYA,IAAAA,EAAc,KAK1B,SAAYC,GACX,sDACA,4DACA,oCACA,kCACA,mCACA,CAND,CAAYA,IAAAA,EAAiB,KAO7B,SAAYC,GACX,iEACA,8CACA,iDACA,sCACA,8CACA,uDACA,uDACA,wCACA,0CACA,oDACA,kDACA,2BACA,gCACA,mCACA,CAfD,CAAYA,IAAAA,EAAc,KAgB1B,SAAYC,GACX,oBACA,mBACA,CAHD,CAAYA,IAAAA,EAA0B,KAItC,SAAYC,GACX,0BACA,gDACA,oCACA,oCACA,wBACA,6BACA,CAPD,CAAYA,IAAAA,EAAY,KAQxB,SAAYC,GACX,wBACA,sBACA,yBACA,CAJD,CAAYA,IAAAA,EAAe,KA6gB3B,SAAYC,GACX,kCACA,0CACA,0CACA,0CACA,2CACA,2CACA,yCACA,CARD,CAAYA,IAAAA,EAAiB,KAS7B,SAAYC,GACX,wBACA,+BACA,0CACA,6BACA,wCACA,uCACA,sCACA,oDACA,iCACA,CAVD,CAAYA,IAAAA,EAAa,KAWzB,SAAYC,GACX,uBACA,sBACA,kCACA,mDACA,wBACA,wCACA,6BACA,0BACA,8BACA,sCACA,0CACA,CAZD,CAAYA,IAAAA,EAAU,KAatB,SAAYC,GACX,yBACA,8CACA,oCACA,yBACA,kCACA,6BACA,8BACA,yBACA,CATD,CAAYA,IAAAA,EAAe,KAU3B,SAAYC,GACX,6BACA,iDACA,0CACA,6BACA,4BACA,8BACA,qCACA,0BACA,0BACA,kCACA,kCACA,+BACA,iCACA,4CACA,4BACA,gCACA,CAjBD,CAAYA,IAAAA,EAAS,KAkBrB,SAAY1R,GACX,2CACA,mCACA,8CACA,8CACA,kCACA,qCACA,6BACA,sCACA,kCACA,oCACA,yCACA,wCACA,kCACA,uDACA,4BACA,uCACA,oCACA,yBACA,CAnBD,CAAYA,IAAAA,EAAuB,KAoBnC,SAAY2R,GACX,4BACA,4BACA,kCACA,2BACA,CALD,CAAYA,IAAAA,EAAS,KAMrB,SAAYC,GACX,wBACA,+BACA,0CACA,4BACA,sCACA,iCACA,CAPD,CAAYA,IAAAA,EAAgB,KAQ5B,SAAYC,GACX,yBACA,8CACA,oCACA,kCACA,6BACA,CAND,CAAYA,IAAAA,EAAkB,KAO9B,SAAYC,GACX,kCACA,sCACA,wBACA,yBACA,kCACA,iCACA,uBACA,CARD,CAAYA,IAAAA,EAAa,KASzB,SAAYC,GACX,wBACA,oBACA,kCACA,wBACA,mCACA,CAND,CAAYA,IAAAA,EAAuB,KAOnC,SAAYC,GACX,0BACA,sBACA,kCACA,uBACA,CALD,CAAYA,IAAAA,EAAgB,KAM5B,SAAYC,GACX,kE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","sources":["webpack://spr-oma/./src/router/interceptor.js","webpack://spr-oma/./src/App.vue?12a1","webpack://spr-oma/./src/components/Header.vue?a7b2","webpack://spr-oma/./src/components/SwitchLanguage.vue?8f24","webpack://spr-oma/src/components/SwitchLanguage.vue","webpack://spr-oma/./src/components/SwitchLanguage.vue?8b8f","webpack://spr-oma/./src/components/SwitchLanguage.vue","webpack://spr-oma/./src/components/SPRButton.vue?e128","webpack://spr-oma/src/components/SPRButton.vue","webpack://spr-oma/./src/components/SPRButton.vue?b5fa","webpack://spr-oma/./src/components/SPRButton.vue","webpack://spr-oma/src/components/Header.vue","webpack://spr-oma/./src/components/Header.vue?240b","webpack://spr-oma/./src/components/Header.vue","webpack://spr-oma/./src/components/Footer.vue?cc43","webpack://spr-oma/src/components/Footer.vue","webpack://spr-oma/./src/components/Footer.vue?20c7","webpack://spr-oma/./src/components/Footer.vue","webpack://spr-oma/./src/mixins/messages.js","webpack://spr-oma/src/App.vue","webpack://spr-oma/./src/App.vue?bd07","webpack://spr-oma/./src/App.vue","webpack://spr-oma/./src/components/signupwizard/Wizard.vue?d5b2","webpack://spr-oma/./src/components/signupwizard/Wizard-Interest.vue?6588","webpack://spr-oma/./src/components/SPRCheckbox.vue?178b","webpack://spr-oma/src/components/SPRCheckbox.vue","webpack://spr-oma/./src/components/SPRCheckbox.vue?8122","webpack://spr-oma/./src/components/SPRCheckbox.vue","webpack://spr-oma/src/components/signupwizard/Wizard-Interest.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Interest.vue?ed9e","webpack://spr-oma/./src/components/signupwizard/Wizard-Interest.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Skill.vue?9dd4","webpack://spr-oma/src/components/signupwizard/Wizard-Skill.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Skill.vue?35e6","webpack://spr-oma/./src/components/signupwizard/Wizard-Skill.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Language.vue?f71f","webpack://spr-oma/./src/components/SPRLanguageSelector.vue?8086","webpack://spr-oma/src/components/SPRLanguageSelector.vue","webpack://spr-oma/./src/components/SPRLanguageSelector.vue?b6e6","webpack://spr-oma/./src/components/SPRLanguageSelector.vue","webpack://spr-oma/src/components/signupwizard/Wizard-Language.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Language.vue?b774","webpack://spr-oma/./src/components/signupwizard/Wizard-Language.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Location.vue?eeb3","webpack://spr-oma/./src/components/SPRValidationError.vue?da8b","webpack://spr-oma/src/components/SPRValidationError.vue","webpack://spr-oma/./src/components/SPRValidationError.vue?4581","webpack://spr-oma/./src/components/SPRValidationError.vue","webpack://spr-oma/./src/components/SPRWarning.vue?6512","webpack://spr-oma/src/components/SPRWarning.vue","webpack://spr-oma/./src/components/SPRWarning.vue?120e","webpack://spr-oma/./src/components/SPRWarning.vue","webpack://spr-oma/./src/components/SPRAutocompleteDropdown.vue?f5d6","webpack://spr-oma/./src/mixins/pointerScroll.js","webpack://spr-oma/src/components/SPRAutocompleteDropdown.vue","webpack://spr-oma/./src/components/SPRAutocompleteDropdown.vue?22f7","webpack://spr-oma/./src/components/SPRAutocompleteDropdown.vue","webpack://spr-oma/./src/components/SPRSimpleCheckbox.vue?a1b4","webpack://spr-oma/src/components/SPRSimpleCheckbox.vue","webpack://spr-oma/./src/components/SPRSimpleCheckbox.vue?0dc7","webpack://spr-oma/./src/components/SPRSimpleCheckbox.vue","webpack://spr-oma/./src/mixins/locationutils.js","webpack://spr-oma/./src/mixins/googlemaps.js","webpack://spr-oma/src/components/signupwizard/Wizard-Location.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Location.vue?aa70","webpack://spr-oma/./src/components/signupwizard/Wizard-Location.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Transport.vue?80b3","webpack://spr-oma/./src/components/SPRInput.vue?856d","webpack://spr-oma/src/components/SPRInput.vue","webpack://spr-oma/./src/components/SPRInput.vue?036a","webpack://spr-oma/./src/components/SPRInput.vue","webpack://spr-oma/src/components/signupwizard/Wizard-Transport.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Transport.vue?b5f1","webpack://spr-oma/./src/components/signupwizard/Wizard-Transport.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Time.vue?2bad","webpack://spr-oma/src/components/signupwizard/Wizard-Time.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Time.vue?166f","webpack://spr-oma/./src/components/signupwizard/Wizard-Time.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Basic.vue?24a6","webpack://spr-oma/src/components/signupwizard/Wizard-Basic.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Basic.vue?da82","webpack://spr-oma/./src/components/signupwizard/Wizard-Basic.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Contact.vue?e57e","webpack://spr-oma/./src/components/SPRNativeLanguageSelector.vue?4ae3","webpack://spr-oma/src/components/SPRNativeLanguageSelector.vue","webpack://spr-oma/./src/components/SPRNativeLanguageSelector.vue?f456","webpack://spr-oma/./src/components/SPRNativeLanguageSelector.vue","webpack://spr-oma/./src/components/SPRSimpleDatepickerDashYear.vue?8d65","webpack://spr-oma/src/components/SPRSimpleDatepickerDashYear.vue","webpack://spr-oma/./src/components/SPRSimpleDatepickerDashYear.vue?4362","webpack://spr-oma/./src/components/SPRSimpleDatepickerDashYear.vue","webpack://spr-oma/./src/components/SPRSimpleCheckboxBitmaskList.vue?1a0b","webpack://spr-oma/./src/components/SPRSimpleNumberCheckbox.vue?e6ba","webpack://spr-oma/src/components/SPRSimpleNumberCheckbox.vue","webpack://spr-oma/./src/components/SPRSimpleNumberCheckbox.vue?0c42","webpack://spr-oma/./src/components/SPRSimpleNumberCheckbox.vue","webpack://spr-oma/./src/helpers/bitmaskhelper.ts","webpack://spr-oma/./src/mixins/validator-hasOptionSelected.ts","webpack://spr-oma/src/components/SPRSimpleCheckboxBitmaskList.vue","webpack://spr-oma/./src/types/custom.ts","webpack://spr-oma/./src/components/SPRSimpleCheckboxBitmaskList.vue?0d38","webpack://spr-oma/./src/components/SPRSimpleCheckboxBitmaskList.vue","webpack://spr-oma/src/components/signupwizard/Wizard-Contact.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Contact.vue?337b","webpack://spr-oma/./src/components/signupwizard/Wizard-Contact.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Profile.vue?050e","webpack://spr-oma/./src/components/SPRSimpleTextArea.vue?a90d","webpack://spr-oma/src/components/SPRSimpleTextArea.vue","webpack://spr-oma/./src/components/SPRSimpleTextArea.vue?8bee","webpack://spr-oma/./src/components/SPRSimpleTextArea.vue","webpack://spr-oma/./src/components/BaseRadioButtonGroup.vue?d023","webpack://spr-oma/./src/components/BaseRadioButton.vue?d40b","webpack://spr-oma/src/components/BaseRadioButton.vue","webpack://spr-oma/./src/components/BaseRadioButton.vue?98d8","webpack://spr-oma/./src/components/BaseRadioButton.vue","webpack://spr-oma/src/components/BaseRadioButtonGroup.vue","webpack://spr-oma/./src/components/BaseRadioButtonGroup.vue?2ed0","webpack://spr-oma/./src/components/BaseRadioButtonGroup.vue","webpack://spr-oma/src/components/signupwizard/Wizard-Profile.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Profile.vue?111b","webpack://spr-oma/./src/components/signupwizard/Wizard-Profile.vue","webpack://spr-oma/./src/components/SPRLoading.vue?98f8","webpack://spr-oma/src/components/SPRLoading.vue","webpack://spr-oma/./src/components/SPRLoading.vue?d200","webpack://spr-oma/./src/components/SPRLoading.vue","webpack://spr-oma/src/components/signupwizard/Wizard.vue","webpack://spr-oma/./src/components/signupwizard/Wizard.vue?749c","webpack://spr-oma/./src/components/signupwizard/Wizard.vue","webpack://spr-oma/./src/components/joinform/Join.vue?fad2","webpack://spr-oma/./src/components/joinform/JoinPersonal.vue?9286","webpack://spr-oma/./src/components/SPRSimpleText.vue?be18","webpack://spr-oma/src/components/SPRSimpleText.vue","webpack://spr-oma/./src/components/SPRSimpleText.vue?a45a","webpack://spr-oma/./src/components/SPRSimpleText.vue","webpack://spr-oma/./src/components/common/Banner/CommonBanner.vue?44cf","webpack://spr-oma/./src/components/SPRTickCrossWarning.vue?3f9d","webpack://spr-oma/src/components/SPRTickCrossWarning.vue","webpack://spr-oma/./src/components/SPRTickCrossWarning.vue?4c14","webpack://spr-oma/./src/components/SPRTickCrossWarning.vue","webpack://spr-oma/src/components/common/Banner/CommonBanner.vue","webpack://spr-oma/./src/components/common/Banner/CommonBanner.vue?2ea2","webpack://spr-oma/./src/components/common/Banner/CommonBanner.vue","webpack://spr-oma/src/components/joinform/JoinPersonal.vue","webpack://spr-oma/./src/components/joinform/JoinPersonal.vue?f311","webpack://spr-oma/./src/components/joinform/JoinPersonal.vue","webpack://spr-oma/./src/components/joinform/JoinSection.vue?d5c7","webpack://spr-oma/./src/components/SPRSimpleDropdown.vue?ab7b","webpack://spr-oma/src/components/SPRSimpleDropdown.vue","webpack://spr-oma/./src/components/SPRSimpleDropdown.vue?5236","webpack://spr-oma/./src/components/SPRSimpleDropdown.vue","webpack://spr-oma/./src/mixins/dates.js","webpack://spr-oma/src/components/joinform/JoinSection.vue","webpack://spr-oma/./src/components/joinform/JoinSection.vue?ebb5","webpack://spr-oma/./src/components/joinform/JoinSection.vue","webpack://spr-oma/./src/components/joinform/JoinContact.vue?01f2","webpack://spr-oma/src/components/joinform/JoinContact.vue","webpack://spr-oma/./src/components/joinform/JoinContact.vue?154e","webpack://spr-oma/./src/components/joinform/JoinContact.vue","webpack://spr-oma/./src/components/joinform/JoinPayment.vue?9399","webpack://spr-oma/./src/components/payment/PaymentOptions.vue?74e2","webpack://spr-oma/./src/components/payment/PaymentProvider.vue?5443","webpack://spr-oma/src/components/payment/PaymentProvider.vue","webpack://spr-oma/./src/components/payment/PaymentProvider.vue?e565","webpack://spr-oma/./src/components/payment/PaymentProvider.vue","webpack://spr-oma/src/components/payment/PaymentOptions.vue","webpack://spr-oma/./src/components/payment/PaymentOptions.vue?a945","webpack://spr-oma/./src/components/payment/PaymentOptions.vue","webpack://spr-oma/src/components/joinform/JoinPayment.vue","webpack://spr-oma/./src/components/joinform/JoinPayment.vue?6cc0","webpack://spr-oma/./src/components/joinform/JoinPayment.vue","webpack://spr-oma/src/components/joinform/Join.vue","webpack://spr-oma/./src/components/joinform/Join.vue?c6d9","webpack://spr-oma/./src/components/joinform/Join.vue","webpack://spr-oma/./src/components/joinform/Return.vue?8d49","webpack://spr-oma/src/components/joinform/Return.vue","webpack://spr-oma/./src/components/joinform/Return.vue?2989","webpack://spr-oma/./src/components/joinform/Return.vue","webpack://spr-oma/./src/components/landingpage/LandingCampaign.vue?4362","webpack://spr-oma/src/components/landingpage/LandingCampaign.vue","webpack://spr-oma/./src/components/landingpage/LandingCampaign.vue?cf5d","webpack://spr-oma/./src/components/landingpage/LandingCampaign.vue","webpack://spr-oma/./src/components/netsignupwizard/AnonNetCustomerForm.vue?cfb3","webpack://spr-oma/./src/components/netsignupwizard/StepVizualizer.vue?ce9a","webpack://spr-oma/src/components/netsignupwizard/StepVizualizer.vue","webpack://spr-oma/./src/components/netsignupwizard/StepVizualizer.vue?798a","webpack://spr-oma/./src/components/netsignupwizard/StepVizualizer.vue","webpack://spr-oma/./src/components/netsignupwizard/Start.vue?99e8","webpack://spr-oma/src/components/netsignupwizard/Start.vue","webpack://spr-oma/./src/components/netsignupwizard/Start.vue?3d92","webpack://spr-oma/./src/components/netsignupwizard/Start.vue","webpack://spr-oma/./src/components/netsignupwizard/PersonalInfo.vue?ff11","webpack://spr-oma/./src/components/SPRSimpleDatepicker.vue?e3cd","webpack://spr-oma/src/components/SPRSimpleDatepicker.vue","webpack://spr-oma/./src/components/SPRSimpleDatepicker.vue?e290","webpack://spr-oma/./src/components/SPRSimpleDatepicker.vue","webpack://spr-oma/./src/components/SPRDropdownNumberKey.vue?7d76","webpack://spr-oma/src/components/SPRDropdownNumberKey.vue","webpack://spr-oma/./src/components/SPRDropdownNumberKey.vue?a672","webpack://spr-oma/./src/components/SPRDropdownNumberKey.vue","webpack://spr-oma/./src/components/SPRPrevNextButtons.vue?cfcc","webpack://spr-oma/src/components/SPRPrevNextButtons.vue","webpack://spr-oma/./src/components/SPRPrevNextButtons.vue?f06f","webpack://spr-oma/./src/components/SPRPrevNextButtons.vue","webpack://spr-oma/src/components/netsignupwizard/PersonalInfo.vue","webpack://spr-oma/./src/components/netsignupwizard/PersonalInfo.vue?2f59","webpack://spr-oma/./src/components/netsignupwizard/PersonalInfo.vue","webpack://spr-oma/./src/components/netsignupwizard/LanguageInfo.vue?a4ed","webpack://spr-oma/./src/components/SPRSimpleCheckboxList.vue?68b1","webpack://spr-oma/src/components/SPRSimpleCheckboxList.vue","webpack://spr-oma/./src/components/SPRSimpleCheckboxList.vue?f9fa","webpack://spr-oma/./src/components/SPRSimpleCheckboxList.vue","webpack://spr-oma/./src/mixins/inpututils.js","webpack://spr-oma/src/components/netsignupwizard/LanguageInfo.vue","webpack://spr-oma/./src/components/netsignupwizard/LanguageInfo.vue?cdeb","webpack://spr-oma/./src/components/netsignupwizard/LanguageInfo.vue","webpack://spr-oma/./src/components/netsignupwizard/InterestInfo.vue?e38a","webpack://spr-oma/src/components/netsignupwizard/InterestInfo.vue","webpack://spr-oma/./src/components/netsignupwizard/InterestInfo.vue?7b4d","webpack://spr-oma/./src/components/netsignupwizard/InterestInfo.vue","webpack://spr-oma/./src/components/netsignupwizard/FriendInfo.vue?7e27","webpack://spr-oma/src/components/netsignupwizard/FriendInfo.vue","webpack://spr-oma/./src/components/netsignupwizard/FriendInfo.vue?42f3","webpack://spr-oma/./src/components/netsignupwizard/FriendInfo.vue","webpack://spr-oma/./src/components/netsignupwizard/ContactInfo.vue?50bc","webpack://spr-oma/src/components/netsignupwizard/ContactInfo.vue","webpack://spr-oma/./src/components/netsignupwizard/ContactInfo.vue?fe58","webpack://spr-oma/./src/components/netsignupwizard/ContactInfo.vue","webpack://spr-oma/./src/components/netsignupwizard/Summary.vue?1e0e","webpack://spr-oma/./src/mixins/enums.js","webpack://spr-oma/src/components/netsignupwizard/Summary.vue","webpack://spr-oma/./src/components/netsignupwizard/Summary.vue?4053","webpack://spr-oma/./src/components/netsignupwizard/Summary.vue","webpack://spr-oma/./src/components/netsignupwizard/Success.vue?d29f","webpack://spr-oma/src/components/netsignupwizard/Success.vue","webpack://spr-oma/./src/components/netsignupwizard/Success.vue?05ac","webpack://spr-oma/./src/components/netsignupwizard/Success.vue","webpack://spr-oma/src/components/netsignupwizard/AnonNetCustomerForm.vue","webpack://spr-oma/./src/components/netsignupwizard/AnonNetCustomerForm.vue?8798","webpack://spr-oma/./src/components/netsignupwizard/AnonNetCustomerForm.vue","webpack://spr-oma/./src/components/standardsignupwizard/AnonCustomerForm.vue?19a5","webpack://spr-oma/./src/components/standardsignupwizard/GroupContactInfo.vue?ab39","webpack://spr-oma/./src/components/useradmin/FriendshipContact.vue?48e4","webpack://spr-oma/src/components/useradmin/FriendshipContact.vue","webpack://spr-oma/./src/components/useradmin/FriendshipContact.vue?8639","webpack://spr-oma/./src/components/useradmin/FriendshipContact.vue","webpack://spr-oma/./src/components/useradmin/FriendshipActivities.vue?6ba9","webpack://spr-oma/./src/components/useradmin/FriendshipActivity.vue?cfd9","webpack://spr-oma/./src/helpers/stringhelper.ts","webpack://spr-oma/src/components/useradmin/FriendshipActivity.vue","webpack://spr-oma/./src/components/useradmin/FriendshipActivity.vue?fc0c","webpack://spr-oma/./src/components/useradmin/FriendshipActivity.vue","webpack://spr-oma/src/components/useradmin/FriendshipActivities.vue","webpack://spr-oma/./src/components/useradmin/FriendshipActivities.vue?4ca7","webpack://spr-oma/./src/components/useradmin/FriendshipActivities.vue","webpack://spr-oma/./src/mixins/cache.js","webpack://spr-oma/src/components/standardsignupwizard/GroupContactInfo.vue","webpack://spr-oma/./src/components/standardsignupwizard/GroupContactInfo.vue?6d20","webpack://spr-oma/./src/components/standardsignupwizard/GroupContactInfo.vue","webpack://spr-oma/./src/components/standardsignupwizard/StepVizualizer.vue?5d9e","webpack://spr-oma/src/components/standardsignupwizard/StepVizualizer.vue","webpack://spr-oma/./src/components/standardsignupwizard/StepVizualizer.vue?8878","webpack://spr-oma/./src/components/standardsignupwizard/StepVizualizer.vue","webpack://spr-oma/./src/components/standardsignupwizard/Start.vue?9ddb","webpack://spr-oma/src/components/standardsignupwizard/Start.vue","webpack://spr-oma/./src/components/standardsignupwizard/Start.vue?e5d8","webpack://spr-oma/./src/components/standardsignupwizard/Start.vue","webpack://spr-oma/./src/components/standardsignupwizard/PersonalInfo.vue?84be","webpack://spr-oma/src/components/standardsignupwizard/PersonalInfo.vue","webpack://spr-oma/./src/components/standardsignupwizard/PersonalInfo.vue?b360","webpack://spr-oma/./src/components/standardsignupwizard/PersonalInfo.vue","webpack://spr-oma/./src/components/standardsignupwizard/LanguageInfo.vue?72b4","webpack://spr-oma/src/components/standardsignupwizard/LanguageInfo.vue","webpack://spr-oma/./src/components/standardsignupwizard/LanguageInfo.vue?aadc","webpack://spr-oma/./src/components/standardsignupwizard/LanguageInfo.vue","webpack://spr-oma/./src/components/standardsignupwizard/InterestInfo.vue?c396","webpack://spr-oma/src/components/standardsignupwizard/InterestInfo.vue","webpack://spr-oma/./src/components/standardsignupwizard/InterestInfo.vue?fbc3","webpack://spr-oma/./src/components/standardsignupwizard/InterestInfo.vue","webpack://spr-oma/./src/components/standardsignupwizard/FriendInfo.vue?4f81","webpack://spr-oma/src/components/standardsignupwizard/FriendInfo.vue","webpack://spr-oma/./src/components/standardsignupwizard/FriendInfo.vue?4c1c","webpack://spr-oma/./src/components/standardsignupwizard/FriendInfo.vue","webpack://spr-oma/./src/components/standardsignupwizard/ContactInfo.vue?c3d4","webpack://spr-oma/src/components/standardsignupwizard/ContactInfo.vue","webpack://spr-oma/./src/components/standardsignupwizard/ContactInfo.vue?b24a","webpack://spr-oma/./src/components/standardsignupwizard/ContactInfo.vue","webpack://spr-oma/./src/components/standardsignupwizard/Summary.vue?d56a","webpack://spr-oma/src/components/standardsignupwizard/Summary.vue","webpack://spr-oma/./src/components/standardsignupwizard/Summary.vue?9988","webpack://spr-oma/./src/components/standardsignupwizard/Summary.vue","webpack://spr-oma/./src/components/standardsignupwizard/Success.vue?77af","webpack://spr-oma/src/components/standardsignupwizard/Success.vue","webpack://spr-oma/./src/components/standardsignupwizard/Success.vue?9365","webpack://spr-oma/./src/components/standardsignupwizard/Success.vue","webpack://spr-oma/src/components/standardsignupwizard/AnonCustomerForm.vue","webpack://spr-oma/./src/components/standardsignupwizard/AnonCustomerForm.vue?8179","webpack://spr-oma/./src/components/standardsignupwizard/AnonCustomerForm.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Thanks.vue?b384","webpack://spr-oma/src/components/signupwizard/Wizard-Thanks.vue","webpack://spr-oma/./src/components/signupwizard/Wizard-Thanks.vue?e513","webpack://spr-oma/./src/components/signupwizard/Wizard-Thanks.vue","webpack://spr-oma/./src/components/Front.vue?f5e0","webpack://spr-oma/./src/components/FrontAnon.vue?efb8","webpack://spr-oma/./src/components/events/EventTile.vue?7752","webpack://spr-oma/./src/mixins/event.js","webpack://spr-oma/./src/components/common/Warning/EarMark.vue?528b","webpack://spr-oma/src/components/common/Warning/EarMark.vue","webpack://spr-oma/./src/components/common/Warning/EarMark.vue?f028","webpack://spr-oma/./src/components/common/Warning/EarMark.vue","webpack://spr-oma/src/components/events/EventTile.vue","webpack://spr-oma/./src/components/events/EventTile.vue?6071","webpack://spr-oma/./src/components/events/EventTile.vue","webpack://spr-oma/./src/components/SPRSearchBox.vue?f133","webpack://spr-oma/src/components/SPRSearchBox.vue","webpack://spr-oma/./src/components/SPRSearchBox.vue?0ccc","webpack://spr-oma/./src/components/SPRSearchBox.vue","webpack://spr-oma/src/components/FrontAnon.vue","webpack://spr-oma/./src/components/FrontAnon.vue?7bd4","webpack://spr-oma/./src/components/FrontAnon.vue","webpack://spr-oma/./src/components/FrontRegistered.vue?afd1","webpack://spr-oma/./src/components/SPRPortrait.vue?edc9","webpack://spr-oma/src/components/SPRPortrait.vue","webpack://spr-oma/./src/components/SPRPortrait.vue?bcce","webpack://spr-oma/./src/components/SPRPortrait.vue","webpack://spr-oma/./src/components/messages/SPRMessage.vue?98d3","webpack://spr-oma/./src/components/UserProfileIcon.vue?1c23","webpack://spr-oma/src/components/UserProfileIcon.vue","webpack://spr-oma/./src/components/UserProfileIcon.vue?3ed2","webpack://spr-oma/./src/components/UserProfileIcon.vue","webpack://spr-oma/src/components/messages/SPRMessage.vue","webpack://spr-oma/./src/components/messages/SPRMessage.vue?43f7","webpack://spr-oma/./src/components/messages/SPRMessage.vue","webpack://spr-oma/./src/components/groups/GroupList.vue?b1d5","webpack://spr-oma/./src/components/groups/GroupView.vue?7ebd","webpack://spr-oma/./src/components/SPRGroupOrganizersDropdown.vue?c89f","webpack://spr-oma/src/components/SPRGroupOrganizersDropdown.vue","webpack://spr-oma/./src/components/SPRGroupOrganizersDropdown.vue?af82","webpack://spr-oma/./src/components/SPRGroupOrganizersDropdown.vue","webpack://spr-oma/src/components/groups/GroupView.vue","webpack://spr-oma/./src/components/groups/GroupView.vue?cb0b","webpack://spr-oma/./src/components/groups/GroupView.vue","webpack://spr-oma/src/components/groups/GroupList.vue","webpack://spr-oma/./src/components/groups/GroupList.vue?fa58","webpack://spr-oma/./src/components/groups/GroupList.vue","webpack://spr-oma/./src/components/useradmin/EventView.vue?3b8e","webpack://spr-oma/src/components/useradmin/EventView.vue","webpack://spr-oma/./src/components/useradmin/EventView.vue?e6a8","webpack://spr-oma/./src/components/useradmin/EventView.vue","webpack://spr-oma/src/components/FrontRegistered.vue","webpack://spr-oma/./src/components/FrontRegistered.vue?1642","webpack://spr-oma/./src/components/FrontRegistered.vue","webpack://spr-oma/src/components/Front.vue","webpack://spr-oma/./src/components/Front.vue?7992","webpack://spr-oma/./src/components/Front.vue","webpack://spr-oma/./src/components/Login.vue?b7be","webpack://spr-oma/./src/components/SprPassword.vue?0bb5","webpack://spr-oma/src/components/SprPassword.vue","webpack://spr-oma/./src/components/SprPassword.vue?6bba","webpack://spr-oma/./src/components/SprPassword.vue","webpack://spr-oma/./src/components/SPRSuccess.vue?3091","webpack://spr-oma/src/components/SPRSuccess.vue","webpack://spr-oma/./src/components/SPRSuccess.vue?0814","webpack://spr-oma/./src/components/SPRSuccess.vue","webpack://spr-oma/src/components/Login.vue","webpack://spr-oma/./src/components/Login.vue?47fe","webpack://spr-oma/./src/components/Login.vue","webpack://spr-oma/./src/components/AdSignin.vue?11f2","webpack://spr-oma/./src/components/ad/AdStateMachine.vue?8dbd","webpack://spr-oma/src/components/ad/AdStateMachine.vue","webpack://spr-oma/./src/components/ad/AdStateMachine.vue?966a","webpack://spr-oma/./src/components/ad/AdStateMachine.vue","webpack://spr-oma/src/components/AdSignin.vue","webpack://spr-oma/./src/components/AdSignin.vue?1200","webpack://spr-oma/./src/components/AdSignin.vue","webpack://spr-oma/./src/components/Profile.vue?f587","webpack://spr-oma/./src/components/SPRProfileEditor.vue?ad58","webpack://spr-oma/src/components/SPRProfileEditor.vue","webpack://spr-oma/./src/components/SPRProfileEditor.vue?00f3","webpack://spr-oma/./src/components/SPRProfileEditor.vue","webpack://spr-oma/./src/components/VolunteerProfileDetails.vue?b37b","webpack://spr-oma/./src/components/friends/FriendVolunteerCommonDetails.vue?504f","webpack://spr-oma/src/components/friends/FriendVolunteerCommonDetails.vue","webpack://spr-oma/./src/components/friends/FriendVolunteerCommonDetails.vue?e3d5","webpack://spr-oma/./src/components/friends/FriendVolunteerCommonDetails.vue","webpack://spr-oma/./src/components/friends/FriendVolunteerStandardDetails.vue?bd56","webpack://spr-oma/./src/components/SPRPillList.vue?843f","webpack://spr-oma/./src/components/SPRPill.vue?b110","webpack://spr-oma/src/components/SPRPill.vue","webpack://spr-oma/./src/components/SPRPill.vue?ace7","webpack://spr-oma/./src/components/SPRPill.vue","webpack://spr-oma/src/components/SPRPillList.vue","webpack://spr-oma/./src/components/SPRPillList.vue?4f31","webpack://spr-oma/./src/components/SPRPillList.vue","webpack://spr-oma/src/components/friends/FriendVolunteerStandardDetails.vue","webpack://spr-oma/./src/components/friends/FriendVolunteerStandardDetails.vue?6256","webpack://spr-oma/./src/components/friends/FriendVolunteerStandardDetails.vue","webpack://spr-oma/./src/components/friends/FriendVolunteerNetDetails.vue?6b55","webpack://spr-oma/src/components/friends/FriendVolunteerNetDetails.vue","webpack://spr-oma/./src/components/friends/FriendVolunteerNetDetails.vue?f647","webpack://spr-oma/./src/components/friends/FriendVolunteerNetDetails.vue","webpack://spr-oma/src/components/VolunteerProfileDetails.vue","webpack://spr-oma/./src/components/VolunteerProfileDetails.vue?4bd8","webpack://spr-oma/./src/components/VolunteerProfileDetails.vue","webpack://spr-oma/./src/components/profile-editor/DeleteUserProfile.vue?b2f9","webpack://spr-oma/src/components/profile-editor/DeleteUserProfile.vue","webpack://spr-oma/./src/components/profile-editor/DeleteUserProfile.vue?fe3d","webpack://spr-oma/./src/components/profile-editor/DeleteUserProfile.vue","webpack://spr-oma/./src/components/MembershipData.vue?3ced","webpack://spr-oma/src/components/MembershipData.vue","webpack://spr-oma/./src/components/MembershipData.vue?bece","webpack://spr-oma/./src/components/MembershipData.vue","webpack://spr-oma/./src/components/SPRRadioList.vue?e41d","webpack://spr-oma/./src/components/SPRSimpleRadio.vue?cd11","webpack://spr-oma/src/components/SPRSimpleRadio.vue","webpack://spr-oma/./src/components/SPRSimpleRadio.vue?0a4b","webpack://spr-oma/./src/components/SPRSimpleRadio.vue","webpack://spr-oma/src/components/SPRRadioList.vue","webpack://spr-oma/./src/components/SPRRadioList.vue?1bf2","webpack://spr-oma/./src/components/SPRRadioList.vue","webpack://spr-oma/src/components/Profile.vue","webpack://spr-oma/./src/components/Profile.vue?c908","webpack://spr-oma/./src/components/Profile.vue","webpack://spr-oma/./src/components/profile-editor/Editor.vue?8a5c","webpack://spr-oma/./src/components/profile-editor/Editor-Checkbox.vue?ba07","webpack://spr-oma/src/components/profile-editor/Editor-Checkbox.vue","webpack://spr-oma/./src/components/profile-editor/Editor-Checkbox.vue?3900","webpack://spr-oma/./src/components/profile-editor/Editor-Checkbox.vue","webpack://spr-oma/./src/components/profile-editor/Editor-Personal.vue?f168","webpack://spr-oma/./src/helpers/datehelper.ts","webpack://spr-oma/src/components/profile-editor/Editor-Personal.vue","webpack://spr-oma/./src/components/profile-editor/Editor-Personal.vue?e26d","webpack://spr-oma/./src/components/profile-editor/Editor-Personal.vue","webpack://spr-oma/./src/components/profile-editor/Editor-Image.vue?1b9a","webpack://spr-oma/src/components/profile-editor/Editor-Image.vue","webpack://spr-oma/./src/components/profile-editor/Editor-Image.vue?96cd","webpack://spr-oma/./src/components/profile-editor/Editor-Image.vue","webpack://spr-oma/./src/components/profile-editor/Editor-Location.vue?80f7","webpack://spr-oma/src/components/profile-editor/Editor-Location.vue","webpack://spr-oma/./src/components/profile-editor/Editor-Location.vue?b23a","webpack://spr-oma/./src/components/profile-editor/Editor-Location.vue","webpack://spr-oma/./src/components/profile-editor/Editor-Login.vue?8f7f","webpack://spr-oma/./src/mixins/validator-emailexists.js","webpack://spr-oma/src/components/profile-editor/Editor-Login.vue","webpack://spr-oma/./src/components/profile-editor/Editor-Login.vue?4c77","webpack://spr-oma/./src/components/profile-editor/Editor-Login.vue","webpack://spr-oma/./src/components/profile-editor/Editor-EventAdmins.vue?af50","webpack://spr-oma/src/components/profile-editor/Editor-EventAdmins.vue","webpack://spr-oma/./src/components/profile-editor/Editor-EventAdmins.vue?2c09","webpack://spr-oma/./src/components/profile-editor/Editor-EventAdmins.vue","webpack://spr-oma/./src/components/profile-editor/Editor-DeleteProfile.vue?6a49","webpack://spr-oma/./src/components/profile-editor/MyUserProfileUsageReport.vue?50ff","webpack://spr-oma/src/components/profile-editor/MyUserProfileUsageReport.vue","webpack://spr-oma/./src/components/profile-editor/MyUserProfileUsageReport.vue?6af2","webpack://spr-oma/./src/components/profile-editor/MyUserProfileUsageReport.vue","webpack://spr-oma/src/components/profile-editor/Editor-DeleteProfile.vue","webpack://spr-oma/./src/components/profile-editor/Editor-DeleteProfile.vue?c267","webpack://spr-oma/./src/components/profile-editor/Editor-DeleteProfile.vue","webpack://spr-oma/./src/components/profile-editor/Editor-FlagPill.vue?abc3","webpack://spr-oma/src/components/profile-editor/Editor-FlagPill.vue","webpack://spr-oma/./src/components/profile-editor/Editor-FlagPill.vue?58ff","webpack://spr-oma/./src/components/profile-editor/Editor-FlagPill.vue","webpack://spr-oma/src/components/profile-editor/Editor.vue","webpack://spr-oma/./src/components/profile-editor/Editor.vue?3773","webpack://spr-oma/./src/components/profile-editor/Editor.vue","webpack://spr-oma/./src/components/friends/ProfileIdentVolunteerForm.vue?8937","webpack://spr-oma/./src/components/friends/VolunteerProfileCommon.vue?c125","webpack://spr-oma/./src/mixins/scroll.js","webpack://spr-oma/src/components/friends/VolunteerProfileCommon.vue","webpack://spr-oma/./src/components/friends/VolunteerProfileCommon.vue?4b3e","webpack://spr-oma/./src/components/friends/VolunteerProfileCommon.vue","webpack://spr-oma/./src/components/friends/VolunteerProfileStandard.vue?6773","webpack://spr-oma/src/components/friends/VolunteerProfileStandard.vue","webpack://spr-oma/./src/components/friends/VolunteerProfileStandard.vue?b245","webpack://spr-oma/./src/components/friends/VolunteerProfileStandard.vue","webpack://spr-oma/./src/components/friends/VolunteerProfileNet.vue?4d30","webpack://spr-oma/src/components/friends/VolunteerProfileNet.vue","webpack://spr-oma/./src/components/friends/VolunteerProfileNet.vue?2766","webpack://spr-oma/./src/components/friends/VolunteerProfileNet.vue","webpack://spr-oma/./src/mixins/alerts.js","webpack://spr-oma/src/components/friends/ProfileIdentVolunteerForm.vue","webpack://spr-oma/./src/components/friends/ProfileIdentVolunteerForm.vue?dc05","webpack://spr-oma/./src/components/friends/ProfileIdentVolunteerForm.vue","webpack://spr-oma/./src/components/friends/ProfileIdentVolunteerFormCommon.vue?25e4","webpack://spr-oma/src/components/friends/ProfileIdentVolunteerFormCommon.vue","webpack://spr-oma/./src/components/friends/ProfileIdentVolunteerFormCommon.vue?a7c8","webpack://spr-oma/./src/components/friends/ProfileIdentVolunteerFormCommon.vue","webpack://spr-oma/./src/components/friends/ProfileIdentVolunteerFormStandard.vue?5fbb","webpack://spr-oma/src/components/friends/ProfileIdentVolunteerFormStandard.vue","webpack://spr-oma/./src/components/friends/ProfileIdentVolunteerFormStandard.vue?006d","webpack://spr-oma/./src/components/friends/ProfileIdentVolunteerFormStandard.vue","webpack://spr-oma/./src/components/friends/ProfileIdentVolunteerFormNet.vue?1ce2","webpack://spr-oma/src/components/friends/ProfileIdentVolunteerFormNet.vue","webpack://spr-oma/./src/components/friends/ProfileIdentVolunteerFormNet.vue?1702","webpack://spr-oma/./src/components/friends/ProfileIdentVolunteerFormNet.vue","webpack://spr-oma/./src/components/friends/ProfileIdentStandardVolunteerForm.vue?1487","webpack://spr-oma/./src/components/friends/ProfileInfoForm.vue?aa4e","webpack://spr-oma/./src/mixins/validator-dateisbefore.ts","webpack://spr-oma/src/components/friends/ProfileInfoForm.vue","webpack://spr-oma/./src/components/friends/ProfileInfoForm.vue?db85","webpack://spr-oma/./src/components/friends/ProfileInfoForm.vue","webpack://spr-oma/./src/components/friends/InterviewForm.vue?a589","webpack://spr-oma/src/components/friends/InterviewForm.vue","webpack://spr-oma/./src/components/friends/InterviewForm.vue?7b85","webpack://spr-oma/./src/components/friends/InterviewForm.vue","webpack://spr-oma/./src/components/friends/OnHoldForm.vue?ece2","webpack://spr-oma/src/components/friends/OnHoldForm.vue","webpack://spr-oma/./src/components/friends/OnHoldForm.vue?9679","webpack://spr-oma/./src/components/friends/OnHoldForm.vue","webpack://spr-oma/./src/components/friends/LastContactedForm.vue?40d5","webpack://spr-oma/src/components/friends/LastContactedForm.vue","webpack://spr-oma/./src/components/friends/LastContactedForm.vue?1b67","webpack://spr-oma/./src/components/friends/LastContactedForm.vue","webpack://spr-oma/./src/components/BackBar.vue?0a28","webpack://spr-oma/src/components/BackBar.vue","webpack://spr-oma/./src/components/BackBar.vue?5126","webpack://spr-oma/./src/components/BackBar.vue","webpack://spr-oma/src/components/friends/ProfileIdentStandardVolunteerForm.vue","webpack://spr-oma/./src/components/friends/ProfileIdentStandardVolunteerForm.vue?348e","webpack://spr-oma/./src/components/friends/ProfileIdentStandardVolunteerForm.vue","webpack://spr-oma/./src/components/friends/ProfileIdentNetVolunteerForm.vue?b3c6","webpack://spr-oma/src/components/friends/ProfileIdentNetVolunteerForm.vue","webpack://spr-oma/./src/components/friends/ProfileIdentNetVolunteerForm.vue?e739","webpack://spr-oma/./src/components/friends/ProfileIdentNetVolunteerForm.vue","webpack://spr-oma/./src/components/friends/ProfileNonIdentStandardVolunteerForm.vue?6105","webpack://spr-oma/src/components/friends/ProfileNonIdentStandardVolunteerForm.vue","webpack://spr-oma/./src/components/friends/ProfileNonIdentStandardVolunteerForm.vue?3c53","webpack://spr-oma/./src/components/friends/ProfileNonIdentStandardVolunteerForm.vue","webpack://spr-oma/./src/components/friends/ProfileNonIdentNetVolunteerForm.vue?a099","webpack://spr-oma/src/components/friends/ProfileNonIdentNetVolunteerForm.vue","webpack://spr-oma/./src/components/friends/ProfileNonIdentNetVolunteerForm.vue?eca2","webpack://spr-oma/./src/components/friends/ProfileNonIdentNetVolunteerForm.vue","webpack://spr-oma/./src/components/friends/CustomerStandardForm.vue?7ad9","webpack://spr-oma/./src/components/friends/CustomerCommon.vue?331e","webpack://spr-oma/./src/components/SPRObjectCheckboxList.vue?384c","webpack://spr-oma/src/components/SPRObjectCheckboxList.vue","webpack://spr-oma/./src/components/SPRObjectCheckboxList.vue?2ffd","webpack://spr-oma/./src/components/SPRObjectCheckboxList.vue","webpack://spr-oma/src/components/friends/CustomerCommon.vue","webpack://spr-oma/./src/components/friends/CustomerCommon.vue?f603","webpack://spr-oma/./src/components/friends/CustomerCommon.vue","webpack://spr-oma/./src/components/friends/ApprovalForm.vue?214d","webpack://spr-oma/src/components/friends/ApprovalForm.vue","webpack://spr-oma/./src/components/friends/ApprovalForm.vue?abcc","webpack://spr-oma/./src/components/friends/ApprovalForm.vue","webpack://spr-oma/./src/components/friends/SuitabilityForm.vue?17a0","webpack://spr-oma/src/components/friends/SuitabilityForm.vue","webpack://spr-oma/./src/components/friends/SuitabilityForm.vue?54c3","webpack://spr-oma/./src/components/friends/SuitabilityForm.vue","webpack://spr-oma/src/components/friends/CustomerStandardForm.vue","webpack://spr-oma/./src/components/friends/CustomerStandardForm.vue?e4ec","webpack://spr-oma/./src/components/friends/CustomerStandardForm.vue","webpack://spr-oma/./src/components/friends/CustomerNetForm.vue?0260","webpack://spr-oma/./src/components/friends/CustomerNetContactForm.vue?81ed","webpack://spr-oma/src/components/friends/CustomerNetContactForm.vue","webpack://spr-oma/./src/components/friends/CustomerNetContactForm.vue?44da","webpack://spr-oma/./src/components/friends/CustomerNetContactForm.vue","webpack://spr-oma/src/components/friends/CustomerNetForm.vue","webpack://spr-oma/./src/components/friends/CustomerNetForm.vue?1de2","webpack://spr-oma/./src/components/friends/CustomerNetForm.vue","webpack://spr-oma/./src/components/friends/CustomerSearch.vue?9713","webpack://spr-oma/./src/components/friends/CustomerFilter.vue?9979","webpack://spr-oma/./src/components/friends/FilterItems.vue?828f","webpack://spr-oma/./src/components/SPRCollapsible.vue?e7f5","webpack://spr-oma/src/components/SPRCollapsible.vue","webpack://spr-oma/./src/components/SPRCollapsible.vue?9977","webpack://spr-oma/./src/components/SPRCollapsible.vue","webpack://spr-oma/./src/components/FilterButtonGroup.vue?7bae","webpack://spr-oma/src/components/FilterButtonGroup.vue","webpack://spr-oma/./src/components/FilterButtonGroup.vue?8067","webpack://spr-oma/./src/components/FilterButtonGroup.vue","webpack://spr-oma/src/components/friends/FilterItems.vue","webpack://spr-oma/./src/components/friends/FilterItems.vue?db52","webpack://spr-oma/./src/components/friends/FilterItems.vue","webpack://spr-oma/src/components/friends/CustomerFilter.vue","webpack://spr-oma/./src/components/friends/CustomerFilter.vue?6799","webpack://spr-oma/./src/components/friends/CustomerFilter.vue","webpack://spr-oma/./src/components/friends/PoolFilter.vue?3ca1","webpack://spr-oma/src/components/friends/PoolFilter.vue","webpack://spr-oma/./src/components/friends/PoolFilter.vue?696c","webpack://spr-oma/./src/components/friends/PoolFilter.vue","webpack://spr-oma/./src/components/friends/SearchHeader.vue?cfcf","webpack://spr-oma/./src/components/SPRSearchSort.vue?f6f6","webpack://spr-oma/src/components/SPRSearchSort.vue","webpack://spr-oma/./src/components/SPRSearchSort.vue?962c","webpack://spr-oma/./src/components/SPRSearchSort.vue","webpack://spr-oma/src/components/friends/SearchHeader.vue","webpack://spr-oma/./src/components/friends/SearchHeader.vue?b4bf","webpack://spr-oma/./src/components/friends/SearchHeader.vue","webpack://spr-oma/./src/components/friends/ResultList.vue?616c","webpack://spr-oma/./src/components/friends/CustomerFindResult.vue?49b4","webpack://spr-oma/./src/components/friends/FriendIcon.vue?c60e","webpack://spr-oma/src/components/friends/FriendIcon.vue","webpack://spr-oma/./src/components/friends/FriendIcon.vue?50b0","webpack://spr-oma/./src/components/friends/FriendIcon.vue","webpack://spr-oma/./src/components/friends/FriendshipIcon.vue?3d8e","webpack://spr-oma/src/components/friends/FriendshipIcon.vue","webpack://spr-oma/./src/components/friends/FriendshipIcon.vue?a352","webpack://spr-oma/./src/components/friends/FriendshipIcon.vue","webpack://spr-oma/./src/components/friends/PoolIcon.vue?d999","webpack://spr-oma/src/components/friends/PoolIcon.vue","webpack://spr-oma/./src/components/friends/PoolIcon.vue?e7ec","webpack://spr-oma/./src/components/friends/PoolIcon.vue","webpack://spr-oma/src/components/friends/CustomerFindResult.vue","webpack://spr-oma/./src/components/friends/CustomerFindResult.vue?fe64","webpack://spr-oma/./src/components/friends/CustomerFindResult.vue","webpack://spr-oma/./src/components/friends/VolunteerNetFindResult.vue?06c5","webpack://spr-oma/src/components/friends/VolunteerNetFindResult.vue","webpack://spr-oma/./src/components/friends/VolunteerNetFindResult.vue?b683","webpack://spr-oma/./src/components/friends/VolunteerNetFindResult.vue","webpack://spr-oma/./src/components/friends/VolunteerStandardFindResult.vue?68b1","webpack://spr-oma/src/components/friends/VolunteerStandardFindResult.vue","webpack://spr-oma/./src/components/friends/VolunteerStandardFindResult.vue?dca4","webpack://spr-oma/./src/components/friends/VolunteerStandardFindResult.vue","webpack://spr-oma/./src/components/SPRPager.vue?d5ba","webpack://spr-oma/./src/components/SPRPagerStats.vue?7ce8","webpack://spr-oma/src/components/SPRPagerStats.vue","webpack://spr-oma/./src/components/SPRPagerStats.vue?5284","webpack://spr-oma/./src/components/SPRPagerStats.vue","webpack://spr-oma/src/components/SPRPager.vue","webpack://spr-oma/./src/components/SPRPager.vue?2f92","webpack://spr-oma/./src/components/SPRPager.vue","webpack://spr-oma/src/components/friends/ResultList.vue","webpack://spr-oma/./src/components/friends/ResultList.vue?612d","webpack://spr-oma/./src/components/friends/ResultList.vue","webpack://spr-oma/./src/components/friends/PoolsListStandard.vue?f3d4","webpack://spr-oma/./src/components/friends/PoolView.vue?c848","webpack://spr-oma/./src/helpers/addresshelper.ts","webpack://spr-oma/src/components/friends/PoolView.vue","webpack://spr-oma/./src/components/friends/PoolView.vue?cc8b","webpack://spr-oma/./src/components/friends/PoolView.vue","webpack://spr-oma/src/components/friends/PoolsListStandard.vue","webpack://spr-oma/./src/components/friends/PoolsListStandard.vue?d38f","webpack://spr-oma/./src/components/friends/PoolsListStandard.vue","webpack://spr-oma/./src/components/friends/PoolsListNet.vue?e15f","webpack://spr-oma/src/components/friends/PoolsListNet.vue","webpack://spr-oma/./src/components/friends/PoolsListNet.vue?d998","webpack://spr-oma/./src/components/friends/PoolsListNet.vue","webpack://spr-oma/./src/components/friends/Discussion.vue?286c","webpack://spr-oma/./src/components/groups/NotesView.vue?7e22","webpack://spr-oma/./src/components/groups/ThreadView.vue?5d57","webpack://spr-oma/./src/components/groups/ReplyView.vue?f37e","webpack://spr-oma/src/components/groups/ReplyView.vue","webpack://spr-oma/./src/components/groups/ReplyView.vue?9715","webpack://spr-oma/./src/components/groups/ReplyView.vue","webpack://spr-oma/src/components/groups/ThreadView.vue","webpack://spr-oma/./src/components/groups/ThreadView.vue?182e","webpack://spr-oma/./src/components/groups/ThreadView.vue","webpack://spr-oma/src/components/groups/NotesView.vue","webpack://spr-oma/./src/components/groups/NotesView.vue?5b7b","webpack://spr-oma/./src/components/groups/NotesView.vue","webpack://spr-oma/src/components/friends/Discussion.vue","webpack://spr-oma/./src/components/friends/Discussion.vue?a4b6","webpack://spr-oma/./src/components/friends/Discussion.vue","webpack://spr-oma/src/components/friends/CustomerSearch.vue","webpack://spr-oma/./src/components/friends/CustomerSearch.vue?6691","webpack://spr-oma/./src/components/friends/CustomerSearch.vue","webpack://spr-oma/./src/components/friends/CustomerPreview.vue?500a","webpack://spr-oma/./src/components/BackButton.vue?365f","webpack://spr-oma/src/components/BackButton.vue","webpack://spr-oma/./src/components/BackButton.vue?34b8","webpack://spr-oma/./src/components/BackButton.vue","webpack://spr-oma/./src/components/HomeButton.vue?e23b","webpack://spr-oma/src/components/HomeButton.vue","webpack://spr-oma/./src/components/HomeButton.vue?1522","webpack://spr-oma/./src/components/HomeButton.vue","webpack://spr-oma/./src/components/friends/CustomerCardStandard.vue?2406","webpack://spr-oma/./src/components/SPRTickCross.vue?19e0","webpack://spr-oma/src/components/SPRTickCross.vue","webpack://spr-oma/./src/components/SPRTickCross.vue?8660","webpack://spr-oma/./src/components/SPRTickCross.vue","webpack://spr-oma/./src/components/SPRPrivateNotes.vue?057b","webpack://spr-oma/src/components/SPRPrivateNotes.vue","webpack://spr-oma/./src/components/SPRPrivateNotes.vue?9153","webpack://spr-oma/./src/components/SPRPrivateNotes.vue","webpack://spr-oma/./src/components/friends/CustomerActions.vue?24f5","webpack://spr-oma/./src/components/friends/OnHold.vue?f9f9","webpack://spr-oma/./src/components/SPRDatepicker.vue?5770","webpack://spr-oma/./src/components/BaseDatepicker.vue?5088","webpack://spr-oma/src/components/BaseDatepicker.vue","webpack://spr-oma/./src/components/BaseDatepicker.vue?7d31","webpack://spr-oma/./src/components/BaseDatepicker.vue","webpack://spr-oma/src/components/SPRDatepicker.vue","webpack://spr-oma/./src/components/SPRDatepicker.vue?4eec","webpack://spr-oma/./src/components/SPRDatepicker.vue","webpack://spr-oma/./src/mixins/validator-dateisafter.js","webpack://spr-oma/src/components/friends/OnHold.vue","webpack://spr-oma/./src/components/friends/OnHold.vue?ccbd","webpack://spr-oma/./src/components/friends/OnHold.vue","webpack://spr-oma/src/components/friends/CustomerActions.vue","webpack://spr-oma/./src/components/friends/CustomerActions.vue?7e65","webpack://spr-oma/./src/components/friends/CustomerActions.vue","webpack://spr-oma/src/components/friends/CustomerCardStandard.vue","webpack://spr-oma/./src/components/friends/CustomerCardStandard.vue?3b98","webpack://spr-oma/./src/components/friends/CustomerCardStandard.vue","webpack://spr-oma/./src/components/friends/CustomerCardNet.vue?3c5c","webpack://spr-oma/src/components/friends/CustomerCardNet.vue","webpack://spr-oma/./src/components/friends/CustomerCardNet.vue?396c","webpack://spr-oma/./src/components/friends/CustomerCardNet.vue","webpack://spr-oma/./src/components/friends/CustomerMatchStatus.vue?55a7","webpack://spr-oma/./src/components/friends/CustomerMatchDetail.vue?fa31","webpack://spr-oma/src/components/friends/CustomerMatchDetail.vue","webpack://spr-oma/./src/components/friends/CustomerMatchDetail.vue?3191","webpack://spr-oma/./src/components/friends/CustomerMatchDetail.vue","webpack://spr-oma/src/components/friends/CustomerMatchStatus.vue","webpack://spr-oma/./src/components/friends/CustomerMatchStatus.vue?9dc4","webpack://spr-oma/./src/components/friends/CustomerMatchStatus.vue","webpack://spr-oma/./src/components/friends/CustomerPoolsStandard.vue?9e35","webpack://spr-oma/./src/components/friends/PoolChooserStandard.vue?5896","webpack://spr-oma/src/components/friends/PoolChooserStandard.vue","webpack://spr-oma/./src/components/friends/PoolChooserStandard.vue?9182","webpack://spr-oma/./src/components/friends/PoolChooserStandard.vue","webpack://spr-oma/src/components/friends/CustomerPoolsStandard.vue","webpack://spr-oma/./src/components/friends/CustomerPoolsStandard.vue?a7d8","webpack://spr-oma/./src/components/friends/CustomerPoolsStandard.vue","webpack://spr-oma/./src/components/friends/CustomerPoolsNet.vue?73fa","webpack://spr-oma/./src/components/friends/PoolChooserNet.vue?66b9","webpack://spr-oma/src/components/friends/PoolChooserNet.vue","webpack://spr-oma/./src/components/friends/PoolChooserNet.vue?f248","webpack://spr-oma/./src/components/friends/PoolChooserNet.vue","webpack://spr-oma/src/components/friends/CustomerPoolsNet.vue","webpack://spr-oma/./src/components/friends/CustomerPoolsNet.vue?015f","webpack://spr-oma/./src/components/friends/CustomerPoolsNet.vue","webpack://spr-oma/./src/components/friends/MoveToFMGForm.vue?f388","webpack://spr-oma/./src/components/SPRAutoCompleteDropdown2.vue?4502","webpack://spr-oma/src/components/SPRAutoCompleteDropdown2.vue","webpack://spr-oma/./src/components/SPRAutoCompleteDropdown2.vue?6ebf","webpack://spr-oma/./src/components/SPRAutoCompleteDropdown2.vue","webpack://spr-oma/src/components/friends/MoveToFMGForm.vue","webpack://spr-oma/./src/components/friends/MoveToFMGForm.vue?69e2","webpack://spr-oma/./src/components/friends/MoveToFMGForm.vue","webpack://spr-oma/src/components/friends/CustomerPreview.vue","webpack://spr-oma/./src/components/friends/CustomerPreview.vue?b224","webpack://spr-oma/./src/components/friends/CustomerPreview.vue","webpack://spr-oma/./src/components/friends/CustomerFindMatch.vue?d6ce","webpack://spr-oma/./src/components/friends/CustomerFindNetMatch.vue?34ef","webpack://spr-oma/./src/components/friends/VolunteerSummaryNet.vue?8918","webpack://spr-oma/./src/components/friends/CustomerMatchNetConfirm.vue?6577","webpack://spr-oma/./src/components/SPRStars.vue?8e47","webpack://spr-oma/src/components/SPRStars.vue","webpack://spr-oma/./src/components/SPRStars.vue?66f0","webpack://spr-oma/./src/components/SPRStars.vue","webpack://spr-oma/src/components/friends/CustomerMatchNetConfirm.vue","webpack://spr-oma/./src/components/friends/CustomerMatchNetConfirm.vue?80ca","webpack://spr-oma/./src/components/friends/CustomerMatchNetConfirm.vue","webpack://spr-oma/./src/components/friends/VolunteerCardNet.vue?30f7","webpack://spr-oma/./src/components/friends/VolunteerActions.vue?e509","webpack://spr-oma/src/components/friends/VolunteerActions.vue","webpack://spr-oma/./src/components/friends/VolunteerActions.vue?cf43","webpack://spr-oma/./src/components/friends/VolunteerActions.vue","webpack://spr-oma/src/components/friends/VolunteerCardNet.vue","webpack://spr-oma/./src/components/friends/VolunteerCardNet.vue?4343","webpack://spr-oma/./src/components/friends/VolunteerCardNet.vue","webpack://spr-oma/./src/mixins/friendMatch.js","webpack://spr-oma/src/components/friends/VolunteerSummaryNet.vue","webpack://spr-oma/./src/components/friends/VolunteerSummaryNet.vue?f5be","webpack://spr-oma/./src/components/friends/VolunteerSummaryNet.vue","webpack://spr-oma/./src/components/friends/CustomerMatchResults.vue?dcb2","webpack://spr-oma/./src/components/friends/CustomerMatchView.vue?0654","webpack://spr-oma/src/components/friends/CustomerMatchView.vue","webpack://spr-oma/./src/components/friends/CustomerMatchView.vue?4957","webpack://spr-oma/./src/components/friends/CustomerMatchView.vue","webpack://spr-oma/src/components/friends/CustomerMatchResults.vue","webpack://spr-oma/./src/components/friends/CustomerMatchResults.vue?0297","webpack://spr-oma/./src/components/friends/CustomerMatchResults.vue","webpack://spr-oma/src/components/friends/CustomerFindNetMatch.vue","webpack://spr-oma/./src/components/friends/CustomerFindNetMatch.vue?0f5b","webpack://spr-oma/./src/components/friends/CustomerFindNetMatch.vue","webpack://spr-oma/./src/components/friends/CustomerFindStandardMatch.vue?68b9","webpack://spr-oma/./src/components/friends/VolunteerSummaryStandard.vue?8f1f","webpack://spr-oma/./src/components/friends/CustomerMatchStandardConfirm.vue?97ef","webpack://spr-oma/src/components/friends/CustomerMatchStandardConfirm.vue","webpack://spr-oma/./src/components/friends/CustomerMatchStandardConfirm.vue?aa32","webpack://spr-oma/./src/components/friends/CustomerMatchStandardConfirm.vue","webpack://spr-oma/./src/components/friends/VolunteerCardStandard.vue?9ce9","webpack://spr-oma/src/components/friends/VolunteerCardStandard.vue","webpack://spr-oma/./src/components/friends/VolunteerCardStandard.vue?b535","webpack://spr-oma/./src/components/friends/VolunteerCardStandard.vue","webpack://spr-oma/src/components/friends/VolunteerSummaryStandard.vue","webpack://spr-oma/./src/components/friends/VolunteerSummaryStandard.vue?5cf0","webpack://spr-oma/./src/components/friends/VolunteerSummaryStandard.vue","webpack://spr-oma/src/components/friends/CustomerFindStandardMatch.vue","webpack://spr-oma/./src/components/friends/CustomerFindStandardMatch.vue?5e69","webpack://spr-oma/./src/components/friends/CustomerFindStandardMatch.vue","webpack://spr-oma/src/components/friends/CustomerFindMatch.vue","webpack://spr-oma/./src/components/friends/CustomerFindMatch.vue?bee6","webpack://spr-oma/./src/components/friends/CustomerFindMatch.vue","webpack://spr-oma/./src/components/friends/CustomerMatchVolunteerDetails.vue?e9b8","webpack://spr-oma/./src/components/friends/CustomerStandardMatchVolunteer.vue?d8bf","webpack://spr-oma/./src/components/friends/CustomerMatchSummaryStandard.vue?3d09","webpack://spr-oma/./src/components/friends/FriendshipStatus.vue?c10f","webpack://spr-oma/./src/components/SPRStatusIndicator.vue?5d4c","webpack://spr-oma/src/components/SPRStatusIndicator.vue","webpack://spr-oma/./src/components/SPRStatusIndicator.vue?c19c","webpack://spr-oma/./src/components/SPRStatusIndicator.vue","webpack://spr-oma/src/components/friends/FriendshipStatus.vue","webpack://spr-oma/./src/components/friends/FriendshipStatus.vue?4e2e","webpack://spr-oma/./src/components/friends/FriendshipStatus.vue","webpack://spr-oma/src/components/friends/CustomerMatchSummaryStandard.vue","webpack://spr-oma/./src/components/friends/CustomerMatchSummaryStandard.vue?7de0","webpack://spr-oma/./src/components/friends/CustomerMatchSummaryStandard.vue","webpack://spr-oma/src/components/friends/CustomerStandardMatchVolunteer.vue","webpack://spr-oma/./src/components/friends/CustomerStandardMatchVolunteer.vue?1a1e","webpack://spr-oma/./src/components/friends/CustomerStandardMatchVolunteer.vue","webpack://spr-oma/./src/components/friends/CustomerNetMatchVolunteer.vue?4113","webpack://spr-oma/./src/components/friends/CustomerMatchSummaryNet.vue?a3ce","webpack://spr-oma/src/components/friends/CustomerMatchSummaryNet.vue","webpack://spr-oma/./src/components/friends/CustomerMatchSummaryNet.vue?4fbd","webpack://spr-oma/./src/components/friends/CustomerMatchSummaryNet.vue","webpack://spr-oma/src/components/friends/CustomerNetMatchVolunteer.vue","webpack://spr-oma/./src/components/friends/CustomerNetMatchVolunteer.vue?65d2","webpack://spr-oma/./src/components/friends/CustomerNetMatchVolunteer.vue","webpack://spr-oma/src/components/friends/CustomerMatchVolunteerDetails.vue","webpack://spr-oma/./src/components/friends/CustomerMatchVolunteerDetails.vue?1773","webpack://spr-oma/./src/components/friends/CustomerMatchVolunteerDetails.vue","webpack://spr-oma/./src/components/friends/CustomerSummaryNetLink.vue?9958","webpack://spr-oma/src/components/friends/CustomerSummaryNetLink.vue","webpack://spr-oma/./src/components/friends/CustomerSummaryNetLink.vue?27b2","webpack://spr-oma/./src/components/friends/CustomerSummaryNetLink.vue","webpack://spr-oma/./src/components/friends/CustomerSummaryStandardLink.vue?fec7","webpack://spr-oma/src/components/friends/CustomerSummaryStandardLink.vue","webpack://spr-oma/./src/components/friends/CustomerSummaryStandardLink.vue?c6f7","webpack://spr-oma/./src/components/friends/CustomerSummaryStandardLink.vue","webpack://spr-oma/./src/components/friends/VolunteerPreview.vue?5010","webpack://spr-oma/./src/components/friends/VolunteerMatchStatus.vue?90c7","webpack://spr-oma/./src/components/friends/VolunteerMatchDetail.vue?b047","webpack://spr-oma/src/components/friends/VolunteerMatchDetail.vue","webpack://spr-oma/./src/components/friends/VolunteerMatchDetail.vue?4e1f","webpack://spr-oma/./src/components/friends/VolunteerMatchDetail.vue","webpack://spr-oma/src/components/friends/VolunteerMatchStatus.vue","webpack://spr-oma/./src/components/friends/VolunteerMatchStatus.vue?ea69","webpack://spr-oma/./src/components/friends/VolunteerMatchStatus.vue","webpack://spr-oma/./src/components/friends/VolunteerPoolsStandard.vue?5903","webpack://spr-oma/src/components/friends/VolunteerPoolsStandard.vue","webpack://spr-oma/./src/components/friends/VolunteerPoolsStandard.vue?4acc","webpack://spr-oma/./src/components/friends/VolunteerPoolsStandard.vue","webpack://spr-oma/./src/components/friends/VolunteerPoolsNet.vue?4c84","webpack://spr-oma/src/components/friends/VolunteerPoolsNet.vue","webpack://spr-oma/./src/components/friends/VolunteerPoolsNet.vue?c85b","webpack://spr-oma/./src/components/friends/VolunteerPoolsNet.vue","webpack://spr-oma/src/components/friends/VolunteerPreview.vue","webpack://spr-oma/./src/components/friends/VolunteerPreview.vue?81ef","webpack://spr-oma/./src/components/friends/VolunteerPreview.vue","webpack://spr-oma/./src/components/friends/VolunteerFindMatch.vue?570d","webpack://spr-oma/./src/components/friends/VolunteerFindNetMatch.vue?29e4","webpack://spr-oma/./src/components/friends/CustomerSummaryNet.vue?a0c1","webpack://spr-oma/./src/components/friends/VolunteerMatchNetConfirm.vue?bb07","webpack://spr-oma/src/components/friends/VolunteerMatchNetConfirm.vue","webpack://spr-oma/./src/components/friends/VolunteerMatchNetConfirm.vue?a5ff","webpack://spr-oma/./src/components/friends/VolunteerMatchNetConfirm.vue","webpack://spr-oma/src/components/friends/CustomerSummaryNet.vue","webpack://spr-oma/./src/components/friends/CustomerSummaryNet.vue?34ba","webpack://spr-oma/./src/components/friends/CustomerSummaryNet.vue","webpack://spr-oma/./src/components/friends/VolunteerMatchResults.vue?99d5","webpack://spr-oma/./src/components/friends/VolunteerMatchView.vue?fa53","webpack://spr-oma/src/components/friends/VolunteerMatchView.vue","webpack://spr-oma/./src/components/friends/VolunteerMatchView.vue?e50a","webpack://spr-oma/./src/components/friends/VolunteerMatchView.vue","webpack://spr-oma/src/components/friends/VolunteerMatchResults.vue","webpack://spr-oma/./src/components/friends/VolunteerMatchResults.vue?a1aa","webpack://spr-oma/./src/components/friends/VolunteerMatchResults.vue","webpack://spr-oma/src/components/friends/VolunteerFindNetMatch.vue","webpack://spr-oma/./src/components/friends/VolunteerFindNetMatch.vue?c20b","webpack://spr-oma/./src/components/friends/VolunteerFindNetMatch.vue","webpack://spr-oma/./src/components/friends/VolunteerFindStandardMatch.vue?0753","webpack://spr-oma/./src/components/friends/CustomerSummaryStandard.vue?a9d0","webpack://spr-oma/./src/components/friends/VolunteerMatchStandardConfirm.vue?9fb8","webpack://spr-oma/src/components/friends/VolunteerMatchStandardConfirm.vue","webpack://spr-oma/./src/components/friends/VolunteerMatchStandardConfirm.vue?9c51","webpack://spr-oma/./src/components/friends/VolunteerMatchStandardConfirm.vue","webpack://spr-oma/src/components/friends/CustomerSummaryStandard.vue","webpack://spr-oma/./src/components/friends/CustomerSummaryStandard.vue?4f73","webpack://spr-oma/./src/components/friends/CustomerSummaryStandard.vue","webpack://spr-oma/src/components/friends/VolunteerFindStandardMatch.vue","webpack://spr-oma/./src/components/friends/VolunteerFindStandardMatch.vue?359b","webpack://spr-oma/./src/components/friends/VolunteerFindStandardMatch.vue","webpack://spr-oma/src/components/friends/VolunteerFindMatch.vue","webpack://spr-oma/./src/components/friends/VolunteerFindMatch.vue?1906","webpack://spr-oma/./src/components/friends/VolunteerFindMatch.vue","webpack://spr-oma/./src/components/friends/VolunteerMatchCustomerDetails.vue?72c2","webpack://spr-oma/./src/components/friends/VolunteerStandardMatchCustomer.vue?71e4","webpack://spr-oma/./src/components/friends/VolunteerMatchSummaryStandard.vue?425b","webpack://spr-oma/src/components/friends/VolunteerMatchSummaryStandard.vue","webpack://spr-oma/./src/components/friends/VolunteerMatchSummaryStandard.vue?e0ef","webpack://spr-oma/./src/components/friends/VolunteerMatchSummaryStandard.vue","webpack://spr-oma/src/components/friends/VolunteerStandardMatchCustomer.vue","webpack://spr-oma/./src/components/friends/VolunteerStandardMatchCustomer.vue?f934","webpack://spr-oma/./src/components/friends/VolunteerStandardMatchCustomer.vue","webpack://spr-oma/./src/components/friends/VolunteerNetMatchCustomer.vue?a9f5","webpack://spr-oma/./src/components/friends/VolunteerMatchSummaryNet.vue?bd5b","webpack://spr-oma/src/components/friends/VolunteerMatchSummaryNet.vue","webpack://spr-oma/./src/components/friends/VolunteerMatchSummaryNet.vue?7c56","webpack://spr-oma/./src/components/friends/VolunteerMatchSummaryNet.vue","webpack://spr-oma/src/components/friends/VolunteerNetMatchCustomer.vue","webpack://spr-oma/./src/components/friends/VolunteerNetMatchCustomer.vue?4e8b","webpack://spr-oma/./src/components/friends/VolunteerNetMatchCustomer.vue","webpack://spr-oma/src/components/friends/VolunteerMatchCustomerDetails.vue","webpack://spr-oma/./src/components/friends/VolunteerMatchCustomerDetails.vue?d54d","webpack://spr-oma/./src/components/friends/VolunteerMatchCustomerDetails.vue","webpack://spr-oma/./src/components/friends/PoolAdd.vue?1e07","webpack://spr-oma/./src/components/friends/PoolAddEditStandardForm.vue?5d29","webpack://spr-oma/./src/mixins/validator-uniquepoolname.js","webpack://spr-oma/src/components/friends/PoolAddEditStandardForm.vue","webpack://spr-oma/./src/components/friends/PoolAddEditStandardForm.vue?54ac","webpack://spr-oma/./src/components/friends/PoolAddEditStandardForm.vue","webpack://spr-oma/./src/components/friends/PoolAddEditNetForm.vue?302a","webpack://spr-oma/src/components/friends/PoolAddEditNetForm.vue","webpack://spr-oma/./src/components/friends/PoolAddEditNetForm.vue?216c","webpack://spr-oma/./src/components/friends/PoolAddEditNetForm.vue","webpack://spr-oma/src/components/friends/PoolAdd.vue","webpack://spr-oma/./src/components/friends/PoolAdd.vue?90c5","webpack://spr-oma/./src/components/friends/PoolAdd.vue","webpack://spr-oma/./src/components/friends/PoolEdit.vue?dc12","webpack://spr-oma/src/components/friends/PoolEdit.vue","webpack://spr-oma/./src/components/friends/PoolEdit.vue?f1c0","webpack://spr-oma/./src/components/friends/PoolEdit.vue","webpack://spr-oma/./src/components/friends/PoolDetail.vue?c6ae","webpack://spr-oma/./src/components/friends/PoolPreviewStandard.vue?2e03","webpack://spr-oma/./src/components/friends/PoolMemberView.vue?6bf3","webpack://spr-oma/src/components/friends/PoolMemberView.vue","webpack://spr-oma/./src/components/friends/PoolMemberView.vue?31e5","webpack://spr-oma/./src/components/friends/PoolMemberView.vue","webpack://spr-oma/src/components/friends/PoolPreviewStandard.vue","webpack://spr-oma/./src/components/friends/PoolPreviewStandard.vue?03b4","webpack://spr-oma/./src/components/friends/PoolPreviewStandard.vue","webpack://spr-oma/./src/components/friends/PoolPreviewNet.vue?4546","webpack://spr-oma/src/components/friends/PoolPreviewNet.vue","webpack://spr-oma/./src/components/friends/PoolPreviewNet.vue?6c53","webpack://spr-oma/./src/components/friends/PoolPreviewNet.vue","webpack://spr-oma/src/components/friends/PoolDetail.vue","webpack://spr-oma/./src/components/friends/PoolDetail.vue?5218","webpack://spr-oma/./src/components/friends/PoolDetail.vue","webpack://spr-oma/./src/components/cms/Translations.vue?e826","webpack://spr-oma/src/components/cms/Translations.vue","webpack://spr-oma/./src/components/cms/Translations.vue?46d7","webpack://spr-oma/./src/components/cms/Translations.vue","webpack://spr-oma/./src/components/tools/TestCors.vue?af12","webpack://spr-oma/src/components/tools/TestCors.vue","webpack://spr-oma/./src/components/tools/TestCors.vue?83e5","webpack://spr-oma/./src/components/tools/TestCors.vue","webpack://spr-oma/./src/components/tools/TestEnums.vue?2c93","webpack://spr-oma/src/components/tools/TestEnums.vue","webpack://spr-oma/./src/components/tools/TestEnums.vue?9551","webpack://spr-oma/./src/components/tools/TestEnums.vue","webpack://spr-oma/./src/components/useradmin/UserAdmin.vue?7c5e","webpack://spr-oma/./src/components/useradmin/GroupList.vue?b5a2","webpack://spr-oma/./src/components/useradmin/GroupView.vue?57c3","webpack://spr-oma/src/components/useradmin/GroupView.vue","webpack://spr-oma/./src/components/useradmin/GroupView.vue?e0b0","webpack://spr-oma/./src/components/useradmin/GroupView.vue","webpack://spr-oma/src/components/useradmin/GroupList.vue","webpack://spr-oma/./src/components/useradmin/GroupList.vue?a193","webpack://spr-oma/./src/components/useradmin/GroupList.vue","webpack://spr-oma/./src/components/useradmin/EventList.vue?075b","webpack://spr-oma/src/components/useradmin/EventList.vue","webpack://spr-oma/./src/components/useradmin/EventList.vue?39ec","webpack://spr-oma/./src/components/useradmin/EventList.vue","webpack://spr-oma/./src/components/useradmin/AdminVolunteersList.vue?b6ab","webpack://spr-oma/./src/components/useradmin/VolunteersView.vue?ad32","webpack://spr-oma/src/components/useradmin/VolunteersView.vue","webpack://spr-oma/./src/components/useradmin/VolunteersView.vue?f1f8","webpack://spr-oma/./src/components/useradmin/VolunteersView.vue","webpack://spr-oma/src/components/useradmin/AdminVolunteersList.vue","webpack://spr-oma/./src/components/useradmin/AdminVolunteersList.vue?3117","webpack://spr-oma/./src/components/useradmin/AdminVolunteersList.vue","webpack://spr-oma/./src/components/useradmin/DepartmentView.vue?e610","webpack://spr-oma/src/components/useradmin/DepartmentView.vue","webpack://spr-oma/./src/components/useradmin/DepartmentView.vue?b35f","webpack://spr-oma/./src/components/useradmin/DepartmentView.vue","webpack://spr-oma/src/components/useradmin/UserAdmin.vue","webpack://spr-oma/./src/components/useradmin/UserAdmin.vue?22b2","webpack://spr-oma/./src/components/useradmin/UserAdmin.vue","webpack://spr-oma/./src/components/useradmin/Admin.vue?a629","webpack://spr-oma/./src/components/useradmin/UserSearch.vue?dc6c","webpack://spr-oma/./src/components/SPRPagerHeading.vue?b97c","webpack://spr-oma/./src/components/SPRPageSizeSelector.vue?f731","webpack://spr-oma/src/components/SPRPageSizeSelector.vue","webpack://spr-oma/./src/components/SPRPageSizeSelector.vue?5a02","webpack://spr-oma/./src/components/SPRPageSizeSelector.vue","webpack://spr-oma/src/components/SPRPagerHeading.vue","webpack://spr-oma/./src/components/SPRPagerHeading.vue?3498","webpack://spr-oma/./src/components/SPRPagerHeading.vue","webpack://spr-oma/./src/components/useradmin/UserSimpleSearchResult.vue?ddc3","webpack://spr-oma/src/components/useradmin/UserSimpleSearchResult.vue","webpack://spr-oma/./src/components/useradmin/UserSimpleSearchResult.vue?1e31","webpack://spr-oma/./src/components/useradmin/UserSimpleSearchResult.vue","webpack://spr-oma/./src/components/useradmin/FriendSearchResult.vue?795e","webpack://spr-oma/src/components/useradmin/FriendSearchResult.vue","webpack://spr-oma/./src/components/useradmin/FriendSearchResult.vue?05d9","webpack://spr-oma/./src/components/useradmin/FriendSearchResult.vue","webpack://spr-oma/./src/components/useradmin/CustomerSearchResult.vue?9276","webpack://spr-oma/src/components/useradmin/CustomerSearchResult.vue","webpack://spr-oma/./src/components/useradmin/CustomerSearchResult.vue?886e","webpack://spr-oma/./src/components/useradmin/CustomerSearchResult.vue","webpack://spr-oma/./src/components/useradmin/FriendVolunteerSearchResult.vue?fcb2","webpack://spr-oma/src/components/useradmin/FriendVolunteerSearchResult.vue","webpack://spr-oma/./src/components/useradmin/FriendVolunteerSearchResult.vue?5da0","webpack://spr-oma/./src/components/useradmin/FriendVolunteerSearchResult.vue","webpack://spr-oma/./src/components/useradmin/FriendshipBrokerSearchResult.vue?ec27","webpack://spr-oma/src/components/useradmin/FriendshipBrokerSearchResult.vue","webpack://spr-oma/./src/components/useradmin/FriendshipBrokerSearchResult.vue?0fba","webpack://spr-oma/./src/components/useradmin/FriendshipBrokerSearchResult.vue","webpack://spr-oma/./src/components/useradmin/UserRolesCurrent.vue?5375","webpack://spr-oma/./src/components/useradmin/UserRoleEditorInline.vue?b71c","webpack://spr-oma/./src/components/SPRMultiSelectInline.vue?48c3","webpack://spr-oma/src/components/SPRMultiSelectInline.vue","webpack://spr-oma/./src/components/SPRMultiSelectInline.vue?9f87","webpack://spr-oma/./src/components/SPRMultiSelectInline.vue","webpack://spr-oma/src/components/useradmin/UserRoleEditorInline.vue","webpack://spr-oma/./src/components/useradmin/UserRoleEditorInline.vue?ab68","webpack://spr-oma/./src/components/useradmin/UserRoleEditorInline.vue","webpack://spr-oma/src/components/useradmin/UserRolesCurrent.vue","webpack://spr-oma/./src/components/useradmin/UserRolesCurrent.vue?27c8","webpack://spr-oma/./src/components/useradmin/UserRolesCurrent.vue","webpack://spr-oma/./src/components/sections/UserSearchCriteria.vue?a8f3","webpack://spr-oma/./src/components/common/Dropdown/SingleSelectDropdown.vue?be76","webpack://spr-oma/src/components/common/Dropdown/SingleSelectDropdown.vue","webpack://spr-oma/./src/components/common/Dropdown/SingleSelectDropdown.vue?d1d6","webpack://spr-oma/./src/components/common/Dropdown/SingleSelectDropdown.vue","webpack://spr-oma/./src/components/common/Dropdown/MultiSelectDropdown.vue?3255","webpack://spr-oma/src/components/common/Dropdown/MultiSelectDropdown.vue","webpack://spr-oma/./src/components/common/Dropdown/MultiSelectDropdown.vue?ca5b","webpack://spr-oma/./src/components/common/Dropdown/MultiSelectDropdown.vue","webpack://spr-oma/./src/components/SPRSimpleAutocompleteDropdown.vue?ac8d","webpack://spr-oma/src/components/SPRSimpleAutocompleteDropdown.vue","webpack://spr-oma/./src/components/SPRSimpleAutocompleteDropdown.vue?9de0","webpack://spr-oma/./src/components/SPRSimpleAutocompleteDropdown.vue","webpack://spr-oma/src/components/sections/UserSearchCriteria.vue","webpack://spr-oma/./src/components/sections/UserSearchCriteria.vue?bcfd","webpack://spr-oma/./src/components/sections/UserSearchCriteria.vue","webpack://spr-oma/src/components/useradmin/UserSearch.vue","webpack://spr-oma/./src/components/useradmin/UserSearch.vue?71b6","webpack://spr-oma/./src/components/useradmin/UserSearch.vue","webpack://spr-oma/./src/components/useradmin/UserSearchCheckBox.vue?8555","webpack://spr-oma/./src/components/useradmin/UserSimpleSearchResultCheckBox.vue?d3b9","webpack://spr-oma/src/components/useradmin/UserSimpleSearchResultCheckBox.vue","webpack://spr-oma/./src/components/useradmin/UserSimpleSearchResultCheckBox.vue?e957","webpack://spr-oma/./src/components/useradmin/UserSimpleSearchResultCheckBox.vue","webpack://spr-oma/src/components/useradmin/UserSearchCheckBox.vue","webpack://spr-oma/./src/components/useradmin/UserSearchCheckBox.vue?eac8","webpack://spr-oma/./src/components/useradmin/UserSearchCheckBox.vue","webpack://spr-oma/./src/components/useradmin/BrokerVolunteers.vue?2b14","webpack://spr-oma/src/components/useradmin/BrokerVolunteers.vue","webpack://spr-oma/./src/components/useradmin/BrokerVolunteers.vue?49be","webpack://spr-oma/./src/components/useradmin/BrokerVolunteers.vue","webpack://spr-oma/./src/components/useradmin/SectionMessages.vue?a5f4","webpack://spr-oma/./src/components/useradmin/AdminMessageView.vue?ca2d","webpack://spr-oma/src/components/useradmin/AdminMessageView.vue","webpack://spr-oma/./src/components/useradmin/AdminMessageView.vue?06c1","webpack://spr-oma/./src/components/useradmin/AdminMessageView.vue","webpack://spr-oma/./src/components/useradmin/SelectedVolunteerList.vue?1459","webpack://spr-oma/./src/components/useradmin/SelectedVolunteerResult.vue?c5f3","webpack://spr-oma/src/components/useradmin/SelectedVolunteerResult.vue","webpack://spr-oma/./src/components/useradmin/SelectedVolunteerResult.vue?2498","webpack://spr-oma/./src/components/useradmin/SelectedVolunteerResult.vue","webpack://spr-oma/src/components/useradmin/SelectedVolunteerList.vue","webpack://spr-oma/./src/components/useradmin/SelectedVolunteerList.vue?2083","webpack://spr-oma/./src/components/useradmin/SelectedVolunteerList.vue","webpack://spr-oma/src/components/useradmin/SectionMessages.vue","webpack://spr-oma/./src/components/useradmin/SectionMessages.vue?4131","webpack://spr-oma/./src/components/useradmin/SectionMessages.vue","webpack://spr-oma/./src/components/useradmin/DistrictMessages.vue?5af5","webpack://spr-oma/src/components/useradmin/DistrictMessages.vue","webpack://spr-oma/./src/components/useradmin/DistrictMessages.vue?5338","webpack://spr-oma/./src/components/useradmin/DistrictMessages.vue","webpack://spr-oma/./src/components/useradmin/UserEditor.vue?653f","webpack://spr-oma/./src/components/useradmin/AnonymizeUserProfile.vue?a795","webpack://spr-oma/./src/components/useradmin/UserProfileUsageReport.vue?05b9","webpack://spr-oma/src/components/useradmin/UserProfileUsageReport.vue","webpack://spr-oma/./src/components/useradmin/UserProfileUsageReport.vue?f3f1","webpack://spr-oma/./src/components/useradmin/UserProfileUsageReport.vue","webpack://spr-oma/src/components/useradmin/AnonymizeUserProfile.vue","webpack://spr-oma/./src/components/useradmin/AnonymizeUserProfile.vue?bf84","webpack://spr-oma/./src/components/useradmin/AnonymizeUserProfile.vue","webpack://spr-oma/./src/components/useradmin/DeleteUser.vue?90bb","webpack://spr-oma/src/components/useradmin/DeleteUser.vue","webpack://spr-oma/./src/components/useradmin/DeleteUser.vue?e6f4","webpack://spr-oma/./src/components/useradmin/DeleteUser.vue","webpack://spr-oma/./src/components/SPREditTool.vue?9f00","webpack://spr-oma/src/components/SPREditTool.vue","webpack://spr-oma/./src/components/SPREditTool.vue?a9d0","webpack://spr-oma/./src/components/SPREditTool.vue","webpack://spr-oma/./src/components/useradmin/UserRoleEditor.vue?5ddf","webpack://spr-oma/./src/components/SPRMultiSelect.vue?1a47","webpack://spr-oma/src/components/SPRMultiSelect.vue","webpack://spr-oma/./src/components/SPRMultiSelect.vue?8605","webpack://spr-oma/./src/components/SPRMultiSelect.vue","webpack://spr-oma/src/components/useradmin/UserRoleEditor.vue","webpack://spr-oma/./src/components/useradmin/UserRoleEditor.vue?4342","webpack://spr-oma/./src/components/useradmin/UserRoleEditor.vue","webpack://spr-oma/./src/components/useradmin/UserEditorForm.vue?d8e5","webpack://spr-oma/src/components/useradmin/UserEditorForm.vue","webpack://spr-oma/./src/components/useradmin/UserEditorForm.vue?38bd","webpack://spr-oma/./src/components/useradmin/UserEditorForm.vue","webpack://spr-oma/./src/components/useradmin/UserPasswordEditor.vue?34d6","webpack://spr-oma/src/components/useradmin/UserPasswordEditor.vue","webpack://spr-oma/./src/components/useradmin/UserPasswordEditor.vue?8714","webpack://spr-oma/./src/components/useradmin/UserPasswordEditor.vue","webpack://spr-oma/src/components/useradmin/UserEditor.vue","webpack://spr-oma/./src/components/useradmin/UserEditor.vue?9828","webpack://spr-oma/./src/components/useradmin/UserEditor.vue","webpack://spr-oma/./src/components/useradmin/DistrictList.vue?4a7c","webpack://spr-oma/src/components/useradmin/DistrictList.vue","webpack://spr-oma/./src/components/useradmin/DistrictList.vue?575a","webpack://spr-oma/./src/components/useradmin/DistrictList.vue","webpack://spr-oma/./src/components/useradmin/DeleteProfileList.vue?1461","webpack://spr-oma/src/components/useradmin/DeleteProfileList.vue","webpack://spr-oma/./src/components/useradmin/DeleteProfileList.vue?bf6b","webpack://spr-oma/./src/components/useradmin/DeleteProfileList.vue","webpack://spr-oma/./src/components/useradmin/OrganizationAdmin.vue?6cf7","webpack://spr-oma/./src/components/useradmin/AdminHorizontalNavigation.vue?3ece","webpack://spr-oma/src/components/useradmin/AdminHorizontalNavigation.vue","webpack://spr-oma/./src/components/useradmin/AdminHorizontalNavigation.vue?b755","webpack://spr-oma/./src/components/useradmin/AdminHorizontalNavigation.vue","webpack://spr-oma/src/components/useradmin/OrganizationAdmin.vue","webpack://spr-oma/./src/components/useradmin/OrganizationAdmin.vue?9728","webpack://spr-oma/./src/components/useradmin/OrganizationAdmin.vue","webpack://spr-oma/./src/components/useradmin/NationalAdmin.vue?b0c9","webpack://spr-oma/src/components/useradmin/NationalAdmin.vue","webpack://spr-oma/./src/components/useradmin/NationalAdmin.vue?dbf2","webpack://spr-oma/./src/components/useradmin/NationalAdmin.vue","webpack://spr-oma/./src/components/useradmin/NationalEmployee.vue?39cf","webpack://spr-oma/src/components/useradmin/NationalEmployee.vue","webpack://spr-oma/./src/components/useradmin/NationalEmployee.vue?be4b","webpack://spr-oma/./src/components/useradmin/NationalEmployee.vue","webpack://spr-oma/./src/components/useradmin/DistrictAdmin.vue?1b44","webpack://spr-oma/src/components/useradmin/DistrictAdmin.vue","webpack://spr-oma/./src/components/useradmin/DistrictAdmin.vue?0f9d","webpack://spr-oma/./src/components/useradmin/DistrictAdmin.vue","webpack://spr-oma/./src/components/useradmin/SectionAdmin.vue?2e61","webpack://spr-oma/./src/components/useradmin/UserListing.vue?dd0b","webpack://spr-oma/./src/components/useradmin/UserSearchResult.vue?9d9e","webpack://spr-oma/src/components/useradmin/UserSearchResult.vue","webpack://spr-oma/./src/components/useradmin/UserSearchResult.vue?6749","webpack://spr-oma/./src/components/useradmin/UserSearchResult.vue","webpack://spr-oma/src/components/useradmin/UserListing.vue","webpack://spr-oma/./src/components/useradmin/UserListing.vue?5c2e","webpack://spr-oma/./src/components/useradmin/UserListing.vue","webpack://spr-oma/./src/components/useradmin/SectionContacts.vue?47ad","webpack://spr-oma/./src/components/SPRRadioGroupKey.vue?0c35","webpack://spr-oma/src/components/SPRRadioGroupKey.vue","webpack://spr-oma/./src/components/SPRRadioGroupKey.vue?9bbd","webpack://spr-oma/./src/components/SPRRadioGroupKey.vue","webpack://spr-oma/src/components/useradmin/SectionContacts.vue","webpack://spr-oma/./src/components/useradmin/SectionContacts.vue?4280","webpack://spr-oma/./src/components/useradmin/SectionContacts.vue","webpack://spr-oma/src/components/useradmin/SectionAdmin.vue","webpack://spr-oma/./src/components/useradmin/SectionAdmin.vue?d24a","webpack://spr-oma/./src/components/useradmin/SectionAdmin.vue","webpack://spr-oma/./src/components/useradmin/FriendshipAdmin.vue?2511","webpack://spr-oma/src/components/useradmin/FriendshipAdmin.vue","webpack://spr-oma/./src/components/useradmin/FriendshipAdmin.vue?0bec","webpack://spr-oma/./src/components/useradmin/FriendshipAdmin.vue","webpack://spr-oma/./src/components/useradmin/SectionList.vue?30b1","webpack://spr-oma/src/components/useradmin/SectionList.vue","webpack://spr-oma/./src/components/useradmin/SectionList.vue?5370","webpack://spr-oma/./src/components/useradmin/SectionList.vue","webpack://spr-oma/./src/components/useradmin/SectionGroups.vue?b946","webpack://spr-oma/./src/components/useradmin/GroupCreate.vue?ef3d","webpack://spr-oma/./src/components/common/Pill/PillBox.vue?a1ae","webpack://spr-oma/./src/components/common/Pill/CheckPill.vue?114f","webpack://spr-oma/src/components/common/Pill/CheckPill.vue","webpack://spr-oma/./src/components/common/Pill/CheckPill.vue?a149","webpack://spr-oma/./src/components/common/Pill/CheckPill.vue","webpack://spr-oma/src/components/common/Pill/PillBox.vue","webpack://spr-oma/./src/components/common/Pill/PillBox.vue?eace","webpack://spr-oma/./src/components/common/Pill/PillBox.vue","webpack://spr-oma/./src/mixins/validator-hasOptionalGroupOrganizer.js","webpack://spr-oma/src/components/useradmin/GroupCreate.vue","webpack://spr-oma/./src/components/useradmin/GroupCreate.vue?8661","webpack://spr-oma/./src/components/useradmin/GroupCreate.vue","webpack://spr-oma/src/components/useradmin/SectionGroups.vue","webpack://spr-oma/./src/components/useradmin/SectionGroups.vue?fd4f","webpack://spr-oma/./src/components/useradmin/SectionGroups.vue","webpack://spr-oma/./src/components/useradmin/DistrictGroups.vue?19d3","webpack://spr-oma/src/components/useradmin/DistrictGroups.vue","webpack://spr-oma/./src/components/useradmin/DistrictGroups.vue?4967","webpack://spr-oma/./src/components/useradmin/DistrictGroups.vue","webpack://spr-oma/./src/components/useradmin/GroupDetail.vue?a89e","webpack://spr-oma/./src/components/useradmin/GroupStatus.vue?dd00","webpack://spr-oma/src/components/useradmin/GroupStatus.vue","webpack://spr-oma/./src/components/useradmin/GroupStatus.vue?a939","webpack://spr-oma/./src/components/useradmin/GroupStatus.vue","webpack://spr-oma/./src/components/useradmin/GroupEdit.vue?5eec","webpack://spr-oma/src/components/useradmin/GroupEdit.vue","webpack://spr-oma/./src/components/useradmin/GroupEdit.vue?590a","webpack://spr-oma/./src/components/useradmin/GroupEdit.vue","webpack://spr-oma/./src/components/useradmin/GroupMembers.vue?2ad2","webpack://spr-oma/./src/components/groups/GroupMemberAdd.vue?1b32","webpack://spr-oma/./src/components/groups/VolunteersSearchResultList.vue?42fd","webpack://spr-oma/./src/components/groups/VolunteersSearchResultView.vue?624e","webpack://spr-oma/src/components/groups/VolunteersSearchResultView.vue","webpack://spr-oma/./src/components/groups/VolunteersSearchResultView.vue?f6c4","webpack://spr-oma/./src/components/groups/VolunteersSearchResultView.vue","webpack://spr-oma/src/components/groups/VolunteersSearchResultList.vue","webpack://spr-oma/./src/components/groups/VolunteersSearchResultList.vue?464e","webpack://spr-oma/./src/components/groups/VolunteersSearchResultList.vue","webpack://spr-oma/src/components/groups/GroupMemberAdd.vue","webpack://spr-oma/./src/components/groups/GroupMemberAdd.vue?80d9","webpack://spr-oma/./src/components/groups/GroupMemberAdd.vue","webpack://spr-oma/./src/components/groups/GroupMemberPending.vue?a86d","webpack://spr-oma/./src/components/groups/PendingMemberView.vue?d102","webpack://spr-oma/src/components/groups/PendingMemberView.vue","webpack://spr-oma/./src/components/groups/PendingMemberView.vue?10df","webpack://spr-oma/./src/components/groups/PendingMemberView.vue","webpack://spr-oma/src/components/groups/GroupMemberPending.vue","webpack://spr-oma/./src/components/groups/GroupMemberPending.vue?dc73","webpack://spr-oma/./src/components/groups/GroupMemberPending.vue","webpack://spr-oma/./src/components/useradmin/GroupExistingMember.vue?b67a","webpack://spr-oma/src/components/useradmin/GroupExistingMember.vue","webpack://spr-oma/./src/components/useradmin/GroupExistingMember.vue?1a3c","webpack://spr-oma/./src/components/useradmin/GroupExistingMember.vue","webpack://spr-oma/src/components/useradmin/GroupMembers.vue","webpack://spr-oma/./src/components/useradmin/GroupMembers.vue?cb73","webpack://spr-oma/./src/components/useradmin/GroupMembers.vue","webpack://spr-oma/src/components/useradmin/GroupDetail.vue","webpack://spr-oma/./src/components/useradmin/GroupDetail.vue?64b1","webpack://spr-oma/./src/components/useradmin/GroupDetail.vue","webpack://spr-oma/./src/components/useradmin/ErrorAdmin.vue?e32b","webpack://spr-oma/src/components/useradmin/ErrorAdmin.vue","webpack://spr-oma/./src/components/useradmin/ErrorAdmin.vue?e8a0","webpack://spr-oma/./src/components/useradmin/ErrorAdmin.vue","webpack://spr-oma/./src/components/useradmin/FriendshipManagementList.vue?bfae","webpack://spr-oma/src/components/useradmin/FriendshipManagementList.vue","webpack://spr-oma/./src/components/useradmin/FriendshipManagementList.vue?9dbd","webpack://spr-oma/./src/components/useradmin/FriendshipManagementList.vue","webpack://spr-oma/./src/components/useradmin/GroupMasterList.vue?48b0","webpack://spr-oma/src/components/useradmin/GroupMasterList.vue","webpack://spr-oma/./src/components/useradmin/GroupMasterList.vue?fbcf","webpack://spr-oma/./src/components/useradmin/GroupMasterList.vue","webpack://spr-oma/./src/components/useradmin/ProductsAdmin.vue?ee0c","webpack://spr-oma/./src/components/SPRSimpleNumberInput.vue?db6b","webpack://spr-oma/src/components/SPRSimpleNumberInput.vue","webpack://spr-oma/./src/components/SPRSimpleNumberInput.vue?c0ef","webpack://spr-oma/./src/components/SPRSimpleNumberInput.vue","webpack://spr-oma/./src/components/useradmin/ProductView.vue?0eb8","webpack://spr-oma/src/components/useradmin/ProductView.vue","webpack://spr-oma/./src/components/useradmin/ProductView.vue?d586","webpack://spr-oma/./src/components/useradmin/ProductView.vue","webpack://spr-oma/src/components/useradmin/ProductsAdmin.vue","webpack://spr-oma/./src/components/useradmin/ProductsAdmin.vue?fff3","webpack://spr-oma/./src/components/useradmin/ProductsAdmin.vue","webpack://spr-oma/./src/components/useradmin/ExternalForms.vue?94b6","webpack://spr-oma/./src/components/useradmin/ExternalFormRow.vue?ba1b","webpack://spr-oma/src/components/useradmin/ExternalFormRow.vue","webpack://spr-oma/./src/components/useradmin/ExternalFormRow.vue?6804","webpack://spr-oma/./src/components/useradmin/ExternalFormRow.vue","webpack://spr-oma/src/components/useradmin/ExternalForms.vue","webpack://spr-oma/./src/components/useradmin/ExternalForms.vue?8343","webpack://spr-oma/./src/components/useradmin/ExternalForms.vue","webpack://spr-oma/./src/components/useradmin/Settings.vue?0b6a","webpack://spr-oma/./src/components/useradmin/SettingRow.vue?27b9","webpack://spr-oma/src/components/useradmin/SettingRow.vue","webpack://spr-oma/./src/components/useradmin/SettingRow.vue?d00e","webpack://spr-oma/./src/components/useradmin/SettingRow.vue","webpack://spr-oma/src/components/useradmin/Settings.vue","webpack://spr-oma/./src/components/useradmin/Settings.vue?1f11","webpack://spr-oma/./src/components/useradmin/Settings.vue","webpack://spr-oma/./src/components/useradmin/SettingsAdmin.vue?8232","webpack://spr-oma/./src/components/common/Images/EditImages.vue?eb55","webpack://spr-oma/./src/components/common/DropZone/DropZone.vue?5fd5","webpack://spr-oma/src/components/common/DropZone/DropZone.vue","webpack://spr-oma/./src/components/common/DropZone/DropZone.vue?5eb0","webpack://spr-oma/./src/components/common/DropZone/DropZone.vue","webpack://spr-oma/src/components/common/Images/EditImages.vue","webpack://spr-oma/./src/components/common/Images/EditImages.vue?0ed3","webpack://spr-oma/./src/components/common/Images/EditImages.vue","webpack://spr-oma/src/components/useradmin/SettingsAdmin.vue","webpack://spr-oma/./src/components/useradmin/SettingsAdmin.vue?9ff2","webpack://spr-oma/./src/components/useradmin/SettingsAdmin.vue","webpack://spr-oma/./src/components/useradmin/CurrentSectionRoles.vue?031f","webpack://spr-oma/src/components/useradmin/CurrentSectionRoles.vue","webpack://spr-oma/./src/components/useradmin/CurrentSectionRoles.vue?3a1a","webpack://spr-oma/./src/components/useradmin/CurrentSectionRoles.vue","webpack://spr-oma/./src/components/useradmin/PoolsAdmin.vue?a7d4","webpack://spr-oma/src/components/useradmin/PoolsAdmin.vue","webpack://spr-oma/./src/components/useradmin/PoolsAdmin.vue?795f","webpack://spr-oma/./src/components/useradmin/PoolsAdmin.vue","webpack://spr-oma/src/components/useradmin/Admin.vue","webpack://spr-oma/./src/components/useradmin/Admin.vue?b182","webpack://spr-oma/./src/components/useradmin/Admin.vue","webpack://spr-oma/./src/components/useradmin/FriendshipGroups.vue?7bf2","webpack://spr-oma/src/components/useradmin/FriendshipGroups.vue","webpack://spr-oma/./src/components/useradmin/FriendshipGroups.vue?fbe1","webpack://spr-oma/./src/components/useradmin/FriendshipGroups.vue","webpack://spr-oma/./src/components/groups/AddVolunteer.vue?edf5","webpack://spr-oma/src/components/groups/AddVolunteer.vue","webpack://spr-oma/./src/components/groups/AddVolunteer.vue?3cb7","webpack://spr-oma/./src/components/groups/AddVolunteer.vue","webpack://spr-oma/./src/components/groups/Group.vue?a7a4","webpack://spr-oma/./src/components/groups/VolunteerList.vue?ac0e","webpack://spr-oma/./src/components/groups/VolunteersView.vue?fb53","webpack://spr-oma/./src/components/modals/ModalFooter.vue?aa45","webpack://spr-oma/src/components/modals/ModalFooter.vue","webpack://spr-oma/./src/components/modals/ModalFooter.vue?58fb","webpack://spr-oma/./src/components/modals/ModalFooter.vue","webpack://spr-oma/src/components/groups/VolunteersView.vue","webpack://spr-oma/./src/components/groups/VolunteersView.vue?74cc","webpack://spr-oma/./src/components/groups/VolunteersView.vue","webpack://spr-oma/src/components/groups/VolunteerList.vue","webpack://spr-oma/./src/components/groups/VolunteerList.vue?815f","webpack://spr-oma/./src/components/groups/VolunteerList.vue","webpack://spr-oma/src/components/groups/Group.vue","webpack://spr-oma/./src/components/groups/Group.vue?b2a7","webpack://spr-oma/./src/components/groups/Group.vue","webpack://spr-oma/./src/components/groups/GroupAll.vue?d7a9","webpack://spr-oma/./src/components/groups/GroupSearchCriteria.vue?4ff4","webpack://spr-oma/src/components/groups/GroupSearchCriteria.vue","webpack://spr-oma/./src/components/groups/GroupSearchCriteria.vue?f042","webpack://spr-oma/./src/components/groups/GroupSearchCriteria.vue","webpack://spr-oma/src/components/groups/GroupAll.vue","webpack://spr-oma/./src/components/groups/GroupAll.vue?249c","webpack://spr-oma/./src/components/groups/GroupAll.vue","webpack://spr-oma/./src/components/groups/CreateGroup.vue?7674","webpack://spr-oma/src/components/groups/CreateGroup.vue","webpack://spr-oma/./src/components/groups/CreateGroup.vue?9561","webpack://spr-oma/./src/components/groups/CreateGroup.vue","webpack://spr-oma/./src/components/groups/Notes.vue?4d51","webpack://spr-oma/src/components/groups/Notes.vue","webpack://spr-oma/./src/components/groups/Notes.vue?6ccb","webpack://spr-oma/./src/components/groups/Notes.vue","webpack://spr-oma/./src/components/groups/AcceptInvitation.vue?7752","webpack://spr-oma/src/components/groups/AcceptInvitation.vue","webpack://spr-oma/./src/components/groups/AcceptInvitation.vue?484d","webpack://spr-oma/./src/components/groups/AcceptInvitation.vue","webpack://spr-oma/./src/components/events/Event.vue?1951","webpack://spr-oma/./src/components/SPRTimepicker.vue?c421","webpack://spr-oma/./src/mixins/validator-colontime.js","webpack://spr-oma/src/components/SPRTimepicker.vue","webpack://spr-oma/./src/components/SPRTimepicker.vue?fcf2","webpack://spr-oma/./src/components/SPRTimepicker.vue","webpack://spr-oma/./src/components/events/EditEventRoles.vue?a2ca","webpack://spr-oma/src/components/events/EditEventRoles.vue","webpack://spr-oma/./src/components/events/EditEventRoles.vue?333e","webpack://spr-oma/./src/components/events/EditEventRoles.vue","webpack://spr-oma/./src/components/events/ViewEventRoles.vue?0488","webpack://spr-oma/src/components/events/ViewEventRoles.vue","webpack://spr-oma/./src/components/events/ViewEventRoles.vue?676c","webpack://spr-oma/./src/components/events/ViewEventRoles.vue","webpack://spr-oma/./src/components/events/EventParticipantsGrid.vue?6655","webpack://spr-oma/src/components/events/EventParticipantsGrid.vue","webpack://spr-oma/./src/components/events/EventParticipantsGrid.vue?75c9","webpack://spr-oma/./src/components/events/EventParticipantsGrid.vue","webpack://spr-oma/./src/components/events/EventJoin.vue?53e3","webpack://spr-oma/./src/components/SPRSimpleCheckboxList2.vue?e600","webpack://spr-oma/src/components/SPRSimpleCheckboxList2.vue","webpack://spr-oma/./src/components/SPRSimpleCheckboxList2.vue?ffc4","webpack://spr-oma/./src/components/SPRSimpleCheckboxList2.vue","webpack://spr-oma/src/components/events/EventJoin.vue","webpack://spr-oma/./src/components/events/EventJoin.vue?7aea","webpack://spr-oma/./src/components/events/EventJoin.vue","webpack://spr-oma/./src/components/events/EventJoinPublic.vue?401d","webpack://spr-oma/src/components/events/EventJoinPublic.vue","webpack://spr-oma/./src/components/events/EventJoinPublic.vue?4664","webpack://spr-oma/./src/components/events/EventJoinPublic.vue","webpack://spr-oma/./src/components/events/EventAdmins.vue?a202","webpack://spr-oma/src/components/events/EventAdmins.vue","webpack://spr-oma/./src/components/events/EventAdmins.vue?6f67","webpack://spr-oma/./src/components/events/EventAdmins.vue","webpack://spr-oma/./src/components/SPREventOrganizersDropdown.vue?fcac","webpack://spr-oma/src/components/SPREventOrganizersDropdown.vue","webpack://spr-oma/./src/components/SPREventOrganizersDropdown.vue?9a4a","webpack://spr-oma/./src/components/SPREventOrganizersDropdown.vue","webpack://spr-oma/./src/components/events/ShareThis.vue?5fa3","webpack://spr-oma/src/components/events/ShareThis.vue","webpack://spr-oma/./src/components/events/ShareThis.vue?3fbe","webpack://spr-oma/./src/components/events/ShareThis.vue","webpack://spr-oma/./src/mixins/validator-hasEventOrganizer.js","webpack://spr-oma/./src/components/common/Collapsible/SprEventCollapsible.vue?cb9c","webpack://spr-oma/src/components/common/Collapsible/SprEventCollapsible.vue","webpack://spr-oma/./src/components/common/Collapsible/SprEventCollapsible.vue?f603","webpack://spr-oma/./src/components/common/Collapsible/SprEventCollapsible.vue","webpack://spr-oma/src/components/events/Event.vue","webpack://spr-oma/./src/components/events/Event.vue?4dcd","webpack://spr-oma/./src/components/events/Event.vue","webpack://spr-oma/./src/components/events/EventCreate.vue?e93a","webpack://spr-oma/./src/components/events/EventTemplateSelect.vue?325f","webpack://spr-oma/src/components/events/EventTemplateSelect.vue","webpack://spr-oma/./src/components/events/EventTemplateSelect.vue?3d2f","webpack://spr-oma/./src/components/events/EventTemplateSelect.vue","webpack://spr-oma/src/components/events/EventCreate.vue","webpack://spr-oma/./src/components/events/EventCreate.vue?f8c0","webpack://spr-oma/./src/components/events/EventCreate.vue","webpack://spr-oma/./src/components/events/EventList.vue?9616","webpack://spr-oma/./src/components/events/EventSearchCriteria.vue?0302","webpack://spr-oma/./src/types/typevalidators.ts","webpack://spr-oma/./src/components/common/Information/SprInfoTip.vue?dccf","webpack://spr-oma/./src/components/common/Information/SprInfo.vue?de8d","webpack://spr-oma/src/components/common/Information/SprInfo.vue","webpack://spr-oma/./src/components/common/Information/SprInfo.vue?dbaf","webpack://spr-oma/./src/components/common/Information/SprInfo.vue","webpack://spr-oma/src/components/common/Information/SprInfoTip.vue","webpack://spr-oma/./src/components/common/Information/SprInfoTip.vue?1dbf","webpack://spr-oma/./src/components/common/Information/SprInfoTip.vue","webpack://spr-oma/src/components/events/EventSearchCriteria.vue","webpack://spr-oma/./src/components/events/EventSearchCriteria.vue?69ce","webpack://spr-oma/./src/components/events/EventSearchCriteria.vue","webpack://spr-oma/src/components/events/EventList.vue","webpack://spr-oma/./src/components/events/EventList.vue?3acf","webpack://spr-oma/./src/components/events/EventList.vue","webpack://spr-oma/./src/components/events/EventLeavePage.vue?e00c","webpack://spr-oma/src/components/events/EventLeavePage.vue","webpack://spr-oma/./src/components/events/EventLeavePage.vue?94ac","webpack://spr-oma/./src/components/events/EventLeavePage.vue","webpack://spr-oma/./src/components/events/MyOrganisedEvents.vue?a039","webpack://spr-oma/src/components/events/MyOrganisedEvents.vue","webpack://spr-oma/./src/components/events/MyOrganisedEvents.vue?f149","webpack://spr-oma/./src/components/events/MyOrganisedEvents.vue","webpack://spr-oma/./src/components/events/MyParticipatedEvents.vue?2133","webpack://spr-oma/src/components/events/MyParticipatedEvents.vue","webpack://spr-oma/./src/components/events/MyParticipatedEvents.vue?0fe7","webpack://spr-oma/./src/components/events/MyParticipatedEvents.vue","webpack://spr-oma/./src/components/messages/Messages.vue?268e","webpack://spr-oma/src/components/messages/Messages.vue","webpack://spr-oma/./src/components/messages/Messages.vue?e56a","webpack://spr-oma/./src/components/messages/Messages.vue","webpack://spr-oma/./src/components/messages/MessageDetail.vue?4b25","webpack://spr-oma/./src/types/constants.ts","webpack://spr-oma/src/components/messages/MessageDetail.vue","webpack://spr-oma/./src/components/messages/MessageDetail.vue?16fa","webpack://spr-oma/./src/components/messages/MessageDetail.vue","webpack://spr-oma/./src/components/profile-editor/ForgotPassword.vue?5934","webpack://spr-oma/src/components/profile-editor/ForgotPassword.vue","webpack://spr-oma/./src/components/profile-editor/ForgotPassword.vue?ea88","webpack://spr-oma/./src/components/profile-editor/ForgotPassword.vue","webpack://spr-oma/./src/components/profile-editor/ResetPassword.vue?9671","webpack://spr-oma/src/components/profile-editor/ResetPassword.vue","webpack://spr-oma/./src/components/profile-editor/ResetPassword.vue?b4a0","webpack://spr-oma/./src/components/profile-editor/ResetPassword.vue","webpack://spr-oma/./src/components/profile-editor/ResetExpiredPassword.vue?6757","webpack://spr-oma/src/components/profile-editor/ResetExpiredPassword.vue","webpack://spr-oma/./src/components/profile-editor/ResetExpiredPassword.vue?13db","webpack://spr-oma/./src/components/profile-editor/ResetExpiredPassword.vue","webpack://spr-oma/./src/components/sections/Section.vue?a5c9","webpack://spr-oma/./src/components/sections/Groups.vue?c897","webpack://spr-oma/src/components/sections/Groups.vue","webpack://spr-oma/./src/components/sections/Groups.vue?e90a","webpack://spr-oma/./src/components/sections/Groups.vue","webpack://spr-oma/src/components/sections/Section.vue","webpack://spr-oma/./src/components/sections/Section.vue?9138","webpack://spr-oma/./src/components/sections/Section.vue","webpack://spr-oma/./src/components/DeletionThankYou.vue?5187","webpack://spr-oma/src/components/DeletionThankYou.vue","webpack://spr-oma/./src/components/DeletionThankYou.vue?da81","webpack://spr-oma/./src/components/DeletionThankYou.vue","webpack://spr-oma/./src/components/NotFound.vue?fbc8","webpack://spr-oma/src/components/NotFound.vue","webpack://spr-oma/./src/components/NotFound.vue?2885","webpack://spr-oma/./src/components/NotFound.vue","webpack://spr-oma/./src/mixins/common.js","webpack://spr-oma/./src/router/index.js","webpack://spr-oma/./src/mixins/validator-hasCheckboxSelected.ts","webpack://spr-oma/./src/main.ts","webpack://spr-oma/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://spr-oma/./src/store/index.js","webpack://spr-oma/./src/types/index.ts","webpack://spr-oma/webpack/bootstrap","webpack://spr-oma/webpack/runtime/chunk loaded","webpack://spr-oma/webpack/runtime/compat get default export","webpack://spr-oma/webpack/runtime/define property getters","webpack://spr-oma/webpack/runtime/global","webpack://spr-oma/webpack/runtime/hasOwnProperty shorthand","webpack://spr-oma/webpack/runtime/make namespace object","webpack://spr-oma/webpack/runtime/node module decorator","webpack://spr-oma/webpack/runtime/publicPath","webpack://spr-oma/webpack/runtime/jsonp chunk loading","webpack://spr-oma/webpack/startup"],"sourcesContent":["import Vue from 'vue'\r\nimport Store from '../store/index'\r\n\r\nfunction redirectToLogin () {\r\n  if (this && !this.$route.path.toLowerCase().startsWith('/login') && !this.$route.path.toLowerCase().startsWith('/adsignin')) {\r\n    window.location.href = '/login?from=' + this.$route.fullPath\r\n  }\r\n}\r\n\r\n// fuck ie 11 to death\r\nVue.http.interceptors.push((request, next) => {\r\n  var ua = window.navigator.userAgent\r\n  var msie = ua.indexOf('MSIE ') > -1\r\n  if (msie) {\r\n    request.url += (request.url.indexOf('?') > 0 ? '&' : '?') + `cb=${new Date().getTime()}`\r\n  }\r\n\r\n  next()\r\n})\r\n\r\n// this adds the auth token, if it exists, to every http method\r\nVue.http.interceptors.push(function (request, next) {\r\n  // modify headers\r\n  const token = sessionStorage.getItem('authtoken')\r\n  const isException = (_.findIndex(Store.state.token.exceptions, function (item) {\r\n    return item.test(request.url)\r\n  }) > -1)\r\n\r\n  const endpointCalled = _.find(Store.state.apiEndpoints, (endpoint) => {\r\n    if (!Array.isArray(endpoint)) {\r\n      return false\r\n    }\r\n    return request.url.indexOf(endpoint[0]) > -1\r\n  })\r\n\r\n  var noTokenNeeded = isException && endpointCalled && endpointCalled[2] === false\r\n  if (noTokenNeeded) {\r\n    next()\r\n  }\r\n\r\n  if (token && !isException) {\r\n    var short = sessionStorage.getItem('shorttoken')\r\n    var lifetime = short ? JSON.parse(atob(short.split('.')[1])).exp - (Date.now() / 1000) : -1 // lifetime left in seconds\r\n    if (short && lifetime > 100) {\r\n      // all good, short token is there with lifetime left.\r\n      request.headers.set('Authorization', 'bearer ' + short)\r\n      // might be a refresh of the page, which clears vue state but not session cookie\r\n      if (!Store.state.sessionJwtToken) {\r\n        Store.dispatch('setSessionJwtToken', short)\r\n      }\r\n      next()\r\n    } else {\r\n      if (token && !Store.state.token.isRefreshing) {\r\n        Store.commit('setTokenRefreshing', true)\r\n\r\n        Vue.http.get(Store.state.token.refresh + '?authtoken=' + token).then(s => {\r\n          sessionStorage.setItem('shorttoken', s.body)\r\n          request.headers.set('Authorization', 'bearer ' + s.body)\r\n          Store.dispatch('setSessionJwtToken', s.body)\r\n          Store.commit('setTokenRefreshing', false)\r\n          next()\r\n        }, r => { \r\n          redirectToLogin()\r\n          console.log('rejected call to token refresh') \r\n        })\r\n      }\r\n    }\r\n  } else {\r\n    if (request.url.toLowerCase().indexOf(Store.state.token.refresh.toLowerCase()) > -1) {\r\n      if (!token) {\r\n        // user is not logged in, but tries to refresh. terminate the request.\r\n        redirectToLogin()\r\n        return Promise.reject(new Error('logged out'))\r\n      } else {\r\n        request.headers.set('Authorization', 'bearer ' + token)\r\n      }\r\n    }\r\n    next()\r\n  }\r\n})\r\n\r\n// Inject response handling here\r\nVue.http.interceptors.push(function (request, next) {\r\n  next(response => {\r\n    if (response.status === 403 || response.status === 401) {\r\n      if (!request.__retry) {\r\n        request.__retry = true\r\n        var token = sessionStorage.getItem('authtoken')\r\n        if (token === null) {\r\n          redirectToLogin()\r\n          return Promise.reject(response)\r\n        }\r\n        Store.commit('setTokenRefreshing', true)\r\n        return Vue.http.get(Store.state.token.refresh + '?authtoken=' + token, {\r\n          headers: { Authorization: 'bearer ' + token }\r\n        }).then(s => {\r\n          sessionStorage.setItem('shorttoken', s.body)\r\n          request.headers.set('Authorization', 'bearer ' + s.body)\r\n          Store.dispatch('setSessionJwtToken', s.body)\r\n          Store.commit('setTokenRefreshing', false)\r\n\r\n          return Vue.http(request).then(x => { return x })\r\n        }).catch((err) => {\r\n          sessionStorage.removeItem('shorttoken')\r\n          sessionStorage.removeItem('authtoken')\r\n          Store.commit('clearSessionJwtToken')\r\n          // In case user has sessionstorage set, but server has dropped session from cache.\r\n          redirectToLogin()\r\n          return Promise.reject(err)\r\n        })\r\n      }\r\n    }\r\n  })\r\n})\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.showSite)?_c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row\"},[_c('sprheader',{staticClass:\"header\"})],1),_c('div',{staticClass:\"row\"},[_c('router-view',{key:_vm.$route.path})],1),_c('div',{staticClass:\"row\"},[_c('sprfooter',{staticClass:\"footer\"})],1)]):_c('div',{staticClass:\"loading-container\"},[_vm._m(0),(_vm.loadfailed)?_c('div',{staticClass:\"loadfailed\"},[_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(\"Lataus epäonnistui\")],1)]):_vm._e()])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"loading-icon\"},[_c('h1',[_vm._v(\"SPR\")])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12 spr-header spr-header-grid spr-header-layout\"},[_c('div',{staticClass:\"logo-area\"},[_c('router-link',{attrs:{\"to\":\"/front\"}},[_c('img',{staticClass:\"spr-logo\",attrs:{\"src\":require(\"../assets/img/redcross_logo_fi.svg\")}})]),_c('div',[_c('SwitchLanguage')],1)],1),_c('div',{staticClass:\"nav-area\"},[(_vm.adminTranslateUrl)?_c('router-link',{staticClass:\"header-link-basic\",attrs:{\"to\":_vm.adminTranslateUrl,\"tabindex\":\"0\"}},[_vm._v(\" \"+_vm._s(_vm.$t('common.translate'))+\" \")]):_vm._e(),(_vm.ossiUrl)?_c('a',{staticClass:\"header-link-basic\",attrs:{\"href\":_vm.ossiUrl,\"target\":\"_blank\",\"tabindex\":\"0\"}},[_vm._v(\" \"+_vm._s(_vm.$t('common.headerOSSI')))]):_vm._e(),(_vm.hupsisUrl)?_c('a',{staticClass:\"header-link-basic\",attrs:{\"href\":_vm.hupsisUrl,\"target\":\"_blank\",\"tabindex\":\"0\"}},[_vm._v(_vm._s(_vm.$t('common.headerHUPSIS')))]):_vm._e(),(_vm.friendUrl)?_c('router-link',{staticClass:\"header-link-basic\",attrs:{\"to\":_vm.friendUrl,\"tabindex\":\"0\"}},[_vm._v(\" \"+_vm._s(_vm.$t('common.headerFriends'))+\" \")]):_vm._e(),(_vm.adminUrl)?_c('router-link',{staticClass:\"header-link-basic\",attrs:{\"to\":_vm.adminUrl,\"tabindex\":\"0\"}},[_vm._v(\" \"+_vm._s(_vm.$t('common.headerAdmin'))+\" \")]):_vm._e()],1),_c('div',{staticClass:\"login-area\"},[(_vm.hasProfile)?_c('div',[_c('sprbutton',{staticClass:\"spr-shadow margintop20\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('common.headerLogin'),\"click-event\":\"toLogin\"},on:{\"toLogin\":_vm.toLogin}})],1):_vm._e(),_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hasProfile),expression:\"!hasProfile\"}],staticClass:\"header-link\",attrs:{\"href\":\"javascript:void(0);\",\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.logout('/login')}}},[_vm._v(\" \"+_vm._s(_vm.$t('common.headerLogout'))+\" \")])]),_c('div',{staticClass:\"burger-area\"},[_c('font-awesome-icon',{staticClass:\"spr-burger\",attrs:{\"icon\":\"bars\",\"aria-hidden\":\"true\"},on:{\"click\":_vm.toggleBurger}})],1),(_vm.burgerExpanded)?_c('div',{staticClass:\"burger-menu d-block d-lg-none burger-expanded\"},[(_vm.hasProfile)?_c('div',[_c('sprbutton',{staticClass:\"spr-shadow margintop20\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('common.headerLogin'),\"click-event\":\"toLogin\"},on:{\"toLogin\":_vm.toLogin}})],1):_c('a',{staticClass:\"d-inline-block lnk header-link m-3\",attrs:{\"href\":\"javascript:void(0);\",\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.logout('/login')}}},[_vm._v(_vm._s(_vm.$t('common.headerLogout')))]),(_vm.adminTranslateUrl)?_c('router-link',{staticClass:\"d-inline-block lnk header-link-basic m-3\",attrs:{\"to\":_vm.adminTranslateUrl,\"tabindex\":\"0\"}},[_vm._v(\" \"+_vm._s(_vm.$t('common.translate'))+\" \")]):_vm._e(),(_vm.ossiUrl)?_c('a',{staticClass:\"d-inline-block lnk header-link-basic m-3\",attrs:{\"href\":_vm.ossiUrl,\"target\":\"_blank\",\"tabindex\":\"0\"}},[_vm._v(_vm._s(_vm.$t('common.headerOSSI')))]):_vm._e(),(_vm.hupsisUrl)?_c('a',{staticClass:\"d-inline-block lnk header-link-basic m-3\",attrs:{\"href\":_vm.hupsisUrl,\"target\":\"_blank\",\"tabindex\":\"0\"}},[_vm._v(_vm._s(_vm.$t('common.headerHUPSIS')))]):_vm._e(),(_vm.friendUrl)?_c('router-link',{staticClass:\"d-inline-block lnk header-link-basic m-3\",attrs:{\"to\":_vm.friendUrl,\"tabindex\":\"0\"}},[_vm._v(\" \"+_vm._s(_vm.$t('common.headerFriends'))+\" \")]):_vm._e(),(_vm.adminUrl)?_c('router-link',{staticClass:\"d-inline-block lnk header-link-basic m-3\",attrs:{\"to\":_vm.adminUrl,\"tabindex\":\"0\"}},[_vm._v(\" \"+_vm._s(_vm.$t('common.headerAdmin'))+\" \")]):_vm._e()],1):_vm._e()]),(_vm.passwordExpires)?_c('div',{staticClass:\"banner\"},[_c('div',{staticClass:\"option warning-banner\"},[_c('div',{staticClass:\"option-value warning-option\"},[_c('tickcrosswarning',{attrs:{\"value\":_vm.option1Value}})],1),_c('div',{staticClass:\"option-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('common.passwordAboutToExpireBanner'))+\" \")])])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"switch-language\"},[_c('span',{class:{ 'selected' : _vm.fiSelected },on:{\"click\":function($event){return _vm.changeLanguage('fi')}}},[_vm._v(\"fi\")]),_c('span',{class:{ 'selected' : _vm.svSelected },on:{\"click\":function($event){return _vm.changeLanguage('sv')}}},[_vm._v(\"sv\")]),_c('span',{class:{ 'selected' : _vm.enSelected },on:{\"click\":function($event){return _vm.changeLanguage('en')}}},[_vm._v(\"en\")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"switch-language\">\r\n    <span :class=\"{ 'selected' : fiSelected }\" @click=\"changeLanguage('fi')\">fi</span>\r\n    <span :class=\"{ 'selected' : svSelected }\" @click=\"changeLanguage('sv')\">sv</span>\r\n    <span :class=\"{ 'selected' : enSelected }\" @click=\"changeLanguage('en')\">en</span>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import { mapState } from 'vuex'\r\n\r\n  export default {\r\n    name: 'Switchlanguage',\r\n    data () {\r\n      return {\r\n        fiSelected: this.$store.state.language === 'fi',\r\n        svSelected: this.$store.state.language === 'sv',\r\n        enSelected: this.$store.state.language === 'en'\r\n      }\r\n    },\r\n    computed: {\r\n      ...mapState({\r\n        language: state => state.language,\r\n        options: state => state.languages\r\n      })\r\n    },\r\n    methods: {\r\n      changeLanguage: function (e) {\r\n        if (e === 'fi') {\r\n          this.fiSelected = true\r\n          this.svSelected = false\r\n          this.enSelected = false\r\n        }\r\n\r\n        if (e === 'sv') {\r\n          this.fiSelected = false\r\n          this.svSelected = true\r\n          this.enSelected = false\r\n        }\r\n\r\n        if (e === 'en') {\r\n          this.fiSelected = false\r\n          this.svSelected = false\r\n          this.enSelected = true\r\n        }\r\n\r\n        // set html root tag language to selected\r\n        window.setHtmlLang(e)\r\n        this.$store.commit('setLanguage', e)\r\n        this.$i18n.locale = e\r\n        sessionStorage.setItem('locale', e)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n  .switch-language {\r\n    display: inline-block;\r\n    margin-left: 17px;\r\n    position: relative;\r\n    z-index: 200;\r\n  }\r\n\r\n  .selected {\r\n    font-weight: bold;\r\n    color: #CC0000;\r\n  }\r\n  span {\r\n    cursor: pointer;\r\n    margin-right: 5px;\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SwitchLanguage.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SwitchLanguage.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SwitchLanguage.vue?vue&type=template&id=a5ac89b2&scoped=true\"\nimport script from \"./SwitchLanguage.vue?vue&type=script&lang=js\"\nexport * from \"./SwitchLanguage.vue?vue&type=script&lang=js\"\nimport style0 from \"./SwitchLanguage.vue?vue&type=style&index=0&id=a5ac89b2&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"a5ac89b2\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('button',{class:_vm.style,attrs:{\"type\":_vm.type,\"disabled\":_vm.disabled,\"value\":_vm.value,\"aria-label\":_vm.ariaLabel,\"title\":_vm.tooltip},on:{\"click\":function($event){return _vm.emitClickEvent($event)}}},[_c('span',[(_vm.preicon != null && _vm.preicon.length > 0)?_c('font-awesome-icon',{attrs:{\"icon\":_vm.preicon}}):_vm._e()],1),_vm._v(\" \"+_vm._s(_vm.title)+\" \"),_c('span',[(_vm.icon != null && _vm.icon.length > 0)?_c('font-awesome-icon',{attrs:{\"icon\":_vm.icon}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <button :type=\"type\" :class=\"style\" :disabled=\"disabled\" :value=\"value\" :aria-label=\"ariaLabel\" :title=\"tooltip\" @click=\"emitClickEvent($event)\">\r\n    <span><font-awesome-icon v-if=\"preicon != null && preicon.length > 0\" :icon=\"preicon\" /></span>\r\n    {{ title }}\r\n    <span><font-awesome-icon v-if=\"icon != null && icon.length > 0\" :icon=\"icon\" /></span>\r\n  </button>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue, { PropType } from 'vue'\r\n  export default Vue.extend({\r\n    name: 'SprButton',\r\n\r\n    props: {\r\n      contrast: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      clickEvent: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      tooltip: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      primary: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      size: {\r\n        type: Number,\r\n        default: 1\r\n      },\r\n      bordersize: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      ariaLabel: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      icon: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      preicon: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      value: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      type: {\r\n        type: String as PropType<string>,\r\n        default () {\r\n          return 'button'\r\n        }\r\n      },\r\n      disabled: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    computed: {\r\n      style (): string {\r\n        const baseStyle = `spr-roundbox-${this.size} ${this.bordersize ? 'border-width:' + this.bordersize + 'px' : ''} ${this.primary ? 'primary' : ''} ${this.disabled ? 'disabled' : ''}`\r\n\r\n        return this.contrast ? `spr-button-contrast ${baseStyle}` : `spr-button ${baseStyle}`\r\n      }\r\n    },\r\n    methods: {\r\n      emitClickEvent (evt): void {\r\n        if (this.clickEvent) {\r\n          this.$emit(this.clickEvent, this.value, evt)\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .spr-button-contrast {\r\n    box-sizing: border-box;\r\n    background-color: $brand-white;\r\n    border: solid 2px $brand-red;\r\n    color: $brand-grey15;\r\n    padding: 12px 42px;\r\n    text-transform: uppercase;\r\n    font-weight: bold;\r\n    transition: none;\r\n    font-family: \"Signa-Light\", Sans-Serif;\r\n    cursor: pointer;\r\n\r\n    &:hover {\r\n      color: $brand-red;\r\n      background-color:$brand-white;\r\n      border: solid 1px $brand-red;\r\n    }\r\n\r\n   .fa {\r\n     margin-left: 15px;\r\n     display: inline-block;\r\n   }\r\n\r\n    &.primary {\r\n      background-color: $brand-red;\r\n      color: $brand-white;\r\n      &:hover {\r\n        background-color: $brand-white;\r\n        color:$brand-red;\r\n      }\r\n    }\r\n\r\n    &.spr-roundbox-4 {\r\n      text-transform: none;\r\n      padding: 12px 15px;\r\n      border-radius: 23px;\r\n      border-width: 2px;\r\n    }\r\n\r\n    &.spr-roundbox-5 {\r\n      text-transform: none;\r\n      padding: 6px 12px;\r\n      border-radius: 23px;\r\n      border-width: 2px;\r\n    }\r\n    &.spr-roundbox-6 {\r\n      text-transform: none;\r\n      border-radius: 23px;\r\n      border-width: 2px;\r\n    }\r\n  }\r\n\r\n  .spr-button {\r\n    box-sizing: border-box;\r\n    background-color: $brand-white;\r\n    border: solid 2px $brand-red;\r\n    color: $brand-red;\r\n    padding: 12px 42px;\r\n    text-transform: uppercase;\r\n    font-weight: bold;\r\n    transition: none;\r\n    font-family: \"Signa-Light\", Sans-Serif;\r\n    cursor: pointer;\r\n\r\n    &:not(:disabled):hover {\r\n      color: $brand-white;\r\n      background-color:$brand-red;\r\n      border: solid 2px $brand-red;\r\n    }\r\n\r\n   .fa {\r\n     margin-left: 15px;\r\n     display: inline-block;\r\n   }\r\n\r\n    &.primary {\r\n      background-color: $brand-red;\r\n      color: $brand-white;\r\n      &:not(:disabled):hover {\r\n        background-color: $brand-white;\r\n        color:$brand-red;\r\n      }\r\n    }\r\n\r\n    &.spr-roundbox-4 {\r\n      text-transform: none;\r\n      padding: 12px 15px;\r\n      border-radius: 23px;\r\n      border-width: 2px;\r\n    }\r\n\r\n    &.spr-roundbox-5 {\r\n      text-transform: none;\r\n      padding: 6px 12px;\r\n      border-radius: 23px;\r\n      border-width: 2px;\r\n    }\r\n    &.spr-roundbox-6 {\r\n      text-transform: none;\r\n      border-radius: 23px;\r\n      border-width: 2px;\r\n    }\r\n  }\r\n\r\n  button {\r\n    &.disabled {\r\n      border-color: $brand-grey4;\r\n      color: $brand-grey4;\r\n      cursor: not-allowed;\r\n      outline: none;\r\n    }\r\n\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRButton.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRButton.vue?vue&type=template&id=364fa077&scoped=true\"\nimport script from \"./SPRButton.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRButton.vue?vue&type=style&index=0&id=364fa077&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"364fa077\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"row\">\r\n    <div class=\"col col-12 spr-header spr-header-grid spr-header-layout\">\r\n      <div class=\"logo-area\">\r\n        <router-link to=\"/front\">\r\n          <img class=\"spr-logo\" src=\"../assets/img/redcross_logo_fi.svg\">\r\n        </router-link>\r\n        <div>\r\n          <SwitchLanguage />\r\n        </div>\r\n      </div>\r\n      <!-- Navigation -->\r\n      <div class=\"nav-area\">\r\n        <router-link v-if=\"adminTranslateUrl\" :to=\"adminTranslateUrl\" class=\"header-link-basic\" tabindex=\"0\">\r\n          {{ $t('common.translate') }}\r\n        </router-link>\r\n        <a v-if=\"ossiUrl\" :href=\"ossiUrl\" target=\"_blank\" class=\"header-link-basic\" tabindex=\"0\">\r\n          {{ $t('common.headerOSSI') }}</a>\r\n        <a v-if=\"hupsisUrl\" :href=\"hupsisUrl\" target=\"_blank\" class=\"header-link-basic\" tabindex=\"0\">{{ $t('common.headerHUPSIS') }}</a>\r\n        <router-link v-if=\"friendUrl\" :to=\"friendUrl\" class=\"header-link-basic\" tabindex=\"0\">\r\n          {{ $t('common.headerFriends') }}\r\n        </router-link>\r\n        <router-link v-if=\"adminUrl\" :to=\"adminUrl\" class=\"header-link-basic\" tabindex=\"0\">\r\n          {{ $t('common.headerAdmin') }}\r\n        </router-link>\r\n      </div>\r\n      <!-- Login -->\r\n      <div class=\"login-area\">\r\n        <div v-if=\"hasProfile\">\r\n          <sprbutton type=\"primary\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('common.headerLogin')\"\r\n                     class=\"spr-shadow margintop20\"\r\n                     click-event=\"toLogin\"\r\n                     @toLogin=\"toLogin\"\r\n          />\r\n        </div>\r\n        <a v-show=\"!hasProfile\"\r\n           href=\"javascript:void(0);\"\r\n           class=\"header-link\"\r\n           tabindex=\"0\"\r\n           @click=\"logout('/login')\"\r\n        >\r\n          {{ $t('common.headerLogout') }}\r\n        </a>\r\n      </div>\r\n      <!-- Burger Menu -->\r\n      <div class=\"burger-area\">\r\n        <font-awesome-icon icon=\"bars\" class=\"spr-burger\" aria-hidden=\"true\" @click=\"toggleBurger\" />\r\n      </div>\r\n      <div v-if=\"burgerExpanded\" class=\"burger-menu d-block d-lg-none burger-expanded\">\r\n        <div v-if=\"hasProfile\">\r\n          <sprbutton type=\"primary\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('common.headerLogin')\"\r\n                     class=\"spr-shadow margintop20\"\r\n                     click-event=\"toLogin\"\r\n                     @toLogin=\"toLogin\"\r\n          />\r\n        </div>\r\n        <a v-else href=\"javascript:void(0);\" class=\"d-inline-block lnk header-link m-3\" tabindex=\"0\" @click=\"logout('/login')\">{{ $t('common.headerLogout') }}</a>\r\n        <router-link v-if=\"adminTranslateUrl\" :to=\"adminTranslateUrl\" class=\"d-inline-block lnk header-link-basic m-3\" tabindex=\"0\">\r\n          {{ $t('common.translate') }}\r\n        </router-link>\r\n        <a v-if=\"ossiUrl\" :href=\"ossiUrl\" target=\"_blank\" class=\"d-inline-block lnk header-link-basic m-3\" tabindex=\"0\">{{ $t('common.headerOSSI') }}</a>\r\n        <a v-if=\"hupsisUrl\" :href=\"hupsisUrl\" target=\"_blank\" class=\"d-inline-block lnk header-link-basic m-3\" tabindex=\"0\">{{ $t('common.headerHUPSIS') }}</a>\r\n        <router-link v-if=\"friendUrl\" :to=\"friendUrl\" class=\"d-inline-block lnk header-link-basic m-3\" tabindex=\"0\">\r\n          {{ $t('common.headerFriends') }}\r\n        </router-link>\r\n        <router-link v-if=\"adminUrl\" :to=\"adminUrl\" class=\"d-inline-block lnk header-link-basic m-3\" tabindex=\"0\">\r\n          {{ $t('common.headerAdmin') }}\r\n        </router-link>\r\n      </div>\r\n    </div>\r\n    <div v-if=\"passwordExpires\" class=\"banner\">\r\n      <div class=\"option warning-banner\">\r\n        <div class=\"option-value warning-option\">\r\n          <tickcrosswarning :value=\"option1Value\" />\r\n        </div>\r\n        <div class=\"option-label\">\r\n          {{ $t('common.passwordAboutToExpireBanner') }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import SwitchLanguage from './SwitchLanguage.vue'\r\n  import sprbutton from './SPRButton.vue'\r\n  import tickcrosswarning from '@/components/SPRTickCrossWarning.vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    burgerExpanded: boolean,\r\n    hupsisUrl: string | null,\r\n    ossiUrl: string | null\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'SprHeader',\r\n    components: { SwitchLanguage, sprbutton },\r\n    props: {\r\n      option1Value: {\r\n        type: Number,\r\n        required: false,\r\n        default: 3 // 3 - Warning\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        burgerExpanded: false,\r\n        hupsisUrl: null,\r\n        ossiUrl: null\r\n      }\r\n    },\r\n    computed: {\r\n      passwordExpires (): boolean {\r\n        // @ts-ignore cannot find mixins\r\n        return this.jwtToken?.PasswordExpiring\r\n      },\r\n      hasProfile (): any {\r\n        return !this.$store.state.profile\r\n      },\r\n      adminTranslateUrl (): string {\r\n        // @ts-ignore cannot find mixins\r\n        if (this.hasRole('Admin') || this.hasRole('FriendshipAdmin')) {\r\n          return '/cms/translate'\r\n        }\r\n        return ''\r\n      },\r\n      adminUrl: function () {\r\n        // @ts-ignore cannot find mixins\r\n        if (this.hasRole('Admin') || this.hasRole('NationalAdmin') || this.hasRole('NationalEmployee')) {\r\n          return '/admin/district'\r\n        }\r\n\r\n        // @ts-ignore cannot find mixins\r\n        if (this.hasRole('Employee') || this.hasRole('DistrictAdmin')) {\r\n          // @ts-ignore cannot find mixins\r\n          return '/admin/district/' + this.jwtToken.DistrictMembership + '/section'\r\n        }\r\n\r\n        // @ts-ignore cannot find mixins\r\n        if (this.hasRole('J1') || this.hasRole('J2')) {\r\n          // @ts-ignore cannot find mixins\r\n          return '/admin/section/' + this.jwtToken.SectionMembership + '/user'\r\n        }\r\n\r\n        // @ts-ignore cannot find mixins\r\n        if (this.hasRole('DistrictFriendshipAdmin') || this.hasRole('FriendshipTrainer')) {\r\n          return '/admin/training/1'\r\n        }\r\n\r\n        return null\r\n      },\r\n      friendUrl: function () {\r\n        // @ts-ignore cannot find mixins\r\n        if (!this.jwtToken) return null\r\n\r\n        // @ts-ignore cannot find mixins\r\n        if (this.hasRole('Admin') || this.hasRole('FriendshipAdmin') || this.hasRole('DistrictFriendshipAdmin')) {\r\n          return '/admin/friendship'\r\n        }\r\n\r\n        // everyone below must be in a group from here on\r\n        // @ts-ignore cannot find mixins\r\n        if ((!this.jwtToken.FriendshipGroups || !this.jwtToken.FriendshipGroups.length) && (!this.jwtToken.NetFriendshipGroups || !this.jwtToken.NetFriendshipGroups.length)) return null\r\n\r\n        // if they are a manager and only have membership of one group, the link goes there\r\n        // @ts-ignore cannot find mixins\r\n        if (this.hasRole('FriendshipGroupManager') && (this.jwtToken.FriendshipGroups && this.jwtToken.FriendshipGroups.split(';').length === 1) && !this.hasRole('NetFriendshipBroker')) {\r\n          // @ts-ignore cannot find mixins\r\n          return '/admin/friendship/' + this.jwtToken.FriendshipGroups.split(':')[1] + '/clients'\r\n        }\r\n\r\n        // if they are a broker and not a net friendship broker only have membership of one group, and no net friendship groups, go there\r\n        // @ts-ignore cannot find mixins\r\n        if (this.hasRole('FriendshipBroker') && !this.hasRole('NetFriendshipBroker') && (this.jwtToken.FriendshipGroups && this.jwtToken.FriendshipGroups.split(';').length === 1)) {\r\n          // @ts-ignore cannot find mixins\r\n          return '/friend/search/' + this.jwtToken.FriendshipGroups.split(':')[1] + '/customer'\r\n        }\r\n\r\n        // if they are a net broker not a friend broker, go there\r\n        // @ts-ignore cannot find mixins\r\n        if (this.hasRole('NetFriendshipBroker') && !this.hasRole('FriendshipBroker') && !(this.jwtToken.FriendshipGroups && this.jwtToken.FriendshipGroups.split(';').length > 0) && (this.jwtToken.NetFriendshipGroups && this.jwtToken.NetFriendshipGroups.split(';').length === 1)) {\r\n          // @ts-ignore cannot find mixins\r\n          return '/friend/search/' + this.jwtToken.NetFriendshipGroups.split(':')[1] + '/customer'\r\n        }\r\n\r\n        // members of multiple groups. Show the groups list page\r\n        // @ts-ignore cannot find mixins\r\n        if ((this.hasRole('FriendshipGroupManager') || this.hasRole('FriendshipBroker') || this.hasRole('NetFriendshipBroker'))) {\r\n          return '/friend/groups'\r\n        }\r\n\r\n        return null\r\n      }\r\n    },\r\n    created: function () {\r\n      // @ts-ignore cannot find mixins\r\n      this.getHupsisData()\r\n      // @ts-ignore cannot find mixins\r\n      this.getOssiData()\r\n      this.$store.subscribe((mutation, state) => {\r\n        if (mutation.type === 'setLanguage') {\r\n          // @ts-ignore cannot find mixins\r\n          this.getHupsisData()\r\n          // @ts-ignore cannot find mixins\r\n          this.getOssiData()\r\n        }\r\n      })\r\n    },\r\n    methods: {\r\n      toLogin (): void {\r\n        if (this.$route.path !== '/login') {\r\n          this.$router.push({ name: 'login' })\r\n        }\r\n      },\r\n      toggleBurger (): void {\r\n        this.$data.burgerExpanded = !this.$data.burgerExpanded\r\n      },\r\n      getHupsisData (self: Vue): void {\r\n        const hupsisBaseUrl = this.$store.state.language.toLowerCase() === 'sv' ? this.$store.state.hupsisUrl.sv : this.$store.state.language.toLowerCase() === 'fi' ? this.$store.state.hupsisUrl.fi : this.$store.state.hupsisUrl.en\r\n        // @ts-ignore cannot find mixins\r\n        if (this.jwtToken && this.jwtToken.ProfileId) {\r\n          const ivStr = this.randomIv()\r\n\r\n          var url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupgethupsislink[0].replace('{iv}', encodeURIComponent(ivStr))\r\n          this.$http.get(url).then(resp => {\r\n            // if they are not members of a first aid group, no link for them.\r\n            // @ts-ignore cannot find mixins\r\n            if (resp.body) {\r\n              // @ts-ignore cannot find mixins\r\n              this.hupsisUrl = hupsisBaseUrl + '?i=' + encodeURIComponent(ivStr) + '&u=' + encodeURIComponent(resp.body)\r\n            }\r\n          })\r\n        }\r\n      },\r\n      getOssiData (): void {\r\n        var self = this\r\n\r\n        // @ts-ignore cannot find mixins\r\n        if (this.jwtToken && this.jwtToken.ProfileId) {\r\n          const ossiBaseUrl = (this.$store.state.language.toLowerCase() === 'sv' ? this.$store.state.ossiUrl.sv : this.$store.state.ossiUrl.fi) as string\r\n          self.$data.ossiUrl = ossiBaseUrl\r\n        }\r\n      },\r\n      randomIv (): string {\r\n        var strResult = ''\r\n        var valid = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\r\n        for (var i = 0; i < 16; i++) {\r\n          var rand = Math.floor(Math.random() * valid.length)\r\n          strResult += valid[rand]\r\n        }\r\n        return btoa(strResult)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import \"../assets/scss/_variables.scss\";\r\n\r\n  $headerheight: 85px;\r\n  $separatorheight: 71px;\r\n  $logoheight: 45px;\r\n  $separatormargin: 20px;\r\n  $burgersize: 22px;\r\n\r\n  .banner {\r\n    width: 100%;\r\n  }\r\n\r\n  .warning-icon {\r\n    margin-right: 5px;\r\n    color: $brand-danger;\r\n  }\r\n  .warning-option {\r\n    margin-right: 10px;\r\n    margin-left: 10px;\r\n  }\r\n\r\n  .option-label {\r\n    margin-right: 10px;\r\n    margin-left: 10px;\r\n    font-size: 12px;\r\n    line-height: 110%;\r\n    align-self: center;\r\n\r\n    @media screen and (max-width: $media-sm) {\r\n          font-size: 10px;\r\n          line-height: 110%;\r\n    }\r\n  }\r\n\r\n  .warning-banner {\r\n    margin: auto;\r\n    margin-left: 10px;\r\n    padding: 8px 0;\r\n    display: flex;\r\n    text-align: right;\r\n    background: lemonchiffon;\r\n    justify-content: center;\r\n  }\r\n\r\n  .right-margin{\r\n    margin-right: 20px;\r\n  }\r\n  .spr-header {\r\n    background-color: $brand-white;\r\n    padding: 10px;\r\n    width: 100%;\r\n    border-bottom: solid 1px $brand-grey3;\r\n\r\n    .spr-logo {\r\n      height: $logoheight;\r\n      cursor: pointer;\r\n    }\r\n\r\n    div {\r\n      align-items: center;\r\n    }\r\n\r\n    .search-area {\r\n      justify-content: flex-end;\r\n    }\r\n\r\n    .nav-area {\r\n      justify-content: flex-end;\r\n      padding-right: 30px;\r\n    }\r\n\r\n    .login-area {\r\n      justify-content: center;\r\n    }\r\n\r\n    .burger-menu {\r\n      &.burger-expanded {\r\n        grid-column-end: 6;\r\n      }\r\n    }\r\n\r\n    .header-link {\r\n      font-family: $font-light;\r\n      font-size: 14px;\r\n      color: $brand-red;\r\n      padding: 0;\r\n\r\n      &::before {\r\n        content: ' ';\r\n        display: block;\r\n        position: absolute;\r\n        height: $separatorheight;\r\n        border-left: 1px solid $brand-grey1;\r\n        transform: translate(-30px, ((2 * $separatorheight - $headerheight) / -2));\r\n      }\r\n    }\r\n\r\n    .header-link-basic {\r\n      font-family: $font-light;\r\n      font-size: 14px;\r\n      color:$brand-black;\r\n\r\n      &:not(:first-of-type) {\r\n        margin: 0 0 0 15px;\r\n      }\r\n    }\r\n\r\n    .search-box {\r\n       border: 2px solid $brand-grey3;\r\n       width: 100%;\r\n       padding-left: 30px;\r\n       font-family: $font-light;\r\n       padding: 5px 20px;\r\n       max-width: 300px;\r\n     }\r\n\r\n     .search-toggler {\r\n       margin-left: 20px;\r\n       margin-right: 10px;\r\n     }\r\n  }\r\n\r\n  .spr-header-layout {\r\n    grid-template-rows: $headerheight;\r\n    -ms-grid-rows: $headerheight;\r\n    grid-template-columns: 120px 1fr 1fr 100px;\r\n    -ms-grid-columns: 120px 1fr 1fr 100px;\r\n\r\n    @media (min-width: $media-md) {\r\n      grid-template-rows: auto;\r\n      -ms-grid-rows: $headerheight;\r\n      grid-template-columns: 120px 1px auto 150px;\r\n      -ms-grid-columns: 120px 1px 1fr 250px;\r\n    }\r\n  }\r\n\r\n  .spr-header-layout-expanded {\r\n    grid-template-rows: $headerheight;\r\n    -ms-grid-rows: $headerheight;\r\n    grid-template-columns: 120px auto 150px 150px;\r\n    -ms-grid-columns: 120px 1fr 150px 150px;\r\n\r\n    @media (max-width: $media-sm-max) {\r\n      height: 100vh;\r\n      z-index: 10;\r\n      grid-template-rows: $headerheight auto;\r\n      -ms-grid-rows: $headerheight;\r\n      grid-template-columns: 120px auto 100px 100px;\r\n      -ms-grid-columns: 120px 1fr 100px 100px;\r\n    }\r\n  }\r\n\r\n  .spr-header-grid {\r\n    display: grid;\r\n    display: -ms-grid;\r\n\r\n    .logo-area {\r\n      display: flex;\r\n      grid-row: 1;\r\n      -ms-grid-row: 1;\r\n      grid-column: 1;\r\n      -ms-grid-column: 1;\r\n\r\n      h6 {\r\n           margin-bottom: 0;\r\n         }\r\n    }\r\n\r\n    .login-area {\r\n      display: none;\r\n    }\r\n\r\n    .search-area {\r\n      display: none;\r\n    }\r\n\r\n    .nav-area {\r\n      display: none;\r\n    }\r\n\r\n    .burger-area {\r\n      display: flex;\r\n      grid-row: 1;\r\n      -ms-grid-row: 1;\r\n      grid-column: 5;\r\n      -ms-grid-column: 5;\r\n\r\n      .spr-burger {\r\n        padding: 10px;\r\n        font-size: 54px;\r\n      }\r\n    }\r\n\r\n    .burger-menu {\r\n      grid-row: 2;\r\n      -ms-grid-row: 2;\r\n      grid-column: 1;\r\n      -ms-grid-column: 1;\r\n\r\n      .lnk {\r\n             font-size: 23px;\r\n           }\r\n    }\r\n\r\n    @media (min-width: $media-md) {\r\n      .search-area {\r\n        display: flex;\r\n        grid-row: 1;\r\n        -ms-grid-row: 1;\r\n        grid-column: 2;\r\n        -ms-grid-column: 2;\r\n      }\r\n\r\n      .nav-area {\r\n        display: flex;\r\n        grid-row: 1;\r\n        -ms-grid-row: 1;\r\n        grid-column: 3;\r\n        -ms-grid-column: 3;\r\n      }\r\n\r\n      .login-area {\r\n        display: flex;\r\n        grid-row: 1;\r\n        -ms-grid-row: 1;\r\n        grid-column: 4;\r\n        -ms-grid-column: 4;\r\n      }\r\n\r\n      .burger-area {\r\n        display: none;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Header.vue?vue&type=template&id=1eadb9d6&scoped=true\"\nimport script from \"./Header.vue?vue&type=script&lang=ts\"\nexport * from \"./Header.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Header.vue?vue&type=style&index=0&id=1eadb9d6&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1eadb9d6\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comp-footer\"},[_c('div',{staticClass:\"footer-row center-items\"},[_c('router-link',{staticClass:\"footer-item\",attrs:{\"to\":\"/front\",\"tab-index\":\"0\",\"aria-label\":\"placeholder\"}},[_c('font-awesome-icon',{attrs:{\"icon\":\"copyright\"}}),_vm._v(\" \"+_vm._s(_vm.$t('common.copyrightHolder'))+\" \"+_vm._s(new Date().getFullYear())+\" \")],1),_c('a',{staticClass:\"footer-item\",attrs:{\"href\":\"https://www.punainenristi.fi/tietosuoja\",\"target\":\"_blank\",\"tab-index\":\"0\",\"aria-label\":\"placeholder\"}},[_vm._v(_vm._s(_vm.$t('common.footerTermsOfService')))]),_c('a',{staticClass:\"footer-item\",attrs:{\"href\":\"https://www.punainenristi.fi/tietosuoja\",\"target\":\"_blank\",\"tab-index\":\"0\",\"aria-label\":\"placeholder\"}},[_vm._v(_vm._s(_vm.$t('common.footerInformationProtection')))]),_c('a',{staticClass:\"footer-item\",attrs:{\"href\":\"https://rednet.punainenristi.fi/oma\",\"tab-index\":\"0\",\"aria-label\":\"support link\"}},[_vm._v(_vm._s(_vm.$t('common.footerSupport')))])],1),_c('div',{staticClass:\"footer-row center-items\"},[_c('a',{staticClass:\"fa-stack fa-lg footer-item\",attrs:{\"href\":\"https://twitter.com/punainenristi\",\"target\":\"_blank\",\"tab-index\":\"0\",\"aria-label\":\"twitter account link\"}},[_c('font-awesome-layers',[_c('font-awesome-icon',{attrs:{\"icon\":\"circle\"}}),_c('font-awesome-icon',{staticStyle:{\"color\":\"white\"},attrs:{\"icon\":['fab', 'x-twitter'],\"transform\":\"shrink-6\"}})],1)],1),_c('a',{staticClass:\"fa-stack fa-lg footer-item\",attrs:{\"href\":\"https://www.facebook.com/punainenristi/\",\"target\":\"_blank\",\"tab-index\":\"0\",\"aria-label\":\"facebook community media link\"}},[_c('font-awesome-layers',[_c('font-awesome-icon',{attrs:{\"icon\":\"circle\"}}),_c('font-awesome-icon',{staticStyle:{\"color\":\"white\"},attrs:{\"icon\":['fab', 'facebook-f'],\"transform\":\"shrink-6\"}})],1)],1)]),_c('div',{staticClass:\"version-info\"},[_vm._v(\" \"+_vm._s(_vm.versionInfo)+\" \"+_vm._s(_vm.versionInfoSeparator)+\" \"),(_vm.omaApiVersion)?_c('a',{staticClass:\"footer-link-basic\",attrs:{\"href\":_vm.omaWebApiVersionLink,\"target\":\"_blank\",\"tabindex\":\"0\"}},[_vm._v(\" Oma Web API Version: \"+_vm._s(_vm.omaApiVersion))]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-footer\">\r\n    <div class=\"footer-row center-items\">\r\n      <router-link to=\"/front\" class=\"footer-item\" tab-index=\"0\" aria-label=\"placeholder\">\r\n        <font-awesome-icon icon=\"copyright\" />\r\n        {{ $t('common.copyrightHolder') }} {{ new Date().getFullYear() }}\r\n      </router-link>\r\n      <a href=\"https://www.punainenristi.fi/tietosuoja\" target=\"_blank\" class=\"footer-item\" tab-index=\"0\" aria-label=\"placeholder\">{{ $t('common.footerTermsOfService') }}</a>\r\n      <a href=\"https://www.punainenristi.fi/tietosuoja\" target=\"_blank\" class=\"footer-item\" tab-index=\"0\" aria-label=\"placeholder\">{{ $t('common.footerInformationProtection') }}</a>\r\n      <a href=\"https://rednet.punainenristi.fi/oma\" class=\"footer-item\" tab-index=\"0\" aria-label=\"support link\">{{ $t('common.footerSupport') }}</a>\r\n    </div>\r\n    <div class=\"footer-row center-items\">\r\n      <!-- twitter icon -->\r\n      <a href=\"https://twitter.com/punainenristi\" target=\"_blank\" class=\"fa-stack fa-lg footer-item\" tab-index=\"0\" aria-label=\"twitter account link\">\r\n        <font-awesome-layers>\r\n          <font-awesome-icon icon=\"circle\" />\r\n          <!-- Using the brand style icon -->\r\n          <font-awesome-icon :icon=\"['fab', 'x-twitter']\" transform=\"shrink-6\" style=\"color: white;\" />\r\n        </font-awesome-layers>\r\n      </a>\r\n\r\n      <!-- facebook icon -->\r\n      <a href=\"https://www.facebook.com/punainenristi/\" target=\"_blank\" class=\"fa-stack fa-lg footer-item\" tab-index=\"0\" aria-label=\"facebook community media link\">\r\n        <font-awesome-layers>\r\n          <font-awesome-icon icon=\"circle\" />\r\n          <font-awesome-icon :icon=\"['fab', 'facebook-f']\" transform=\"shrink-6\" style=\"color: white;\" />\r\n        </font-awesome-layers>\r\n      </a>\r\n    </div>\r\n    <div class=\"version-info\">\r\n      {{ versionInfo }}\r\n      {{ versionInfoSeparator }}\r\n      <a v-if=\"omaApiVersion\" :href=\"omaWebApiVersionLink\" target=\"_blank\" class=\"footer-link-basic\" tabindex=\"0\">\r\n        Oma Web API Version: {{ omaApiVersion }}</a>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import version from '../../package'\r\n\r\n  export default {\r\n    name: 'SprFooter',\r\n    data () {\r\n      return {\r\n        appVersion: version,\r\n        omaApiVersion: '0.0.0'\r\n\r\n      }\r\n    },\r\n    computed: {\r\n      omaWebApiVersionLink: function () {\r\n        const omaWebApiVersion = this.$store.state.apiBases.contentservice + this.$store.state.apiEndpoints.omaWebApiVersion[0]\r\n\r\n        return omaWebApiVersion\r\n      },\r\n      versionInfo: function () {\r\n        return this.appVersion.version\r\n      },\r\n      versionInfoSeparator: function () {\r\n        return '| '\r\n      }\r\n    },\r\n    created () {\r\n      const url = this.$store.state.apiBases.contentservice + this.$store.state.apiEndpoints.omaWebApiVersion[0]\r\n      const self = this\r\n      this.$http.get(url).then(resp => {\r\n        // if they are not members of a first aid group, no link for them.\r\n        if (resp.body) {\r\n          self.omaApiVersion = resp.body.fileVersion\r\n        }\r\n      })\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import \"../assets/scss/_variables.scss\";\r\n\r\n.comp-footer {\r\n  width: 100%;\r\n  min-height: $footer-height;\r\n  background: $brand-grey1;\r\n\r\n  .footer-row {\r\n    width: 100%;\r\n  }\r\n\r\n  .center-items {\r\n    text-align: center;\r\n  }\r\n\r\n  .footer-item {\r\n    line-height: 40px;\r\n    padding: 10px;\r\n    font-family: \"Signa-Light\", Sans-Serif;\r\n    text-decoration: none;\r\n    color: $brand-grey13;\r\n    font-weight: bold;\r\n    transition: color 0.75s;\r\n  }\r\n\r\n  .footer-item:hover {\r\n    color: $brand-black;\r\n  }\r\n\r\n  .version-info {\r\n    text-align: center;\r\n    font-size: 11px;\r\n    margin-top: 12px;\r\n  }\r\n\r\n  .footer-link-basic {\r\n      font-family: $font-light;\r\n      font-size: 11px;\r\n      color:$brand-black;\r\n\r\n      &:not(:first-of-type) {\r\n        margin: 0 0 0 15px;\r\n      }\r\n    }\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=15e717e9&scoped=true\"\nimport script from \"./Footer.vue?vue&type=script&lang=js\"\nexport * from \"./Footer.vue?vue&type=script&lang=js\"\nimport style0 from \"./Footer.vue?vue&type=style&index=0&id=15e717e9&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"15e717e9\",\n  null\n  \n)\n\nexport default component.exports","import moment from 'moment'\r\nexport default {\r\n  methods: {\r\n    loadMessages () {\r\n      var self = this\r\n      return new Promise((resolve, reject) => {\r\n        var url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.getMessagesByUserId[0]}${this.$store.state.profile.profileId}`\r\n        this.$http.get(url).then(resp => {\r\n          var messages = _.sortBy(resp.body, function (message) {\r\n            return moment(message.sent)\r\n          }).reverse()\r\n          self.$store.commit('setMessages', messages)\r\n          resolve()\r\n        })\r\n      })\r\n    },\r\n    markMessageAsRead (message) {\r\n      if (message.messageStatus !== 2) {\r\n        return this.updateMessage(message, 2)\r\n      }\r\n    },\r\n    deleteMessage (message) {\r\n      return this.updateMessage(message, 4)\r\n    },\r\n    updateMessage (message, status) {\r\n      var self = this\r\n      return new Promise((resolve, reject) => {\r\n        var url = `${self.$store.state.apiBases.messageservice + self.$store.state.apiEndpoints.updatemessagestatus[0]}`\r\n        if (message.messageType === 2) {\r\n          url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.marknotificationasread[0]}`\r\n        }\r\n        url = url.replace('{id}', message.id)\r\n        url = url.replace('{statusid}', status)\r\n        url = url.replace('{notificationid}', message.id)\r\n\r\n        self.$http.post(url).then(() => {\r\n          var messages = self.$store.state.messages\r\n          var foundMessageIndex = _.findIndex(messages, function (msg) {\r\n            return message.id === msg.id\r\n          })\r\n\r\n          if (status === 4) { // deleted\r\n            self.$delete(messages, foundMessageIndex)\r\n          } else {\r\n            if (self.$store.state.messages.length > 0) {\r\n              messages[foundMessageIndex].messageStatus = status\r\n            }\r\n          }\r\n\r\n          self.$store.commit('setMessages', messages)\r\n          resolve()\r\n        })\r\n      })\r\n    },\r\n    getMessage (id) {\r\n      if (this.$store.state.messages.length === 0) {\r\n        var self = this\r\n        this.loadMessages().then(() => {\r\n          return _.find(self.$store.state.messages, function (msg) {\r\n            return id === msg.id\r\n          })\r\n        })\r\n      } else {\r\n        return _.find(this.$store.state.messages, function (msg) {\r\n          return id === msg.id\r\n        })\r\n      }\r\n    }\r\n  }\r\n}\r\n","<template>\r\n  <div\r\n    v-if=\"showSite\"\r\n    class=\"container-fluid\"\r\n  >\r\n    <div class=\"row\">\r\n      <sprheader class=\"header\" />\r\n    </div>\r\n    <div class=\"row\">\r\n      <router-view :key=\"$route.path\" />\r\n    </div>\r\n    <div class=\"row\">\r\n      <sprfooter class=\"footer\" />\r\n    </div>\r\n  </div>\r\n  <div\r\n    v-else\r\n    class=\"loading-container\"\r\n  >\r\n    <div class=\"loading-icon\">\r\n      <h1>SPR</h1>\r\n    </div>\r\n    <div v-if=\"loadfailed\" class=\"loadfailed\">\r\n      <span><font-awesome-icon icon=\"exclamation-triangle\" />Lataus epäonnistui</span>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import sprheader from './components/Header.vue'\r\n  import sprfooter from './components/Footer.vue'\r\n  import messages from './mixins/messages.js'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n      mounted: boolean,\r\n      token: string,\r\n      failed: boolean,\r\n      refreshMessagesInterval: any\r\n    }\r\n  export default Vue.extend({\r\n    name: 'App',\r\n    components: { sprheader, sprfooter },\r\n    mixins: [messages],\r\n    props: {\r\n      loadfailed: { // param passed in if the site fails to initialize (eg back end services not running, or unable to connect.)\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        mounted: false,\r\n        token: '',\r\n        failed: false,\r\n        refreshMessagesInterval: null\r\n      }\r\n    },\r\n    computed: {\r\n      showSite: function (): boolean {\r\n        if (!this.mounted) {\r\n          // mounting has not finished, show loading screen instead\r\n          return false\r\n        }\r\n\r\n        // better not to combine absolutely everything into one mega boolean evaluation...\r\n        return this.profileLoaded && this.languageResourceLoaded\r\n      },\r\n      profileLoaded: function (): boolean {\r\n        // Profile does not need to be loaded, or is not null anymore in vuix => profile is loaded if needed\r\n        return ((this.token == null || this.token === '') || this.$store.state.profile != null)\r\n      },\r\n      languageResourceLoaded: function (): boolean {\r\n        return this.$store.state.allLanguages != null\r\n      }\r\n    },\r\n    beforeDestroy: function (): void {\r\n      // @ts-ignore\r\n      clearInterval(this.refreshMessagesInterval)\r\n    },\r\n    mounted: function (): void {\r\n      // @ts-ignore\r\n      this.token = sessionStorage.getItem('authtoken')\r\n\r\n      this.requestProfile(20, this)\r\n      this.requestSettings(20, this)\r\n      // Request languages... re-try 3 times before giving up\r\n      this.requestLanguage(3, this)\r\n\r\n      this.mounted = true\r\n\r\n      // basic application insights logging.\r\n      this.$appInsights.trackEvent('SiteLoaded', { value: 'true' })\r\n    },\r\n    methods: {\r\n      requestProfile: function (count: number, self: any): void {\r\n        if (self.token && self.token !== '' && !self.$store.state.profile) {\r\n          self.fetchProfile((response: any) => {\r\n          }, (response: any) => {\r\n            if (count > 0) {\r\n              self.requestProfile(count - 1, self)\r\n            } else {\r\n              self.logout('/login')\r\n            }\r\n          })\r\n        }\r\n      },\r\n      requestSettings: function (count: number, self: any): void {\r\n        if (self.token && self.token !== '' && !self.$store.state.profile) {\r\n          self.fetchSettings((response: any) => {\r\n\r\n          }, (response: any) => {\r\n            if (count > 0) {\r\n              self.requestSettings(count - 1, self)\r\n            } else {\r\n              console.log('Failed to load settings')\r\n            }\r\n          })\r\n        }\r\n      },\r\n      requestLanguage: function (count: number, self: any): void {\r\n        this.$http.get(this.$store.state.apiBases.contentservice + this.$store.state.apiEndpoints.languages[0]).then(\r\n          response => {\r\n            // @ts-ignore\r\n            self.$store.commit('setAllLanguages', response.body.body)\r\n          }, response => {\r\n            if (count > 0) {\r\n              self.requestLanguage(count - 1, self)\r\n            } else {\r\n              self.failed = true\r\n            }\r\n          })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '../node_modules/bootstrap/dist/css/bootstrap.css';\r\n@import '../node_modules/bootstrap-vue/dist/bootstrap-vue.css';\r\n@import \"./assets/scss/_variables.scss\";\r\n@import \"./assets/scss/_typography.scss\";\r\n@import \"./assets/scss/_alerts.scss\";\r\n@import './assets/fonts.scss';\r\n\r\n.loading-container {\r\n  width: 100%;\r\n  height: 100vh;\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  flex-direction: column;\r\n\r\n  .loading-icon {\r\n    margin: auto;\r\n    height: 150px;\r\n    width: 150px;\r\n    border-radius: 50%;\r\n    background: $brand-red;\r\n    color: $brand-white;\r\n    display: flex;\r\n\r\n    h1 {\r\n      margin: auto;\r\n    }\r\n  }\r\n\r\n  .loadfailed {\r\n    font-weight: bold;\r\n    margin: 30px auto 150px auto;\r\n    text-align: center;\r\n    color: $brand-red;\r\n    svg {\r\n      margin-right: 5px;\r\n    }\r\n  }\r\n}\r\n\r\nhtml, body {\r\n  padding: 0;\r\n  margin: 0;\r\n}\r\n.app-container {\r\n  margin: 0;\r\n  padding: 0;\r\n}\r\n\r\n/* Aria headers into blocks*/\r\nspan[role=heading] {\r\n  display: block;\r\n}\r\n\r\nbody {\r\n  background: $brand-grey1;\r\n  max-width: 100% !important;\r\n  overflow-x: hidden;\r\n  ::-webkit-scrollbar {\r\n    width: auto;\r\n  }\r\n  ::-webkit-scrollbar-track {\r\n    background: #E3E3E3;\r\n  }\r\n  ::-webkit-scrollbar-thumb {\r\n    background: #C1C1C1;\r\n    border-radius: 2px;\r\n  }\r\n}\r\n\r\nbody,\r\np {\r\n  font-family: $font-light;\r\n  font-size: 16px;\r\n  line-height: 20px;\r\n  letter-spacing: 0.3px\r\n}\r\n\r\n  .brand-white {\r\n    color: $brand-white;\r\n  }\r\n\r\n  .brand-red {\r\n    color: $brand-red;\r\n  }\r\n\r\n  .brand-black {\r\n    color: $brand-black;\r\n  }\r\n\r\n  .brand-grey0 {\r\n    color: $brand-grey0;\r\n  }\r\n\r\n  .brand-grey1 {\r\n    color: $brand-grey1;\r\n  }\r\n\r\n  .brand-grey2 {\r\n    color: $brand-grey2;\r\n  }\r\n\r\n  .brand-grey3 {\r\n    color: $brand-grey3;\r\n  }\r\n\r\n  .brand-grey4 {\r\n    color: $brand-grey4;\r\n  }\r\n\r\n  .brand-grey5 {\r\n    color: $brand-grey5;\r\n  }\r\n\r\n  .brand-grey6 {\r\n    color: $brand-grey6;\r\n  }\r\n\r\n  .brand-grey7 {\r\n    color: $brand-grey7;\r\n  }\r\n\r\n  .brand-grey8 {\r\n    color: $brand-grey8;\r\n  }\r\n\r\n  .brand-grey9 {\r\n    color: $brand-grey9;\r\n  }\r\n\r\n  .brand-grey10 {\r\n    color: $brand-grey10;\r\n  }\r\n\r\n  .brand-grey11 {\r\n    color: $brand-grey11;\r\n  }\r\n\r\n  .brand-grey12 {\r\n    color: $brand-grey12;\r\n  }\r\n\r\n  .brand-grey13 {\r\n    color: $brand-grey13;\r\n  }\r\n\r\n  .brand-grey14 {\r\n    color: $brand-grey14;\r\n  }\r\n\r\n  .brand-grey15 {\r\n    color: $brand-grey15;\r\n  }\r\n\r\n  .brand-grey16 {\r\n    color: $brand-grey16;\r\n  }\r\n\r\n.fill-height {\r\n  height: 100%;\r\n}\r\n\r\n.fill-width {\r\n  width: 100%;\r\n}\r\n\r\n.vertical-center {\r\n  display: block;\r\n  margin-top: auto;\r\n  margin-bottom: auto;\r\n}\r\n\r\n.spr-shadow {\r\n  box-shadow: 2px 2px 5px $brand-grey13;\r\n}\r\n\r\n.link {\r\n  text-decoration: none;\r\n  font-family: \"Signa-Light\", Sans-Serif;\r\n  cursor: pointer;\r\n\r\n  &:hover {\r\n  background: $brand-red;\r\n  color: $brand-white;\r\n}\r\n\r\n}\r\n\r\n.spr-redborder {\r\n  border: 1px solid red;\r\n}\r\n.spr-greyborder {\r\n  border: 1px solid $brand-grey9;\r\n}\r\n\r\n.spr-button {\r\n  margin: 0 2px;\r\n}\r\n\r\n.btn.spr-roundbox-1,\r\n.spr-roundbox-1 {\r\n  border-radius: 60px;\r\n}\r\n\r\n.btn.spr-roundbox-2,\r\n.spr-roundbox-2 {\r\n  border-radius: 60px;\r\n}\r\n\r\n.btn.spr-roundbox-3,\r\n.spr-roundbox-3 {\r\n  border-radius: 60px;\r\n}\r\n</style>\r\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=43068f35\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=43068f35&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.currentStep >= 0)?_c('div',{staticClass:\"comp-wizard\"},[_c(_vm.steps[_vm.currentStep],{ref:\"currentStage\",tag:\"div\",staticClass:\"swapped-elements bg-top\",attrs:{\"token\":_vm.adToken}}),_c('div',{staticClass:\"common-elements bg-bottom\"},[(!_vm.pending)?_c('div',{staticClass:\"col-12 py-4\"},[_c('sprbutton',{staticClass:\"next-button\",attrs:{\"size\":1,\"title\":_vm.buttonTitle,\"click-event\":\"wizard-next\",\"icon\":\"chevron-right\"},on:{\"wizard-next\":_vm.onNext}}),_c('br')],1):_c('div',{staticClass:\"row pending\"},[_c('div',{staticClass:\"col-12 py-4\"},[_c('loading')],1)]),_c('button',{staticClass:\"back-link\",attrs:{\"tabindex\":\"0\",\"role\":\"link\",\"icon\":\"chevron-right\"},on:{\"click\":_vm.onBack}},[_vm._v(\" \"+_vm._s(_vm.$t('wizard.back'))+\" \")]),_c('div',{staticClass:\"step-container\"},_vm._l((_vm.steps),function(step,index){return _c('font-awesome-icon',{key:index,staticClass:\"step-indicator\",class:{ 'current-step': index === _vm.currentStep, 'filled-step': index < _vm.currentStep },attrs:{\"icon\":\"circle\",\"aria-hidden\":\"true\"},on:{\"click\":function($event){return _vm.stepIndicatorClick(index)}}})}),1)])],1):_c('div',{staticClass:\"comp-wizard\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"fill-width comp-wizard-content\"},[_c('div',[_c('span',{staticClass:\"h1\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.$t('wizard.headerOne')))]),_c('br'),_c('p',[_vm._v(_vm._s(_vm.$t('wizard.ingressChekcboxes')))])]),_vm._l((_vm.$store.state.profileAreasOfInterest),function(interest,index){return _c('sprcheckbox',{key:'wizard_1_' + index,attrs:{\"value\":interest.id,\"title\":_vm.$t('interest.' + interest.text),\"click-event\":\"box-selected\",\"collection\":_vm.$store.state.wizardModel.areasOfInterest},on:{\"box-selected\":_vm.handleCheckbox}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('button',{staticClass:\"spr-roundbox-1 spr-cloud-check\",class:{ 'checked spr-shadow': _vm.checked, 'unchecked': !_vm.checked },attrs:{\"tabindex\":_vm.tabindex},on:{\"click\":_vm.handleClick}},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <button class=\"spr-roundbox-1 spr-cloud-check\"\r\n          :class=\"{ 'checked spr-shadow': checked, 'unchecked': !checked }\"\r\n          :tabindex=\"tabindex\"\r\n          @click=\"handleClick\"\r\n  >\r\n    {{ title }}\r\n  </button>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'SprCheckbox',\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      clickEvent: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      value: {\r\n        type: [Number, String],\r\n        required: true\r\n      },\r\n      ariaLabel: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      tabindex: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      collection: {\r\n        type: Array,\r\n        default: () => []\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        checked: false\r\n      }\r\n    },\r\n    mounted: function () {\r\n      /*\r\n    Pre-selected handling. Not the most elegant of\r\n    solutions. Iterates the array and tries to find its\r\n    value from it. If it does, 'clicks' itself.\r\n    TODO(JanneF): re-implement this to support v-model\r\n    and drop this functionality from the component and\r\n    delegate it to the user instead.\r\n    */\r\n      if (this.collection.indexOf(this.value) >= 0) {\r\n        this.handleClick()\r\n      }\r\n    },\r\n    methods: {\r\n      handleClick: function () {\r\n        this.checked = !this.checked\r\n\r\n        if (this.clickEvent && this.value) {\r\n          this.$emit(this.clickEvent, this.value, this.checked)\r\n        }\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .spr-cloud-check {\r\n    display: inline-block;\r\n    background: none;\r\n    color: $brand-white;\r\n    padding: 8px 15px;\r\n    margin: 3px;\r\n    cursor: pointer;\r\n    font-family: \"Signa-Light\", Sans-Serif;\r\n    font-weight: bold;\r\n    letter-spacing: 0.75px;\r\n    -webkit-touch-callout: none;\r\n    -webkit-user-select: none;\r\n    -khtml-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n    user-select: none;\r\n    border: 1px solid $brand-white;\r\n\r\n    @media (max-width: $media-sm-max) {\r\n      width: 98%;\r\n      display: block;\r\n      margin-bottom: 10px;\r\n    }\r\n  }\r\n\r\n  .checked {\r\n    background: #eb0000;\r\n    color: $brand-white !important;\r\n    border: 1px solid #eb0000 !important;\r\n\r\n    &:hover {\r\n      background: #ba0000;\r\n      border: 1px solid #ba0000 !important;\r\n      color: $brand-white !important;\r\n    }\r\n  }\r\n\r\n  .unchecked {\r\n    &:hover {\r\n      background: $brand-red;\r\n      border: 1px solid $brand-red !important;\r\n      color: $brand-white !important;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRCheckbox.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRCheckbox.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRCheckbox.vue?vue&type=template&id=eacfe994&scoped=true\"\nimport script from \"./SPRCheckbox.vue?vue&type=script&lang=js\"\nexport * from \"./SPRCheckbox.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRCheckbox.vue?vue&type=style&index=0&id=eacfe994&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"eacfe994\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"fill-width comp-wizard-content\">\r\n    <div>\r\n      <span class=\"h1\"\r\n            role=\"heading\"\r\n            aria-level=\"1\"\r\n      >{{ $t('wizard.headerOne') }}</span><br>\r\n      <p>{{ $t('wizard.ingressChekcboxes') }}</p>\r\n    </div>\r\n    <sprcheckbox v-for=\"(interest, index) in $store.state.profileAreasOfInterest\"\r\n                 :key=\"'wizard_1_' + index\"\r\n                 :value=\"interest.id\"\r\n                 :title=\"$t('interest.' + interest.text)\"\r\n                 click-event=\"box-selected\"\r\n                 :collection=\"$store.state.wizardModel.areasOfInterest\"\r\n                 @box-selected=\"handleCheckbox\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprcheckbox from '../SPRCheckbox.vue'\r\n\r\n  export default {\r\n    name: 'WizardOne',\r\n    components: { sprcheckbox },\r\n    data () {\r\n      return {\r\n        selected: new Set(),\r\n        interests: []\r\n      }\r\n    },\r\n    methods: {\r\n      handleCheckbox: function (value, isChecked) {\r\n        if (isChecked) {\r\n          this.selected.add(value)\r\n        } else {\r\n          this.selected.delete(value)\r\n        }\r\n        var arr = [...this.selected]\r\n\r\n        this.$store.commit('setWizardInterests', arr)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n@import '~@/assets/scss/_variables.scss';\r\n@import '~@/assets/scss/_wizard.scss';\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Interest.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Interest.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Wizard-Interest.vue?vue&type=template&id=33f64f72&scoped=true\"\nimport script from \"./Wizard-Interest.vue?vue&type=script&lang=js\"\nexport * from \"./Wizard-Interest.vue?vue&type=script&lang=js\"\nimport style0 from \"./Wizard-Interest.vue?vue&type=style&index=0&id=33f64f72&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"33f64f72\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"fill-width comp-wizard-content\"},[_c('div',[_c('span',{staticClass:\"h1\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.$t('wizard.headerTwo')))]),_c('br'),_c('p',[_vm._v(_vm._s(_vm.$t('wizard.ingressChekcboxes')))])]),_vm._l((_vm.$store.state.profilePersonalSkills),function(skill,index){return _c('sprcheckbox',{key:'wizard_2_' + index,attrs:{\"value\":skill.id,\"title\":_vm.$t('skills.' + skill.text),\"click-event\":\"box-selected\",\"collection\":_vm.$store.state.wizardModel.personalSkills},on:{\"box-selected\":_vm.handleCheckbox}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"fill-width comp-wizard-content\">\r\n    <div>\r\n      <span class=\"h1\"\r\n            role=\"heading\"\r\n            aria-level=\"1\"\r\n      >{{ $t('wizard.headerTwo') }}</span><br>\r\n      <p>{{ $t('wizard.ingressChekcboxes') }}</p>\r\n    </div>\r\n    <sprcheckbox v-for=\"(skill, index) in $store.state.profilePersonalSkills\"\r\n                 :key=\"'wizard_2_' + index\"\r\n                 :value=\"skill.id\"\r\n                 :title=\"$t('skills.' + skill.text)\"\r\n                 click-event=\"box-selected\"\r\n                 :collection=\"$store.state.wizardModel.personalSkills\"\r\n                 @box-selected=\"handleCheckbox\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprcheckbox from '../SPRCheckbox.vue'\r\n\r\n  export default {\r\n    name: 'WizardTwo',\r\n    components: { sprcheckbox },\r\n    data () {\r\n      return {\r\n        selected: new Set(),\r\n        skills: []\r\n      }\r\n    },\r\n    methods: {\r\n      handleCheckbox: function (value, isChecked) {\r\n        if (isChecked) {\r\n          this.selected.add(value)\r\n        } else {\r\n          this.selected.delete(value)\r\n        }\r\n        var arr = [...this.selected]\r\n\r\n        this.$store.commit('setWizardSkills', arr)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  @import '~@/assets/scss/_wizard.scss';\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Skill.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Skill.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Wizard-Skill.vue?vue&type=template&id=751ec246&scoped=true\"\nimport script from \"./Wizard-Skill.vue?vue&type=script&lang=js\"\nexport * from \"./Wizard-Skill.vue?vue&type=script&lang=js\"\nimport style0 from \"./Wizard-Skill.vue?vue&type=style&index=0&id=751ec246&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"751ec246\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"fill-width comp-wizard-content\"},[_c('div',[_c('span',{staticClass:\"h1\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.$t('wizard.headerThree')))]),_c('br'),_c('p',[_vm._v(_vm._s(_vm.$t('wizard.ingressLanguages')))])]),_c('br'),_vm._l((_vm.languages),function(language,index){return _c('sprcheckbox',{key:'wizard_3_' + index,attrs:{\"value\":language,\"title\":_vm.normalizeTranslation(language),\"click-event\":\"box-selected\",\"collection\":_vm.$store.state.wizardModel.spokenLanguages},on:{\"box-selected\":_vm.handleCheckbox}})}),_c('br'),_c('sprlanguageselector',{staticClass:\"dropdown spr-roundbox-1\",attrs:{\"select-event\":\"custom-language\"},on:{\"custom-language\":_vm.handleCheckbox}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-form-select',{model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}},[_c('template',{slot:\"first\"},[_c('option',{attrs:{\"disabled\":\"\"},domProps:{\"value\":null}},[_vm._v(\" \"+_vm._s(_vm.$t('wizard.otherLanguages'))+\" \")])]),_vm._l((_vm.languages),function(item,index){return _c('option',{key:index,domProps:{\"value\":item.isoCode}},[_vm._v(\" \"+_vm._s(item.displayName)+\" \")])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <b-form-select v-model=\"selected\">\r\n    <template slot=\"first\">\r\n      <option :value=\"null\" disabled>\r\n        {{ $t('wizard.otherLanguages') }}\r\n      </option>\r\n    </template>\r\n    <option v-for=\"(item, index) in languages\"\r\n            :key=\"index\"\r\n            :value=\"item.isoCode\"\r\n    >\r\n      {{ item.displayName }}\r\n    </option>\r\n  </b-form-select>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'SprLanguageSelector',\r\n    props: {\r\n      selectEvent: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      customElements: {\r\n        type: Array,\r\n        default: null\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        selected: null\r\n      }\r\n    },\r\n    computed: {\r\n      languages: function () {\r\n        return this.customElements ? this.customElements : this.$store.state.allLanguages\r\n      }\r\n    },\r\n    watch: {\r\n      selected: function (val, old) {\r\n        if (val && this.selectEvent) {\r\n          this.$emit(this.selectEvent, val, true)\r\n          this.selected = null\r\n        }\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n  .custom-select:focus {\r\n      border: solid 2px $brand-grey5;\r\n    outline: 0;\r\n    box-shadow: 0 0 0 0.2rem rgba(204, 0, 0, 0.25);\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRLanguageSelector.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRLanguageSelector.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRLanguageSelector.vue?vue&type=template&id=6bc707dd\"\nimport script from \"./SPRLanguageSelector.vue?vue&type=script&lang=js\"\nexport * from \"./SPRLanguageSelector.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRLanguageSelector.vue?vue&type=style&index=0&id=6bc707dd&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"fill-width comp-wizard-content\">\r\n    <div>\r\n      <span class=\"h1\"\r\n            role=\"heading\"\r\n            aria-level=\"1\"\r\n      >{{ $t('wizard.headerThree') }}</span><br>\r\n      <p>{{ $t('wizard.ingressLanguages') }}</p>\r\n    </div><br>\r\n    <sprcheckbox v-for=\"(language, index) in languages\"\r\n                 :key=\"'wizard_3_' + index\"\r\n                 :value=\"language\"\r\n                 :title=\"normalizeTranslation(language)\"\r\n                 click-event=\"box-selected\"\r\n                 :collection=\"$store.state.wizardModel.spokenLanguages\"\r\n                 @box-selected=\"handleCheckbox\"\r\n    /><br>\r\n\r\n    <sprlanguageselector select-event=\"custom-language\"\r\n                         class=\"dropdown spr-roundbox-1\"\r\n                         @custom-language=\"handleCheckbox\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprcheckbox from '../SPRCheckbox.vue'\r\n  import sprlanguageselector from '../SPRLanguageSelector.vue'\r\n\r\n  export default {\r\n    name: 'WizardOne',\r\n    components: { sprcheckbox, sprlanguageselector },\r\n    data () {\r\n      return {\r\n        selected: this.$store.state.wizardModel.spokenLanguages\r\n      }\r\n    },\r\n    computed: {\r\n      registrationLanguages: function () {\r\n        return this.$store.state.registrationLanguages\r\n      },\r\n      languages: function () {\r\n        return _.union(this.registrationLanguages, this.selected)\r\n      }\r\n    },\r\n    methods: {\r\n      handleCheckbox: function (value, isChecked) {\r\n        if (isChecked) {\r\n          if (this.selected.indexOf(value) === -1) {\r\n            this.selected.push(value)\r\n            this.vuixCommit()\r\n          }\r\n        } else {\r\n          var index = this.selected.indexOf(value)\r\n          if (index !== -1) {\r\n            this.selected.splice(index, 1)\r\n            this.vuixCommit()\r\n          }\r\n        }\r\n      },\r\n      vuixCommit: function () {\r\n        this.$store.commit('setWizardLanguages', this.selected)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  @import '~@/assets/scss/_wizard.scss';\r\n\r\n  .dropdown {\r\n    margin: 30px auto;\r\n    max-width: 300px;\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Language.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Language.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Wizard-Language.vue?vue&type=template&id=d70416d8&scoped=true\"\nimport script from \"./Wizard-Language.vue?vue&type=script&lang=js\"\nexport * from \"./Wizard-Language.vue?vue&type=script&lang=js\"\nimport style0 from \"./Wizard-Language.vue?vue&type=style&index=0&id=d70416d8&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"d70416d8\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"fill-width comp-wizard-content\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"h1\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.$t('wizard.headerFour')))]),_c('br'),_c('div',[_c('sprvalidation',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isCalculating && _vm.validationErrors.length > 0),expression:\"!isCalculating && validationErrors.length > 0\"}],staticClass:\"validation-box\",attrs:{\"validation-errors\":_vm.validationErrors}})],1),_c('div',[_c('sprwarning',{staticClass:\"validation-box\",attrs:{\"warnings\":_vm.warnings,\"use-translations\":true}})],1)]),_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"top-span\"},[_vm._v(_vm._s(_vm.$t('wizard.locationIngress')))]),_c('br')]),_c('div',{staticClass:\"col-12 col-sm-10 col-md-6 col-lg-4 offset-sm-1 offset-md-3 offset-lg-4\"},[_c('sprbutton',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isGeolocationEnabled),expression:\"isGeolocationEnabled\"}],staticClass:\"geo-button\",attrs:{\"size\":1,\"title\":_vm.$t('wizard.currentLocation'),\"click-event\":\"handle-location\"},on:{\"handle-location\":_vm.handleLocation}})],1),_c('div',{staticClass:\"col-12\"},[(_vm.isGeolocationEnabled)?_c('span',{staticClass:\"or-span\"},[_vm._v(_vm._s(_vm.$t('wizard.orBySectionPostcode')))]):_vm._e()]),_c('div',{staticClass:\"col-12 col-sm-10 col-md-6 col-lg-4 offset-sm-1 offset-md-3 offset-lg-4\"},[_c('sprautocomplete',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"options\":_vm.sectionsZips,\"option-label\":\"value\",\"placeholder\":_vm.$t('wizard.workingZipPlaceholder'),\"required\":true,\"name\":\"zipCodeField\",\"is-valid\":!_vm.errors.has('zipCodeField'),\"max-results\":200,\"show-arrow\":false,\"show-default-options\":false,\"dark\":\"\"},model:{value:(_vm.sectionZip),callback:function ($$v) {_vm.sectionZip=$$v},expression:\"sectionZip\"}})],1),_c('div',{staticClass:\"col-12 col-sm-10 col-md-6 col-lg-4 offset-sm-1 offset-md-3 offset-lg-4 volunteeronline\"},[_c('simplecheckbox',{attrs:{\"title\":_vm.$t('wizard.volunteerOnline'),\"aria-label\":_vm.$t('wizard.volunteerOnline')},model:{value:(_vm.volunteerOnline),callback:function ($$v) {_vm.volunteerOnline=$$v},expression:\"volunteerOnline\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.validationErrors.length > 0),expression:\"validationErrors.length > 0\"}],staticClass:\"comp-validation-error\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.includeTitle),expression:\"includeTitle\"}],staticClass:\"validation-title\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"validation.title\"))+\": \")]),_c('span',{staticClass:\"fa-stack fa-lg error-icon\"},[_c('font-awesome-icon',{staticClass:\"anne-sized\",attrs:{\"icon\":['far', 'frown'],\"aria-hidden\":\"true\"}})],1),(_vm.includeTitle)?_c('div',[_c('ul',{staticClass:\"error-container fill-height\"},_vm._l((_vm.validationComputed),function(err,index){return _c('li',{key:index},[_vm._v(\" \"+_vm._s(_vm.fieldReference(err))+\" \"+_vm._s(_vm.translationCombined(err))+\" \")])}),0)]):_c('div',[_c('span',{staticClass:\"error-container fill-height\"},_vm._l((_vm.validationComputed),function(err,index){return _c('p',{key:index},[_vm._v(_vm._s(_vm.fieldReference(err))+\" \"+_vm._s(_vm.translationCombined(err)))])}),0)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-show=\"validationErrors.length > 0\" class=\"comp-validation-error\">\r\n    <div v-show=\"includeTitle\" class=\"validation-title\">\r\n      {{ $t(\"validation.title\") }}:\r\n    </div>\r\n    <span class=\"fa-stack fa-lg error-icon\">\r\n      <font-awesome-icon :icon=\"['far', 'frown']\" class=\"anne-sized\" aria-hidden=\"true\" />\r\n    </span>\r\n    <div v-if=\"includeTitle\">\r\n      <ul class=\"error-container fill-height\">\r\n        <li v-for=\"(err, index) in validationComputed\" :key=\"index\">\r\n          {{ fieldReference(err) }} {{ translationCombined(err) }}\r\n        </li>\r\n      </ul>\r\n    </div>\r\n    <div v-else>\r\n      <span class=\"error-container fill-height\">\r\n        <p v-for=\"(err, index) in validationComputed\" :key=\"index\">{{ fieldReference(err) }} {{ translationCombined(err) }}</p>\r\n      </span>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import { TranslateResult } from 'vue-i18n'\r\n\r\n  export default Vue.extend({\r\n    name: 'ValidationError',\r\n    props: {\r\n      validationErrors: {\r\n        // Converting this to ts, so it seems the error needs to be a string array in the format:\r\n        // [\r\n        //    'field',\r\n        //    'translation rule', (can start with 'error.' or a field name that gets put into 'validation.')\r\n        //    'message' (a number for interpolation of error messages)\r\n        // ]\r\n        type: Array as () => Array<Array<string>>,\r\n        default: () => []\r\n      },\r\n      excludeFieldReference: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      includeTitle: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    computed: {\r\n      validationComputed (): Array<Array<string>> {\r\n        if (this.validationErrors) {\r\n          return this.validationErrors\r\n        }\r\n        return []\r\n      }\r\n    },\r\n    methods: {\r\n      fieldReference (err): string | TranslateResult {\r\n        if (!this.excludeFieldReference) { return this.$t(err[0]) }\r\n        return ''\r\n      },\r\n      translationCombined (err): string | TranslateResult {\r\n        if (err[1] === null) {\r\n          return ''\r\n        }\r\n\r\n        if (_.startsWith(err[1], 'error.')) {\r\n          return this.$t(err[1])\r\n        }\r\n        if (_.startsWith(err[2], 'validation.')) {\r\n          return this.$t(err[2])\r\n        }\r\n        const t = this.$t('validation.' + err[1], err[2].match(new RegExp('[0-9]+', 'g')))\r\n        return t\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .validation-title {\r\n    text-align: left;\r\n    margin-left: 30px;\r\n  }\r\n  .comp-validation-error {\r\n    box-sizing: border-box;\r\n    color: $brand-red;\r\n    background: $brand-white;\r\n    border: solid 2px $brand-red;\r\n    display: inline-block;\r\n    position: relative;\r\n    align-content: center;\r\n    flex-flow: row;\r\n    border-radius: 5px;\r\n\r\n    max-width: 500px;\r\n    width: 100%;\r\n    padding: 10px 0;\r\n    margin: 0;\r\n\r\n    .error-icon {\r\n      position: absolute;\r\n      display: flex;\r\n      top: 0;\r\n      bottom: 0;\r\n      margin: auto;\r\n      margin-left: 20px;\r\n      font-size: 20px;\r\n      align-items: center;\r\n    }\r\n\r\n    .error-container {\r\n      display: block;\r\n      text-align: left;\r\n      padding-left: 80px;\r\n      padding-right: 10px;\r\n      padding-top: 10px;\r\n      padding-bottom: 10px;\r\n\r\n      p {\r\n        display: block;\r\n        margin: 0;\r\n        color: $brand-red;\r\n      }\r\n    }\r\n\r\n    .anne-sized {\r\n      font-size: 150%;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRValidationError.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRValidationError.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRValidationError.vue?vue&type=template&id=b2975c96&scoped=true\"\nimport script from \"./SPRValidationError.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRValidationError.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRValidationError.vue?vue&type=style&index=0&id=b2975c96&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"b2975c96\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.warnings.length > 0),expression:\"warnings.length > 0\"}],staticClass:\"warning-message\"},[_c('span',{staticClass:\"fa-stack fa-lg warning-icon\"},[_c('font-awesome-icon',{staticClass:\"anne-sized\",attrs:{\"icon\":\"exclamation-triangle\",\"aria-hidden\":\"true\"}})],1),_c('span',{staticClass:\"warning-container fill-height\"},[(_vm.useTranslations)?_c('span',_vm._l((_vm.warnings),function(warning,index){return _c('p',{key:index},[_vm._v(_vm._s(_vm.$t(warning)))])}),0):_c('span',_vm._l((_vm.warnings),function(warning,index){return _c('p',{key:index},[_vm._v(_vm._s(warning))])}),0)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-show=\"warnings.length > 0\" class=\"warning-message\">\r\n    <span class=\"fa-stack fa-lg warning-icon\">\r\n      <font-awesome-icon icon=\"exclamation-triangle\" class=\"anne-sized\" aria-hidden=\"true\" />\r\n    </span>\r\n    <span class=\"warning-container fill-height\">\r\n      <span v-if=\"useTranslations\">\r\n        <p v-for=\"(warning, index) in warnings\" :key=\"index\">{{ $t(warning) }}</p>\r\n      </span>\r\n      <span v-else>\r\n        <p v-for=\"(warning, index) in warnings\" :key=\"index\">{{ warning }}</p>\r\n      </span>\r\n    </span>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'SprWarning',\r\n    props: {\r\n      warnings: {\r\n        type: Array,\r\n        default () {\r\n          return []\r\n        }\r\n      },\r\n      useTranslations: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .warning-message {\r\n    box-sizing: border-box;\r\n    color: $brand-warning;\r\n    background: $brand-white;\r\n    border: solid 2px $brand-warning;\r\n    display: inline-block;\r\n    position: relative;\r\n    align-content: center;\r\n    flex-flow: row;\r\n    border-radius: 5px;\r\n\r\n    max-width: 500px;\r\n    width: 100%;\r\n    padding: 10px 0;\r\n    margin: 0;\r\n\r\n    .warning-icon {\r\n      position: absolute;\r\n      display: block;\r\n      top: 0;\r\n      bottom: 0;\r\n      margin: auto;\r\n      margin-left: 10px;\r\n      margin-top: 15px;\r\n      font-size: 20px;\r\n      align-items: center;\r\n    }\r\n\r\n    .warning-container {\r\n      display: block;\r\n      text-align: left;\r\n      padding-left: 80px;\r\n      padding-right: 10px;\r\n      padding-top: 10px;\r\n      padding-bottom: 10px;\r\n\r\n      p {\r\n        display: block;\r\n        color: $brand-red;\r\n        margin: 0;\r\n      }\r\n    }\r\n\r\n    .anne-sized {\r\n      font-size: 150%;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRWarning.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRWarning.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRWarning.vue?vue&type=template&id=8bddcbda&scoped=true\"\nimport script from \"./SPRWarning.vue?vue&type=script&lang=js\"\nexport * from \"./SPRWarning.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRWarning.vue?vue&type=style&index=0&id=8bddcbda&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"8bddcbda\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"vuesingleselect\",staticClass:\"spr-autocomplete-dropdown\"},[(!_vm.selectedOption)?_c('div',{class:_vm.classes.wrapper},[_c('div',{staticClass:\"relative inline-block w-full\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchText),expression:\"searchText\"}],ref:\"search\",class:[_vm.classes.input, _vm.isRequired, 'clearclose'],attrs:{\"id\":_vm.inputId,\"type\":\"text\",\"placeholder\":_vm.placeholder,\"autocomplete\":\"off\",\"required\":_vm.required},domProps:{\"value\":(_vm.searchText)},on:{\"click\":_vm.seedSearchText,\"focus\":_vm.seedSearchText,\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.setOption.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"]))return null;return _vm.movePointerDown.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\"))return null;$event.stopPropagation();return _vm.closeOut.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;$event.stopPropagation();return _vm.closeOut.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"]))return null;return _vm.movePointerUp.apply(null, arguments)}],\"input\":function($event){if($event.target.composing)return;_vm.searchText=$event.target.value}}}),(_vm.showArrow)?_c('div',{staticClass:\"cursor-pointer absolute flex items-center\",class:[_vm.classes.icons],on:{\"click\":_vm.toggleDropdown}},[(!_vm.dropdownOpen)?_c('div',{staticClass:\"arrow-down\",attrs:{\"aria-hidden\":\"true\"}}):_vm._e()]):_vm._e(),(_vm.matchingOptions)?_c('ul',{ref:\"options\",staticClass:\"absolute w-full overflow-auto appearance-none mt-px list-reset\",class:[_vm.classes.dropdown],staticStyle:{\"z-index\":\"5\"},style:({'max-height': _vm.maxHeight}),attrs:{\"tabindex\":\"-1\"}},_vm._l((_vm.matchingOptions),function(option,idx){return _c('li',{key:idx,staticClass:\"cursor-pointer outline-none\",class:idx === _vm.pointer ? _vm.classes.activeClass : '',attrs:{\"tabindex\":\"-1\"},on:{\"blur\":function($event){return _vm.handleClickOutside($event)},\"mouseover\":function($event){return _vm.setPointerIdx(idx)},\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.setOption()},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"]))return null;return _vm.movePointerUp()},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"]))return null;return _vm.movePointerDown()}],\"click\":function($event){$event.preventDefault();return _vm.setOption()}}},[_vm._t(\"option\",function(){return [_vm._v(\" \"+_vm._s(_vm.getOptionDescription(option))+\" \")]},null,{option,idx})],2)}),0):_vm._e()])]):_vm._e(),(_vm.selectedOption)?_c('div',{class:_vm.classes.wrapper},[_c('input',{ref:\"match\",class:[_vm.classes.input, 'clearclose'],attrs:{\"id\":_vm.inputId,\"required\":_vm.required},domProps:{\"value\":_vm.getOptionDescription(_vm.selectedOption)},on:{\"input\":function($event){return _vm.switchToSearch($event)},\"click\":function($event){return _vm.switchToSearch($event)}}}),_c('input',{ref:\"selectedValue\",attrs:{\"type\":\"hidden\",\"name\":_vm.name},domProps:{\"value\":_vm.getOptionValue(_vm.selectedOption)}}),_c('div',{staticClass:\"flex absolute items-center\",class:_vm.classes.icons},[_c('svg',{staticClass:\"cursor-pointer\",attrs:{\"aria-hidden\":\"true\",\"viewBox\":\"0 0 512 512\"},on:{\"click\":_vm.closeOut}},[_c('path',{attrs:{\"d\":\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\"}})])])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// flow scored from vue select thanks Jeff!\r\n\r\nexport default {\r\n  watch: {\r\n    pointer () {\r\n      this.maybeAdjustScroll()\r\n    }\r\n  },\r\n  data () {\r\n    return {\r\n      pointer: -1\r\n    }\r\n  },\r\n  methods: {\r\n    /**\r\n     * Adjust the scroll position of the dropdown list\r\n     * if the current pointer is outside of the\r\n     * overflow bounds.\r\n     * @returns {*}\r\n     */\r\n    maybeAdjustScroll () {\r\n      const pixelsToPointerTop = this.pixelsToPointerTop()\r\n      const pixelsToPointerBottom = this.pixelsToPointerBottom()\r\n\r\n      if (pixelsToPointerTop <= this.viewport().top) {\r\n        return this.scrollTo(pixelsToPointerTop)\r\n      } else if (pixelsToPointerBottom >= this.viewport().bottom) {\r\n        return this.scrollTo(this.viewport().top + this.pointerHeight())\r\n      }\r\n    },\r\n\r\n    /**\r\n     * The distance in pixels from the top of the dropdown\r\n     * list to the top of the current pointer element.\r\n     * @returns {number}\r\n     */\r\n    pixelsToPointerTop () {\r\n      let pixelsToPointerTop = 0\r\n      if (!this.$refs.options) {\r\n        return 0\r\n      }\r\n\r\n      for (let i = 0; i < this.pointer; i++) {\r\n        pixelsToPointerTop += this.$refs.options.children[i].offsetHeight\r\n      }\r\n\r\n      return pixelsToPointerTop\r\n    },\r\n\r\n    /**\r\n     * The distance in pixels from the top of the dropdown\r\n     * list to the bottom of the current pointer element.\r\n     * @returns {*}\r\n     */\r\n    pixelsToPointerBottom () {\r\n      return this.pixelsToPointerTop() + this.pointerHeight()\r\n    },\r\n\r\n    /**\r\n     * The offsetHeight of the current pointer element.\r\n     * @returns {number}\r\n     */\r\n    pointerHeight () {\r\n      const element = this.$refs.options ? this.$refs.options.children[this.pointer] : false\r\n      return element ? element.offsetHeight : 0\r\n    },\r\n\r\n    /**\r\n     * The currently viewable portion of the options.\r\n     * @returns {{top: (string|*|number), bottom: *}}\r\n     */\r\n    viewport () {\r\n      return {\r\n        top: this.$refs.options ? this.$refs.options.scrollTop : 0,\r\n        bottom: this.$refs.options ? this.$refs.options.offsetHeight + this.$refs.options.scrollTop : 0\r\n      }\r\n    },\r\n\r\n    /**\r\n     * Scroll the options to a given position.\r\n     * @param position\r\n     * @returns {*}\r\n     */\r\n    scrollTo (position) {\r\n      /* eslint-disable no-return-assign */\r\n      return this.$refs.options ? this.$refs.options.scrollTop = position : null\r\n    }\r\n  }\r\n}\r\n","<template>\r\n  <div ref=\"vuesingleselect\" class=\"spr-autocomplete-dropdown\">\r\n    <div v-if=\"!selectedOption\" :class=\"classes.wrapper\">\r\n      <div class=\"relative inline-block w-full\">\r\n        <input :id=\"inputId\"\r\n               ref=\"search\"\r\n               v-model=\"searchText\"\r\n               type=\"text\"\r\n               :class=\"[classes.input, isRequired, 'clearclose']\"\r\n               :placeholder=\"placeholder\"\r\n               autocomplete=\"off\"\r\n               :required=\"required\"\r\n               @click=\"seedSearchText\"\r\n               @focus=\"seedSearchText\"\r\n               @keyup.enter=\"setOption\"\r\n               @keyup.down=\"movePointerDown\"\r\n               @keyup.tab.stop=\"closeOut\"\r\n               @keyup.esc.stop=\"closeOut\"\r\n               @keyup.up=\"movePointerUp\"\r\n        >\r\n\r\n        <div v-if=\"showArrow\" :class=\"[classes.icons]\" class=\"cursor-pointer absolute flex items-center\" @click=\"toggleDropdown\">\r\n          <div v-if=\"!dropdownOpen\" class=\"arrow-down\" aria-hidden=\"true\" />\r\n        </div>\r\n\r\n        <ul v-if=\"matchingOptions\" ref=\"options\" tabindex=\"-1\"\r\n            :style=\"{'max-height': maxHeight}\" style=\"z-index: 5;padding\"\r\n            :class=\"[classes.dropdown]\"\r\n            class=\"absolute w-full overflow-auto appearance-none mt-px list-reset\"\r\n        >\r\n          <li v-for=\"(option, idx) in matchingOptions\"\r\n              :key=\"idx\" tabindex=\"-1\"\r\n              :class=\"idx === pointer ? classes.activeClass : ''\"\r\n              class=\"cursor-pointer outline-none\"\r\n              @blur=\"handleClickOutside($event)\"\r\n              @mouseover=\"setPointerIdx(idx)\"\r\n              @keyup.enter=\"setOption()\"\r\n              @keyup.up=\"movePointerUp()\"\r\n              @keyup.down=\"movePointerDown()\"\r\n              @click.prevent=\"setOption()\"\r\n          >\r\n            <slot name=\"option\" v-bind=\"{option,idx}\">\r\n              {{ getOptionDescription(option) }}\r\n            </slot>\r\n          </li>\r\n        </ul>\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"selectedOption\" :class=\"classes.wrapper\">\r\n      <input :id=\"inputId\"\r\n             ref=\"match\"\r\n             :class=\"[classes.input, 'clearclose']\"\r\n             :required=\"required\"\r\n             :value=\"getOptionDescription(selectedOption)\"\r\n             @input=\"switchToSearch($event)\"\r\n             @click=\"switchToSearch($event)\"\r\n      >\r\n      <input ref=\"selectedValue\" type=\"hidden\" :name=\"name\" :value=\"getOptionValue(selectedOption)\">\r\n\r\n      <div class=\"flex absolute items-center\" :class=\"classes.icons\">\r\n        <svg aria-hidden=\"true\" class=\"cursor-pointer\" viewBox=\"0 0 512 512\" @click=\"closeOut\">\r\n          <path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\" />\r\n        </svg>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n<script>\r\n/*\r\nThis is based on the Vue Single Select component, but with some modifications to meet our needs.\r\nhttps://vuejsexamples.com/single-select-dropdown-with-autocomplete/\r\n*/\r\n/* eslint-disable indent */\r\n  import pointerScroll from '../mixins/pointerScroll'\r\n  export default {\r\n    name: 'SprAutoCompleteDropdown',\r\n\r\n    mixins: [pointerScroll],\r\n    props: {\r\n      value: {\r\n        type: Object,\r\n        default: undefined\r\n      },\r\n      name: {\r\n        type: String,\r\n        required: false,\r\n        default: () => ''\r\n      },\r\n      options: {\r\n        type: Array,\r\n        required: false,\r\n        default: () => []\r\n      },\r\n      optionLabel: {\r\n        type: String,\r\n        required: false,\r\n        default: () => null\r\n      },\r\n      optionKey: {\r\n        type: String,\r\n        required: false,\r\n        default: () => null\r\n      },\r\n      placeholder: {\r\n        type: String,\r\n        required: false,\r\n        default: () => 'Search Here'\r\n      },\r\n      maxHeight: {\r\n        type: String,\r\n        default: () => '220px',\r\n        required: false\r\n      },\r\n      inputId: {\r\n        type: String,\r\n        default: () => 'single-select',\r\n        required: false\r\n      },\r\n      showArrow: {\r\n        type: Boolean,\r\n        default: true\r\n      },\r\n      showDefaultOptions: {\r\n        type: Boolean,\r\n        default: true\r\n      },\r\n      classes: {\r\n        type: Object,\r\n        required: false,\r\n        default: () => {\r\n          return {\r\n            pointer: -1,\r\n            wrapper: 'single-select-wrapper',\r\n            input: 'search-input',\r\n            icons: 'icons',\r\n            required: 'required',\r\n            activeClass: 'active',\r\n            dropdown: 'dropdown'\r\n          }\r\n        }\r\n      },\r\n      dark: Boolean,\r\n      required: {\r\n        type: Boolean,\r\n        required: false,\r\n        default: () => false\r\n      },\r\n      maxResults: {\r\n        type: Number,\r\n        required: false,\r\n        default: () => 30\r\n      },\r\n      tabindex: {\r\n        type: String,\r\n        required: false,\r\n        default: () => {\r\n          return ''\r\n        }\r\n      },\r\n      getOptionDescription: {\r\n        type: Function,\r\n        default: function (option) {\r\n          if (this.optionKey && this.optionLabel) {\r\n            return option[this.optionKey] + ' ' + option[this.optionLabel]\r\n          }\r\n          if (this.optionLabel) {\r\n            return option[this.optionLabel]\r\n          }\r\n          if (this.optionKey) {\r\n            return option[this.optionKey]\r\n          }\r\n          return option\r\n        }\r\n      },\r\n      getOptionValue: {\r\n        type: Function,\r\n        default: function (option) {\r\n          if (this.optionKey) {\r\n            return option[this.optionKey]\r\n          }\r\n\r\n          if (this.optionLabel) {\r\n            return option[this.optionLabel]\r\n          }\r\n\r\n          return option\r\n        }\r\n      },\r\n      filterBy: {\r\n        type: Function,\r\n        default: function (option) {\r\n          if (this.optionLabel && this.optionKey) {\r\n            return (\r\n              option[this.optionLabel]\r\n                .toString()\r\n                .toLowerCase()\r\n                .includes(this.searchText.toString().toLowerCase()) ||\r\n              option[this.optionKey]\r\n                .toString()\r\n                .toLowerCase()\r\n                .includes(this.searchText.toString().toLowerCase())\r\n            )\r\n          }\r\n\r\n          if (this.optionLabel) {\r\n            return option[this.optionLabel]\r\n              .toString()\r\n              .toLowerCase()\r\n              .includes(this.searchText.toString().toLowerCase())\r\n          }\r\n\r\n          if (this.optionKey) {\r\n            option[this.optionKey]\r\n              .toString()\r\n              .toLowerCase()\r\n              .includes(this.searchText.toString().toLowerCase())\r\n          }\r\n\r\n          return option\r\n            .toString()\r\n            .toLowerCase()\r\n            .includes(this.searchText.toString().toLowerCase())\r\n        }\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        searchText: null,\r\n        selectedOption: null,\r\n        dropdownOpen: false\r\n      }\r\n    },\r\n    computed: {\r\n      isRequired () {\r\n        if (!this.required) {\r\n          return ''\r\n        }\r\n\r\n        if (this.selectedOption) {\r\n          return ''\r\n        }\r\n\r\n        if (this.dark) {\r\n          return 'required-dark'\r\n        }\r\n\r\n        return 'required'\r\n      },\r\n      matchingOptions () {\r\n        if (this.searchText === null) {\r\n          return null\r\n        }\r\n        if (!this.searchText.length) {\r\n          if (!this.showDefaultOptions) {\r\n            return null\r\n          }\r\n          return [...this.options].slice(0, this.maxResults)\r\n        }\r\n\r\n        return this.options\r\n          .filter(option =>\r\n            this.filterBy(option)\r\n          )\r\n          .slice(0, this.maxResults)\r\n      }\r\n    },\r\n    watch: {\r\n      value (curr, prev) {\r\n        this.selectedOption = curr\r\n      },\r\n      searchText (curr, prev) {\r\n        if (curr !== prev) {\r\n          this.pointer = -1\r\n        }\r\n      },\r\n      selectedOption (curr, prev) {\r\n        if (curr) {\r\n          this.$emit('input', curr)\r\n        }\r\n      },\r\n      dropdownOpen (curr, prev) {\r\n        if (curr === prev) {\r\n          return\r\n        }\r\n\r\n        if (!curr) {\r\n          this.searchText = null\r\n          return\r\n        }\r\n\r\n        if (!this.searchText) {\r\n          this.searchText = ''\r\n        }\r\n\r\n        this.$nextTick().then(() => {\r\n          this.$refs.search.focus()\r\n        })\r\n      }\r\n    },\r\n    mounted () {\r\n      document.addEventListener('click', this.handleClickOutside)\r\n      document.addEventListener('keyup', this.handleClickOutside)\r\n      if (this.value && this.options.includes(this.value)) {\r\n        this.selectedOption = this.value\r\n      }\r\n    },\r\n    destroyed () {\r\n      document.removeEventListener('keyup', this.handleClickOutside)\r\n      document.removeEventListener('click', this.handleClickOutside)\r\n    },\r\n    methods: {\r\n      setPointerIdx (idx) {\r\n        this.pointer = idx\r\n      },\r\n      seedSearchText () {\r\n        if (!this.searchText) {\r\n          return\r\n        }\r\n\r\n        this.searchText = ''\r\n      },\r\n      switchToSearch (event) {\r\n        this.$refs.selectedValue.value = null\r\n        this.searchText = event.target.value\r\n        this.selectedOption = null\r\n        this.dropdownOpen = true\r\n      },\r\n      toggleDropdown () {\r\n        if (!this.searchText) {\r\n          this.dropdownOpen = false\r\n          return\r\n        }\r\n\r\n        this.dropdownOpen = !this.dropdownOpen\r\n      },\r\n      closeOut () {\r\n        this.selectedOption = null\r\n        this.dropdownOpen = false\r\n        this.searchText = null\r\n      },\r\n      movePointerDown () {\r\n        if (!this.matchingOptions) {\r\n          return\r\n        }\r\n        if (this.pointer >= this.matchingOptions.length - 1) {\r\n          return\r\n        }\r\n\r\n        this.pointer++\r\n      },\r\n      movePointerUp () {\r\n        if (this.pointer > 0) {\r\n          this.pointer--\r\n        }\r\n      },\r\n      setOption () {\r\n        if (!this.matchingOptions || !this.matchingOptions.length) {\r\n          return\r\n        }\r\n        if (this.pointer === -1) {\r\n          this.pointer++\r\n        }\r\n\r\n        this.selectedOption = this.matchingOptions[this.pointer]\r\n        this.searchText = null\r\n        this.dropdownOpen = false\r\n        this.pointer = -1\r\n        this.$nextTick().then(() => {\r\n          this.$refs.match.focus()\r\n        })\r\n      },\r\n      handleClickOutside (e) {\r\n        if (this.$el.contains(e.target)) {\r\n          return\r\n        }\r\n\r\n        this.dropdownOpen = false\r\n        this.searchText = null\r\n      }\r\n    }\r\n  }\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n@import \"../assets/scss/_variables.scss\";\r\n .spr-autocomplete-dropdown {\r\n   outline: none;\r\n   input:focus-visible{\r\n      color: #495057;\r\n      border: solid 2px $brand-grey5;\r\n      outline: 0;\r\n      box-shadow: 0 0 0 0.2rem rgba(204, 0, 0, 0.25);\r\n      transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n    }\r\n }\r\n .w-full {\r\n     width: 100%;\r\n }\r\n .inline-block {\r\n     display: inline-block;\r\n }\r\n .block {\r\n     display: block;\r\n }\r\n .flex {\r\n     display: flex;\r\n }\r\n .border {\r\n     border-width: thin;\r\n     border-style: solid;\r\n }\r\n .rounded {\r\n     border-radius: 0.25em;\r\n }\r\n .text-black {\r\n     color: #22292f;\r\n }\r\n .absolute {\r\n     position: absolute;\r\n }\r\n .relative {\r\n     position: relative;\r\n }\r\n .items-center {\r\n     align-items: center;\r\n }\r\n .mt-px {\r\n     margin-top: 1px;\r\n }\r\n .list-reset {\r\n     list-style: none;\r\n     padding: 0;\r\n }\r\n .overflow-auto {\r\n     overflow: auto;\r\n }\r\n .appearance-none {\r\n     -webkit-appearance: none;\r\n     -moz-appearance: none;\r\n     appearance: none;\r\n }\r\n .search-input {\r\n     display: block;\r\n     width: 100%;\r\n     padding: 12px 20px;\r\n     font-size: 1em;\r\n     line-height: 1.5;\r\n     color: $brand-font;\r\n     background-color: #fff;\r\n     background-clip: padding-box;\r\n     border: 2px solid $brand-grey3;\r\n     transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n     box-sizing: border-box;\r\n     border-radius: 60px;\r\n     outline: none;\r\n\r\n    &.clearclose {\r\n        &::-ms-clear {\r\n            display: none !important;\r\n            width: 0;\r\n            height: 0;\r\n        }\r\n    }\r\n }\r\n .arrow-down {\r\n    width: 0;\r\n    height: 0;\r\n    border-left: 3px solid transparent;\r\n    border-right: 3px solid transparent;\r\n\r\n    border-top: 6px solid #000;\r\n }\r\n .icons {\r\n     padding: 0 1em;\r\n     right: 0;\r\n     top: 0;\r\n     bottom: 0;\r\n     fill: #606f7b;\r\n     padding: 0 10px 0 20px;\r\n }\r\n .icons svg {\r\n     width: 0.75em;\r\n     height: 0.75em;\r\n }\r\n .single-select-wrapper {\r\n     position: relative;\r\n     margin-bottom: 0.5em;\r\n }\r\n .required {\r\n     _color: $brand-red;\r\n     _background-color: #f8d7da;\r\n     border-color: $brand-red;\r\n }\r\n .required-dark {\r\n     _color: $brand-red;\r\n     _background-color: #f8d7da;\r\n     border-color: $error-dark;\r\n }\r\n .cursor-pointer {\r\n     cursor: pointer;\r\n }\r\n .dropdown {\r\n     -webkit-box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.12),\r\n     0 2px 4px 0 rgba(0, 0, 0, 0.08);\r\n     box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.12), 0 2px 4px 0 rgba(0, 0, 0, 0.08);\r\n     background-color: #fff;\r\n     color: #606f7b;\r\n     border-radius: 0.25em;\r\n     line-height: 1.25;\r\n     text-align: left;\r\n }\r\n .dropdown > li {\r\n     padding: 0.5em 0.75em;\r\n }\r\n .active {\r\n     background: #dae1e7;\r\n }\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRAutocompleteDropdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRAutocompleteDropdown.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRAutocompleteDropdown.vue?vue&type=template&id=615d2f59&scoped=true\"\nimport script from \"./SPRAutocompleteDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./SPRAutocompleteDropdown.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRAutocompleteDropdown.vue?vue&type=style&index=0&id=615d2f59&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"615d2f59\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:_vm.classCombined},[_c('input',{class:{ 'spr-danger': !_vm.isValid },attrs:{\"id\":_vm._uid,\"type\":\"checkbox\",\"disabled\":_vm.disabled,\"required\":_vm.isRequired},domProps:{\"checked\":_vm.value,\"value\":_vm.value},on:{\"change\":function($event){return _vm.updateValue($event.target)}}}),_c('label',{class:{ 'no-wrap': _vm.noWrap},attrs:{\"for\":_vm._uid,\"aria-label\":_vm.ariaLabel}},[(_vm.allowHtml)?_c('span',{directives:[{name:\"linkified\",rawName:\"v-linkified\"}],domProps:{\"innerHTML\":_vm._s(_vm.title)}}):_c('span',[_vm._v(_vm._s(_vm.title))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div :class=\"classCombined\">\r\n    <input\r\n      :id=\"_uid\" type=\"checkbox\"\r\n      :disabled=\"disabled\"\r\n      :class=\"{ 'spr-danger': !isValid }\"\r\n      :required=\"isRequired\"\r\n      :checked=\"value\"\r\n      :value=\"value\"\r\n      @change=\"updateValue($event.target)\"\r\n    >\r\n    <label :for=\"_uid\" :aria-label=\"ariaLabel\" :class=\"{ 'no-wrap': noWrap}\">\r\n      <!-- eslint-disable-next-line vue/no-v-html -->\r\n      <span v-if=\"allowHtml\" v-linkified v-html=\"title\" />\r\n      <span v-else>{{ title }}</span>\r\n    </label>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'SprSimpleCheckbox',\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      allowHtml: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      value: Boolean,\r\n      ariaLabel: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      required: {\r\n        type: Boolean,\r\n        defaul: false\r\n      },\r\n      noWrap: {\r\n        type: Boolean,\r\n        defaul: false\r\n      },\r\n      hasError: Boolean,\r\n      additionalClass: {\r\n        type: String,\r\n        default: 'pb-3'\r\n      },\r\n      isValid: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      disabled: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      whiteWarnings: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    computed: {\r\n      classCombined: function () {\r\n        var rv = 'spr-simple-checkbox ' + this.additionalClass\r\n        if (this.hasError !== null && this.hasError) {\r\n          if (this.whiteWarnings) { rv += ' white-validation-error' } else { rv += ' validation-error' }\r\n        }\r\n        if (this.disabled) {\r\n          rv += ' disabled'\r\n        }\r\n        return rv\r\n      },\r\n      isRequired: function () {\r\n        if (this.required) {\r\n          return this.required\r\n        } else {\r\n          return false\r\n        }\r\n      }\r\n    },\r\n    methods: {\r\n      updateValue: function (target) {\r\n        if (this.value != null) {\r\n          this.$emit('input', target.checked)\r\n        } else {\r\n          this.$emit('input', true)\r\n        }\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n@import \"../assets/scss/_variables.scss\";\r\n.no-wrap {\r\n  white-space: nowrap;\r\n}\r\n.spr-danger {\r\n      border: 2px solid $brand-red !important;\r\n      background-color: #ff818cdc;\r\n      accent-color: #ff818cdc;\r\n    }\r\n.spr-simple-checkbox {\r\n\r\n  /* hiding the initial actual checkbox */\r\n  input[type=\"checkbox\"]:not(:checked),\r\n  input[type=\"checkbox\"]:checked {\r\n    position: absolute;\r\n    left: -9999px;\r\n  }\r\n\r\n  /* the actual label styling */\r\n  input[type=\"checkbox\"]:not(:checked) + label,\r\n  input[type=\"checkbox\"]:checked + label {\r\n    position: relative;\r\n    padding-left: 1.95em;\r\n    cursor: pointer;\r\n  }\r\n\r\n  /* checkbox aspect */\r\n  input[type=\"checkbox\"]:not(:checked) + label:before,\r\n  input[type=\"checkbox\"]:checked + label:before {\r\n    content: '';\r\n    position: absolute;\r\n    left: 0; top: 0;\r\n    width: 1.5em;\r\n    height: 1.5em;\r\n    border: 2px solid #ccc;\r\n    background: #fff;\r\n    border-radius: 4px;\r\n    box-shadow: inset 0 1px 3px rgba(0,0,0,.1);\r\n  }\r\n  /* checked mark aspect */\r\n  input[type=\"checkbox\"]:not(:checked) + label:after,\r\n  input[type=\"checkbox\"]:checked + label:after {\r\n    content: '\\1F5F8';\r\n    position: absolute;\r\n    top: .4em;\r\n    left: .3em;\r\n    font-size: 1.1em;\r\n    line-height: 0.8;\r\n    color: $brand-red;\r\n    transition: all .2s;\r\n    font-weight: bold;\r\n    font-family: $font-bold, Arial, Helvetica, sans-serif;\r\n  }\r\n  /* checked mark aspect changes */\r\n  input[type=\"checkbox\"]:not(:checked) + label:after {\r\n    opacity: 0;\r\n    transform: scale(0);\r\n  }\r\n  input[type=\"checkbox\"]:checked + label:after {\r\n    opacity: 1;\r\n    transform: scale(1);\r\n  }\r\n  /* disabled checkbox */\r\n  input[type=\"checkbox\"]:disabled:not(:checked) + label:before,\r\n  input[type=\"checkbox\"]:disabled:checked + label:before {\r\n    box-shadow: none;\r\n    border-color: #bbb;\r\n    background-color: #ddd;\r\n  }\r\n  input[type=\"checkbox\"]:disabled:checked + label:after {\r\n    color: #999;\r\n  }\r\n  input[type=\"checkbox\"]:disabled + label {\r\n    color: #aaa;\r\n    cursor: not-allowed;\r\n  }\r\n\r\n  /* accessibility */\r\n  input[type=\"checkbox\"]:checked:focus + label:before,\r\n  input[type=\"checkbox\"]:not(:checked):focus + label:before {\r\n    border: 2px solid $brand-red;\r\n  }\r\n\r\n  label > span {\r\n    display: inline-block;\r\n    margin-top: 2px;\r\n  }\r\n\r\n  &.white-validation-error {\r\n    label {\r\n      color: $brand-white;\r\n      font-weight: 900;\r\n    }\r\n  }\r\n  &.spr-danger {\r\n      border: 2px solid $brand-red !important;\r\n      background-color: #ff818cdc;\r\n      accent-color: #ff818cdc;\r\n    }\r\n\r\n  &.validation-error{\r\n    label {\r\n      color: red;\r\n    }\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleCheckbox.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleCheckbox.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRSimpleCheckbox.vue?vue&type=template&id=3ee11938&scoped=true\"\nimport script from \"./SPRSimpleCheckbox.vue?vue&type=script&lang=js\"\nexport * from \"./SPRSimpleCheckbox.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRSimpleCheckbox.vue?vue&type=style&index=0&id=3ee11938&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"3ee11938\",\n  null\n  \n)\n\nexport default component.exports","export default {\r\n  methods: {\r\n    cityFromZip: function (zip, vm, success, failure) {\r\n      var uri = (vm.$store.state.apiBases.contentservice + vm.$store.state.apiEndpoints.zipcode[0]).replace('{0}', zip)\r\n\r\n      vm.$http.get(uri).then(response => {\r\n        if (success) {\r\n          success(response)\r\n        }\r\n      }, response => {\r\n        if (failure) {\r\n          failure(response)\r\n        }\r\n      })\r\n    },\r\n    sectionsFromZip (zip, vm) {\r\n      return _.filter(vm.$store.state.sections, function (sec) {\r\n        return _.contains(sec.zipCodes, zip)\r\n      })\r\n    },\r\n    formatAddress (streetAddress, postalCode, city) {\r\n      return [streetAddress, [postalCode, city].filter(Boolean).join(' ')].filter(Boolean).join(', ')\r\n    }\r\n  }\r\n}\r\n","export default {\r\n  methods: {\r\n    proxiedGeocode (address) {\r\n      const uri = `${this.$store.state.apiBases.eventservice}${this.$store.state.apiEndpoints.geocode[0]}?address=${address}`\r\n      return this.$http.get(uri)\r\n    },\r\n    proxiedReverseGeocode (lat, lng) {\r\n      const uri = `${this.$store.state.apiBases.eventservice}${this.$store.state.apiEndpoints.geocode[0]}?latlng=${lat},${lng}`\r\n      return this.$http.get(uri)\r\n    },\r\n    proxiedDistance (origins, destinations, mode) {\r\n      const uri = `${this.$store.state.apiBases.eventservice}${this.$store.state.apiEndpoints.distance[0]}?origins=${origins}&destinations=${destinations}&mode=${mode}&language=${this.$store.state.language}`\r\n      return this.$http.get(uri)\r\n    },\r\n    getTravelDistanceTime (origin, destination, transportation) {\r\n      return new Promise((resolve, reject) => {\r\n        var mode\r\n        switch (transportation) {\r\n          case 1:\r\n            mode = 'driving'\r\n            break\r\n          case 2:\r\n            mode = 'transit'\r\n            break\r\n          case 4:\r\n            mode = 'bicycling'\r\n            break\r\n          default:\r\n            mode = 'walking'\r\n        }\r\n        this.proxiedDistance(origin, destination, mode).then(resp => {\r\n          if (resp) {\r\n            resolve({\r\n              text: `${resp.body.distanceText} / ${resp.body.durationText}`,\r\n              minutes: resp.body.durationMinutes,\r\n              isRealDistance: resp.body.isRealDistance\r\n            })\r\n          } else {\r\n            reject(new Error('No response'))\r\n          }\r\n        }, (err) => {\r\n          console.log('error', err)\r\n          reject(new Error('Failed to get proxied distance'))\r\n        })\r\n      })\r\n    }\r\n  }\r\n}\r\n","<template>\r\n  <div class=\"fill-width comp-wizard-content\">\r\n    <div class=\"col-12\">\r\n      <span class=\"h1\"\r\n            role=\"heading\"\r\n            aria-level=\"1\"\r\n      >{{ $t('wizard.headerFour') }}</span><br>\r\n      <div>\r\n        <sprvalidation v-show=\"!isCalculating && validationErrors.length > 0\" class=\"validation-box\"\r\n                       :validation-errors=\"validationErrors\"\r\n        />\r\n      </div>\r\n      <div>\r\n        <sprwarning class=\"validation-box\"\r\n                    :warnings=\"warnings\"\r\n                    :use-translations=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"col-12\">\r\n      <span class=\"top-span\">{{ $t('wizard.locationIngress') }}</span><br>\r\n    </div>\r\n    <div class=\"col-12 col-sm-10 col-md-6 col-lg-4 offset-sm-1 offset-md-3 offset-lg-4\">\r\n      <sprbutton v-show=\"isGeolocationEnabled\"\r\n                 :size=\"1\"\r\n                 :title=\"$t('wizard.currentLocation')\"\r\n                 click-event=\"handle-location\"\r\n                 class=\"geo-button\"\r\n                 @handle-location=\"handleLocation\"\r\n      />\r\n    </div>\r\n    <div class=\"col-12\">\r\n      <span v-if=\"isGeolocationEnabled\" class=\"or-span\">{{ $t('wizard.orBySectionPostcode') }}</span>\r\n    </div>\r\n    <div class=\"col-12 col-sm-10 col-md-6 col-lg-4 offset-sm-1 offset-md-3 offset-lg-4\">\r\n      <sprautocomplete\r\n        v-model=\"sectionZip\"\r\n        v-validate=\"'required'\"\r\n        :options=\"sectionsZips\"\r\n        option-label=\"value\"\r\n        :placeholder=\"$t('wizard.workingZipPlaceholder')\"\r\n        :required=\"true\"\r\n        name=\"zipCodeField\"\r\n        :is-valid=\"!errors.has('zipCodeField')\"\r\n        :max-results=\"200\"\r\n        :show-arrow=\"false\"\r\n        :show-default-options=\"false\"\r\n        dark\r\n      />\r\n    </div>\r\n    <div class=\"col-12 col-sm-10 col-md-6 col-lg-4 offset-sm-1 offset-md-3 offset-lg-4 volunteeronline\">\r\n      <simplecheckbox\r\n        v-model=\"volunteerOnline\"\r\n        :title=\"$t('wizard.volunteerOnline')\"\r\n        :aria-label=\"$t('wizard.volunteerOnline')\"\r\n      />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n  import sprwarning from '../SPRWarning.vue'\r\n  import sprautocomplete from '../SPRAutocompleteDropdown.vue'\r\n  import simplecheckbox from '../SPRSimpleCheckbox.vue'\r\n  import locationutils from '../../mixins/locationutils.js'\r\n  import googlemaps from '../../mixins/googlemaps.js'\r\n  import { StringKeyValuePair } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    zipCode: string,\r\n    validatedFields: Array<string>,\r\n    zipCodeChanged: boolean,\r\n    geocodeWarning: string,\r\n    geocodeDisabledWarning: string,\r\n    warnings: Array<any>,\r\n    isGeolocationEnabled: boolean,\r\n    sectionsZips: Array<StringKeyValuePair>,\r\n    sectionZip: StringKeyValuePair | undefined,\r\n    section: number,\r\n    volunteerOnline: boolean,\r\n    isCalculating: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'WizardFour',\r\n    components: { sprbutton, sprvalidation, sprwarning, sprautocomplete, simplecheckbox },\r\n    mixins: [locationutils, googlemaps],\r\n    data (): TemplateComponentData {\r\n      return {\r\n        zipCode: this.$store.state.wizardModel.workingZipCode,\r\n        validatedFields: ['zipCodeField'],\r\n        zipCodeChanged: false,\r\n        geocodeWarning: 'validation.geolocatePostcodeFailed',\r\n        geocodeDisabledWarning: 'warning.geolocationDisabled',\r\n        warnings: [],\r\n        isGeolocationEnabled: true,\r\n        sectionsZips: [],\r\n        sectionZip: undefined,\r\n        section: this.$store.state.wizardModel.sectionId,\r\n        volunteerOnline: false,\r\n        isCalculating: true\r\n      }\r\n    },\r\n    computed: {\r\n      validationErrors (): Array<Array<string>> {\r\n        if (!this.validatedFields) {\r\n          return []\r\n        }\r\n\r\n        if (this.isCalculating) {\r\n          return []\r\n        }\r\n        var arr = [] as Array<Array<string>>\r\n        var self = this\r\n        this.validatedFields.forEach(function (fieldName) {\r\n          var err = _.find(self.errors.items, function (item) {\r\n            return item.field === fieldName\r\n          })\r\n          if (err != null) {\r\n            arr.push(['', err.field + '_' + err.rule, ''])\r\n          }\r\n        })\r\n        return arr\r\n      }\r\n    },\r\n    watch: {\r\n      zipCode (val): void {\r\n        this.sectionZip = undefined\r\n        // set the sectionszips dropdown. Key is in format zip-sectionid\r\n        if (val) {\r\n          this.setSection()\r\n          this.zipCodeChanged = true\r\n        }\r\n      },\r\n      sectionZip (val) {\r\n        if (!val) {\r\n          this.$store.commit('setWizardWorkingZip', null)\r\n          this.$store.commit('setWizardZipcode', null)\r\n          this.$store.commit('setWizardSectionId', null)\r\n        } else {\r\n          var arr = val.key.split('-')\r\n          this.$store.commit('setWizardWorkingZip', arr[0])\r\n          this.$store.commit('setWizardZipcode', arr[0])\r\n          this.$store.commit('setWizardSectionId', Number(arr[1]))\r\n        }\r\n      },\r\n      volunteerOnline (val) {\r\n        this.$store.commit('setWizardVolunteerOnline', val)\r\n      }\r\n    },\r\n    created () {\r\n      this.isCalculating = true\r\n      var sections = [] as Array<StringKeyValuePair>\r\n\r\n      _.each(this.$store.state.sections, (section) => {\r\n        _.each(section.zipCodes, (zip) => {\r\n          sections.push({ key: `${zip}-${section.id}`, value: `${zip} - ${section.name}` } as StringKeyValuePair)\r\n        })\r\n      })\r\n\r\n      this.sectionsZips = _.sortBy(sections, 'value')\r\n      this.isCalculating = false\r\n    },\r\n    methods: {\r\n\r\n      handleLocation (): void {\r\n        this.isCalculating = true\r\n        this.sectionZip = undefined\r\n\r\n        this.warnings = []\r\n        var isLocationActive = navigator.geolocation // this doesn't work! (If Geolocation is disabled)\r\n\r\n        // https://stackoverflow.com/questions/3397585/navigator-geolocation-getcurrentposition-sometimes-works-sometimes-doesnt\r\n        if (isLocationActive) {\r\n          navigator.geolocation.getCurrentPosition(this.locationCallback, this.failureCallback, { timeout: 7000 }) // 7 sec\r\n        } else {\r\n          this.setGeocodeDisabledWarning()\r\n          this.isCalculating = false\r\n        }\r\n      },\r\n      failureCallback (): void {\r\n        this.$set(this.warnings, 0, this.geocodeWarning)\r\n        this.isCalculating = false\r\n      },\r\n      setSection (): void {\r\n        var self = this\r\n        var secs = _.filter(this.sectionsZips, function (sz) {\r\n          return self.zipCode === sz.key.split('-')[0]\r\n        })\r\n        if (secs.length === 1) {\r\n          self.sectionZip = secs[0]\r\n        } else if (secs.length > 1) {\r\n          // if there are 2 sections with this zip code, look at the users language and set the section to the one matching that\r\n          // if users language is English, default this to the Finnish section\r\n          //this happens, when user clicks the button \"use my current location\", and we grab the zipcode based on the GPS (or connection)\r\n          var desiredLanguageId = 2\r\n          if (this.$store.state.language === 'sv') desiredLanguageId = 1\r\n          if (this.$store.state.language === 'fi') desiredLanguageId = 0\r\n          if (this.$store.state.language === 'en') desiredLanguageId = 0\r\n\r\n          for (var z = 0; z < secs.length; z++) {\r\n            var section = _.find(this.$store.state.sections, function (s) {\r\n              return s.id === Number(secs[z].key.split('-')[1])\r\n            })\r\n\r\n            if (section.language === desiredLanguageId) {\r\n              self.sectionZip = secs[z]\r\n              break\r\n            }\r\n          }\r\n        } else {\r\n          self.$set(self.warnings, 0, self.geocodeWarning)\r\n        }\r\n        self.isCalculating = false\r\n      },\r\n      locationCallback (position): void {\r\n        var self = this\r\n        // @ts-ignore cannot find mixins\r\n        this.proxiedReverseGeocode(position.coords.latitude, position.coords.longitude).then((resp) => {\r\n          var i = 0\r\n\r\n          resp.body.results.some(result => {\r\n            return result.address_components.some(addressComponent => {\r\n              const postalCodeType = addressComponent.types.find(type => type === 'postal_code')\r\n              if (postalCodeType) {\r\n                self.zipCode = addressComponent.short_name\r\n                return true // Exit the loop when postal code is found\r\n              }\r\n              return false\r\n            })\r\n          })\r\n          this.setSection()\r\n        }, () => {\r\n          self.$set(self.warnings, 0, self.geocodeWarning)\r\n        })\r\n      },\r\n      setGeocodeDisabledWarning (): void {\r\n        this.$set(this.warnings, 0, this.geocodeDisabledWarning)\r\n      },\r\n      validateSection (): Promise<boolean> {\r\n        this.$emit('prefillCity')\r\n        return this.$validator.validateAll()\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  @import '~@/assets/scss/_wizard.scss';\r\n\r\n  .validation-box {\r\n    margin-bottom: 10px;\r\n    display:inline-block;\r\n    flex-wrap:wrap;\r\n  }\r\n  .help-zipcode {\r\n    display: inline-block;\r\n  }\r\n  .postcode-box {\r\n    max-width: 150px;\r\n  }\r\n  .geo-button {\r\n    min-width: 300px;\r\n  }\r\n  .center-text {\r\n    text-align: center;\r\n  }\r\n  .volunteeronline {\r\n    margin-top: 20px;\r\n    text-align: left;\r\n    color: $brand-white;\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Location.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Location.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Wizard-Location.vue?vue&type=template&id=55a34e44&scoped=true\"\nimport script from \"./Wizard-Location.vue?vue&type=script&lang=ts\"\nexport * from \"./Wizard-Location.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Wizard-Location.vue?vue&type=style&index=0&id=55a34e44&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"55a34e44\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"fill-width comp-wizard-content\"},[_c('div',[_c('span',{staticClass:\"h1\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.$t('wizard.headerFive')))]),_c('br'),_c('sprvalidation',{staticClass:\"validation-box\",attrs:{\"validation-errors\":_vm.validationErrors}}),_c('br'),_c('p',[_vm._v(_vm._s(_vm.$t('wizard.ingressTransport')))])],1),_c('br'),_vm._l((_vm.$store.state.transportation),function(choice,index){return _c('sprcheckbox',{key:'wizard_5_' + index,attrs:{\"value\":choice.id,\"title\":_vm.$t('transportation.' + choice.text),\"click-event\":\"box-selected\",\"collection\":_vm.$store.state.wizardModel.transportation},on:{\"box-selected\":_vm.handleCheckbox}})}),_c('br'),_c('p',{staticClass:\"or-span\"},[_vm._v(\" \"+_vm._s(_vm.$t('wizard.reasonableTravel'))+\" \")]),_c('br'),_c('div',{staticClass:\"inputContainer\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|numeric'),expression:\"'required|numeric'\"}],staticClass:\"time-box\",attrs:{\"hint\":_vm.hintTime,\"name\":\"timeField\",\"center-text\":true,\"is-valid\":!_vm.errors.has('timeField')},model:{value:(_vm.travelTime),callback:function ($$v) {_vm.travelTime=$$v},expression:\"travelTime\"}}),_c('span',{staticClass:\"unitLabel\"},[_vm._v(\"min\")])],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('input',{ref:\"inputRef\",staticClass:\"spr-shadow\",class:[_vm.roundbox, { 'spr-danger': !_vm.isValid && !_vm.dark, 'spr-danger-dark': !_vm.isValid && _vm.dark, 'spr-input': true, 'center': _vm.centerText,}],attrs:{\"type\":_vm.computedType,\"placeholder\":_vm.hint},domProps:{\"value\":_vm.value},on:{\"input\":_vm.handleInput}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <input ref=\"inputRef\"\r\n         :type=\"computedType\"\r\n         class=\"spr-shadow\"\r\n         :class=\"[roundbox, { 'spr-danger': !isValid && !dark, 'spr-danger-dark': !isValid && dark, 'spr-input': true, 'center': centerText,}]\"\r\n         :placeholder=\"hint\"\r\n         :value=\"value\"\r\n         @input=\"handleInput\"\r\n  >\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'Sprinput',\r\n    props: {\r\n      dark: Boolean,\r\n      hint: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      isValid: Boolean,\r\n      centerText: Boolean,\r\n      unit: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      size: {\r\n        type: String,\r\n        default: '1'\r\n      },\r\n      inputType: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      value: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n\r\n    },\r\n    computed: {\r\n      computedType (): string {\r\n        if (this.inputType) {\r\n          return this.inputType\r\n        }\r\n        return 'text'\r\n      },\r\n      roundbox (): string {\r\n        return `spr-roundbox-${this.size}`\r\n      }\r\n    },\r\n    methods: {\r\n      handleInput: function () {\r\n        //@ts-ignore\r\n        this.$emit('input', this.$refs.inputRef.value)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n    .spr-input {\r\n      padding: 12px 20px;\r\n      box-sizing: border-box;\r\n      font-family: \"Signa-Light\", Sans-Serif;\r\n      margin: 5px 3px;\r\n      border: none;\r\n\r\n      &::placeholder {\r\n        color:$brand-grey6;\r\n      }\r\n\r\n      &:disabled {\r\n        cursor: not-allowed;\r\n      }\r\n      &:focus-visible {\r\n        color: #495057;\r\n        border: solid 2px $brand-grey5;\r\n        outline: 0;\r\n        box-shadow: 0 0 0 0.2rem rgba(204, 0, 0, 0.25);\r\n        transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n      }\r\n    }\r\n\r\n    .spr-danger {\r\n      border: 2px solid $brand-red !important;\r\n    }\r\n\r\n    .spr-danger-dark {\r\n      border: 2px solid $error-dark !important;\r\n    }\r\n\r\n    .center {\r\n      text-align: center;\r\n    }\r\n    .spr-roundbox-4 {\r\n      text-transform: none;\r\n      padding: 12px 15px;\r\n      border-radius: 23px;\r\n      border-width: 2px;\r\n    }\r\n\r\n    .spr-roundbox-5 {\r\n      text-transform: none;\r\n      padding: 6px 12px;\r\n      border-radius: 23px;\r\n      border-width: 2px;\r\n    }\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRInput.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRInput.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRInput.vue?vue&type=template&id=6b58e137&scoped=true\"\nimport script from \"./SPRInput.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRInput.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRInput.vue?vue&type=style&index=0&id=6b58e137&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"6b58e137\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"fill-width comp-wizard-content\">\r\n    <div>\r\n      <span class=\"h1\"\r\n            role=\"heading\"\r\n            aria-level=\"1\"\r\n      >{{ $t('wizard.headerFive') }}</span><br>\r\n      <sprvalidation class=\"validation-box\"\r\n                     :validation-errors=\"validationErrors\"\r\n      /><br>\r\n      <p>{{ $t('wizard.ingressTransport') }}</p>\r\n    </div><br>\r\n    <sprcheckbox v-for=\"(choice, index) in $store.state.transportation\"\r\n                 :key=\"'wizard_5_' + index\"\r\n                 :value=\"choice.id\"\r\n                 :title=\"$t('transportation.' + choice.text)\"\r\n                 click-event=\"box-selected\"\r\n                 :collection=\"$store.state.wizardModel.transportation\"\r\n                 @box-selected=\"handleCheckbox\"\r\n    /><br>\r\n    <p class=\"or-span\">\r\n      {{ $t('wizard.reasonableTravel') }}\r\n    </p><br>\r\n    <div class=\"inputContainer\">\r\n      <sprinput v-model=\"travelTime\"\r\n                v-validate=\"'required|numeric'\"\r\n                :hint=\"hintTime\"\r\n                name=\"timeField\"\r\n                class=\"time-box\"\r\n                :center-text=\"true\"\r\n                :is-valid=\"!errors.has('timeField')\"\r\n      />\r\n      <span class=\"unitLabel\">min</span>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprcheckbox from '../SPRCheckbox.vue'\r\n  import sprinput from '../SPRInput.vue'\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n\r\n  export default {\r\n    name: 'WizardFive',\r\n    components: { sprcheckbox, sprinput, sprvalidation },\r\n    data () {\r\n      return {\r\n        travelTime: this.$store.state.wizardModel.travelTime && this.$store.state.wizardModel.travelTime !== '' ? this.$store.state.wizardModel.travelTime : '60',\r\n        hintTime: '60',\r\n        validatedFields: ['timeField'],\r\n        selected: new Set()\r\n      }\r\n    },\r\n    computed: {\r\n      validationErrors: function () {\r\n        if (!this.validatedFields) {\r\n          return []\r\n        }\r\n\r\n        var arr = []\r\n        var self = this\r\n        this.validatedFields.forEach(function (fieldName) {\r\n          var err = _.find(self.errors.items, function (item) {\r\n            return item.field === fieldName\r\n          })\r\n          if (err != null) {\r\n            arr.push(['', err.field + '_' + err.rule, ''])\r\n          }\r\n        })\r\n        return arr\r\n      }\r\n    },\r\n    watch: {\r\n      travelTime: function (val) {\r\n        this.errors.remove('timeField')\r\n        this.vuixCommit()\r\n      }\r\n    },\r\n    methods: {\r\n      handleCheckbox: function (value, isChecked) {\r\n        if (isChecked) {\r\n          this.selected.add(value)\r\n        } else {\r\n          this.selected.delete(value)\r\n        }\r\n\r\n        this.vuixCommit()\r\n      },\r\n      vuixCommit: function () {\r\n        var arr = [...this.selected]\r\n        this.$store.commit('setWizardTransportation', arr)\r\n        this.$store.commit('setWizardTravelTime', this.travelTime)\r\n      },\r\n      validateSection: function () {\r\n        return this.$validator.validateAll()\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  @import '~@/assets/scss/_wizard.scss';\r\n\r\n  .inputContainer {\r\n    position: relative;\r\n\r\n    .greyed {\r\n      color: $brand-grey8;\r\n    }\r\n\r\n    .unitLabel {\r\n      display:inline-block;\r\n      top: calc(50% - 7px);\r\n      pointer-events: none;\r\n      font-family: \"Signa-Light\", Sans-Serif;\r\n      font-size: 14px;\r\n      color:$brand-white;\r\n    }\r\n\r\n    .time-box {\r\n      max-width: 100px;\r\n    }\r\n\r\n    .invisible {\r\n      visibility: hidden;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Transport.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Transport.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Wizard-Transport.vue?vue&type=template&id=2fc73a64&scoped=true\"\nimport script from \"./Wizard-Transport.vue?vue&type=script&lang=js\"\nexport * from \"./Wizard-Transport.vue?vue&type=script&lang=js\"\nimport style0 from \"./Wizard-Transport.vue?vue&type=style&index=0&id=2fc73a64&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2fc73a64\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"fill-width comp-wizard-content\"},[_c('div',[_c('span',{staticClass:\"h1\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.$t('wizard.headerSix')))]),_c('br'),_c('p',[_vm._v(_vm._s(_vm.$t('wizard.ingressTime')))])]),_c('br'),_vm._l((_vm.availabilityTimes),function(choice,index){return _c('sprcheckbox',{key:'wizard_6_' + index,attrs:{\"value\":choice.id,\"title\":_vm.$t('volunteerTimes.' + _vm.toLowerCamelCase(choice.name)),\"click-event\":\"box-selected\",\"collection\":_vm.$store.state.wizardModel.availabilityTimes},on:{\"box-selected\":_vm.handleCheckbox}})}),_c('br')],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"fill-width comp-wizard-content\">\r\n    <div>\r\n      <span class=\"h1\"\r\n            role=\"heading\"\r\n            aria-level=\"1\"\r\n      >{{ $t('wizard.headerSix') }}</span><br>\r\n      <p>{{ $t('wizard.ingressTime') }}</p>\r\n    </div><br>\r\n    <sprcheckbox v-for=\"(choice, index) in availabilityTimes\"\r\n                 :key=\"'wizard_6_' + index\"\r\n                 :value=\"choice.id\"\r\n                 :title=\"$t('volunteerTimes.' + toLowerCamelCase(choice.name))\"\r\n                 click-event=\"box-selected\"\r\n                 :collection=\"$store.state.wizardModel.availabilityTimes\"\r\n                 @box-selected=\"handleCheckbox\"\r\n    /><br>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprcheckbox from '../SPRCheckbox.vue'\r\n\r\n  export default {\r\n    name: 'WizardSix',\r\n    components: { sprcheckbox },\r\n    data () {\r\n      return {\r\n        selected: new Set()\r\n      }\r\n    },\r\n    computed: {\r\n      availabilityTimes: function () {\r\n        return this.$store.state.databaseAvailabilityTimes\r\n      }\r\n    },\r\n    methods: {\r\n      handleCheckbox: function (value, isChecked) {\r\n        if (isChecked) {\r\n          this.selected.add(value)\r\n        } else {\r\n          this.selected.delete(value)\r\n        }\r\n        var arr = [...this.selected]\r\n\r\n        this.$store.commit('setWizardBestTimes', arr)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  @import '~@/assets/scss/_wizard.scss';\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Time.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Time.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Wizard-Time.vue?vue&type=template&id=23f1e8a2&scoped=true\"\nimport script from \"./Wizard-Time.vue?vue&type=script&lang=js\"\nexport * from \"./Wizard-Time.vue?vue&type=script&lang=js\"\nimport style0 from \"./Wizard-Time.vue?vue&type=style&index=0&id=23f1e8a2&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"23f1e8a2\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"fill-width comp-wizard-content\"},[_c('div',[_c('span',{staticClass:\"h1\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.$t('wizard.headerSeven')))]),_c('br'),_c('sprvalidation',{staticClass:\"validation-box\",attrs:{\"validation-errors\":_vm.validationErrors}}),_c('br'),_c('p',[_vm._v(_vm._s(_vm.$t('wizard.ingressLogin')))])],1),_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"login-info\",attrs:{\"hint\":_vm.$t('wizard.firstNameField'),\"is-valid\":!_vm.errors.has('firstNameField'),\"name\":\"firstNameField\",\"dark\":\"\"},model:{value:(_vm.firstName),callback:function ($$v) {_vm.firstName=$$v},expression:\"firstName\"}}),_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"login-info\",attrs:{\"hint\":_vm.$t('wizard.lastNameField'),\"is-valid\":!_vm.errors.has('lastNameField'),\"name\":\"lastNameField\",\"dark\":\"\"},model:{value:(_vm.lastName),callback:function ($$v) {_vm.lastName=$$v},expression:\"lastName\"}}),_c('br'),_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|email'),expression:\"'required|email'\"}],staticClass:\"login-info\",attrs:{\"hint\":_vm.$t('wizard.emailField'),\"is-valid\":!_vm.errors.has('emailField'),\"name\":\"emailField\",\"disabled\":_vm.token,\"dark\":\"\"},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}}),_c('sprinput',{staticClass:\"login-info\",attrs:{\"hint\":_vm.$t('wizard.phoneNumberField'),\"is-valid\":true},model:{value:(_vm.phone),callback:function ($$v) {_vm.phone=$$v},expression:\"phone\"}}),_c('br'),_c('div',{staticClass:\"mx-auto text-left checkbox-container pt-5\"},[_c('checkbox',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"title\":_vm.$t('wizard.acknowledgeEthics'),\"allow-html\":true,\"white-warnings\":true,\"name\":\"ethicsCheckbox\",\"has-error\":_vm.errors.has('ethicsCheckbox')},model:{value:(_vm.ethics),callback:function ($$v) {_vm.ethics=$$v},expression:\"ethics\"}}),_c('checkbox',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"title\":_vm.$t('wizard.complyGDPR'),\"white-warnings\":true,\"allow-html\":true,\"name\":\"gdprCheckbox\",\"has-error\":_vm.errors.has('gdprCheckbox')},model:{value:(_vm.gdpr),callback:function ($$v) {_vm.gdpr=$$v},expression:\"gdpr\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"fill-width comp-wizard-content\">\r\n    <div>\r\n      <span class=\"h1\"\r\n            role=\"heading\"\r\n            aria-level=\"1\"\r\n      >{{ $t('wizard.headerSeven') }}</span><br>\r\n      <sprvalidation class=\"validation-box\"\r\n                     :validation-errors=\"validationErrors\"\r\n      /><br>\r\n      <p>{{ $t('wizard.ingressLogin') }}</p>\r\n    </div>\r\n\r\n    <sprinput v-model=\"firstName\"\r\n              v-validate=\"'required'\"\r\n              :hint=\"$t('wizard.firstNameField')\"\r\n              class=\"login-info\"\r\n              :is-valid=\"!errors.has('firstNameField')\"\r\n              name=\"firstNameField\"\r\n              dark\r\n    />\r\n    <sprinput v-model=\"lastName\"\r\n              v-validate=\"'required'\"\r\n              :hint=\"$t('wizard.lastNameField')\"\r\n              class=\"login-info\"\r\n              :is-valid=\"!errors.has('lastNameField')\"\r\n              name=\"lastNameField\"\r\n              dark\r\n    /><br>\r\n    <sprinput v-model=\"email\"\r\n              v-validate=\"'required|email'\"\r\n              :hint=\"$t('wizard.emailField')\"\r\n              class=\"login-info\"\r\n              :is-valid=\"!errors.has('emailField')\"\r\n              name=\"emailField\"\r\n              :disabled=\"token\"\r\n              dark\r\n    />\r\n    <sprinput v-model=\"phone\"\r\n              :hint=\"$t('wizard.phoneNumberField')\"\r\n              class=\"login-info\"\r\n              :is-valid=\"true\"\r\n    /><br>\r\n\r\n    <div class=\"mx-auto text-left checkbox-container pt-5\">\r\n      <checkbox v-model=\"ethics\"\r\n                v-validate=\"'required'\"\r\n                :title=\"$t('wizard.acknowledgeEthics')\"\r\n                :allow-html=\"true\"\r\n                :white-warnings=\"true\"\r\n                name=\"ethicsCheckbox\"\r\n                :has-error=\"errors.has('ethicsCheckbox')\"\r\n      />\r\n      <checkbox v-model=\"gdpr\"\r\n                v-validate=\"'required'\"\r\n                :title=\"$t('wizard.complyGDPR')\"\r\n                :white-warnings=\"true\"\r\n                :allow-html=\"true\"\r\n                name=\"gdprCheckbox\"\r\n                :has-error=\"errors.has('gdprCheckbox')\"\r\n      />\r\n    </div>\r\n    <!--\r\n        When implementing these, keep branding guidelines in mind.\r\n        https://developers.google.com/identity/branding-guidelines#incorrect\r\n        https://developers.facebook.com/docs/facebook-login/best-practices/\r\n    <externalloginbutton title=\"Kirjaudu Facebookilla\"\r\n                         class=\"login-info login-facebook\"\r\n                         icon=\"facebook\"\r\n                         clickEvent=\"ext-click\"\r\n                         @ext-click=\"facebookLogin\"></externalloginbutton>\r\n    <externalloginbutton title=\"Kirjaudu Googlella\"\r\n                         class=\"login-info login-google\"\r\n                         icon=\"google\"\r\n                         clickEvent=\"ext-click\"\r\n                         @ext-click=\"googleLogin\"></externalloginbutton>\r\n    -->\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprinput from '../SPRInput.vue'\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n  import checkbox from '../SPRSimpleCheckbox.vue'\r\n\r\n  export default {\r\n    name: 'WizardNine',\r\n    components: { sprinput, sprvalidation, checkbox },\r\n    props: {\r\n      token: {\r\n        type: String,\r\n        required: false,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        firstName: this.$store.state.wizardModel.firstName,\r\n        lastName: this.$store.state.wizardModel.lastName,\r\n        email: this.selectEmail(this.token, this.$store.state.wizardModel.email),\r\n        phone: this.$store.state.wizardModel.phoneNumber,\r\n        gdpr: null,\r\n        ethics: null,\r\n        validatedFields: ['firstNameField', 'lastNameField', 'emailField', 'ethicsCheckbox', 'gdprCheckbox'],\r\n        registerErrors: []\r\n      }\r\n    },\r\n    computed: {\r\n      validationErrors: function () {\r\n        if (!this.validatedFields) {\r\n          return []\r\n        }\r\n\r\n        var arr = []\r\n        var self = this\r\n        this.validatedFields.forEach(function (fieldName) {\r\n          var err = _.find(self.errors.items, function (item) {\r\n            return item.field === fieldName\r\n          })\r\n          if (err != null) {\r\n            arr.push(['', err.field + '_' + err.rule, ''])\r\n          }\r\n        })\r\n\r\n        if (self.registerErrors) {\r\n          self.registerErrors.forEach(function (registrationError) {\r\n            arr.push(registrationError)\r\n          })\r\n        }\r\n\r\n        return arr\r\n      }\r\n    },\r\n    watch: {\r\n      firstName: function () {\r\n        this.errors.remove('firstNameField')\r\n        this.vuixCommit()\r\n      },\r\n      lastName: function () {\r\n        this.errors.remove('lastNameField')\r\n        this.vuixCommit()\r\n      },\r\n      email: function () {\r\n        this.errors.remove('emailField')\r\n        this.vuixCommit()\r\n      },\r\n      phone: function () {\r\n        this.vuixCommit()\r\n      },\r\n      ethics: function (val) {\r\n        // need to have false as null for required to work\r\n        if (val !== null) {\r\n          if (!val) {\r\n            this.ethics = null\r\n          }\r\n          this.vuixCommit()\r\n        }\r\n      },\r\n      gdpr: function (val) {\r\n        if (val !== null) {\r\n          if (!val) {\r\n            this.gdpr = null\r\n          }\r\n          this.vuixCommit()\r\n        }\r\n      },\r\n    },\r\n    methods: {\r\n      vuixCommit: function () {\r\n        this.$store.commit('setWizardBasicInformation', {\r\n          firstName: this.firstName,\r\n          lastName: this.lastName,\r\n          email: this.email,\r\n          phone: this.phone,\r\n          gdpr: this.gdpr,\r\n          ethics: this.ethics\r\n        })\r\n      },\r\n      facebookLogin: function () {\r\n        console.log('facebook login clicked')\r\n      },\r\n      googleLogin: function () {\r\n        console.log('google login clicked')\r\n      },\r\n      validateSection: function () {\r\n        return this.$validator.validateAll()\r\n      },\r\n      printThis: function () {\r\n        console.log(this)\r\n      },\r\n      selectEmail: function (token, vuex) {\r\n        if (token) {\r\n          return token.UserId\r\n        }\r\n\r\n        return vuex\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  @import '~@/assets/scss/_wizard.scss';\r\n\r\n  .login-info {\r\n    max-width: 300px;\r\n    width: 100%;\r\n    text-align: left;\r\n\r\n    @media (max-width: $media-sm-max) {\r\n      max-width: 500px;\r\n    }\r\n  }\r\n\r\n  .login-google {\r\n    background: $google-blue;\r\n    border: none;\r\n    color: $brand-white;\r\n  }\r\n\r\n  .login-facebook {\r\n    background: $facebook-blue;\r\n    border: none;\r\n    color: $brand-white;\r\n  }\r\n\r\n  .checkbox-container {\r\n    max-width: 600px;\r\n    width: 100%;\r\n    color: $brand-white;\r\n\r\n    @media (max-width: $media-sm-max) {\r\n      max-width: 500px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Basic.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Basic.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Wizard-Basic.vue?vue&type=template&id=8f9849dc&scoped=true\"\nimport script from \"./Wizard-Basic.vue?vue&type=script&lang=js\"\nexport * from \"./Wizard-Basic.vue?vue&type=script&lang=js\"\nimport style0 from \"./Wizard-Basic.vue?vue&type=style&index=0&id=8f9849dc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"8f9849dc\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"comp-wizard-content\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"h1\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.$t('wizard.headerEight')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprvalidation',{staticClass:\"validation-box\",attrs:{\"validation-errors\":_vm.validationErrors}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"bs-input\",attrs:{\"hint\":_vm.$t('wizard.streetAddressField'),\"is-valid\":!_vm.errors.has('streetAddressField'),\"name\":\"streetAddressField\",\"dark\":\"\"},model:{value:(_vm.streetaddress),callback:function ($$v) {_vm.streetaddress=$$v},expression:\"streetaddress\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|digits:5'),expression:\"'required|digits:5'\"}],staticClass:\"bs-input\",attrs:{\"hint\":_vm.$t('wizard.zipCodeField'),\"name\":\"zipCodeField\",\"is-valid\":!_vm.errors.has('zipCodeField'),\"dark\":\"\"},model:{value:(_vm.zipcode),callback:function ($$v) {_vm.zipcode=$$v},expression:\"zipcode\"}})],1),_c('div',{staticClass:\"col-12 col-sm-8\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"bs-input\",attrs:{\"hint\":_vm.$t('wizard.cityField'),\"is-valid\":!_vm.errors.has('cityField'),\"name\":\"cityField\",\"dark\":\"\"},model:{value:(_vm.city),callback:function ($$v) {_vm.city=$$v},expression:\"city\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"bs-input\",attrs:{\"hint\":_vm.$t('wizard.countryField'),\"is-valid\":!_vm.errors.has('countryField'),\"name\":\"countryField\",\"dark\":\"\"},model:{value:(_vm.country),callback:function ($$v) {_vm.country=$$v},expression:\"country\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mt-2\"},[_c('sprdatepicker',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.birthdateValidation),expression:\"birthdateValidation\"}],staticClass:\"d-inline-block fill-width wizard-style\",attrs:{\"in-title\":_vm.$t('wizard.ageField') + ': ',\"name\":\"ageField\",\"is-valid\":!_vm.errors.has('ageField') && !_vm.dateIsValid,\"wizard-style\":true,\"dark\":\"\"},model:{value:(_vm.age),callback:function ($$v) {_vm.age=$$v},expression:\"age\"}})],1),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('sprnativelanguageselector',{staticClass:\"spr-roundbox-1 spr-shadow pl-3\",attrs:{\"lang-pool\":_vm.$store.state.wizardModel.spokenLanguages,\"name\":\"nativelanguage\"},model:{value:(_vm.language),callback:function ($$v) {_vm.language=$$v},expression:\"language\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-left\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('wizard.preferredContactMethod')))])]),_c('div',{staticClass:\"col-12\"},[_c('checkboxlist',{attrs:{\"list\":_vm.preferredContactMethodOptions,\"rows\":1},on:{\"input\":_vm.vuixCommit},model:{value:(_vm.preferredContactMethods),callback:function ($$v) {_vm.preferredContactMethods=$$v},expression:\"preferredContactMethods\"}})],1)])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-form-select',{model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}},_vm._l((_vm.languages),function(item){return _c('option',{key:item,domProps:{\"value\":item}},[_vm._v(\" \"+_vm._s(_vm.$t(_vm.alternativePrefix ? _vm.alternativePrefix : 'profile.nativeLanguage'))+\": \"+_vm._s(_vm.normalizeTranslation(item))+\" \")])}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <b-form-select v-model=\"selected\">\r\n    <option v-for=\"(item) in languages\" :key=\"item\"\r\n            :value=\"item\"\r\n    >\r\n      {{ $t(alternativePrefix ? alternativePrefix : 'profile.nativeLanguage') }}: {{ normalizeTranslation(item) }}\r\n    </option>\r\n  </b-form-select>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'Sprsinglelanguageselector',\r\n    props: {\r\n      value: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      langPool: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      alternativePrefix: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        selected: this.value\r\n      }\r\n    },\r\n    computed: {\r\n      languages: function () {\r\n        if (this.alternativePrefix === 'join.language') {\r\n          return _.union(this.langPool ? this.langPool : [], this.$store.state.languagesJoin)\r\n        } else {\r\n          return _.union(this.langPool ? this.langPool : [], this.$store.state.languages)\r\n        }\r\n      }\r\n    },\r\n    watch: {\r\n      selected: function (val, old) {\r\n        if (val) {\r\n          this.$emit('input', this.selected)\r\n        }\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n  .custom-select:focus {\r\n      border: solid 2px $brand-grey5;\r\n    outline: 0;\r\n    box-shadow: 0 0 0 0.2rem rgba(204, 0, 0, 0.25);\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRNativeLanguageSelector.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRNativeLanguageSelector.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRNativeLanguageSelector.vue?vue&type=template&id=387806dc&scoped=true\"\nimport script from \"./SPRNativeLanguageSelector.vue?vue&type=script&lang=js\"\nexport * from \"./SPRNativeLanguageSelector.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRNativeLanguageSelector.vue?vue&type=style&index=0&id=387806dc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"387806dc\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"simpledate pb-3\"},[(_vm.title)?_c('label',{staticClass:\"cap-label brand-red ml-3\"},[_vm._v(_vm._s(_vm.title)+_vm._s(_vm.required ? \"*\" : \"\"))]):_vm._e(),_c('div',{staticClass:\"select-container form-control\",class:{ error: !_vm.isValid, 'wizard spr-shadow': _vm.wizardStyle, 'disabled': _vm.disabled }},[(_vm.inTitle)?_c('span',{staticClass:\"infield-title\"},[_vm._v(_vm._s(_vm.inTitle)+\" \")]):_vm._e(),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.day),expression:\"day\"}],attrs:{\"disabled\":_vm.disabled},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.day=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.dayOptions(_vm.month, _vm.year)),function(x,index){return _c('option',{key:index,domProps:{\"value\":x}},[_vm._v(\" \"+_vm._s(x)+\" \")])}),0),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.month),expression:\"month\"}],attrs:{\"disabled\":_vm.disabled},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.month=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.monthOptions),function(x,index){return _c('option',{key:index,domProps:{\"value\":x.value}},[_vm._v(\" \"+_vm._s(x.text)+\" \")])}),0),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.year),expression:\"year\"}],attrs:{\"disabled\":_vm.disabled},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.year=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.yearOptions),function(x,index){return _c('option',{key:index,domProps:{\"value\":x.value}},[_vm._v(\" \"+_vm._s(x.text)+\" \")])}),0)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"simpledate pb-3\">\r\n    <label v-if=\"title\" class=\"cap-label brand-red ml-3\">{{ title }}{{ required ? \"*\" : \"\" }}</label>\r\n    <div class=\"select-container form-control\" :class=\"{ error: !isValid, 'wizard spr-shadow': wizardStyle, 'disabled': disabled }\">\r\n      <span v-if=\"inTitle\" class=\"infield-title\">{{ inTitle }} </span>\r\n      <select v-model=\"day\" :disabled=\"disabled\">\r\n        <option v-for=\"(x, index) in dayOptions(month, year)\" :key=\"index\" :value=\"x\">\r\n          {{ x }}\r\n        </option>\r\n      </select>\r\n      <select v-model=\"month\" :disabled=\"disabled\">\r\n        <option v-for=\"(x, index) in monthOptions\" :key=\"index\" :value=\"x.value\">\r\n          {{ x.text }}\r\n        </option>\r\n      </select>\r\n      <select v-model=\"year\" :disabled=\"disabled\">\r\n        <option v-for=\"(x, index) in yearOptions\" :key=\"index\" :value=\"x.value\">\r\n          {{ x.text }}\r\n        </option>\r\n      </select>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import moment from 'moment'\r\n  import { SprDropDownValue } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    day: number,\r\n    month: string, //yuck\r\n    year: string\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'SimpleDate',\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      inTitle: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      hint: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      required: {\r\n        default: false,\r\n        type: Boolean\r\n      },\r\n      value: {\r\n        type: [String, Date], // this comes in in as a UTC date, need to switch to local\r\n        default: undefined\r\n      },\r\n      isValid: {\r\n        default: true,\r\n        type: Boolean\r\n      },\r\n      future: {\r\n        default: 0,\r\n        type: Number\r\n      },\r\n      wizardStyle: {\r\n        default: false,\r\n        type: Boolean\r\n      },\r\n      disabled: {\r\n        default: false,\r\n        type: Boolean\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        day: 1,\r\n        month: '01',\r\n        year: '0001'\r\n      }\r\n    },\r\n    computed: {\r\n      monthOptions (): Array<SprDropDownValue> {\r\n        return [\r\n          { value: '01', text: this.$t('datePicker.january') },\r\n          { value: '02', text: this.$t('datePicker.february') },\r\n          { value: '03', text: this.$t('datePicker.march') },\r\n          { value: '04', text: this.$t('datePicker.april') },\r\n          { value: '05', text: this.$t('datePicker.may') },\r\n          { value: '06', text: this.$t('datePicker.june') },\r\n          { value: '07', text: this.$t('datePicker.july') },\r\n          { value: '08', text: this.$t('datePicker.august') },\r\n          { value: '09', text: this.$t('datePicker.september') },\r\n          { value: '10', text: this.$t('datePicker.october') },\r\n          { value: '11', text: this.$t('datePicker.november') },\r\n          { value: '12', text: this.$t('datePicker.december') }\r\n        ]\r\n      },\r\n      yearOptions (): Array<SprDropDownValue> {\r\n        var rv = [] as Array<SprDropDownValue>\r\n        rv.push({ value: '0001', text: this.$t('datePicker.year') })\r\n        for (var i = this.currentYear + this.future; i >= 1900; i--) {\r\n          rv.push({ value: i.toString(), text: i.toString() })\r\n        }\r\n        return rv\r\n      },\r\n      currentYear (): number {\r\n        return (new Date()).getFullYear()\r\n      }\r\n    },\r\n    watch: {\r\n      value: function (val) {\r\n        this.initializeInternalFields(val)\r\n      },\r\n      day: function () {\r\n        this.outputValue()\r\n      },\r\n      month: function () {\r\n        this.outputValue()\r\n      },\r\n      year: function () {\r\n        this.outputValue()\r\n      }\r\n    },\r\n    mounted: function () {\r\n      this.initializeInternalFields(this.value)\r\n    },\r\n    methods: {\r\n      initializeInternalFields: function (val) {\r\n        const date = new Date(val)\r\n        const time = moment(val, 'YYYY-MM-DDTHH:mm:ssZ')\r\n\r\n        if (time.isValid()) {\r\n          this.day = Number(time.format('D'))\r\n          this.month = time.format('MM')\r\n          this.year = time.format('YYYY')\r\n        }\r\n      },\r\n      outputValue: function (): void {\r\n        const year = Number(this.year)\r\n        if (year >= 1900) {\r\n          var rv = `${this.year}-${this.month}-${this.day < 10 ? '0' + this.day : this.day.toString()}T00:00:00Z`\r\n          this.$emit('input', new Date(rv))\r\n        } else {\r\n          this.$emit('input', null)\r\n        }\r\n      },\r\n      dayOptions: function (month, year) {\r\n        var number = 0\r\n        const mon = parseInt(month, 10)\r\n\r\n        if ([1, 3, 5, 7, 8, 10, 12].indexOf(mon) >= 0) {\r\n          number = 31\r\n        } else if (mon === 2) {\r\n          if (this.isLeapYear(year)) {\r\n            number = 29\r\n          } else {\r\n            number = 28\r\n          }\r\n        } else {\r\n          number = 30\r\n        }\r\n\r\n        var rv = [] as Array<number>\r\n        for (var i = 1; i <= number; i++) {\r\n          rv.push(i)\r\n        }\r\n\r\n        return rv\r\n      },\r\n      isLeapYear: function (year) {\r\n        return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .select-container {\r\n    border-radius: 24px;\r\n    border: 2px solid $brand-grey3;\r\n    padding: 0 6px;\r\n    overflow: hidden;\r\n    text-align: left;\r\n    display: inline-table !important;\r\n\r\n    &.error {\r\n      border: 2px solid $brand-red !important;\r\n    }\r\n\r\n    &.disabled {\r\n      border: 2px solid $brand-grey3 !important;\r\n      background-color: #e9ecef !important;\r\n      cursor: not-allowed;\r\n    }\r\n\r\n    .infield-title,\r\n    select {\r\n      height: 30px;\r\n      border: none;\r\n      padding: 5px;\r\n      font-family: Signa-Light;\r\n      background: none;\r\n      border: 0px;\r\n      outline: 0px;\r\n\r\n      &:disabled {\r\n        cursor: not-allowed;\r\n      }\r\n    }\r\n\r\n    &.wizard {\r\n      background: white;\r\n      border: none;\r\n    }\r\n\r\n    @media (max-width: $media-xs-max) {\r\n      .select-container {\r\n        display: flex;\r\n        .infield-title,\r\n        select {\r\n          flex-grow: 1;\r\n          align-items: center;\r\n          justify-content: center;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleDatepickerDashYear.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleDatepickerDashYear.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRSimpleDatepickerDashYear.vue?vue&type=template&id=1e3322a0&scoped=true\"\nimport script from \"./SPRSimpleDatepickerDashYear.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRSimpleDatepickerDashYear.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRSimpleDatepickerDashYear.vue?vue&type=style&index=0&id=1e3322a0&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1e3322a0\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:{ 'spr-danger': !_vm.isValid, 'checkboxbitmasklist': true }},[_c('div',{staticClass:\"row\"},_vm._l((_vm.internalList),function(item){return _c('div',{key:item.value,class:_vm.calculatedClass},[_c('checkbox',{attrs:{\"value\":item.value,\"checked\":_vm.isSelected(item),\"title\":item.text},on:{\"changed\":_vm.onChecked}})],1)}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:_vm.classCombined},[_c('input',{attrs:{\"id\":_vm._uid,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.checked,\"value\":_vm.value},on:{\"change\":function($event){return _vm.updateValue($event.target)}}}),_c('label',{attrs:{\"for\":_vm._uid,\"aria-label\":_vm.ariaLabel}},[(_vm.allowHtml)?_c('span',{directives:[{name:\"linkified\",rawName:\"v-linkified\"}],domProps:{\"innerHTML\":_vm._s(_vm.title)}}):_c('span',[_vm._v(_vm._s(_vm.title))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div :class=\"classCombined\">\r\n    <input :id=\"_uid\" type=\"checkbox\" :checked=\"checked\" :value=\"value\" @change=\"updateValue($event.target)\">\r\n    <label :for=\"_uid\" :aria-label=\"ariaLabel\">\r\n      <!-- eslint-disable-next-line vue/no-v-html -->\r\n      <span v-if=\"allowHtml\" v-linkified v-html=\"title\" />\r\n      <span v-else>{{ title }}</span>\r\n    </label>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  export default Vue.extend({\r\n    name: 'SprSimpleNumberCheckbox',\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      allowHtml: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      value: {\r\n        type: Number,\r\n        required: true\r\n      },\r\n      checked: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      ariaLabel: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      hasError: Boolean,\r\n      additionalClass: {\r\n        type: String,\r\n        default: 'pb-3'\r\n      }\r\n    },\r\n    computed: {\r\n      classCombined: function (): string {\r\n        var rv = 'spr-simple-checkbox ' + this.additionalClass\r\n        if (this.hasError !== null && this.hasError) {\r\n          rv += ' validation-error'\r\n        }\r\n        return rv\r\n      }\r\n    },\r\n    methods: {\r\n      updateValue: function (target) {\r\n        this.$emit('changed', this.value, target.checked)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n@import \"../assets/scss/_variables.scss\";\r\n\r\n.spr-simple-checkbox {\r\n\r\n  /* hiding the initial actual checkbox */\r\n  input[type=\"checkbox\"]:not(:checked),\r\n  input[type=\"checkbox\"]:checked {\r\n    position: absolute;\r\n    left: -9999px;\r\n  }\r\n\r\n  /* the actual label styling */\r\n  input[type=\"checkbox\"]:not(:checked) + label,\r\n  input[type=\"checkbox\"]:checked + label {\r\n    position: relative;\r\n    padding-left: 1.95em;\r\n    cursor: pointer;\r\n  }\r\n\r\n  /* checkbox aspect */\r\n  input[type=\"checkbox\"]:not(:checked) + label:before,\r\n  input[type=\"checkbox\"]:checked + label:before {\r\n    content: '';\r\n    position: absolute;\r\n    left: 0; top: 0;\r\n    width: 1.5em;\r\n    height: 1.5em;\r\n    border: 2px solid #ccc;\r\n    background: #fff;\r\n    border-radius: 4px;\r\n    box-shadow: inset 0 1px 3px rgba(0,0,0,.1);\r\n  }\r\n  /* checked mark aspect */\r\n  input[type=\"checkbox\"]:not(:checked) + label:after,\r\n  input[type=\"checkbox\"]:checked + label:after {\r\n    content: '✓';\r\n    position: absolute;\r\n    top: .2em;\r\n    left: .4em;\r\n    font-size: 1.1em;\r\n    line-height: 0.8;\r\n    color: $brand-red;\r\n    transition: all .2s;\r\n  }\r\n  /* checked mark aspect changes */\r\n  input[type=\"checkbox\"]:not(:checked) + label:after {\r\n    opacity: 0;\r\n    transform: scale(0);\r\n  }\r\n  input[type=\"checkbox\"]:checked + label:after {\r\n    opacity: 1;\r\n    transform: scale(1);\r\n  }\r\n  /* disabled checkbox */\r\n  input[type=\"checkbox\"]:disabled:not(:checked) + label:before,\r\n  input[type=\"checkbox\"]:disabled:checked + label:before {\r\n    box-shadow: none;\r\n    border-color: #bbb;\r\n    background-color: #ddd;\r\n  }\r\n  input[type=\"checkbox\"]:disabled:checked + label:after {\r\n    color: #999;\r\n  }\r\n  input[type=\"checkbox\"]:disabled + label {\r\n    color: #aaa;\r\n  }\r\n\r\n  /* accessibility */\r\n  input[type=\"checkbox\"]:checked:focus + label:before,\r\n  input[type=\"checkbox\"]:not(:checked):focus + label:before {\r\n    border: 2px solid $brand-red;\r\n  }\r\n\r\n  &.validation-error {\r\n    label {\r\n      color: red;\r\n    }\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleNumberCheckbox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleNumberCheckbox.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRSimpleNumberCheckbox.vue?vue&type=template&id=be8f7798&scoped=true\"\nimport script from \"./SPRSimpleNumberCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRSimpleNumberCheckbox.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRSimpleNumberCheckbox.vue?vue&type=style&index=0&id=be8f7798&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"be8f7798\",\n  null\n  \n)\n\nexport default component.exports","const bitmaskhelper = {\r\n  /// Converts an integer flag value into an array of numbers\r\n  /// e.g. 63 => [1,2,4,8,16,32]\r\n  bitmaskToArray(integer: number): Array<number> {\r\n    if (integer <= 0) {\r\n      return [] as Array<number>\r\n    }\r\n\r\n    var rv = [] as Array<number>\r\n    for (var i = 0; i < 32; i++) {\r\n      var mask = Math.pow(2, i)\r\n      if ((integer & mask) !== 0) {\r\n        rv.push(mask)\r\n      }\r\n    }\r\n\r\n    return rv\r\n  },\r\n  //returns a sum of the values in the array e.g. [1,2,4,8,16,32] => 63\r\n  arrayToBitmask(arr: Array<number>): number {\r\n    return arr.reduce((a, b) => a + b, 0)\r\n  },\r\n\r\n  //this translates e.g. [1,2,3,4,5,6] => 1+2+4+8+16+32 = 63\r\n  translateEnumsToBitmask(arr: Array<number>): number {\r\n    let bitmask = 0\r\n\r\n    for (const id of arr) {\r\n      bitmask += Math.pow(2, id - 1)\r\n    }\r\n\r\n    return bitmask\r\n  },\r\n  //this translates e.g. [1,2,4,8,16,32] => [1,2,3,4,5,6]\r\n  convertBitmaskToInteger(bitmaskValues: Array<number>): Array<number> {\r\n    const regularIntegers: number[] = [];\r\n\r\n    for (let bitmaskValue of bitmaskValues) {\r\n      let exponent = 0;\r\n      let currentBit = 1;\r\n\r\n      while (currentBit <= bitmaskValue) {\r\n        if (currentBit & bitmaskValue) { // Bitwise AND operation\r\n          regularIntegers.push(exponent + 1);\r\n        }\r\n        currentBit *= 2;\r\n        exponent++;\r\n      }\r\n    }\r\n\r\n    return regularIntegers;\r\n  },\r\n  //this translates e.g. [1,2,3,4,5,6] => [1,2,4,8,16,32]\r\n  convertIntegerToBitmask(regularIntegers) {\r\n    const bitmaskValues: number[] = [];\r\n\r\n    for (let regularInteger of regularIntegers) {\r\n      bitmaskValues.push(Math.pow(2, regularInteger - 1));\r\n    }\r\n\r\n    return bitmaskValues;\r\n  }\r\n}\r\n\r\nexport default bitmaskhelper","import Vue from 'vue'\r\nimport VueResource from 'vue-resource'\r\nimport { Rule, RuleValidate } from 'vee-validate'\r\n\r\nVue.use(VueResource)\r\n\r\nconst validatorHasOptionSelected: RuleValidate | Rule = {\r\n  getMessage (field: string, args: Array<any>): string {\r\n    return 'validation.' + field\r\n  },\r\n  validate (value: number, args: Array<any> | undefined | object): boolean {\r\n    return !!value\r\n  }\r\n}\r\n\r\nexport default validatorHasOptionSelected","<template>\r\n  <div :class=\"{ 'spr-danger': !isValid, 'checkboxbitmasklist': true }\">\r\n    <div class=\"row\">\r\n      <div v-for=\"item in internalList\" :key=\"item.value\" :class=\"calculatedClass\">\r\n        <checkbox\r\n          :value=\"item.value\"\r\n          :checked=\"isSelected(item)\"\r\n          :title=\"item.text\"\r\n          @changed=\"onChecked\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import checkbox from './SPRSimpleNumberCheckbox.vue'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n  import { SprCheckboxBitmaskValue } from '../types/custom'\r\n  import { ErrorBag, FieldError, Validator } from 'vee-validate'\r\n  import validatorHasOptionSelected from '../mixins/validator-hasOptionSelected'\r\n\r\n  Validator.extend('optionRequired', validatorHasOptionSelected)\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    internalList: Array<SprCheckboxBitmaskValue>,\r\n    internalValue: number\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'SprSimpleCheckboxBitmaskList',\r\n    components: { checkbox },\r\n    props: {\r\n      list: {\r\n        // these are the all the possible values, eg [1, 2, 4, 8]]\r\n        type: Array as () => Array<SprCheckboxBitmaskValue>,\r\n        default () { return [] }\r\n      },\r\n      value: {\r\n        // the number represents a bitmask of the values, eg 3 = 1 + 2, so the value with 1 is checked and the value with 2 is checked\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      rows: {\r\n        type: Number,\r\n        default () { return 1 }\r\n      },\r\n      isValid: {\r\n        type: Boolean,\r\n        default: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        internalList: this.list,\r\n        internalValue: this.value\r\n      }\r\n    },\r\n    computed: {\r\n      calculatedClass (): string {\r\n        return 'col-12 col-sm-' + Math.floor(12 / this.rows)\r\n      }\r\n    },\r\n    watch: {\r\n      list (newValue: Array<SprCheckboxBitmaskValue>) {\r\n        this.internalList = newValue\r\n      },\r\n      value (newValue: number) {\r\n        this.internalValue = newValue\r\n      }\r\n    },\r\n    methods: {\r\n      isSelected (val: SprCheckboxBitmaskValue): boolean {\r\n        const currentSelectedArray = bitmaskhelper.bitmaskToArray(this.internalValue)\r\n        return currentSelectedArray.indexOf(val.value) > -1\r\n      },\r\n      onChecked (val: number, isChecked: boolean): void {\r\n        var newValue = Number(this.internalValue)\r\n        newValue = isChecked\r\n          ? newValue += val\r\n          : newValue -= val\r\n        this.internalValue = newValue\r\n        this.$emit('input', this.internalValue)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\">\r\n@import \"../assets/scss/_variables.scss\";\r\n\r\n  .checkboxbitmasklist {\r\n    border: 2px solid transparent !important;\r\n    box-sizing: border-box; /* Ensure the textarea's width and height include padding and borders */\r\n  }\r\n  .spr-danger {\r\n      border: 2px solid $brand-red !important;\r\n      box-sizing: border-box; /* Ensure the textarea's width and height include padding and borders */\r\n  }\r\n</style>\r\n","import { TranslateResult, LocaleMessage } from 'vue-i18n'\r\nimport { FriendCustomerStandardDto, FriendCustomerNetDto, UserProfileDto, OrderByFriendType } from './index'\r\n\r\nexport interface SprDropDownValue {\r\n  value: number | string | Record<string, any>,\r\n  text: string | TranslateResult,\r\n  selected?: boolean\r\n}\r\n\r\nexport interface NotificationContacts {\r\n  contacts: string[] | null,\r\n  notificationFrequency: number\r\n}\r\n\r\nexport interface DatePickerOptions {\r\n  type: string,\r\n  week: string[],\r\n  month: string[],\r\n  format: string,\r\n  placeholder?: string,\r\n  inputStyle?: any,\r\n  errorStyle?: any,\r\n  color?: any,\r\n  buttons?: any,\r\n  overlayOpacity?: number,\r\n  dismissible?: boolean\r\n}\r\n\r\nexport interface SprDropDownNumberValue {\r\n  value: number,\r\n  text: string,\r\n  selected?: boolean\r\n}\r\n\r\nexport interface DropdownSelectItem {\r\n  id: string,\r\n  text: string\r\n}\r\n\r\nexport interface EventOrganizerIdentifier {\r\n  eventOrganizerType: number,\r\n  organizerId: number\r\n}\r\n\r\nexport interface VueMultiSelectItem {\r\n  id: number,\r\n  text: string\r\n}\r\n\r\nexport interface SprCheckboxBitmaskValue {\r\n  value: number,\r\n  text: string\r\n}\r\n\r\nexport interface SprCheckboxObjectItem {\r\n  key: number,\r\n  obj: Record<string, any>,\r\n  text: string\r\n}\r\n\r\nexport interface KeyNumberStringValuePair {\r\n  key: number,\r\n  value: string\r\n}\r\n\r\nexport interface KeyStringValueNumberPair {\r\n  key: string,\r\n  value: number\r\n}\r\n\r\nexport interface TextStringValueNumberPair {\r\n  text: string,\r\n  value: number\r\n}\r\n\r\nexport interface StringKeyValuePair {\r\n  value: string,\r\n  key: string\r\n}\r\n\r\nexport interface FilterItem {\r\n  id: number | string,\r\n  name: string | TranslateResult\r\n}\r\n\r\nexport interface SprCheckboxValue {\r\n  value: string | number | Record<string, any>,\r\n  text: string,\r\n  selected?: boolean\r\n}\r\n\r\n// this is the object that will be stored in the imageLib array\r\n// it contains the filename, the url of the image and a preview url\r\n// the preview url is the same as the image url, but it is used to display the image\r\nexport interface ImageObject {\r\n    filename: string,\r\n    url: string,\r\n    prev: string\r\n}\r\n\r\nexport interface SprRadioPillOption {\r\n  value: string | number | boolean,\r\n  text: string | TranslateResult\r\n}\r\n\r\nexport interface InterviewData {\r\n  interviewed: boolean,\r\n  interviewedBy: string,\r\n  interviewedDate: Date | undefined\r\n}\r\n\r\nexport interface OnHoldData {\r\n  onHold: boolean,\r\n  onHoldDeadline?: Date,\r\n  onHoldDetails: string\r\n}\r\n\r\nexport interface ApprovalData {\r\n  approval: boolean,\r\n  approvalDate: string,\r\n  approvedBy: string\r\n}\r\n\r\nexport interface SuitabilityData {\r\n  notForPrivateRelations: boolean,\r\n  notForSpr: boolean,\r\n  notForPrivateRelationsReason: string,\r\n  notForPrivateRelationsBy: string,\r\n  notForSprReason: string,\r\n  notForSprBy: string\r\n}\r\n\r\nexport interface SearchFilter {\r\n  searchText: SearchFilterText,\r\n  skip: number,\r\n  pagesize: number,\r\n  searchType: 'CUSTOMER' | 'VOLUNTEER' | 'POOLS',\r\n  orderByFriendType: OrderByFriendType,\r\n  customerStates: number[] | null,\r\n  customerTypes: number[] | null,\r\n  interests: number[] | null,\r\n  friendshipTypes: number[] | null,\r\n  languages: string[] | null,\r\n  motherTongs: string[] | null,\r\n  ages: number[] | null,\r\n  timeWithoutFriends: number[] | null,\r\n  hasGroupMembership: boolean,\r\n  genders: number[] | null\r\n}\r\n\r\nexport interface SearchFilterText {\r\n  customer: string,\r\n  volunteer: string\r\n}\r\n\r\nexport interface MatchFilter {\r\n  customerTypes: number[] | null,\r\n  languages: string[] | null,\r\n  motherTongs: string[] | null,\r\n  hasGroupMembership: boolean,\r\n  genders: number[] | null,\r\n  ages: number[] | null\r\n}\r\n\r\nexport interface TravelData {\r\n  travelDistanceTime: string,\r\n  isMatch: boolean,\r\n  isRealDistance: boolean\r\n}\r\n\r\nexport interface MatchData {\r\n  travelData: TravelData | undefined,\r\n  availabilityTimesMatch: boolean | undefined,\r\n  availabilityFrequencyMatch: boolean | undefined,\r\n  genderMatch: YesNoWarning,\r\n  ageMatch: boolean,\r\n  languageMatch: boolean,\r\n  interestMatch: boolean\r\n}\r\n\r\nexport interface MatchDataNet {\r\n  genderMatch: YesNoWarning,\r\n  ageMatch: boolean,\r\n  languageMatch: boolean,\r\n  interestMatch: boolean\r\n}\r\n\r\nexport interface MatchPair {\r\n  volunteer: UserProfileDto,\r\n  message: string | LocaleMessage\r\n}\r\n\r\nexport interface PortraitInfo {\r\n  id: number,\r\n  url: string\r\n}\r\n\r\nexport interface SprPaymentProduct {\r\n  id: number,\r\n  code: string,\r\n  priceCents: number,\r\n  vat: number,\r\n  disabled: boolean,\r\n  annual: boolean,\r\n  descriptionFin: string,\r\n  descriptionSwe: string,\r\n  minAge: number | null,\r\n  maxAge: number | null\r\n}\r\n\r\nexport interface StandardMatchPair extends MatchPair {\r\n  customer: FriendCustomerStandardDto\r\n}\r\n\r\nexport interface NetMatchPair extends MatchPair {\r\n  customer: FriendCustomerNetDto\r\n}\r\n\r\nexport const enum YesNoWarning {\r\n  No = 2,\r\n  Warning = 3,\r\n  Yes = 1\r\n}\r\n\r\nexport const enum AnonNetCustomerRegistrationStep {\r\n  Start = 1,\r\n  PersonalInfo = 2,\r\n  LanguageInfo = 3,\r\n  InterestInfo = 4,\r\n  FriendInfo = 5,\r\n  ContactInfo = 6,\r\n  Summary = 7,\r\n  Success = 8\r\n}\r\n\r\nexport const enum AnonStandardCustomerRegistrationStep {\r\n  Start = 1,\r\n  GroupContactInfo = 2,\r\n  PersonalInfo = 3,\r\n  LanguageInfo = 4,\r\n  InterestInfo = 5,\r\n  FriendInfo = 6,\r\n  ContactInfo = 7,\r\n  Summary = 8,\r\n  Success = 9\r\n}\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleCheckboxBitmaskList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleCheckboxBitmaskList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRSimpleCheckboxBitmaskList.vue?vue&type=template&id=6dec8b64\"\nimport script from \"./SPRSimpleCheckboxBitmaskList.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRSimpleCheckboxBitmaskList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRSimpleCheckboxBitmaskList.vue?vue&type=style&index=0&id=6dec8b64&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"comp-wizard-content\">\r\n    <div class=\"container\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <div class=\"row\">\r\n            <div class=\"col-12\">\r\n              <span class=\"h1\"\r\n                    role=\"heading\"\r\n                    aria-level=\"1\"\r\n              >{{ $t('wizard.headerEight') }}</span>\r\n            </div>\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12\">\r\n              <sprvalidation class=\"validation-box\"\r\n                             :validation-errors=\"validationErrors\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12\">\r\n              <sprinput v-model=\"streetaddress\"\r\n                        v-validate=\"'required'\"\r\n                        :hint=\"$t('wizard.streetAddressField')\"\r\n                        :is-valid=\"!errors.has('streetAddressField')\"\r\n                        class=\"bs-input\"\r\n                        name=\"streetAddressField\"\r\n                        dark\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12 col-sm-4\">\r\n              <sprinput v-model=\"zipcode\"\r\n                        v-validate=\"'required|digits:5'\"\r\n                        :hint=\"$t('wizard.zipCodeField')\"\r\n                        class=\"bs-input\"\r\n                        name=\"zipCodeField\"\r\n                        :is-valid=\"!errors.has('zipCodeField')\"\r\n                        dark\r\n              />\r\n            </div>\r\n            <div class=\"col-12 col-sm-8\">\r\n              <sprinput v-model=\"city\"\r\n                        v-validate=\"'required'\"\r\n                        :hint=\"$t('wizard.cityField')\"\r\n                        class=\"bs-input\"\r\n                        :is-valid=\"!errors.has('cityField')\"\r\n                        name=\"cityField\"\r\n                        dark\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12\">\r\n              <sprinput v-model=\"country\"\r\n                        v-validate=\"'required'\"\r\n                        :hint=\"$t('wizard.countryField')\"\r\n                        class=\"bs-input\"\r\n                        :is-valid=\"!errors.has('countryField')\"\r\n                        name=\"countryField\"\r\n                        dark\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12 mt-2\">\r\n              <sprdatepicker v-model=\"age\"\r\n                             v-validate=\"birthdateValidation\"\r\n                             :in-title=\"$t('wizard.ageField') + ': '\"\r\n                             class=\"d-inline-block fill-width wizard-style\"\r\n                             name=\"ageField\"\r\n                             :is-valid=\"!errors.has('ageField') && !dateIsValid\"\r\n                             :wizard-style=\"true\"\r\n                             dark\r\n              />\r\n            </div>\r\n            <div class=\"col-12 col-sm-6\">\r\n              <sprnativelanguageselector v-model=\"language\"\r\n                                         class=\"spr-roundbox-1 spr-shadow pl-3\"\r\n                                         :lang-pool=\"$store.state.wizardModel.spokenLanguages\"\r\n                                         name=\"nativelanguage\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <!-- PreferredContactMethod -->\r\n          <div class=\"row\">\r\n            <div class=\"col-12 text-left\">\r\n              <span class=\"subheader\">{{ $t('wizard.preferredContactMethod') }}</span>\r\n            </div>\r\n            <div class=\"col-12\">\r\n              <checkboxlist v-model=\"preferredContactMethods\"\r\n                            :list=\"preferredContactMethodOptions\"\r\n                            :rows=\"1\"\r\n                            @input=\"vuixCommit\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import sprinput from '../SPRInput.vue'\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n  import sprnativelanguageselector from '../SPRNativeLanguageSelector.vue'\r\n  import sprdatepicker from '../SPRSimpleDatepickerDashYear.vue'\r\n  import checkboxlist from '../SPRSimpleCheckboxBitmaskList.vue'\r\n  import locationutils from '../../mixins/locationutils.js'\r\n  import * as _ from 'lodash'\r\n  import { SprCheckboxBitmaskValue } from '../../types/custom'\r\n  import datetwoyears from '../../helpers/datehelper'\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    streetaddress: string,\r\n    zipcode: string,\r\n    city: string,\r\n    country: string,\r\n    age: string,\r\n    language: string,\r\n    preferredContactMethods: number,\r\n    validatedFields: Array<string>\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'WizardEight',\r\n    components: { sprinput, sprvalidation, sprnativelanguageselector, sprdatepicker, checkboxlist },\r\n    mixins: [locationutils],\r\n    data (): TemplateComponentData {\r\n      return {\r\n        streetaddress: this.$store.state.wizardModel.streetAddress,\r\n        zipcode: this.$store.state.wizardModel.zipCode,\r\n        city: this.$store.state.wizardModel.city,\r\n        country: this.$store.state.wizardModel.country ? this.$store.state.wizardModel.country : 'Suomi',\r\n        age: this.$store.state.wizardModel.age,\r\n        language: this.$store.state.wizardModel.nativeLanguage ? this.$store.state.wizardModel.nativeLanguage : this.$store.state.language,\r\n        preferredContactMethods: this.$store.state.wizardModel.preferredContactMethods,\r\n        validatedFields: ['streetAddressField', 'zipCodeField', 'cityField', 'countryField', 'ageField']\r\n      }\r\n    },\r\n    computed: {\r\n      birthdateValidation () {\r\n        return 'required' //datetwoyears.birthdateValidation()\r\n      },\r\n      dateIsValid (): boolean {\r\n        if (!this.age) return false\r\n        else return !this.age.toString().includes('0000')\r\n      },\r\n      preferredContactMethodOptions (): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        var validItems = _.filter(this.$store.state.preferredContactMethods, (x) => x.id !== 0)\r\n\r\n        return _.map(validItems, function (val, key) {\r\n          return { value: val.id, text: self.$t('wizard.preferredContactMethodOption' + val.id) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      validationErrors: function (): Array<Array<string>> {\r\n        if (!this.validatedFields) {\r\n          return []\r\n        }\r\n        var arr = [] as Array<Array<string>>\r\n        var self = this\r\n        this.validatedFields.forEach(function (fieldName) {\r\n          var err = _.find(self.errors.items, function (item) {\r\n            return item.field === fieldName\r\n          })\r\n          if (err != null) {\r\n            arr.push(['', err.field + '_' + err.rule, ''])\r\n          }\r\n        })\r\n        return arr\r\n      }\r\n    },\r\n    watch: {\r\n      streetaddress: function () {\r\n        this.errors.remove('streetAddressField')\r\n        this.vuixCommit()\r\n      },\r\n      zipcode: function (val) {\r\n        this.errors.remove('zipCodeField')\r\n        if (val.length === 5) {\r\n          var self = this\r\n          // @ts-ignore\r\n          this.cityFromZip(val, this, response => {\r\n            self.city = self.$store.state.language === 'se' ? response.body.citySe : response.body.cityFi\r\n          })\r\n        }\r\n        this.vuixCommit()\r\n      },\r\n      city: function () {\r\n        this.errors.remove('cityField')\r\n        this.vuixCommit()\r\n      },\r\n      country: function () {\r\n        this.errors.remove('countryField')\r\n        this.vuixCommit()\r\n      },\r\n      age: function () {\r\n        this.errors.remove('ageField')\r\n        this.vuixCommit()\r\n      },\r\n      language: function () {\r\n        this.vuixCommit()\r\n      }\r\n    },\r\n    methods: {\r\n      vuixCommit: function () {\r\n        this.$store.commit('setWizardContactInformation', {\r\n          streetaddress: this.streetaddress,\r\n          zipcode: this.zipcode,\r\n          city: this.city,\r\n          country: this.country,\r\n          age: this.age,\r\n          language: this.language,\r\n          preferredContactMethods: this.preferredContactMethods\r\n        })\r\n      },\r\n      validateSection: function () {\r\n        return this.$validator.validateAll()\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  @import '~@/assets/scss/_wizard.scss';\r\n\r\n  .bs-input {\r\n    width: 100%;\r\n  }\r\n  .container {\r\n    max-width: 600px;\r\n    color: $brand-white;\r\n    text-align: left;\r\n\r\n    .subheader {\r\n      color:$brand-white;\r\n      text-transform: uppercase;\r\n      font-family: $font-bold;\r\n      margin: 20px 0 20px 0;\r\n      display:block;\r\n      font-size: 14px;\r\n    }\r\n  }\r\n\r\n  .wizard-style {\r\n    .select-container {\r\n      border: none;\r\n      background: white;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Contact.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Contact.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Wizard-Contact.vue?vue&type=template&id=281668c4&scoped=true\"\nimport script from \"./Wizard-Contact.vue?vue&type=script&lang=ts\"\nexport * from \"./Wizard-Contact.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Wizard-Contact.vue?vue&type=style&index=0&id=281668c4&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"281668c4\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"fill-width comp-wizard-content\"},[_c('div',[_c('span',{staticClass:\"h1\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.$t('wizard.headerProfile')))]),_c('br'),_c('p',[_vm._v(_vm._s(_vm.$t('wizard.ingressProfile')))])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprvalidation',{staticClass:\"validation-box\",attrs:{\"validation-errors\":_vm.validationErrors}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12\"},[_c('textareainput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({max:3000}),expression:\"{max:3000}\"}],staticClass:\"story\",attrs:{\"name\":\"storyField\",\"is-valid\":!_vm.errors.has('storyField'),\"maxlength\":3000,\"value\":_vm.story,\"rows\":6},on:{\"input\":_vm.onStoryChange}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12\"},[_c('div',{staticClass:\"profile-state\"},[_c('baseradiobuttongroup',{ref:\"profileState\",attrs:{\"translation-key\":\"profile.\",\"options\":_vm.statusOptions,\"radio-group-color\":\"basic\"},on:{\"input\":_vm.onProfileStateChange},model:{value:(_vm.profileStateRadio),callback:function ($$v) {_vm.profileStateRadio=$$v},expression:\"profileStateRadio\"}})],1)])]),_c('div',{staticClass:\"col-12 col-sm-10 col-md-6 col-lg-4 offset-sm-1 offset-md-3 offset-lg-4 alreadyinvolved\"},[_c('simplecheckbox',{attrs:{\"title\":_vm.$t('wizard.alreadyInvolved'),\"aria-label\":_vm.$t('wizard.alreadyInvolved')},model:{value:(_vm.AlreadyInvolved),callback:function ($$v) {_vm.AlreadyInvolved=$$v},expression:\"AlreadyInvolved\"}})],1),(_vm.AlreadyInvolved)?_c('div',_vm._l((_vm.$store.state.involvedEventCategories),function(event,index){return _c('sprcheckbox',{key:'wizard_7_' + index,attrs:{\"value\":event.id,\"title\":_vm.$t('eventCategory.' + event.text),\"click-event\":\"box-selected\",\"collection\":_vm.$store.state.wizardModel.areasOfInvolved},on:{\"box-selected\":_vm.handleCheckbox}})}),1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"spr-simple-textarea pb-3\"},[(_vm.title)?_c('label',{staticClass:\"cap-label\",attrs:{\"for\":_vm._uid}},[_vm._v(_vm._s(_vm.title))]):_vm._e(),_c('textarea',{ref:\"autoHeightTextarea\",class:{ 'form-control': true, 'spr-danger': !_vm.isValid },attrs:{\"id\":_vm._uid,\"rows\":_vm.rows},domProps:{\"value\":_vm.textValue},on:{\"keydown\":_vm.onKeyDown,\"input\":function($event){return _vm.updateValue($event.target.value)}}}),_vm._v(\" \"),(_vm.subtext)?_c('span',{staticClass:\"sub-label\"},[_vm._v(_vm._s(_vm.subtext))]):_vm._e(),(_vm.showCounter && !_vm.isValid)?_c('div',{staticClass:\"character-counter\"},[_vm._v(\" \"+_vm._s(_vm.textValue.length)+\" / \"+_vm._s(_vm.maxCharacters)+\" \"+_vm._s(_vm.$t('customerForm.characterLimit'))+\" \")]):(_vm.showCounter)?_c('div',{staticClass:\"character-counter\"},[_vm._v(\" \"+_vm._s(_vm.textValue.length)+\" / \"+_vm._s(_vm.maxCharacters)+\" \")]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"spr-simple-textarea pb-3\">\r\n    <label v-if=\"title\" :for=\"_uid\" class=\"cap-label\">{{ title }}</label>\r\n    <textarea\r\n      :id=\"_uid\"\r\n      ref=\"autoHeightTextarea\"\r\n      :class=\"{ 'form-control': true, 'spr-danger': !isValid }\"\r\n      :rows=\"rows\"\r\n      :value=\"textValue\"\r\n      @keydown=\"onKeyDown\"\r\n      @input=\"updateValue($event.target.value)\"\r\n    />\r\n    <span v-if=\"subtext\" class=\"sub-label\">{{ subtext }}</span>\r\n    <div v-if=\"showCounter && !isValid\" class=\"character-counter\">\r\n      {{ textValue.length }} / {{ maxCharacters }} {{\r\n        $t('customerForm.characterLimit') }}\r\n    </div>\r\n    <div v-else-if=\"showCounter\" class=\"character-counter\">\r\n      {{ textValue.length }} / {{ maxCharacters }}\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import Vue from 'vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'SPRSimpleTextArea',\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      value: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      rows: {\r\n        type: Number,\r\n        default: 3\r\n      },\r\n      subtext: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      isValid: {\r\n        type: Boolean,\r\n        default: true\r\n      },\r\n      maxCharacters: Number,\r\n      showCounter: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      autoResize: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    computed: {\r\n      textValue: {\r\n        get () {\r\n          return this.value || ''\r\n        },\r\n        set (val) {\r\n          this.$emit('input', val)\r\n        }\r\n      }\r\n    },\r\n    mounted () {\r\n      this.calculateHeight()\r\n      // Add a window resize event listener\r\n      window.addEventListener('resize', this.handleWindowResize)\r\n    },\r\n    methods: {\r\n      updateValue (val) {\r\n        this.$emit('input', val)\r\n      },\r\n      calculateHeight () {\r\n        if (!this.autoResize) return\r\n        const ta = this.$refs.autoHeightTextarea\r\n        if (ta) {\r\n          ta.style.height = 'auto' // Reset the height to auto\r\n          ta.style.minHeight = ta.scrollHeight + 'px' // Set the height based on content\r\n        }\r\n      },\r\n      handleWindowResize () {\r\n        this.calculateHeight()\r\n      },\r\n      onKeyDown (evt) {\r\n        this.calculateHeight()\r\n        if (this.value.length >= this.maxCharacters) {\r\n          //keycodes 48 - 90 are numbers and  regular letters\r\n          //keycodes 93 - 111 are numpad and operators\r\n          //keycodes 186 - 222 are characters like semicolon, comma, equal sign, period, brackets, quotes etc.\r\n          //keycode 173 = dash, i'm not sure if these are all of the regular keycodes, but should prevent inserting most of the typical ones.\r\n          if ((evt.keyCode >= 48 && evt.keyCode <= 90) || (evt.keyCode >= 93 && evt.keyCode <= 111) || (evt.keyCode >= 186 && evt.keyCode <= 222) || (evt.keyCode === 173)) {\r\n            evt.preventDefault() //this prevents adding the input character into the field.\r\n          }\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import \"../assets/scss/_variables.scss\";\r\n\r\n.spr-simple-textarea {\r\n  label {\r\n    color: $brand-red;\r\n    padding: 0 20px;\r\n  }\r\n\r\n  textarea {\r\n    border-radius: 2em;\r\n    border: solid 2px $brand-grey3;\r\n    padding: 10px; /* Adjust padding */\r\n    overflow: hidden; /* Hide the scrollbar handle */\r\n    scrollbar-width: none; /* Hide the scrollbar track (for Firefox) */\r\n\r\n    &:focus-visible {\r\n      color: #495057;\r\n      border: solid 2px $brand-grey5;\r\n      outline: 0;\r\n      box-shadow: 0 0 0 0.2rem $brand-grey3;\r\n      transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n    }\r\n  }\r\n  .spr-danger {\r\n    border: 2px solid $brand-red !important;\r\n  }\r\n\r\n  .character-counter {\r\n    font-size: 0.8em;\r\n    color: $brand-red;\r\n  }\r\n\r\n}</style>","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleTextArea.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleTextArea.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRSimpleTextArea.vue?vue&type=template&id=0b208b6b&scoped=true\"\nimport script from \"./SPRSimpleTextArea.vue?vue&type=script&lang=js\"\nexport * from \"./SPRSimpleTextArea.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRSimpleTextArea.vue?vue&type=style&index=0&id=0b208b6b&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"0b208b6b\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"radio-button-group\"},_vm._l((_vm.elements),function(element,index){return _c('baseradiobutton',{key:element,class:_vm.calculatedClass,attrs:{\"option\":index + 1,\"title\":_vm.$t(_vm.translationKey + element)}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"radio-input\"},[_c('label',{staticClass:\"radio-label\",attrs:{\"for\":_vm.title}},[_c('input',{staticClass:\"input-radio\",attrs:{\"id\":_vm.title,\"type\":\"radio\",\"name\":\"radio\",\"tabindex\":\"0\"},domProps:{\"value\":_vm.option},on:{\"change\":function($event){return _vm.$parent.$emit('input', _vm.option)}}}),_vm._v(\" \"+_vm._s(_vm.title)+\" \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"radio-input\">\r\n    <label :for=\"title\" class=\"radio-label\">\r\n      <input :id=\"title\" class=\"input-radio\" type=\"radio\" name=\"radio\" :value=\"option\" tabindex=\"0\" @change=\"$parent.$emit('input', option)\" />\r\n      {{ title }}\r\n    </label>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'BaseRadioButton',\r\n    props: {\r\n      option: {\r\n        type: Number,\r\n        default: -1\r\n      },\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style>\r\n .radio-input {\r\n    float: left;\r\n    width: 350px;\r\n    margin: 0px !important;\r\n}\r\n\r\n.radio-label{\r\n  float: left;\r\n  text-align: left;\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BaseRadioButton.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BaseRadioButton.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./BaseRadioButton.vue?vue&type=template&id=18555df0\"\nimport script from \"./BaseRadioButton.vue?vue&type=script&lang=js\"\nexport * from \"./BaseRadioButton.vue?vue&type=script&lang=js\"\nimport style0 from \"./BaseRadioButton.vue?vue&type=style&index=0&id=18555df0&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"radio-button-group\">\r\n    <baseradiobutton v-for=\"(element, index) in elements\" :key=\"element\" :option=\"index + 1\" :title=\"$t(translationKey + element) \" :class=\"calculatedClass\" />\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n\r\n  import baseradiobutton from './BaseRadioButton.vue'\r\n\r\n  export default {\r\n    name: 'BaseRadioButtonGroup',\r\n    components: { baseradiobutton },\r\n    props: {\r\n      options: {\r\n        required: true,\r\n        type: Array\r\n      },\r\n      translationKey: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    computed: {\r\n      elements: function () {\r\n        if (this.options) {\r\n          return this.options\r\n        }\r\n        return []\r\n      },\r\n      calculatedClass () {\r\n        return 'col-12 col-sm-' + Math.floor(12 / 2)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style>\r\n\r\n .radio-button-group {\r\n    color: white;\r\n    width: 100%;\r\n    border-radius: 8px;\r\n    display: block;\r\n    justify-content: space-between;\r\n    grid-template-columns: 1fr 1fr;\r\n}\r\n\r\n</style>","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BaseRadioButtonGroup.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BaseRadioButtonGroup.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./BaseRadioButtonGroup.vue?vue&type=template&id=5416b8f8\"\nimport script from \"./BaseRadioButtonGroup.vue?vue&type=script&lang=js\"\nexport * from \"./BaseRadioButtonGroup.vue?vue&type=script&lang=js\"\nimport style0 from \"./BaseRadioButtonGroup.vue?vue&type=style&index=0&id=5416b8f8&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"fill-width comp-wizard-content\">\r\n    <div>\r\n      <span class=\"h1\"\r\n            role=\"heading\"\r\n            aria-level=\"1\"\r\n      >{{ $t('wizard.headerProfile') }}</span><br>\r\n      <p>{{ $t('wizard.ingressProfile') }}</p>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <sprvalidation class=\"validation-box\"\r\n                       :validation-errors=\"validationErrors\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Story editor -->\r\n    <div class=\"row\">\r\n      <div class=\"col col-12\">\r\n        <textareainput v-validate=\"{max:3000}\"\r\n                       name=\"storyField\"\r\n                       :is-valid=\"!errors.has('storyField')\"\r\n                       :maxlength=\"3000\"\r\n                       class=\"story\"\r\n                       :value=\"story\"\r\n                       :rows=\"6\"\r\n                       @input=\"onStoryChange\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- profile status -->\r\n    <div class=\"row\">\r\n      <div class=\"col col-12\">\r\n        <div class=\"profile-state\">\r\n          <baseradiobuttongroup ref=\"profileState\"\r\n                                v-model=\"profileStateRadio\"\r\n                                translation-key=\"profile.\"\r\n                                :options=\"statusOptions\"\r\n                                radio-group-color=\"basic\"\r\n                                @input=\"onProfileStateChange\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"col-12 col-sm-10 col-md-6 col-lg-4 offset-sm-1 offset-md-3 offset-lg-4 alreadyinvolved\">\r\n      <simplecheckbox\r\n        v-model=\"AlreadyInvolved\"\r\n        :title=\"$t('wizard.alreadyInvolved')\"\r\n        :aria-label=\"$t('wizard.alreadyInvolved')\"\r\n      />\r\n    </div>\r\n    <div v-if=\"AlreadyInvolved\">\r\n      <sprcheckbox v-for=\"(event, index) in $store.state.involvedEventCategories\"\r\n                   :key=\"'wizard_7_' + index\"\r\n                   :value=\"event.id\"\r\n                   :title=\"$t('eventCategory.' + event.text)\"\r\n                   click-event=\"box-selected\"\r\n                   :collection=\"$store.state.wizardModel.areasOfInvolved\"\r\n                   @box-selected=\"handleCheckbox\"\r\n      />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import baseradiobuttongroup from '../BaseRadioButtonGroup.vue'\r\n  import simplecheckbox from '../SPRSimpleCheckbox.vue'\r\n  import sprcheckbox from '../SPRCheckbox.vue'\r\n\r\n  export default {\r\n    name: 'WizardSeven',\r\n    components: { sprvalidation, textareainput, simplecheckbox, sprcheckbox, baseradiobuttongroup },\r\n    data () {\r\n      return {\r\n        profileState: this.$store.state.wizardModel.profileState,\r\n        validatedFields: ['storyField'],\r\n        registerErrors: [],\r\n        profileStateRadio: 1,\r\n        AlreadyInvolved: false,\r\n        involves: this.$store.state.wizardModel.areasOfInvolved,\r\n        selected: new Set()\r\n      }\r\n    },\r\n    computed: {\r\n      story () {\r\n        return this.$store.state.wizardModel.story\r\n      },\r\n      statusOptions () {\r\n        return _.map(this.$store.state.profileState, function (val, key) {\r\n          return val.id\r\n        })\r\n      },\r\n      validationErrors: function () {\r\n        if (!this.validatedFields) {\r\n          return []\r\n        }\r\n\r\n        var arr = []\r\n        var self = this\r\n        this.validatedFields.forEach(function (fieldName) {\r\n          var err = _.find(self.errors.items, function (item) {\r\n            return item.field === fieldName\r\n          })\r\n          if (err != null) {\r\n            arr.push(['', err.field + '_' + err.rule, ''])\r\n          }\r\n        })\r\n        return arr\r\n      }\r\n    },\r\n    methods: {\r\n      onProfileStateChange: function (value) {\r\n        this.$store.commit('setProfileState', value)\r\n      },\r\n      onProfileState: function (value) {\r\n        this.$store.commit('setProfileState', value)\r\n      },\r\n      onStoryChange: function (value) {\r\n        this.$store.commit('setStory', value)\r\n      },\r\n      validateSection: function () {\r\n        return this.$validator.validateAll()\r\n      },\r\n      handleCheckbox: function (value, isChecked) {\r\n        if (isChecked) {\r\n          this.selected.add(value)\r\n        } else {\r\n          this.selected.delete(value)\r\n        }\r\n        var arr = [...this.selected]\r\n        var sum = 0\r\n\r\n        arr.forEach(function (value) {\r\n          sum += value\r\n        })\r\n\r\n        this.$store.commit('setWizardInvolved', sum)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  @import '~@/assets/scss/_wizard.scss';\r\n\r\n    .alreadyinvolved {\r\n      margin-top: 20px;\r\n      color: $brand-white;\r\n    }\r\n\r\n    .story {\r\n      margin: 0 auto;\r\n      margin-top: 10px;\r\n      margin-bottom: 10px;\r\n      width: 90%;\r\n      max-width: 650px;\r\n\r\n      textarea {\r\n        resize: none;\r\n        font-family: \"Signa-Book\", Sans-Serif;\r\n        font-size: 14px;\r\n        line-height: 20px;\r\n      }\r\n    }\r\n\r\n    .profile-state {\r\n      margin: 0 auto;\r\n      margin-top: 10px;\r\n      margin-bottom: 10px;\r\n      width: 90%;\r\n      max-width: 650px;\r\n    }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Profile.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Profile.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Wizard-Profile.vue?vue&type=template&id=597fa790&scoped=true\"\nimport script from \"./Wizard-Profile.vue?vue&type=script&lang=js\"\nexport * from \"./Wizard-Profile.vue?vue&type=script&lang=js\"\nimport style0 from \"./Wizard-Profile.vue?vue&type=style&index=0&id=597fa790&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"597fa790\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',[_c('font-awesome-icon',{attrs:{\"icon\":\"spinner\",\"size\":\"2x\",\"aria-hidden\":\"true\",\"pulse\":\"\",\"spin\":\"\",\"fixed-width\":\"\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <span>\r\n    <font-awesome-icon icon=\"spinner\" size=\"2x\" aria-hidden=\"true\" pulse spin fixed-width />\r\n  </span>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'SprLoading'\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n@import \"../assets/scss/_variables.scss\";\r\nsvg {\r\n  color: $brand-red;\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRLoading.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRLoading.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRLoading.vue?vue&type=template&id=8018f57a&scoped=true\"\nimport script from \"./SPRLoading.vue?vue&type=script&lang=js\"\nexport * from \"./SPRLoading.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRLoading.vue?vue&type=style&index=0&id=8018f57a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"8018f57a\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div v-if=\"currentStep >= 0\" class=\"comp-wizard\">\r\n    <div :is=\"steps[currentStep]\"\r\n         ref=\"currentStage\"\r\n         class=\"swapped-elements bg-top\"\r\n         :token=\"adToken\"\r\n    />\r\n    <div class=\"common-elements bg-bottom\">\r\n      <div v-if=\"!pending\" class=\"col-12 py-4\">\r\n        <sprbutton :size=\"1\"\r\n                   :title=\"buttonTitle\"\r\n                   click-event=\"wizard-next\"\r\n                   class=\"next-button\"\r\n                   icon=\"chevron-right\"\r\n                   @wizard-next=\"onNext\"\r\n        /><br>\r\n      </div>\r\n      <div v-else class=\"row pending\">\r\n        <div class=\"col-12 py-4\">\r\n          <loading />\r\n        </div>\r\n      </div>\r\n\r\n      <button tabindex=\"0\"\r\n              class=\"back-link\"\r\n              role=\"link\"\r\n              icon=\"chevron-right\" @click=\"onBack\"\r\n      >\r\n        {{ $t('wizard.back') }}\r\n      </button>\r\n      <div class=\"step-container\">\r\n        <font-awesome-icon v-for=\"(step, index) in steps\"\r\n                           :key=\"index\"\r\n                           icon=\"circle\"\r\n                           class=\"step-indicator\"\r\n                           :class=\"{ 'current-step': index === currentStep, 'filled-step': index < currentStep }\"\r\n                           aria-hidden=\"true\"\r\n                           @click=\"stepIndicatorClick(index)\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <div v-else class=\"comp-wizard\" />\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import moment from 'moment'\r\n  import interest from './Wizard-Interest.vue'\r\n  import skills from './Wizard-Skill.vue'\r\n  import language from './Wizard-Language.vue'\r\n  import location from './Wizard-Location.vue'\r\n  import transport from './Wizard-Transport.vue'\r\n  import time from './Wizard-Time.vue'\r\n  import basicinfo from './Wizard-Basic.vue'\r\n  import contactinfo from './Wizard-Contact.vue'\r\n  import profileinfo from './Wizard-Profile.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import locationutils from '../../mixins/locationutils.js'\r\n  import loading from '../SPRLoading.vue'\r\n  import { EnumDto, UserProfileDto } from '@/types'\r\n  import { TranslateResult } from 'vue-i18n'\r\n\r\n  export default Vue.extend({\r\n    name: 'Wizard',\r\n    components: { sprbutton, loading },\r\n    mixins: [locationutils],\r\n    props: {\r\n      token: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        currentStep: -1,\r\n        currentDate: moment().format('DD.MM.YYYY'),\r\n        parameters: {},\r\n        pending: false,\r\n        initialNumbers: { Age: null, TravelTime: null },\r\n        digiaMap: {\r\n          // AreasOfInterest\r\n          WorkInATeam: 8,\r\n          GuideAndTeach: 4,\r\n          WorkWithYoung: 1,\r\n          HelpInCrisis: 10,\r\n          CollectDonations: 7,\r\n          FirstAid: 9,\r\n          WorkInMulticulturalEnvironment: 11,\r\n          OrganiseActivities: 5,\r\n          WorkWithElderly: 2,\r\n          PromoteWellbeing: 6,\r\n          ImmigrantSupport: 3,\r\n          // AvailabilityTimes\r\n          WeekendMorning: 4,\r\n          WeekdayMorning: 1,\r\n          WeekendEvening: 6,\r\n          WeekdayDaytime: 2,\r\n          WeekendDaytime: 5,\r\n          WeekdayEvening: 3,\r\n          // Languages\r\n          English: 'en',\r\n          Swedish: 'sv',\r\n          Arabic: 'ar',\r\n          Russian: 'ru',\r\n          Finnish: 'fi',\r\n          Estonian: 'et',\r\n          Somali: 'so',\r\n          // PersonalSkills\r\n          CommunicationAndMarketing: 11,\r\n          EventHosting: 3,\r\n          TeamGuide: 6,\r\n          MeetingPeople: 1,\r\n          EventOrganizaton: 8,\r\n          DigitalCompetence: 10,\r\n          TrainPeople: 7,\r\n          PublicPerformances: 4,\r\n          CookingAndBaking: 2,\r\n          PhotographyAndVideo: 9,\r\n          Organizational: 5,\r\n          Rescue: 14,\r\n          HealthCareOrFirstAid: 13,\r\n          FinanceAndAccounting: 12,\r\n          // Transportation\r\n          Own: 1,\r\n          Public: 2,\r\n          Walk: 3,\r\n          Bike: 4\r\n        },\r\n        steps: [interest, skills, language, location, transport, time, profileinfo, contactinfo, basicinfo]\r\n      }\r\n    },\r\n    computed: {\r\n      availabilityTimes (): Array<EnumDto> {\r\n        return this.$store.state.availabilityTimes.filter(x => x.id !== 0)\r\n      },\r\n      wizardState (): UserProfileDto {\r\n        return this.$store.state.wizardModel\r\n      },\r\n      buttonTitle (): TranslateResult {\r\n        if (this.currentStep < this.steps.length - 1) {\r\n          return this.$t('wizard.next')\r\n        }\r\n        return this.$t('wizard.createProfile')\r\n      },\r\n      adToken (): Record<string, any> | null {\r\n        if (this.token) {\r\n          // @ts-ignore cant find mixins\r\n          return this.decodeJwtToken(this.token)\r\n        }\r\n\r\n        return null\r\n      },\r\n      customerUrl (): string {\r\n        return `${this.$store.state.apiBases.paymentservice + this.$store.state.apiEndpoints.membershipcustomer[0]}`\r\n      }\r\n    },\r\n    mounted: function () {\r\n      this.evaluateParameters(this.$route.query)\r\n      this.commitMap()\r\n      const cid = this.$route.query.cid\r\n      if (cid) {\r\n        const url = `${this.customerUrl}${cid}`\r\n        const self = this\r\n        // @ts-ignore cant find mixins\r\n        this.httpPromise('get', url).then(data => {\r\n          self.commitInitialData(data)\r\n          self.startForm()\r\n        }).catch(() => {\r\n          self.startForm()\r\n        })\r\n      } else {\r\n        this.startForm()\r\n      }\r\n    },\r\n    methods: {\r\n      focusOnErrors (): void {\r\n        window.scrollTo({ top: 0, behavior: 'smooth' })\r\n      },\r\n      evaluateParameters: function (parameters) {\r\n        const lowerParams = this.toLower(parameters)\r\n\r\n        const params = {\r\n          Age: lowerParams.age ? Number(lowerParams.age) : null,\r\n          TravelTime: lowerParams.traveltime ? Number(lowerParams.traveltime) : null,\r\n          WorkInATeam: lowerParams.aintworkinateam ? Boolean(lowerParams.aintworkinateam) : null,\r\n          GuideAndTeach: lowerParams.aintguideandteach ? Boolean(lowerParams.aintguideandteach) : null,\r\n          WorkWithYoung: lowerParams.aintworkwithyoung ? Boolean(lowerParams.aintworkwithyoung) : null,\r\n          HelpInCrisis: lowerParams.ainthelpincrisis ? Boolean(lowerParams.ainthelpincrisis) : null,\r\n          CollectDonations: lowerParams.aintcollectdonations ? Boolean(lowerParams.aintcollectdonations) : null,\r\n          FirstAid: lowerParams.aintfirstaid ? Boolean(lowerParams.aintfirstaid) : null,\r\n          WorkInMulticulturalEnvironment: lowerParams.aintworkinmulticulturalenv ? Boolean(lowerParams.aintworkinmulticulturalenv) : null,\r\n          OrganiseActivities: lowerParams.aintorganiseactivities ? Boolean(lowerParams.aintorganiseactivities) : null,\r\n          WorkWithElderly: lowerParams.aintworkwithelderly ? Boolean(lowerParams.aintworkwithelderly) : null,\r\n          PromoteWellbeing: lowerParams.aintpromotewellbeing ? Boolean(lowerParams.aintpromotewellbeing) : null,\r\n          ImmigrantSupport: lowerParams.aintimmigrantsupport ? Boolean(lowerParams.aintimmigrantsupport) : null,\r\n          WeekendMorning: lowerParams.atweekendmorning ? Boolean(lowerParams.atweekendmorning) : null,\r\n          WeekdayMorning: lowerParams.atweekdaymorning ? Boolean(lowerParams.atweekdaymorning) : null,\r\n          WeekendEvening: lowerParams.atweekendevening ? Boolean(lowerParams.atweekendevening) : null,\r\n          WeekdayDaytime: lowerParams.atweekdaydaytime ? Boolean(lowerParams.atweekdaydaytime) : null,\r\n          WeekendDaytime: lowerParams.atweekenddaytime ? Boolean(lowerParams.atweekenddaytime) : null,\r\n          WeekdayEvening: lowerParams.atweekdayevening ? Boolean(lowerParams.atweekdayevening) : null,\r\n          English: lowerParams.langenglish ? Boolean(lowerParams.langenglish) : null,\r\n          Swedish: lowerParams.langswedish ? Boolean(lowerParams.langswedish) : null,\r\n          Arabic: lowerParams.langarabic ? Boolean(lowerParams.langarabic) : null,\r\n          Russian: lowerParams.langrussian ? Boolean(lowerParams.langrussian) : null,\r\n          Finnish: lowerParams.langfinnish ? Boolean(lowerParams.langfinnish) : null,\r\n          Estonian: lowerParams.langestonian ? Boolean(lowerParams.langestonian) : null,\r\n          Somali: lowerParams.langsomali ? Boolean(lowerParams.langsomali) : null,\r\n          CommunicationAndMarketing: lowerParams.pscommunicationandmarketing ? Boolean(lowerParams.pscommunicationandmarketing) : null,\r\n          EventHosting: lowerParams.pseventhosting ? Boolean(lowerParams.pseventhosting) : null,\r\n          TeamGuide: lowerParams.psteamguide ? Boolean(lowerParams.psteamguide) : null,\r\n          MeetingPeople: lowerParams.psmeetingpeople ? Boolean(lowerParams.psmeetingpeople) : null,\r\n          EventOrganizaton: lowerParams.pseventorganizaton ? Boolean(lowerParams.pseventorganizaton) : null,\r\n          DigitalCompetence: lowerParams.psdigitalcompetence ? Boolean(lowerParams.psdigitalcompetence) : null,\r\n          TrainPeople: lowerParams.pstrainpeople ? Boolean(lowerParams.pstrainpeople) : null,\r\n          PublicPerformances: lowerParams.pspublicperformances ? Boolean(lowerParams.pspublicperformances) : null,\r\n          CookingAndBaking: lowerParams.pscookingandbaking ? Boolean(lowerParams.pscookingandbaking) : null,\r\n          PhotographyAndVideo: lowerParams.psphotographyandvideo ? Boolean(lowerParams.psphotographyandvideo) : null,\r\n          Organizational: lowerParams.psorganizational ? Boolean(lowerParams.psorganizational) : null,\r\n          Rescue: lowerParams.psrescue ? Boolean(lowerParams.psrescue) : null,\r\n          HealthCareOrFirstAid: lowerParams.pshealthcareorfirstaid ? Boolean(lowerParams.pshealthcareorfirstaid) : null,\r\n          FinanceAndAccounting: lowerParams.psfinanceandaccounting ? Boolean(lowerParams.psfinanceandaccounting) : null,\r\n          Own: lowerParams.tpcar ? Boolean(lowerParams.tpcar) : null,\r\n          Public: lowerParams.tppublic ? Boolean(lowerParams.tppublic) : null,\r\n          Walk: lowerParams.tpwalk ? Boolean(lowerParams.tpwalk) : null,\r\n          Bike: lowerParams.tpbike ? Boolean(lowerParams.tpbike) : null\r\n        }\r\n\r\n        this.parameters = params\r\n      },\r\n      toLower (params): Record<string, any> {\r\n        const lowerParams = {}\r\n        for (const key in params) {\r\n          lowerParams[key.toLowerCase()] = params[key]\r\n        }\r\n\r\n        return lowerParams\r\n      },\r\n      commitMap: function () {\r\n        var areasOfInterest = ['WorkInATeam', 'GuideAndTeach', 'WorkWithYoung', 'HelpInCrisis', 'CollectDonations', 'FirstAid', 'WorkInMulticulturalEnvironment', 'OrganiseActivities', 'WorkWithElderly', 'PromoteWellbeing', 'ImmigrantSupport']\r\n        this.commitMapList(areasOfInterest, 'setWizardInterests')\r\n\r\n        var availabilityTimes = ['WeekendMorning', 'WeekdayMorning', 'WeekendEvening', 'WeekdayDaytime', 'WeekendDaytime', 'WeekdayEvening']\r\n        this.commitMapList(availabilityTimes, 'setWizardBestTimes')\r\n\r\n        var languages = ['English', 'Swedish', 'Arabic', 'Russian', 'Finnish', 'Estonian', 'Somali']\r\n        this.commitMapList(languages, 'setWizardLanguages')\r\n\r\n        this.commitMapNumbers()\r\n\r\n        var personalSkills = ['CommunicationAndMarketing', 'EventHosting', 'TeamGuide', 'MeetingPeople', 'EventOrganizaton', 'DigitalCompetence', 'TrainPeople', 'PublicPerformances', 'CookingAndBaking', 'PhotographyAndVideo', 'Organizational', 'Rescue', 'HealthCareOrFirstAid', 'FinanceAndAccounting']\r\n        this.commitMapList(personalSkills, 'setWizardSkills')\r\n\r\n        var transportation = ['Own', 'Public', 'Walk', 'Bike']\r\n        this.commitMapList(transportation, 'setWizardTransportation')\r\n      },\r\n      addActiveItem: function (key, items) {\r\n        const from = this.parameters\r\n        const value = this.digiaMap\r\n\r\n        if (from[key] === true) {\r\n          items.push(value[key])\r\n        }\r\n      },\r\n      commitMapList: function (list, action) {\r\n        var items = []\r\n\r\n        for (const item of list) {\r\n          this.addActiveItem(item, items)\r\n        }\r\n\r\n        this.$store.commit(action, items)\r\n      },\r\n      commitMapNumbers: function () {\r\n        // @ts-ignore\r\n        this.initialNumbers.Age = this.parameters.Age ? moment().subtract(this.parameters.Age, 'years').utc(true) : null\r\n        // @ts-ignore\r\n        this.initialNumbers.TravelTime = this.parameters.TravelTime\r\n\r\n        this.$store.commit('setWizardNumberInformation', this.initialNumbers)\r\n      },\r\n      commitInitialData: function (data) {\r\n        this.$store.commit('setWizardBasicInformation', {\r\n          firstName: data.firstName,\r\n          lastName: data.lastName,\r\n          email: data.email,\r\n          phone: data.phone,\r\n          gdpr: false\r\n        })\r\n\r\n        const lang = data.nativeLanguage.toLowerCase()\r\n        this.$store.commit('setWizardContactInformation', {\r\n          streetaddress: data.street,\r\n          zipcode: data.zipCode,\r\n          city: data.city,\r\n          country: 'Suomi',\r\n          age: data.dateOfBirth,\r\n          language: lang\r\n        })\r\n\r\n        this.$store.commit('setWizardWorkingZip', data.zipCode)\r\n        this.$store.commit('setWizardLanguages', [lang])\r\n      },\r\n      startForm: function () {\r\n        if (this.currentStep < 0) {\r\n          this.currentStep = 0\r\n        }\r\n      },\r\n      onNext: function () {\r\n        // @ts-ignore\r\n        if (this.$refs.currentStage.validateSection != null) {\r\n          var self = this\r\n          // @ts-ignore\r\n          this.$refs.currentStage.validateSection().then(function (data) {\r\n            if (data === true) {\r\n              self.incrementStep()\r\n              // @ts-ignore\r\n              if (self.$refs.currentStage.zipCodeChanged) {\r\n                self.prefillCityFromZipcode()\r\n              }\r\n            } else {\r\n              window.scrollTo(0, 0)\r\n            }\r\n          })\r\n        } else {\r\n          this.incrementStep()\r\n        }\r\n      },\r\n      onBack: function () {\r\n        window.scrollTo(0, 0)\r\n        if (this.currentStep === 0) {\r\n          this.$router.push('register')\r\n        }\r\n        this.currentStep = Math.max(this.currentStep - 1, 0)\r\n      },\r\n      incrementStep: function () {\r\n        window.scrollTo(0, 0)\r\n        if (this.currentStep >= this.steps.length - 1) {\r\n          if (this.token && this.token !== '') {\r\n            this.attemptAdRegister()\r\n          } else {\r\n            this.attemptRegister()\r\n          }\r\n        } else {\r\n          this.currentStep = (this.currentStep + 1) % this.steps.length\r\n        }\r\n      },\r\n      stepIndicatorClick: function (index) {\r\n        if (index < this.currentStep && index >= 0) {\r\n          window.scrollTo(0, 0)\r\n          this.currentStep = index\r\n        }\r\n      },\r\n      prefillCityFromZipcode: function () {\r\n        var zip = this.$store.state.wizardModel.zipCode\r\n        var self = this\r\n        // @ts-ignore cannot find mixins\r\n        this.cityFromZip(zip, this, response => {\r\n          self.$store.commit('setWizardCity', self.$store.state.language === 'se' ? response.body.citySe : response.body.cityFi)\r\n        })\r\n      },\r\n      attemptRegister: function () {\r\n        var uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.register[0]\r\n        var payload = this.$store.state.wizardModel as UserProfileDto\r\n       const self = this\r\n\r\n        this.setDefaultValues(payload)\r\n\r\n        this.pending = true\r\n        this.$http.post(uri, payload\r\n        ).then(s => {\r\n          this.pending = false\r\n          if (s.status === 200) {\r\n            if (self.$store.state.enableRegisterToJoinFlow && (!self.$route.query || self.$route.query.cid === undefined)) {\r\n              self.$store.commit('setRegisterId', s.data)\r\n              this.$router.push({ name: 'registerthanks' })\r\n            } else {\r\n              sessionStorage.setItem('email', this.$store.state.wizardModel.email)\r\n              this.$router.push({\r\n                name: 'login',\r\n                query: {\r\n                  message: 'registersuccess'\r\n                }\r\n              })\r\n            }\r\n          } else {\r\n            this.handleError(s)\r\n          }\r\n        }, (err) => {\r\n          console.log('attemptRegister.error', err)\r\n          this.handleError(err)\r\n          this.pending = false\r\n        })\r\n      },\r\n      setDefaultValues (payload: UserProfileDto) {\r\n        // default native language to the language set for the user if its not set\r\n        if (!payload.nativeLanguage || payload.nativeLanguage === '') {\r\n          payload.nativeLanguage = this.$store.state.language\r\n        }\r\n\r\n        // quick and dirty fix\r\n        if (!payload.travelTime || payload.travelTime === '') {\r\n          payload.travelTime = '60'\r\n        }\r\n      },\r\n      attemptAdRegister: function () {\r\n        var uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.adregister[0]\r\n        var payload = this.$store.state.wizardModel as UserProfileDto\r\n        const self = this\r\n\r\n        this.setDefaultValues(payload)\r\n\r\n        this.pending = true\r\n\r\n        this.$http.post(uri, payload,\r\n                        {\r\n                          headers: {\r\n                            Authorization: 'bearer ' + this.token\r\n                          }\r\n                        }\r\n        ).then(s => {\r\n          this.pending = false\r\n          if (s.status === 200) {\r\n            window.location.href = this.$store.state.aduri\r\n          } else {\r\n            this.handleError(s)\r\n          }\r\n        }, (err) => {\r\n          this.handleError(err)\r\n          this.pending = false\r\n        })\r\n      },\r\n      handleError: function (error) {\r\n        var rv = [] as Array<Array<string>>\r\n        if (error.body) {\r\n          // error.body.forEach(s => rv.push(['', this.lcFirst(s.code), '']))\r\n          //this is for the old error handling, which is still used in some niche cases\r\n\r\n          if (error.body.errorCode === 101) {\r\n            // @ts-ignore cannot find mixins\r\n            rv.push(['', this.lcFirst(error.body.translationKey), ''])\r\n          } else {\r\n            if (error.body.description.toLowerCase() === 'emailexists') {\r\n              // @ts-ignore cannot find mixins\r\n              this.showAlertInfo(this.$t('error.emailExists'))\r\n            } else {\r\n              //do we have any other errors? Backend seems to just have emailexists error and generic user/profile creation failed errors.\r\n              //for now using this generic error message for everything else than emailexists.z\r\n\r\n              // @ts-ignore cannot find mixins\r\n              this.showAlertInfo(this.$t('validation.registrationFailed'))\r\n            }\r\n          }\r\n        }\r\n\r\n        console.log(error, rv)\r\n        // @ts-ignore\r\n        this.$refs.currentStage.registerErrors = rv\r\n        this.focusOnErrors()\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .comp-wizard {\r\n    box-sizing: border-box;\r\n    padding: 0px;\r\n    width: 100%;\r\n\r\n    min-height: calc(100vh - 200px);\r\n    padding-bottom: 25px;\r\n    margin-bottom: 15px;\r\n    background:$brand-white center center;\r\n    background-repeat: no-repeat;\r\n    background-size: contain cover;\r\n    text-align: center;\r\n\r\n    display: block;\r\n    display: -ms-grid;\r\n    grid-template-columns: 1fr;\r\n\r\n    -ms-grid-columns: 1fr;\r\n    grid-template-rows: auto 40px 180px;\r\n    -ms-grid-rows: auto 40px 180px;\r\n\r\n    .next-button {\r\n      width: 250px;\r\n    }\r\n\r\n    .bg-top {\r\n      background: $brand-back center center;\r\n    }\r\n    .bg-bottom {\r\n      background: $brand-white center center;\r\n    }\r\n\r\n    .back-link {\r\n      padding: 0;\r\n      background: none;\r\n      border: none;\r\n      font-size: 15px;\r\n      text-transform: uppercase;\r\n      font-family: $font-bold;\r\n      letter-spacing: 1.25px;\r\n      color: $brand-font;\r\n      margin: 25px 0 15px 0;\r\n      display: inline-block;\r\n      cursor: pointer;\r\n      -webkit-touch-callout: none;\r\n      -webkit-user-select: none;\r\n      -khtml-user-select: none;\r\n      -moz-user-select: none;\r\n      -ms-user-select: none;\r\n      user-select: none;\r\n    }\r\n\r\n    .swapped-elements {\r\n      grid-column: 1;\r\n      grid-row: 1;\r\n      -ms-grid-column: 1;\r\n      -ms-grid-row: 1;\r\n    }\r\n\r\n    .common-elements {\r\n      grid-column: 1;\r\n      grid-row: 3;\r\n      -ms-grid-column: 1;\r\n      -ms-grid-row: 3;\r\n    }\r\n\r\n    .step-container {\r\n      .step-indicator {\r\n        margin: 2px;\r\n        font-size: 12px;\r\n        color: $brand-grey11;\r\n        transition: color 0.5s;\r\n      }\r\n      .current-step {\r\n        color: $brand-white;\r\n        transition: color 1s;\r\n      }\r\n      .filled-step {\r\n        color: $brand-grey4;\r\n        cursor: pointer;\r\n      }\r\n    }\r\n\r\n    .privacy-link {\r\n      color: $brand-grey5;\r\n      padding: 20px;\r\n      margin: 18px;\r\n      // display: inline-block;\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Wizard.vue?vue&type=template&id=508c203e&scoped=true\"\nimport script from \"./Wizard.vue?vue&type=script&lang=ts\"\nexport * from \"./Wizard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Wizard.vue?vue&type=style&index=0&id=508c203e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"508c203e\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comp-wizard-join\"},[_c(_vm.steps[_vm.currentStep],{ref:\"currentStage\",tag:\"div\",staticClass:\"swapped-elements\",attrs:{\"value\":_vm.formInfo,\"memberships\":_vm.membershipTypes,\"flow\":_vm.flow}}),_c('div',{staticClass:\"common-elements\"},[(_vm.currentStep < _vm.steps.length - 1)?_c('sprbutton',{staticClass:\"next-button\",attrs:{\"size\":1,\"title\":_vm.$t('wizard.next'),\"click-event\":\"wizard-next\",\"icon\":\"chevron-right\"},on:{\"wizard-next\":_vm.onNext}}):_vm._e(),_c('br'),_c('button',{staticClass:\"back-link\",attrs:{\"tabindex\":\"0\",\"role\":\"link\"},on:{\"click\":_vm.onBack}},[_vm._v(\" \"+_vm._s(_vm.$t('wizard.back'))+\" \")]),_c('div',{staticClass:\"step-container\"},_vm._l((_vm.steps),function(step,index){return _c('font-awesome-icon',{key:index,staticClass:\"step-indicator\",class:{ 'current-step': index === _vm.currentStep, 'filled-step': index < _vm.currentStep },attrs:{\"icon\":\"circle\",\"aria-hidden\":\"true\"},on:{\"click\":function($event){return _vm.stepIndicatorClick(index)}}})}),1),_c('a',{staticClass:\"privacy-link link\",attrs:{\"href\":\"https://www.punainenristi.fi/tietosuoja\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t('wizard.privacyPolicy')))])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"comp-wizard-content container join-container\"},[_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12\"},[_c('div',[_c('span',{staticClass:\"h1\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.$t('join.personalHeader')))])])]),_c('banner',{attrs:{\"banner-text\":_vm.$t('join.personalHeaderBanner')}}),_c('div',{staticClass:\"col-12\"},[_c('sprvalidation',{staticClass:\"validation-box\",attrs:{\"validation-errors\":_vm.validationErrors}})],1),_c('div',{staticClass:\"col-12\"},[_c('p',[_vm._v(_vm._s(_vm.$t('join.personalDescription')))])])],1),_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12 col-sm-12\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"w-100\",attrs:{\"hint\":_vm.$t('wizard.firstNameField'),\"is-valid\":!_vm.errors.has('firstNameField'),\"name\":\"firstNameField\",\"data-vv-delay\":\"15000\",\"dark\":\"\"},model:{value:(_vm.value.personal.firstName),callback:function ($$v) {_vm.$set(_vm.value.personal, \"firstName\", $$v)},expression:\"value.personal.firstName\"}})],1),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"w-100\",attrs:{\"hint\":_vm.$t('wizard.lastNameField'),\"is-valid\":!_vm.errors.has('lastNameField'),\"name\":\"lastNameField\",\"data-vv-delay\":\"15000\",\"dark\":\"\"},model:{value:(_vm.value.personal.lastName),callback:function ($$v) {_vm.$set(_vm.value.personal, \"lastName\", $$v)},expression:\"value.personal.lastName\"}})],1)]),_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12\"},[_c('date',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.birthdateValidation),expression:\"birthdateValidation\"}],staticClass:\"fill-width wizard-style ml-1 mt-2\",attrs:{\"in-title\":_vm.$t('wizard.ageField') + ': ',\"name\":\"ageField\",\"is-valid\":!_vm.errors.has('ageField'),\"wizard-style\":true,\"dark\":\"\"},model:{value:(_vm.value.personal.age),callback:function ($$v) {_vm.$set(_vm.value.personal, \"age\", $$v)},expression:\"value.personal.age\"}})],1)]),_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('native',{staticClass:\"spr-input spr-roundbox-1 spr-shadow pl-3 w-100 mx-1\",attrs:{\"lang-pool\":undefined,\"name\":\"nativeLanguage\",\"alternative-prefix\":\"join.language\"},model:{value:(_vm.value.personal.nativeLanguage),callback:function ($$v) {_vm.$set(_vm.value.personal, \"nativeLanguage\", $$v)},expression:\"value.personal.nativeLanguage\"}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"simpletext\",class:{ 'compact': _vm.compact }},[(_vm.hint)?_c('label',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.hint)+_vm._s(_vm.required ? \"*\" : \"\"))]):_vm._e(),_c('div',{staticClass:\"input-group\"},[(_vm.icon)?_c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text\"},[_c('font-awesome-icon',{attrs:{\"icon\":_vm.icon}})],1)]):_vm._e(),_c('input',{ref:\"inputRef\",class:{ 'spr-danger': !_vm.isValid, 'spr-roundbox-1 text-input form-control': true, 'center': _vm.centerText, 'disabled': _vm.disabled },attrs:{\"type\":_vm.computedType,\"required\":_vm.required,\"placeholder\":_vm.placeholder,\"disabled\":_vm.disabled,\"list\":_vm.list,\"maxlength\":_vm.maxlength,\"title\":_vm.tooltip},domProps:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event.target.value)},\"change\":function($event){return _vm.$emit('change', $event.value, $event.target.value)}}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"simpletext\" :class=\"{ 'compact': compact }\">\r\n    <label v-if=\"hint\" class=\"cap-label\">{{ hint }}{{ required ? \"*\" : \"\" }}</label>\r\n    <div class=\"input-group\">\r\n      <div v-if=\"icon\" class=\"input-group-prepend\">\r\n        <span class=\"input-group-text\"><font-awesome-icon :icon=\"icon\" /></span>\r\n      </div>\r\n      <input ref=\"inputRef\"\r\n             :type=\"computedType\"\r\n             :class=\"{ 'spr-danger': !isValid, 'spr-roundbox-1 text-input form-control': true, 'center': centerText, 'disabled': disabled }\"\r\n             :required=\"required\"\r\n             :placeholder=\"placeholder\"\r\n             :value=\"value\"\r\n             :disabled=\"disabled\"\r\n             :list=\"list\"\r\n             :maxlength=\"maxlength\"\r\n             @input=\"$emit('input', $event.target.value)\"\r\n             @change=\"$emit('change', $event.value, $event.target.value)\"\r\n             :title=\"tooltip\"\r\n      >\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  /* eslint-disable */\r\n  export default {\r\n    name: 'SprSimpleText',\r\n    props: {\r\n      tooltip: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      hint: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      isValid: {\r\n        type: Boolean,\r\n        default: true\r\n      },\r\n      centerText: Boolean,\r\n      unit: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      inputType: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      value: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      required: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      placeholder: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      compact: Boolean,\r\n      disabled: Boolean,\r\n      icon: {\r\n        type: [String, Array],\r\n        default: ''\r\n      },\r\n      list: {\r\n        type: [Array, String, null],\r\n        default: null\r\n      },\r\n      maxlength: {\r\n        type: [Number, null],\r\n        default: null\r\n      }\r\n    },\r\n    // @ts-ignore\r\n    $_veeValidate: {\r\n      value () {\r\n        return this.$refs.inputRef.value\r\n      }\r\n    },\r\n    computed: {\r\n      computedType: function () {\r\n        if (this.inputType) {\r\n          return this.inputType\r\n        }\r\n        return 'text'\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  \r\n  .simpletext {\r\n    padding-bottom: 1rem;\r\n    label {\r\n      padding: 0 20px;\r\n      color: $brand-red;\r\n    }\r\n\r\n    &.compact {\r\n      padding-bottom: 0.5rem;\r\n\r\n      label {\r\n        font-size: 0.8em;\r\n        padding: 0 10px;\r\n        margin-bottom: 0;\r\n      }\r\n      .text-input {\r\n        font-size: 0.8em;\r\n        padding: 5px 10px;\r\n      }\r\n    }\r\n    input {\r\n      &:focus-visible {\r\n        color: #495057;\r\n        border: solid 2px $brand-grey5;\r\n        outline: 0;\r\n        box-shadow: 0 0 0 0.2rem $brand-grey3;\r\n        transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n      }\r\n    }\r\n    .text-input {\r\n      display: block;\r\n      box-sizing: border-box;\r\n      font-family: \"Signa-Light\", Sans-Serif;\r\n      border: 2px solid $brand-grey3;\r\n      padding: 10px 20px;\r\n\r\n      &.disabled {\r\n        cursor: not-allowed;\r\n      }\r\n    }\r\n\r\n    .spr-danger {\r\n      border: 2px solid $brand-red !important;\r\n    }\r\n\r\n    .center {\r\n      text-align: center;\r\n    }\r\n\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleText.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleText.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRSimpleText.vue?vue&type=template&id=227cd983&scoped=true\"\nimport script from \"./SPRSimpleText.vue?vue&type=script&lang=js\"\nexport * from \"./SPRSimpleText.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRSimpleText.vue?vue&type=style&index=0&id=227cd983&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"227cd983\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.bannerVisible)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"option warning-banner\"},[_c('div',{staticClass:\"option-value warning-option\"},[_c('tickcrosswarning',{attrs:{\"value\":_vm.bannerType}})],1),_c('div',{staticClass:\"option-label\"},[_c('div',{staticClass:\"option-label\"},[(_vm.isHtml)?_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.bannerText)},on:{\"click\":_vm.handleClick}}):_c('span',[_vm._v(_vm._s(_vm.bannerText))])])])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"tickcrosswarning\"},[(_vm.isYes)?_c('font-awesome-icon',{staticClass:\"tick\",attrs:{\"icon\":['far', 'check-circle']}}):_vm._e(),(_vm.isNo)?_c('font-awesome-icon',{staticClass:\"cross\",attrs:{\"icon\":['far', 'times-circle']}}):_vm._e(),(_vm.isWarning)?_c('font-awesome-icon',{staticClass:\"warning\",attrs:{\"icon\":['fas', 'exclamation-triangle']}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"tickcrosswarning\">\r\n    <font-awesome-icon v-if=\"isYes\" :icon=\"['far', 'check-circle']\" class=\"tick\" />\r\n    <font-awesome-icon v-if=\"isNo\" :icon=\"['far', 'times-circle']\" class=\"cross\" />\r\n    <font-awesome-icon v-if=\"isWarning\" :icon=\"['fas', 'exclamation-triangle']\" class=\"warning\" />\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { YesNoWarning } from '@/types/custom'\r\n\r\n  export default Vue.extend({\r\n    name: 'TickCrossWarning',\r\n    props: {\r\n      value: {\r\n        type: Number as () => YesNoWarning,\r\n        default: YesNoWarning.No\r\n      }\r\n    },\r\n    computed: {\r\n      isYes (): boolean {\r\n        return this.value === YesNoWarning.Yes\r\n      },\r\n      isNo (): boolean {\r\n        return this.value === YesNoWarning.No\r\n      },\r\n      isWarning (): boolean {\r\n        return this.value === YesNoWarning.Warning\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .tickcrosswarning {\r\n    display:inline-block;\r\n\r\n    svg {\r\n      &.tick {\r\n        color:$brand-success;\r\n      }\r\n      &.cross {\r\n        color:$brand-danger;\r\n      }\r\n      &.warning {\r\n        color:$brand-warning;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRTickCrossWarning.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRTickCrossWarning.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRTickCrossWarning.vue?vue&type=template&id=5a6de6de&scoped=true\"\nimport script from \"./SPRTickCrossWarning.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRTickCrossWarning.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRTickCrossWarning.vue?vue&type=style&index=0&id=5a6de6de&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"5a6de6de\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div v-if=\"bannerVisible\" class=\"col-12\">\r\n    <div class=\"option warning-banner\">\r\n      <div class=\"option-value warning-option\">\r\n          <tickcrosswarning :value=\"bannerType\" />  <!-- 3 = Warning -->\r\n      </div>\r\n      <div class=\"option-label\">\r\n        <div class=\"option-label\">\r\n        <span v-if=\"isHtml\" v-html=\"bannerText\" @click=\"handleClick\"></span>\r\n        <span v-else>{{ bannerText }}</span>\r\n      </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import tickcrosswarning from '@/components/SPRTickCrossWarning.vue'\r\n\r\n  export default Vue.extend({\r\n  name: 'banner',\r\n  components: {\r\n    tickcrosswarning\r\n  },\r\n  props: {\r\n    disabled: {\r\n      type: Boolean,\r\n      required: false,\r\n      default: false\r\n    },\r\n    bannerText: {\r\n      type: String,\r\n      required: false,\r\n      default: ''\r\n    },\r\n    bannerType: {\r\n      type: Number,\r\n      required: false,\r\n      default: 3 // 3 - Warning\r\n    }\r\n  },\r\n  computed: {\r\n    isHtml(): boolean {\r\n        const htmlRegex = /<\\/?[a-z][\\s\\S]*>/i;\r\n        return htmlRegex.test(this.bannerText);\r\n    },\r\n    bannerVisible (): boolean {\r\n      return !!this.bannerText && !this.disabled;\r\n    },\r\n  },\r\n  methods: {\r\n    handleClick(event: Event) {\r\n      const target = event.target as HTMLElement;\r\n      if (target.tagName === 'A' || target.tagName === 'BUTTON') {\r\n        this.$emit('element-clicked', target);\r\n      }\r\n    }\r\n  }\r\n})\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import \"@/assets/scss/_variables.scss\";\r\n\r\n.warning-option {\r\n    margin-left: 11px;\r\n    margin-right: 11px;\r\n  }\r\n\r\n.warning-banner {\r\n  margin-top: 6px;\r\n  padding: 8px;\r\n  display: flex;\r\n  background: lemonchiffon;\r\n}\r\n\r\n</style>","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommonBanner.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommonBanner.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CommonBanner.vue?vue&type=template&id=006ab022&scoped=true\"\nimport script from \"./CommonBanner.vue?vue&type=script&lang=ts\"\nexport * from \"./CommonBanner.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CommonBanner.vue?vue&type=style&index=0&id=006ab022&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"006ab022\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"comp-wizard-content container join-container\">\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12\">\r\n        <div>\r\n          <span class=\"h1\"\r\n                role=\"heading\"\r\n                aria-level=\"1\"\r\n          >{{ $t('join.personalHeader') }}</span>\r\n        </div>\r\n      </div>\r\n      <banner :banner-text=\"$t('join.personalHeaderBanner')\" />\r\n\r\n      <div class=\"col-12\">\r\n        <sprvalidation class=\"validation-box\"\r\n                       :validation-errors=\"validationErrors\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <p>{{ $t('join.personalDescription') }}</p>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12 col-sm-12\">\r\n        <sprinput v-model=\"value.personal.firstName\"\r\n                  v-validate=\"'required'\"\r\n                  :hint=\"$t('wizard.firstNameField')\"\r\n                  class=\"w-100\"\r\n                  :is-valid=\"!errors.has('firstNameField')\"\r\n                  name=\"firstNameField\"\r\n                  data-vv-delay=\"15000\"\r\n                  dark\r\n        />\r\n      </div>\r\n      <div class=\"col-12 col-sm-6\">\r\n        <sprinput v-model=\"value.personal.lastName\"\r\n                  v-validate=\"'required'\"\r\n                  :hint=\"$t('wizard.lastNameField')\"\r\n                  class=\"w-100\"\r\n                  :is-valid=\"!errors.has('lastNameField')\"\r\n                  name=\"lastNameField\"\r\n                  data-vv-delay=\"15000\"\r\n                  dark\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12\">\r\n        <date v-model=\"value.personal.age\"\r\n              v-validate=\"birthdateValidation\"\r\n              :in-title=\"$t('wizard.ageField') + ': '\"\r\n              class=\"fill-width wizard-style ml-1 mt-2\"\r\n              name=\"ageField\"\r\n              :is-valid=\"!errors.has('ageField')\"\r\n              :wizard-style=\"true\"\r\n              dark\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12 col-sm-6\">\r\n        <native v-model=\"value.personal.nativeLanguage\"\r\n                class=\"spr-input spr-roundbox-1 spr-shadow pl-3 w-100 mx-1\"\r\n                :lang-pool=\"undefined\"\r\n                name=\"nativeLanguage\"\r\n                alternative-prefix=\"join.language\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang =\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import sprinput from '../SPRInput.vue'\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n  import date from '../SPRSimpleDatepickerDashYear.vue'\r\n  import native from '../SPRNativeLanguageSelector.vue'\r\n  import datetwoyears from '../../helpers/datehelper'\r\n  import { TranslateResult } from 'vue-i18n'\r\n  import banner from '../common/Banner/CommonBanner.vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    validatedFields: Array<string>\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'JoinPersonal',\r\n    components: { forminput, sprinput, sprvalidation, native, date, banner },\r\n    props: {\r\n      value: {\r\n        type: Object,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        validatedFields: ['firstNameField', 'lastNameField', 'ageField']\r\n      }\r\n    },\r\n    computed: {\r\n      birthdateValidation () {\r\n        return 'required' //datetwoyears.birthdateValidation()\r\n      },\r\n      dateIsValid (): boolean {\r\n        if (!this.value.personal.age) return false\r\n        else return !this.value.personal.age.toString().includes('0000')\r\n      },\r\n      validationErrors: function (): Array<Array<string>> {\r\n        if (!this.validatedFields) {\r\n          return []\r\n        }\r\n        var arr = [] as Array<Array<string>>\r\n        var self = this\r\n        this.validatedFields.forEach(function (fieldName) {\r\n          var err = _.find(self.errors.items, function (item) {\r\n            return item.field === fieldName\r\n          })\r\n          if (err != null) {\r\n            arr.push(['', err.field + '_' + err.rule, ''])\r\n          }\r\n        })\r\n        return arr\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  @import '~@/assets/scss/_wizard.scss';\r\n\r\n  .join-container {\r\n    .row {\r\n      max-width: 600px;\r\n         }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./JoinPersonal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./JoinPersonal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./JoinPersonal.vue?vue&type=template&id=35ae60d4&scoped=true\"\nimport script from \"./JoinPersonal.vue?vue&type=script&lang=ts\"\nexport * from \"./JoinPersonal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./JoinPersonal.vue?vue&type=style&index=0&id=35ae60d4&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"35ae60d4\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comp-wizard-content container join-container\"},[_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"h1\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.$t('join.selectionHeader')))])]),_c('div',{staticClass:\"col-12\"},[_c('sprvalidation',{staticClass:\"validation-box\",attrs:{\"validation-errors\":_vm.validationErrors}})],1),_c('div',{staticClass:\"col-12\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('join.selectionDescription'))+\" \")])])]),_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12\"},_vm._l((_vm.membershipsFiltered),function(p,i){return _c('div',{key:i},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.membershipType),expression:\"membershipType\"}],attrs:{\"id\":'product_' + i,\"type\":\"radio\",\"name\":\"products\"},domProps:{\"value\":p.productCode,\"checked\":_vm._q(_vm.membershipType,p.productCode)},on:{\"change\":function($event){_vm.membershipType=p.productCode}}}),_c('label',{class:{\n                 'membership': true,\n                 selected: _vm.membershipType === p.productCode },attrs:{\"for\":'product_' + i}},[(_vm.showSwedish)?_c('span',{staticClass:\"product\"},[_vm._v(_vm._s(p.descriptionSwe))]):_c('span',{staticClass:\"product\"},[_vm._v(_vm._s(p.descriptionFin))]),_c('span',{staticClass:\"price\"},[_vm._v(_vm._s(p.priceCents / 100)+\"€ \"),(p.annual)?_c('span',[_vm._v(\"/ Vuosi\")]):_vm._e()])])])}),0)]),_c('div',{staticClass:\"row mx-auto text-left\"},[_c('div',{staticClass:\"col-12\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('join.numberOfSections').replace('{number}', _vm.sections.length))+\" \")])])]),_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12\"},[_c('dropdown',{attrs:{\"title\":\"\",\"items\":_vm.sections,\"is-valid\":true},model:{value:(_vm.value.section),callback:function ($$v) {_vm.$set(_vm.value, \"section\", $$v)},expression:\"value.section\"}})],1)]),_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12 text-left\"},[_c('p',{directives:[{name:\"linkified\",rawName:\"v-linkified:options\",value:({ nl2br: true }),expression:\"{ nl2br: true }\",arg:\"options\"}],staticClass:\"smaller\",domProps:{\"innerHTML\":_vm._s(_vm.$t('join.gdpr'))}})])]),_c('div',{staticClass:\"row mx-auto text-left\"},[_c('div',{staticClass:\"col-12\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('join.selectionConsentMarket'))+\" \")])])]),_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12 text-left\"},[_c('checkbox',{attrs:{\"title\":_vm.$t('join.withMail')},model:{value:(_vm.value.marketingEmail),callback:function ($$v) {_vm.$set(_vm.value, \"marketingEmail\", $$v)},expression:\"value.marketingEmail\"}})],1)]),_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12 text-left\"},[_c('checkbox',{attrs:{\"title\":_vm.$t('join.withSms')},model:{value:(_vm.value.marketingSms),callback:function ($$v) {_vm.$set(_vm.value, \"marketingSms\", $$v)},expression:\"value.marketingSms\"}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"spr-simple-dropdown\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"cap-label\",attrs:{\"for\":\"exampleFormControlSelect1\"}},[_vm._v(_vm._s(_vm.requiredTitle))]),_c('div',{staticClass:\"spr-roundbox-1\",class:{ 'spr-danger': !_vm.isValid, 'disabled': _vm.disabled }},[_c('select',{staticClass:\"form-control\",attrs:{\"id\":_vm._uid,\"disabled\":_vm.disabled},domProps:{\"value\":_vm.value},on:{\"change\":function($event){_vm.$emit('input', $event.target.value.toString())}}},[(_vm.placeholder)?_c('option',{attrs:{\"disabled\":\"\"},domProps:{\"value\":null}},[_vm._v(\" \"+_vm._s(_vm.placeholder)+\" \")]):_vm._e(),_vm._l((_vm.items),function(option){return _c('option',{key:option.value,domProps:{\"value\":option.value,\"selected\":option.value === _vm.value ? 'selected' : ''}},[_vm._v(\" \"+_vm._s(option.text)+\" \")])})],2)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"spr-simple-dropdown\">\r\n    <div class=\"form-group\">\r\n      <label for=\"exampleFormControlSelect1\" class=\"cap-label\">{{ requiredTitle }}</label>\r\n      <div class=\"spr-roundbox-1\" :class=\"{ 'spr-danger': !isValid, 'disabled': disabled }\">\r\n        <select :id=\"_uid\" class=\"form-control\" :value=\"value\" :disabled=\"disabled\" @change=\"$emit('input', $event.target.value.toString())\">\r\n          <option v-if=\"placeholder\" disabled :value=\"null\">\r\n            {{ placeholder }}\r\n          </option>\r\n          <option v-for=\"option in items\" :key=\"option.value\" :value=\"option.value\" :selected=\"option.value === value ? 'selected' : ''\">\r\n            {{ option.text }}\r\n          </option>\r\n        </select>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'SprSimpleDropdown',\r\n\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      value: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      items: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      placeholder: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      required: Boolean,\r\n      disabled: Boolean,\r\n      isValid: Boolean\r\n    },\r\n    computed: {\r\n      requiredTitle (): string {\r\n        return this.title + (this.isRequired ? '*' : '')\r\n      },\r\n      isRequired (): boolean {\r\n        if (this.required) {\r\n          return this.required\r\n        } else {\r\n          return false\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .spr-simple-dropdown {\r\n    .spr-roundbox-1 {\r\n\r\n      &.spr-danger {\r\n        border: 2px solid $brand-red !important;\r\n      }\r\n\r\n      &.disabled {\r\n        cursor: not-allowed;\r\n\r\n        .form-control {\r\n          cursor: not-allowed;\r\n        }\r\n      }\r\n\r\n    }\r\n    label {\r\n      color:$brand-red;\r\n      padding:0 20px;\r\n    }\r\n    select {\r\n      border-radius:2rem;\r\n      :active,\r\n      :hover {\r\n        outline-color:$brand-red;\r\n        box-shadow: 0 0 0 0.2rem $brand-grey3;\r\n      }\r\n\r\n      > option:hover {\r\n        box-shadow: 0 0 10px 100px #fff inset;\r\n      }\r\n\r\n      ::after {\r\n        content: \"asdasd\";\r\n        display: block;\r\n        width:30px;\r\n        border:solid 1px red;\r\n      }\r\n\r\n      &:focus-visible {\r\n        color: #495057;\r\n        border: solid 2px $brand-grey5;\r\n        outline: 0;\r\n        box-shadow: 0 0 0 0.2rem $brand-grey3;\r\n        transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n      }\r\n\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleDropdown.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleDropdown.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRSimpleDropdown.vue?vue&type=template&id=527c9a62&scoped=true\"\nimport script from \"./SPRSimpleDropdown.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRSimpleDropdown.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRSimpleDropdown.vue?vue&type=style&index=0&id=527c9a62&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"527c9a62\",\n  null\n  \n)\n\nexport default component.exports","// THIS FILE IS OBSOLETE - Prefer to use Helpers, rather than Mixins in TS files, as Mixins are not picked up.\r\nimport moment from 'moment'\r\nexport default {\r\n  methods: {\r\n    // Gets the age in years\r\n    calculateAge (bDate, offset = 0) {\r\n      return moment().diff(moment(bDate) + moment.duration(offset), 'years')\r\n    },\r\n    calculateDayDiff (pDate) {\r\n      if (!pDate) {\r\n        return\r\n      }\r\n      return moment().diff(moment(pDate), 'days')\r\n    }\r\n  }\r\n}\r\n","<template>\r\n  <div class=\"comp-wizard-content container join-container\">\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12\">\r\n        <span class=\"h1\"\r\n              role=\"heading\"\r\n              aria-level=\"1\"\r\n        >{{ $t('join.selectionHeader') }}</span>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <sprvalidation class=\"validation-box\"\r\n                       :validation-errors=\"validationErrors\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <p>\r\n          {{ $t('join.selectionDescription') }}\r\n        </p>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12\">\r\n        <div v-for=\"(p, i) in membershipsFiltered\" :key=\"i\">\r\n          <input :id=\"'product_' + i\"\r\n                 v-model=\"membershipType\"\r\n                 type=\"radio\"\r\n                 name=\"products\"\r\n                 :value=\"p.productCode\"\r\n          >\r\n          <label :class=\"{\r\n                   'membership': true,\r\n                   selected: membershipType === p.productCode }\"\r\n                 :for=\"'product_' + i\"\r\n          >\r\n\r\n            <span v-if=\"showSwedish\" class=\"product\">{{ p.descriptionSwe }}</span>\r\n            <span v-else class=\"product\">{{ p.descriptionFin }}</span>\r\n            <span class=\"price\">{{ p.priceCents / 100 }}€ <span v-if=\"p.annual\">/ Vuosi</span></span>\r\n          </label>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row mx-auto text-left\">\r\n      <div class=\"col-12\">\r\n        <p>\r\n          {{ $t('join.numberOfSections').replace('{number}', sections.length) }}\r\n        </p>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12\">\r\n        <dropdown v-model=\"value.section\"\r\n                  title=\"\"\r\n                  :items=\"sections\"\r\n                  :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12 text-left\">\r\n        <!-- eslint-disable-next-line vue/no-v-html -->\r\n        <p v-linkified:options=\"{ nl2br: true }\" class=\"smaller\" v-html=\"$t('join.gdpr')\" />\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row mx-auto text-left\">\r\n      <div class=\"col-12\">\r\n        <p>\r\n          {{ $t('join.selectionConsentMarket') }}\r\n        </p>\r\n      </div>\r\n    </div>\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12 text-left\">\r\n        <checkbox v-model=\"value.marketingEmail\"\r\n                  :title=\"$t('join.withMail')\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12 text-left\">\r\n        <checkbox v-model=\"value.marketingSms\"\r\n                  :title=\"$t('join.withSms')\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n  import checkbox from '../SPRSimpleCheckbox.vue'\r\n  import dropdown from '../SPRSimpleDropdown.vue'\r\n  import dates from '../../mixins/dates.js'\r\n\r\n  export default {\r\n    name: 'JoinSection',\r\n    components: { sprvalidation, checkbox, dropdown },\r\n    mixins: [dates],\r\n    props: {\r\n      value: {\r\n        type: Object,\r\n        required: true\r\n      },\r\n      memberships: {\r\n        type: Array,\r\n        default: () => []\r\n      }\r\n    },\r\n    data: function () {\r\n      return {\r\n        membershipType: ''\r\n      }\r\n    },\r\n    computed: {\r\n      membershipsFiltered: function () {\r\n        var self = this\r\n        return _.orderBy(_.filter(this.memberships, function (x) {\r\n          if (x.minAge || x.maxAge) {\r\n            // Offset by +1 day because youth membership should be valid thru the day the person turns 29.\r\n            var age = self.calculateAge(self.value.personal.age, { days: +1 })\r\n            if (x.minAge && age < x.minAge) {\r\n              return false\r\n            }\r\n            if (x.maxAge && age > x.maxAge) {\r\n              return false\r\n            }\r\n          }\r\n          return true\r\n        }), ['priceCents'], ['asc'])\r\n      },\r\n      validationErrors: function () {\r\n        if (!this.validatedFields) {\r\n          return []\r\n        }\r\n\r\n        var arr = []\r\n        var self = this\r\n        this.validatedFields.forEach(function (fieldName) {\r\n          var err = _.find(self.errors.items, function (item) {\r\n            return item.field === fieldName\r\n          })\r\n          if (err != null) {\r\n            arr.push(['', err.field + '_' + err.rule, ''])\r\n          }\r\n        })\r\n\r\n        if (self.registerErrors) {\r\n          self.registerErrors.forEach(function (registrationError) {\r\n            arr.push(registrationError)\r\n          })\r\n        }\r\n\r\n        return arr\r\n      },\r\n      sections: function () {\r\n        return _.orderBy(_.filter(_.map(this.$store.state.joinsections, function (x) {\r\n          return { value: x.name, text: x.name.replace('SPR ', '').replace('FRK ', '') }\r\n        }), function (x) {\r\n          return x.value !== 'Ei osastoa'\r\n        }), function (x) {\r\n          return x.text\r\n        })\r\n      },\r\n      showSwedish: function () {\r\n        return this.$i18n.locale === 'sv'\r\n      }\r\n    },\r\n    watch: {\r\n      membershipType: function (x) {\r\n        // v-model just won't work for some reason. doing it manually then\r\n        this.value.membershipType = x\r\n      }\r\n    },\r\n    mounted: function () {\r\n      if (this.membershipsFiltered && this.membershipsFiltered.length > 0) {\r\n        this.membershipType = this.membershipsFiltered[0].productCode\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  @import '~@/assets/scss/_wizard.scss';\r\n\r\n  .join-container {\r\n    .smaller {\r\n               font-size: 0.75em;\r\n             }\r\n\r\n    .row {\r\n      max-width: 600px;\r\n      color: $brand-white;\r\n    }\r\n\r\n    input[type=radio] {\r\n      display: none;\r\n    }\r\n\r\n    .membership {\r\n      display: flex;\r\n      text-align: left;\r\n      border: 2px solid $brand-white;\r\n      border-radius: 60px;\r\n      padding: 10px 20px;\r\n      justify-content: space-between;\r\n      cursor: pointer;\r\n      transition: background-color 0.3s;\r\n      -webkit-user-select: none;\r\n      -moz-user-select: none;\r\n      -ms-user-select: none;\r\n      user-select: none;\r\n\r\n      &.selected {\r\n        border-color: $brand-red;\r\n        color: $brand-red;\r\n        background-color: $brand-white;\r\n        transition: border-color background-color 0.3s;\r\n      }\r\n\r\n      &:hover {\r\n        border-color: $brand-red;\r\n        transition: border-color 0.3s;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./JoinSection.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./JoinSection.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./JoinSection.vue?vue&type=template&id=6162a7e9&scoped=true\"\nimport script from \"./JoinSection.vue?vue&type=script&lang=js\"\nexport * from \"./JoinSection.vue?vue&type=script&lang=js\"\nimport style0 from \"./JoinSection.vue?vue&type=style&index=0&id=6162a7e9&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"6162a7e9\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comp-wizard-content container join-container\"},[_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"h1\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.$t('join.contactHeader')))])]),_c('div',{staticClass:\"col-12\"},[_c('sprvalidation',{staticClass:\"validation-box\",attrs:{\"validation-errors\":_vm.validationErrors}})],1),_c('div',{staticClass:\"col-12\"},[_c('p',[_vm._v(_vm._s(_vm.$t('join.contactDescription')))])])]),_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"w-100\",attrs:{\"hint\":_vm.$t('wizard.streetAddressField'),\"is-valid\":!_vm.errors.has('streetAddressField'),\"name\":\"streetAddressField\",\"data-vv-delay\":\"15000\",\"dark\":\"\"},model:{value:(_vm.value.address.street),callback:function ($$v) {_vm.$set(_vm.value.address, \"street\", $$v)},expression:\"value.address.street\"}})],1)]),_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|digits:5'),expression:\"'required|digits:5'\"}],staticClass:\"w-100 mt-2\",attrs:{\"hint\":_vm.$t('wizard.zipCodeField'),\"name\":\"zipCodeField\",\"data-vv-delay\":\"15000\",\"is-valid\":!_vm.errors.has('zipCodeField'),\"dark\":\"\"},model:{value:(_vm.value.address.zipCode),callback:function ($$v) {_vm.$set(_vm.value.address, \"zipCode\", $$v)},expression:\"value.address.zipCode\"}})],1),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"w-100 mt-2\",attrs:{\"hint\":_vm.$t('wizard.cityField'),\"is-valid\":!_vm.errors.has('cityField'),\"name\":\"cityField\",\"data-vv-delay\":\"15000\",\"dark\":\"\"},model:{value:(_vm.value.address.city),callback:function ($$v) {_vm.$set(_vm.value.address, \"city\", $$v)},expression:\"value.address.city\"}})],1)]),_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('email'),expression:\"'email'\"}],staticClass:\"w-100 mt-2\",attrs:{\"hint\":_vm.$t('wizard.emailField'),\"is-valid\":!_vm.errors.has('emailField'),\"name\":\"emailField\",\"data-vv-delay\":\"15000\"},model:{value:(_vm.value.address.email),callback:function ($$v) {_vm.$set(_vm.value.address, \"email\", $$v)},expression:\"value.address.email\"}})],1)]),_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12\"},[_c('sprinput',{staticClass:\"w-100 mt-2\",attrs:{\"hint\":_vm.$t('wizard.phoneNumberField'),\"is-valid\":!_vm.errors.has('phoneField'),\"name\":\"phoneField\"},model:{value:(_vm.value.address.phone),callback:function ($$v) {_vm.$set(_vm.value.address, \"phone\", $$v)},expression:\"value.address.phone\"}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-wizard-content container join-container\">\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12\">\r\n        <span class=\"h1\"\r\n              role=\"heading\"\r\n              aria-level=\"1\"\r\n        >{{ $t('join.contactHeader') }}</span>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <sprvalidation class=\"validation-box\"\r\n                       :validation-errors=\"validationErrors\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <p>{{ $t('join.contactDescription') }}</p>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12\">\r\n        <sprinput v-model=\"value.address.street\"\r\n                  v-validate=\"'required'\"\r\n                  :hint=\"$t('wizard.streetAddressField')\"\r\n                  :is-valid=\"!errors.has('streetAddressField')\"\r\n                  class=\"w-100\"\r\n                  name=\"streetAddressField\"\r\n                  data-vv-delay=\"15000\"\r\n                  dark\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12 col-sm-6\">\r\n        <sprinput v-model=\"value.address.zipCode\"\r\n                  v-validate=\"'required|digits:5'\"\r\n                  :hint=\"$t('wizard.zipCodeField')\"\r\n                  class=\"w-100 mt-2\"\r\n                  name=\"zipCodeField\"\r\n                  data-vv-delay=\"15000\"\r\n                  :is-valid=\"!errors.has('zipCodeField')\"\r\n                  dark\r\n        />\r\n      </div>\r\n      <div class=\"col-12 col-sm-6\">\r\n        <sprinput v-model=\"value.address.city\"\r\n                  v-validate=\"'required'\"\r\n                  :hint=\"$t('wizard.cityField')\"\r\n                  class=\"w-100 mt-2\"\r\n                  :is-valid=\"!errors.has('cityField')\"\r\n                  name=\"cityField\"\r\n                  data-vv-delay=\"15000\"\r\n                  dark\r\n        />\r\n      </div>\r\n    </div>\r\n    <!-- email asked here for the first time -->\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12\">\r\n        <sprinput v-model=\"value.address.email\"\r\n                  v-validate=\"'email'\"\r\n                  :hint=\"$t('wizard.emailField')\"\r\n                  class=\"w-100 mt-2\"\r\n                  :is-valid=\"!errors.has('emailField')\"\r\n                  name=\"emailField\"\r\n                  data-vv-delay=\"15000\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12\">\r\n        <sprinput v-model=\"value.address.phone\"\r\n                  :hint=\"$t('wizard.phoneNumberField')\"\r\n                  class=\"w-100 mt-2\"\r\n                  :is-valid=\"!errors.has('phoneField')\"\r\n                  name=\"phoneField\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprinput from '../SPRInput.vue'\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n\r\n  export default {\r\n    name: 'JoinContact',\r\n    components: { sprinput, sprvalidation },\r\n    props: {\r\n      value: {\r\n        type: Object,\r\n        required: true\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        validatedFields: ['streetAddressField', 'zipCodeField', 'cityField']\r\n      }\r\n    },\r\n    computed: {\r\n      validationErrors: function () {\r\n        if (!this.validatedFields) {\r\n          return []\r\n        }\r\n\r\n        var arr = []\r\n        var self = this\r\n        this.validatedFields.forEach(function (fieldName) {\r\n          var err = _.find(self.errors.items, function (item) {\r\n            return item.field === fieldName\r\n          })\r\n          if (err != null) {\r\n            arr.push(['', err.field + '_' + err.rule, ''])\r\n          }\r\n        })\r\n\r\n        if (self.registerErrors) {\r\n          self.registerErrors.forEach(function (registrationError) {\r\n            arr.push(registrationError)\r\n          })\r\n        }\r\n\r\n        return arr\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  @import '~@/assets/scss/_wizard.scss';\r\n\r\n  .join-container {\r\n    .row {\r\n      max-width: 600px;\r\n    }\r\n\r\n    .cap-label {\r\n      display: none;\r\n    }\r\n\r\n    .form-group {\r\n      margin-bottom: 0px;\r\n    }\r\n\r\n    .spr-simple-dropdown {\r\n      padding-top: 5px !important;\r\n      padding-bottom: 3px !important;\r\n      margin-right: -4px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./JoinContact.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./JoinContact.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./JoinContact.vue?vue&type=template&id=3dcb3cea\"\nimport script from \"./JoinContact.vue?vue&type=script&lang=js\"\nexport * from \"./JoinContact.vue?vue&type=script&lang=js\"\nimport style0 from \"./JoinContact.vue?vue&type=style&index=0&id=3dcb3cea&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comp-wizard-content container-fluid join-container\"},[_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"h1\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.$t('join.paymentHeader')))])])]),_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12\"},[_c('p',[_vm._v(_vm._s(_vm.$t('join.paymentDescription')))])])]),(!_vm.value.address.email)?_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12\"},[_c('p',[_vm._v(_vm._s(_vm.$t('join.emailForReceipt')))])]),_c('div',{staticClass:\"col-12\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('email'),expression:\"'email'\"}],staticClass:\"w-100 mt-2\",attrs:{\"hint\":_vm.$t('wizard.emailField'),\"is-valid\":!_vm.errors.has('emailField'),\"name\":\"emailField\"},model:{value:(_vm.protoMail),callback:function ($$v) {_vm.protoMail=$$v},expression:\"protoMail\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('sprbutton',{attrs:{\"size\":1,\"title\":_vm.$t('join.useEmail'),\"click-event\":\"email\"},on:{\"email\":_vm.inputEmail}})],1)]):_vm._e(),_c('div',{staticClass:\"row mx-auto\"},[_c('div',{staticClass:\"col-12\"},[_c('p',[_vm._v(_vm._s(_vm.$t('join.paySelect')))])]),_c('div',{staticClass:\"col-12\"},[(_vm.paymentResponse)?_c('paymentoptions',{attrs:{\"options-response\":_vm.paymentResponse}}):_c('div',{staticClass:\"loading-payments\"},[_c('div',{staticClass:\"brand-red spinner\"},[_c('loading')],1),_c('div',{staticClass:\"brand-white\"},[_vm._v(\" \"+_vm._s(_vm.$t('join.payLoading'))+\" \")])])],1)]),_c('div',{staticClass:\"row mx-auto mt-3\"},[_c('div',{staticClass:\"col-12\"},[_c('p',[_vm._v(_vm._s(_vm.$t('join.orInvoice')))])]),_c('div',{staticClass:\"col-12\"},[_c('sprbutton',{attrs:{\"size\":1,\"title\":_vm.$t('join.payInvoice'),\"click-event\":\"invoice\",\"icon\":\"envelope\"},on:{\"invoice\":_vm.invoice}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"payment-options\"},_vm._l((_vm.optionsResponse.providers),function(provider,i){return _c('paymentprovider',{key:i,attrs:{\"provider\":provider}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"payment-provider\"},[_c('form',{attrs:{\"id\":'payment_' + _vm._uid,\"method\":\"POST\",\"action\":_vm.provider.url},on:{\"submit\":function($event){$event.preventDefault();return _vm.$bus.$emit('payment-selected', $event)}}},[_vm._l((_vm.provider.parameters),function(parameter,index){return _c('input',{key:index,attrs:{\"type\":\"hidden\",\"name\":parameter.name},domProps:{\"value\":parameter.value}})}),_c('input',{style:('background: url(' + _vm.provider.svg + ') no-repeat center center;'),attrs:{\"type\":\"submit\",\"value\":\"\"}})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .payment-provider {\r\n    margin: 2px;\r\n    background: $brand-white;\r\n    padding: 16px 6px;\r\n    border-radius: 5px;\r\n    border: 3px solid $brand-white;\r\n    transition: border-color 0.25s;\r\n\r\n    &:hover\r\n    {\r\n      border: 3px solid $brand-grey3;\r\n      transition: border-color 0.25s;\r\n    }\r\n\r\n    input[type=submit] {\r\n      border: none;\r\n      height: 30px;\r\n      width: 100px;\r\n      cursor: pointer;\r\n    }\r\n  }\r\n</style>\r\n\r\n<template>\r\n  <div class=\"payment-provider\">\r\n    <form :id=\"'payment_' + _uid\"\r\n          method=\"POST\" :action=\"provider.url\" @submit.prevent=\"$bus.$emit('payment-selected', $event)\"\r\n    >\r\n      <input v-for=\"(parameter, index) in provider.parameters\" :key=\"index\" type=\"hidden\" :name=\"parameter.name\" :value=\"parameter.value\">\r\n      <input type=\"submit\" value=\"\" :style=\"'background: url(' + provider.svg + ') no-repeat center center;'\">\r\n    </form>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'PaymentProvider',\r\n    props: {\r\n      provider: {\r\n        type: Object,\r\n        required: true\r\n      }\r\n    },\r\n    data: function () {\r\n      return {\r\n        //\r\n      }\r\n    },\r\n    methods: {\r\n      // not yet\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentProvider.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentProvider.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PaymentProvider.vue?vue&type=template&id=3445dd14\"\nimport script from \"./PaymentProvider.vue?vue&type=script&lang=js\"\nexport * from \"./PaymentProvider.vue?vue&type=script&lang=js\"\nimport style0 from \"./PaymentProvider.vue?vue&type=style&index=0&id=3445dd14&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .payment-options {\r\n    background: rgba(255, 255, 255, 0.3);\r\n    padding:30px 0;\r\n\r\n    .payment-provider {\r\n      display: inline-block;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 400px) {\r\n    .payment-options {\r\n      padding: 0;\r\n      background: none;\r\n    }\r\n  }\r\n</style>\r\n\r\n<template>\r\n  <div class=\"payment-options\">\r\n    <paymentprovider v-for=\"(provider, i) in optionsResponse.providers\"\r\n                     :key=\"i\"\r\n                     :provider=\"provider\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import paymentprovider from '@/components/payment/PaymentProvider.vue'\r\n  export default {\r\n    name: 'PaymentOptions',\r\n    components: { paymentprovider },\r\n    props: {\r\n      optionsResponse: {\r\n        type: Object,\r\n        required: true\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentOptions.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentOptions.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PaymentOptions.vue?vue&type=template&id=0ef558e4\"\nimport script from \"./PaymentOptions.vue?vue&type=script&lang=js\"\nexport * from \"./PaymentOptions.vue?vue&type=script&lang=js\"\nimport style0 from \"./PaymentOptions.vue?vue&type=style&index=0&id=0ef558e4&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"comp-wizard-content container-fluid join-container\">\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12\">\r\n        <span class=\"h1\"\r\n              role=\"heading\"\r\n              aria-level=\"1\"\r\n        >{{ $t('join.paymentHeader') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12\">\r\n        <p>{{ $t('join.paymentDescription') }}</p>\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"!value.address.email\" class=\"row mx-auto\">\r\n      <div class=\"col-12\">\r\n        <p>{{ $t('join.emailForReceipt') }}</p>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <sprinput v-model=\"protoMail\"\r\n                  v-validate=\"'email'\"\r\n                  :hint=\"$t('wizard.emailField')\"\r\n                  class=\"w-100 mt-2\"\r\n                  :is-valid=\"!errors.has('emailField')\"\r\n                  name=\"emailField\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <sprbutton :size=\"1\"\r\n                   :title=\"$t('join.useEmail')\"\r\n                   click-event=\"email\"\r\n                   @email=\"inputEmail\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row mx-auto\">\r\n      <div class=\"col-12\">\r\n        <p>{{ $t('join.paySelect') }}</p>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <paymentoptions v-if=\"paymentResponse\"\r\n                        :options-response=\"paymentResponse\"\r\n        />\r\n        <div v-else class=\"loading-payments\">\r\n          <div class=\"brand-red spinner\">\r\n            <loading />\r\n          </div>\r\n          <div class=\"brand-white\">\r\n            {{ $t('join.payLoading') }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- paper invoice -->\r\n    <div class=\"row mx-auto mt-3\">\r\n      <div class=\"col-12\">\r\n        <p>{{ $t('join.orInvoice') }}</p>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <sprbutton :size=\"1\"\r\n                   :title=\"$t('join.payInvoice')\"\r\n                   click-event=\"invoice\"\r\n                   icon=\"envelope\"\r\n                   @invoice=\"invoice\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n  import paymentoptions from '@/components/payment/PaymentOptions.vue'\r\n  import sprinput from '../SPRInput.vue'\r\n  import loading from '../SPRLoading.vue'\r\n\r\n  export default {\r\n    name: 'JoinPayment',\r\n    components: { sprbutton, paymentoptions, sprinput, loading },\r\n    props: {\r\n      value: {\r\n        type: Object,\r\n        required: true\r\n      },\r\n      flow: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data: function () {\r\n      return {\r\n        transactionId: null,\r\n        paymentResponse: null,\r\n        protoMail: '',\r\n        submitted: false\r\n      }\r\n    },\r\n    computed: {\r\n      validationErrors: function () {\r\n        return []\r\n      },\r\n      checkoutUrl: function () {\r\n        return `${this.$store.state.apiBases.paymentservice + this.$store.state.apiEndpoints.checkout[0]}`\r\n      },\r\n      optionsUrl: function () {\r\n        return `${this.$store.state.apiBases.paymentservice + this.$store.state.apiEndpoints.paymentoptions[0]}`\r\n      },\r\n      cancelUrl: function () {\r\n        return `${this.$store.state.apiBases.paymentservice + this.$store.state.apiEndpoints.paymentcancel[0]}`\r\n      },\r\n      confirmUrl: function () {\r\n        return `${this.$store.state.apiBases.paymentservice + this.$store.state.apiEndpoints.confirminvoice[0]}`\r\n      }\r\n    },\r\n    mounted: function () {\r\n      const self = this\r\n      this.checkout(this.toDto(this.value))\r\n\r\n      this.$bus.$on('payment-selected', function (event) {\r\n        self.submitted = true\r\n        event.target.submit()\r\n      })\r\n    },\r\n    beforeDestroy: async function () {\r\n      this.$bus.$off('payment-selected')\r\n      if (!this.submitted && this.transactionId) {\r\n        await this.cancel(this.transactionId)\r\n      }\r\n    },\r\n    methods: {\r\n      inputEmail: function () {\r\n        const self = this\r\n        this.$validator.validateAll().then(function (data) {\r\n          if (data === true) {\r\n            self.value.address.email = self.protoMail\r\n            self.value.marketingEmail = false\r\n            self.checkout(self.toDto(self.value))\r\n          } else {\r\n            window.scrollTo(0, 0)\r\n          }\r\n        })\r\n      },\r\n      invoice: function () {\r\n        const self = this\r\n        var dto = this.toDto(this.value)\r\n        this.httpPromise('post', this.checkoutUrl, dto)\r\n          .then(success => {\r\n            self.transactionId = success.transactionId\r\n            self.confirmInvoice(success.transactionId)\r\n          })\r\n          .catch(failure => { console.log('failed checking out', dto) })\r\n      },\r\n      checkout: function (dto) {\r\n        const self = this\r\n        this.httpPromise('post', this.checkoutUrl, dto)\r\n          .then(success => {\r\n            self.transactionId = success.transactionId\r\n            self.options(success.transactionId)\r\n          })\r\n          .catch(failure => { console.log('failed checking out', dto) })\r\n      },\r\n      options: function (transactionId) {\r\n        const self = this\r\n        this.httpPromise('get', `${this.optionsUrl}${transactionId}/${this.flow}/${this.$store.state.language}`)\r\n          .then(success => {\r\n            self.paymentResponse = success\r\n          })\r\n          .catch(failure => {\r\n            console.log('failed fetching payment options', failure)\r\n          })\r\n      },\r\n      confirmInvoice: function (transactionId) {\r\n        const self = this\r\n        self.submitted = true\r\n        this.httpPromise('post', `${this.confirmUrl}${transactionId}`)\r\n          .then(success => {\r\n            self.paymentResponse = success\r\n            self.$router.push({\r\n              name: 'joinReturn',\r\n              params: {\r\n                status: 'invoice',\r\n                transactionId: transactionId,\r\n                flow: this.flow\r\n              }\r\n            })\r\n          })\r\n          .catch(failure => {\r\n            self.submitted = false\r\n            console.log('failed ordering invoice', failure)\r\n          })\r\n      },\r\n      cancel: async function (transactionId) {\r\n        await this.$http.delete(`${this.cancelUrl}${transactionId}`)\r\n      },\r\n      toDto: function (jso) {\r\n        return {\r\n          email: (jso.address.email && jso.address.email !== '') ? jso.address.email : 'null-mail@dev.redcross.fi',\r\n          locale: jso.personal.nativeLanguage.toUpperCase(), // this is not correct language\r\n          omaId: jso.omaId, // get this for logged in users\r\n          city: jso.address.city,\r\n          country: jso.address.country,\r\n          phone: jso.address.phone,\r\n          street: jso.address.street,\r\n          zipCode: jso.address.zipCode,\r\n          dateofBirth: jso.personal.age,\r\n          firstName: jso.personal.firstName,\r\n          lastName: jso.personal.lastName,\r\n          nativeLanguage: jso.personal.nativeLanguage.toUpperCase(),\r\n          marketingConsentEmail: jso.marketingEmail,\r\n          marketingConsentPhone: jso.marketingSms,\r\n          section: jso.section,\r\n          items: [\r\n            {\r\n              count: 1,\r\n              code: jso.membershipType\r\n            }\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  @import '~@/assets/scss/_wizard.scss';\r\n\r\n  .join-container {\r\n    .row {\r\n      max-width: 600px;\r\n    }\r\n  }\r\n\r\n  .loading-payments {\r\n    background: rgba(255, 255, 255, 0.3);\r\n    padding: 30px 0;\r\n\r\n    .spinner {\r\n      margin-bottom: 15px;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 400px) {\r\n    .join-container {\r\n      padding: 0;\r\n\r\n      .col-12 {\r\n          padding: 0;\r\n        }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./JoinPayment.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./JoinPayment.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./JoinPayment.vue?vue&type=template&id=8603ed34\"\nimport script from \"./JoinPayment.vue?vue&type=script&lang=js\"\nexport * from \"./JoinPayment.vue?vue&type=script&lang=js\"\nimport style0 from \"./JoinPayment.vue?vue&type=style&index=0&id=8603ed34&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"comp-wizard-join\">\r\n    <div :is=\"steps[currentStep]\"\r\n         ref=\"currentStage\"\r\n         class=\"swapped-elements\"\r\n         :value=\"formInfo\"\r\n         :memberships=\"membershipTypes\"\r\n         :flow=\"flow\"\r\n    />\r\n    <div class=\"common-elements\">\r\n      <sprbutton v-if=\"currentStep < steps.length - 1\"\r\n                 :size=\"1\"\r\n                 :title=\"$t('wizard.next')\"\r\n                 click-event=\"wizard-next\"\r\n                 class=\"next-button\"\r\n                 icon=\"chevron-right\"\r\n                 @wizard-next=\"onNext\"\r\n      /><br>\r\n\r\n      <button tabindex=\"0\"\r\n              class=\"back-link\"\r\n              role=\"link\"\r\n              @click=\"onBack\"\r\n      >\r\n        {{ $t('wizard.back') }}\r\n      </button>\r\n      <div class=\"step-container\">\r\n        <font-awesome-icon v-for=\"(step, index) in steps\"\r\n                           :key=\"index\"\r\n                           icon=\"circle\"\r\n                           class=\"step-indicator\"\r\n                           :class=\"{ 'current-step': index === currentStep, 'filled-step': index < currentStep }\"\r\n                           aria-hidden=\"true\"\r\n                           @click=\"stepIndicatorClick(index)\"\r\n        />\r\n      </div>\r\n      <a class=\"privacy-link link\" href=\"https://www.punainenristi.fi/tietosuoja\" target=\"_blank\">{{ $t('wizard.privacyPolicy') }}</a>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n  import basic from './JoinPersonal.vue'\r\n  import section from './JoinSection.vue'\r\n  import contact from './JoinContact.vue'\r\n  import payment from './JoinPayment.vue'\r\n  import locationutils from '../../mixins/locationutils.js'\r\n\r\n  export default {\r\n    name: 'Join',\r\n    components: { sprbutton, contact },\r\n    mixins: [locationutils],\r\n    props: {\r\n      page: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        formInfo: {\r\n          personal: {\r\n            firstName: '',\r\n            lastName: '',\r\n            age: '',\r\n            nativeLanguage: 'fi'\r\n          },\r\n          address: {\r\n            street: '',\r\n            zipCode: '',\r\n            city: '',\r\n            email: '',\r\n            phone: ''\r\n          },\r\n          section: '',\r\n          marketingEmail: false,\r\n          marketingSms: false,\r\n          omaId: null\r\n        },\r\n        steps: [basic, contact, section, payment],\r\n        currentStep: 0,\r\n        // deep watcher does not work with child props proper, need to cache stuff\r\n        lastHandledZip: '',\r\n        lastHandledCityZip: '',\r\n        lastHandledLanguage: '',\r\n        membershipTypes: []\r\n      }\r\n    },\r\n    computed: {\r\n      productListUrl: function () {\r\n        return `${this.$store.state.apiBases.paymentservice + this.$store.state.apiEndpoints.productlist[0]}`\r\n      },\r\n      flow: function () {\r\n        const source = this.$route.query.source\r\n        return (source || 'default') + '|' + btoa(this.formInfo.address.email)\r\n      }\r\n    },\r\n    watch: {\r\n      formInfo: {\r\n        deep: true,\r\n        handler: function (x) {\r\n          if (!x.gdpr) {\r\n            x.gdpr = null // v-validate does not handle checkboxes well\r\n          }\r\n\r\n          const zip = x.address.zipCode\r\n          if (zip.length === 5 && (zip !== this.lastHandledZip || x.personal.nativeLanguage !== this.lastHandledLanguage)) {\r\n            this.handleZipChange(zip)\r\n          }\r\n\r\n          if (zip.length === 5 && this.lastHandledCityZip !== zip) {\r\n            var self = this\r\n            this.cityFromZip(zip, this, response => {\r\n              self.formInfo.address.city = self.$store.state.language === 'sv' ? response.body.citySe : response.body.cityFi\r\n            })\r\n            this.lastHandledCityZip = zip\r\n          }\r\n        }\r\n      },\r\n      currentStep: function (val) {\r\n        this.$router.replace({ name: this.$route.name, params: { page: (val + 1).toString() } }).catch(() => {})\r\n      }\r\n    },\r\n    mounted: function () {\r\n      this.getProductList()\r\n      const source = this.$route.query.source\r\n\r\n      if (source === 'register') {\r\n        // load data from vuex: register form info\r\n        this.loadFromWizard()\r\n      }\r\n\r\n      if (source === 'profile') {\r\n        // load data from vuex: profile info\r\n        this.loadFromProfile()\r\n      }\r\n\r\n      if (!this.page || this.page !== '1') {\r\n        if (this.$route.path.indexOf('/bli-medlem') >= 0) {\r\n          this.$router.replace('/bli-medlem/1').catch(() => {})\r\n        } else {\r\n          this.$router.replace('/liity-jaseneksi/1').catch(() => {})\r\n        }\r\n      }\r\n    },\r\n    methods: {\r\n      handleZipChange: function (zipCode) {\r\n        const order = [this.formInfo.personal.nativeLanguage === 'sv' ? 'desc' : 'asc']\r\n        const sections = _.orderBy(_.filter(this.$store.state.joinsections, function (x) {\r\n          return x.zipCodes.indexOf(zipCode) >= 0\r\n        }), ['language'], [order])\r\n\r\n        this.formInfo.section = sections.length > 0 ? sections[0].name : ''\r\n        this.lastHandledZip = zipCode\r\n        this.lastHandledLanguage = this.formInfo.personal.nativeLanguage\r\n      },\r\n      getProductList: function () {\r\n        const self = this\r\n        this.httpPromise('get', this.productListUrl).then(data => {\r\n          self.membershipTypes = data\r\n        }).catch(fail => {\r\n          console.log('Fetching products failed!', fail)\r\n        })\r\n      },\r\n      onNext: function () {\r\n        var self = this\r\n        this.$refs.currentStage.$validator.validateAll().then(function (data) {\r\n          if (data === true) {\r\n            self.incrementStep()\r\n          } else {\r\n            window.scrollTo(0, 0)\r\n          }\r\n        })\r\n      },\r\n      onBack: function () {\r\n        window.scrollTo(0, 0)\r\n        this.currentStep = Math.max(this.currentStep - 1, 0)\r\n      },\r\n      incrementStep: function () {\r\n        window.scrollTo(0, 0)\r\n        if (this.currentStep >= this.steps.length - 1) {\r\n          // this is the end\r\n        } else {\r\n          this.currentStep = (this.currentStep + 1) % this.steps.length\r\n        }\r\n      },\r\n      stepIndicatorClick: function (index) {\r\n        if (index < this.currentStep && index >= 0) {\r\n          window.scrollTo(0, 0)\r\n          this.currentStep = index\r\n        }\r\n      },\r\n      handleError: function (error) {\r\n        var rv = []\r\n        if (error.body) {\r\n          error.body.forEach(s => rv.push(['', this.lcFirst(s.code), '']))\r\n        }\r\n\r\n        this.$refs.currentStage.registerErrors = rv\r\n      },\r\n      loadFromWizard: function () {\r\n        this.formInfo = {\r\n          personal: {\r\n            firstName: this.$store.state.wizardModel.firstName,\r\n            lastName: this.$store.state.wizardModel.lastName,\r\n            age: this.$store.state.wizardModel.age,\r\n            nativeLanguage: this.$store.state.wizardModel.nativeLanguage\r\n          },\r\n          address: {\r\n            street: this.$store.state.wizardModel.streetAddress,\r\n            zipCode: this.$store.state.wizardModel.zipCode,\r\n            city: this.$store.state.wizardModel.city,\r\n            email: this.$store.state.wizardModel.email,\r\n            phone: this.$store.state.wizardModel.phoneNumber,\r\n            country: this.$store.state.wizardModel.country // filter this?\r\n          },\r\n          omaId: this.$store.state.registerId\r\n        }\r\n      },\r\n      loadFromProfile: function () {\r\n        this.formInfo = {\r\n          personal: {\r\n            firstName: this.$store.state.profile.firstName,\r\n            lastName: this.$store.state.profile.lastName,\r\n            age: this.$store.state.profile.age,\r\n            nativeLanguage: this.$store.state.profile.nativeLanguage\r\n          },\r\n          address: {\r\n            street: this.$store.state.profile.streetAddress,\r\n            zipCode: this.$store.state.profile.zipCode,\r\n            city: this.$store.state.profile.city,\r\n            email: this.$store.state.profile.email,\r\n            phone: this.$store.state.profile.phoneNumber,\r\n            country: this.$store.state.profile.country // filter this?\r\n          },\r\n          omaId: this.$store.state.profile.profileId\r\n        }\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .comp-wizard-join {\r\n    box-sizing: border-box;\r\n    padding: 0 10px;\r\n    width: 100%;\r\n\r\n    min-height: calc(100vh - 200px);\r\n    padding-bottom: 25px;\r\n\r\n    background:$brand-back center center;\r\n    background-repeat: no-repeat;\r\n    background-size: contain cover;\r\n    text-align: center;\r\n\r\n    display: grid;\r\n    display: -ms-grid;\r\n    grid-template-columns: 1fr;\r\n\r\n    -ms-grid-columns: 1fr;\r\n    grid-template-rows: auto 40px 180px;\r\n    -ms-grid-rows: auto 40px 180px;\r\n\r\n    a {\r\n        color: white;\r\n        text-decoration: underline;\r\n    }\r\n\r\n    .next-button {\r\n      width: 250px;\r\n    }\r\n\r\n    .back-link {\r\n      padding: 0;\r\n      background: none;\r\n      border: none;\r\n      font-size: 15px;\r\n      text-transform: uppercase;\r\n      font-family: $font-bold;\r\n      letter-spacing: 1.25px;\r\n      color: white;\r\n      margin: 25px 0 15px 0;\r\n      display: inline-block;\r\n      cursor: pointer;\r\n      -webkit-touch-callout: none;\r\n      -webkit-user-select: none;\r\n      -khtml-user-select: none;\r\n      -moz-user-select: none;\r\n      -ms-user-select: none;\r\n      user-select: none;\r\n    }\r\n\r\n    .swapped-elements {\r\n      grid-column: 1;\r\n      grid-row: 1;\r\n      -ms-grid-column: 1;\r\n      -ms-grid-row: 1;\r\n    }\r\n\r\n    .common-elements {\r\n      grid-column: 1;\r\n      grid-row: 3;\r\n      -ms-grid-column: 1;\r\n      -ms-grid-row: 3;\r\n    }\r\n\r\n    .step-container {\r\n      .step-indicator {\r\n        margin: 2px;\r\n        font-size: 12px;\r\n        color: $brand-grey11;\r\n        transition: color 0.5s;\r\n      }\r\n      .current-step {\r\n        color: $brand-white;\r\n        transition: color 1s;\r\n      }\r\n      .filled-step {\r\n        color: $brand-grey4;\r\n        cursor: pointer;\r\n      }\r\n    }\r\n\r\n    .privacy-link {\r\n      color: $brand-grey5;\r\n      padding: 2px;\r\n      margin: 18px;\r\n      display: inline-block;\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Join.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Join.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Join.vue?vue&type=template&id=10332554\"\nimport script from \"./Join.vue?vue&type=script&lang=js\"\nexport * from \"./Join.vue?vue&type=script&lang=js\"\nimport style0 from \"./Join.vue?vue&type=style&index=0&id=10332554&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comp-wizard-join-return brand-white\"},[_c('div',{staticClass:\"swapped-elements\"},[_c('div',{staticClass:\"container-fluid comp-wizard-content\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"h1 mt-5 mb-3\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[(_vm.status === 'invoice')?_c('span',[_vm._v(_vm._s(_vm.$t('join.thanksHeaderInvoice')))]):(_vm.status === 'cancel')?_c('span',[_vm._v(_vm._s(_vm.$t('join.thanksHeaderCancel')))]):(_vm.status === 'success')?_c('span',[_vm._v(_vm._s(_vm.$t('join.thanksHeader')))]):_c('span',[_vm._v(_vm._s(_vm.$t('join.thanksHeaderError')))])])])]),(_vm.status == 'invoice')?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('join.invoice'))+\" \")])])]):(_vm.status == 'cancel')?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('p',{directives:[{name:\"linkified\",rawName:\"v-linkified:options\",value:({ nl2br: true }),expression:\"{ nl2br: true }\",arg:\"options\"}],domProps:{\"innerHTML\":_vm._s(_vm.$t('join.cancel'))}})])]):(_vm.status == 'success')?_c('div'):_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('p',{directives:[{name:\"linkified\",rawName:\"v-linkified:options\",value:({ nl2br: true }),expression:\"{ nl2br: true }\",arg:\"options\"}],domProps:{\"innerHTML\":_vm._s(_vm.$t('join.error'))}})])]),(_vm.showCto)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mt-3\"},[_c('p',{directives:[{name:\"linkified\",rawName:\"v-linkified:options\",value:({ nl2br: true }),expression:\"{ nl2br: true }\",arg:\"options\"}],domProps:{\"innerHTML\":_vm._s(_vm.$t('join.volunteerCto'))}})]),_c('div',{staticClass:\"col-12\"},[_c('sprbutton',{staticClass:\"mt-5\",attrs:{\"size\":1,\"title\":_vm.$t('join.volunteerButton'),\"click-event\":\"register\",\"icon\":\"user-plus\"},on:{\"register\":_vm.register}})],1)]):_vm._e(),(_vm.isFlow('register'))?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mt-3\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('join.flowEndRegister'))+\" \")])])]):_vm._e(),(_vm.isFlow('profile'))?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mt-3\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('join.flowEndProfile'))+\" \")])])]):_vm._e(),_c('div')])]),_c('div',{staticClass:\"common-elements\"},[_c('a',{staticClass:\"privacy-link link\",attrs:{\"href\":\"https://www.punainenristi.fi/tietosuoja\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.$t('wizard.privacyPolicy')))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-wizard-join-return brand-white\">\r\n    <div class=\"swapped-elements\">\r\n      <div class=\"container-fluid comp-wizard-content\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <span class=\"h1 mt-5 mb-3\"\r\n                  role=\"heading\"\r\n                  aria-level=\"1\"\r\n            >\r\n              <span v-if=\"status === 'invoice'\">{{ $t('join.thanksHeaderInvoice') }}</span>\r\n              <span v-else-if=\"status === 'cancel'\">{{ $t('join.thanksHeaderCancel') }}</span>\r\n              <span v-else-if=\"status === 'success'\">{{ $t('join.thanksHeader') }}</span>\r\n              <span v-else>{{ $t('join.thanksHeaderError') }}</span>\r\n\r\n            </span>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- invoice -->\r\n        <div v-if=\"status == 'invoice'\" class=\"row\">\r\n          <div class=\"col-12\">\r\n            <p>\r\n              {{ $t('join.invoice') }}\r\n            </p>\r\n          </div>\r\n        </div>\r\n        <!-- success -->\r\n        <div v-else-if=\"status == 'cancel'\" class=\"row\">\r\n          <div class=\"col-12\">\r\n            <!-- eslint-disable-next-line vue/no-v-html -->\r\n            <p v-linkified:options=\"{ nl2br: true }\" v-html=\"$t('join.cancel')\" />\r\n          </div>\r\n        </div>\r\n        <div v-else-if=\"status == 'success'\" />\r\n        <!-- error -->\r\n        <div v-else class=\"row\">\r\n          <div class=\"col-12\">\r\n            <!-- eslint-disable-next-line vue/no-v-html -->\r\n            <p v-linkified:options=\"{ nl2br: true }\" v-html=\"$t('join.error')\" />\r\n          </div>\r\n        </div>\r\n\r\n        <div v-if=\"showCto\" class=\"row\">\r\n          <div class=\"col-12 mt-3\">\r\n            <!-- eslint-disable-next-line vue/no-v-html -->\r\n            <p v-linkified:options=\"{ nl2br: true }\" v-html=\"$t('join.volunteerCto')\" />\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <sprbutton :size=\"1\"\r\n                       :title=\"$t('join.volunteerButton')\"\r\n                       click-event=\"register\"\r\n                       class=\"mt-5\"\r\n                       icon=\"user-plus\"\r\n                       @register=\"register\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <!-- show for users in register-flow -->\r\n        <div v-if=\"isFlow('register')\" class=\"row\">\r\n          <div class=\"col-12 mt-3\">\r\n            <p>\r\n              {{ $t('join.flowEndRegister') }}\r\n            </p>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- show for users in profile-flow -->\r\n        <div v-if=\"isFlow('profile')\" class=\"row\">\r\n          <div class=\"col-12 mt-3\">\r\n            <p>\r\n              {{ $t('join.flowEndProfile') }}\r\n            </p>\r\n          </div>\r\n        </div>\r\n\r\n        <div />\r\n      </div>\r\n    </div>\r\n    <div class=\"common-elements\">\r\n      <a class=\"privacy-link link\" href=\"https://www.punainenristi.fi/tietosuoja\" target=\"_blank\" rel=\"noopener\">{{ $t('wizard.privacyPolicy') }}</a>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n\r\n  export default {\r\n    name: 'JoinReturn',\r\n    components: { sprbutton },\r\n    props: {\r\n      status: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      transactionId: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      flow: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n      }\r\n    },\r\n    computed: {\r\n      showCto: function () {\r\n        return this.isFlow('default') && this.transactionId && this.transactionId.length === 36\r\n      },\r\n      getEmail: function () {\r\n        if (this.flow) {\r\n          const split = this.flow.split('|')\r\n          if (split.length === 2 && split[1].length > 0) {\r\n            return atob(split[1])\r\n          }\r\n        }\r\n        return ''\r\n      }\r\n    },\r\n    mounted: function () {\r\n      if (this.isFlow('register') && (this.status === 'invoice' || this.status === 'success')) {\r\n        const fromQuery = (this.status === 'invoice') ? 'invoice' : 'join'\r\n\r\n        if (this.getEmail) {\r\n          sessionStorage.setItem('email', this.getEmail)\r\n        }\r\n\r\n        this.$router.push({ name: 'login', query: { message: fromQuery } })\r\n      }\r\n    },\r\n    methods: {\r\n      getCustomerUrl: function () {\r\n        return `${this.$store.state.apiBases.paymentservice + this.$store.state.apiEndpoints.membershipcustomer[0]}`\r\n      },\r\n      register: function () {\r\n        this.$router.push({ name: 'wizard', query: { cid: this.transactionId } })\r\n      },\r\n      isFlow: function (flow) {\r\n        return (this.flow && (this.flow.indexOf(flow + '|') >= 0))\r\n      }\r\n    }\r\n  }\r\n\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .comp-wizard-join-return {\r\n    box-sizing: border-box;\r\n    padding: 0 10px;\r\n    width: 100%;\r\n\r\n    min-height: calc(100vh - 200px);\r\n\r\n    background: $brand-back;\r\n    background-repeat: no-repeat;\r\n    background-size: contain cover;\r\n    text-align: center;\r\n    padding-bottom: 20px;\r\n\r\n    display: grid;\r\n    display: -ms-grid;\r\n    grid-template-columns: 1fr;\r\n\r\n    -ms-grid-columns: 1fr;\r\n    grid-template-rows: auto 10px 40px;\r\n    -ms-grid-rows: auto 40px 180px;\r\n\r\n    a {\r\n        color: white;\r\n        text-decoration: underline;\r\n    }\r\n\r\n    .comp-wizard-content {\r\n      max-width: 600px;\r\n    }\r\n\r\n    .swapped-elements {\r\n      grid-column: 1;\r\n      grid-row: 1;\r\n      -ms-grid-column: 1;\r\n      -ms-grid-row: 1;\r\n    }\r\n\r\n    .common-elements {\r\n      grid-column: 1;\r\n      grid-row: 3;\r\n      -ms-grid-column: 1;\r\n      -ms-grid-row: 3;\r\n    }\r\n\r\n    .privacy-link {\r\n      color: $brand-grey5;\r\n      padding: 2px;\r\n      margin: 18px;\r\n      display: inline-block;\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Return.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Return.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Return.vue?vue&type=template&id=9a18a66a\"\nimport script from \"./Return.vue?vue&type=script&lang=js\"\nexport * from \"./Return.vue?vue&type=script&lang=js\"\nimport style0 from \"./Return.vue?vue&type=style&index=0&id=9a18a66a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"landing-page\"},[_c('div',{staticClass:\"lp-content-container\"},[_c('div',{staticClass:\"header\"}),_c('div',{staticClass:\"content\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.$t('campaignLandingPage.hungerdaysContent'))}})])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"landing-page\">\r\n    <div class=\"lp-content-container\">\r\n      <div class=\"header\">\r\n      </div>\r\n      <div class=\"content\">\r\n        <span v-html=\"$t('campaignLandingPage.hungerdaysContent')\" />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n<script>\r\n  export default {\r\n    name: 'Event',\r\n    pageName: 'eventpage',\r\n    data () {\r\n      return {\r\n        sprCampaign: {\r\n          id: -1,\r\n          name: '',\r\n          moreInfoQuestion: '',\r\n          description: '',\r\n          date: '',\r\n          location: '',\r\n          price: '',\r\n          eventRoles: [],\r\n          startTime: {\r\n            day: 1,\r\n            month: 1,\r\n            year: 0,\r\n            hour: 0,\r\n            minute: 0\r\n          },\r\n          endTime: {\r\n            day: 1,\r\n            month: 1,\r\n            year: 0,\r\n            hour: 0,\r\n            minute: 0\r\n          },\r\n          isAllDay: false,\r\n          occurance: 1,\r\n          repeat: 2,\r\n          registrationDeadline: null,\r\n          streetAddress: '',\r\n          zipCode: '',\r\n          city: '',\r\n          contact: {\r\n            firstName: '',\r\n            lastName: '',\r\n            email: '',\r\n            phone: ''\r\n          },\r\n          translations: [],\r\n          image: 'https://sprvatistorage.blob.core.windows.net/eventimages/event_-1-51453337-6F05-4C55-A7E5-9040AD35168A.jpeg',\r\n          imageThumb: 'https://sprvatistorage.blob.core.windows.net/eventimages/eventthumb6-96ef1a0b-b84e-4ce5-84a9-f0764b15278d.jpeg',\r\n          oldImage: '',\r\n          oldImageThumb: '',\r\n          placeName: '',\r\n          isOnline: false,\r\n          isPublic: true,\r\n          duration: '',\r\n          category: 15,\r\n          type: 11,\r\n          eventAdmins: [],\r\n          eventOrganizer: {\r\n            eventOrganizerType: null,\r\n            organizerId: null\r\n          },\r\n          languages: 1\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import \"../../assets/scss/_variables.scss\";\r\n  .landing-page {\r\n    display: flex;\r\n    flex-direction: row;\r\n    justify-content: center;\r\n    align-content: center;\r\n    width: 100%;\r\n    .lp-content-container {\r\n      display: flex;\r\n      flex: 1 0 auto;\r\n      flex-direction: column;\r\n      justify-content: center;\r\n      align-content: center;\r\n      width: 100%;\r\n      max-width: 1200px;\r\n\r\n      .header {\r\n        flex: 1 0 auto;\r\n        min-height: 300px;\r\n        width: 60%;\r\n        margin: auto;\r\n        background-image: url(https://sprvatistorage.blob.core.windows.net/eventimages/event_-1-51453337-6F05-4C55-A7E5-9040AD35168A-1600.jpeg);\r\n        background-repeat: no-repeat;\r\n        background-size: cover;\r\n        padding: 60px 0;\r\n        color: #fff;\r\n      }\r\n\r\n      .content {\r\n        align-self: center;\r\n        width: 60%;\r\n        min-height: calc(100vh - 489px);\r\n      }\r\n\r\n      @media (max-width: $media-sm) and (orientation: portrait) {\r\n        .header {\r\n          width: 90%;\r\n        }\r\n        .content {\r\n          width: 90%;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LandingCampaign.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LandingCampaign.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LandingCampaign.vue?vue&type=template&id=d1dc43e0\"\nimport script from \"./LandingCampaign.vue?vue&type=script&lang=js\"\nexport * from \"./LandingCampaign.vue?vue&type=script&lang=js\"\nimport style0 from \"./LandingCampaign.vue?vue&type=style&index=0&id=d1dc43e0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"anonnetcustomerform col-12\"},[(_vm.isStart)?_c('div',[_c('Start',{on:{\"next\":_vm.next}})],1):_c('div',[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('StepVizualizer',{attrs:{\"step\":_vm.step}}),(_vm.isPersonalInfo)?_c('PersonalInfo',{attrs:{\"customer\":_vm.customer},on:{\"next\":_vm.next,\"prev\":_vm.prev}}):_vm._e(),(_vm.isLanguageInfo)?_c('LanguageInfo',{attrs:{\"customer\":_vm.customer},on:{\"next\":_vm.next,\"prev\":_vm.prev}}):_vm._e(),(_vm.isInterestInfo)?_c('InterestInfo',{attrs:{\"customer\":_vm.customer},on:{\"next\":_vm.next,\"prev\":_vm.prev}}):_vm._e(),(_vm.isFriendInfo)?_c('FriendInfo',{attrs:{\"customer\":_vm.customer},on:{\"next\":_vm.next,\"prev\":_vm.prev}}):_vm._e(),(_vm.isContactInfo)?_c('ContactInfo',{attrs:{\"customer\":_vm.customer},on:{\"next\":_vm.next,\"prev\":_vm.prev}}):_vm._e(),(_vm.isSummary)?_c('Summary',{attrs:{\"customer\":_vm.customer},on:{\"next\":_vm.next,\"prev\":_vm.prev}}):_vm._e(),(_vm.isSuccess)?_c('Success',{on:{\"next\":_vm.next}}):_vm._e()],1)])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"stepvizualizer\"},[_c('div',{staticClass:\"row d-none d-lg-block\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"grid\"},[_c('div',{staticClass:\"line\"}),_c('div',{staticClass:\"step spanstep\",class:_vm.isPersonalInfoDone},[_c('div',{staticClass:\"tick\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"check\",\"aria-hidden\":\"true\"}})],1),_vm._v(\" \"+_vm._s(_vm.$t('customerForm.netPersonalInformation'))+\" \")]),_c('div',{staticClass:\"step\",class:_vm.isLanguageInfoDone},[_c('div',{staticClass:\"tick\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"check\",\"aria-hidden\":\"true\"}})],1),_vm._v(\" \"+_vm._s(_vm.$t('customerForm.netLanguageInformation'))+\" \")]),_c('div',{staticClass:\"step\",class:_vm.isInterestInfoDone},[_c('div',{staticClass:\"tick\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"check\",\"aria-hidden\":\"true\"}})],1),_vm._v(\" \"+_vm._s(_vm.$t('customerForm.myInterests'))+\" \")]),_c('div',{staticClass:\"step\",class:_vm.isFriendInfoDone},[_c('div',{staticClass:\"tick\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"check\",\"aria-hidden\":\"true\"}})],1),_vm._v(\" \"+_vm._s(_vm.$t('customerForm.friendWish'))+\" \")]),_c('div',{staticClass:\"step spanstep\",class:_vm.isContactInfoDone},[_c('div',{staticClass:\"tick\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"check\",\"aria-hidden\":\"true\"}})],1),_vm._v(\" \"+_vm._s(_vm.$t('customerForm.netFriendTitle'))+\" \")])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"stepvizualizer\">\r\n    <div class=\"row d-none d-lg-block\">\r\n      <div class=\"col-12\">\r\n        <div class=\"grid\">\r\n          <div class=\"line\">\r\n          </div>\r\n          <div class=\"step spanstep\" :class=\"isPersonalInfoDone\">\r\n            <div class=\"tick\">\r\n              <font-awesome-icon icon=\"check\" aria-hidden=\"true\" />\r\n            </div>\r\n            {{ $t('customerForm.netPersonalInformation') }}\r\n          </div>\r\n          <div class=\"step\" :class=\"isLanguageInfoDone\">\r\n            <div class=\"tick\">\r\n              <font-awesome-icon icon=\"check\" aria-hidden=\"true\" />\r\n            </div>\r\n            {{ $t('customerForm.netLanguageInformation') }}\r\n          </div>\r\n          <div class=\"step\" :class=\"isInterestInfoDone\">\r\n            <div class=\"tick\">\r\n              <font-awesome-icon icon=\"check\" aria-hidden=\"true\" />\r\n            </div>\r\n            {{ $t('customerForm.myInterests') }}\r\n          </div>\r\n          <div class=\"step\" :class=\"isFriendInfoDone\">\r\n            <div class=\"tick\">\r\n              <font-awesome-icon icon=\"check\" aria-hidden=\"true\" />\r\n            </div>\r\n            {{ $t('customerForm.friendWish') }}\r\n          </div>\r\n          <div class=\"step spanstep\" :class=\"isContactInfoDone\">\r\n            <div class=\"tick\">\r\n              <font-awesome-icon icon=\"check\" aria-hidden=\"true\" />\r\n            </div>\r\n            {{ $t('customerForm.netFriendTitle') }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { AnonNetCustomerRegistrationStep } from '@/types/custom'\r\n\r\n  export default Vue.extend({\r\n    name: 'StepVizualizer',\r\n    props: {\r\n      step: {\r\n        type: Number as () => AnonNetCustomerRegistrationStep,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      isPersonalInfoDone (): string {\r\n        return this.step > AnonNetCustomerRegistrationStep.PersonalInfo\r\n          ? 'done'\r\n          : ''\r\n      },\r\n      isLanguageInfoDone (): string {\r\n        return this.step > AnonNetCustomerRegistrationStep.LanguageInfo\r\n          ? 'done'\r\n          : ''\r\n      },\r\n      isInterestInfoDone (): string {\r\n        return this.step > AnonNetCustomerRegistrationStep.InterestInfo\r\n          ? 'done'\r\n          : ''\r\n      },\r\n      isFriendInfoDone (): string {\r\n        return this.step > AnonNetCustomerRegistrationStep.FriendInfo\r\n          ? 'done'\r\n          : ''\r\n      },\r\n      isContactInfoDone (): string {\r\n        return this.step > AnonNetCustomerRegistrationStep.ContactInfo\r\n          ? 'done'\r\n          : ''\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .stepvizualizer {\r\n    .grid {\r\n      display: grid;\r\n      grid-template-columns: 10% 10% 20% 20% 20% 10% 10%;\r\n      grid-template-rows: auto;\r\n      justify-items: center;\r\n      margin-bottom: 20px;\r\n      margin-top: 20px;\r\n\r\n      .line {\r\n        grid-column-start: 2;\r\n        grid-column-end:7;\r\n        grid-row-start: 1;\r\n        border: solid 2px $brand-red;\r\n        width: 100%;\r\n        margin-top: 40px;\r\n      }\r\n\r\n      .step {\r\n        margin-top: -30px;\r\n        grid-row-start: 2;\r\n        text-align: center;\r\n        font-weight: bold;\r\n        font-size: 14px;\r\n\r\n        &.spanstep {\r\n          grid-column-end: span 2;\r\n        }\r\n\r\n        &.done {\r\n          .tick {\r\n            border-color: $brand-red;\r\n            background-color: $brand-red;\r\n            color: $brand-white;\r\n          }\r\n        }\r\n\r\n        .tick {\r\n          text-align: center;\r\n          margin: 0 auto;\r\n          border-radius: 25px;\r\n          border: solid 2px $brand-grey6;\r\n          z-index: 2;\r\n          width: 50px;\r\n          height: 50px;\r\n          display: flex;\r\n          justify-content: center;\r\n          align-items: center;\r\n          color: $brand-grey6;\r\n          font-size: 20px;\r\n          background-color: $brand-grey1;\r\n          margin-bottom: 10px;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StepVizualizer.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StepVizualizer.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./StepVizualizer.vue?vue&type=template&id=7599c49e\"\nimport script from \"./StepVizualizer.vue?vue&type=script&lang=ts\"\nexport * from \"./StepVizualizer.vue?vue&type=script&lang=ts\"\nimport style0 from \"./StepVizualizer.vue?vue&type=style&index=0&id=7599c49e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"start\"},[_vm._m(0),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"maincontent\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 title\"},[_c('div',{staticClass:\"whitebackground h3\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.newNetCustomerTitle'))+\" \")])]),_c('div',{staticClass:\"col-12 subtitle\"},[_c('div',{staticClass:\"whitebackground\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.newNetCustomerSubTitle'))+\" \")])])]),_c('div',{staticClass:\"row instructions\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"cap-label wrapped\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.newNetCustomerInstructionsTitle'))+\" \")]),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.$t('customerForm.newNetCustomerText'))}})]),_c('div',{staticClass:\"col-12 buttons\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('wizard.next'),\"primary\":true,\"icon\":\"chevron-right\",\"click-event\":\"start\"},on:{\"start\":_vm.onStartClicked}})],1)])])])])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"backimage\"})])])\n}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"start\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"backimage\"></div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"maincontent\">\r\n          <div class=\"container\">\r\n            <div class=\"row\">\r\n              <div class=\"col-12 title\">\r\n                <div class=\"whitebackground h3\">\r\n                  {{ $t('customerForm.newNetCustomerTitle') }}\r\n                </div>\r\n              </div>\r\n              <div class=\"col-12 subtitle\">\r\n                <div class=\"whitebackground\">\r\n                  {{ $t('customerForm.newNetCustomerSubTitle') }}\r\n                </div>\r\n              </div>\r\n            </div>\r\n            <div class=\"row instructions\">\r\n              <div class=\"col-12\">\r\n                <div class=\"cap-label wrapped\">\r\n                  {{ $t('customerForm.newNetCustomerInstructionsTitle') }}\r\n                </div>\r\n                <!-- eslint-disable vue/no-v-html -->\r\n                <div v-html=\"$t('customerForm.newNetCustomerText')\"></div>\r\n              </div>\r\n              <div class=\"col-12 buttons\">\r\n                <sprbutton\r\n                  :size=\"4\"\r\n                  :title=\"$t('wizard.next')\"\r\n                  :primary=\"true\"\r\n                  icon=\"chevron-right\"\r\n                  click-event=\"start\"\r\n                  @start=\"onStartClicked\"\r\n                />\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  export default Vue.extend({\r\n    name: 'Start',\r\n    components: { sprbutton },\r\n    methods: {\r\n      onStartClicked (): void {\r\n        this.$emit('next')\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .start {\r\n    .backimage {\r\n      width: 100%;\r\n      height: 500px;\r\n      overflow: hidden;\r\n      background: url('https://sprvatistorage.blob.core.windows.net/eventimages/defaultevent_18.jpg') no-repeat 0 0;\r\n\r\n      img {\r\n        width: 100%;\r\n      }\r\n    }\r\n    .maincontent {\r\n      margin-top: -400px;\r\n\r\n      .title, .subtitle {\r\n        text-align: center;\r\n        color: $brand-red;\r\n      }\r\n      .whitebackground {\r\n        display: inline-block;\r\n        padding-left: 5px;\r\n        padding-right: 5px;\r\n        background-color: $brand-white;\r\n      }\r\n      .h3{\r\n        @media (max-width: $media-sm-max) {\r\n        font-size: 24px;\r\n        font-family: Signa-Bold, Sans-Serif;\r\n        margin-bottom: 20px;\r\n        line-height: 32px;\r\n      }\r\n\r\n      }\r\n      .subtitle {\r\n        margin-bottom: 50px;\r\n      }\r\n\r\n      .instructions {\r\n        background-color: $brand-white;\r\n        padding-top: 30px;\r\n        padding-bottom: 30px;\r\n\r\n        .cap-label {\r\n          color: $brand-red;\r\n          margin-bottom: 15px;\r\n        }\r\n        .wrapped {\r\n          white-space: normal;\r\n        }\r\n\r\n        .buttons {\r\n          margin-top: 30px;\r\n          text-align: center;\r\n          margin-bottom: 10px;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Start.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Start.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Start.vue?vue&type=template&id=3885f664&scoped=true\"\nimport script from \"./Start.vue?vue&type=script&lang=ts\"\nexport * from \"./Start.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Start.vue?vue&type=style&index=0&id=3885f664&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"3885f664\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localCustomer)?_c('div',{staticClass:\"personalinfo\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row headertitle\"},[_c('div',{staticClass:\"col\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.netPersonalInformation')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.firstname'),\"is-valid\":!_vm.errors.has('customerForm.firstname'),\"name\":\"customerForm.firstname\",\"required\":true},model:{value:(_vm.localCustomer.firstName),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"firstName\", $$v)},expression:\"localCustomer.firstName\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.lastname'),\"is-valid\":!_vm.errors.has('customerForm.lastname'),\"name\":\"customerForm.lastname\",\"required\":true},model:{value:(_vm.localCustomer.lastName),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"lastName\", $$v)},expression:\"localCustomer.lastName\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12 col-lg-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.street'),\"is-valid\":!_vm.errors.has('customerForm.streetAddress'),\"name\":\"customerForm.streetAddress\",\"required\":true},model:{value:(_vm.localCustomer.streetAddress),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"streetAddress\", $$v)},expression:\"localCustomer.streetAddress\"}})],1),_c('div',{staticClass:\"col-12 col-sm-4 col-lg-2\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|regex:^[0-9]{5}$'),expression:\"'required|regex:^[0-9]{5}$'\"}],attrs:{\"hint\":_vm.$t('customerForm.zipCode'),\"is-valid\":!_vm.errors.has('customerForm.zipCode'),\"name\":\"customerForm.zipCode\",\"required\":true},model:{value:(_vm.localCustomer.zipCode),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"zipCode\", $$v)},expression:\"localCustomer.zipCode\"}})],1),_c('div',{staticClass:\"col-12 col-sm-8 col-lg-4\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.city'),\"is-valid\":!_vm.errors.has('customerForm.city'),\"name\":\"customerForm.city\",\"required\":true},model:{value:(_vm.localCustomer.city),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"city\", $$v)},expression:\"localCustomer.city\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.netHomePhone'),\"is-valid\":!_vm.errors.has('customerForm.homePhone'),\"name\":\"customerForm.homePhone\",\"required\":true},model:{value:(_vm.localCustomer.homePhone),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"homePhone\", $$v)},expression:\"localCustomer.homePhone\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|email'),expression:\"'required|email'\"}],attrs:{\"hint\":_vm.$t('customerForm.email'),\"is-valid\":!_vm.errors.has('customerForm.email'),\"name\":\"customerForm.email\",\"required\":true},model:{value:(_vm.localCustomer.email),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"email\", $$v)},expression:\"localCustomer.email\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('div',{staticClass:\"datepicker\"},[_c('simpledate',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"title\":_vm.$t('customerForm.birthDate'),\"name\":\"customerForm.birthDate\",\"is-valid\":!_vm.errors.has('customerForm.birthDate')},model:{value:(_vm.localCustomer.birthdate),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"birthdate\", $$v)},expression:\"localCustomer.birthdate\"}})],1)]),_c('div',{staticClass:\"col-sm-6 col-md-3 col-lg-2\"},[_c('sprdropdownnumberkey',{attrs:{\"title\":_vm.$t('customerForm.gender'),\"items\":_vm.genders,\"is-valid\":true},model:{value:(_vm.localCustomer.gender),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"gender\", $$v)},expression:\"localCustomer.gender\"}})],1)]),(_vm.isUnderage)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"underageinstructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.underageConsent'))+\" \")])]),_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.contactName'),\"is-valid\":!_vm.errors.has('customerForm.contactFirstName'),\"required\":true,\"name\":\"customerForm.contactFirstName\",\"placeholder\":_vm.$t('customerForm.contactFirstname')},model:{value:(_vm.localCustomer.contactFirstName),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"contactFirstName\", $$v)},expression:\"localCustomer.contactFirstName\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t(' '),\"is-valid\":!_vm.errors.has('customerForm.contactLastName'),\"name\":\"customerForm.contactLastName\",\"placeholder\":_vm.$t('customerForm.contactLastname')},model:{value:(_vm.localCustomer.contactLastName),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"contactLastName\", $$v)},expression:\"localCustomer.contactLastName\"}})],1)]):_vm._e(),(_vm.isUnderage)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.underagePhone'),\"is-valid\":!_vm.errors.has('customerForm.contactPhoneNumber'),\"required\":true,\"name\":\"customerForm.contactPhoneNumber\"},model:{value:(_vm.localCustomer.contactPhoneNumber),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"contactPhoneNumber\", $$v)},expression:\"localCustomer.contactPhoneNumber\"}})],1)]):_vm._e()]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"buttons\"},[_c('prevnextbuttons',{on:{\"prev\":_vm.onPrevClicked,\"next\":_vm.onNextClicked}})],1)])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"simpledate pb-3\"},[(_vm.title)?_c('label',{staticClass:\"cap-label brand-red ml-3\"},[_vm._v(_vm._s(_vm.title)+_vm._s(_vm.required ? \"*\" : \"\"))]):_vm._e(),_c('div',{staticClass:\"select-container form-control\",class:{ 'error': !_vm.isValid && !_vm.dark, 'error-dark': !_vm.isValid && _vm.dark, 'wizard spr-shadow': _vm.wizardStyle, 'disabled': _vm.disabled }},[(_vm.inTitle)?_c('span',{staticClass:\"infield-title\"},[_vm._v(_vm._s(_vm.inTitle)+\" \")]):_vm._e(),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.day),expression:\"day\"}],attrs:{\"disabled\":_vm.disabled},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.day=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.dayOptions(_vm.month, _vm.year)),function(x,index){return _c('option',{key:index,domProps:{\"value\":x}},[_vm._v(\" \"+_vm._s(x)+\" \")])}),0),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.month),expression:\"month\"}],attrs:{\"disabled\":_vm.disabled},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.month=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.monthOptions),function(x,index){return _c('option',{key:index,domProps:{\"value\":x.value}},[_vm._v(\" \"+_vm._s(x.text)+\" \")])}),0),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.year),expression:\"year\"}],attrs:{\"disabled\":_vm.disabled},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.year=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.yearOptions),function(x,index){return _c('option',{key:index,domProps:{\"value\":x}},[_vm._v(\" \"+_vm._s(x)+\" \")])}),0)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"simpledate pb-3\">\r\n    <label v-if=\"title\" class=\"cap-label brand-red ml-3\">{{ title }}{{ required ? \"*\" : \"\" }}</label>\r\n    <div class=\"select-container form-control\" :class=\"{ 'error': !isValid && !dark, 'error-dark': !isValid && dark, 'wizard spr-shadow': wizardStyle, 'disabled': disabled }\">\r\n      <span v-if=\"inTitle\" class=\"infield-title\">{{ inTitle }} </span>\r\n      <select v-model=\"day\" :disabled=\"disabled\">\r\n        <option v-for=\"(x, index) in dayOptions(month, year)\" :key=\"index\" :value=\"x\">\r\n          {{ x }}\r\n        </option>\r\n      </select>\r\n      <select v-model=\"month\" :disabled=\"disabled\">\r\n        <option v-for=\"(x, index) in monthOptions\" :key=\"index\" :value=\"x.value\">\r\n          {{ x.text }}\r\n        </option>\r\n      </select>\r\n      <select v-model=\"year\" :disabled=\"disabled\">\r\n        <option v-for=\"(x, index) in yearOptions\" :key=\"index\" :value=\"x\">\r\n          {{ x }}\r\n        </option>\r\n      </select>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import moment from 'moment'\r\n  import { SprDropDownValue } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    day: number,\r\n    month: string, //yuck\r\n    year: number\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'SimpleDate',\r\n    props: {\r\n      dark: Boolean,\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      inTitle: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      hint: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      required: {\r\n        default: false,\r\n        type: Boolean\r\n      },\r\n      includeTime: {\r\n        default: true,\r\n        type: Boolean\r\n      },\r\n      value: {\r\n        type: [String, Date], // this comes in as a UTC date or a date string\r\n        default: undefined\r\n      },\r\n      isValid: {\r\n        default: true,\r\n        type: Boolean\r\n      },\r\n      future: {\r\n        default: 0,\r\n        type: Number\r\n      },\r\n      wizardStyle: {\r\n        default: false,\r\n        type: Boolean\r\n      },\r\n      disabled: {\r\n        default: false,\r\n        type: Boolean\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        day: 1,\r\n        month: '01',\r\n        year: (new Date()).getFullYear()\r\n      }\r\n    },\r\n    computed: {\r\n      monthOptions (): Array<SprDropDownValue> {\r\n        return [\r\n          { value: '01', text: this.$t('datePicker.january') },\r\n          { value: '02', text: this.$t('datePicker.february') },\r\n          { value: '03', text: this.$t('datePicker.march') },\r\n          { value: '04', text: this.$t('datePicker.april') },\r\n          { value: '05', text: this.$t('datePicker.may') },\r\n          { value: '06', text: this.$t('datePicker.june') },\r\n          { value: '07', text: this.$t('datePicker.july') },\r\n          { value: '08', text: this.$t('datePicker.august') },\r\n          { value: '09', text: this.$t('datePicker.september') },\r\n          { value: '10', text: this.$t('datePicker.october') },\r\n          { value: '11', text: this.$t('datePicker.november') },\r\n          { value: '12', text: this.$t('datePicker.december') }\r\n        ]\r\n      },\r\n      yearOptions (): Array<number> {\r\n        var rv = [] as Array<number>\r\n        for (var i = this.currentYear + this.future; i >= 1900; i--) {\r\n          rv.push(i)\r\n        }\r\n        return rv\r\n      },\r\n      currentYear (): number {\r\n        return (new Date()).getFullYear()\r\n      }\r\n    },\r\n    watch: {\r\n      value: function (val) {\r\n        this.initializeInternalFields(val)\r\n      },\r\n      day: function () {\r\n        this.outputValue()\r\n      },\r\n      month: function () {\r\n        this.outputValue()\r\n      },\r\n      year: function () {\r\n        this.outputValue()\r\n      }\r\n    },\r\n    mounted: function () {\r\n      this.initializeInternalFields(this.value)\r\n    },\r\n    methods: {\r\n      initializeInternalFields: function (val) {\r\n        var date: Date\r\n        var time\r\n        if (this.includeTime) {\r\n          date = new Date(val)\r\n          time = moment(val, 'YYYY-MM-DDTHH:mm:ssZ')\r\n        } else {\r\n          if (typeof val === 'string') {\r\n            date = new Date(val)\r\n          } else if (val instanceof Date) {\r\n            date = val\r\n          } else {\r\n            date = new Date()\r\n          }\r\n          const time = moment(date)\r\n        }\r\n\r\n        if (time.isValid()) {\r\n          this.day = Number(time.format('D'))\r\n          this.month = time.format('MM')\r\n          this.year = Number(time.format('YYYY'))\r\n        }\r\n      },\r\n      outputValue: function (): void {\r\n        if (this.includeTime) {\r\n          var rv = `${this.year}-${this.month}-${this.day < 10 ? '0' + this.day : this.day.toString()}T00:00:00Z`\r\n          this.$emit('input', new Date(rv))\r\n        } else {\r\n          const date = new Date(this.year, parseInt(this.month, 10) - 1, this.day, 0, 0, 0, 0)\r\n          this.$emit('input', date)\r\n        }\r\n        const date = new Date(this.year, parseInt(this.month, 10) - 1, this.day, 0, 0, 0, 0)\r\n        this.$emit('input', date)\r\n      },\r\n      dayOptions: function (month, year) {\r\n        var number = 0\r\n        const mon = parseInt(month, 10)\r\n\r\n        if ([1, 3, 5, 7, 8, 10, 12].indexOf(mon) >= 0) {\r\n          number = 31\r\n        } else if (mon === 2) {\r\n          if (this.isLeapYear(year)) {\r\n            number = 29\r\n          } else {\r\n            number = 28\r\n          }\r\n        } else {\r\n          number = 30\r\n        }\r\n\r\n        var rv = [] as Array<number>\r\n        for (var i = 1; i <= number; i++) {\r\n          rv.push(i)\r\n        }\r\n\r\n        return rv\r\n      },\r\n      isLeapYear: function (year) {\r\n        return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .select-container {\r\n    border-radius: 24px;\r\n    border: 2px solid $brand-grey3;\r\n    padding: 0 6px;\r\n    overflow: hidden;\r\n    text-align: left;\r\n    display: inline-table !important;\r\n\r\n    &.error {\r\n      border: 2px solid $brand-red !important;\r\n    }\r\n    &.error-dark {\r\n      border: 2px solid $error-dark !important;\r\n    }\r\n    &.disabled {\r\n      border: 2px solid $brand-grey3 !important;\r\n      background-color: #e9ecef !important;\r\n      cursor: not-allowed;\r\n    }\r\n\r\n    .infield-title,\r\n    select {\r\n      height: 30px;\r\n      border: none;\r\n      padding: 5px;\r\n      font-family: Signa-Light;\r\n      background: none;\r\n      border: 0px;\r\n      outline: 0px;\r\n\r\n      &:disabled {\r\n        cursor: not-allowed;\r\n      }\r\n    }\r\n\r\n    &.wizard {\r\n      background: white;\r\n      border: none;\r\n    }\r\n\r\n    @media (max-width: $media-xs-max) {\r\n      .select-container {\r\n        display: flex;\r\n        .infield-title,\r\n        select {\r\n          flex-grow: 1;\r\n          align-items: center;\r\n          justify-content: center;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleDatepicker.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleDatepicker.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRSimpleDatepicker.vue?vue&type=template&id=2e5f8394&scoped=true\"\nimport script from \"./SPRSimpleDatepicker.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRSimpleDatepicker.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRSimpleDatepicker.vue?vue&type=style&index=0&id=2e5f8394&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2e5f8394\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('dropdowninput',{attrs:{\"title\":_vm.title,\"items\":_vm.stringifiedItems,\"required\":_vm.required,\"is-valid\":_vm.isValid,\"value\":_vm.selected,\"disabled\":_vm.disabled},on:{\"input\":function($event){_vm.$emit('input', Number($event))}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <dropdowninput\r\n    :title=\"title\"\r\n    :items=\"stringifiedItems\"\r\n    :required=\"required\"\r\n    :is-valid=\"isValid\"\r\n    :value=\"selected\"\r\n    :disabled=\"disabled\"\r\n    @input=\"$emit('input', Number($event))\"\r\n  />\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import dropdowninput from './SPRSimpleDropdown.vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'SprDropdownNumberKey',\r\n    components: { dropdowninput },\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      value: {\r\n        type: Number,\r\n        default: -1\r\n      },\r\n      items: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      required: Boolean,\r\n      isValid: Boolean,\r\n      disabled: Boolean\r\n    },\r\n    computed: {\r\n      selected (): string | null {\r\n        return this.value ? this.value.toString() : null\r\n      },\r\n      isRequired (): boolean {\r\n        if (this.required) {\r\n          return this.required\r\n        } else {\r\n          return false\r\n        }\r\n      },\r\n      stringifiedItems (): any {\r\n        return _.map(this.items, function (item) {\r\n          return { value: item.value.toString(), text: item.text }\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .spr-simple-dropdown {\r\n    .spr-roundbox-1 {\r\n      border:solid 2px $brand-grey3;\r\n    }\r\n    label {\r\n      color:$brand-red;\r\n      padding:0 20px;\r\n    }\r\n    select {\r\n      margin-top:4px;\r\n      border-radius:2rem;\r\n\r\n      :active,\r\n      :hover {\r\n        outline-color:$brand-red;\r\n        box-shadow: 0 0 0 0.2rem $brand-grey3;\r\n      }\r\n\r\n      > option:hover {\r\n        box-shadow: 0 0 10px 100px #fff inset;\r\n      }\r\n\r\n      ::after {\r\n        content: \"asdasd\";\r\n        display: block;\r\n        width:30px;\r\n        border:solid 1px red;\r\n      }\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRDropdownNumberKey.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRDropdownNumberKey.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRDropdownNumberKey.vue?vue&type=template&id=2772f376&scoped=true\"\nimport script from \"./SPRDropdownNumberKey.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRDropdownNumberKey.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRDropdownNumberKey.vue?vue&type=style&index=0&id=2772f376&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2772f376\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"prevnextbuttons\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 prev\"},[_c('sprbutton',{staticClass:\"back\",attrs:{\"size\":4,\"title\":_vm.previousText.length>0 ? _vm.previousText : _vm.$t('wizard.back'),\"preicon\":\"chevron-left\",\"click-event\":\"prev\"},on:{\"prev\":_vm.onPrevClicked}})],1),_c('div',{staticClass:\"col-6 next\"},[(_vm.showNext)?_c('sprbutton',{staticClass:\"next\",attrs:{\"size\":4,\"title\":_vm.nextText.length > 0 ? _vm.nextText : _vm.isSave ? _vm.$t('wizard.save') : _vm.$t('wizard.next'),\"primary\":true,\"icon\":\"chevron-right\",\"click-event\":\"next\"},on:{\"next\":_vm.onNextClicked}}):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"prevnextbuttons\">\r\n    <div class=\"row\">\r\n      <div class=\"col-6 prev\">\r\n        <sprbutton\r\n          :size=\"4\"\r\n          :title=\"previousText.length>0 ? previousText : $t('wizard.back')\"\r\n          preicon=\"chevron-left\"\r\n          class=\"back\"\r\n          click-event=\"prev\"\r\n          @prev=\"onPrevClicked\"\r\n        />\r\n      </div>\r\n      <div class=\"col-6 next\">\r\n        <sprbutton v-if=\"showNext\"\r\n          :size=\"4\"\r\n          :title=\"nextText.length > 0 ? nextText : isSave ? $t('wizard.save') : $t('wizard.next')\"\r\n          :primary=\"true\"\r\n          icon=\"chevron-right\"\r\n          class=\"next\"\r\n          click-event=\"next\"\r\n          @next=\"onNextClicked\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import sprbutton from './SPRButton.vue'\r\n  export default Vue.extend({\r\n    name: 'PrevNextButtons',\r\n    components: { sprbutton },\r\n    props: {\r\n      isSave: {\r\n      type: Boolean,\r\n      default: false\r\n      },\r\n      showNext: {\r\n        type: Boolean,\r\n        default: true\r\n      },\r\n      previousText: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      nextText: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    methods: {\r\n      onPrevClicked (): void {\r\n        this.$emit('prev')\r\n      },\r\n      onNextClicked (): void {\r\n        this.$emit('next')\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .prevnextbuttons {\r\n    .prev {\r\n      text-align: left;\r\n    }\r\n    .next {\r\n      text-align: right;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPrevNextButtons.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPrevNextButtons.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRPrevNextButtons.vue?vue&type=template&id=170f9a74\"\nimport script from \"./SPRPrevNextButtons.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRPrevNextButtons.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRPrevNextButtons.vue?vue&type=style&index=0&id=170f9a74&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"localCustomer\" class=\"personalinfo\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <!-- personal info section -->\r\n        <div class=\"row headertitle\">\r\n          <div class=\"col\">\r\n            <h3>{{ $t('customerForm.netPersonalInformation') }}</h3>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-sm-6\">\r\n            <forminput v-model=\"localCustomer.firstName\"\r\n                       v-validate=\"'required'\"\r\n                       :hint=\"$t('customerForm.firstname')\"\r\n                       :is-valid=\"!errors.has('customerForm.firstname')\"\r\n                       name=\"customerForm.firstname\"\r\n                       :required=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-sm-6\">\r\n            <forminput v-model=\"localCustomer.lastName\"\r\n                       v-validate=\"'required'\"\r\n                       :hint=\"$t('customerForm.lastname')\"\r\n                       :is-valid=\"!errors.has('customerForm.lastname')\"\r\n                       name=\"customerForm.lastname\"\r\n                       :required=\"true\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-sm-12 col-lg-6\">\r\n            <forminput v-model=\"localCustomer.streetAddress\"\r\n                       v-validate=\"'required'\"\r\n                       :hint=\"$t('customerForm.street')\"\r\n                       :is-valid=\"!errors.has('customerForm.streetAddress')\"\r\n                       name=\"customerForm.streetAddress\"\r\n                       :required=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-12 col-sm-4 col-lg-2\">\r\n            <forminput v-model=\"localCustomer.zipCode\"\r\n                       v-validate=\"'required|regex:^[0-9]{5}$'\"\r\n                       :hint=\"$t('customerForm.zipCode')\"\r\n                       :is-valid=\"!errors.has('customerForm.zipCode')\"\r\n                       name=\"customerForm.zipCode\"\r\n                       :required=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-12 col-sm-8 col-lg-4\">\r\n            <forminput v-model=\"localCustomer.city\"\r\n                       v-validate=\"'required'\"\r\n                       :hint=\"$t('customerForm.city')\"\r\n                       :is-valid=\"!errors.has('customerForm.city')\"\r\n                       name=\"customerForm.city\"\r\n                       :required=\"true\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-sm-6\">\r\n            <forminput v-model=\"localCustomer.homePhone\"\r\n                       v-validate=\"'required'\"\r\n                       :hint=\"$t('customerForm.netHomePhone')\"\r\n                       :is-valid=\"!errors.has('customerForm.homePhone')\"\r\n                       name=\"customerForm.homePhone\"\r\n                       :required=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-sm-6\">\r\n            <forminput v-model=\"localCustomer.email\"\r\n                       v-validate=\"'required|email'\"\r\n                       :hint=\"$t('customerForm.email')\"\r\n                       :is-valid=\"!errors.has('customerForm.email')\"\r\n                       name=\"customerForm.email\"\r\n                       :required=\"true\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-sm-6\">\r\n            <div class=\"datepicker\">\r\n              <simpledate v-model=\"localCustomer.birthdate\"\r\n                          v-validate=\"'required'\"\r\n                          :title=\"$t('customerForm.birthDate')\"\r\n                          name=\"customerForm.birthDate\"\r\n                          :is-valid=\"!errors.has('customerForm.birthDate')\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"col-sm-6 col-md-3 col-lg-2\">\r\n            <sprdropdownnumberkey\r\n              v-model=\"localCustomer.gender\"\r\n              :title=\"$t('customerForm.gender')\"\r\n              :items=\"genders\"\r\n              :is-valid=\"true\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <!-- underage -->\r\n        <div v-if=\"isUnderage\" class=\"row\">\r\n          <div class=\"col-12\">\r\n            <div class=\"underageinstructions\">\r\n              {{ $t('customerForm.underageConsent') }}\r\n            </div>\r\n          </div>\r\n          <div class=\"col-sm-6\">\r\n            <forminput v-model=\"localCustomer.contactFirstName\"\r\n                       v-validate=\"'required'\"\r\n                       :hint=\"$t('customerForm.contactName')\"\r\n                       :is-valid=\"!errors.has('customerForm.contactFirstName')\"\r\n                       :required=\"true\"\r\n                       name=\"customerForm.contactFirstName\"\r\n                       :placeholder=\"$t('customerForm.contactFirstname')\"\r\n            />\r\n          </div>\r\n          <div class=\"col-sm-6\">\r\n            <forminput v-model=\"localCustomer.contactLastName\"\r\n                       v-validate=\"'required'\"\r\n                       :hint=\"$t(' ')\"\r\n                       :is-valid=\"!errors.has('customerForm.contactLastName')\"\r\n                       name=\"customerForm.contactLastName\"\r\n                       :placeholder=\"$t('customerForm.contactLastname')\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <div v-if=\"isUnderage\" class=\"row\">\r\n          <div class=\"col-sm-6\">\r\n            <forminput v-model=\"localCustomer.contactPhoneNumber\"\r\n                       v-validate=\"'required'\"\r\n                       :hint=\"$t('customerForm.underagePhone')\"\r\n                       :is-valid=\"!errors.has('customerForm.contactPhoneNumber')\"\r\n                       :required=\"true\"\r\n                       name=\"customerForm.contactPhoneNumber\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div class=\"buttons\">\r\n          <prevnextbuttons\r\n            @prev=\"onPrevClicked\"\r\n            @next=\"onNextClicked\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import simpledate from '../SPRSimpleDatepicker.vue'\r\n  import sprdropdownnumberkey from '../SPRDropdownNumberKey.vue'\r\n  import prevnextbuttons from '../SPRPrevNextButtons.vue'\r\n  import { FriendCustomerNetDto } from '@/types/index'\r\n  import { SprCheckboxBitmaskValue } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localCustomer: FriendCustomerNetDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'PersonalInfo',\r\n    components: { forminput, simpledate, sprdropdownnumberkey, prevnextbuttons },\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerNetDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        localCustomer: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      isUnderage (): boolean {\r\n        if (!this.localCustomer?.birthdate) {\r\n          return false\r\n        }\r\n\r\n        var underageYears = 13\r\n        var tmpDate = new Date(this.localCustomer?.birthdate)\r\n        tmpDate.setFullYear(tmpDate.getFullYear() + underageYears)\r\n        return Boolean(tmpDate.getTime() >= new Date().getTime())\r\n      },\r\n      genders (): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.genders, function (val, key) {\r\n          return { value: val.id, text: self.$t('genders.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.localCustomer = this.customer\r\n    },\r\n    methods: {\r\n      onPrevClicked (): void {\r\n        this.$emit('prev', this.localCustomer)\r\n      },\r\n      onNextClicked (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            this.$emit('next', this.localCustomer)\r\n          }\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .personalinfo {\r\n    background-color: $brand-white;\r\n    padding: 15px;\r\n    padding-top: 30px;\r\n\r\n    .headertitle {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .underageinstructions {\r\n      margin-bottom: 10px;\r\n    }\r\n\r\n    .buttons {\r\n      padding-top: 30px;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PersonalInfo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PersonalInfo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PersonalInfo.vue?vue&type=template&id=40898047\"\nimport script from \"./PersonalInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./PersonalInfo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PersonalInfo.vue?vue&type=style&index=0&id=40898047&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localCustomer)?_c('div',{staticClass:\"personalinfo\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row headertitle\"},[_c('div',{staticClass:\"col\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.netLanguageInformation')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-4 col-lg-3\"},[_c('dropdowninput',{attrs:{\"title\":_vm.$t('customerForm.nativeLanguage'),\"items\":_vm.checkboxLanguages(_vm.customer.customerLanguages, _vm.nativeLanguageOptions),\"is-valid\":true},model:{value:(_vm.localCustomer.nativeLanguage),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"nativeLanguage\", $$v)},expression:\"localCustomer.nativeLanguage\"}})],1),_c('div',{staticClass:\"col-12 col-md-8 col-lg-9\"},[_c('span',{staticClass:\"cap-label brand-red px-3 mb-2 d-inline-block\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.netCustomerOtherLanguages'))+\" \")]),_c('checkboxlist',{attrs:{\"value\":_vm.mappedCustomerLanguages,\"list\":_vm.customerLanguageOptions,\"rows\":4},on:{\"input\":_vm.onCustomerLanguageChanged}}),_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.otherLanguages'),\"name\":\"customerForm.shortDescription\",\"is-valid\":true},model:{value:(_vm.localCustomer.otherLanguages),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"otherLanguages\", $$v)},expression:\"localCustomer.otherLanguages\"}})],1)])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"buttons\"},[_c('prevnextbuttons',{on:{\"prev\":_vm.onPrevClicked,\"next\":_vm.onNextClicked}})],1)])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"checkboxlist\"},[_c('div',{staticClass:\"row\"},_vm._l((_vm.list),function(item){return _c('div',{key:item.id,class:_vm.calculatedClass,attrs:{\"value\":item.id}},[_c('checkbox',{attrs:{\"title\":item.text},on:{\"input\":function($event){return _vm.onChecked(item)}},model:{value:(item.selected),callback:function ($$v) {_vm.$set(item, \"selected\", $$v)},expression:\"item.selected\"}})],1)}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"checkboxlist\">\r\n    <div class=\"row\">\r\n      <div v-for=\"item in list\" :key=\"item.id\" :class=\"calculatedClass\" :value=\"item.id\">\r\n        <checkbox v-model=\"item.selected\" :title=\"item.text\" @input=\"onChecked(item)\" />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import checkbox from './SPRSimpleCheckbox.vue'\r\n  import { SprDropDownValue } from '../types/custom'\r\n  export default Vue.extend({\r\n    name: 'SprSimpleCheckboxList',\r\n    components: { checkbox },\r\n    props: {\r\n      list: {\r\n        type: Array as () => Array<SprDropDownValue>,\r\n        default () { return [] }\r\n      },\r\n      value: {\r\n        type: Array as () => Array<SprDropDownValue>,\r\n        default () { return [] }\r\n      },\r\n      rows: {\r\n        type: Number,\r\n        default () { return 1 }\r\n      }\r\n    },\r\n    computed: {\r\n      calculatedClass (): string {\r\n        return 'col-12 col-sm-' + Math.floor(12 / this.rows)\r\n      }\r\n    },\r\n    methods: {\r\n      onChecked (val): void {\r\n        var index = _.indexOf(this.value, val.value)\r\n        if (val.selected) {\r\n          // add the item, if it doesn't exist already\r\n          if (index === -1) {\r\n            this.$set(this.value, this.value.length, val.value)\r\n            this.$emit('input', this.value)\r\n          }\r\n        } else {\r\n          // if the item exists, remove it\r\n          if (index > -1) {\r\n            this.$delete(this.value, index)\r\n            this.$emit('input', this.value)\r\n          }\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\">\r\n@import \"../assets/scss/_variables.scss\";\r\n\r\n.checkboxlist {\r\n\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleCheckboxList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleCheckboxList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRSimpleCheckboxList.vue?vue&type=template&id=250c7b50\"\nimport script from \"./SPRSimpleCheckboxList.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRSimpleCheckboxList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRSimpleCheckboxList.vue?vue&type=style&index=0&id=250c7b50&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","export default {\r\n  methods: {\r\n    checkboxLanguages: function (selected, potential) {\r\n      var self = this\r\n      return _.map(potential, function (val, key) {\r\n        return {\r\n          value: val.value,\r\n          text: self.$t('friendCustomerLanguages.' + val.text),\r\n          selected: selected ? selected.indexOf(val.value) >= 0 : false\r\n        }\r\n      })\r\n    },\r\n    splitField: function (original) {\r\n      if (!original || original.length === '') {\r\n        return ['', '']\r\n      }\r\n\r\n      var splt = original.split(' || ')\r\n      if (splt.legth === 1) {\r\n        return [splt[0], '']\r\n      }\r\n\r\n      return [splt[0], splt[1]]\r\n    },\r\n    combineFields: function (el1, el2) {\r\n      return el1 + ' || ' + el2\r\n    },\r\n    tBool: function (bool) {\r\n      if (bool) {\r\n        return this.$t('boolean.true')\r\n      }\r\n      return this.$t('boolean.false')\r\n    }\r\n  }\r\n}\r\n","<template>\r\n  <div v-if=\"localCustomer\" class=\"personalinfo\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <!-- languages -->\r\n        <div class=\"row headertitle\">\r\n          <div class=\"col\">\r\n            <h3>{{ $t('customerForm.netLanguageInformation') }}</h3>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <!-- native language-->\r\n          <div class=\"col-12 col-md-4 col-lg-3\">\r\n            <dropdowninput v-model=\"localCustomer.nativeLanguage\"\r\n                           :title=\"$t('customerForm.nativeLanguage')\"\r\n                           :items=\"checkboxLanguages(customer.customerLanguages, nativeLanguageOptions)\"\r\n                           :is-valid=\"true\"\r\n            />\r\n          </div>\r\n          <!-- spoken languages -->\r\n          <div class=\"col-12 col-md-8 col-lg-9\">\r\n            <span class=\"cap-label brand-red px-3 mb-2 d-inline-block\">\r\n              {{ $t('customerForm.netCustomerOtherLanguages') }}\r\n            </span>\r\n            <checkboxlist\r\n              :value=\"mappedCustomerLanguages\"\r\n              :list=\"customerLanguageOptions\"\r\n              :rows=\"4\"\r\n              @input=\"onCustomerLanguageChanged\"\r\n            />\r\n            <!-- other languages freetext -->\r\n            <forminput v-model=\"localCustomer.otherLanguages\"\r\n                       :hint=\"$t('customerForm.otherLanguages')\"\r\n                       name=\"customerForm.shortDescription\"\r\n                       :is-valid=\"true\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div class=\"buttons\">\r\n          <prevnextbuttons\r\n            @prev=\"onPrevClicked\"\r\n            @next=\"onNextClicked\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import checkboxlist from '../SPRSimpleCheckboxList.vue'\r\n  import dropdowninput from '../SPRSimpleDropdown.vue'\r\n  import prevnextbuttons from '../SPRPrevNextButtons.vue'\r\n  import { FriendCustomerNetDto, LanguageDto } from '@/types/index'\r\n  import { SprCheckboxBitmaskValue, SprDropDownValue, SprCheckboxValue } from '@/types/custom'\r\n  import inpututils from '@/mixins/inpututils'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localCustomer: FriendCustomerNetDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'LanguageInfo',\r\n    components: { forminput, checkboxlist, dropdowninput, prevnextbuttons },\r\n    mixins: [inpututils],\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerNetDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        localCustomer: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      genders (): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.genders, function (val, key) {\r\n          return { value: val.id, text: self.$t('genders.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      mappedCustomerLanguages (): Array<string> {\r\n        if (!this.localCustomer) return []\r\n        var mappedLanguages = this.localCustomer.customerLanguages.map((x: LanguageDto) => {\r\n          return x.isoCode\r\n        })\r\n        return mappedLanguages\r\n      },\r\n      customerLanguageOptions (): Array<SprDropDownValue> {\r\n        if (!this.$store.state.friendCustomerLanguages) return []\r\n        var options = _.map(this.$store.state.customerLanguages, (val: LanguageDto, key: number) => {\r\n          return { value: val.isoCode, text: this.$t('languages.' + val.isoCode), selected: Boolean(this.mappedCustomerLanguages.filter(x => x === val.isoCode).length) } as SprDropDownValue\r\n        })\r\n        return options\r\n      },\r\n      nativeLanguageOptions (): Array<SprCheckboxValue> {\r\n        return this.$store.state.friendCustomerLanguages as Array<SprCheckboxValue>\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.localCustomer = this.customer\r\n    },\r\n    methods: {\r\n      onCustomerLanguageChanged (arr: Array<string>): void {\r\n        if (!this.localCustomer) return\r\n        var langs = arr.map((x: string) => {\r\n          return _.find(this.$store.state.customerLanguages, (lang: LanguageDto) => {\r\n            return lang.isoCode === x\r\n          })\r\n        })\r\n        this.localCustomer.customerLanguages = langs || []\r\n      },\r\n      onPrevClicked (): void {\r\n        this.$emit('prev', this.localCustomer)\r\n      },\r\n      onNextClicked (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            this.$emit('next', this.localCustomer)\r\n          }\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .personalinfo {\r\n    background-color: $brand-white;\r\n    padding: 15px;\r\n    padding-top: 30px;\r\n\r\n    .headertitle {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .buttons {\r\n      padding-top: 30px;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LanguageInfo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LanguageInfo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./LanguageInfo.vue?vue&type=template&id=1c053446\"\nimport script from \"./LanguageInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./LanguageInfo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./LanguageInfo.vue?vue&type=style&index=0&id=1c053446&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localCustomer)?_c('div',{staticClass:\"interestinfo\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row headertitle\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.myInterests')))]),_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.netCustomerInterests')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxlist',{attrs:{\"list\":_vm.customerInterests,\"rows\":3},model:{value:(_vm.localCustomer.interests),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"interests\", $$v)},expression:\"localCustomer.interests\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.netCustomerInterestsFreeTextTitle')))]),_c('sprtextarea',{attrs:{\"name\":\"customerForm.interestFreeText\",\"is-valid\":true,\"subtext\":_vm.$t('customerForm.netCustomerInterestsFreeText')},model:{value:(_vm.localCustomer.interestOther),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"interestOther\", $$v)},expression:\"localCustomer.interestOther\"}})],1)])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"buttons\"},[_c('prevnextbuttons',{on:{\"prev\":_vm.onPrevClicked,\"next\":_vm.onNextClicked}})],1)])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"localCustomer\" class=\"interestinfo\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <!-- customer interests section-->\r\n        <div class=\"row headertitle\">\r\n          <div class=\"col-12\">\r\n            <h3>{{ $t('customerForm.myInterests') }}</h3>\r\n            <span class=\"cap-label\">{{ $t('customerForm.netCustomerInterests') }}</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <checkboxlist v-model=\"localCustomer.interests\"\r\n                          :list=\"customerInterests\"\r\n                          :rows=\"3\"\r\n            />\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.netCustomerInterestsFreeTextTitle') }}</span>\r\n            <sprtextarea\r\n              v-model=\"localCustomer.interestOther\"\r\n              name=\"customerForm.interestFreeText\"\r\n              :is-valid=\"true\"\r\n              :subtext=\"$t('customerForm.netCustomerInterestsFreeText')\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div class=\"buttons\">\r\n          <prevnextbuttons\r\n            @prev=\"onPrevClicked\"\r\n            @next=\"onNextClicked\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprtextarea from '../SPRSimpleTextArea.vue'\r\n  import checkboxlist from '../SPRSimpleCheckboxBitmaskList.vue'\r\n  import prevnextbuttons from '../SPRPrevNextButtons.vue'\r\n  import { FriendCustomerNetDto } from '@/types/index'\r\n  import { SprCheckboxBitmaskValue, SprCheckboxValue } from '@/types/custom'\r\n  import inpututils from '@/mixins/inpututils'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localCustomer: FriendCustomerNetDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'InterestInfo',\r\n    components: { sprtextarea, checkboxlist, prevnextbuttons },\r\n    mixins: [inpututils],\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerNetDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        localCustomer: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      customerInterests (): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.customerInterests, function (val, key) {\r\n          return {\r\n            value: val.id,\r\n            text: self.$t('customerInterests.' + val.text),\r\n            selected: bitmaskhelper.bitmaskToArray(self.customer.interests).indexOf(val.id) >= 0\r\n          } as SprCheckboxBitmaskValue\r\n        }).filter((x: SprCheckboxBitmaskValue) => x.value !== 0)\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.localCustomer = this.customer\r\n    },\r\n    methods: {\r\n      onPrevClicked (): void {\r\n        this.$emit('prev', this.localCustomer)\r\n      },\r\n      onNextClicked (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            this.$emit('next', this.localCustomer)\r\n          }\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .interestinfo {\r\n    background-color: $brand-white;\r\n    padding: 15px;\r\n    padding-top: 30px;\r\n\r\n    .headertitle {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .cap-label {\r\n      color: $brand-red;\r\n    }\r\n\r\n    .buttons {\r\n      padding-top: 30px;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InterestInfo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InterestInfo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./InterestInfo.vue?vue&type=template&id=fbba1c22\"\nimport script from \"./InterestInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./InterestInfo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./InterestInfo.vue?vue&type=style&index=0&id=fbba1c22&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localCustomer)?_c('div',{staticClass:\"friendinfo\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.friendWish')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-4 col-md-3\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.genderPreferences')))]),_c('checkboxlist',{attrs:{\"list\":_vm.genders,\"rows\":1},model:{value:(_vm.localCustomer.preferredGenders),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"preferredGenders\", $$v)},expression:\"localCustomer.preferredGenders\"}}),(_vm.mustHaveOneGenderSelected && _vm.pressedNext)?_c('div',{staticClass:\"validation\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.genderPreferencesNotSelected'))+\" \")]):_vm._e()],1),_c('div',{staticClass:\"col-12 offset-sm-2 col-sm-6 col-md-7\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.desiredAge')))]),_c('checkboxlist',{attrs:{\"list\":_vm.preferredAges,\"rows\":2},model:{value:(_vm.localCustomer.preferredAges),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"preferredAges\", $$v)},expression:\"localCustomer.preferredAges\"}}),(_vm.mustHaveOneAgeGroupSelected && _vm.pressedNext)?_c('div',{staticClass:\"validation\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.desiredAgeNotSelected'))+\" \")]):_vm._e()],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprtextarea',{attrs:{\"title\":_vm.$t('customerForm.netDescriptionTitle'),\"rows\":6,\"subtext\":_vm.$t('customerForm.netDescription')},model:{value:(_vm.localCustomer.description),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"description\", $$v)},expression:\"localCustomer.description\"}})],1)])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"buttons\"},[_c('prevnextbuttons',{on:{\"prev\":_vm.onPrevClicked,\"next\":_vm.onNextClicked}})],1)])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"localCustomer\" class=\"friendinfo\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <!-- friend wish section -->\r\n        <div class=\"row\">\r\n          <div class=\"col\">\r\n            <h3>{{ $t('customerForm.friendWish') }}</h3>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-sm-4 col-md-3\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.genderPreferences') }}</span>\r\n            <checkboxlist v-model=\"localCustomer.preferredGenders\"\r\n                          :list=\"genders\"\r\n                          :rows=\"1\"\r\n            />\r\n            <div v-if=\"mustHaveOneGenderSelected && pressedNext\" class=\"validation\">\r\n              {{ $t('customerForm.genderPreferencesNotSelected') }}\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 offset-sm-2 col-sm-6 col-md-7\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.desiredAge') }}</span>\r\n            <checkboxlist v-model=\"localCustomer.preferredAges\"\r\n                          :list=\"preferredAges\"\r\n                          :rows=\"2\"\r\n            />\r\n            <div v-if=\"mustHaveOneAgeGroupSelected && pressedNext\" class=\"validation\">\r\n              {{ $t('customerForm.desiredAgeNotSelected') }}\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <sprtextarea\r\n              v-model=\"localCustomer.description\"\r\n              :title=\"$t('customerForm.netDescriptionTitle')\"\r\n              :rows=\"6\"\r\n              :subtext=\"$t('customerForm.netDescription')\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div class=\"buttons\">\r\n          <prevnextbuttons\r\n            @prev=\"onPrevClicked\"\r\n            @next=\"onNextClicked\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprtextarea from '../SPRSimpleTextArea.vue'\r\n  import checkboxlist from '../SPRSimpleCheckboxBitmaskList.vue'\r\n  import prevnextbuttons from '../SPRPrevNextButtons.vue'\r\n  import { FriendCustomerNetDto } from '@/types/index'\r\n  import { SprCheckboxBitmaskValue, SprCheckboxValue } from '@/types/custom'\r\n  import inpututils from '@/mixins/inpututils'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localCustomer: FriendCustomerNetDto | undefined,\r\n    pressedNext: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'FriendInfo',\r\n    components: { sprtextarea, checkboxlist, prevnextbuttons },\r\n    mixins: [inpututils],\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerNetDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        localCustomer: undefined,\r\n        pressedNext: false\r\n      }\r\n    },\r\n    computed: {\r\n      genders (): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.preferredGenders, function (val, key) {\r\n          return {\r\n            value: val.id,\r\n            text: self.$t('genders.' + val.text),\r\n            selected: bitmaskhelper.bitmaskToArray(self.customer.preferredGenders).indexOf(val.id) >= 0\r\n          } as SprCheckboxBitmaskValue\r\n        }).filter((x: SprCheckboxBitmaskValue) => x.value !== 0)\r\n      },\r\n      mustHaveOneAgeGroupSelected (): boolean {\r\n        if (this.localCustomer) { return this.localCustomer.preferredAges === 0 }\r\n        return false\r\n      },\r\n      mustHaveOneGenderSelected (): boolean {\r\n        if (this.localCustomer) { return this.localCustomer?.preferredGenders === 0 }\r\n        return false\r\n      },\r\n      preferredAges (): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.preferredAge, function (val, key) {\r\n          return {\r\n            value: val.id,\r\n            text: self.$t('preferredAge.' + val.text),\r\n            selected: bitmaskhelper.bitmaskToArray(self.customer.preferredAges).indexOf(val.id) >= 0\r\n          } as SprCheckboxBitmaskValue\r\n        }).filter((x: SprCheckboxBitmaskValue) => x.value !== 0)\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.localCustomer = this.customer\r\n    },\r\n    methods: {\r\n      onPrevClicked (): void {\r\n        this.$emit('prev', this.localCustomer)\r\n      },\r\n      onNextClicked (): void {\r\n        this.pressedNext = true\r\n        if (!(this.mustHaveOneAgeGroupSelected || this.mustHaveOneGenderSelected)) {\r\n          this.$validator.validateAll().then(result => {\r\n            if (result) {\r\n              this.$emit('next', this.localCustomer)\r\n            }\r\n          })\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .validation {\r\n    box-sizing: border-box;\r\n    color: #CC0000;\r\n    background: #FFFFFF;\r\n    display: inline-block;\r\n    position: relative;\r\n    align-content: center;\r\n    flex-flow: row;\r\n    border-radius: 5px;\r\n    max-width: 500px;\r\n    width: 100%;\r\n    padding: 10px;\r\n    margin: 0;\r\n  }\r\n  .friendinfo {\r\n    background-color: $brand-white;\r\n    padding: 15px;\r\n    padding-top: 30px;\r\n\r\n    .headertitle {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .cap-label {\r\n      color: $brand-red;\r\n    }\r\n\r\n    .buttons {\r\n      padding-top: 30px;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendInfo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendInfo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FriendInfo.vue?vue&type=template&id=2fe081cc&scoped=true\"\nimport script from \"./FriendInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./FriendInfo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FriendInfo.vue?vue&type=style&index=0&id=2fe081cc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2fe081cc\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localCustomer)?_c('div',{staticClass:\"contactinfo\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.netFriendTitle')))]),_c('div',{staticClass:\"instructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.netFriendSoMe'))+\" \")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.email'),\"is-valid\":true},model:{value:(_vm.customer.econtactEmail),callback:function ($$v) {_vm.$set(_vm.customer, \"econtactEmail\", $$v)},expression:\"customer.econtactEmail\"}})],1),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.telegram'),\"is-valid\":true},model:{value:(_vm.customer.econtactTelegram),callback:function ($$v) {_vm.$set(_vm.customer, \"econtactTelegram\", $$v)},expression:\"customer.econtactTelegram\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.kik'),\"is-valid\":true},model:{value:(_vm.customer.econtactKik),callback:function ($$v) {_vm.$set(_vm.customer, \"econtactKik\", $$v)},expression:\"customer.econtactKik\"}})],1),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.instagram'),\"is-valid\":true},model:{value:(_vm.customer.econtactInstagram),callback:function ($$v) {_vm.$set(_vm.customer, \"econtactInstagram\", $$v)},expression:\"customer.econtactInstagram\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.skype'),\"is-valid\":true},model:{value:(_vm.customer.econtactSkype),callback:function ($$v) {_vm.$set(_vm.customer, \"econtactSkype\", $$v)},expression:\"customer.econtactSkype\"}})],1),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.discord'),\"is-valid\":true},model:{value:(_vm.customer.econtactDiscord),callback:function ($$v) {_vm.$set(_vm.customer, \"econtactDiscord\", $$v)},expression:\"customer.econtactDiscord\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.freetext'),\"is-valid\":true},model:{value:(_vm.customer.econtactFreetext),callback:function ($$v) {_vm.$set(_vm.customer, \"econtactFreetext\", $$v)},expression:\"customer.econtactFreetext\"}})],1)])])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"buttons\"},[_c('prevnextbuttons',{on:{\"prev\":_vm.onPrevClicked,\"next\":_vm.onNextClicked}})],1)])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"localCustomer\" class=\"contactinfo\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <!-- network friend additional info section -->\r\n        <div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12\">\r\n              <h3>{{ $t('customerForm.netFriendTitle') }}</h3>\r\n              <div class=\"instructions\">\r\n                {{ $t('customerForm.netFriendSoMe') }}\r\n              </div>\r\n            </div>\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12 col-sm-6\">\r\n              <forminput v-model=\"customer.econtactEmail\"\r\n                         :hint=\"$t('connectivity.email')\"\r\n                         :is-valid=\"true\"\r\n              />\r\n            </div>\r\n            <div class=\"col-12 col-sm-6\">\r\n              <forminput v-model=\"customer.econtactTelegram\"\r\n                         :hint=\"$t('connectivity.telegram')\"\r\n                         :is-valid=\"true\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12 col-sm-6\">\r\n              <forminput v-model=\"customer.econtactKik\"\r\n                         :hint=\"$t('connectivity.kik')\"\r\n                         :is-valid=\"true\"\r\n              />\r\n            </div>\r\n            <div class=\"col-12 col-sm-6\">\r\n              <forminput v-model=\"customer.econtactInstagram\"\r\n                         :hint=\"$t('connectivity.instagram')\"\r\n                         :is-valid=\"true\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12 col-sm-6\">\r\n              <forminput v-model=\"customer.econtactSkype\"\r\n                         :hint=\"$t('connectivity.skype')\"\r\n                         :is-valid=\"true\"\r\n              />\r\n            </div>\r\n            <div class=\"col-12 col-sm-6\">\r\n              <forminput v-model=\"customer.econtactDiscord\"\r\n                         :hint=\"$t('connectivity.discord')\"\r\n                         :is-valid=\"true\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12\">\r\n              <forminput v-model=\"customer.econtactFreetext\"\r\n                         :hint=\"$t('connectivity.freetext')\"\r\n                         :is-valid=\"true\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div class=\"buttons\">\r\n          <prevnextbuttons\r\n            @prev=\"onPrevClicked\"\r\n            @next=\"onNextClicked\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import prevnextbuttons from '../SPRPrevNextButtons.vue'\r\n  import { FriendCustomerNetDto } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localCustomer: FriendCustomerNetDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'ContactInfo',\r\n    components: { forminput, prevnextbuttons },\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerNetDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        localCustomer: undefined\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.localCustomer = this.customer\r\n    },\r\n    methods: {\r\n      onPrevClicked (): void {\r\n        this.$emit('prev', this.localCustomer)\r\n      },\r\n      onNextClicked (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            this.$emit('next', this.localCustomer)\r\n          }\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .contactinfo {\r\n    background-color: $brand-white;\r\n    padding: 15px;\r\n    padding-top: 30px;\r\n\r\n    .headertitle {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .instructions {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .buttons {\r\n      padding-top: 30px;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactInfo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactInfo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ContactInfo.vue?vue&type=template&id=06fc0bc6\"\nimport script from \"./ContactInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./ContactInfo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ContactInfo.vue?vue&type=style&index=0&id=06fc0bc6&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localCustomer)?_c('div',{staticClass:\"summary\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row headertitle\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.summaryTitle')))]),_c('div',{staticClass:\"instructions\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.$t('customerForm.summaryInstructions'))}})])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.netPersonalInformation')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(\" \"+_vm._s(_vm.localCustomer.firstName)+\" \"+_vm._s(_vm.localCustomer.lastName)+\" \")]),_c('dd',[_c('div',[_vm._v(_vm._s(_vm.localCustomer.streetAddress))]),_c('div',[_vm._v(_vm._s(_vm.localCustomer.zipCode)+\" \"+_vm._s(_vm.localCustomer.city))])]),_c('dd',[_c('div',[_vm._v(_vm._s(_vm.localCustomer.homePhone))]),_c('div',[_vm._v(_vm._s(_vm.localCustomer.email))])])])]),(_vm.localCustomer.contactFirstName || _vm.localCustomer.contactLastName)?_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(\" \"+_vm._s(_vm.localCustomer.contactFirstName)+\" \"+_vm._s(_vm.localCustomer.contactLastName)+\" \")]),_c('dd',[_c('div',[_vm._v(_vm._s(_vm.localCustomer.contactPhoneNumber))])])])]):_vm._e()]),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('div',{staticClass:\"inputcontent\"},[(_vm.birthdateString)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.birthDate')))]),_c('dd',[_vm._v(_vm._s(_vm.birthdateString))])]):_vm._e(),_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.gender')))]),_c('dd',[_vm._v(_vm._s(_vm.genderString))])])])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.netLanguageInformation')))]),_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.nativeLanguage')))]),_c('dd',[_vm._v(_vm._s(_vm.languageString))])]),_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.otherLanguages')))]),_vm._l((_vm.customerOtherLanguages),function(lang){return _c('dd',{key:lang},[_vm._v(\" \"+_vm._s(lang)+\" \")])}),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.otherLanguages))])],2)])]),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.myInterests')))]),_c('div',{staticClass:\"inputcontent\"},[_vm._v(\" \"+_vm._s(_vm.interestsString)+\" \")]),(_vm.localCustomer.interestOther)?_c('div',{staticClass:\"inputcontent\"},[_vm._v(\" \"+_vm._s(_vm.localCustomer.interestOther)+\" \")]):_vm._e()])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.friendWish')))]),_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.genderPreferences')))]),_c('dd',[_vm._v(_vm._s(_vm.preferredGenders))]),_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.desiredAge')))]),_c('dd',[_vm._v(_vm._s(_vm.preferredAges))])])])]),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.netFriendTitle')))]),_c('div',{staticClass:\"inputcontent\"},[(_vm.localCustomer.econtactEmail)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.email')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactEmail))])]):_vm._e(),(_vm.localCustomer.econtactTelegram)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.telegram')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactTelegram))])]):_vm._e(),(_vm.localCustomer.econtactKik)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.kik')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactKik))])]):_vm._e(),(_vm.localCustomer.econtactInstagram)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.instagram')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactInstagram))])]):_vm._e(),(_vm.localCustomer.econtactSkype)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.skype')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactSkype))])]):_vm._e(),(_vm.localCustomer.econtactDiscord)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.discord')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactDiscord))])]):_vm._e(),(_vm.localCustomer.econtactFreetext)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.freetext')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactFreetext))])]):_vm._e()])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-8 inputcontent\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.netDescriptionTitle')))]),_c('dd',[_vm._v(_vm._s(_vm.netDescription))])])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-8\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.netAnythingElse')))]),_c('sprtextarea',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({ max: 300 }),expression:\"{ max: 300 }\"}],attrs:{\"name\":\"customerForm.shortDescription\",\"is-valid\":_vm.localCustomer.customerTypeOtherInfo.length <= 300,\"max-characters\":300,\"show-counter\":true},model:{value:(_vm.localCustomer.customerTypeOtherInfo),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"customerTypeOtherInfo\", $$v)},expression:\"localCustomer.customerTypeOtherInfo\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"title\":_vm.$t('customerForm.privacyStatement'),\"aria-label\":_vm.$t('customerForm.privacyStatement'),\"name\":\"customerForm.privacyStatement\",\"allow-html\":true,\"white-warnings\":false,\"has-error\":_vm.privacyStatement === false,\"is-valid\":_vm.privacyStatement === true,\"required\":true},model:{value:(_vm.privacyStatement),callback:function ($$v) {_vm.privacyStatement=$$v},expression:\"privacyStatement\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"buttons\"},[_c('prevnextbuttons',{attrs:{\"is-save\":\"\"},on:{\"prev\":_vm.onPrevClicked,\"next\":_vm.onNextClicked}})],1)])])])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\r\n  methods: {\r\n    // Gets the translated lists of enum values\r\n    getGendersTranslations (filter) {\r\n      return this.getTranslations('genders', this.$store.state.genders, filter)\r\n    },\r\n    getGenderPreferencesTranslations (filter) {\r\n      return this.getTranslations('genderPreferences', this.$store.state.preferredGenders, filter)\r\n    },\r\n    getTimeWithoutFriendsTranslations (filter){\r\n      return this.getTranslations('timeWithoutFriends', this.$store.state.timeWithoutFriends, filter)\r\n    },\r\n    getPreferredAgeTranslations (filter) {\r\n      return this.getTranslations('preferredAge', this.$store.state.preferredAge, filter)\r\n    },\r\n    getAvailabilityFrequencyTranslations (filter) {\r\n      return this.getTranslations('availabilityFrequency', this.$store.state.availabilityFrequency, filter)\r\n    },\r\n    getAvailabilityTimesTranslations (filter) {\r\n      return this.getTranslations('availabilityTimes', this.$store.state.availabilityTimes, filter)\r\n    },\r\n    getCustomerTypesTranslations (filter) {\r\n      return this.getTranslations('customerTypes', this.$store.state.customerTypes, filter)\r\n    },\r\n    getNetCustomerTypesTranslations (filter) {\r\n      return this.getTranslations('netCustomerTypes', this.$store.state.netCustomerTypes, filter)\r\n    },\r\n    getFriendshipTypesTranslations (filter) {\r\n      return this.getTranslations('friendshipTypes', this.$store.state.friendshipTypes, filter)\r\n    },\r\n    getInterestsTranslations (filter) {\r\n      return this.getTranslations('customerInterests', this.$store.state.customerInterests, filter)\r\n    },\r\n    getProfileInvolvedEventCategoriesTranslation (id) {\r\n      return this.getTranslation('involvedEventCategories', this.$store.state.involvedEventCategories, id)\r\n    },\r\n    getProfilePreferredContactMethodsTranslation (id) {\r\n      return this.getTranslation('preferredContactMethods', this.$store.state.preferredContactMethods, id)\r\n    },\r\n    getCustomerStatesTranslations (filter) {\r\n      return this.getTranslations('customerStates', this.$store.state.customerStates, filter)\r\n    },\r\n    getGroupTypesTranslations (filter) {\r\n      return this.getTranslations('groupTypes', this.$store.state.groupTypes(), filter)\r\n    },\r\n    getEventCategoriesTranslations (filter) {\r\n      return this.getTranslations('eventCategory', this.$store.state.eventCategories, filter)\r\n    },\r\n    getEventTypesTranslations (filter) {\r\n      return this.getTranslations('eventTypes', this.$store.state.eventTypes, filter)\r\n    },\r\n    getEventRecurrenceTranslations (filter) {\r\n      return this.getTranslations('eventOccurance', this.$store.state.eventRecurrenceFrequencies, filter)\r\n    },\r\n    getTransportationTranslations (filter) {\r\n      return this.getTranslations('transportation', this.$store.state.transportation, filter)\r\n    },\r\n    getLanguages (filter) {\r\n      var list = this.$store.state.allLanguages\r\n      if (filter) {\r\n        list = _.filter(list, filter)\r\n      }\r\n      return list\r\n    },\r\n\r\n    // gets individual translations\r\n    getGenderTranslation (id) {\r\n      return this.getTranslation('genders', this.$store.state.genders, id)\r\n    },\r\n    getAvailabilityTimesMaskTranslation (mask) {\r\n      var elements = this.integerIntoBitmaskProxy(mask)\r\n      var translations = _.map(elements, this.getAvailabilityTimesTranslation)\r\n      return translations.join(', ')\r\n    },\r\n    getGenderPreferencesMaskTranslation (mask) {\r\n      var elements = this.integerIntoBitmaskProxy(mask)\r\n      var translations = _.map(elements, this.getGenderPreferencesTranslation)\r\n      return translations.join(', ')\r\n    },\r\n    getAgePreferencesMaskTranslation (mask) {\r\n      var elements = this.integerIntoBitmaskProxy(mask)\r\n      var translations = _.map(elements, this.getAgeTranslation)\r\n      return translations.join(', ')\r\n    },\r\n    getFriendshipTypesMaskTranslation (mask) {\r\n      var elements = this.integerIntoBitmaskProxy(mask)\r\n      var translations = _.map(elements, this.getFriendshipTypesTranslation)\r\n      return translations.join(', ')\r\n    },\r\n    getNetFriendshipTypesMaskTranslation (mask) {\r\n      var elements = this.integerIntoBitmaskProxy(mask)\r\n      var translations = _.map(elements, this.getNetFriendshipTypesTranslation)\r\n      return translations.join(', ')\r\n    },\r\n    getInterestsMaskTranslation (mask) {\r\n      var elements = this.integerIntoBitmaskProxy(mask)\r\n      var translations = _.map(elements, this.getInterestsTranslation)\r\n      return translations.join(', ')\r\n    },\r\n    getLanguagesMaskTranslation (mask) {\r\n      var elements = this.integerIntoBitmaskProxy(mask)\r\n      var translations = _.map(elements, this.getLanguagesTranslation)\r\n      return translations.join(', ')\r\n    },\r\n    getProfileInvolvedEventCategoriesMaskTranslation (mask) {\r\n      var elements = this.integerIntoBitmaskProxy(mask)\r\n      var translations = _.map(elements, this.getProfileInvolvedEventCategoriesTranslation)\r\n      return translations.join(', ')\r\n    },\r\n    getEventTypesMaskTranslation (mask) {\r\n      var elements = this.integerIntoBitmaskProxy(mask)\r\n      var translations = _.map(elements, this.getEventTypesTranslation)\r\n      return translations.join(', ')\r\n    },\r\n    getProfileInvolvedEventCategoriesMaskItems (mask) {\r\n      var elements = this.integerIntoBitmaskProxy(mask)\r\n      return elements\r\n    },\r\n    getProfileInvolvedEventCategoriesMaskItemsTranslation (mask) {\r\n      var elements = this.integerIntoBitmaskProxy(mask)\r\n      var translations = _.map(elements, this.getProfileInvolvedEventCategoriesTranslation)\r\n      return translations\r\n    },\r\n    getProfilePreferredContactMethodsMaskTranslation (mask) {\r\n      var elements = this.integerIntoBitmaskProxy(mask)\r\n      var translations = _.map(elements, this.getProfilePreferredContactMethodsTranslation)\r\n      return translations.join(', ')\r\n    },\r\n    getCustomerTypesMaskTranslation (mask) {\r\n      var elements = this.integerIntoBitmaskProxy(mask)\r\n      var translations = _.map(elements, this.getCustomerTypesTranslation)\r\n      return translations.join(', ')\r\n    },\r\n    getNetCustomerTypesMaskTranslation (mask) {\r\n      var elements = this.integerIntoBitmaskProxy(mask)\r\n      var translations = _.map(elements, this.getNetCustomerTypesTranslation)\r\n      return translations.join(', ')\r\n    },\r\n    getAgeTranslation (id) {\r\n      return this.getTranslation('preferredAge', this.$store.state.preferredAge, id)\r\n    },\r\n    getAvailabilityFrequencyTranslation (id) {\r\n      return this.getTranslation('availabilityFrequency', this.$store.state.availabilityFrequency, id)\r\n    },\r\n    getGenderPreferencesTranslation (id) {\r\n      return this.getTranslation('genderPreferences', this.$store.state.preferredGenders, id)\r\n    },\r\n    getAvailabilityTimesTranslation (id) {\r\n      return this.getTranslation('availabilityTimes', this.$store.state.availabilityTimes, id)\r\n    },\r\n    getCustomerTypesTranslation (id) {\r\n      return this.getTranslation('customerTypes', this.$store.state.customerTypes, id)\r\n    },\r\n    getNetCustomerTypesTranslation (id) {\r\n      return this.getTranslation('netCustomerTypes', this.$store.state.netCustomerTypes, id)\r\n    },\r\n    getFriendshipTypesTranslation (id) {\r\n      return this.getTranslation('friendshipTypes', this.$store.state.friendshipTypes, id)\r\n    },\r\n    getNetFriendshipTypesTranslation (id) {\r\n      return this.getTranslation('netFriendshipTypes', this.$store.state.netFriendshipTypes, id)\r\n    },\r\n    getInterestsTranslation (id) {\r\n      return this.getTranslation('customerInterests', this.$store.state.customerInterests, id)\r\n    },\r\n    getLanguagesTranslation (id) {\r\n      return this.getTranslation('languages', this.$store.state.groupLanguages, id)\r\n    },\r\n    getCustomerStatesTranslation (id) {\r\n      return this.getTranslation('customerStates', this.$store.state.customerStates, id)\r\n    },\r\n    getGroupTypesTranslation (id) {\r\n      return this.getTranslation('groupTypes', this.$store.state.groupTypes(), id)\r\n    },\r\n    getEventCategoriesTranslation (id) {\r\n      return this.getTranslation('eventCategory', this.$store.state.eventCategories, id)\r\n    },\r\n    getInvolvedEventCategoriesTranslation (id) {\r\n      return this.getTranslation('involvedEventCategories', this.$store.state.involvedEventCategories, id)\r\n    },\r\n    getEventTypesTranslation (id) {\r\n      return this.getTranslation('eventTypes', this.$store.state.eventTypes, id)\r\n    },\r\n    getEventRecurrenceTranslation (id) {\r\n      return this.getTranslation('eventOccurance', this.$store.state.eventRecurrenceFrequencies, id)\r\n    },\r\n    getTransportationTranslation (id) {\r\n      return this.getTranslation('transportation', this.$store.state.transportation, id)\r\n    },\r\n    getLanguage (isoCode) {\r\n      var langs = this.getLanguages(function (lang) {\r\n        return lang.isoCode === isoCode\r\n      })\r\n\r\n      return langs && langs.length ? langs[0] : null\r\n    },\r\n    getTranslation (keyPrefix, list, id) {\r\n      // todo : use method below\r\n      var translations = this.getTranslations(keyPrefix, list, function (item) {\r\n        return item.id === id\r\n      })\r\n\r\n      if (translations && translations.length > 0) return translations[0]\r\n\r\n      return ''\r\n    },\r\n\r\n    getTranslations (keyPrefix, list, filter) {\r\n      // filter is a predicate function to be run on each item of the list\r\n      // it takes each item in the list as an argument\r\n      var self = this\r\n      var items = list\r\n      if (filter) {\r\n        items = _.filter(list, filter)\r\n      }\r\n      return _.map(items, function (item) {\r\n        const prefix = self.lowerFirstLetter(keyPrefix)\r\n        const text = self.lowerFirstLetter(item.text)\r\n        return self.$t(`${prefix}.${text}`)\r\n      })\r\n    },\r\n    lowerFirstLetter (s) {\r\n      return s.charAt(0).toLowerCase() + s.slice(1)\r\n    },\r\n    /**\r\n     * Parses an array of result entries into a translated comma separated string.\r\n     * @param {Array} array - Array to be parsed\r\n     * @param {{id: Number, text: String}[]} storeCollection - Vuex store state collection used for getting the translations, or null if translations are not required\r\n     * @param {String} transKey - Translation key prefix for getting the translations, or null if translations are not required\r\n     * @returns {String} A comma separated string of the parsed non-empty values or empty string if array is invalid.\r\n     */\r\n    parseArray: function (array, storeCollection, transKey) {\r\n      if (!array || !array.length) {\r\n        return ''\r\n      }\r\n      let results = []\r\n      if (storeCollection && storeCollection.length && transKey) {\r\n        results = this.getTranslations(transKey, storeCollection, function (x) {\r\n          return array.indexOf(x.id) >= 0\r\n        })\r\n      } else {\r\n        results = array.filter(Boolean)\r\n      }\r\n      return results.join(', ')\r\n    },\r\n\r\n    integerIntoBitmaskProxy: function (integer) {\r\n      if (integer <= 0) {\r\n        return []\r\n      }\r\n\r\n      var rv = []\r\n      for (var i = 0; i < 32; i++) {\r\n        var mask = Math.pow(2, i)\r\n        if ((integer & mask) !== 0) {\r\n          rv.push(mask)\r\n        }\r\n      }\r\n\r\n      return rv\r\n    }\r\n  }\r\n}\r\n","<template>\r\n  <div v-if=\"localCustomer\" class=\"summary\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <!-- summary section-->\r\n        <div class=\"row headertitle\">\r\n          <div class=\"col-12\">\r\n            <h3>{{ $t('customerForm.summaryTitle') }}</h3>\r\n            <div class=\"instructions\">\r\n              <!-- eslint-disable-next-line vue/no-v-html -->\r\n              <span v-html=\"$t('customerForm.summaryInstructions')\" />\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.netPersonalInformation') }}</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-sm-6\">\r\n            <div class=\"inputcontent\">\r\n              <dl>\r\n                <dt>\r\n                  {{ localCustomer.firstName }} {{ localCustomer.lastName }}\r\n                </dt>\r\n                <dd>\r\n                  <div>{{ localCustomer.streetAddress }}</div>\r\n                  <div>{{ localCustomer.zipCode }} {{ localCustomer.city }}</div>\r\n                </dd>\r\n                <dd>\r\n                  <div>{{ localCustomer.homePhone }}</div>\r\n                  <div>{{ localCustomer.email }}</div>\r\n                </dd>\r\n              </dl>\r\n            </div>\r\n            <div v-if=\"localCustomer.contactFirstName || localCustomer.contactLastName\" class=\"inputcontent\">\r\n              <dl>\r\n                <dt>\r\n                  {{ localCustomer.contactFirstName }} {{ localCustomer.contactLastName }}\r\n                </dt>\r\n                <dd>\r\n                  <div>{{ localCustomer.contactPhoneNumber }}</div>\r\n                </dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 col-sm-6\">\r\n            <div class=\"inputcontent\">\r\n              <dl v-if=\"birthdateString\">\r\n                <dt>{{ $t('customerForm.birthDate') }}</dt>\r\n                <dd>{{ birthdateString }}</dd>\r\n              </dl>\r\n              <dl>\r\n                <dt>{{ $t('customerForm.gender') }}</dt>\r\n                <dd>{{ genderString }}</dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-sm-6\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.netLanguageInformation') }}</span>\r\n            <div class=\"inputcontent\">\r\n              <dl>\r\n                <dt>{{ $t('customerForm.nativeLanguage') }}</dt>\r\n                <dd>{{ languageString }}</dd>\r\n              </dl>\r\n              <dl>\r\n                <dt>{{ $t('customerForm.otherLanguages') }}</dt>\r\n                <dd v-for=\"lang in customerOtherLanguages\" :key=\"lang\">\r\n                  {{ lang }}\r\n                </dd>\r\n                <dd>{{ localCustomer.otherLanguages }}</dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 col-sm-6\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.myInterests') }}</span>\r\n            <div class=\"inputcontent\">\r\n              {{ interestsString }}\r\n            </div>\r\n            <div v-if=\"localCustomer.interestOther\" class=\"inputcontent\">\r\n              {{ localCustomer.interestOther }}\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-sm-6\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.friendWish') }}</span>\r\n            <div class=\"inputcontent\">\r\n              <dl>\r\n                <dt>{{ $t('customerForm.genderPreferences') }}</dt>\r\n                <dd>{{ preferredGenders }}</dd>\r\n                <dt>{{ $t('customerForm.desiredAge') }}</dt>\r\n                <dd>{{ preferredAges }}</dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 col-sm-6\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.netFriendTitle') }}</span>\r\n            <div class=\"inputcontent\">\r\n              <dl v-if=\"localCustomer.econtactEmail\">\r\n                <dt>{{ $t('connectivity.email') }}</dt>\r\n                <dd>{{ localCustomer.econtactEmail }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactTelegram\">\r\n                <dt>{{ $t('connectivity.telegram') }}</dt>\r\n                <dd>{{ localCustomer.econtactTelegram }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactKik\">\r\n                <dt>{{ $t('connectivity.kik') }}</dt>\r\n                <dd>{{ localCustomer.econtactKik }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactInstagram\">\r\n                <dt>{{ $t('connectivity.instagram') }}</dt>\r\n                <dd>{{ localCustomer.econtactInstagram }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactSkype\">\r\n                <dt>{{ $t('connectivity.skype') }}</dt>\r\n                <dd>{{ localCustomer.econtactSkype }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactDiscord\">\r\n                <dt>{{ $t('connectivity.discord') }}</dt>\r\n                <dd>{{ localCustomer.econtactDiscord }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactFreetext\">\r\n                <dt>{{ $t('connectivity.freetext') }}</dt>\r\n                <dd>{{ localCustomer.econtactFreetext }}</dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-md-8 inputcontent\">\r\n            <dl>\r\n              <dt>{{ $t('customerForm.netDescriptionTitle') }}</dt>\r\n              <dd>{{ netDescription }}</dd>\r\n            </dl>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-md-8\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.netAnythingElse') }}</span>\r\n            <sprtextarea\r\n              v-model=\"localCustomer.customerTypeOtherInfo\"\r\n              v-validate=\"{ max: 300 }\"\r\n              name=\"customerForm.shortDescription\"\r\n              :is-valid=\"localCustomer.customerTypeOtherInfo.length <= 300\"\r\n              :max-characters=\"300\"\r\n              :show-counter=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <checkboxinput v-model=\"privacyStatement\"\r\n                           v-validate=\"'required'\"\r\n                           :title=\"$t('customerForm.privacyStatement')\"\r\n                           :aria-label=\"$t('customerForm.privacyStatement')\"\r\n                           name=\"customerForm.privacyStatement\"\r\n                           :allow-html=\"true\"\r\n                           :white-warnings=\"false\"\r\n                           :has-error=\"privacyStatement === false\"\r\n                           :is-valid=\"privacyStatement === true\"\r\n                           :required=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <div class=\"buttons\">\r\n              <prevnextbuttons\r\n                is-save\r\n                @prev=\"onPrevClicked\"\r\n                @next=\"onNextClicked\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprtextarea from '../SPRSimpleTextArea.vue'\r\n  import prevnextbuttons from '../SPRPrevNextButtons.vue'\r\n  import enums from '@/mixins/enums.js'\r\n  import { FriendCustomerNetDto, LanguageDto } from '@/types/index'\r\n  import { TranslateResult } from 'vue-i18n'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    privacyStatement: boolean,\r\n    privacyStatementInError: boolean,\r\n    localCustomer: FriendCustomerNetDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'Summary',\r\n    components: { sprtextarea, prevnextbuttons, checkboxinput },\r\n    mixins: [enums],\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerNetDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        privacyStatement: false,\r\n        privacyStatementInError: false,\r\n        localCustomer: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      birthdateString (): string {\r\n        if (!this.localCustomer) return ''\r\n        var d = new Date(this.localCustomer.birthdate)\r\n        return d ? d.toLocaleDateString('fi-FI') : ''\r\n      },\r\n      genderString (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getGenderTranslation(this.localCustomer.gender)\r\n      },\r\n      netDescription (): string {\r\n        if (this.localCustomer && this.localCustomer.description) { return this.localCustomer.description }\r\n\r\n        return '-'\r\n      },\r\n      languageString (): string | TranslateResult {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        var isoCode = this.getLanguage(this.localCustomer?.nativeLanguage)?.isoCode\r\n        var translateString = `languages.${isoCode}`\r\n        return this.$t(translateString)\r\n      },\r\n      interestsString (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getInterestsMaskTranslation(this.localCustomer?.interests)\r\n      },\r\n      preferredGenders (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getGenderPreferencesMaskTranslation(this.localCustomer?.preferredGenders)\r\n      },\r\n      preferredAges (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getAgePreferencesMaskTranslation(this.localCustomer?.preferredAges)\r\n      },\r\n      customerOtherLanguages (): Array<string> | undefined {\r\n        return this.localCustomer?.customerLanguages\r\n          .filter((x: LanguageDto) => x.isoCode !== 'other')\r\n          .map((x: LanguageDto) => {\r\n          return this.$t('languages.' + x.isoCode).toString()\r\n        })\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.localCustomer = this.customer\r\n    },\r\n    methods: {\r\n      onConsentChanged (val: boolean): void {\r\n        console.log('Consent: ', val)\r\n      },\r\n      onPrevClicked (): void {\r\n        this.$emit('prev', this.localCustomer)\r\n      },\r\n      onNextClicked (): void {\r\n        if (this.privacyStatement) {\r\n          this.$validator.validateAll().then(result => {\r\n            if (result) {\r\n              this.$emit('next', this.localCustomer)\r\n            }\r\n          })\r\n        } else {\r\n          this.privacyStatementInError = true\r\n          this.$validator.validateAll()\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .summary {\r\n    background-color: $brand-white;\r\n    padding: 15px;\r\n    padding-top: 30px;\r\n\r\n    .headertitle {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .cap-label {\r\n      color: $brand-red;\r\n    }\r\n\r\n    .name {\r\n      font-weight: bold;\r\n    }\r\n\r\n    .inputcontent {\r\n      margin-top: 15px;\r\n      margin-bottom: 15px;\r\n    }\r\n\r\n    .buttons {\r\n      padding-top: 30px;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Summary.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Summary.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Summary.vue?vue&type=template&id=ae546578\"\nimport script from \"./Summary.vue?vue&type=script&lang=ts\"\nexport * from \"./Summary.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Summary.vue?vue&type=style&index=0&id=ae546578&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"success\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row headertitle\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.netCustomerSuccess'))+\" \"),_c('font-awesome-icon',{staticClass:\"tick\",attrs:{\"icon\":['far', 'check-circle']}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.$t('customerForm.newNetCustomerSuccessText'))}})])])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"buttons\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('wizard.complete'),\"primary\":true,\"icon\":\"chevron-right\",\"click-event\":\"finish\"},on:{\"finish\":_vm.onFinishClicked}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"success\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"row headertitle\">\r\n          <div class=\"col-12\">\r\n            <h3>{{ $t('customerForm.netCustomerSuccess') }} <font-awesome-icon :icon=\"['far', 'check-circle']\" class=\"tick\" /></h3>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <!-- eslint-disable vue/no-v-html -->\r\n            <div v-html=\"$t('customerForm.newNetCustomerSuccessText')\" />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div class=\"buttons\">\r\n          <sprbutton\r\n            :size=\"4\"\r\n            :title=\"$t('wizard.complete')\"\r\n            :primary=\"true\"\r\n            icon=\"chevron-right\"\r\n            click-event=\"finish\"\r\n            @finish=\"onFinishClicked\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import { TranslateResult } from 'vue-i18n'\r\n\r\n  export default Vue.extend({\r\n    name: 'Success',\r\n    components: { sprbutton },\r\n    methods: {\r\n      onFinishClicked (): void {\r\n        this.$emit('next')\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .success {\r\n    background-color: $brand-white;\r\n    padding: 15px;\r\n    padding-top: 30px;\r\n\r\n    .headertitle {\r\n      margin-bottom: 30px;\r\n      .tick {\r\n        color: $brand-success;\r\n      }\r\n    }\r\n\r\n    .cap-label {\r\n      color: $brand-red;\r\n    }\r\n\r\n    .buttons {\r\n      padding-top: 30px;\r\n      text-align: center;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Success.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Success.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Success.vue?vue&type=template&id=3a1fe557\"\nimport script from \"./Success.vue?vue&type=script&lang=ts\"\nexport * from \"./Success.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Success.vue?vue&type=style&index=0&id=3a1fe557&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"anonnetcustomerform col-12\">\r\n    <div v-if=\"isStart\">\r\n      <Start\r\n        @next=\"next\"\r\n      />\r\n    </div>\r\n    <div v-else>\r\n      <div class=\"container\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <StepVizualizer\r\n              :step=\"step\"\r\n            />\r\n            <PersonalInfo\r\n              v-if=\"isPersonalInfo\"\r\n              :customer=\"customer\"\r\n              @next=\"next\"\r\n              @prev=\"prev\"\r\n            />\r\n            <LanguageInfo\r\n              v-if=\"isLanguageInfo\"\r\n              :customer=\"customer\"\r\n              @next=\"next\"\r\n              @prev=\"prev\"\r\n            />\r\n            <InterestInfo\r\n              v-if=\"isInterestInfo\"\r\n              :customer=\"customer\"\r\n              @next=\"next\"\r\n              @prev=\"prev\"\r\n            />\r\n            <FriendInfo\r\n              v-if=\"isFriendInfo\"\r\n              :customer=\"customer\"\r\n              @next=\"next\"\r\n              @prev=\"prev\"\r\n            />\r\n            <ContactInfo\r\n              v-if=\"isContactInfo\"\r\n              :customer=\"customer\"\r\n              @next=\"next\"\r\n              @prev=\"prev\"\r\n            />\r\n            <Summary\r\n              v-if=\"isSummary\"\r\n              :customer=\"customer\"\r\n              @next=\"next\"\r\n              @prev=\"prev\"\r\n            />\r\n            <Success\r\n              v-if=\"isSuccess\"\r\n              @next=\"next\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import StepVizualizer from './StepVizualizer.vue'\r\n  import Start from './Start.vue'\r\n  import PersonalInfo from './PersonalInfo.vue'\r\n  import LanguageInfo from './LanguageInfo.vue'\r\n  import InterestInfo from './InterestInfo.vue'\r\n  import FriendInfo from './FriendInfo.vue'\r\n  import ContactInfo from './ContactInfo.vue'\r\n  import Summary from './Summary.vue'\r\n  import Success from './Success.vue'\r\n  import { AvailabilityFrequence, CustomerState, FriendCustomerNetDto, Gender, Interests, NetCustomerTypes, PreferredAges, PreferredGenders } from '@/types/index'\r\n  import { AnonNetCustomerRegistrationStep } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    initialized: boolean,\r\n    isSending: boolean,\r\n    customer: FriendCustomerNetDto,\r\n    emptyCustomer: FriendCustomerNetDto,\r\n    intervDate: string,\r\n    intervName: string,\r\n    approvDate: string,\r\n    approvName: string,\r\n    groupDate: string,\r\n    groupName: string,\r\n    declineDate: string,\r\n    declineName: string,\r\n    step: AnonNetCustomerRegistrationStep\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'AnonNetCustomerForm',\r\n    components: { StepVizualizer, Start, PersonalInfo, LanguageInfo, InterestInfo, FriendInfo, ContactInfo, Summary, Success },\r\n    props: {\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        step: AnonNetCustomerRegistrationStep.Start,\r\n        customer: (this as any).initialCustomer(),\r\n        emptyCustomer: (this as any).initialCustomer(),\r\n        isSending: false,\r\n        intervDate: '',\r\n        intervName: '',\r\n        approvDate: '',\r\n        approvName: '',\r\n        groupDate: '',\r\n        groupName: '',\r\n        declineDate: '',\r\n        declineName: '',\r\n        initialized: false\r\n      }\r\n    },\r\n    computed: {\r\n      isStart (): boolean {\r\n        return this.step === Number(AnonNetCustomerRegistrationStep.Start)\r\n      },\r\n      isPersonalInfo (): boolean {\r\n        return this.step === Number(AnonNetCustomerRegistrationStep.PersonalInfo)\r\n      },\r\n      isLanguageInfo (): boolean {\r\n        return this.step === Number(AnonNetCustomerRegistrationStep.LanguageInfo)\r\n      },\r\n      isInterestInfo (): boolean {\r\n        return this.step === Number(AnonNetCustomerRegistrationStep.InterestInfo)\r\n      },\r\n      isFriendInfo (): boolean {\r\n        return this.step === Number(AnonNetCustomerRegistrationStep.FriendInfo)\r\n      },\r\n      isContactInfo (): boolean {\r\n        return this.step === Number(AnonNetCustomerRegistrationStep.ContactInfo)\r\n      },\r\n      isSummary (): boolean {\r\n        return this.step === Number(AnonNetCustomerRegistrationStep.Summary)\r\n      },\r\n      isSuccess (): boolean {\r\n        return this.step === Number(AnonNetCustomerRegistrationStep.Success)\r\n      }\r\n    },\r\n    beforeRouteLeave (to, from, next) {\r\n      if (this.changeDetected()) {\r\n        var text = this.$t('profile.unsavedChanges').toString()\r\n        const answer = window.confirm(text)\r\n        if (!answer) {\r\n          return next(false)\r\n        }\r\n      }\r\n\r\n      return next()\r\n    },\r\n    methods: {\r\n      changeDetected (): boolean {\r\n        return JSON.stringify(this.emptyCustomer) !== JSON.stringify(this.customer)\r\n      },\r\n      initialCustomer (): FriendCustomerNetDto {\r\n        return {\r\n          id: 0,\r\n          availabilityFrequency: AvailabilityFrequence.NotDefined,\r\n          otherLanguages: '',\r\n          firstName: '',\r\n          lastName: '',\r\n          streetAddress: '',\r\n          city: '',\r\n          zipCode: '',\r\n          gsmPhone: '',\r\n          homePhone: '',\r\n          email: '',\r\n          birthdate: new Date(),\r\n          contactFirstName: '',\r\n          contactLastName: '',\r\n          contactStreetAddress: '',\r\n          contactZipCode: '',\r\n          contactCity: '',\r\n          contactPhonenumber: '',\r\n          contactEmail: '',\r\n          contactRelation: '',\r\n          gender: Gender.Male,\r\n          customerTypes: NetCustomerTypes.NotDefined,\r\n          preferredGenders: PreferredGenders.Male | PreferredGenders.Female | PreferredGenders.Other,\r\n          preferredAges: PreferredAges.NotDefined,\r\n          nativeLanguage: 'fi',\r\n          customerLanguages: [],\r\n          interests: Interests.NotDefined,\r\n          interestOther: '',\r\n          description: '',\r\n          shortDescription: '',\r\n          customerInterviewed: false,\r\n          customerApproval: false,\r\n          customerNotForPrivateRelations: false,\r\n          customerNotForSpr: false,\r\n          customerNotForSprBy: '',\r\n          customerNotForPrivateRelationsBy: '',\r\n          state: CustomerState.NotDefined,\r\n          customerInterviewedBy: '',\r\n          customerApprovedBy: '',\r\n          startedPending: new Date(),\r\n          otherContact: '',\r\n          econtactEmail: '',\r\n          econtactTelegram: '',\r\n          econtactKik: '',\r\n          econtactInstagram: '',\r\n          econtactSkype: '',\r\n          econtactDiscord: '',\r\n          econtactFreetext: '',\r\n          onHold: false,\r\n          onHoldComment: '',\r\n          onHoldUntilDate: undefined,\r\n          privateNotes: '',\r\n          friendPools: [],\r\n          friendships: [],\r\n          customerTypeOtherInfo: '',\r\n          friendManagementGroupId: 0,\r\n          fullname: '',\r\n          lastFriendshipEndDate: new Date(),\r\n          multipleVolunteers: false\r\n        } as FriendCustomerNetDto\r\n      },\r\n      next (cust: FriendCustomerNetDto) {\r\n        if (this.step === Number(AnonNetCustomerRegistrationStep.Success)) {\r\n          this.$router.push('/')\r\n        }\r\n        if (this.step === Number(AnonNetCustomerRegistrationStep.Summary)) {\r\n          this.save()\r\n        }\r\n        if (cust) {\r\n          this.customer = cust\r\n        }\r\n        ++this.step\r\n      },\r\n      prev (cust: FriendCustomerNetDto) {\r\n        if (this.step === Number(AnonNetCustomerRegistrationStep.Start)) return\r\n        if (cust) {\r\n          this.customer = cust\r\n        }\r\n        --this.step\r\n      },\r\n      save () {\r\n        var self = this\r\n        this.$validator.validateAll().then(result => {\r\n          var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.anonymousnetcustomeradd[0]\r\n\r\n          this.$http.post(url, this.customer).then(response => {\r\n            if (response.ok) {\r\n              self.isSending = false\r\n\r\n              this.step = AnonNetCustomerRegistrationStep.Success\r\n            }\r\n          }, response => {\r\n            this.displayError(response)\r\n            self.isSending = false\r\n          })\r\n        })\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .anonnetcustomerform {\r\n    padding: 0;\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AnonNetCustomerForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AnonNetCustomerForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AnonNetCustomerForm.vue?vue&type=template&id=95655574\"\nimport script from \"./AnonNetCustomerForm.vue?vue&type=script&lang=ts\"\nexport * from \"./AnonNetCustomerForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AnonNetCustomerForm.vue?vue&type=style&index=0&id=95655574&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"anoncustomerform col-12\"},[(_vm.isStart)?_c('div',[_c('Start',{on:{\"next\":_vm.start}})],1):(_vm.isGroupContactInfo)?_c('div',[_c('GroupContactInfo',{attrs:{\"customer\":_vm.customer,\"fmgid\":_vm.fmgid},on:{\"next\":_vm.next,\"prev\":_vm.prev}})],1):_c('div',[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('StepVizualizer',{attrs:{\"step\":_vm.step}}),(_vm.isPersonalInfo)?_c('PersonalInfo',{attrs:{\"customer\":_vm.customer},on:{\"next\":_vm.next,\"prev\":_vm.prev}}):_vm._e(),(_vm.isLanguageInfo)?_c('LanguageInfo',{attrs:{\"customer\":_vm.customer},on:{\"next\":_vm.next,\"prev\":_vm.prev}}):_vm._e(),(_vm.isInterestInfo)?_c('InterestInfo',{attrs:{\"customer\":_vm.customer},on:{\"next\":_vm.next,\"prev\":_vm.prev}}):_vm._e(),(_vm.isFriendInfo)?_c('FriendInfo',{attrs:{\"customer\":_vm.customer},on:{\"next\":_vm.next,\"prev\":_vm.prev}}):_vm._e(),(_vm.isContactInfo)?_c('ContactInfo',{attrs:{\"customer\":_vm.customer},on:{\"next\":_vm.next,\"prev\":_vm.prev}}):_vm._e(),(_vm.isSummary)?_c('Summary',{attrs:{\"customer\":_vm.customer},on:{\"next\":_vm.next,\"prev\":_vm.prev}}):_vm._e(),(_vm.isSuccess)?_c('Success',{on:{\"next\":_vm.next}}):_vm._e()],1)])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"col-12 comp-admin-friend-level my-3\"},[_c('div',{staticClass:\"row group-header\"},[_c('div',{staticClass:\"col-12 col-md-8\"},[_c('label',{staticClass:\"groupname\"},[_vm._v(\" \"+_vm._s(_vm.friendshipGroup.name)+\" \")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('friendshipcontact',{attrs:{\"contact-info-list\":_vm.friendshipGroup.contactInfo,\"editable\":false,\"is-friend-request\":true,\"show-standard-button\":_vm.friendshipGroup.friendRequestFormAllowed},on:{\"next\":function($event){return _vm.onNextClicked()}}}),_c('friendshipActivities',{attrs:{\"group-activities\":_vm.friendshipGroup.groupActivities,\"friendship-management-group-id\":_vm.friendshipGroup.id,\"read-only\":\"\"}})],1),_c('div',{staticClass:\"col-12\"})]),_c('div',{staticClass:\"row\"}),_c('div',{staticClass:\"row contactinfo netTitle\"},[_c('div',{staticClass:\"col-12 title\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.groupNetTitle'))+\" \")]),_c('div',{staticClass:\"buttons\"},[_c('sprbutton',{staticClass:\"next\",attrs:{\"size\":4,\"title\":_vm.$t('customerForm.sendNetRequest'),\"primary\":true,\"icon\":\"chevron-right\",\"click-event\":\"click\"},on:{\"click\":_vm.onNetFriendRequestClicked}})],1)]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"buttons\"},[_c('prevnextbuttons',{attrs:{\"next-text\":_vm.$t('customerForm.sendRequest'),\"show-next\":false},on:{\"prev\":function($event){return _vm.onPrevClicked()},\"next\":function($event){return _vm.onNextClicked()}}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"friendship-contact\"},[_vm._l((_vm.contactInfoList),function(listItem,index){return _c('div',{key:listItem.id,staticClass:\"row contactinfo\"},[_c('div',{staticClass:\"col-12 title\"},[(index === 0 && _vm.isFriendRequest)?_c('span',{staticClass:\"row header\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.groupStandardTitle'))+\" \"),_c('br')]):_vm._e(),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isEditing(listItem)),expression:\"!isEditing(listItem)\"}]},[_vm._v(\" \"+_vm._s(listItem.title)+\" \"),(_vm.editable)?_c('a',{attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":function($event){return _vm.toggleEdit(listItem)}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"pencil-alt\",\"aria-hidden\":\"true\"}})],1):_vm._e()]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isEditing(listItem)),expression:\"isEditing(listItem)\"}]},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],key:`contactinfo.title_${listItem.id}`,attrs:{\"compact\":\"\",\"name\":`contactinfo.title_${listItem.id}`,\"required\":true,\"hint\":_vm.$t('userAdmin.friendshipGroupContactTitle'),\"is-valid\":!_vm.errors.has(`contactinfo.title_${listItem.id}`)},model:{value:(_vm.contact.title),callback:function ($$v) {_vm.$set(_vm.contact, \"title\", $$v)},expression:\"contact.title\"}})],1)]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[(!_vm.isEditing(listItem))?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(listItem.address),expression:\"listItem.address\"}],staticClass:\"contactinfoitem col-sm-6\"},[_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'hospital']}}),_vm._v(\" \"+_vm._s(listItem.address))],1)]):_c('div',{staticClass:\"contactinfoitem col-sm-6\"},[_c('forminput',{attrs:{\"compact\":\"\",\"name\":\"contactinfo.address\",\"hint\":_vm.$t('userAdmin.friendshipGroupAddress'),\"is-valid\":true,\"icon\":['far', 'hospital']},model:{value:(_vm.contact.address),callback:function ($$v) {_vm.$set(_vm.contact, \"address\", $$v)},expression:\"contact.address\"}})],1),(!_vm.isEditing(listItem))?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(listItem.onCallTimes),expression:\"listItem.onCallTimes\"}],staticClass:\"contactinfoitem col-sm-6\"},[_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'clock']}}),_vm._v(\" \"+_vm._s(listItem.onCallTimes)+\" \")],1)]):_c('div',{staticClass:\"contactinfoitem col-sm-6\"},[_c('forminput',{attrs:{\"compact\":\"\",\"name\":\"contactinfo.onCallTimes\",\"hint\":_vm.$t('userAdmin.friendshipGroupOnCallTimes'),\"is-valid\":!_vm.errors.has('contactinfo.onCallTimes'),\"icon\":['far', 'clock']},model:{value:(_vm.contact.onCallTimes),callback:function ($$v) {_vm.$set(_vm.contact, \"onCallTimes\", $$v)},expression:\"contact.onCallTimes\"}})],1),(!_vm.isEditing(listItem))?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(listItem.phone),expression:\"listItem.phone\"}],staticClass:\"contactinfoitem col-sm-6\"},[_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":\"phone\"}}),_vm._v(\" \"+_vm._s(listItem.phone)+\" \")],1)]):_c('div',{staticClass:\"contactinfoitem col-sm-6\"},[_c('forminput',{attrs:{\"compact\":\"\",\"name\":\"contactinfo.phone\",\"hint\":_vm.$t('userAdmin.friendshipGroupPhone'),\"is-valid\":!_vm.errors.has('contactinfo.phone'),\"icon\":\"phone\"},model:{value:(_vm.contact.phone),callback:function ($$v) {_vm.$set(_vm.contact, \"phone\", $$v)},expression:\"contact.phone\"}})],1),(!_vm.isEditing(listItem))?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(listItem.email),expression:\"listItem.email\"}],staticClass:\"contactinfoitem col-sm-6\"},[_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":\"envelope\"}}),_vm._v(\" \"+_vm._s(listItem.email)+\" \")],1)]):_c('div',{staticClass:\"contactinfoitem col-sm-6\"},[_c('forminput',{attrs:{\"compact\":\"\",\"name\":\"contactinfo.email\",\"hint\":_vm.$t('userAdmin.friendshipGroupEmail'),\"is-valid\":!_vm.errors.has('contactinfo.email'),\"icon\":\"envelope\"},model:{value:(_vm.contact.email),callback:function ($$v) {_vm.$set(_vm.contact, \"email\", $$v)},expression:\"contact.email\"}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isEditing(listItem) && !(listItem.address || listItem.onCallTimes || listItem.phone || listItem.email)),expression:\"!isEditing(listItem) && !(listItem.address || listItem.onCallTimes || listItem.phone || listItem.email)\"}],staticClass:\"contactinfoitem col-sm-6\"},[_c('span',[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.noContactInfo'))+\" \")])])])]),(_vm.contactInfoList.length > 0 && index === _vm.contactInfoList.length - 1 && _vm.isFriendRequest && _vm.showStandardButton)?_c('div',{staticClass:\"buttons\"},[_c('sprbutton',{staticClass:\"next\",attrs:{\"size\":4,\"title\":_vm.$t('customerForm.sendRequest'),\"primary\":true,\"icon\":\"chevron-right\",\"click-event\":\"click\"},on:{\"click\":_vm.onFriendRequestClicked}})],1):_vm._e(),(_vm.isEditing(listItem))?_c('div',{staticClass:\"col-8 buttons\"},[_c('sprbutton',{staticClass:\"spr-redborder primary\",attrs:{\"type\":\"button\",\"size\":5,\"title\":_vm.$t('userAdmin.editSave'),\"click-event\":\"savecontact\"},on:{\"savecontact\":_vm.onSave}}),_c('sprbutton',{staticClass:\"spr-redborder\",attrs:{\"type\":\"button\",\"size\":5,\"title\":_vm.$t('userAdmin.editCancel'),\"click-event\":\"cancelsave\"},on:{\"cancelsave\":_vm.onCancel}})],1):_vm._e(),(_vm.isEditing(listItem))?_c('div',{staticClass:\"col-4 text-right buttons\"},[_c('sprbutton',{staticClass:\"spr-redborder primary\",attrs:{\"type\":\"button\",\"size\":5,\"title\":_vm.$t('userAdmin.delete'),\"click-event\":\"delete\"},on:{\"delete\":_vm.onDelete}})],1):_vm._e()])}),(_vm.editable && !_vm.isAdding)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 buttons\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":_vm.onAdd}},[_vm._v(_vm._s(_vm.$t('userAdmin.addFriendshipGroupContact')))])])]):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isAdding),expression:\"isAdding\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-12 title\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],key:`addtitle_1`,attrs:{\"compact\":\"\",\"name\":\"contactinfo_add.addTitle\",\"required\":true,\"hint\":_vm.$t('userAdmin.friendshipGroupContactTitle'),\"is-valid\":!_vm.errors.has('contactinfo_add.addTitle')},model:{value:(_vm.contact.title),callback:function ($$v) {_vm.$set(_vm.contact, \"title\", $$v)},expression:\"contact.title\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-6\"},[_c('div',{staticClass:\"contactinfoitem\"},[_c('forminput',{attrs:{\"compact\":\"\",\"name\":\"contactinfo.addAddress\",\"hint\":_vm.$t('userAdmin.friendshipGroupAddress'),\"is-valid\":true,\"icon\":['far', 'hospital']},model:{value:(_vm.contact.address),callback:function ($$v) {_vm.$set(_vm.contact, \"address\", $$v)},expression:\"contact.address\"}})],1),_c('div',{staticClass:\"contactinfoitem\"},[_c('forminput',{attrs:{\"compact\":\"\",\"name\":\"contactinfo.addOnCallTimes\",\"hint\":_vm.$t('userAdmin.friendshipGroupOnCallTimes'),\"is-valid\":true,\"icon\":['far', 'clock']},model:{value:(_vm.contact.onCallTimes),callback:function ($$v) {_vm.$set(_vm.contact, \"onCallTimes\", $$v)},expression:\"contact.onCallTimes\"}})],1)]),_c('div',{staticClass:\"col-xs-12 col-sm-6\"},[_c('div',{staticClass:\"contactinfoitem\"},[_c('forminput',{attrs:{\"compact\":\"\",\"name\":\"contactinfo.addPhone\",\"hint\":_vm.$t('userAdmin.friendshipGroupPhone'),\"is-valid\":true,\"icon\":\"phone\"},model:{value:(_vm.contact.phone),callback:function ($$v) {_vm.$set(_vm.contact, \"phone\", $$v)},expression:\"contact.phone\"}})],1),_c('div',{staticClass:\"contactinfoitem\"},[_c('forminput',{attrs:{\"compact\":\"\",\"name\":\"contactinfo.addEmail\",\"hint\":_vm.$t('userAdmin.friendshipGroupEmail'),\"is-valid\":true,\"icon\":\"envelope\"},model:{value:(_vm.contact.email),callback:function ($$v) {_vm.$set(_vm.contact, \"email\", $$v)},expression:\"contact.email\"}})],1)])])]),_c('div',{staticClass:\"col-12 buttons\"},[_c('sprbutton',{staticClass:\"spr-redborder primary\",attrs:{\"type\":\"button\",\"size\":5,\"title\":_vm.$t('userAdmin.editSave'),\"click-event\":\"savecontact\"},on:{\"savecontact\":_vm.onAddSave}}),_c('sprbutton',{staticClass:\"spr-redborder\",attrs:{\"type\":\"button\",\"size\":5,\"title\":_vm.$t('userAdmin.editCancel'),\"click-event\":\"cancelsave\"},on:{\"cancelsave\":_vm.onAddCancel}})],1)])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"friendship-contact\">\r\n    <div v-for=\"(listItem, index) in contactInfoList\" :key=\"listItem.id\" class=\"row contactinfo\">\r\n      <div class=\"col-12 title\">\r\n        <!-- Render header text only for the first element -->\r\n        <span v-if=\"index === 0 && isFriendRequest\" class=\"row header\">\r\n          {{ $t('customerForm.groupStandardTitle') }}\r\n          <br>\r\n        </span>\r\n        <span v-show=\"!isEditing(listItem)\">\r\n          {{ listItem.title }}\r\n          <a v-if=\"editable\" tabindex=\"0\" href=\"javascript:void(0);\" @click=\"toggleEdit(listItem)\">\r\n            <font-awesome-icon icon=\"pencil-alt\" aria-hidden=\"true\" />\r\n          </a>\r\n        </span>\r\n        <span v-show=\"isEditing(listItem)\">\r\n          <forminput\r\n            :key=\"`contactinfo.title_${listItem.id}`\"\r\n            v-model=\"contact.title\"\r\n            v-validate=\"'required'\"\r\n            compact\r\n            :name=\"`contactinfo.title_${listItem.id}`\"\r\n            :required=\"true\"\r\n            :hint=\"$t('userAdmin.friendshipGroupContactTitle')\"\r\n            :is-valid=\"!errors.has(`contactinfo.title_${listItem.id}`)\"\r\n          />\r\n        </span>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div class=\"row\">\r\n          <div v-if=\"!isEditing(listItem)\" v-show=\"listItem.address\" class=\"contactinfoitem col-sm-6\">\r\n            <span>\r\n              <font-awesome-icon :icon=\"['far', 'hospital']\" />\r\n              {{ listItem.address }}</span>\r\n          </div>\r\n          <div v-else class=\"contactinfoitem col-sm-6\">\r\n            <forminput\r\n              v-model=\"contact.address\"\r\n              compact\r\n              name=\"contactinfo.address\"\r\n              :hint=\"$t('userAdmin.friendshipGroupAddress')\"\r\n              :is-valid=\"true\"\r\n              :icon=\"['far', 'hospital']\"\r\n            />\r\n          </div>\r\n\r\n          <div v-if=\"!isEditing(listItem)\" v-show=\"listItem.onCallTimes\" class=\"contactinfoitem col-sm-6\">\r\n            <span>\r\n              <font-awesome-icon :icon=\"['far', 'clock']\" />\r\n              {{ listItem.onCallTimes }}\r\n            </span>\r\n          </div>\r\n          <div v-else class=\"contactinfoitem col-sm-6\">\r\n            <forminput\r\n              v-model=\"contact.onCallTimes\"\r\n              compact\r\n              name=\"contactinfo.onCallTimes\"\r\n              :hint=\"$t('userAdmin.friendshipGroupOnCallTimes')\"\r\n              :is-valid=\"!errors.has('contactinfo.onCallTimes')\"\r\n              :icon=\"['far', 'clock']\"\r\n            />\r\n          </div>\r\n\r\n          <div v-if=\"!isEditing(listItem)\" v-show=\"listItem.phone\" class=\"contactinfoitem col-sm-6\">\r\n            <span>\r\n              <font-awesome-icon icon=\"phone\" />\r\n              {{ listItem.phone }}\r\n            </span>\r\n          </div>\r\n          <div v-else class=\"contactinfoitem col-sm-6\">\r\n            <forminput\r\n              v-model=\"contact.phone\"\r\n              compact\r\n              name=\"contactinfo.phone\"\r\n              :hint=\"$t('userAdmin.friendshipGroupPhone')\"\r\n              :is-valid=\"!errors.has('contactinfo.phone')\"\r\n              icon=\"phone\"\r\n            />\r\n          </div>\r\n\r\n          <div v-if=\"!isEditing(listItem)\" v-show=\"listItem.email\" class=\"contactinfoitem col-sm-6\">\r\n            <span>\r\n              <font-awesome-icon icon=\"envelope\" />\r\n              {{ listItem.email }}\r\n            </span>\r\n          </div>\r\n          <div v-else class=\"contactinfoitem col-sm-6\">\r\n            <forminput\r\n              v-model=\"contact.email\"\r\n              compact\r\n              name=\"contactinfo.email\"\r\n              :hint=\"$t('userAdmin.friendshipGroupEmail')\"\r\n              :is-valid=\"!errors.has('contactinfo.email')\"\r\n              icon=\"envelope\"\r\n            />\r\n          </div>\r\n\r\n          <div v-show=\"!isEditing(listItem) && !(listItem.address || listItem.onCallTimes || listItem.phone || listItem.email)\" class=\"contactinfoitem col-sm-6\">\r\n            <span>\r\n              {{ $t('userAdmin.noContactInfo') }}\r\n            </span>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <!-- Render button after the loop if it's the last item -->\r\n      <div v-if=\"contactInfoList.length > 0 && index === contactInfoList.length - 1 && isFriendRequest && showStandardButton\" class=\"buttons\">\r\n        <sprbutton\r\n          :size=\"4\"\r\n          :title=\"$t('customerForm.sendRequest')\"\r\n          :primary=\"true\"\r\n          icon=\"chevron-right\"\r\n          class=\"next\"\r\n          click-event=\"click\"\r\n          @click=\"onFriendRequestClicked\"\r\n        />\r\n      </div>\r\n      <div v-if=\"isEditing(listItem)\" class=\"col-8 buttons\">\r\n        <sprbutton type=\"button\"\r\n                   :size=\"5\"\r\n                   :title=\"$t('userAdmin.editSave')\"\r\n                   class=\"spr-redborder primary\"\r\n                   click-event=\"savecontact\"\r\n                   @savecontact=\"onSave\"\r\n        />\r\n        <sprbutton type=\"button\"\r\n                   :size=\"5\"\r\n                   :title=\"$t('userAdmin.editCancel')\"\r\n                   class=\"spr-redborder\"\r\n                   click-event=\"cancelsave\"\r\n                   @cancelsave=\"onCancel\"\r\n        />\r\n      </div>\r\n      <div v-if=\"isEditing(listItem)\" class=\"col-4 text-right buttons\">\r\n        <sprbutton type=\"button\"\r\n                   :size=\"5\"\r\n                   :title=\"$t('userAdmin.delete')\"\r\n                   class=\"spr-redborder primary\"\r\n                   click-event=\"delete\"\r\n                   @delete=\"onDelete\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"editable && !isAdding\" class=\"row\">\r\n      <div class=\"col-12 buttons\">\r\n        <a href=\"#\" @click=\"onAdd\">{{ $t('userAdmin.addFriendshipGroupContact') }}</a>\r\n      </div>\r\n    </div>\r\n    <div v-show=\"isAdding\" class=\"row\">\r\n      <div class=\"col-12 title\">\r\n        <forminput\r\n          :key=\"`addtitle_1`\"\r\n          v-model=\"contact.title\"\r\n          v-validate=\"'required'\"\r\n          compact\r\n          name=\"contactinfo_add.addTitle\"\r\n          :required=\"true\"\r\n          :hint=\"$t('userAdmin.friendshipGroupContactTitle')\"\r\n          :is-valid=\"!errors.has('contactinfo_add.addTitle')\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div class=\"row\">\r\n          <div class=\"col-xs-12 col-sm-6\">\r\n            <div class=\"contactinfoitem\">\r\n              <forminput\r\n                v-model=\"contact.address\"\r\n                compact\r\n                name=\"contactinfo.addAddress\"\r\n                :hint=\"$t('userAdmin.friendshipGroupAddress')\"\r\n                :is-valid=\"true\"\r\n                :icon=\"['far', 'hospital']\"\r\n              />\r\n            </div>\r\n            <div class=\"contactinfoitem\">\r\n              <forminput\r\n                v-model=\"contact.onCallTimes\"\r\n                compact\r\n                name=\"contactinfo.addOnCallTimes\"\r\n                :hint=\"$t('userAdmin.friendshipGroupOnCallTimes')\"\r\n                :is-valid=\"true\"\r\n                :icon=\"['far', 'clock']\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"col-xs-12 col-sm-6\">\r\n            <div class=\"contactinfoitem\">\r\n              <forminput\r\n                v-model=\"contact.phone\"\r\n                compact\r\n                name=\"contactinfo.addPhone\"\r\n                :hint=\"$t('userAdmin.friendshipGroupPhone')\"\r\n                :is-valid=\"true\"\r\n                icon=\"phone\"\r\n              />\r\n            </div>\r\n            <div class=\"contactinfoitem\">\r\n              <forminput\r\n                v-model=\"contact.email\"\r\n                compact\r\n                name=\"contactinfo.addEmail\"\r\n                :hint=\"$t('userAdmin.friendshipGroupEmail')\"\r\n                :is-valid=\"true\"\r\n                icon=\"envelope\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12 buttons\">\r\n        <sprbutton type=\"button\"\r\n                   :size=\"5\"\r\n                   :title=\"$t('userAdmin.editSave')\"\r\n                   class=\"spr-redborder primary\"\r\n                   click-event=\"savecontact\"\r\n                   @savecontact=\"onAddSave\"\r\n        />\r\n        <sprbutton type=\"button\"\r\n                   :size=\"5\"\r\n                   :title=\"$t('userAdmin.editCancel')\"\r\n                   class=\"spr-redborder\"\r\n                   click-event=\"cancelsave\"\r\n                   @cancelsave=\"onAddCancel\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  export default {\r\n    name: 'FriendshipContact',\r\n    components: { forminput, sprbutton },\r\n    props: {\r\n      contactInfoList: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      editable: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      isFriendRequest: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      showStandardButton: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        contact: {}\r\n      }\r\n    },\r\n    computed: {\r\n      isAdding () {\r\n        return this.contact && this.contact.id === 0\r\n      }\r\n    },\r\n    methods: {\r\n      isEditing (listItem) {\r\n        if (!this.contact) return false\r\n        return listItem.id === this.contact.id\r\n      },\r\n      toggleEdit (listItem) {\r\n        this.contact = JSON.parse(JSON.stringify(listItem))\r\n      },\r\n      onFriendRequestClicked () {\r\n        this.$emit('next')\r\n      },\r\n      onSave () {\r\n        var self = this\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            self.$emit('ContactSave', self.contact)\r\n            self.contact = {}\r\n          }\r\n        })\r\n      },\r\n      onCancel () {\r\n        this.contact = {}\r\n      },\r\n      onAdd () {\r\n        this.contact = {\r\n          id: 0,\r\n          title: '',\r\n          address: '',\r\n          onCallTimes: '',\r\n          phone: '',\r\n          email: ''\r\n        }\r\n      },\r\n      onAddSave () {\r\n        var self = this\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            this.$emit('ContactAdd', self.contact)\r\n            this.contact = {}\r\n          }\r\n        })\r\n      },\r\n      onAddCancel () {\r\n        this.contact = {}\r\n      },\r\n      onDelete () {\r\n        this.$emit('ContactDelete', this.contact.id)\r\n        this.contact = {}\r\n      }\r\n    }\r\n  }\r\n</script>\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .friendship-contact {\r\n    .few-zips {\r\n      overflow: hidden;\r\n      text-overflow: ellipsis;\r\n      white-space: nowrap;\r\n    }\r\n    .contactinfo {\r\n      margin-bottom: 10px;\r\n      .title {\r\n        font-weight: bold;\r\n        margin-bottom: 5px;\r\n      }\r\n      .contactinfoitem {\r\n        svg {\r\n          color:$brand-red;\r\n          margin-right: 5px;\r\n        }\r\n      }\r\n    }\r\n    .header {\r\n      margin-bottom: 25px;\r\n    }\r\n    .buttons {\r\n      margin-bottom: 15px;\r\n      a {\r\n        margin-top: 20px;\r\n        display: block;\r\n      }\r\n\r\n      .primary {\r\n        color:$brand-white;\r\n        background-color:$brand-red;\r\n\r\n        &:hover {\r\n          color:$brand-red;\r\n          background-color:$brand-white;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipContact.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipContact.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FriendshipContact.vue?vue&type=template&id=cfff7a40\"\nimport script from \"./FriendshipContact.vue?vue&type=script&lang=js\"\nexport * from \"./FriendshipContact.vue?vue&type=script&lang=js\"\nimport style0 from \"./FriendshipContact.vue?vue&type=style&index=0&id=cfff7a40&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:{'friendship-activities': true, 'white-background': _vm.readOnly}},[_c('div',{staticClass:\"row title\"},[_c('span',{class:{'header': !_vm.readOnly, 'header black': _vm.readOnly}},[_vm._v(\" \"+_vm._s(_vm.$t('friendshipAdmin.activitiesTitle'))+\" \")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isEditing && _vm.canEdit),expression:\"!isEditing && canEdit\"}],staticClass:\"edit-icon\"},[_c('a',{attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.toggleEdit}},[_c('font-awesome-icon',{attrs:{\"icon\":\"pencil-alt\",\"aria-hidden\":\"true\"}})],1)])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hasActivities),expression:\"!hasActivities\"}]},[_c('span',[_vm._v(_vm._s(_vm.$t('friendshipAdmin.noActivities')))])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isEditing),expression:\"!isEditing\"}],class:{'indent' : _vm.readOnly}},_vm._l((_vm.groupActivities),function(activity){return _c('div',{key:activity.$id,staticClass:\"activity-item\"},[_c('friendshipActivity',{attrs:{\"value\":activity,\"friend-management-group-id\":_vm.friendshipManagementGroupId,\"read-mode\":true}})],1)}),0),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isEditing && _vm.canEdit),expression:\"isEditing && canEdit\"}]},[_vm._l((_vm.groupActivities),function(activity){return _c('div',{key:activity.$id,staticClass:\"activity-item\"},[_c('friendshipActivity',{attrs:{\"value\":activity,\"friend-management-group-id\":_vm.friendshipManagementGroupId,\"read-mode\":false}})],1)}),_c('div',{staticClass:\"col-12 buttons\"},[_c('sprbutton',{staticClass:\"spr-redborder primary\",attrs:{\"type\":\"button\",\"size\":5,\"title\":_vm.$t('userAdmin.editSave'),\"click-event\":\"savecontact\"},on:{\"savecontact\":_vm.onSave}}),_c('sprbutton',{staticClass:\"spr-redborder\",attrs:{\"type\":\"button\",\"size\":5,\"title\":_vm.$t('userAdmin.editCancel'),\"click-event\":\"cancelsave\"},on:{\"cancelsave\":_vm.onCancel}})],1)],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"spr-simple-checkbox\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.readMode && _vm.activated),expression:\"readMode && activated\"}]},[_c('div',{staticClass:\"description-title\"},[_vm._v(_vm._s(_vm.$t(_vm.toCamelCase(_vm.value.translationKey))))]),_c('ul',{staticClass:\"description\"},_vm._l((_vm.descriptionLines),function(line,index){return _c('li',{key:index},[_vm._v(_vm._s(line))])}),0)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.readMode),expression:\"!readMode\"}]},[_c('input',{attrs:{\"id\":_vm._uid,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.activated},on:{\"change\":_vm.updateValue}}),_c('label',{attrs:{\"for\":_vm._uid}},[_c('span',[_vm._v(_vm._s(_vm.$t(_vm.toCamelCase(_vm.value.translationKey))))])]),(_vm.activated)?_c('div',{staticClass:\"activity-details\"},[_c('forminput',{key:`contactinfo.title_${_vm.value.activityTypeId}`,attrs:{\"compact\":\"\",\"title\":_vm.$t('friendshipAdmin.descriptionTitle'),\"hint\":_vm.$t('userAdmin.friendshipGroupContactTitle')},model:{value:(_vm.value.description),callback:function ($$v) {_vm.$set(_vm.value, \"description\", $$v)},expression:\"value.description\"}})],1):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const stringhelper = {\r\n  toCamelCase (str: string): string {\r\n    return str.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, function (word, index) {\r\n      return index === 0 ? word.toLowerCase() : word.toUpperCase()\r\n    }).replace(/\\s+/g, '')\r\n  },\r\n  isEmptyOrSpaces (str): boolean {\r\n    return str === null || str.match(/^ *$/) !== null\r\n  }\r\n}\r\n\r\nexport default stringhelper","<template>\r\n  <div class=\"spr-simple-checkbox\">\r\n    <div v-show=\"readMode && activated\">\r\n        <!-- eslint-disable-next-line vue/no-v-html -->\r\n      <div class=\"description-title\">{{ $t(toCamelCase(value.translationKey)) }}</div>\r\n      <ul class=\"description\">\r\n        <li v-for=\"(line, index) in descriptionLines\" :key=\"index\">{{ line }}</li>\r\n      </ul>\r\n    </div>\r\n    <div v-show=\"!readMode\">\r\n      <input :id=\"_uid\" \r\n      :checked=\"activated\"\r\n      type=\"checkbox\" \r\n      @change=\"updateValue\">\r\n      \r\n      <label :for=\"_uid\">\r\n        <!-- eslint-disable-next-line vue/no-v-html -->\r\n        <span>{{ $t(toCamelCase(value.translationKey)) }}</span>\r\n      </label>\r\n      <div v-if=\"activated\" class=\"activity-details\">\r\n        <forminput\r\n            :key=\"`contactinfo.title_${value.activityTypeId}`\"\r\n            v-model=\"value.description\"\r\n            compact\r\n            :title=\"$t('friendshipAdmin.descriptionTitle')\"\r\n            :hint=\"$t('userAdmin.friendshipGroupContactTitle')\"\r\n          />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import { FriendManagementGroupActivityDto } from '@/types';\r\n  import Vue from 'vue'\r\n  import stringhelper from '@/helpers/stringhelper'\r\n  import forminput from '@/components/SPRSimpleTextArea.vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'SprSimpleNumberCheckbox',\r\n    components: {\r\n      forminput\r\n    },\r\n    props: {\r\n      value: {\r\n        type: Object as () => FriendManagementGroupActivityDto,\r\n        default: () => {\r\n          return {\r\n            activityTypeId: 0,\r\n            description: '',\r\n            friendManagementGroupId: 0,\r\n            name: '',\r\n            translationKey: ''\r\n          } as FriendManagementGroupActivityDto\r\n          \r\n        }\r\n      },\r\n      friendManagementGroupId: {\r\n        type: Number,\r\n        required: true\r\n      },\r\n      readMode: {\r\n        type: Boolean,\r\n        default: true\r\n      }\r\n    },\r\n    computed: {\r\n      activated() : boolean {\r\n        return this.value.friendManagementGroupId !== 0\r\n      },\r\n      descriptionLines() : string[] {\r\n        return this.value.description.split('\\n').filter(line => line.trim() !== '');\r\n      }\r\n    },\r\n    methods: {\r\n      emptyFriendManagementGroup() : FriendManagementGroupActivityDto {\r\n        return {\r\n            activityTypeId: 0,\r\n            description: '',\r\n            friendManagementGroupId: 0,\r\n            name: '',\r\n            translationKey: ''\r\n          } as FriendManagementGroupActivityDto\r\n      },\r\n      updateValue: function (target) {\r\n        if (target.target.checked) {\r\n          this.value.friendManagementGroupId = this.friendManagementGroupId\r\n        } else {\r\n          this.value.friendManagementGroupId = 0\r\n        }\r\n        this.$emit('changed', this.value, target.checked)\r\n      },\r\n      toCamelCase(str: string): string {\r\n        // split the string by dot, and then join parts with a dot after applying toCamelCase to each Element\r\n        return str.split('.').map(s => stringhelper.toCamelCase(s)).join('.')\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n@import \"@/assets/scss/_variables.scss\";\r\n\r\n.spr-simple-checkbox {\r\n  .description-title {\r\n    font-weight: normal;\r\n    font-family: \"Signa-Bold\", Sans-Serif;\r\n    font-size: 16px;\r\n    letter-spacing: 0.3px;\r\n  }\r\n  .description {\r\n    list-style-type: disc;\r\n    padding-left: 1.5em;\r\n    margin: 0;\r\n    font-family: inherit; // Ensure the font matches the current font\r\n    list-style-position: inside; // Ensure bullets are inside the list item\r\n  }\r\n\r\n  .description li {\r\n    white-space: pre-wrap; // Preserve newlines and ensure long lines break correctly\r\n  }\r\n\r\n  /* hiding the initial actual checkbox */\r\n  input[type=\"checkbox\"]:not(:checked),\r\n  input[type=\"checkbox\"]:checked {\r\n    position: absolute;\r\n    left: -9999px;\r\n  }\r\n\r\n  /* the actual label styling */\r\n  input[type=\"checkbox\"]:not(:checked) + label,\r\n  input[type=\"checkbox\"]:checked + label {\r\n    position: relative;\r\n    padding-left: 1.95em;\r\n    cursor: pointer;\r\n  }\r\n\r\n  /* checkbox aspect */\r\n  input[type=\"checkbox\"]:not(:checked) + label:before,\r\n  input[type=\"checkbox\"]:checked + label:before {\r\n    content: '';\r\n    position: absolute;\r\n    left: 0; top: 0;\r\n    width: 1.5em;\r\n    height: 1.5em;\r\n    border: 2px solid #ccc;\r\n    background: #fff;\r\n    border-radius: 4px;\r\n    box-shadow: inset 0 1px 3px rgba(0,0,0,.1);\r\n  }\r\n  /* checked mark aspect */\r\n  input[type=\"checkbox\"]:not(:checked) + label:after,\r\n  input[type=\"checkbox\"]:checked + label:after {\r\n    content: '✓';\r\n    position: absolute;\r\n    top: .2em;\r\n    left: .4em;\r\n    font-size: 1.1em;\r\n    line-height: 0.8;\r\n    color: $brand-red;\r\n    transition: all .2s;\r\n  }\r\n  /* checked mark aspect changes */\r\n  input[type=\"checkbox\"]:not(:checked) + label:after {\r\n    opacity: 0;\r\n    transform: scale(0);\r\n  }\r\n  input[type=\"checkbox\"]:checked + label:after {\r\n    opacity: 1;\r\n    transform: scale(1);\r\n  }\r\n  /* disabled checkbox */\r\n  input[type=\"checkbox\"]:disabled:not(:checked) + label:before,\r\n  input[type=\"checkbox\"]:disabled:checked + label:before {\r\n    box-shadow: none;\r\n    border-color: #bbb;\r\n    background-color: #ddd;\r\n  }\r\n  input[type=\"checkbox\"]:disabled:checked + label:after {\r\n    color: #999;\r\n  }\r\n  input[type=\"checkbox\"]:disabled + label {\r\n    color: #aaa;\r\n  }\r\n\r\n  /* accessibility */\r\n  input[type=\"checkbox\"]:checked:focus + label:before,\r\n  input[type=\"checkbox\"]:not(:checked):focus + label:before {\r\n    border: 2px solid $brand-red;\r\n  }\r\n\r\n  &.validation-error {\r\n    label {\r\n      color: red;\r\n    }\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipActivity.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipActivity.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FriendshipActivity.vue?vue&type=template&id=c184eea0&scoped=true\"\nimport script from \"./FriendshipActivity.vue?vue&type=script&lang=ts\"\nexport * from \"./FriendshipActivity.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FriendshipActivity.vue?vue&type=style&index=0&id=c184eea0&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"c184eea0\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div :class=\"{'friendship-activities': true, 'white-background': readOnly}\">\r\n    <div class=\"row title\">\r\n      <!-- Render header text only for the first element -->\r\n      <span :class=\"{'header': !readOnly, 'header black': readOnly}\">\r\n        {{ $t('friendshipAdmin.activitiesTitle') }}\r\n      </span>\r\n      <span v-show=\"!isEditing && canEdit\" class=\"edit-icon\">\r\n        <a tabindex=\"0\" href=\"javascript:void(0);\" @click=\"toggleEdit\">\r\n          <font-awesome-icon icon=\"pencil-alt\" aria-hidden=\"true\" />\r\n        </a>\r\n      </span>\r\n    </div>\r\n    <div v-show=\"!hasActivities\">\r\n      <span>{{ $t('friendshipAdmin.noActivities') }}</span>\r\n    </div>\r\n    <div v-show=\"!isEditing\" :class=\"{'indent' : readOnly}\">\r\n      \r\n      <div v-for=\"activity in groupActivities\" :key=\"activity.$id\" class=\"activity-item\">\r\n        <friendshipActivity\r\n          :value=\"activity\"\r\n          :friend-management-group-id=\"friendshipManagementGroupId\"\r\n          :read-mode=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-show=\"isEditing && canEdit\">\r\n      <div v-for=\"activity in groupActivities\" :key=\"activity.$id\" class=\"activity-item\">\r\n        <friendshipActivity\r\n          :value=\"activity\"\r\n          :friend-management-group-id=\"friendshipManagementGroupId\"\r\n          :read-mode=\"false\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12 buttons\">\r\n          <sprbutton type=\"button\"\r\n          :size=\"5\"\r\n        :title=\"$t('userAdmin.editSave')\"\r\n        class=\"spr-redborder primary\"\r\n        click-event=\"savecontact\"\r\n        @savecontact=\"onSave\"\r\n        />\r\n        <sprbutton type=\"button\"\r\n        :size=\"5\"\r\n        :title=\"$t('userAdmin.editCancel')\"\r\n        class=\"spr-redborder\"\r\n        click-event=\"cancelsave\"\r\n        @cancelsave=\"onCancel\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport Vue from \"vue\";\r\nimport friendshipActivity from '@/components/useradmin/FriendshipActivity.vue'\r\nimport sprbutton from '@/components/SPRButton.vue'\r\n\r\n\r\nexport interface TemplateComponentData {\r\n    internalList: Array<any>,\r\n    internalValue: number,\r\n    isEditing: boolean,\r\n  }\r\n\r\nexport default Vue.extend({\r\n  components: {\r\n    friendshipActivity, sprbutton\r\n  },\r\n  props: {\r\n    groupActivities: {\r\n      type: Array<any>,\r\n      required: true\r\n    },\r\n    friendshipManagementGroupId: {\r\n      type: Number,\r\n      required: true\r\n    },\r\n    canEdit: {\r\n      type: Boolean,\r\n      required: false,\r\n      default: false\r\n    },\r\n    readOnly: {\r\n      type: Boolean,\r\n      required: false,\r\n      default: false\r\n    } \r\n  },\r\n  data (): TemplateComponentData {\r\n    return {\r\n      internalList: this.groupActivities,\r\n      internalValue: 0,\r\n      isEditing: false\r\n    } as TemplateComponentData\r\n  },\r\n  computed: {\r\n    hasActivities (): boolean {\r\n      return this.groupActivities.filter(g => g.friendManagementGroupId != 0).length > 0\r\n    }\r\n  },\r\n  methods: {\r\n    onSave (): void {\r\n      var self = this\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            self.$emit('ActivitySave')\r\n            this.toggleEdit()\r\n          }\r\n        })\r\n    },\r\n    removeDescription(activity, index) {\r\n      activity.descriptions.splice(index, 1);\r\n    },\r\n    toggleEdit (): void {\r\n      if (this.isEditing === false) {\r\n        this.$emit('ActivityEdit')\r\n      }\r\n      this.isEditing = !this.isEditing\r\n    },\r\n    onCancel () {\r\n        this.toggleEdit()\r\n        this.$emit('ActivityCancel')\r\n      },\r\n\r\n  },\r\n});\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import \"@/assets/scss/_variables.scss\";\r\n\r\n.friendship-activities {\r\n  margin-bottom: 10px;\r\n    .title {\r\n      font-weight: bold;\r\n      margin-bottom: 5px;\r\n    }\r\n    .contactinfoitem {\r\n      svg {\r\n        color:$brand-red;\r\n        margin-right: 5px;\r\n      }\r\n    }\r\n\r\n  .header,\r\n  .edit-icon {\r\n    display: inline-block;\r\n    vertical-align: middle; /* Optional: Aligns elements vertically in the middle */\r\n    color:$brand-red;\r\n  }\r\n  .header {\r\n    font-weight: bold;\r\n    margin-right: 10px;\r\n  }\r\n  .black {\r\n    color:$brand-black;\r\n    font-size: larger;\r\n  }\r\n  .indent {\r\n    margin-left: 20px;\r\n  }\r\n  .activity-item {\r\n    margin-bottom: 20px;\r\n  }\r\n\r\n  .activity-details {\r\n    margin-left: 20px;\r\n  }\r\n\r\n    .few-zips {\r\n      overflow: hidden;\r\n      text-overflow: ellipsis;\r\n      white-space: nowrap;\r\n    }\r\n    .buttons {\r\n      margin-bottom: 15px;\r\n      a {\r\n        margin-top: 20px;\r\n        display: block;\r\n      }\r\n\r\n      .primary {\r\n        color:$brand-white;\r\n        background-color:$brand-red;\r\n\r\n        &:hover {\r\n          color:$brand-red;\r\n          background-color:$brand-white;\r\n        }\r\n      }\r\n    }\r\n  }\r\n  .white-background {\r\n    background-color: $brand-white;\r\n    padding: 20px;\r\n    margin-top: -10px;\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipActivities.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipActivities.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FriendshipActivities.vue?vue&type=template&id=93a7bf6a&scoped=true\"\nimport script from \"./FriendshipActivities.vue?vue&type=script&lang=ts\"\nexport * from \"./FriendshipActivities.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FriendshipActivities.vue?vue&type=style&index=0&id=93a7bf6a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"93a7bf6a\",\n  null\n  \n)\n\nexport default component.exports","export default {\r\n  methods: {\r\n    expSeconds: function (seconds) {\r\n      return Date.now() + seconds * 1000\r\n    },\r\n    expMinutes: function (minutes) {\r\n      return Date.now() + minutes * 60000\r\n    },\r\n    expHours: function (hours) {\r\n      return Date.now() + hours * 3600000\r\n    },\r\n    fetchItem: function (uri, expiration, success, failure) {\r\n      if (this.$store.state.cache && this.$store.state.cache[uri] && this.$store.state.cache[uri].value && this.$store.state.cache[uri].exp && this.$store.state.cache[uri].exp > Date.now()) {\r\n        if (success) {\r\n          success(this.$store.state.cache[uri].value)\r\n        }\r\n      } else {\r\n        this.privateFetch(3, uri, expiration, success, failure)\r\n      }\r\n    },\r\n    privateFetch: function (retry, uri, expiration, success, failure) {\r\n      this.$http.get(uri).then(s => {\r\n        this.$store.commit('toCache', { key: uri, value: s.body, exp: expiration })\r\n        if (success) {\r\n          success(s.body)\r\n        }\r\n      }, f => {\r\n        if (retry > 0) {\r\n          this.privateFetch(retry - 1, uri, expiration, success, failure)\r\n        } else {\r\n          if (failure) {\r\n            failure()\r\n          }\r\n        }\r\n      })\r\n    }\r\n  }\r\n}\r\n","<template>\r\n  <div class=\"col-12 comp-admin-friend-level my-3\">\r\n    <div class=\"row group-header\">\r\n      <div class=\"col-12 col-md-8\">\r\n        <label class=\"groupname\"> {{ friendshipGroup.name }} </label>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <friendshipcontact :contact-info-list=\"friendshipGroup.contactInfo\" :editable=\"false\" :is-friend-request=\"true\" :show-standard-button=\"friendshipGroup.friendRequestFormAllowed\" @next=\"onNextClicked()\" />\r\n        <friendshipActivities \r\n          :group-activities=\"friendshipGroup.groupActivities\" \r\n          :friendship-management-group-id=\"friendshipGroup.id\"\r\n          read-only\r\n        />\r\n      </div>\r\n      <div class=\"col-12 \">\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n    </div>\r\n    <div class=\"row contactinfo netTitle\">\r\n      <div class=\"col-12 title\">\r\n        {{ $t('customerForm.groupNetTitle') }}\r\n      </div>\r\n      <div class=\"buttons\">\r\n        <sprbutton\r\n          :size=\"4\"\r\n          :title=\"$t('customerForm.sendNetRequest')\"\r\n          :primary=\"true\"\r\n          icon=\"chevron-right\"\r\n          class=\"next\"\r\n          click-event=\"click\"\r\n          @click=\"onNetFriendRequestClicked\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"col-12\">\r\n      <div class=\"buttons\">\r\n        <prevnextbuttons\r\n          :next-text=\"$t('customerForm.sendRequest')\"\r\n          :show-next=\"false\"\r\n          @prev=\"onPrevClicked()\"\r\n          @next=\"onNextClicked()\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import friendshipcontact from '../useradmin/FriendshipContact.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import friendshipActivities from '../useradmin/FriendshipActivities.vue'\r\n  import cache from '../../mixins/cache.js'\r\n  import { FriendManagementLightDto, AvailabilityFrequence, FriendCustomerStandardDto, PreferredGenders, Gender, CustomerState, CustomerTypes, Interests, PreferredAges, AvailabilityTimes } from '@/types/index'\r\n\r\n  import prevnextbuttons from '../SPRPrevNextButtons.vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n  friendshipGroup: FriendManagementLightDto,\r\n  loaded: number,\r\n  zipsAll: boolean,\r\n  localfmgid: number\r\n}\r\n\r\n  export default Vue.extend({\r\n    name: 'GroupContactInfo',\r\n    components: {\r\n      prevnextbuttons,\r\n      friendshipcontact,\r\n      sprbutton,\r\n      friendshipActivities\r\n    },\r\n    mixins: [cache],\r\n    props: {\r\n      primary: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      fmgid: {\r\n        type: Number,\r\n        required: true\r\n      },\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      filter: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        friendshipGroup: {\r\n          name: this.$t('userAdmin.toFriendshipLink').toString(),\r\n          contactInfo: [],\r\n          groupActivities: [],\r\n          friendRequestFormAllowed: false,\r\n          national: false,\r\n          netFriendship: false,\r\n          id: 0\r\n        },\r\n        loaded: 0,\r\n        zipsAll: false,\r\n        localfmgid: 2\r\n      }\r\n    },\r\n    computed: {\r\n      errNoFound (): string | LocaleMessage {\r\n        return this.$t('common.noFmgFound')\r\n      },\r\n      deleteThanksTitle (): string | LocaleMessage {\r\n        return this.deletionrequest\r\n          ? this.$t('profile.deleteRequestedPageTitle')\r\n          : this.$t('profile.deletePageTitle')\r\n      }\r\n    },\r\n    mounted: function () {\r\n      this.localfmgid = this.fmgid\r\n      this.triggerFetch()\r\n    },\r\n    methods: {\r\n\r\n      onPrevClicked () {\r\n        this.$emit('prev', this.customer)\r\n      },\r\n      onNextClicked () {\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            this.customer.friendManagementGroupId = this.fmgid\r\n            this.$emit('next', this.customer)\r\n          }\r\n        })\r\n      },\r\n      onNetFriendRequestClicked () {\r\n        this.$router.push('/verkkoystava')\r\n      },\r\n      triggerFetch () {\r\n        this.loaded = 0\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.fmgContactInfo[0].replace('{0}', this.fmgid.toString())\r\n        var self = this\r\n        this.fetchItem(url, this.expSeconds(120), s => {\r\n          self.friendshipGroup = s\r\n          self.loaded = 1\r\n        }, () => {\r\n          self.loaded = -1\r\n          // @ts-ignore cannot find mixins\r\n          this.showAlertError(this.errNoFound)\r\n          this.$emit('prev', null)\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n\r\n.comp-admin-friend-level {\r\n  .groupname {\r\n    display: inline-block;\r\n    margin-top: 5px;\r\n    vertical-align: top;\r\n    margin-right: 10px;\r\n  }\r\n\r\n  .enter-friendship-group {\r\n    font-size: 13px;\r\n    line-height: 20px;\r\n    margin-right: -15px;\r\n  }\r\n\r\n  .few-zips {\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n    white-space: nowrap;\r\n  }\r\n\r\n  .group-header {\r\n    font-family: Signa-Bold, Sans-Serif;\r\n    font-size: 32px;\r\n    line-height: 42px;\r\n    padding-bottom: 20px;\r\n  }\r\n  .contactinfo {\r\n      margin-bottom: 10px;\r\n      .title {\r\n        font-weight: bold;\r\n        margin-bottom: 5px;\r\n      }\r\n      .contactinfoitem {\r\n        svg {\r\n          color:$brand-red;\r\n          margin-right: 5px;\r\n        }\r\n      }\r\n    }\r\n    .netTitle {\r\n      margin-top: 35px;\r\n    }\r\n    .buttons {\r\n      padding-top: 30px;\r\n      padding-bottom: 30px;\r\n    }\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupContactInfo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupContactInfo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./GroupContactInfo.vue?vue&type=template&id=7f6ada5f\"\nimport script from \"./GroupContactInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./GroupContactInfo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./GroupContactInfo.vue?vue&type=style&index=0&id=7f6ada5f&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"stepvizualizer\"},[_c('div',{staticClass:\"row d-none d-lg-block\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"grid\"},[_c('div',{staticClass:\"line\"}),_c('div',{staticClass:\"step spanstep\",class:_vm.isPersonalInfoDone},[_c('div',{staticClass:\"tick\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"check\",\"aria-hidden\":\"true\"}})],1),_vm._v(\" \"+_vm._s(_vm.$t('customerForm.standardPersonalInformation'))+\" \")]),_c('div',{staticClass:\"step\",class:_vm.isLanguageInfoDone},[_c('div',{staticClass:\"tick\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"check\",\"aria-hidden\":\"true\"}})],1),_vm._v(\" \"+_vm._s(_vm.$t('customerForm.standardLanguageInformation'))+\" \")]),_c('div',{staticClass:\"step\",class:_vm.isInterestInfoDone},[_c('div',{staticClass:\"tick\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"check\",\"aria-hidden\":\"true\"}})],1),_vm._v(\" \"+_vm._s(_vm.$t('customerForm.myInterests'))+\" \")]),_c('div',{staticClass:\"step\",class:_vm.isFriendInfoDone},[_c('div',{staticClass:\"tick\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"check\",\"aria-hidden\":\"true\"}})],1),_vm._v(\" \"+_vm._s(_vm.$t('customerForm.friendWish'))+\" \")]),_c('div',{staticClass:\"step spanstep\",class:_vm.isContactInfoDone},[_c('div',{staticClass:\"tick\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"check\",\"aria-hidden\":\"true\"}})],1),_vm._v(\" \"+_vm._s(_vm.$t('customerForm.contactPersonInfo'))+\" \")])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"stepvizualizer\">\r\n    <div class=\"row d-none d-lg-block\">\r\n      <div class=\"col-12\">\r\n        <div class=\"grid\">\r\n          <div class=\"line\">\r\n          </div>\r\n          <div class=\"step spanstep\" :class=\"isPersonalInfoDone\">\r\n            <div class=\"tick\">\r\n              <font-awesome-icon icon=\"check\" aria-hidden=\"true\" />\r\n            </div>\r\n            {{ $t('customerForm.standardPersonalInformation') }}\r\n          </div>\r\n          <div class=\"step\" :class=\"isLanguageInfoDone\">\r\n            <div class=\"tick\">\r\n              <font-awesome-icon icon=\"check\" aria-hidden=\"true\" />\r\n            </div>\r\n            {{ $t('customerForm.standardLanguageInformation') }}\r\n          </div>\r\n          <div class=\"step\" :class=\"isInterestInfoDone\">\r\n            <div class=\"tick\">\r\n              <font-awesome-icon icon=\"check\" aria-hidden=\"true\" />\r\n            </div>\r\n            {{ $t('customerForm.myInterests') }}\r\n          </div>\r\n          <div class=\"step\" :class=\"isFriendInfoDone\">\r\n            <div class=\"tick\">\r\n              <font-awesome-icon icon=\"check\" aria-hidden=\"true\" />\r\n            </div>\r\n            {{ $t('customerForm.friendWish') }}\r\n          </div>\r\n          <div class=\"step spanstep\" :class=\"isContactInfoDone\">\r\n            <div class=\"tick\">\r\n              <font-awesome-icon icon=\"check\" aria-hidden=\"true\" />\r\n            </div>\r\n            {{ $t('customerForm.contactPersonInfo') }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { AnonStandardCustomerRegistrationStep } from '@/types/custom'\r\n\r\n  export default Vue.extend({\r\n    name: 'StepVizualizer',\r\n    props: {\r\n      step: {\r\n        type: Number as () => AnonStandardCustomerRegistrationStep,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      isPersonalInfoDone (): string {\r\n        return this.step > AnonStandardCustomerRegistrationStep.PersonalInfo\r\n          ? 'done'\r\n          : ''\r\n      },\r\n      isLanguageInfoDone (): string {\r\n        return this.step > AnonStandardCustomerRegistrationStep.LanguageInfo\r\n          ? 'done'\r\n          : ''\r\n      },\r\n      isInterestInfoDone (): string {\r\n        return this.step > AnonStandardCustomerRegistrationStep.InterestInfo\r\n          ? 'done'\r\n          : ''\r\n      },\r\n      isFriendInfoDone (): string {\r\n        return this.step > AnonStandardCustomerRegistrationStep.FriendInfo\r\n          ? 'done'\r\n          : ''\r\n      },\r\n      isContactInfoDone (): string {\r\n        return this.step > AnonStandardCustomerRegistrationStep.ContactInfo\r\n          ? 'done'\r\n          : ''\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .stepvizualizer {\r\n    .grid {\r\n      display: grid;\r\n      grid-template-columns: 10% 10% 20% 20% 20% 10% 10%;\r\n      grid-template-rows: auto;\r\n      justify-items: center;\r\n      margin-bottom: 20px;\r\n      margin-top: 20px;\r\n\r\n      .line {\r\n        grid-column-start: 2;\r\n        grid-column-end:7;\r\n        grid-row-start: 1;\r\n        border: solid 2px $brand-red;\r\n        width: 100%;\r\n        margin-top: 40px;\r\n      }\r\n\r\n      .step {\r\n        margin-top: -30px;\r\n        grid-row-start: 2;\r\n        text-align: center;\r\n        font-weight: bold;\r\n        font-size: 14px;\r\n\r\n        &.spanstep {\r\n          grid-column-end: span 2;\r\n        }\r\n\r\n        &.done {\r\n          .tick {\r\n            border-color: $brand-red;\r\n            background-color: $brand-red;\r\n            color: $brand-white;\r\n          }\r\n        }\r\n\r\n        .tick {\r\n          text-align: center;\r\n          margin: 0 auto;\r\n          border-radius: 25px;\r\n          border: solid 2px $brand-grey6;\r\n          z-index: 2;\r\n          width: 50px;\r\n          height: 50px;\r\n          display: flex;\r\n          justify-content: center;\r\n          align-items: center;\r\n          color: $brand-grey6;\r\n          font-size: 20px;\r\n          background-color: $brand-grey1;\r\n          margin-bottom: 10px;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StepVizualizer.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StepVizualizer.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./StepVizualizer.vue?vue&type=template&id=e505ff96\"\nimport script from \"./StepVizualizer.vue?vue&type=script&lang=ts\"\nexport * from \"./StepVizualizer.vue?vue&type=script&lang=ts\"\nimport style0 from \"./StepVizualizer.vue?vue&type=style&index=0&id=e505ff96&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"startstandard\"},[_vm._m(0),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"maincontentstandard\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3\"}),_c('div',{staticClass:\"col-6 titlestandard\"},[_c('h3',{staticClass:\"whitebackground\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.newStandardCustomerTitle'))+\" \")])]),_c('div',{staticClass:\"col-3\"}),_c('div',{staticClass:\"col-3\"}),_c('div',{staticClass:\"col-6 subtitlestandard\"},[_c('div',{staticClass:\"whitebackground\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.newStandardCustomerSubTitle'))+\" \")])])]),_c('div',{staticClass:\"row instructions\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.newStandardCustomerInstructionsTitle'))+\" \")]),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.$t('customerForm.newStandardCustomerText'))}})]),_c('div',{staticClass:\"col-12\",staticStyle:{\"margin-top\":\"30px\"}},[_c('span',{staticClass:\"or-span\"},[_vm._v(_vm._s(/*$t('wizard.orBySectionPostcode')*/))])]),_c('div',{staticClass:\"col-12 col-sm-10 col-md-6 col-lg-4 offset-sm-1 offset-md-3 offset-lg-4\",staticStyle:{\"margin-top\":\"30px\"}},[_c('sprautocomplete',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"options\":_vm.sectionsZips,\"option-label\":\"value\",\"placeholder\":_vm.$t('wizard.zipCodeField'),\"required\":true,\"name\":\"zipCodeField\",\"is-valid\":!_vm.errors.has('zipCodeField'),\"max-results\":200,\"show-arrow\":false,\"show-default-options\":false,\"dark\":\"\"},model:{value:(_vm.sectionZip),callback:function ($$v) {_vm.sectionZip=$$v},expression:\"sectionZip\"}})],1),_c('div',{staticClass:\"col-12 buttons\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('wizard.next'),\"primary\":true,\"icon\":\"chevron-right\",\"click-event\":\"start\"},on:{\"start\":_vm.onStartClicked}})],1)])])])])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"backimagestandard\"})])])\n}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"startstandard\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"backimagestandard\"></div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"maincontentstandard\">\r\n          <div class=\"container\">\r\n            <div class=\"row\">\r\n              <div class=\"col-3\"></div>\r\n              <div class=\"col-6 titlestandard\">\r\n                <h3 class=\"whitebackground\">\r\n                  {{ $t('customerForm.newStandardCustomerTitle') }}\r\n                </h3>\r\n              </div>\r\n              <div class=\"col-3\"></div>\r\n              <div class=\"col-3\"></div>\r\n              <div class=\"col-6 subtitlestandard\">\r\n                <div class=\"whitebackground\">\r\n                  {{ $t('customerForm.newStandardCustomerSubTitle') }}\r\n                </div>\r\n              </div>\r\n            </div>\r\n            <div class=\"row instructions\">\r\n              <div class=\"col-12\">\r\n                <div class=\"cap-label\">\r\n                  {{ $t('customerForm.newStandardCustomerInstructionsTitle') }}\r\n                </div>\r\n                <!-- eslint-disable vue/no-v-html -->\r\n                <div v-html=\"$t('customerForm.newStandardCustomerText')\"></div>\r\n              </div>\r\n              <div class=\"col-12\" style=\"margin-top: 30px;\">\r\n                <span class=\"or-span\">{{ /*$t('wizard.orBySectionPostcode')*/ }}</span>\r\n              </div>\r\n              <div class=\"col-12 col-sm-10 col-md-6 col-lg-4 offset-sm-1 offset-md-3 offset-lg-4\" style=\"margin-top: 30px;\">\r\n                <sprautocomplete\r\n                  v-model=\"sectionZip\"\r\n                  v-validate=\"'required'\"\r\n                  :options=\"sectionsZips\"\r\n                  option-label=\"value\"\r\n                  :placeholder=\"$t('wizard.zipCodeField')\"\r\n                  :required=\"true\"\r\n                  name=\"zipCodeField\"\r\n                  :is-valid=\"!errors.has('zipCodeField')\"\r\n                  :max-results=\"200\"\r\n                  :show-arrow=\"false\"\r\n                  :show-default-options=\"false\"\r\n                  dark\r\n                />\r\n              </div>\r\n              <div class=\"col-12 buttons\">\r\n                <sprbutton\r\n                  :size=\"4\"\r\n                  :title=\"$t('wizard.next')\"\r\n                  :primary=\"true\"\r\n                  icon=\"chevron-right\"\r\n                  click-event=\"start\"\r\n                  @start=\"onStartClicked\"\r\n                />\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import * as _ from 'lodash'\r\n  import sprautocomplete from '../SPRAutocompleteDropdown.vue'\r\n  import locationutils from '../../mixins/locationutils.js'\r\n  import googlemaps from '../../mixins/googlemaps.js'\r\n  import { StringKeyValuePair } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    zipCode: string,\r\n    zipCodeChanged: boolean,\r\n    sectionsZips: Array<StringKeyValuePair>,\r\n    sectionZip: StringKeyValuePair | undefined,\r\n    section: number\r\n  }\r\n  export default Vue.extend({\r\n    name: 'Start',\r\n    components: { sprbutton, sprautocomplete },\r\n    mixins: [locationutils, googlemaps],\r\n    data (): TemplateComponentData {\r\n      return {\r\n        zipCode: this.$store.state.wizardModel.workingZipCode,\r\n        zipCodeChanged: false,\r\n        sectionsZips: [],\r\n        sectionZip: undefined,\r\n        section: this.$store.state.wizardModel.sectionId\r\n      }\r\n    },\r\n    watch: {\r\n      zipCode (val): void {\r\n        // set the sectionszips dropdown. Key is in format zip-sectionid\r\n        if (val) {\r\n          var secs = _.filter(this.sectionsZips, function (sz) {\r\n            return val === sz.key.split('-')[0]\r\n          })\r\n\r\n          if (secs.length === 1) {\r\n            this.sectionZip = secs[0]\r\n          } else if (secs.length > 1) {\r\n            // if there are 2 sections with this zip code, look at the users language and set the section to the one matching that\r\n            var desiredLanguageId = 2\r\n            if (this.$store.state.language === 'sv') desiredLanguageId = 1\r\n            if (this.$store.state.language === 'fi') desiredLanguageId = 0\r\n            if (this.$store.state.language === 'en') desiredLanguageId = 0\r\n\r\n            for (var i = 0; i < secs.length; i++) {\r\n              var section = _.find(this.$store.state.sections, function (s) {\r\n                return s.id === Number(secs[i].key.split('-')[1])\r\n              })\r\n\r\n              if (section.language === desiredLanguageId) {\r\n                this.sectionZip = secs[i]\r\n                break\r\n              }\r\n            }\r\n          } else {\r\n            // no section found for this postcode. Shouldn't happen though.\r\n            return\r\n          }\r\n\r\n          this.zipCodeChanged = true\r\n        }\r\n      },\r\n      sectionZip (val) {\r\n        if (!val) {\r\n          this.$store.commit('setWizardWorkingZip', null)\r\n          this.$store.commit('setWizardZipcode', null)\r\n          this.$store.commit('setWizardSectionId', null)\r\n        } else {\r\n          var arr = val.key.split('-')\r\n          this.$store.commit('setWizardWorkingZip', arr[0])\r\n          this.$store.commit('setWizardZipcode', arr[0])\r\n          this.$store.commit('setWizardSectionId', Number(arr[1]))\r\n        }\r\n      }\r\n    },\r\n    created () {\r\n      var sections = [] as Array<StringKeyValuePair>\r\n      _.each(this.$store.state.joinablezipcodes, (section) => {\r\n        _.each(section.zipCodes, (zip) => {\r\n          sections.push({ key: `${zip}-${section.friendManagementGroupId}`, value: `${zip} - ${section.name}` } as StringKeyValuePair)\r\n        })\r\n      })\r\n\r\n      this.sectionsZips = _.sortBy(sections, 'value')\r\n    },\r\n    methods: {\r\n      onStartClicked (): void {\r\n        const parts = this.sectionZip?.key.split('-')\r\n        if (parts && parts.length > 1) {\r\n          const partAfterDash = parseInt(parts[1])\r\n          this.$emit('next', partAfterDash)\r\n        } else {\r\n\r\n        }\r\n        //this.$emit('next', 0)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .startstandard {\r\n    .backimagestandard {\r\n      width: 100%;\r\n      height: 1000px;\r\n      overflow: hidden;\r\n      background: url('https://sprvatistorage.blob.core.windows.net/eventimages/spr_brand_hki_ok_35.jpg') center/cover no-repeat fixed;\r\n\r\n      img {\r\n        width: 100%;\r\n      }\r\n    }\r\n    .maincontentstandard {\r\n      margin-top: -800px;\r\n\r\n      .whitebackground {\r\n        background-color: $brand-white;\r\n        display: inline-block;\r\n        padding-left: 5px;\r\n        padding-right: 5px;\r\n      }\r\n      .titlestandard, .subtitlestandard {\r\n        text-align: center;\r\n        color: $brand-red;\r\n        width: 100%;\r\n        margin-left: 5%;\r\n        //background-color: $brand-white;\r\n      }\r\n\r\n      .subtitlestandard {\r\n        margin-bottom: 50px;\r\n        margin-left: 30%;\r\n        display: inline-block;\r\n      }\r\n\r\n      .instructions {\r\n        background-color: $brand-white;\r\n        padding-top: 30px;\r\n        padding-bottom: 30px;\r\n\r\n        .cap-label {\r\n          color: $brand-red;\r\n          margin-bottom: 15px;\r\n        }\r\n\r\n        .buttons {\r\n          margin-top: 30px;\r\n          text-align: center;\r\n          margin-bottom: 10px;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Start.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Start.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Start.vue?vue&type=template&id=6259a960\"\nimport script from \"./Start.vue?vue&type=script&lang=ts\"\nexport * from \"./Start.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Start.vue?vue&type=style&index=0&id=6259a960&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localCustomer)?_c('div',{staticClass:\"personalinfo\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row headertitle\"},[_c('div',{staticClass:\"col\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.standardPersonalInformation')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.firstname'),\"is-valid\":!_vm.errors.has('customerForm.firstname'),\"name\":\"customerForm.firstname\",\"required\":true},model:{value:(_vm.localCustomer.firstName),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"firstName\", $$v)},expression:\"localCustomer.firstName\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.lastname'),\"is-valid\":!_vm.errors.has('customerForm.lastname'),\"name\":\"customerForm.lastname\",\"required\":true},model:{value:(_vm.localCustomer.lastName),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"lastName\", $$v)},expression:\"localCustomer.lastName\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12 col-lg-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.street'),\"is-valid\":!_vm.errors.has('customerForm.streetAddress'),\"name\":\"customerForm.streetAddress\",\"required\":true},model:{value:(_vm.localCustomer.streetAddress),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"streetAddress\", $$v)},expression:\"localCustomer.streetAddress\"}})],1),_c('div',{staticClass:\"col-12 col-sm-4 col-lg-2\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|regex:^[0-9]{5}$'),expression:\"'required|regex:^[0-9]{5}$'\"}],attrs:{\"hint\":_vm.$t('customerForm.zipCode'),\"is-valid\":!_vm.errors.has('customerForm.zipCode'),\"name\":\"customerForm.zipCode\",\"required\":true},model:{value:(_vm.localCustomer.zipCode),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"zipCode\", $$v)},expression:\"localCustomer.zipCode\"}})],1),_c('div',{staticClass:\"col-12 col-sm-8 col-lg-4\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.city'),\"is-valid\":!_vm.errors.has('customerForm.city'),\"name\":\"customerForm.city\",\"required\":true},model:{value:(_vm.localCustomer.city),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"city\", $$v)},expression:\"localCustomer.city\"}})],1)]),_c('div',{staticClass:\"row\"},[(!_vm.localCustomer.email || _vm.localCustomer.email.length<1)?_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.standardHomePhone'),\"is-valid\":!_vm.errors.has('customerForm.homePhone'),\"name\":\"customerForm.homePhone\",\"required\":true},model:{value:(_vm.localCustomer.homePhone),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"homePhone\", $$v)},expression:\"localCustomer.homePhone\"}})],1):_vm._e(),(!(!_vm.localCustomer.email || _vm.localCustomer.email.length < 1))?_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.standardHomePhone'),\"is-valid\":!_vm.errors.has('customerForm.homePhone'),\"name\":\"customerForm.homePhone\"},model:{value:(_vm.localCustomer.homePhone),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"homePhone\", $$v)},expression:\"localCustomer.homePhone\"}})],1):_vm._e(),(!_vm.localCustomer.homePhone || _vm.localCustomer.homePhone.length<1)?_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|email'),expression:\"'required|email'\"}],attrs:{\"hint\":_vm.$t('customerForm.email'),\"is-valid\":!_vm.errors.has('customerForm.email'),\"name\":\"customerForm.email\",\"required\":true},model:{value:(_vm.localCustomer.email),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"email\", $$v)},expression:\"localCustomer.email\"}})],1):_vm._e(),(!(!_vm.localCustomer.homePhone || _vm.localCustomer.homePhone.length < 1))?_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('email'),expression:\"'email'\"}],attrs:{\"hint\":_vm.$t('customerForm.email'),\"is-valid\":!_vm.errors.has('customerForm.email'),\"name\":\"customerForm.email\"},model:{value:(_vm.localCustomer.email),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"email\", $$v)},expression:\"localCustomer.email\"}})],1):_vm._e()]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('div',{staticClass:\"datepicker\"},[_c('simpledate',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"title\":_vm.$t('customerForm.birthDate'),\"include-time\":false,\"name\":\"customerForm.birthDate\",\"is-valid\":!_vm.errors.has('customerForm.birthDate')},model:{value:(_vm.localCustomer.birthdate),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"birthdate\", $$v)},expression:\"localCustomer.birthdate\"}})],1)]),_c('div',{staticClass:\"col-sm-6 col-md-3 col-lg-2\"},[_c('sprdropdownnumberkey',{attrs:{\"title\":_vm.$t('customerForm.gender'),\"items\":_vm.genders,\"is-valid\":true},model:{value:(_vm.localCustomer.gender),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"gender\", $$v)},expression:\"localCustomer.gender\"}})],1)]),(_vm.isUnderage)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"underageinstructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.underageConsent'))+\" \")])]),_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.contactName'),\"is-valid\":!_vm.errors.has('customerForm.contactFirstName'),\"required\":true,\"name\":\"customerForm.contactFirstName\",\"placeholder\":_vm.$t('customerForm.contactFirstname')},model:{value:(_vm.localCustomer.contactFirstName),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"contactFirstName\", $$v)},expression:\"localCustomer.contactFirstName\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t(' '),\"is-valid\":!_vm.errors.has('customerForm.contactLastName'),\"name\":\"customerForm.contactLastName\",\"placeholder\":_vm.$t('customerForm.contactLastname')},model:{value:(_vm.localCustomer.contactLastName),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"contactLastName\", $$v)},expression:\"localCustomer.contactLastName\"}})],1)]):_vm._e(),(_vm.isUnderage)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.underagePhone'),\"is-valid\":!_vm.errors.has('customerForm.contactPhoneNumber'),\"required\":true,\"name\":\"customerForm.contactPhoneNumber\"},model:{value:(_vm.localCustomer.contactPhonenumber),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"contactPhonenumber\", $$v)},expression:\"localCustomer.contactPhonenumber\"}})],1)]):_vm._e()]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"buttons\"},[_c('prevnextbuttons',{on:{\"prev\":_vm.onPrevClicked,\"next\":_vm.onNextClicked}})],1)])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"localCustomer\" class=\"personalinfo\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <!-- personal info section -->\r\n        <div class=\"row headertitle\">\r\n          <div class=\"col\">\r\n            <h3>{{ $t('customerForm.standardPersonalInformation') }}</h3>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-sm-6\">\r\n            <forminput v-model=\"localCustomer.firstName\"\r\n                       v-validate=\"'required'\"\r\n                       :hint=\"$t('customerForm.firstname')\"\r\n                       :is-valid=\"!errors.has('customerForm.firstname')\"\r\n                       name=\"customerForm.firstname\"\r\n                       :required=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-sm-6\">\r\n            <forminput v-model=\"localCustomer.lastName\"\r\n                       v-validate=\"'required'\"\r\n                       :hint=\"$t('customerForm.lastname')\"\r\n                       :is-valid=\"!errors.has('customerForm.lastname')\"\r\n                       name=\"customerForm.lastname\"\r\n                       :required=\"true\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-sm-12 col-lg-6\">\r\n            <forminput v-model=\"localCustomer.streetAddress\"\r\n                       v-validate=\"'required'\"\r\n                       :hint=\"$t('customerForm.street')\"\r\n                       :is-valid=\"!errors.has('customerForm.streetAddress')\"\r\n                       name=\"customerForm.streetAddress\"\r\n                       :required=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-12 col-sm-4 col-lg-2\">\r\n            <forminput v-model=\"localCustomer.zipCode\"\r\n                       v-validate=\"'required|regex:^[0-9]{5}$'\"\r\n                       :hint=\"$t('customerForm.zipCode')\"\r\n                       :is-valid=\"!errors.has('customerForm.zipCode')\"\r\n                       name=\"customerForm.zipCode\"\r\n                       :required=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-12 col-sm-8 col-lg-4\">\r\n            <forminput v-model=\"localCustomer.city\"\r\n                       v-validate=\"'required'\"\r\n                       :hint=\"$t('customerForm.city')\"\r\n                       :is-valid=\"!errors.has('customerForm.city')\"\r\n                       name=\"customerForm.city\"\r\n                       :required=\"true\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div v-if=\"!localCustomer.email || localCustomer.email.length<1\" class=\"col-sm-6\">\r\n            <forminput v-model=\"localCustomer.homePhone\"\r\n                       v-validate=\"'required'\"\r\n                       :hint=\"$t('customerForm.standardHomePhone')\"\r\n                       :is-valid=\"!errors.has('customerForm.homePhone')\"\r\n                       name=\"customerForm.homePhone\"\r\n                       :required=\"true\"\r\n            />\r\n          </div>\r\n          <div v-if=\"!(!localCustomer.email || localCustomer.email.length < 1)\" class=\"col-sm-6\">\r\n            <forminput v-model=\"localCustomer.homePhone\"\r\n                       :hint=\"$t('customerForm.standardHomePhone')\"\r\n                       :is-valid=\"!errors.has('customerForm.homePhone')\"\r\n                       name=\"customerForm.homePhone\"\r\n            />\r\n          </div>\r\n          <div v-if=\"!localCustomer.homePhone || localCustomer.homePhone.length<1\" class=\"col-sm-6\">\r\n            <!--required-->\r\n            <forminput v-model=\"localCustomer.email\"\r\n                       v-validate=\"'required|email'\"\r\n                       :hint=\"$t('customerForm.email')\"\r\n                       :is-valid=\"!errors.has('customerForm.email')\"\r\n                       name=\"customerForm.email\"\r\n                       :required=\"true\"\r\n            />\r\n          </div>\r\n          <div v-if=\"!(!localCustomer.homePhone || localCustomer.homePhone.length < 1)\" class=\"col-sm-6\">\r\n            <!--non-required-->\r\n            <forminput v-model=\"localCustomer.email\"\r\n                       v-validate=\"'email'\"\r\n                       :hint=\"$t('customerForm.email')\"\r\n                       :is-valid=\"!errors.has('customerForm.email')\"\r\n                       name=\"customerForm.email\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-sm-6\">\r\n            <div class=\"datepicker\">\r\n              <simpledate v-model=\"localCustomer.birthdate\"\r\n                          v-validate=\"'required'\"\r\n                          :title=\"$t('customerForm.birthDate')\"\r\n                          :include-time=\"false\"\r\n                          name=\"customerForm.birthDate\"\r\n                          :is-valid=\"!errors.has('customerForm.birthDate')\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"col-sm-6 col-md-3 col-lg-2\">\r\n            <sprdropdownnumberkey\r\n              v-model=\"localCustomer.gender\"\r\n              :title=\"$t('customerForm.gender')\"\r\n              :items=\"genders\"\r\n              :is-valid=\"true\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <!-- underage -->\r\n        <div v-if=\"isUnderage\" class=\"row\">\r\n          <div class=\"col-12\">\r\n            <div class=\"underageinstructions\">\r\n              {{ $t('customerForm.underageConsent') }}\r\n            </div>\r\n          </div>\r\n          <div class=\"col-sm-6\">\r\n            <forminput v-model=\"localCustomer.contactFirstName\"\r\n                       v-validate=\"'required'\"\r\n                       :hint=\"$t('customerForm.contactName')\"\r\n                       :is-valid=\"!errors.has('customerForm.contactFirstName')\"\r\n                       :required=\"true\"\r\n                       name=\"customerForm.contactFirstName\"\r\n                       :placeholder=\"$t('customerForm.contactFirstname')\"\r\n            />\r\n          </div>\r\n          <div class=\"col-sm-6\">\r\n            <forminput v-model=\"localCustomer.contactLastName\"\r\n                       v-validate=\"'required'\"\r\n                       :hint=\"$t(' ')\"\r\n                       :is-valid=\"!errors.has('customerForm.contactLastName')\"\r\n                       name=\"customerForm.contactLastName\"\r\n                       :placeholder=\"$t('customerForm.contactLastname')\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <div v-if=\"isUnderage\" class=\"row\">\r\n          <div class=\"col-sm-6\">\r\n            <forminput v-model=\"localCustomer.contactPhonenumber\"\r\n                       v-validate=\"'required'\"\r\n                       :hint=\"$t('customerForm.underagePhone')\"\r\n                       :is-valid=\"!errors.has('customerForm.contactPhoneNumber')\"\r\n                       :required=\"true\"\r\n                       name=\"customerForm.contactPhoneNumber\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div class=\"buttons\">\r\n          <prevnextbuttons\r\n            @prev=\"onPrevClicked\"\r\n            @next=\"onNextClicked\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import simpledate from '../SPRSimpleDatepicker.vue'\r\n  import sprdropdownnumberkey from '../SPRDropdownNumberKey.vue'\r\n  import prevnextbuttons from '../SPRPrevNextButtons.vue'\r\n  import { FriendCustomerStandardDto } from '@/types/index'\r\n  import { SprCheckboxBitmaskValue } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localCustomer: FriendCustomerStandardDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'PersonalInfo',\r\n    components: { forminput, simpledate, sprdropdownnumberkey, prevnextbuttons },\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        localCustomer: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      isUnderage (): boolean {\r\n        if (!this.localCustomer?.birthdate) {\r\n          return false\r\n        }\r\n\r\n        var underageYears = 13\r\n        var tmpDate = new Date(this.localCustomer?.birthdate)\r\n        tmpDate.setFullYear(tmpDate.getFullYear() + underageYears)\r\n        return Boolean(tmpDate.getTime() >= new Date().getTime())\r\n      },\r\n      genders (): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.genders, function (val, key) {\r\n          return { value: val.id, text: self.$t('genders.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.localCustomer = this.customer\r\n    },\r\n    methods: {\r\n      onPrevClicked (): void {\r\n        this.$emit('prev', this.localCustomer)\r\n      },\r\n      onNextClicked (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            this.$emit('next', this.localCustomer)\r\n          }\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .personalinfo {\r\n    background-color: $brand-white;\r\n    padding: 15px;\r\n    padding-top: 30px;\r\n\r\n    .headertitle {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .underageinstructions {\r\n      margin-bottom: 10px;\r\n    }\r\n\r\n    .buttons {\r\n      padding-top: 30px;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PersonalInfo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PersonalInfo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PersonalInfo.vue?vue&type=template&id=7befc3aa\"\nimport script from \"./PersonalInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./PersonalInfo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PersonalInfo.vue?vue&type=style&index=0&id=7befc3aa&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localCustomer)?_c('div',{staticClass:\"personalinfo\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row headertitle\"},[_c('div',{staticClass:\"col\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.standardLanguageInformation')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-4 col-lg-3\"},[_c('dropdowninput',{attrs:{\"title\":_vm.$t('customerForm.nativeLanguage'),\"items\":_vm.checkboxLanguages(_vm.customer.customerLanguages, _vm.nativeLanguageOptions),\"is-valid\":true},model:{value:(_vm.localCustomer.nativeLanguage),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"nativeLanguage\", $$v)},expression:\"localCustomer.nativeLanguage\"}})],1),_c('div',{staticClass:\"col-12 col-md-8 col-lg-9\"},[_c('span',{staticClass:\"cap-label brand-red px-3 mb-2 d-inline-block\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.standardCustomerOtherLanguages'))+\" \")]),_c('checkboxlist',{attrs:{\"value\":_vm.mappedCustomerLanguages,\"list\":_vm.customerLanguageOptions,\"rows\":4},on:{\"input\":_vm.onCustomerLanguageChanged}}),_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({ max: 50 }),expression:\"{ max: 50 }\"}],attrs:{\"hint\":_vm.$t('customerForm.otherLanguages'),\"name\":\"customerForm.shortDescription\",\"is-valid\":_vm.localCustomer.otherLanguages.length<=50,\"maxlength\":50},model:{value:(_vm.localCustomer.otherLanguages),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"otherLanguages\", $$v)},expression:\"localCustomer.otherLanguages\"}})],1)])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"buttons\"},[_c('prevnextbuttons',{on:{\"prev\":_vm.onPrevClicked,\"next\":_vm.onNextClicked}})],1)])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"localCustomer\" class=\"personalinfo\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <!-- languages -->\r\n        <div class=\"row headertitle\">\r\n          <div class=\"col\">\r\n            <h3>{{ $t('customerForm.standardLanguageInformation') }}</h3>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <!-- native language-->\r\n          <div class=\"col-12 col-md-4 col-lg-3\">\r\n            <dropdowninput v-model=\"localCustomer.nativeLanguage\"\r\n                           :title=\"$t('customerForm.nativeLanguage')\"\r\n                           :items=\"checkboxLanguages(customer.customerLanguages, nativeLanguageOptions)\"\r\n                           :is-valid=\"true\"\r\n            />\r\n          </div>\r\n          <!-- spoken languages -->\r\n          <div class=\"col-12 col-md-8 col-lg-9\">\r\n            <span class=\"cap-label brand-red px-3 mb-2 d-inline-block\">\r\n              {{ $t('customerForm.standardCustomerOtherLanguages') }}\r\n            </span>\r\n            <checkboxlist\r\n              :value=\"mappedCustomerLanguages\"\r\n              :list=\"customerLanguageOptions\"\r\n              :rows=\"4\"\r\n              @input=\"onCustomerLanguageChanged\"\r\n            />\r\n            <!-- other languages freetext -->\r\n            <forminput  v-model=\"localCustomer.otherLanguages\"\r\n                        v-validate=\"{ max: 50 }\"\r\n                        :hint=\"$t('customerForm.otherLanguages')\"\r\n                        name=\"customerForm.shortDescription\"\r\n                        :is-valid=\"localCustomer.otherLanguages.length<=50\"\r\n                        :maxlength=\"50\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div class=\"buttons\">\r\n          <prevnextbuttons\r\n            @prev=\"onPrevClicked\"\r\n            @next=\"onNextClicked\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import checkboxlist from '../SPRSimpleCheckboxList.vue'\r\n  import dropdowninput from '../SPRSimpleDropdown.vue'\r\n  import prevnextbuttons from '../SPRPrevNextButtons.vue'\r\n  import { FriendCustomerStandardDto, LanguageDto } from '@/types/index'\r\n  import { SprCheckboxBitmaskValue, SprDropDownValue, SprCheckboxValue } from '@/types/custom'\r\n  import inpututils from '@/mixins/inpututils'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localCustomer: FriendCustomerStandardDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'LanguageInfo',\r\n    components: { forminput, checkboxlist, dropdowninput, prevnextbuttons },\r\n    mixins: [inpututils],\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        localCustomer: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      genders (): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.genders, function (val, key) {\r\n          return { value: val.id, text: self.$t('genders.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      mappedCustomerLanguages (): Array<string> {\r\n        if (!this.localCustomer) return []\r\n        var mappedLanguages = this.localCustomer.customerLanguages.map((x: LanguageDto) => {\r\n          return x.isoCode\r\n        })\r\n        return mappedLanguages\r\n      },\r\n      customerLanguageOptions (): Array<SprDropDownValue> {\r\n        if (!this.$store.state.friendCustomerLanguages) return []\r\n        var options = _.map(this.$store.state.customerLanguages, (val: LanguageDto, key: number) => {\r\n          return { value: val.isoCode, text: this.$t('languages.' + val.isoCode), selected: Boolean(this.mappedCustomerLanguages.filter(x => x === val.isoCode).length) } as SprDropDownValue\r\n        })\r\n        return options\r\n      },\r\n      nativeLanguageOptions (): Array<SprCheckboxValue> {\r\n        return this.$store.state.friendCustomerLanguages as Array<SprCheckboxValue>\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.localCustomer = this.customer\r\n    },\r\n    methods: {\r\n      onCustomerLanguageChanged (arr: Array<string>): void {\r\n        if (!this.localCustomer) return\r\n        var langs = arr.map((x: string) => {\r\n          return _.find(this.$store.state.customerLanguages, (lang: LanguageDto) => {\r\n            return lang.isoCode === x\r\n          })\r\n        })\r\n        this.localCustomer.customerLanguages = langs || []\r\n      },\r\n      onPrevClicked (): void {\r\n        this.$emit('prev', this.localCustomer)\r\n      },\r\n      onNextClicked (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            this.$emit('next', this.localCustomer)\r\n          }\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .personalinfo {\r\n    background-color: $brand-white;\r\n    padding: 15px;\r\n    padding-top: 30px;\r\n\r\n    .headertitle {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .buttons {\r\n      padding-top: 30px;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LanguageInfo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LanguageInfo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./LanguageInfo.vue?vue&type=template&id=30994fde\"\nimport script from \"./LanguageInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./LanguageInfo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./LanguageInfo.vue?vue&type=style&index=0&id=30994fde&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localCustomer)?_c('div',{staticClass:\"interestinfo\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row headertitle\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.myInterests')))]),_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.standardCustomerInterests')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxlist',{attrs:{\"list\":_vm.customerInterests,\"rows\":3},model:{value:(_vm.localCustomer.interests),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"interests\", $$v)},expression:\"localCustomer.interests\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.standardCustomerInterestsFreeTextTitle')))]),_c('sprtextarea',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({ max: 300 }),expression:\"{ max: 300 }\"}],attrs:{\"name\":\"customerForm.interestFreeText\",\"is-valid\":_vm.localCustomer.interestOther.length <= 300,\"maxCharacters\":300,\"showCounter\":true,\"subtext\":_vm.$t('customerForm.standardCustomerInterestsFreeText')},model:{value:(_vm.localCustomer.interestOther),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"interestOther\", $$v)},expression:\"localCustomer.interestOther\"}})],1)])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"buttons\"},[_c('prevnextbuttons',{on:{\"prev\":_vm.onPrevClicked,\"next\":_vm.onNextClicked}})],1)])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"localCustomer\" class=\"interestinfo\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <!-- customer interests section-->\r\n        <div class=\"row headertitle\">\r\n          <div class=\"col-12\">\r\n            <h3>{{ $t('customerForm.myInterests') }}</h3>\r\n            <span class=\"cap-label\">{{ $t('customerForm.standardCustomerInterests') }}</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <checkboxlist v-model=\"localCustomer.interests\"\r\n                          :list=\"customerInterests\"\r\n                          :rows=\"3\"\r\n            />\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.standardCustomerInterestsFreeTextTitle') }}</span>\r\n            <sprtextarea\r\n              v-model=\"localCustomer.interestOther\"\r\n              v-validate=\"{ max: 300 }\"\r\n              name=\"customerForm.interestFreeText\"\r\n              :is-valid=\"localCustomer.interestOther.length <= 300\"\r\n              :maxCharacters=\"300\"\r\n              :showCounter=\"true\"\r\n              :subtext=\"$t('customerForm.standardCustomerInterestsFreeText')\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div class=\"buttons\">\r\n          <prevnextbuttons\r\n            @prev=\"onPrevClicked\"\r\n            @next=\"onNextClicked\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprtextarea from '../SPRSimpleTextArea.vue'\r\n  import checkboxlist from '../SPRSimpleCheckboxBitmaskList.vue'\r\n  import prevnextbuttons from '../SPRPrevNextButtons.vue'\r\n  import { FriendCustomerStandardDto } from '@/types/index'\r\n  import { SprCheckboxBitmaskValue } from '@/types/custom'\r\n  import inpututils from '@/mixins/inpututils'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localCustomer: FriendCustomerStandardDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'InterestInfo',\r\n    components: { sprtextarea, checkboxlist, prevnextbuttons },\r\n    mixins: [inpututils],\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        localCustomer: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      customerInterests (): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.customerInterests, function (val, key) {\r\n          return {\r\n            value: val.id,\r\n            text: self.$t('customerInterests.' + val.text),\r\n            selected: bitmaskhelper.bitmaskToArray(self.customer.interests).indexOf(val.id) >= 0\r\n          } as SprCheckboxBitmaskValue\r\n        }).filter((x: SprCheckboxBitmaskValue) => x.value !== 0)\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.localCustomer = this.customer\r\n    },\r\n    methods: {\r\n      onPrevClicked (): void {\r\n        this.$emit('prev', this.localCustomer)\r\n      },\r\n      onNextClicked (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            this.$emit('next', this.localCustomer)\r\n          }\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .interestinfo {\r\n    background-color: $brand-white;\r\n    padding: 15px;\r\n    padding-top: 30px;\r\n\r\n    .headertitle {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .cap-label {\r\n      color: $brand-red;\r\n    }\r\n\r\n    .buttons {\r\n      padding-top: 30px;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InterestInfo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InterestInfo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./InterestInfo.vue?vue&type=template&id=23a01f5e\"\nimport script from \"./InterestInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./InterestInfo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./InterestInfo.vue?vue&type=style&index=0&id=23a01f5e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localCustomer)?_c('div',{staticClass:\"friendinfo\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.friendWish')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-4 col-md-3\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.genderPreferences')))]),_c('checkboxlist',{attrs:{\"list\":_vm.genders,\"rows\":1},model:{value:(_vm.localCustomer.preferredGenders),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"preferredGenders\", $$v)},expression:\"localCustomer.preferredGenders\"}}),(_vm.mustHaveOneGenderSelected && _vm.pressedNext)?_c('div',{staticClass:\"validation\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.genderPreferencesNotSelected'))+\" \")]):_vm._e()],1),_c('div',{staticClass:\"col-12 offset-sm-2 col-sm-6 col-md-7\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.desiredAge')))]),_c('checkboxlist',{attrs:{\"list\":_vm.preferredAges,\"rows\":2},model:{value:(_vm.localCustomer.preferredAges),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"preferredAges\", $$v)},expression:\"localCustomer.preferredAges\"}}),(_vm.mustHaveOneAgeGroupSelected && _vm.pressedNext)?_c('div',{staticClass:\"validation\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.desiredAgeNotSelected'))+\" \")]):_vm._e()],1)]),_c('div',{staticClass:\"row\",staticStyle:{\"margin-top\":\"15px\"}},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.availabilityTimes')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxlist',{attrs:{\"list\":_vm.availabilityTimes,\"rows\":3},model:{value:(_vm.localCustomer.availabilityTimes),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"availabilityTimes\", $$v)},expression:\"localCustomer.availabilityTimes\"}})],1)]),_c('div',{staticClass:\"row\",staticStyle:{\"margin-top\":\"15px\"}},[_c('div',{staticClass:\"col-sm-6\"},[_c('sprdropdownnumberkey',{attrs:{\"title\":_vm.$t('customerForm.availabilityFrequency'),\"items\":_vm.availabilityFrequency,\"is-valid\":true},model:{value:(_vm.localCustomer.availabilityFrequency),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"availabilityFrequency\", $$v)},expression:\"localCustomer.availabilityFrequency\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprtextarea',{attrs:{\"title\":_vm.$t('customerForm.standardDescriptionTitle'),\"rows\":6,\"subtext\":_vm.$t('customerForm.standardDescription')},model:{value:(_vm.localCustomer.description),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"description\", $$v)},expression:\"localCustomer.description\"}})],1)])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"buttons\"},[_c('prevnextbuttons',{on:{\"prev\":_vm.onPrevClicked,\"next\":_vm.onNextClicked}})],1)])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"localCustomer\" class=\"friendinfo\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <!-- friend wish section -->\r\n        <div class=\"row\">\r\n          <div class=\"col\">\r\n            <h3>{{ $t('customerForm.friendWish') }}</h3>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-sm-4 col-md-3\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.genderPreferences') }}</span>\r\n            <checkboxlist v-model=\"localCustomer.preferredGenders\"\r\n                          :list=\"genders\"\r\n                          :rows=\"1\"\r\n            />\r\n            <div v-if=\"mustHaveOneGenderSelected && pressedNext\" class=\"validation\">\r\n              {{ $t('customerForm.genderPreferencesNotSelected') }}\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 offset-sm-2 col-sm-6 col-md-7\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.desiredAge') }}</span>\r\n            <checkboxlist v-model=\"localCustomer.preferredAges\"\r\n                          :list=\"preferredAges\"\r\n                          :rows=\"2\"\r\n            />\r\n            <div v-if=\"mustHaveOneAgeGroupSelected && pressedNext\" class=\"validation\">\r\n              {{ $t('customerForm.desiredAgeNotSelected') }}\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\" style=\"margin-top: 15px;\">\r\n          <div class=\"col-12\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.availabilityTimes') }}</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <checkboxlist\r\n              v-model=\"localCustomer.availabilityTimes\"\r\n              :list=\"availabilityTimes\"\r\n              :rows=\"3\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div class=\"row\" style=\"margin-top: 15px;\">\r\n          <div class=\"col-sm-6\">\r\n            <sprdropdownnumberkey v-model=\"localCustomer.availabilityFrequency\"\r\n                                  :title=\"$t('customerForm.availabilityFrequency')\"\r\n                                  :items=\"availabilityFrequency\"\r\n                                  :is-valid=\"true\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <sprtextarea\r\n              v-model=\"localCustomer.description\"\r\n              :title=\"$t('customerForm.standardDescriptionTitle')\"\r\n              :rows=\"6\"\r\n              :subtext=\"$t('customerForm.standardDescription')\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div class=\"buttons\">\r\n          <prevnextbuttons\r\n            @prev=\"onPrevClicked\"\r\n            @next=\"onNextClicked\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprtextarea from '../SPRSimpleTextArea.vue'\r\n  import checkboxlist from '../SPRSimpleCheckboxBitmaskList.vue'\r\n  import sprdropdownnumberkey from '../SPRDropdownNumberKey.vue'\r\n  import prevnextbuttons from '../SPRPrevNextButtons.vue'\r\n  import { FriendCustomerStandardDto } from '@/types/index'\r\n  import { SprCheckboxBitmaskValue, SprDropDownNumberValue } from '@/types/custom'\r\n  import inpututils from '@/mixins/inpututils'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localCustomer: FriendCustomerStandardDto | undefined,\r\n    pressedNext: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'FriendInfo',\r\n    components: { sprtextarea, checkboxlist, prevnextbuttons, sprdropdownnumberkey },\r\n    mixins: [inpututils],\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        localCustomer: undefined,\r\n        pressedNext: false\r\n      }\r\n    },\r\n    computed: {\r\n      genders (): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.preferredGenders, function (val, key) {\r\n          return {\r\n            value: val.id,\r\n            text: self.$t('genders.' + val.text),\r\n            selected: bitmaskhelper.bitmaskToArray(self.customer.preferredGenders).indexOf(val.id) >= 0\r\n          } as SprCheckboxBitmaskValue\r\n        }).filter((x: SprCheckboxBitmaskValue) => x.value !== 0)\r\n      },\r\n      mustHaveOneAgeGroupSelected (): boolean {\r\n        if (this.localCustomer) { return this.localCustomer.preferredAges === 0 }\r\n        return false\r\n      },\r\n      availabilityFrequency (): Array<SprDropDownNumberValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.availabilityFrequency.filter(x => x.id !== 0), function (val, key) {\r\n          return { value: val.id, text: self.$t('availabilityFrequency.' + val.text) } as SprDropDownNumberValue\r\n        })\r\n      },\r\n      availabilityTimes (): Array<SprCheckboxBitmaskValue> {\r\n        return _.map(this.$store.state.availabilityTimes.filter(x => x.id !== 0), (val, key) => {\r\n          return { value: val.id, text: this.$t('availabilityTimes.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      mustHaveOneGenderSelected (): boolean {\r\n        if (this.localCustomer) { return this.localCustomer?.preferredGenders === 0 }\r\n        return false\r\n      },\r\n      preferredAges (): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.preferredAge, function (val, key) {\r\n          return {\r\n            value: val.id,\r\n            text: self.$t('preferredAge.' + val.text),\r\n            selected: bitmaskhelper.bitmaskToArray(self.customer.preferredAges).indexOf(val.id) >= 0\r\n          } as SprCheckboxBitmaskValue\r\n        }).filter((x: SprCheckboxBitmaskValue) => x.value !== 0)\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.localCustomer = this.customer\r\n    },\r\n    methods: {\r\n      onPrevClicked (): void {\r\n        this.$emit('prev', this.localCustomer)\r\n      },\r\n      onNextClicked (): void {\r\n        this.pressedNext = true\r\n        if (!(this.mustHaveOneAgeGroupSelected || this.mustHaveOneGenderSelected)) {\r\n          this.$validator.validateAll().then(result => {\r\n            if (result) {\r\n              this.$emit('next', this.localCustomer)\r\n            }\r\n          })\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .validation {\r\n    box-sizing: border-box;\r\n    color: #CC0000;\r\n    background: #FFFFFF;\r\n    display: inline-block;\r\n    position: relative;\r\n    align-content: center;\r\n    flex-flow: row;\r\n    border-radius: 5px;\r\n    max-width: 500px;\r\n    width: 100%;\r\n    padding: 10px;\r\n    margin: 0;\r\n  }\r\n  .friendinfo {\r\n    background-color: $brand-white;\r\n    padding: 15px;\r\n    padding-top: 30px;\r\n\r\n    .headertitle {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .cap-label {\r\n      color: $brand-red;\r\n    }\r\n\r\n    .buttons {\r\n      padding-top: 30px;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendInfo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendInfo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FriendInfo.vue?vue&type=template&id=39963828&scoped=true\"\nimport script from \"./FriendInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./FriendInfo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FriendInfo.vue?vue&type=style&index=0&id=39963828&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"39963828\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localCustomer)?_c('div',{staticClass:\"contactinfo\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row contact-info\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.contactInformation')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.contactFirstname'),\"is-valid\":true,\"name\":\"customerForm.contactFirstName\"},model:{value:(_vm.localCustomer.contactFirstName),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"contactFirstName\", $$v)},expression:\"localCustomer.contactFirstName\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.contactLastname'),\"is-valid\":true,\"name\":\"customerForm.contactLastName\"},model:{value:(_vm.localCustomer.contactLastName),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"contactLastName\", $$v)},expression:\"localCustomer.contactLastName\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.contactStreet'),\"is-valid\":true,\"name\":\"customerForm.contactStreetAddress\"},model:{value:(_vm.localCustomer.contactStreetAddress),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"contactStreetAddress\", $$v)},expression:\"localCustomer.contactStreetAddress\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.contactZipCode'),\"is-valid\":true,\"name\":\"customerForm.contactZipCode\"},model:{value:(_vm.localCustomer.contactZipCode),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"contactZipCode\", $$v)},expression:\"localCustomer.contactZipCode\"}})],1),_c('div',{staticClass:\"col-12 col-sm-8\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.contactCity'),\"is-valid\":true,\"name\":\"customerForm.contactCity\"},model:{value:(_vm.localCustomer.contactCity),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"contactCity\", $$v)},expression:\"localCustomer.contactCity\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.contactPhone'),\"is-valid\":true,\"name\":\"customerForm.contactPhoneNumber\"},model:{value:(_vm.localCustomer.contactPhonenumber),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"contactPhonenumber\", $$v)},expression:\"localCustomer.contactPhonenumber\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.contactEmail'),\"is-valid\":true},model:{value:(_vm.localCustomer.contactEmail),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"contactEmail\", $$v)},expression:\"localCustomer.contactEmail\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.contactRelation'),\"is-valid\":true,\"name\":\"customerForm.contactRelation\"},model:{value:(_vm.localCustomer.contactRelation),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"contactRelation\", $$v)},expression:\"localCustomer.contactRelation\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('textareainput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({ max: 100 }),expression:\"{ max: 100 }\"}],attrs:{\"title\":_vm.$t('customerForm.otherContact'),\"is-valid\":_vm.localCustomer.otherContact.length <= 100,\"maxCharacters\":100,\"showCounter\":true},model:{value:(_vm.localCustomer.otherContact),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"otherContact\", $$v)},expression:\"localCustomer.otherContact\"}})],1)])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"buttons\"},[_c('prevnextbuttons',{on:{\"prev\":_vm.onPrevClicked,\"next\":_vm.onNextClicked}})],1)])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"localCustomer\" class=\"contactinfo\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n      <!-- contact section-->\r\n      <div class=\"row contact-info\">\r\n        <div class=\"col-12\">\r\n          <h3>{{ $t('customerForm.contactInformation') }}</h3>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row\">\r\n        <div class=\"col-sm-6\">\r\n          <forminput\r\n            v-model=\"localCustomer.contactFirstName\"\r\n            :hint=\"$t('customerForm.contactFirstname')\"\r\n            :is-valid=\"true\"\r\n            name=\"customerForm.contactFirstName\"\r\n          />\r\n        </div>\r\n        <div class=\"col-sm-6\">\r\n          <forminput\r\n            v-model=\"localCustomer.contactLastName\"\r\n            :hint=\"$t('customerForm.contactLastname')\"\r\n            :is-valid=\"true\"\r\n            name=\"customerForm.contactLastName\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-sm-12\">\r\n          <forminput\r\n            v-model=\"localCustomer.contactStreetAddress\"\r\n            :hint=\"$t('customerForm.contactStreet')\"\r\n            :is-valid=\"true\"\r\n            name=\"customerForm.contactStreetAddress\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 col-sm-4\">\r\n          <forminput\r\n            v-model=\"localCustomer.contactZipCode\"\r\n            :hint=\"$t('customerForm.contactZipCode')\"\r\n            :is-valid=\"true\"\r\n            name=\"customerForm.contactZipCode\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 col-sm-8\">\r\n          <forminput\r\n            v-model=\"localCustomer.contactCity\"\r\n            :hint=\"$t('customerForm.contactCity')\"\r\n            :is-valid=\"true\"\r\n            name=\"customerForm.contactCity\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-sm-6\">\r\n          <forminput\r\n            v-model=\"localCustomer.contactPhonenumber\"\r\n            :hint=\"$t('customerForm.contactPhone')\"\r\n            :is-valid=\"true\"\r\n            name=\"customerForm.contactPhoneNumber\"\r\n          />\r\n        </div>\r\n        <div class=\"col-sm-6\">\r\n          <forminput\r\n            v-model=\"localCustomer.contactEmail\"\r\n            :hint=\"$t('customerForm.contactEmail')\"\r\n            :is-valid=\"true\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 col-sm-6\">\r\n          <forminput\r\n            v-model=\"localCustomer.contactRelation\"\r\n            :hint=\"$t('customerForm.contactRelation')\"\r\n            :is-valid=\"true\"\r\n            name=\"customerForm.contactRelation\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <textareainput\r\n            v-model=\"localCustomer.otherContact\"\r\n            :title=\"$t('customerForm.otherContact')\"\r\n            v-validate=\"{ max: 100 }\"\r\n            :is-valid=\"localCustomer.otherContact.length <= 100\"\r\n            :maxCharacters=\"100\"\r\n            :showCounter=\"true\"\r\n          />\r\n        </div>\r\n      </div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div class=\"buttons\">\r\n          <prevnextbuttons\r\n            @prev=\"onPrevClicked\"\r\n            @next=\"onNextClicked\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import prevnextbuttons from '../SPRPrevNextButtons.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import { FriendCustomerStandardDto } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localCustomer: FriendCustomerStandardDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'ContactInfo',\r\n    components: { forminput, textareainput, prevnextbuttons },\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        localCustomer: undefined\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.localCustomer = this.customer\r\n    },\r\n    methods: {\r\n      onPrevClicked (): void {\r\n        this.$emit('prev', this.localCustomer)\r\n      },\r\n      onNextClicked (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            this.$emit('next', this.localCustomer)\r\n          }\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .contactinfo {\r\n    background-color: $brand-white;\r\n    padding: 15px;\r\n    padding-top: 30px;\r\n\r\n    .headertitle {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .instructions {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .buttons {\r\n      padding-top: 30px;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactInfo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactInfo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ContactInfo.vue?vue&type=template&id=3b70208e\"\nimport script from \"./ContactInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./ContactInfo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ContactInfo.vue?vue&type=style&index=0&id=3b70208e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localCustomer)?_c('div',{staticClass:\"summary\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row headertitle\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.summaryTitle')))]),_c('div',{staticClass:\"instructions\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.$t('customerForm.summaryInstructions'))}})])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.standardPersonalInformation')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(\" \"+_vm._s(_vm.localCustomer.firstName)+\" \"+_vm._s(_vm.localCustomer.lastName)+\" \")]),_c('dd',[_c('div',[_vm._v(_vm._s(_vm.localCustomer.streetAddress))]),_c('div',[_vm._v(_vm._s(_vm.localCustomer.zipCode)+\" \"+_vm._s(_vm.localCustomer.city))])]),_c('dd',[_c('div',[_vm._v(_vm._s(_vm.localCustomer.homePhone))]),_c('div',[_vm._v(_vm._s(_vm.localCustomer.email))])])])]),(_vm.localCustomer.contactFirstName || _vm.localCustomer.contactLastName)?_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(\" \"+_vm._s(_vm.localCustomer.contactFirstName)+\" \"+_vm._s(_vm.localCustomer.contactLastName)+\" \")]),_c('dd',[_c('div',[_vm._v(_vm._s(_vm.localCustomer.contactStreetAddress))]),_c('div',[_vm._v(_vm._s(_vm.localCustomer.contactZipCode)+\" \"+_vm._s(_vm.localCustomer.contactCity))])]),_c('dd',[_c('div',[_vm._v(_vm._s(_vm.localCustomer.contactPhonenumber))]),_c('div',[_vm._v(_vm._s(_vm.localCustomer.contactEmail))])]),_c('dd',[_c('div',[_vm._v(_vm._s(_vm.localCustomer.contactRelation))])]),_c('dd',[_c('div',[_vm._v(_vm._s(_vm.localCustomer.otherContact))])])])]):_vm._e()]),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('div',{staticClass:\"inputcontent\"},[(_vm.birthdateString)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.birthDate')))]),_c('dd',[_vm._v(_vm._s(_vm.birthdateString))])]):_vm._e(),_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.gender')))]),_c('dd',[_vm._v(_vm._s(_vm.genderString))])])])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.standardLanguageInformation')))]),_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.nativeLanguage')))]),_c('dd',[_vm._v(_vm._s(_vm.languageString))])]),_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.otherLanguages')))]),_vm._l((_vm.customerOtherLanguages),function(lang){return _c('dd',{key:lang},[_vm._v(\" \"+_vm._s(lang)+\" \")])}),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.otherLanguages))])],2)])]),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.myInterests')))]),_c('div',{staticClass:\"inputcontent\"},[_vm._v(\" \"+_vm._s(_vm.interestsString)+\" \")]),(_vm.localCustomer.interestOther)?_c('div',{staticClass:\"inputcontent\"},[_vm._v(\" \"+_vm._s(_vm.localCustomer.interestOther)+\" \")]):_vm._e()])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.friendWish')))]),_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.genderPreferences')))]),_c('dd',[_vm._v(_vm._s(_vm.preferredGenders))]),_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.desiredAge')))]),_c('dd',[_vm._v(_vm._s(_vm.preferredAges))]),_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.availabilityTimes')))]),_c('dd',[_vm._v(_vm._s(_vm.availabilityTimes))]),_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.availabilityFrequency')))]),_c('dd',[_vm._v(_vm._s(_vm.availabilityFrequency))])])])])]),_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.standardDescriptionTitle')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.description))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-8\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.standardAnythingElse')))]),_c('sprtextarea',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({ max: 300 }),expression:\"{ max: 300 }\"}],attrs:{\"name\":\"customerForm.shortDescription\",\"is-valid\":_vm.localCustomer.customerTypeOtherInfo.length <= 300,\"max-characters\":300,\"show-counter\":true},model:{value:(_vm.localCustomer.customerTypeOtherInfo),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"customerTypeOtherInfo\", $$v)},expression:\"localCustomer.customerTypeOtherInfo\"}})],1)])]),_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"title\":_vm.$t('customerForm.privacyStatement'),\"aria-label\":_vm.$t('customerForm.privacyStatement'),\"name\":\"customerForm.privacyStatement\",\"allow-html\":true,\"white-warnings\":false,\"has-error\":_vm.privacyStatement === false,\"is-valid\":_vm.privacyStatement === true,\"required\":true},model:{value:(_vm.privacyStatement),callback:function ($$v) {_vm.privacyStatement=$$v},expression:\"privacyStatement\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"buttons\"},[_c('prevnextbuttons',{attrs:{\"is-save\":\"\"},on:{\"prev\":_vm.onPrevClicked,\"next\":_vm.onNextClicked}})],1)])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"localCustomer\" class=\"summary\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <!-- summary section-->\r\n        <div class=\"row headertitle\">\r\n          <div class=\"col-12\">\r\n            <h3>{{ $t('customerForm.summaryTitle') }}</h3>\r\n            <div class=\"instructions\">\r\n              <!-- eslint-disable-next-line vue/no-v-html -->\r\n              <span v-html=\"$t('customerForm.summaryInstructions')\" />\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.standardPersonalInformation') }}</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-sm-6\">\r\n            <div class=\"inputcontent\">\r\n              <dl>\r\n                <dt>\r\n                  {{ localCustomer.firstName }} {{ localCustomer.lastName }}\r\n                </dt>\r\n                <dd>\r\n                  <div>{{ localCustomer.streetAddress }}</div>\r\n                  <div>{{ localCustomer.zipCode }} {{ localCustomer.city }}</div>\r\n                </dd>\r\n                <dd>\r\n                  <div>{{ localCustomer.homePhone }}</div>\r\n                  <div>{{ localCustomer.email }}</div>\r\n                </dd>\r\n              </dl>\r\n            </div>\r\n            <div v-if=\"localCustomer.contactFirstName || localCustomer.contactLastName\" class=\"inputcontent\">\r\n              <dl>\r\n                <dt>\r\n                  {{ localCustomer.contactFirstName }} {{ localCustomer.contactLastName }}\r\n                </dt>\r\n                <dd>\r\n                  <div>{{ localCustomer.contactStreetAddress }}</div>\r\n                  <div>{{ localCustomer.contactZipCode }} {{ localCustomer.contactCity }}</div>\r\n                </dd>\r\n                <dd>\r\n                  <div>{{ localCustomer.contactPhonenumber }}</div>\r\n                  <div>{{ localCustomer.contactEmail }}</div>\r\n                </dd>\r\n                <dd>\r\n                  <div>{{ localCustomer.contactRelation }}</div>\r\n                </dd>\r\n                <dd>\r\n                  <div>{{ localCustomer.otherContact }}</div>\r\n                </dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 col-sm-6\">\r\n            <div class=\"inputcontent\">\r\n              <dl v-if=\"birthdateString\">\r\n                <dt>{{ $t('customerForm.birthDate') }}</dt>\r\n                <dd>{{ birthdateString }}</dd>\r\n              </dl>\r\n              <dl>\r\n                <dt>{{ $t('customerForm.gender') }}</dt>\r\n                <dd>{{ genderString }}</dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-sm-6\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.standardLanguageInformation') }}</span>\r\n            <div class=\"inputcontent\">\r\n              <dl>\r\n                <dt>{{ $t('customerForm.nativeLanguage') }}</dt>\r\n                <dd>{{ languageString }}</dd>\r\n              </dl>\r\n              <dl>\r\n                <dt>{{ $t('customerForm.otherLanguages') }}</dt>\r\n                <dd v-for=\"lang in customerOtherLanguages\" :key=\"lang\">\r\n                  {{ lang }}\r\n                </dd>\r\n                <dd>{{ localCustomer.otherLanguages }}</dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 col-sm-6\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.myInterests') }}</span>\r\n            <div class=\"inputcontent\">\r\n              {{ interestsString }}\r\n            </div>\r\n            <div v-if=\"localCustomer.interestOther\" class=\"inputcontent\">\r\n              {{ localCustomer.interestOther }}\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-sm-6\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.friendWish') }}</span>\r\n            <div class=\"inputcontent\">\r\n              <dl>\r\n                <dt>{{ $t('customerForm.genderPreferences') }}</dt>\r\n                <dd>{{ preferredGenders }}</dd>\r\n                <dt>{{ $t('customerForm.desiredAge') }}</dt>\r\n                <dd>{{ preferredAges }}</dd>\r\n                <dt>{{ $t('customerForm.availabilityTimes') }}</dt>\r\n                <dd>{{ availabilityTimes }}</dd>\r\n                <dt>{{ $t('customerForm.availabilityFrequency') }}</dt>\r\n                <dd>{{ availabilityFrequency }}</dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"inputcontent\">\r\n          <dl>\r\n            <dt>{{ $t('customerForm.standardDescriptionTitle') }}</dt>\r\n            <dd>{{ localCustomer.description }}</dd>\r\n          </dl>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-md-8\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.standardAnythingElse') }}</span>\r\n            <sprtextarea\r\n              v-model=\"localCustomer.customerTypeOtherInfo\"\r\n              v-validate=\"{ max: 300 }\"\r\n              name=\"customerForm.shortDescription\"\r\n              :is-valid=\"localCustomer.customerTypeOtherInfo.length <= 300\"\r\n              :max-characters=\"300\"\r\n              :show-counter=\"true\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <checkboxinput v-model=\"privacyStatement\"\r\n                       v-validate=\"'required'\"\r\n                       :title=\"$t('customerForm.privacyStatement')\"\r\n                       :aria-label=\"$t('customerForm.privacyStatement')\"\r\n                       name=\"customerForm.privacyStatement\"\r\n                       :allow-html=\"true\"\r\n                       :white-warnings=\"false\"\r\n                       :has-error=\"privacyStatement === false\"\r\n                       :is-valid=\"privacyStatement === true\"\r\n                       :required=\"true\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div class=\"buttons\">\r\n          <prevnextbuttons\r\n            is-save\r\n            @prev=\"onPrevClicked\"\r\n            @next=\"onNextClicked\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprtextarea from '../SPRSimpleTextArea.vue'\r\n  import prevnextbuttons from '../SPRPrevNextButtons.vue'\r\n  import enums from '@/mixins/enums.js'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import { FriendCustomerStandardDto, LanguageDto } from '@/types/index'\r\n  import { TranslateResult } from 'vue-i18n'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localCustomer: FriendCustomerStandardDto | undefined,\r\n    privacyStatement: boolean,\r\n    privacyStatementInError: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'Summary',\r\n    components: { sprtextarea, prevnextbuttons, checkboxinput },\r\n    mixins: [enums],\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        localCustomer: undefined,\r\n        privacyStatement: false,\r\n        privacyStatementInError: false\r\n      }\r\n    },\r\n    computed: {\r\n      birthdateString (): string {\r\n        if (!this.localCustomer) return ''\r\n        var d = new Date(this.localCustomer.birthdate)\r\n        return d ? d.toLocaleDateString('fi-FI') : ''\r\n      },\r\n      genderString (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getGenderTranslation(this.localCustomer.gender)\r\n      },\r\n      languageString (): string | TranslateResult {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        var isoCode = this.getLanguage(this.localCustomer?.nativeLanguage)?.isoCode\r\n        var translateString = `languages.${isoCode}`\r\n        return this.$t(translateString)\r\n      },\r\n      interestsString (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getInterestsMaskTranslation(this.localCustomer?.interests)\r\n      },\r\n      preferredGenders (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getGenderPreferencesMaskTranslation(this.localCustomer?.preferredGenders)\r\n      },\r\n      preferredAges (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getAgePreferencesMaskTranslation(this.localCustomer?.preferredAges)\r\n      },\r\n      availabilityTimes (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getAvailabilityTimesMaskTranslation(this.localCustomer?.availabilityTimes)\r\n      },\r\n      availabilityFrequency (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getAvailabilityFrequencyTranslation(this.localCustomer?.availabilityFrequency)\r\n      },\r\n      customerOtherLanguages (): Array<string> | undefined {\r\n        return this.localCustomer?.customerLanguages\r\n          .filter((x: LanguageDto) => x.isoCode !== 'other')\r\n          .map((x: LanguageDto) => {\r\n          return this.$t('languages.' + x.isoCode).toString()\r\n        })\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.localCustomer = this.customer\r\n    },\r\n    methods: {\r\n      onPrevClicked (): void {\r\n        this.$emit('prev', this.localCustomer)\r\n      },\r\n      onNextClicked (): void {\r\n        if (this.privacyStatement) {\r\n          this.$validator.validateAll().then(result => {\r\n            if (result) {\r\n              this.$emit('next', this.localCustomer)\r\n            }\r\n          })\r\n        } else {\r\n          this.privacyStatementInError = true\r\n          this.$validator.validateAll()\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .summary {\r\n    background-color: $brand-white;\r\n    padding: 15px;\r\n    padding-top: 30px;\r\n\r\n    .headertitle {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .cap-label {\r\n      color: $brand-red;\r\n    }\r\n\r\n    .name {\r\n      font-weight: bold;\r\n    }\r\n\r\n    .inputcontent {\r\n      margin-top: 15px;\r\n      margin-bottom: 15px;\r\n    }\r\n\r\n    .buttons {\r\n      padding-top: 30px;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Summary.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Summary.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Summary.vue?vue&type=template&id=d5af0c9e\"\nimport script from \"./Summary.vue?vue&type=script&lang=ts\"\nexport * from \"./Summary.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Summary.vue?vue&type=style&index=0&id=d5af0c9e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"success\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row headertitle\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.standardCustomerSuccess'))+\" \"),_c('font-awesome-icon',{staticClass:\"tick\",attrs:{\"icon\":['far', 'check-circle']}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.$t('customerForm.newStandardCustomerSuccessText'))}})])])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"buttons\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('wizard.complete'),\"primary\":true,\"icon\":\"chevron-right\",\"click-event\":\"finish\"},on:{\"finish\":_vm.onFinishClicked}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"success\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"row headertitle\">\r\n          <div class=\"col-12\">\r\n            <h3>{{ $t('customerForm.standardCustomerSuccess') }} <font-awesome-icon :icon=\"['far', 'check-circle']\" class=\"tick\" /></h3>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <!-- eslint-disable vue/no-v-html -->\r\n            <div v-html=\"$t('customerForm.newStandardCustomerSuccessText')\" />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div class=\"buttons\">\r\n          <sprbutton\r\n            :size=\"4\"\r\n            :title=\"$t('wizard.complete')\"\r\n            :primary=\"true\"\r\n            icon=\"chevron-right\"\r\n            click-event=\"finish\"\r\n            @finish=\"onFinishClicked\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import { TranslateResult } from 'vue-i18n'\r\n\r\n  export default Vue.extend({\r\n    name: 'Success',\r\n    components: { sprbutton },\r\n    methods: {\r\n      onFinishClicked (): void {\r\n        this.$emit('next')\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .success {\r\n    background-color: $brand-white;\r\n    padding: 15px;\r\n    padding-top: 30px;\r\n\r\n    .headertitle {\r\n      margin-bottom: 30px;\r\n      .tick {\r\n        color: $brand-success;\r\n      }\r\n    }\r\n\r\n    .cap-label {\r\n      color: $brand-red;\r\n    }\r\n\r\n    .buttons {\r\n      padding-top: 30px;\r\n      text-align: center;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Success.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Success.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Success.vue?vue&type=template&id=14777ebd\"\nimport script from \"./Success.vue?vue&type=script&lang=ts\"\nexport * from \"./Success.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Success.vue?vue&type=style&index=0&id=14777ebd&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <!--  Note: This is the parent landing page, that includes the step-visualizer. For standard, start page is choosing zip-code-->\r\n  <!-- 2nd page (GroupContactInfo component) is friend management group contact information page-->\r\n  <!-- From 3rd page we will start showing the stepVisualizer and user will start inputing their personal data-->\r\n  <div class=\"anoncustomerform col-12\">\r\n    <div v-if=\"isStart\">\r\n      <Start\r\n        @next=\"start\"\r\n      />\r\n    </div>\r\n    <div v-else-if=\"isGroupContactInfo\">\r\n      <GroupContactInfo\r\n        :customer=\"customer\"\r\n        :fmgid=\"fmgid\"\r\n        @next=\"next\"\r\n        @prev=\"prev\"\r\n      />\r\n    </div>\r\n    <div v-else>\r\n      <div class=\"container\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <StepVizualizer\r\n              :step=\"step\"\r\n            />\r\n            <PersonalInfo\r\n              v-if=\"isPersonalInfo\"\r\n              :customer=\"customer\"\r\n              @next=\"next\"\r\n              @prev=\"prev\"\r\n            />\r\n            <LanguageInfo\r\n              v-if=\"isLanguageInfo\"\r\n              :customer=\"customer\"\r\n              @next=\"next\"\r\n              @prev=\"prev\"\r\n            />\r\n            <InterestInfo\r\n              v-if=\"isInterestInfo\"\r\n              :customer=\"customer\"\r\n              @next=\"next\"\r\n              @prev=\"prev\"\r\n            />\r\n            <FriendInfo\r\n              v-if=\"isFriendInfo\"\r\n              :customer=\"customer\"\r\n              @next=\"next\"\r\n              @prev=\"prev\"\r\n            />\r\n            <ContactInfo\r\n              v-if=\"isContactInfo\"\r\n              :customer=\"customer\"\r\n              @next=\"next\"\r\n              @prev=\"prev\"\r\n            />\r\n            <Summary\r\n              v-if=\"isSummary\"\r\n              :customer=\"customer\"\r\n              @next=\"next\"\r\n              @prev=\"prev\"\r\n            />\r\n            <Success\r\n              v-if=\"isSuccess\"\r\n              @next=\"next\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import GroupContactInfo from './GroupContactInfo.vue'\r\n  import StepVizualizer from './StepVizualizer.vue'\r\n  import Start from './Start.vue'\r\n  import PersonalInfo from './PersonalInfo.vue'\r\n  import LanguageInfo from './LanguageInfo.vue'\r\n  import InterestInfo from './InterestInfo.vue'\r\n  import FriendInfo from './FriendInfo.vue'\r\n  import ContactInfo from './ContactInfo.vue'\r\n  import Summary from './Summary.vue'\r\n  import Success from './Success.vue'\r\n  import { AvailabilityFrequence, CustomerState, FriendCustomerStandardDto, Gender, Interests, CustomerTypes, PreferredAges, PreferredGenders, AvailabilityTimes } from '@/types/index'\r\n  import { AnonStandardCustomerRegistrationStep } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    initialized: boolean,\r\n    isSending: boolean,\r\n    customer: FriendCustomerStandardDto,\r\n    emptyCustomer: FriendCustomerStandardDto,\r\n    intervDate: string,\r\n    intervName: string,\r\n    approvDate: string,\r\n    approvName: string,\r\n    groupDate: string,\r\n    groupName: string,\r\n    declineDate: string,\r\n    declineName: string,\r\n    fmgid: number,\r\n    step: AnonStandardCustomerRegistrationStep\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'AnonCustomerForm',\r\n    components: { GroupContactInfo, StepVizualizer, Start, PersonalInfo, LanguageInfo, InterestInfo, FriendInfo, ContactInfo, Summary, Success },\r\n    props: {\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        step: AnonStandardCustomerRegistrationStep.Start,\r\n        customer: (this as any).initialCustomer(),\r\n        emptyCustomer: (this as any).initialCustomer(),\r\n        fmgid: 0,\r\n        isSending: false,\r\n        intervDate: '',\r\n        intervName: '',\r\n        approvDate: '',\r\n        approvName: '',\r\n        groupDate: '',\r\n        groupName: '',\r\n        declineDate: '',\r\n        declineName: '',\r\n        initialized: false\r\n      }\r\n    },\r\n    computed: {\r\n      isStart (): boolean {\r\n        return this.step === Number(AnonStandardCustomerRegistrationStep.Start)\r\n      },\r\n      isGroupContactInfo (): boolean {\r\n        return this.step === Number(AnonStandardCustomerRegistrationStep.GroupContactInfo)\r\n      },\r\n      isPersonalInfo (): boolean {\r\n        return this.step === Number(AnonStandardCustomerRegistrationStep.PersonalInfo)\r\n      },\r\n      isLanguageInfo (): boolean {\r\n        return this.step === Number(AnonStandardCustomerRegistrationStep.LanguageInfo)\r\n      },\r\n      isInterestInfo (): boolean {\r\n        return this.step === Number(AnonStandardCustomerRegistrationStep.InterestInfo)\r\n      },\r\n      isFriendInfo (): boolean {\r\n        return this.step === Number(AnonStandardCustomerRegistrationStep.FriendInfo)\r\n      },\r\n      isContactInfo (): boolean {\r\n        return this.step === Number(AnonStandardCustomerRegistrationStep.ContactInfo)\r\n      },\r\n      isSummary (): boolean {\r\n        return this.step === Number(AnonStandardCustomerRegistrationStep.Summary)\r\n      },\r\n      isSuccess (): boolean {\r\n        return this.step === Number(AnonStandardCustomerRegistrationStep.Success)\r\n      }\r\n    },\r\n    beforeRouteLeave (to, from, next) {\r\n      const changed = this.changeDetected()\r\n\r\n      if (this.changeDetected()) {\r\n        var text = this.$t('profile.unsavedChanges').toString()\r\n        const answer = window.confirm(text)\r\n        if (!answer) {\r\n          return next(false)\r\n        }\r\n      }\r\n\r\n      return next()\r\n    },\r\n    methods: {\r\n      changeDetected (): boolean {\r\n        return JSON.stringify(this.emptyCustomer) !== JSON.stringify(this.customer)\r\n      },\r\n      initialCustomer (): FriendCustomerStandardDto {\r\n        const currentDate = new Date()\r\n        currentDate.setHours(0, 0, 0, 0)\r\n        return {\r\n          id: 0,\r\n          availabilityFrequency: AvailabilityFrequence.OncePerWeek,\r\n          availabilityTimes: AvailabilityTimes.NotDefined,\r\n          otherLanguages: '',\r\n          firstName: '',\r\n          lastName: '',\r\n          streetAddress: '',\r\n          city: '',\r\n          zipCode: '',\r\n          gsmPhone: '',\r\n          homePhone: '',\r\n          email: '',\r\n          birthdate: currentDate,\r\n          contactFirstName: '',\r\n          contactLastName: '',\r\n          contactStreetAddress: '',\r\n          contactZipCode: '',\r\n          contactCity: '',\r\n          contactPhonenumber: '',\r\n          contactEmail: '',\r\n          contactRelation: '',\r\n          gender: Gender.Male,\r\n          customerTypes: CustomerTypes.NotDefined,\r\n          preferredGenders: PreferredGenders.Male | PreferredGenders.Female | PreferredGenders.Other,\r\n          preferredAges: PreferredAges.NotDefined,\r\n          nativeLanguage: 'fi',\r\n          customerLanguages: [],\r\n          interests: Interests.NotDefined,\r\n          interestOther: '',\r\n          description: '',\r\n          shortDescription: '',\r\n          customerInterviewed: false,\r\n          customerApproval: false,\r\n          customerNotForPrivateRelations: false,\r\n          customerNotForSpr: false,\r\n          customerNotForSprBy: '',\r\n          customerNotForPrivateRelationsBy: '',\r\n          state: CustomerState.PendingApproval,\r\n          customerInterviewedBy: '',\r\n          customerApprovedBy: '',\r\n          startedPending: currentDate,\r\n          otherContact: '',\r\n          onHold: false,\r\n          onHoldComment: '',\r\n          onHoldUntilDate: undefined,\r\n          privateNotes: '',\r\n          friendPools: [],\r\n          friendships: [],\r\n          customerTypeOtherInfo: '',\r\n          friendManagementGroupId: 0,\r\n          fullname: '',\r\n          lastFriendshipEndDate: currentDate,\r\n          multipleVolunteers: false\r\n        } as FriendCustomerStandardDto\r\n      },\r\n      next (cust: FriendCustomerStandardDto) {\r\n        if (this.step === Number(AnonStandardCustomerRegistrationStep.Success)) {\r\n          this.$router.push('/')\r\n        }\r\n        if (this.step === Number(AnonStandardCustomerRegistrationStep.Summary)) {\r\n          this.save()\r\n        }\r\n        if (cust) {\r\n          this.customer = cust\r\n        }\r\n        ++this.step\r\n      },\r\n      start (fmgid: number) {\r\n        //populating this.fgmid to pass in to the fmg contact info page\r\n        if (this.step === Number(AnonStandardCustomerRegistrationStep.Success)) {\r\n          this.$router.push('/')\r\n        }\r\n        if (this.step === Number(AnonStandardCustomerRegistrationStep.Summary)) {\r\n          this.save()\r\n        }\r\n        if (fmgid) {\r\n          this.fmgid = fmgid\r\n          this.emptyCustomer.friendManagementGroupId = fmgid\r\n          this.customer.friendManagementGroupId = fmgid\r\n        }\r\n        ++this.step\r\n      },\r\n      prev (cust: FriendCustomerStandardDto) {\r\n        if (this.step === Number(AnonStandardCustomerRegistrationStep.Start)) return\r\n        if (cust) {\r\n          this.customer = cust\r\n        }\r\n        --this.step\r\n      },\r\n      save: function () {\r\n        var self = this\r\n        this.$validator.validateAll().then(result => {\r\n          var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.anonymousstandardcustomeradd[0]\r\n\r\n          this.$http.post(url, this.customer).then(response => {\r\n            if (response.ok) {\r\n              self.isSending = false\r\n\r\n              this.step = AnonStandardCustomerRegistrationStep.Success\r\n            }\r\n          }, response => {\r\n            this.displayError(response)\r\n            self.isSending = false\r\n          })\r\n        })\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .anoncustomerform {\r\n    padding: 0;\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AnonCustomerForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AnonCustomerForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AnonCustomerForm.vue?vue&type=template&id=0ba24f84\"\nimport script from \"./AnonCustomerForm.vue?vue&type=script&lang=ts\"\nexport * from \"./AnonCustomerForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AnonCustomerForm.vue?vue&type=style&index=0&id=0ba24f84&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"register-thanks\"},[_c('div',{staticClass:\"swapped-elements container-fluid brand-white\"},[_c('div',{staticClass:\"row mt-5\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"h1\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.$t('wizard.thanksHeader')))])])]),_c('div',{staticClass:\"row mt-5\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{directives:[{name:\"linkified\",rawName:\"v-linkified:options\",value:({ nl2br: true }),expression:\"{ nl2br: true }\",arg:\"options\"}],staticClass:\"top-span\",domProps:{\"innerHTML\":_vm._s(_vm.$t('wizard.joinCallToAction'))}})])]),_c('div',{staticClass:\"row mt-5\"},[_c('div',{staticClass:\"col-12 mt-1\"},[_c('sprbutton',{attrs:{\"size\":1,\"title\":_vm.$t('wizard.joinButton'),\"click-event\":\"tojoin\"},on:{\"tojoin\":_vm.join}})],1),_c('div',{staticClass:\"col-12 mt-1\"},[_c('sprbutton',{attrs:{\"size\":1,\"title\":_vm.$t('wizard.noJoinButton'),\"click-event\":\"tologin\"},on:{\"tologin\":_vm.login}})],1),_c('div',{staticClass:\"col-12 mt-1\"},[_c('sprbutton',{attrs:{\"size\":1,\"title\":_vm.$t('wizard.memberAlready'),\"click-event\":\"tologin\"},on:{\"tologin\":_vm.login}})],1)])]),_c('div',{staticClass:\"common-elements\"},[_c('a',{staticClass:\"privacy-link link\",attrs:{\"href\":\"https://www.punainenristi.fi/tietosuoja\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t('wizard.privacyPolicy')))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"register-thanks\">\r\n    <div class=\"swapped-elements container-fluid brand-white\">\r\n      <div class=\"row mt-5\">\r\n        <div class=\"col-12\">\r\n          <span class=\"h1\"\r\n                role=\"heading\"\r\n                aria-level=\"1\"\r\n          >{{ $t('wizard.thanksHeader') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row mt-5\">\r\n        <div class=\"col-12\">\r\n          <!-- eslint-disable-next-line vue/no-v-html -->\r\n          <span v-linkified:options=\"{ nl2br: true }\" class=\"top-span\" v-html=\"$t('wizard.joinCallToAction')\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row mt-5\">\r\n        <div class=\"col-12 mt-1\">\r\n          <sprbutton :size=\"1\"\r\n                     :title=\"$t('wizard.joinButton')\"\r\n                     click-event=\"tojoin\"\r\n                     @tojoin=\"join\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 mt-1\">\r\n          <sprbutton :size=\"1\"\r\n                     :title=\"$t('wizard.noJoinButton')\"\r\n                     click-event=\"tologin\"\r\n                     @tologin=\"login\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 mt-1\">\r\n          <sprbutton :size=\"1\"\r\n                     :title=\"$t('wizard.memberAlready')\"\r\n                     click-event=\"tologin\"\r\n                     @tologin=\"login\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"common-elements\">\r\n      <a class=\"privacy-link link\" href=\"https://www.punainenristi.fi/tietosuoja\" target=\"_blank\">{{ $t('wizard.privacyPolicy') }}</a>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n\r\n  export default {\r\n    name: 'ThanksWizard',\r\n    pageName: 'signup-wizard-thankyou',\r\n    components: { sprbutton },\r\n    methods: {\r\n      join: function () {\r\n        this.$router.push({\r\n          name: 'join',\r\n          query: {\r\n            source: 'register'\r\n          }\r\n        })\r\n      },\r\n      login: function () {\r\n        sessionStorage.setItem('email', this.$store.state.wizardModel.email)\r\n        this.$router.push({\r\n          name: 'login',\r\n          query: {\r\n            message: 'registersuccess'\r\n          }\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .register-thanks {\r\n    box-sizing: border-box;\r\n    padding: 0 10px;\r\n    width: 100%;\r\n\r\n    min-height: calc(100vh - 200px);\r\n    padding-bottom: 25px;\r\n\r\n    background:$brand-back center center;\r\n    background-repeat: no-repeat;\r\n    background-size: contain cover;\r\n    text-align: center;\r\n\r\n    display: grid;\r\n    display: -ms-grid;\r\n    grid-template-columns: 1fr;\r\n\r\n    -ms-grid-columns: 1fr;\r\n    grid-template-rows: auto 40px 180px;\r\n    -ms-grid-rows: auto 40px 180px;\r\n\r\n    .next-button {\r\n      width: 250px;\r\n    }\r\n\r\n    .back-link {\r\n      padding: 0;\r\n      background: none;\r\n      border: none;\r\n      font-size: 15px;\r\n      text-transform: uppercase;\r\n      font-family: $font-bold;\r\n      letter-spacing: 1.25px;\r\n      color: white;\r\n      margin: 25px 0 15px 0;\r\n      display: inline-block;\r\n      cursor: pointer;\r\n      -webkit-touch-callout: none;\r\n      -webkit-user-select: none;\r\n      -khtml-user-select: none;\r\n      -moz-user-select: none;\r\n      -ms-user-select: none;\r\n      user-select: none;\r\n    }\r\n\r\n    .swapped-elements {\r\n      grid-column: 1;\r\n      grid-row: 1;\r\n      -ms-grid-column: 1;\r\n      -ms-grid-row: 1;\r\n    }\r\n\r\n    .common-elements {\r\n      grid-column: 1;\r\n      grid-row: 3;\r\n      -ms-grid-column: 1;\r\n      -ms-grid-row: 3;\r\n    }\r\n\r\n    .privacy-link {\r\n      color: $brand-grey5;\r\n      padding: 2px;\r\n      margin: 18px;\r\n      display: inline-block;\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Thanks.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Wizard-Thanks.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Wizard-Thanks.vue?vue&type=template&id=2243485f&scoped=true\"\nimport script from \"./Wizard-Thanks.vue?vue&type=script&lang=js\"\nexport * from \"./Wizard-Thanks.vue?vue&type=script&lang=js\"\nimport style0 from \"./Wizard-Thanks.vue?vue&type=style&index=0&id=2243485f&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2243485f\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.selectFrontPage,{tag:\"div\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container-fluid position-relative comp-front-anon\"},[_c('div',{staticClass:\"hero-image\"}),_c('div',{staticClass:\"container position-relative\"},[_c('div',{staticClass:\"row head-2 brand-white flex-middle\"},[_c('div',{staticClass:\"col-12 mx-auto text-center mt-2 mt-md-5\"},[_c('div',{staticClass:\"main-header\",attrs:{\"role\":\"heading\",\"aria-level\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.$t('frontPageRegistered.anonWelcome'))+\" \")])]),_c('div',{staticClass:\"col-12 mx-auto text-center\"},[_c('div',{staticClass:\"subheader\"},[_vm._v(\" \"+_vm._s(_vm.$t('frontPageRegistered.anonCallToAction'))+\" \")])])]),_c('div',{staticClass:\"row head-3\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('sprbutton',{staticClass:\"spr-shadow margintop20\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('frontPageRegistered.createProfile'),\"click-event\":\"to_wizard_start\"},on:{\"to_wizard_start\":_vm.toWizard}})],1)]),_c('div',{staticClass:\"row rise-block brand-red text-center\"},[_c('div',{staticClass:\"col col-12 col-sm-4 h6 py-4\"},[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'heart']}}),_c('span',{attrs:{\"role\":\"heading\",\"aria-level\":\"3\"}},[_vm._v(_vm._s(_vm.$t('frontPageRegistered.tellAboutYourselfTitle')))]),_c('p',[_vm._v(_vm._s(_vm.$t('frontPageRegistered.tellAboutYourselfText')))])],1),_c('div',{staticClass:\"col col-12 col-sm-4 h6 py-4\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"binoculars\"}}),_c('span',{attrs:{\"role\":\"heading\",\"aria-level\":\"3\"}},[_vm._v(_vm._s(_vm.$t('frontPageRegistered.findSomethingToDoTitle')))]),_c('p',[_vm._v(_vm._s(_vm.$t('frontPageRegistered.findSomethingToDoText')))])],1),_c('div',{staticClass:\"col col-12 col-sm-4 h6 py-4\"},[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'lightbulb']}}),_c('span',{attrs:{\"role\":\"heading\",\"aria-level\":\"4\"}},[_vm._v(_vm._s(_vm.$t('frontPageRegistered.makeEventsTitle')))]),_c('p',[_vm._v(_vm._s(_vm.$t('frontPageRegistered.makeEventsText')))])],1)]),_c('div',{staticClass:\"row justify-content-center\"},[_c('div',{staticClass:\"col-12 event-title\"},[_c('span',{staticClass:\"h4\",attrs:{\"role\":\"heading\",\"aria-level\":\"3\"}},[_vm._v(\" \"+_vm._s(_vm.$t('frontPageRegistered.events'))+\" \")])])]),_c('div',{staticClass:\"row align-items-center\"},[_c('div',{staticClass:\"btn h6 col-12 col-md-12\"},[_c('div',{staticClass:\"col-12\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width mb-2\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('frontPageRegistered.search'),\"click-event\":\"viewEventsWithAttribute\"},on:{\"viewEventsWithAttribute\":_vm.onViewAllEventsWithAttribute}})],1)])]),_c('div',{staticClass:\"row event-list\"},[(_vm.eventsLoading)?_c('div',{staticClass:\"brand-red text-center col-12 my-5\"},[_c('loading')],1):_vm._l((_vm.eventsToShow),function(sprevent){return _c('div',{key:sprevent.id,staticClass:\"event col-sm-12 col-md-6 col-lg-4\"},[_c('eventtile',{attrs:{\"sprevent\":sprevent}})],1)})],2),(!_vm.hasEvents && !_vm.eventsLoading)?_c('div',{staticClass:\"row no-events text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('span',[_vm._v(_vm._s(_vm.$t('frontPageRegistered.noEventsFound')))])])]):_vm._e(),(_vm.moreEventsToShow && !_vm.eventsLoading)?_c('div',{staticClass:\"row more-events\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('sprbutton',{staticClass:\"show-more\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('frontPageRegistered.showMoreEvents'),\"click-event\":\"showMore\"},on:{\"showMore\":_vm.onShowMoreEventsClick}})],1)]):_vm._e(),(_vm.hasEvents)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width mb-2\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('frontPageRegistered.allEvents'),\"click-event\":\"viewEvents\"},on:{\"viewEvents\":_vm.onViewAllEvents}})],1)]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"event-tile\",attrs:{\"title\":_vm.sprevent.name},on:{\"click\":_vm.onEventClicked}},[_c('earmark',{attrs:{\"visible\":_vm.showIfFull,\"text\":_vm.$t('eventPage.earmarkFull')}}),_c('earmark',{attrs:{\"visible\":_vm.showIfClosed,\"text\":_vm.$t('eventPage.earmarkClosed')}}),_c('div',{staticClass:\"img\",style:(_vm.eventimage)}),_c('div',{staticClass:\"event-content clearfix\"},[_c('div',{staticClass:\"times\"},[(_vm.sameDayEvent)?_c('div',[_c('span',[_vm._v(_vm._s(_vm.startDate)+\" \"),(!_vm.sprevent.isAllDay)?_c('span',[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.startingAt\"))+\" \"+_vm._s(_vm.startTime))]):_vm._e()])]):_c('div',[_c('span',[_vm._v(_vm._s(_vm.startDate)+\" - \"+_vm._s(_vm.endDate))])])]),_c('div',{staticClass:\"name\"},[_c('span',{staticClass:\"cap-event-label\"},[_vm._v(_vm._s(_vm.translation.name))]),_c('div',{staticClass:\"type\"},[_vm._v(\" \"+_vm._s(_vm.eventtype)+\" \")])]),_c('div',{staticClass:\"languages\"},[_vm._v(\" \"+_vm._s(_vm.languages)+\" \")]),_c('div',{staticClass:\"event-tile-footer\"},[_c('div',{staticClass:\"location\"},[(!_vm.sprevent.isOnline)?_c('span',{staticClass:\"smalltext\"},[_vm._v(_vm._s(_vm.translation.city)+_vm._s(_vm.postcode))]):_vm._e(),(_vm.sprevent.isOnline)?_c('span',{staticClass:\"smalltext online\"},[_vm._v(_vm._s(_vm.$t(\"eventPage.onlineTag\")))]):_vm._e()]),_c('div',{staticClass:\"category\"},[_c('span',{staticClass:\"smalltext\"},[_vm._v(_vm._s(_vm.eventcategory))])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\r\n  methods: {\r\n    isoToId: function (iso) {\r\n      var lang = _.find(this.$store.state.allLanguages, function (x) {\r\n        return x.isoCode === iso\r\n      })\r\n\r\n      if (lang) {\r\n        return lang.id\r\n      }\r\n\r\n      return null\r\n    },\r\n    eventTranslation: function (model) {\r\n      if (model && model.translations && model.translations.length !== 0) {\r\n        const code = this.isoToId(this.$store.state.language)\r\n        const lang = _.find(model.translations, function (x) {\r\n          return x.languageId === code\r\n        })\r\n        if (lang) {\r\n          return lang\r\n        }\r\n\r\n        // fall back to finnish, or if finnish was already searhed for, swedish\r\n        const fallbackCode = code === 54 ? 200 : 54\r\n        const fallbackLang = _.find(model.translations, function (y) {\r\n          return y.languageId === fallbackCode\r\n        })\r\n        if (fallbackLang) {\r\n          return fallbackLang\r\n        }\r\n\r\n        // just pick whatever language we can find\r\n        return model.translations[0]\r\n      }\r\n\r\n      return {}\r\n    }\r\n  }\r\n}\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.visible)?_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"triangle\"},[_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.text))])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"visible\" class=\"container\">\r\n    <div class=\"triangle\">\r\n      <span class=\"text\">{{ text }}</span>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'EarMark',\r\n    props: {\r\n      visible: {\r\n        type: Boolean,\r\n        required: true,\r\n        default: false\r\n      },\r\n      text: {\r\n        type: String,\r\n        required: true,\r\n        default: ''\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import \"../../../assets/scss/_variables.scss\";\r\n\r\n.container {\r\n  position: absolute;\r\n  width: unset;\r\n  top: 18px;\r\n  left: 33px;\r\n  transform: translate(-50%, -50%) rotate(-45deg);\r\n}\r\n.triangle {\r\n  position: relative;\r\n  width: 0px;\r\n  height: 0px;\r\n  border-left: 50px solid transparent;\r\n  border-right: 50px solid transparent;\r\n  border-bottom: 50px solid #000000;\r\n  opacity: 0.8;\r\n  pointer-events: none;\r\n}\r\n.text {\r\n  position: absolute;\r\n  transform: translate(-50%, -50%) translateY(35px);\r\n  color: white;\r\n  font-weight: 600;\r\n  position: absolute;\r\n  z-index: 1;\r\n}\r\n</style>\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EarMark.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EarMark.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EarMark.vue?vue&type=template&id=d48530a2&scoped=true\"\nimport script from \"./EarMark.vue?vue&type=script&lang=ts\"\nexport * from \"./EarMark.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EarMark.vue?vue&type=style&index=0&id=d48530a2&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"d48530a2\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"event-tile\" :title=\"sprevent.name\" @click=\"onEventClicked\">\r\n    <earmark :visible=\"showIfFull\" :text=\"$t('eventPage.earmarkFull')\"></earmark>\r\n    <earmark :visible=\"showIfClosed\" :text=\"$t('eventPage.earmarkClosed')\"></earmark>\r\n    <div class=\"img\" :style=\"eventimage\" />\r\n    <div class=\"event-content clearfix\">\r\n      <div class=\"times\">\r\n        <div v-if=\"sameDayEvent\">\r\n          <span>{{ startDate }}\r\n            <span v-if=\"!sprevent.isAllDay\">\r\n              {{ $t(\"eventPage.startingAt\") }} {{ startTime }}</span>\r\n          </span>\r\n        </div>\r\n        <div v-else>\r\n          <span>{{ startDate }} - {{ endDate }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"name\">\r\n        <span class=\"cap-event-label\">{{ translation.name }}</span>\r\n        <div class=\"type\">\r\n          {{ eventtype }}\r\n        </div>\r\n      </div>\r\n      <div class=\"languages\">\r\n        {{ languages }}\r\n      </div>\r\n      <div class=\"event-tile-footer\">\r\n        <div class=\"location\">\r\n          <span v-if=\"!sprevent.isOnline\" class=\"smalltext\">{{ translation.city }}{{ postcode }}</span>\r\n          <span v-if=\"sprevent.isOnline\" class=\"smalltext online\">{{\r\n            $t(\"eventPage.onlineTag\")\r\n          }}</span>\r\n        </div>\r\n        <div class=\"category\">\r\n          <span class=\"smalltext\">{{ eventcategory }}</span>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import eventhelper from '../../mixins/event.js'\r\n  import earmark from '../common/Warning/EarMark.vue'\r\n  import moment from 'moment'\r\n\r\n  export default {\r\n    name: 'EventTile',\r\n    components: { earmark },\r\n    mixins: [enumhelper, eventhelper],\r\n    props: {\r\n      sprevent: {\r\n        type: Object,\r\n        default () {\r\n          return {}\r\n        }\r\n      }\r\n    },\r\n    computed: {\r\n      showIfFull () {\r\n        if (!this.sprevent) return false\r\n        return this.sprevent.isFull && !this.sprevent.isClosed\r\n      },\r\n      showIfClosed () {\r\n        if (!this.sprevent) return false\r\n        return this.sprevent.isClosed\r\n      },\r\n      languages () {\r\n        return this.getLanguagesMaskTranslation(this.sprevent.languages)\r\n      },\r\n      translation: function () {\r\n        return this.eventTranslation(this.sprevent)\r\n      },\r\n      isRegistrationDeadlinePassed () {\r\n        return (\r\n          this.sprEvent.registrationDeadline &&\r\n          moment.utc(this.sprEvent.registrationDeadline) < moment()\r\n        )\r\n      },\r\n      eventimage () {\r\n        const src =\r\n          this.sprevent.imageThumb && this.sprevent.imageThumb.length\r\n            ? this.sprevent.imageThumb\r\n            : this.$store.state.eventDefault.thumb\r\n\r\n        return `background-image: url(${src});`\r\n      },\r\n      eventtype () {\r\n        return this.getEventTypesMaskTranslation(this.sprevent.type)\r\n      },\r\n      eventcategory () {\r\n        return this.getInvolvedEventCategoriesTranslation(this.sprevent.category)\r\n      },\r\n      sameDayEvent () {\r\n        const evS = this.sprevent.startTime\r\n        const evE = this.sprevent.endTime\r\n        return evS.day === evE.day && evS.month === evE.month && evS.year === evE.year\r\n      },\r\n      startDate () {\r\n        const ev = this.sprevent.startTime\r\n        return `${ev.day}.${ev.month}.${ev.year}`\r\n      },\r\n      startTime () {\r\n        const ev = this.sprevent.startTime\r\n        return `${this.formatTime(ev.hour)}:${this.formatTime(ev.minute)}`\r\n      },\r\n      endDate () {\r\n        const ev = this.sprevent.endTime\r\n        return `${ev.day}.${ev.month}.${ev.year}`\r\n      },\r\n      postcode () {\r\n        return this.translation.city &&\r\n          this.translation.city.length > 0 &&\r\n          this.sprevent.zipCode &&\r\n          this.sprevent.zipCode.length > 0\r\n          ? `, ${this.sprevent.zipCode}`\r\n          : this.sprevent.zipCode\r\n      }\r\n    },\r\n    methods: {\r\n      formatTime (time) {\r\n        if (Number(time) > 9) return time\r\n\r\n        return `0${time}`\r\n      },\r\n      onEventClicked () {\r\n        this.$router.push(`/event/${this.sprevent.id}`)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n@import \"../../assets/scss/_variables.scss\";\r\n\r\n.event-tile {\r\n  display: flex;\r\n  flex-direction: column;\r\n  justify-content: flex-start;\r\n  align-content: center;\r\n  background-color: $brand-white;\r\n  clear: both;\r\n  margin-bottom: 30px;\r\n  min-height: 340px;\r\n  cursor: pointer;\r\n\r\n  .img {\r\n    flex: 0 0 auto;\r\n    width: 100%;\r\n    height: 180px;\r\n    background-size: cover;\r\n    background-repeat: no-repeat;\r\n  }\r\n\r\n  .event-content {\r\n    display: flex;\r\n    flex-direction: column;\r\n    justify-content: flex-start;\r\n    align-content: center;\r\n    flex: 1 0 auto;\r\n    padding: 15px 5px 5px 5px;\r\n  }\r\n\r\n  .times {\r\n    flex: 1 0 auto;\r\n  }\r\n\r\n  .name {\r\n    flex: 1 0 auto;\r\n    margin: 10px;\r\n    min-height: 60px;\r\n    .cap-event-label {\r\n      text-transform: uppercase;\r\n      font-family: $font-bold;\r\n      font-size: 14px;\r\n      line-height: 19px;\r\n      letter-spacing: 0.3px;\r\n      color: $brand-black;\r\n      min-height: 15px;\r\n      color: $brand-red;\r\n    }\r\n    .type {\r\n      font-size: 15px;\r\n      margin-left: -10px;\r\n    }\r\n  }\r\n\r\n  .languages {\r\n    flex: 1 0 auto;\r\n    margin-bottom: 5px;\r\n  }\r\n\r\n  .event-tile-footer {\r\n    display: flex;\r\n    flex-direction: row;\r\n    justify-content: flex-start;\r\n    align-content: center;\r\n    flex: 1 0 auto;\r\n    width: 100%;\r\n\r\n    .category {\r\n      flex: 1 0 auto;\r\n      text-align: right;\r\n    }\r\n\r\n    .location {\r\n      flex: 1 0 auto;\r\n      .online {\r\n        color: $brand-red;\r\n        display: block;\r\n      }\r\n    }\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventTile.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventTile.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./EventTile.vue?vue&type=template&id=7ba6e5e0&scoped=true\"\nimport script from \"./EventTile.vue?vue&type=script&lang=js\"\nexport * from \"./EventTile.vue?vue&type=script&lang=js\"\nimport style0 from \"./EventTile.vue?vue&type=style&index=0&id=7ba6e5e0&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"7ba6e5e0\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:{ 'spr-searchbox': true, 'spr-roundbox-1': true }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchtext),expression:\"searchtext\"}],staticClass:\"form-control\",attrs:{\"placeholder\":_vm.placeholder,\"tabindex\":\"0\"},domProps:{\"value\":(_vm.searchtext)},on:{\"input\":function($event){if($event.target.composing)return;_vm.searchtext=$event.target.value}}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div :class=\"{ 'spr-searchbox': true, 'spr-roundbox-1': true }\">\r\n    <input v-model=\"searchtext\" class=\"form-control\" :placeholder=\"placeholder\" tabindex=\"0\">\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { debounce } from 'lodash'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    searchtext: string\r\n  }\r\n  export default Vue.extend({\r\n    name: 'SprSearchBox',\r\n    props: {\r\n      value: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      placeholder: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        searchtext: this.value\r\n      }\r\n    },\r\n    watch: {\r\n      value () {\r\n        this.searchtext = this.value\r\n      },\r\n      searchtext: debounce(function (val: any) {\r\n        //@ts-ignore\r\n        this.$emit('input', val.trim())\r\n      }, 500)\r\n\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .spr-searchbox {\r\n    background-color:$brand-white;\r\n    position: relative;\r\n    border: solid 1px $brand-grey3;\r\n\r\n    input\r\n    {\r\n      margin-right: 30px;\r\n      border-radius: 2rem;\r\n      &:focus-visible {\r\n        color: #495057;\r\n        border: solid 1px $brand-grey5;\r\n        outline: 0;\r\n        box-shadow: 0 0 0 0.2rem $brand-grey3;\r\n        transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n      }\r\n\r\n    }\r\n\r\n    svg {\r\n      position: absolute;\r\n      right: 15px;\r\n      top: 10px;\r\n    }\r\n\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSearchBox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSearchBox.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRSearchBox.vue?vue&type=template&id=e2e52d00&scoped=true\"\nimport script from \"./SPRSearchBox.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRSearchBox.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRSearchBox.vue?vue&type=style&index=0&id=e2e52d00&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"e2e52d00\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"container-fluid position-relative comp-front-anon\">\r\n    <div class=\"hero-image\" />\r\n    <div class=\"container position-relative\">\r\n      <div class=\"row head-2 brand-white flex-middle\">\r\n        <div class=\"col-12 mx-auto text-center mt-2 mt-md-5\">\r\n          <div class=\"main-header\" role=\"heading\" aria-level=\"2\">\r\n            {{ $t('frontPageRegistered.anonWelcome') }}\r\n          </div>\r\n        </div>\r\n        <div class=\"col-12 mx-auto text-center\">\r\n          <div class=\"subheader\">\r\n            {{ $t('frontPageRegistered.anonCallToAction') }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"row head-3\">\r\n        <div class=\"col-12 text-center\">\r\n          <sprbutton type=\"primary\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('frontPageRegistered.createProfile')\"\r\n                     class=\"spr-shadow margintop20\"\r\n                     click-event=\"to_wizard_start\"\r\n                     @to_wizard_start=\"toWizard\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row rise-block brand-red text-center\">\r\n        <!-- TODO: Localization -->\r\n        <!-- TODO: Change placeholder icons! -->\r\n\r\n        <div class=\"col col-12 col-sm-4 h6 py-4\">\r\n          <font-awesome-icon :icon=\"['far', 'heart']\" />\r\n          <span role=\"heading\" aria-level=\"3\">{{ $t('frontPageRegistered.tellAboutYourselfTitle') }}</span>\r\n          <p>{{ $t('frontPageRegistered.tellAboutYourselfText') }}</p>\r\n        </div>\r\n        <div class=\"col col-12 col-sm-4 h6 py-4\">\r\n          <font-awesome-icon icon=\"binoculars\" />\r\n          <span role=\"heading\" aria-level=\"3\">{{ $t('frontPageRegistered.findSomethingToDoTitle') }}</span>\r\n          <p>{{ $t('frontPageRegistered.findSomethingToDoText') }}</p>\r\n        </div>\r\n        <div class=\"col col-12 col-sm-4 h6 py-4\">\r\n          <font-awesome-icon :icon=\"['far', 'lightbulb']\" />\r\n          <span role=\"heading\" aria-level=\"4\">{{ $t('frontPageRegistered.makeEventsTitle') }}</span>\r\n          <p>{{ $t('frontPageRegistered.makeEventsText') }}</p>\r\n        </div>\r\n      </div>\r\n      <!-- Events -->\r\n      <div class=\"row justify-content-center\">\r\n        <div class=\"col-12 event-title\">\r\n          <span role=\"heading\" aria-level=\"3\" class=\"h4\">\r\n            {{ $t('frontPageRegistered.events') }}\r\n          </span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row align-items-center\">\r\n        <div class=\"btn h6\r\n                    col-12\r\n                    col-md-12\"\r\n        >\r\n          <div class=\"col-12\">\r\n            <sprbutton type=\"primary\"\r\n                       :size=\"1\"\r\n                       :title=\"$t('frontPageRegistered.search')\"\r\n                       class=\"spr-redborder button-width mb-2\"\r\n                       click-event=\"viewEventsWithAttribute\"\r\n                       @viewEventsWithAttribute=\"onViewAllEventsWithAttribute\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"row event-list\">\r\n        <div v-if=\"eventsLoading\" class=\"brand-red text-center col-12 my-5\">\r\n          <loading />\r\n        </div>\r\n        <div v-for=\"sprevent in eventsToShow\" v-else :key=\"sprevent.id\" class=\"event col-sm-12 col-md-6 col-lg-4\">\r\n          <eventtile :sprevent=\"sprevent\" />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"!hasEvents && !eventsLoading\" class=\"row no-events text-center\">\r\n        <div class=\"col-12\">\r\n          <span>{{ $t('frontPageRegistered.noEventsFound') }}</span>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"moreEventsToShow && !eventsLoading\" class=\"row more-events\">\r\n        <div class=\"col-12 text-center\">\r\n          <sprbutton type=\"primary\"\r\n                     :size=\"4\"\r\n                     :title=\"$t('frontPageRegistered.showMoreEvents')\"\r\n                     class=\"show-more\"\r\n                     click-event=\"showMore\"\r\n                     @showMore=\"onShowMoreEventsClick\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"hasEvents\" class=\"row\">\r\n        <div class=\"col-12 text-center\">\r\n          <sprbutton type=\"primary\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('frontPageRegistered.allEvents')\"\r\n                     class=\"spr-redborder button-width mb-2\"\r\n                     click-event=\"viewEvents\"\r\n                     @viewEvents=\"onViewAllEvents\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from './SPRButton.vue'\r\n  import eventtile from './events/EventTile.vue'\r\n  import searchbox from './SPRSearchBox.vue'\r\n  import loading from './SPRLoading.vue'\r\n  import events from '../mixins/event.js'\r\n\r\n  export default {\r\n    name: 'FrontAnon',\r\n    pageName: 'front-page-anonymous',\r\n    components: { sprbutton, eventtile, searchbox, loading },\r\n    mixins: [events],\r\n    data () {\r\n      return {\r\n        events: [],\r\n        eventsLoading: false,\r\n        eventFilter: {\r\n          search: '',\r\n          take: 6,\r\n          skip: 0\r\n        },\r\n        eventsToShowInitial: 6,\r\n        take: 60\r\n      }\r\n    },\r\n    computed: {\r\n      hasEvents () {\r\n        return this.events.length > 0\r\n      },\r\n      moreEventsToShow () {\r\n        return this.eventsToShow.length < this.filteredEvents.length\r\n      },\r\n      filteredEvents () {\r\n        if (this.eventFilter.search.length === 0) return this.events\r\n\r\n        var self = this\r\n        const filtered = _.filter(this.events, (evt) => {\r\n          return self.eventTranslation(evt).name.toLowerCase().indexOf(self.eventFilter.search.toLowerCase()) > -1 ||\r\n            evt.translations.some(elem => {\r\n              return elem.city.toLowerCase().indexOf(self.eventFilter.search.toLowerCase()) > -1\r\n            }) ||\r\n            evt.zipCode.indexOf(self.eventFilter.search) > -1\r\n        })\r\n        return filtered\r\n      },\r\n      eventsToShow () {\r\n        return _.take(this.filteredEvents, this.eventFilter.take)\r\n      }\r\n    },\r\n    created () {\r\n      this.getEvents()\r\n    },\r\n    methods: {\r\n      toWizard () {\r\n        this.$router.push({ name: 'wizard' })\r\n      },\r\n      getEvents () {\r\n        var self = this\r\n        self.eventsLoading = true\r\n\r\n        const url = this.$store.state.apiBases.eventservice + this.$store.state.apiEndpoints.eventallpublic[0]\r\n          .replace('{search}', '')\r\n          .replace('{locale}', '')\r\n          .replace('{district}', '')\r\n          .replace('{section}', '')\r\n          .replace('{eventcategory}', '')\r\n          .replace('{eventtype}', '')\r\n          .replace('{isonline}', '-1')\r\n          .replace('{take}', self.take)\r\n          .replace('{skip}', 0)\r\n\r\n        this.$http.get(url).then(resp => {\r\n          self.events = resp.body\r\n          self.eventsLoading = false\r\n        }, resp => {\r\n          self.eventsLoading = false\r\n        })\r\n      },\r\n      onViewAllEvents () {\r\n        this.$router.push('/publicevents')\r\n      },\r\n      onViewAllEventsWithAttribute () {\r\n        this.$router.push({ path: 'publicevents', query: { search: this.eventFilter.search } })\r\n        // this.$router.push('/publicevents')\r\n      },\r\n      onSearchChanged (text) {\r\n        this.eventFilter.search = text\r\n      },\r\n      onShowMoreEventsClick () {\r\n        this.eventFilter.take += this.eventsToShowInitial\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  $heroheight: 600px;\r\n  $herohover: 80px;\r\n  $hilightheight: 220px;\r\n\r\n  $head: $heroheight - $herohover;\r\n  $domain: $head / 4;\r\n  $header: $head / 2;\r\n  $button: $head / 4;\r\n\r\n  .comp-front-anon {\r\n    min-height: $heroheight;\r\n    .main-header {\r\n      font-family: \"Signa-Bold\", Sans-Serif;\r\n      font-size: 50px;\r\n      line-height: 60px;\r\n      color: $brand-white;\r\n      display: inline-block;\r\n\r\n      @media (max-width: $media-sm-max) {\r\n        font-size: 25px;\r\n        line-height: 35px;\r\n      }\r\n    }\r\n\r\n    .subheader {\r\n      font-size: 150%;\r\n      line-height: normal;\r\n\r\n      @media (max-width: $media-sm-max) {\r\n        font-size: 130%;\r\n      }\r\n    }\r\n\r\n    .hero-image {\r\n      position: absolute;\r\n      z-index: -1;\r\n      top: 0;\r\n      left: 0;\r\n      right: 0;\r\n      height: $heroheight;\r\n      background-image: url(../assets/img/vati-fp-hero-image.jpg);\r\n      background-repeat: no-repeat;\r\n      background-position: center center;\r\n    }\r\n\r\n    .rise-block {\r\n      background-color: $brand-white;\r\n      margin-bottom: 40px;\r\n      z-index: 1;\r\n    }\r\n\r\n    .head-1 {\r\n      height: $domain;\r\n    }\r\n\r\n    .head-2 {\r\n      height: $header;\r\n    }\r\n\r\n    .head-3 {\r\n      height: $button;\r\n    }\r\n\r\n    .h6 {\r\n      p {\r\n        margin-top: 20px;\r\n        display: block;\r\n      }\r\n    }\r\n\r\n    .event-title {\r\n      text-align: center;\r\n      color: $brand-red;\r\n    }\r\n\r\n    .event-filter {\r\n      text-align: center;\r\n      a {\r\n        color: $brand-grey8;\r\n        cursor: pointer;\r\n        padding: 10px 5px;\r\n        display: inline-block;\r\n        &.selected {\r\n          color: $brand-red;\r\n          font-weight: bold;\r\n        }\r\n      }\r\n    }\r\n\r\n    .event-search {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .event-actions {\r\n      margin-bottom: 15px;\r\n      .col-sm-12 {\r\n        margin-bottom: 10px;\r\n      }\r\n      .col-sm-12:last-child {\r\n        margin-bottom: 0;\r\n      }\r\n    }\r\n\r\n    .event-list {\r\n      .event {\r\n        background-color: $brand-grey1;\r\n      }\r\n    }\r\n\r\n    .no-events {\r\n      color: $brand-font;\r\n      margin-bottom: 15px;\r\n    }\r\n\r\n    .more-events {\r\n      margin-bottom: 30px;\r\n      .show-more {\r\n        background-color: $brand-red;\r\n        color: $brand-white;\r\n      }\r\n    }\r\n\r\n    .flex-middle {\r\n      display: flex;\r\n      align-items: center;\r\n    }\r\n\r\n    .margintop20 {\r\n      margin-top: 20px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FrontAnon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FrontAnon.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FrontAnon.vue?vue&type=template&id=56bf9c98&scoped=true\"\nimport script from \"./FrontAnon.vue?vue&type=script&lang=js\"\nexport * from \"./FrontAnon.vue?vue&type=script&lang=js\"\nimport style0 from \"./FrontAnon.vue?vue&type=style&index=0&id=56bf9c98&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"56bf9c98\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container comp-front-logged\"},[_vm._t(\"adhandler\"),_c('div',{staticClass:\"row\"},[_c('banner',{attrs:{\"disabled\":_vm.emailOptIn,\"banner-text\":_vm.$t('userAdmin.infoBanner')},on:{\"element-clicked\":_vm.handleElementClicked}}),_c('div',{staticClass:\"wrapper mx-auto my-5\"},[_c('sprportrait',{staticClass:\"portrait-size\",style:(_vm.portraitStyle),attrs:{\"completion\":_vm.completionPercentage}})],1)],1),_c('div',{staticClass:\"row text-center my-2\"},[_c('div',{staticClass:\"col col-12\"},[_c('span',{staticClass:\"h1\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.$t(\"frontPageRegistered.welcome\"))+\" \"+_vm._s(this.$store.state.profile.firstName)+\"!\")])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.completionPercentage < 100.0),expression:\"completionPercentage < 100.0\"}],staticClass:\"row text-center mb-5\"},[_c('div',{staticClass:\"col col-12 my-4\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('frontPageRegistered.updateProfile'),\"click-event\":\"update-clicked\"},on:{\"update-clicked\":_vm.updateButton}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"h4 brand-black\",attrs:{\"role\":\"heading\",\"aria-level\":\"3\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"frontPageRegistered.mySection\"))+\" \")])])]),_c('div',{staticClass:\"row feature\"},[(!_vm.sectionLoading && !_vm.inAnySection)?_c('p',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"frontPageRegistered.notInAnySection\"))+\" \")]):_vm._e(),(_vm.sectionLoading)?_c('div',{staticClass:\"brand-red centerloading\"},[_c('loading')],1):_vm._e(),(!_vm.sectionLoading && _vm.inAnySection)?_c('div',{staticClass:\"col-8\"},[_c('h3',[_vm._v(_vm._s(_vm.mySection.name))])]):_vm._e(),(!_vm.sectionLoading && _vm.inAnySection)?_c('div',{staticClass:\"col-4\"},[_c('p',[_vm._v(_vm._s(_vm.mySection.districtName))]),_c('div',[_vm._v(_vm._s(_vm.$t(\"userAdmin.sectionLanguage\"))+\" \"+_vm._s(_vm.sectionLanguage))])]):_vm._e(),(!_vm.sectionLoading && _vm.inAnySection)?_c('div',{staticClass:\"col-12 text-center\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('frontPageRegistered.viewSection'),\"click-event\":\"click\"},on:{\"click\":_vm.viewSection}})],1):_vm._e()]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"h4 brand-black\",attrs:{\"role\":\"heading\",\"aria-level\":\"3\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"frontPageRegistered.messages\"))+\" \"),(_vm.newNumber)?_c('span',[_vm._v(_vm._s(_vm.newNumber))]):_vm._e()])])]),_c('div',{staticClass:\"row feature messages\"},[_c('div',{staticClass:\"col col-12 col-md-8\"},[(_vm.messagesLoading)?_c('div',{staticClass:\"brand-red text-center centerloading\"},[_c('loading')],1):_vm._e(),(_vm.messages.length)?_c('div',{class:{ ismessagesloading: _vm.messagesLoading }},_vm._l((_vm.firstMessages),function(message,index){return _c('sprmessage',{key:_vm._uid + '_message_' + index,attrs:{\"message\":message},on:{\"messageClicked\":_vm.onMessageClicked}})}),1):_vm._e(),(!_vm.messages.length && !_vm.messagesLoading)?_c('div',{staticClass:\"nomessages\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"frontPageRegistered.noMessages\")))])]):_vm._e()]),_c('div',{staticClass:\"col-12 col-md-4\"},[_c('div',{staticClass:\"featurebuttonscontainer text-right\"},[_c('div',{staticClass:\"featurebuttons\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width my-2\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('frontPageRegistered.viewAllMessages'),\"click-event\":\"viewMessages\"},on:{\"viewMessages\":_vm.viewMessages}})],1)])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"h4 brand-black\",attrs:{\"role\":\"heading\",\"aria-level\":\"3\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"frontPageRegistered.groups\"))+\" \")])])]),_c('div',{staticClass:\"row feature\"},[_c('div',{staticClass:\"col-12 col-md-8\"},[(_vm.groupsLoading)?_c('div',{staticClass:\"brand-red centerloading\"},[_c('loading')],1):_vm._e(),(_vm.myGroups.length && !_vm.groupsLoading)?_c('div',[_c('grouplist',{attrs:{\"list\":_vm.myGroups}})],1):_vm._e(),(!_vm.myGroups.length && !_vm.groupsLoading)?_c('div',{staticClass:\"nomessages\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"frontPageRegistered.noGroups\")))])]):_vm._e()]),_c('div',{staticClass:\"col-12 col-md-4\"},[_c('div',{staticClass:\"featurebuttonscontainer text-right\"},[_c('div',{staticClass:\"featurebuttons\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('frontPageRegistered.viewGroups'),\"click-event\":\"viewGroups\"},on:{\"viewGroups\":_vm.viewGroups}}),_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('frontPageRegistered.addGroup'),\"click-event\":\"addGroup\"},on:{\"addGroup\":_vm.addGroup}})],1)])])]),_c('div',{staticClass:\"row feature justify-content-center\"},[_c('div',{staticClass:\"col-12 event-title\"},[_c('span',{staticClass:\"h4\",attrs:{\"role\":\"heading\",\"aria-level\":\"3\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"frontPageRegistered.events\"))+\" \")])]),_c('div',{staticClass:\"col-12 event-filter\"},[_c('a',{class:{ selected: _vm.selectedEventView == _vm.eventView.UPCOMING },attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.onEventsUpcomingClick}},[_vm._v(_vm._s(_vm.$t(\"frontPageRegistered.eventsUpcoming\")))]),_c('a',{class:{ selected: _vm.selectedEventView == _vm.eventView.RECOMMENDED },attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.onEventsRecommendedClick}},[_vm._v(_vm._s(_vm.$t(\"frontPageRegistered.eventsRecommended\")))]),_c('a',{class:{ selected: _vm.selectedEventView == _vm.eventView.POPULAR },attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.onEventsPopularClick}},[_vm._v(_vm._s(_vm.$t(\"frontPageRegistered.eventsPopular\")))]),_c('a',{class:{ selected: _vm.selectedEventView == _vm.eventView.VOLUNTEERTASKS },attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.onEventsVolunteerTasksClick}},[_vm._v(_vm._s(_vm.$t(\"frontPageRegistered.eventsVolunteerTasks\")))]),_c('a',{class:{ selected: _vm.selectedEventView == _vm.eventView.ORGANISER },attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.onEventsOrganiserClick}},[_vm._v(_vm._s(_vm.$t(\"frontPageRegistered.eventsOrganiser\")))]),_c('a',{class:{ selected: _vm.selectedEventView == _vm.eventView.PARTICIPATING },attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.onEventsParticipatingClick}},[_vm._v(_vm._s(_vm.$t(\"frontPageRegistered.eventsParticipating\")))])])]),_c('div',{staticClass:\"row align-items-center\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width mb-2\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('frontPageRegistered.search'),\"click-event\":\"viewEventsWithAttribute\"},on:{\"viewEventsWithAttribute\":_vm.onViewAllEventsWithAttribute}})],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedEventView == _vm.eventView.ORGANISER || _vm.selectedEventView == _vm.eventView.PARTICIPATING),expression:\"selectedEventView == eventView.ORGANISER || selectedEventView == eventView.PARTICIPATING\"}],staticClass:\"row justify-content-center\"},[_c('div',{staticClass:\"col-12 event-filter\"},[_c('a',{class:{ selected: _vm.includeEventsFromPast == true },attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.includeEventsFromPastClick}},[_vm._v(_vm._s(_vm.$t(\"frontPageRegistered.eventsInPast\")))]),_c('a',{class:{ selected: _vm.includeEventsFromPast == false },attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.excludeEventsFromPastClick}},[_vm._v(_vm._s(_vm.$t(\"frontPageRegistered.eventsUpcoming\")))])])]),_c('div',{staticClass:\"row event-list\"},[(_vm.eventsLoading)?_c('div',{staticClass:\"brand-red text-center col-12 centerloading\"},[_c('loading')],1):_vm._e(),_vm._l((_vm.eventsToShow),function(sprevent){return _c('div',{key:sprevent.id,staticClass:\"event col-sm-12 col-md-6 col-lg-4\"},[_c('eventtile',{attrs:{\"sprevent\":sprevent}})],1)})],2),(!_vm.hasEvents && !_vm.eventsLoading)?_c('div',{staticClass:\"row no-events text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"frontPageRegistered.noEventsFound\")))])])]):_vm._e(),(_vm.moreEventsToShow && !_vm.eventsLoading)?_c('div',{staticClass:\"row more-events\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('sprbutton',{staticClass:\"show-more\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('frontPageRegistered.showMoreEvents'),\"click-event\":\"showMore\"},on:{\"showMore\":_vm.onShowMoreEventsClick}})],1)]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},[(_vm.jwtToken.ActionGroupMembership || _vm.hasRole('Admin') || _vm.hasRole('Employee'))?_c('sprbutton',{staticClass:\"spr-redborder button-width mb-2\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('frontPageRegistered.addEvent'),\"click-event\":\"addEvent\"},on:{\"addEvent\":_vm.onAddEvent}}):_vm._e(),_c('sprbutton',{staticClass:\"spr-redborder button-width mb-2\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('frontPageRegistered.allEvents'),\"click-event\":\"viewEvents\"},on:{\"viewEvents\":_vm.onViewAllEvents}})],1)])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"spr-portrait\"},[_vm._l((_vm.sections),function(section){return _c('div',{key:section},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.completionRounded - (section * 25.0) > 0),expression:\"completionRounded - (section * 25.0) > 0\"}],class:'arc-' + section + '-' + _vm.completionRounded})])}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showNumericSafe),expression:\"showNumericSafe\"}],staticClass:\"numeric\"},[_c('div',[_vm._v(_vm._s(_vm.completion)+\"%\")])])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <!-- You have to give the element a size for it to function.-->\r\n  <!-- You need to wrap this in a div with overflow: hidden to work around a chrome bug -->\r\n  <div class=\"spr-portrait\">\r\n    <div v-for=\"section in sections\" :key=\"section\">\r\n      <div v-show=\"completionRounded - (section * 25.0) > 0\"\r\n           :class=\"'arc-' + section + '-' + completionRounded\"\r\n      />\r\n    </div>\r\n    <div v-show=\"showNumericSafe\" class=\"numeric\">\r\n      <div>{{ completion }}%</div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'Portrait',\r\n    props: {\r\n      completion: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      showNumeric: Boolean\r\n    },\r\n    data () {\r\n      return {\r\n        sections: [0, 1, 2, 3]\r\n      }\r\n    },\r\n    computed: {\r\n      completionRounded: function () {\r\n        /* Completion percentage is turned into degrees, then rounded up to next full ten.\r\n      classes are generated for 0, 10, 20 ... 350, 360 deg progress only. */\r\n        return Math.ceil((Number(this.completion * 3.6)) / 10) * 10\r\n      },\r\n      showNumericSafe: function () {\r\n        if (this.showNumeric) {\r\n          return true\r\n        }\r\n        return false\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  .spr-portrait {\r\n    border-radius: 50%;\r\n    position: relative;\r\n  }\r\n\r\n  .numeric {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    height: 100%;\r\n    width: 100%;\r\n  }\r\n\r\n  // Generates the progress indicator styles.\r\n  // TODO(JanneF): Convert to scss, less solution did not work as intended\r\n  // because vue does not allow dynamic less.\r\n  // .make-sections(3);\r\n  // .make-sections(@n, @i: 0) when (@i =< @n) {\r\n  //   .make-degs(360);\r\n  //   .make-degs(@m, @j: 0) when (@j <= @m) {\r\n  //     .arc-@{i}-@{j} {\r\n  //       overflow: hidden;\r\n  //       position: absolute;\r\n  //       top: -0.25em;\r\n  //       right: 50%;\r\n  //       bottom: 50%;\r\n  //       left: -0.25em;\r\n  //       transform-origin: 100% 100%;\r\n  //       transform: rotate(90deg + @i * 90deg) skewX(90deg - min(max(@j - (@i * 90deg), 0deg), 90deg));\r\n  //     }\r\n\r\n  //     .arc-@{i}-@{j}:before {\r\n  //       box-sizing: border-box;\r\n  //       display: block;\r\n  //       border: solid 0.25em red;\r\n  //       width: 200%;\r\n  //       height: 200%;\r\n  //       border-radius: 50%;\r\n  //       transform: skewX(min(max(@j - (@i * 90deg), 0deg), 90deg) - 90deg);\r\n  //       content: '';\r\n  //     }\r\n  //     .make-degs(@m, (@j + 10));\r\n  //   }\r\n  //   .make-sections(@n, (@i + 1));\r\n  // }\r\n\r\n// The code above needs to be converted to SCSS.\r\n// Or better yet maybe use css variables to display the border as a pie chart so we dont have to write out loads of classes.\r\n// Since the only use of this is hard coded to 90%. Just put in the classes for 90% for now.\r\n// Awaiting feedback from the client about whether this should just be removed.\r\n.arc-0-330 {\r\n    overflow: hidden;\r\n    position: absolute;\r\n    top: -.25em;\r\n    right: 50%;\r\n    bottom: 50%;\r\n    left: -.25em;\r\n    -webkit-transform-origin: 100% 100%;\r\n    transform-origin: 100% 100%;\r\n    -webkit-transform: rotate(90deg) skewX(0deg);\r\n    transform: rotate(90deg) skewX(0deg)\r\n}\r\n\r\n.arc-0-330:before {\r\n    box-sizing: border-box;\r\n    display: block;\r\n    border: .25em solid red;\r\n    width: 200%;\r\n    height: 200%;\r\n    border-radius: 50%;\r\n    -webkit-transform: skewX(0deg);\r\n    transform: skewX(0deg);\r\n    content: \"\"\r\n}\r\n\r\n.arc-1-330 {\r\n    overflow: hidden;\r\n    position: absolute;\r\n    top: -.25em;\r\n    right: 50%;\r\n    bottom: 50%;\r\n    left: -.25em;\r\n    -webkit-transform-origin: 100% 100%;\r\n    transform-origin: 100% 100%;\r\n    -webkit-transform: rotate(180deg) skewX(0deg);\r\n    transform: rotate(180deg) skewX(0deg)\r\n}\r\n\r\n.arc-1-330:before {\r\n    box-sizing: border-box;\r\n    display: block;\r\n    border: .25em solid red;\r\n    width: 200%;\r\n    height: 200%;\r\n    border-radius: 50%;\r\n    -webkit-transform: skewX(0deg);\r\n    transform: skewX(0deg);\r\n    content: \"\"\r\n}\r\n\r\n  .arc-2-330 {\r\n    overflow: hidden;\r\n    position: absolute;\r\n    top: -.25em;\r\n    right: 50%;\r\n    bottom: 50%;\r\n    left: -.25em;\r\n    -webkit-transform-origin: 100% 100%;\r\n    transform-origin: 100% 100%;\r\n    -webkit-transform: rotate(270deg) skewX(0deg);\r\n    transform: rotate(270deg) skewX(0deg)\r\n  }\r\n\r\n  .arc-2-330:before {\r\n    box-sizing: border-box;\r\n    display: block;\r\n    border: .25em solid red;\r\n    width: 200%;\r\n    height: 200%;\r\n    border-radius: 50%;\r\n    -webkit-transform: skewX(0deg);\r\n    transform: skewX(0deg);\r\n    content: \"\"\r\n  }\r\n\r\n  .arc-3-330 {\r\n    overflow: hidden;\r\n    position: absolute;\r\n    top: -.25em;\r\n    right: 50%;\r\n    bottom: 50%;\r\n    left: -.25em;\r\n    -webkit-transform-origin: 100% 100%;\r\n    transform-origin: 100% 100%;\r\n    -webkit-transform: rotate(1turn) skewX(30deg);\r\n    transform: rotate(1turn) skewX(30deg);\r\n  }\r\n\r\n  .arc-3-330:before {\r\n    box-sizing: border-box;\r\n    display: block;\r\n    border: .25em solid red;\r\n    width: 200%;\r\n    height: 200%;\r\n    border-radius: 50%;\r\n    -webkit-transform: skewX(-30deg);\r\n    transform: skewX(-30deg);\r\n    content: \"\";\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPortrait.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPortrait.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRPortrait.vue?vue&type=template&id=54689c6c&scoped=true\"\nimport script from \"./SPRPortrait.vue?vue&type=script&lang=js\"\nexport * from \"./SPRPortrait.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRPortrait.vue?vue&type=style&index=0&id=54689c6c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"54689c6c\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sprmessage\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"d-none d-sm-none d-md-none d-lg-block col-2\"},[_c('userprofileicon',{attrs:{\"profile\":typeof _vm.sender === 'object' ? _vm.sender : { }}})],1),_c('div',{staticClass:\"col-12 col-sm-5\"},[_c('div',{staticClass:\"sender\",attrs:{\"title\":_vm.getStatus(_vm.message.messageStatus)}},[(_vm.isGroupLink)?_c('div',{staticClass:\"subject\"},[_c('div',{staticClass:\"state\",class:_vm.stateClass}),_c('router-link',{attrs:{\"to\":{ name: 'groupnotes', params: { groupid: _vm.message.groupId.toString() }, query: { msg: _vm.message.id}}}},[_c('span',{staticClass:\"sentby cap-label\"},[_vm._v(_vm._s(_vm.messageSender))])])],1):_c('div',[_c('div',{staticClass:\"state\",class:_vm.stateClass}),_c('router-link',{attrs:{\"to\":`/messages/${_vm.message.messageType}/${_vm.message.id}`}},[_c('span',{staticClass:\"sentby cap-label\"},[_vm._v(_vm._s(_vm.messageSender))])])],1),_c('div',{staticClass:\"date\"},[_vm._v(\" \"+_vm._s(_vm.sentDate)+\" \")])])]),_c('div',{staticClass:\"col-12 col-sd-7 col-lg-5\"},[(_vm.isGroupLink)?_c('div',{staticClass:\"subject\"},[_c('router-link',{attrs:{\"to\":{ name: 'groupnotes', params: { groupid: _vm.message.groupId.toString() }, query: { msg: _vm.message.id}}}},[(_vm.isReply)?_c('span',[_vm._v(_vm._s(_vm.$t('groups.replyPrefix'))+\" \")]):_vm._e(),_vm._v(_vm._s(_vm.message.subject)+\" \")])],1):_c('div',{staticClass:\"subject\"},[_c('router-link',{attrs:{\"to\":`/messages/${_vm.message.messageType}/${_vm.message.id}`}},[_vm._v(\" \"+_vm._s(_vm.message.subject)+\" \")])],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"userprofileicon\",style:(_vm.style)},[(!_vm.profile.portrait)?_c('div',{staticClass:\"lettercontainer\"},[_c('div',{staticClass:\"lettertext\"},[_vm._v(\" \"+_vm._s(_vm.letter)+\" \")])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"userprofileicon\" :style=\"style\">\r\n    <div v-if=\"!profile.portrait\" class=\"lettercontainer\">\r\n      <div class=\"lettertext\">\r\n        {{ letter }}\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'Userprofileicon',\r\n    props: {\r\n      profile: {\r\n        type: Object,\r\n        default: null\r\n      }\r\n    },\r\n    computed: {\r\n      letter () {\r\n        if (this.profile && this.profile.firstName && this.profile.firstName.length > 0) {\r\n          return this.profile.firstName.substring(0, 1)\r\n        }\r\n        return '?'\r\n      },\r\n      style () {\r\n        if (!_.isEmpty(this.profile.portrait)) {\r\n          return 'background:url(' + this.profile.portrait + '); background-size: cover; background-position: center center no-repeat;'\r\n        }\r\n        return ''\r\n      }\r\n    }\r\n  }\r\n</script>\r\n<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n  .userprofileicon {\r\n    display: inline-block;\r\n    border: solid 2px $brand-grey3;\r\n    border-radius:50%;\r\n    width:50px;\r\n    height:50px;\r\n    margin:0 auto;\r\n    position: relative;\r\n\r\n    .lettercontainer {\r\n      display:flex;\r\n      height: 100%;\r\n      width: 100%;\r\n      justify-content: center;\r\n      align-items: center;\r\n      align-content: center;\r\n\r\n      .lettertext {\r\n        align-self: center;\r\n        font-weight: bold;\r\n        color:$brand-grey5;\r\n        font-size: 1.4em;\r\n        text-transform: uppercase;\r\n      }\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserProfileIcon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserProfileIcon.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UserProfileIcon.vue?vue&type=template&id=0d15da38\"\nimport script from \"./UserProfileIcon.vue?vue&type=script&lang=js\"\nexport * from \"./UserProfileIcon.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserProfileIcon.vue?vue&type=style&index=0&id=0d15da38&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"sprmessage\">\r\n    <div class=\"row\">\r\n      <div class=\"d-none d-sm-none d-md-none d-lg-block col-2\">\r\n        <userprofileicon :profile=\"typeof sender === 'object' ? sender : { }\" />\r\n      </div>\r\n      <div class=\"col-12 col-sm-5\">\r\n        <div class=\"sender\" :title=\"getStatus(message.messageStatus)\">\r\n          <!-- links to group messages go to the message thread instead of the plain message view-->\r\n          <div v-if=\"isGroupLink\" class=\"subject\">\r\n            <div class=\"state\" :class=\"stateClass\" />\r\n            <router-link :to=\"{ name: 'groupnotes', params: { groupid: message.groupId.toString() }, query: { msg: message.id}}\">\r\n              <span class=\"sentby cap-label\">{{ messageSender }}</span>\r\n            </router-link>\r\n          </div>\r\n          <!-- non-group messages get the plain old message view. Poor them. -->\r\n          <div v-else>\r\n            <div class=\"state\" :class=\"stateClass\" />\r\n            <router-link :to=\"`/messages/${message.messageType}/${message.id}`\">\r\n              <span class=\"sentby cap-label\">{{ messageSender }}</span>\r\n            </router-link>\r\n          </div>\r\n          <div class=\"date\">\r\n            {{ sentDate }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12 col-sd-7 col-lg-5\">\r\n        <div v-if=\"isGroupLink\" class=\"subject\">\r\n          <router-link :to=\"{ name: 'groupnotes', params: { groupid: message.groupId.toString() }, query: { msg: message.id}}\">\r\n            <span v-if=\"isReply\">{{ $t('groups.replyPrefix') }} </span>{{ message.subject }}\r\n          </router-link>\r\n        </div>\r\n        <div v-else class=\"subject\">\r\n          <router-link :to=\"`/messages/${message.messageType}/${message.id}`\">\r\n            {{ message.subject }}\r\n          </router-link>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n/*\r\nmessage schema:\r\n{\r\n  \"subject\":\"This is another message\",\r\n  \"content\":\"This is another message.\",\r\n  \"sent\":\"2017-12-27T10:13:08.4366667\",\r\n  \"messageStatus\":1,\r\n  \"messageType\":1,\r\n  \"sender\":\"\",\r\n  \"senderId\":1\r\n}\r\n*/\r\n  import userprofileicon from '../UserProfileIcon.vue'\r\n  import moment from 'moment'\r\n  export default {\r\n    name: 'SprMessage',\r\n    components: { userprofileicon },\r\n    props: {\r\n      message: {\r\n        type: Object,\r\n        required: true\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        sender: {\r\n        }\r\n      }\r\n    },\r\n    computed: {\r\n      isReply: function () {\r\n        return this.message && !!this.message.parentMessageId\r\n      },\r\n      isGroupLink: function () {\r\n        return this.message && !!this.message.groupId\r\n      },\r\n      messageSender () {\r\n        if (this.message.sender) {\r\n          return this.message.sender\r\n        } else {\r\n          return this.sender.firstName ? `${this.sender.firstName} ${this.sender.lastName}` : ''\r\n        }\r\n      },\r\n      sentDate () {\r\n        return moment.utc(this.message.sent).local().format('D.MM.YYYY HH:mm')\r\n      },\r\n      stateClass () {\r\n        switch (this.message.messageStatus) {\r\n        case 1:\r\n          return 'new'\r\n\r\n        case 2:\r\n          return 'marked-as-read'\r\n\r\n        case 3:\r\n          return 'hidden'\r\n\r\n        case 4:\r\n          return 'deleted'\r\n\r\n        default:\r\n          return 'unknown'\r\n        }\r\n      }\r\n    },\r\n    created () {\r\n      if (this.message && this.message.type === 1) {\r\n        var self = this\r\n        var uriProfile = (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.profile[0]).replace('{0}', this.message.senderId)\r\n        this.$http.get(uriProfile).then(s => {\r\n          self.sender = s.body\r\n        })\r\n      }\r\n    },\r\n    methods: {\r\n      getStatus (state) {\r\n        switch (state) {\r\n        case 1:\r\n          return this.$t('message.new')\r\n        case 2:\r\n          return this.$t('message.read')\r\n        default:\r\n          return ''\r\n        }\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .sprmessage {\r\n    display: flex;\r\n    flex-wrap:wrap;\r\n    padding: 5px;\r\n    &:nth-child(odd) {\r\n      background: rgba(0,0,0,0.03);\r\n    }\r\n\r\n    .sender {\r\n      .state {\r\n        width: 10px;\r\n        height: 10px;\r\n        border-radius: 100%;\r\n        margin-right: 5px;\r\n\r\n        &.new {\r\n          display: inline-block;\r\n          background-color:$brand-success;\r\n          border-color:$brand-success;\r\n        }\r\n        &.marked-as-read {\r\n          display: inline-block;\r\n          background-color:$brand-grey5;\r\n          border-color:$brand-grey5;\r\n        }\r\n      }\r\n\r\n      .sentby {\r\n        color:$brand-red;\r\n\r\n        &:hover {\r\n          background-color:auto;\r\n        }\r\n      }\r\n    }\r\n\r\n    .subject {\r\n      width: 100%;\r\n      white-space: nowrap;\r\n      overflow: hidden;\r\n      text-overflow: ellipsis;\r\n    }\r\n    .cap-label {\r\n    margin-left: -13px;\r\n    white-space: pre-wrap;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRMessage.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRMessage.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRMessage.vue?vue&type=template&id=97c59360&scoped=true\"\nimport script from \"./SPRMessage.vue?vue&type=script&lang=js\"\nexport * from \"./SPRMessage.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRMessage.vue?vue&type=style&index=0&id=97c59360&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"97c59360\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"list-group\"},[(_vm.list.length > 0)?_c('div',_vm._l((_vm.list),function(item,index){return _c('div',{key:item.id,staticClass:\"user-row\"},[_c('groupview',{key:_vm._uid + index + 'list',attrs:{\"group\":item,\"detailed\":_vm.detailed,\"has-controls\":true}})],1)}),0):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row groupview\",class:{ 'is-group-admin': _vm.isGroupAdmin }},[_c('div',{staticClass:\"col-md-7\"},[_c('div',{staticClass:\"name\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.viewGroup}},[_vm._v(_vm._s(_vm.group.name))])]),_c('br'),(_vm.isGroupAdmin)?_c('div',{staticClass:\"isgroupadmin\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"star\"}}),_vm._v(_vm._s(_vm.$t('groups.groupManager'))+\" \")],1):_vm._e(),_c('div',{staticClass:\"d-inline-block\"},[_vm._v(\" \"+_vm._s(_vm.group.totalMembers)+\" \"+_vm._s(_vm.$t('groups.totalMembers'))+\" \")]),(_vm.category)?_c('div',{staticClass:\"d-inline-block\"},[_vm._v(\"  || \"+_vm._s(_vm.category)+\" \")]):_vm._e()]),_c('div',{staticClass:\"col-md-5 text-right\"},[_c('div',{staticClass:\"grouptype\"},[_vm._v(\" \"+_vm._s(_vm.getGroupTypesTranslation(_vm.group.groupType))+\" \")]),_c('div',{staticClass:\"opento\"},[_vm._v(\" \"+_vm._s(_vm.openTo)+\" \")])]),(_vm.detailed)?_c('div',{staticClass:\"col-12\"},[_c('div',{directives:[{name:\"linkified\",rawName:\"v-linkified:options\",value:({ nl2br: true }),expression:\"{ nl2br: true }\",arg:\"options\"}],staticClass:\"description\"},[_vm._v(\" \"+_vm._s(_vm.group.description)+\" \")]),_c('div',{staticClass:\"smalltext\"},[_vm._v(\" \"+_vm._s(_vm.languages)+\" \")])]):_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"smalltext\"},[_vm._v(\" \"+_vm._s(_vm.languages)+\" \")])]),(_vm.hasControls)?_c('div',{staticClass:\"col-12\"},[(_vm.hasSectionName)?_c('div',{staticClass:\"smalltext\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.sectionCaption') + ': ' + _vm.group.sectionName)+\" \")]):_vm._e(),(_vm.hasOrganizerName)?_c('div',{staticClass:\"smalltext\"},[_c('span',[_vm._v(_vm._s(_vm.$t('groups.organizerCaption') + ': ')),_c('groupOrganizer',{attrs:{\"text-only\":true,\"value\":_vm.group.groupOrganizer}})],1)]):_vm._e(),(!_vm.applyPending)?_c('div',{staticClass:\"controls text-right\"},[(_vm.isGroupMember)?_c('div',{staticClass:\"joined\"},[_c('span',[_vm._v(_vm._s(_vm.$t('groups.isMember')))]),_c('font-awesome-icon',{attrs:{\"icon\":\"check\"}})],1):_vm._e(),(_vm.appliedToGroup === 1 || _vm.isMemberPendingByOwnRequest)?_c('div',{staticClass:\"joined\"},[_c('span',[_vm._v(_vm._s(_vm.$t('groups.hasApplied')))]),_c('font-awesome-icon',{attrs:{\"icon\":\"check\"}})],1):_vm._e(),(_vm.appliedToGroup !== 1 && !_vm.isMemberPendingByAdminRequest && !_vm.isMemberPendingByOwnRequest && !_vm.isGroupMember && _vm.group.groupType === 1)?_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('groups.requestJoinGroup'),\"click-event\":\"joinGroup\"},on:{\"joinGroup\":_vm.joinActionGroup}}):_vm._e(),(!_vm.isGroupMember && _vm.isMemberPendingByAdminRequest && _vm.group.groupType === 1)?_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('groups.joinGroup'),\"click-event\":\"acceptInvitation\"},on:{\"acceptInvitation\":_vm.acceptInvitation}}):_vm._e(),(!_vm.isGroupMember && _vm.group.groupType === 2)?_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('groups.joinGroup'),\"click-event\":\"joinGroup\"},on:{\"joinGroup\":_vm.joinStandardGroup}}):_vm._e()],1):_c('div',{staticClass:\"controls text-right\"},[_c('div',{staticClass:\"spinner brand-red\"},[_c('loading')],1)])]):_vm._e(),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"mobile-info text-right\"},[_c('div',{staticClass:\"mobile opento\"},[_vm._v(\" \"+_vm._s(_vm.openTo)+\" | \")]),_c('div',{staticClass:\"mobile grouptype\"},[_vm._v(\" \"+_vm._s(_vm.getGroupTypesTranslation(_vm.group.groupType))+\" \")])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"group-organizers-dropdown\"},[(_vm.textOnly)?_c('div',[(_vm.hint)?_c('label',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.hint))]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.groupOrganizer)+\" \")]):_c('div',[_c('sprsimpletext',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('invalidGroupOrganizer'),expression:\"'invalidGroupOrganizer'\"}],attrs:{\"hint\":_vm.hint,\"placeholder\":_vm.placeholder,\"required\":_vm.required,\"disabled\":_vm.disabled,\"name\":\"userAdmin.groupOrganizer\",\"is-valid\":_vm.isValid && !_vm.errors.has('userAdmin.groupOrganizer'),\"value\":_vm.groupOrganizer,\"list\":_vm.datalistid},on:{\"input\":_vm.onInput}}),_c('datalist',{staticClass:\"dl\",attrs:{\"id\":_vm.datalistid}},_vm._l((_vm.groupOrganizerList),function(item){return _c('option',{key:item.id,class:{ 'groupOrganizerType': item.groupOrganizerType }},[_vm._v(\" \"+_vm._s(item.name)+\" \")])}),0)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"group-organizers-dropdown\">\r\n    <div v-if=\"textOnly\">\r\n      <label v-if=\"hint\" class=\"cap-label\">{{ hint }}</label>\r\n      {{ groupOrganizer }}\r\n    </div>\r\n    <div v-else>\r\n      <sprsimpletext\r\n        v-validate=\"'invalidGroupOrganizer'\"\r\n        :hint=\"hint\"\r\n        :placeholder=\"placeholder\"\r\n        :required=\"required\"\r\n        :disabled=\"disabled\"\r\n        name=\"userAdmin.groupOrganizer\"\r\n        :is-valid=\"isValid && !errors.has('userAdmin.groupOrganizer')\"\r\n        :value=\"groupOrganizer\"\r\n        :list=\"datalistid\"\r\n        @input=\"onInput\"\r\n      />\r\n      <datalist :id=\"datalistid\" class=\"dl\">\r\n        <option v-for=\"item in groupOrganizerList\" :key=\"item.id\" :class=\"{ 'groupOrganizerType': item.groupOrganizerType }\">\r\n          {{ item.name }}\r\n        </option>\r\n      </datalist>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprsimpletext from './SPRSimpleText.vue'\r\n\r\n  export default {\r\n    name: 'GroupOrganizersDropdown',\r\n    components: { sprsimpletext },\r\n    props: {\r\n      hint: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      textOnly: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      value: {\r\n        type: Object,\r\n        default: () => {\r\n          return {\r\n            groupOrganizerType: -1,\r\n            organizerId: null\r\n          }\r\n        }\r\n      },\r\n      placeholder: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      required: Boolean,\r\n      disabled: Boolean,\r\n      isValid: Boolean\r\n    },\r\n    data () {\r\n      return {\r\n        groupOrganizer: ''\r\n      }\r\n    },\r\n    computed: {\r\n      datalistid () {\r\n        return `datalist_${this._uid}`\r\n      },\r\n      groupOrganizerList () {\r\n        // GroupOrganizerType: Institution = 0, District = 100, Section = 200, NotSet = -1\r\n        const groupOrganizerTypeNotSet = -1\r\n        const groupOrganizerTypeInstitution = 0\r\n        const groupOrganizerTypeDistrict = 100\r\n        const groupOrganizerTypeSection = 200\r\n        var list = []\r\n\r\n        list.push({\r\n          code: `${groupOrganizerTypeNotSet}:-1`,\r\n          name: '-',\r\n          groupOrganizer: {\r\n            groupOrganizerType: groupOrganizerTypeNotSet,\r\n            organizerId: null\r\n          }\r\n        })\r\n\r\n        if (!this.$store.state.institutions || !this.$store.state.institutions.length) return list\r\n\r\n        for (var institutionIndex = 0; institutionIndex < this.$store.state.institutions.length; institutionIndex++) {\r\n          var institution = this.$store.state.institutions[institutionIndex]\r\n\r\n          list.push({\r\n            code: `${groupOrganizerTypeInstitution}:${institution.id}`,\r\n            name: institution.name,\r\n            groupOrganizer: {\r\n              groupOrganizerType: groupOrganizerTypeInstitution,\r\n              organizerId: institution.id\r\n            }\r\n          })\r\n        }\r\n\r\n        if (!this.$store.state.districts || !this.$store.state.districts.length) return list\r\n\r\n        for (var districtIndex = 0; districtIndex < this.$store.state.districts.length; districtIndex++) {\r\n          var district = this.$store.state.districts[districtIndex]\r\n          var sections = _.sortBy(_.filter(this.$store.state.sections, (section) => {\r\n            // select in this district\r\n            return section.districtId === district.id\r\n          }), (section) => {\r\n            // sort by\r\n            return section.name\r\n          })\r\n\r\n          list.push({\r\n            code: `${groupOrganizerTypeDistrict}:${district.id}`,\r\n            name: district.name.toUpperCase(),\r\n            groupOrganizer: {\r\n              groupOrganizerType: groupOrganizerTypeDistrict,\r\n              organizerId: district.id\r\n            }\r\n          })\r\n\r\n          for (var j = 0; j < sections.length; j++) {\r\n            var section = sections[j]\r\n            list.push({\r\n              code: `${groupOrganizerTypeSection}:${section.id}`,\r\n              name: section.name,\r\n              groupOrganizer: {\r\n                groupOrganizerType: groupOrganizerTypeSection,\r\n                organizerId: section.id\r\n              }\r\n            })\r\n          }\r\n        }\r\n        return list\r\n      }\r\n    },\r\n    watch: {\r\n      value (newVal) {\r\n        this.setLocalVal(newVal)\r\n      }\r\n    },\r\n    created () {\r\n      var self = this\r\n      this.$validator.extend('invalidGroupOrganizer', {\r\n        getMessage (field, args) {\r\n          return 'GroupOrganizer Invalid'\r\n        },\r\n        validate (value, args) {\r\n          // check the value is one of the ones in the list\r\n          var item = _.find(self.groupOrganizerList, (groupOrganizer) => {\r\n            return groupOrganizer.name === value\r\n          })\r\n\r\n          if (!item) {\r\n            return false\r\n          }\r\n\r\n          return true\r\n        }\r\n      })\r\n    },\r\n    mounted () {\r\n      if (this.value) {\r\n        this.setLocalVal(this.value)\r\n      }\r\n    },\r\n    methods: {\r\n      setLocalVal (val) {\r\n        if (!val) {\r\n          this.groupOrganizer = null\r\n        } else {\r\n          var ds = _.find(this.groupOrganizerList, (groupOrganizer) => {\r\n            return groupOrganizer.code === `${val.groupOrganizerType}:${val.organizerId}`\r\n          })\r\n          if (ds) {\r\n            this.groupOrganizer = ds.name\r\n          } else {\r\n            this.groupOrganizer = null\r\n          }\r\n        }\r\n      },\r\n      onInput (groupOrganizerName) {\r\n        this.groupOrganizer = groupOrganizerName\r\n        var self = this\r\n        this.$validator.validate().then(result => {\r\n          if (result) {\r\n            var item = _.find(self.groupOrganizerList, (item) => {\r\n              return item.name.toLowerCase() === groupOrganizerName.toLowerCase()\r\n            })\r\n\r\n            if (!item) {\r\n              self.$emit('input', null)\r\n              return\r\n            }\r\n\r\n            var data = item.groupOrganizer\r\n\r\n            self.$emit('input', data)\r\n          }\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .group-organizers-dropdown {\r\n    width: 100%;\r\n    input::-webkit-calendar-picker-indicator {\r\n      display: none;\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRGroupOrganizersDropdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRGroupOrganizersDropdown.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRGroupOrganizersDropdown.vue?vue&type=template&id=03100f92\"\nimport script from \"./SPRGroupOrganizersDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./SPRGroupOrganizersDropdown.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRGroupOrganizersDropdown.vue?vue&type=style&index=0&id=03100f92&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"row groupview\" :class=\"{ 'is-group-admin': isGroupAdmin }\">\r\n    <div class=\"col-md-7\">\r\n      <div class=\"name\">\r\n        <a href=\"javascript:void(0)\" @click=\"viewGroup\">{{ group.name }}</a>\r\n      </div><br>\r\n      <div v-if=\"isGroupAdmin\" class=\"isgroupadmin\">\r\n        <font-awesome-icon icon=\"star\" />{{ $t('groups.groupManager') }}\r\n      </div>\r\n      <div class=\"d-inline-block\">\r\n        {{ group.totalMembers }} {{ $t('groups.totalMembers') }}\r\n      </div>\r\n      <div v-if=\"category\" class=\"d-inline-block\">\r\n        &nbsp;|| {{ category }}\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"col-md-5 text-right\">\r\n      <div class=\"grouptype\">\r\n        {{ getGroupTypesTranslation(group.groupType) }}\r\n      </div>\r\n      <div class=\"opento\">\r\n        {{ openTo }}\r\n      </div>\r\n    </div>\r\n    <div v-if=\"detailed\" class=\"col-12\">\r\n      <div v-linkified:options=\"{ nl2br: true }\" class=\"description\">\r\n        {{ group.description }}\r\n      </div>\r\n      <div class=\"smalltext\">\r\n        {{ languages }}\r\n      </div>\r\n    </div>\r\n    <div v-else class=\"col-12\">\r\n      <div class=\"smalltext\">\r\n        {{ languages }}\r\n      </div>\r\n    </div>\r\n    <div v-if=\"hasControls\" class=\"col-12\">\r\n      <div v-if=\"hasSectionName\" class=\"smalltext\">\r\n        {{ $t('groups.sectionCaption') + ': ' + group.sectionName }}\r\n      </div>\r\n      <div v-if=\"hasOrganizerName\" class=\"smalltext\">\r\n        <span>{{ $t('groups.organizerCaption') + ': ' }}<groupOrganizer :text-only=\"true\" :value=\"group.groupOrganizer\" /></span>\r\n      </div>\r\n      <div v-if=\"!applyPending\" class=\"controls text-right\">\r\n        <div v-if=\"isGroupMember\" class=\"joined\">\r\n          <span>{{ $t('groups.isMember') }}</span><font-awesome-icon icon=\"check\" />\r\n        </div>\r\n        <div v-if=\"appliedToGroup === 1 || isMemberPendingByOwnRequest\" class=\"joined\">\r\n          <span>{{ $t('groups.hasApplied') }}</span><font-awesome-icon icon=\"check\" />\r\n        </div>\r\n        <sprbutton v-if=\"appliedToGroup !== 1 && !isMemberPendingByAdminRequest && !isMemberPendingByOwnRequest && !isGroupMember && group.groupType === 1\" type=\"primary\"\r\n                   :size=\"1\"\r\n                   :title=\"$t('groups.requestJoinGroup')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"joinGroup\"\r\n                   @joinGroup=\"joinActionGroup\"\r\n        />\r\n        <sprbutton v-if=\"!isGroupMember && isMemberPendingByAdminRequest && group.groupType === 1\" type=\"primary\"\r\n                   :size=\"1\"\r\n                   :title=\"$t('groups.joinGroup')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"acceptInvitation\"\r\n                   @acceptInvitation=\"acceptInvitation\"\r\n        />\r\n        <sprbutton v-if=\"!isGroupMember && group.groupType === 2\" type=\"primary\"\r\n                   :size=\"1\"\r\n                   :title=\"$t('groups.joinGroup')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"joinGroup\"\r\n                   @joinGroup=\"joinStandardGroup\"\r\n        />\r\n      </div>\r\n      <div v-else class=\"controls text-right\">\r\n        <div class=\"spinner brand-red\">\r\n          <loading />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"col-12\">\r\n      <div class=\"mobile-info text-right\">\r\n        <div class=\"mobile opento\">\r\n          {{ openTo }} |\r\n        </div>\r\n        <div class=\"mobile grouptype\">\r\n          {{ getGroupTypesTranslation(group.groupType) }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import _ from 'lodash'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import groupOrganizer from '../SPRGroupOrganizersDropdown.vue'\r\n  import messages from '../../mixins/messages.js'\r\n\r\n  export interface GroupViewComponentData {\r\n    appliedToGroup: number,\r\n    applyPending: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'GroupView',\r\n    components: { sprbutton, loading, groupOrganizer },\r\n    mixins: [enumhelper, messages],\r\n    props: {\r\n      group: {\r\n        type: Object,\r\n        required: true\r\n      },\r\n      detailed: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      hasControls: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data: function () {\r\n      return {\r\n        appliedToGroup: 0,\r\n        applyPending: false\r\n      }\r\n    },\r\n    computed: {\r\n      category (): string {\r\n        return this.getEventCategoriesTranslation(this.group.category)\r\n      },\r\n      hasSectionName (): boolean {\r\n        // return this.group.sectionname\r\n        // disable for now\r\n        return false\r\n      },\r\n      hasOrganizerName (): boolean {\r\n        if (this.group.groupType === 2) {\r\n          return false\r\n        }\r\n        return this.group.groupOrganizer\r\n      },\r\n      isGroupMember (): boolean {\r\n        var profile = this.$store.state.profile\r\n        return _.includes(this.group.members, profile.profileId)\r\n      },\r\n      isGroupAdmin (): boolean {\r\n        var profile = this.$store.state.profile\r\n        if (this.group && this.group.members && profile != null) {\r\n          return _.find(this.group.members, (m) => {\r\n            return m.Id === profile.profileId && m.isAdmin\r\n          })\r\n        }\r\n        return false\r\n      },\r\n      languages (): string {\r\n        return this.getLanguagesMaskTranslation(this.group.languages)\r\n      },\r\n      openTo (): any {\r\n        return this.group.isAllLocations ? this.$t('groups.allLocations') : (this.group.sectionId > 0 ? this.$t('groups.sectionOnly') : this.$t('groups.districtOnly'))\r\n      },\r\n      isMemberPendingByAdminRequest (): boolean {\r\n        var self = this\r\n        return _.find(this.group.pendingMembers, function (m) {\r\n          return m.key === self.$store.state.profile.profileId && m.value\r\n        })\r\n      },\r\n      isMemberPendingByOwnRequest (): boolean {\r\n        var self = this\r\n        return _.find(this.group.pendingMembers, function (m) {\r\n          return m.key === self.$store.state.profile.profileId && !m.value\r\n        })\r\n      }\r\n    },\r\n    methods: {\r\n      viewGroup () {\r\n        if (this.isGroupMember) this.$router.push(`/groups/group/${this.group.id}`)\r\n        return false\r\n      },\r\n      joinActionGroup () {\r\n        if (!this.isGroupMember) {\r\n          var url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.grouprequestmembership[0]}`\r\n          const friendProfile = {\r\n            id: this.$store.state.profile.profileId,\r\n            name: this.$store.state.profile.firstName + ' ' + this.$store.state.profile.lastName,\r\n            sectionId: this.$store.state.profile.sectionId\r\n          }\r\n          const payload = {\r\n            payload1: this.group.id,\r\n            payload2: [friendProfile],\r\n            payload3: this.group.name\r\n          }\r\n          this.$http.put(url, payload).then((resp) => {\r\n            this.sendEmailAfterJoiningActionGroup()\r\n          })\r\n        }\r\n        return false\r\n      },\r\n      sendEmailAfterJoiningActionGroup () {\r\n        this.applyPending = true\r\n        var req = {\r\n          payload1: this.group.name,\r\n          payload2: this.group.id,\r\n          payload3: this.$store.state.profile.firstName + ' ' + this.$store.state.profile.lastName\r\n        }\r\n        var self = this\r\n        var uri = this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.applytoactiongroup[0]\r\n        this.$http.post(uri, req).then(s => {\r\n          self.applyPending = false\r\n          self.appliedToGroup = 1\r\n        }, f => {\r\n          self.applyPending = false\r\n          self.appliedToGroup = -1\r\n        })\r\n      },\r\n      joinStandardGroup () {\r\n        var self = this\r\n        if (!this.isGroupMember) {\r\n          var url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupjoin[0]}`\r\n          var messageDto = {\r\n            groupId: this.group.id,\r\n            profileId: this.$store.state.profile.profileId\r\n          }\r\n          this.$http.put(url, messageDto)\r\n            // add the new group to the token\r\n            //@ts-ignore\r\n            .then(() => this.getShortToken())\r\n            .then((resp) => {\r\n              self.group.members += self.$store.state.profile.profileId\r\n            })\r\n        }\r\n        return false\r\n      },\r\n      acceptInvitation () {\r\n        var self = this\r\n        var url = `${self.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupacceptinvitation[0]}`.replace('{0}', self.group.id)\r\n        this.$http.put(url, null).then((resp) => {\r\n          this.$router.push(`/groups/group/${this.group.id}`)\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .group-organizers-dropdown {\r\n    display: inline-block;\r\n  }\r\n  .groupview {\r\n    padding: 20px 10px;\r\n    .name {\r\n      color: #CC0000;\r\n      font-size: 13px;\r\n      font-family: $font-light;\r\n      font-weight: bold;\r\n      display: inline-block;\r\n      text-transform: uppercase;\r\n    }\r\n    .isgroupadmin {\r\n      display:inline-block;\r\n      color:$brand-success;\r\n      svg {\r\n        margin-right:5px;\r\n      }\r\n    }\r\n    .description {\r\n      margin: 10px 0;\r\n    }\r\n    .grouptype {\r\n      font-family: $font-bold;\r\n    }\r\n\r\n    .joined {\r\n      color:$brand-success;\r\n      margin-bottom: 10px;\r\n      svg {\r\n        margin-left:5px;\r\n      }\r\n    }\r\n\r\n    .mobile {\r\n      display: none;\r\n    }\r\n\r\n    .mobile-info {\r\n      margin-bottom: -15px;\r\n      margin-top: 10px;\r\n    }\r\n  }\r\n\r\n  @media (max-width: $media-sm-max) {\r\n    .groupview {\r\n\r\n      .grouptype, .opento {\r\n        display: none;\r\n      }\r\n\r\n      .mobile {\r\n        display: inline-block;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupView.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupView.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./GroupView.vue?vue&type=template&id=fbc8dfac\"\nimport script from \"./GroupView.vue?vue&type=script&lang=ts\"\nexport * from \"./GroupView.vue?vue&type=script&lang=ts\"\nimport style0 from \"./GroupView.vue?vue&type=style&index=0&id=fbc8dfac&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"list-group\">\r\n    <div v-if=\"list.length > 0\">\r\n      <div v-for=\"(item, index) in list\" :key=\"item.id\" class=\"user-row\">\r\n        <groupview :key=\"_uid + index + 'list'\" :group=\"item\" :detailed=\"detailed\" :has-controls=\"true\" />\r\n      </div>\r\n    </div>\r\n    <!--\r\n    <div v-if=\"actionGroups.length > 0\">\r\n      <div v-for=\"(item, index) in actionGroups\" :key=\"item.id\" class=\"user-row\">\r\n        <groupview :key=\"_uid + index + 'action'\" :group=\"item\" :detailed=\"detailed\" :has-controls=\"true\" />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"openGroups.length > 0\">\r\n      <div v-for=\"(item, index) in openGroups\" :key=\"item.id\" class=\"user-row\">\r\n        <groupview :key=\"_uid + index + 'open'\" :group=\"item\" :detailed=\"detailed\" :has-controls=\"true\" />\r\n      </div>\r\n    </div>\r\n    -->\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import groupview from './GroupView.vue'\r\n\r\n  export default {\r\n    name: 'GroupList',\r\n    components: { groupview },\r\n    props: {\r\n      list: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      detailed: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    computed: {\r\n      actionGroups: function () {\r\n        return this.filterByGroup(this.list, 'groupType', 1)\r\n      },\r\n      openGroups: function () {\r\n        return this.filterByGroup(this.list, 'groupType', 2)\r\n      }\r\n    },\r\n    methods: {\r\n      filterByGroup: function (set, parameter, val) {\r\n        return _.filter(set, function (x) {\r\n          return x[parameter] === val\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .list-group {\r\n    .user-row {\r\n      padding: 5px;\r\n\r\n      &:nth-child(odd) {\r\n        background: rgba(0,0,0,0.03);\r\n      }\r\n    }\r\n  }\r\n\r\n  @media (max-width: $media-sm-max) {\r\n    .list-group {\r\n      margin: 0 -15px;\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./GroupList.vue?vue&type=template&id=2232a938\"\nimport script from \"./GroupList.vue?vue&type=script&lang=js\"\nexport * from \"./GroupList.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupList.vue?vue&type=style&index=0&id=2232a938&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"column col-md-2 col-sm-12 event-name\"},[_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(_vm._s(_vm.sprevent.title))])]),_c('div',{staticClass:\"column col-md-2 col-sm-12 event-time\"},[_vm._v(\" \"+_vm._s(_vm.sprevent.date)),_c('span',{staticClass:\"time\"},[_vm._v(_vm._s(_vm.sprevent.time))])]),_c('div',{staticClass:\"column col-md-2 col-sm-12 event-place\"},[_vm._v(\" \"+_vm._s(_vm.sprevent.location)+\" \")]),_c('div',{staticClass:\"column col-md-2 col-sm-12 event-category\"},[_vm._v(\" \"+_vm._s(_vm.sprevent.category)+\" \")]),_c('div',{staticClass:\"column col-md-2 col-sm-12 event-type\"},[_vm._v(\" \"+_vm._s(_vm.sprevent.type)+\" \")]),_c('div',{staticClass:\"column col-md-2 col-sm-12 event-organizer\"},[_vm._v(\" \"+_vm._s(_vm.sprevent.organizer)+\" \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row\">\r\n    <div class=\"column col-md-2 col-sm-12 event-name\">\r\n      <a href=\"#\">{{ sprevent.title }}</a>\r\n    </div>\r\n    <div class=\"column col-md-2 col-sm-12 event-time\">\r\n      {{ sprevent.date }}<span class=\"time\">{{ sprevent.time }}</span>\r\n    </div>\r\n    <div class=\"column col-md-2 col-sm-12 event-place\">\r\n      {{ sprevent.location }}\r\n    </div>\r\n    <div class=\"column col-md-2 col-sm-12 event-category\">\r\n      {{ sprevent.category }}\r\n    </div>\r\n    <div class=\"column col-md-2 col-sm-12 event-type\">\r\n      {{ sprevent.type }}\r\n    </div>\r\n    <div class=\"column col-md-2 col-sm-12 event-organizer\">\r\n      {{ sprevent.organizer }}\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'Useradmineventview',\r\n    components: { },\r\n    props: {\r\n      sprevent: {\r\n        type: Object,\r\n        default: null\r\n      }\r\n    },\r\n    methods: {\r\n      activateGroupButton: function () {\r\n        console.log('activate button clicked')\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventView.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./EventView.vue?vue&type=template&id=94c6f996\"\nimport script from \"./EventView.vue?vue&type=script&lang=js\"\nexport * from \"./EventView.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"container comp-front-logged\">\r\n    <slot name=\"adhandler\" />\r\n    <!-- portrait -->\r\n    <div class=\"row\">\r\n      <banner :disabled=\"emailOptIn\"  :banner-text=\"$t('userAdmin.infoBanner')\" @element-clicked=\"handleElementClicked\" />\r\n      <div class=\"wrapper mx-auto my-5\">\r\n        <sprportrait\r\n          :style=\"portraitStyle\"\r\n          :completion=\"completionPercentage\"\r\n          class=\"portrait-size\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <!-- welcome header -->\r\n    <div class=\"row text-center my-2\">\r\n      <div class=\"col col-12\">\r\n        <span role=\"heading\" aria-level=\"1\" class=\"h1\">{{ $t(\"frontPageRegistered.welcome\") }}\r\n          {{ this.$store.state.profile.firstName }}!</span>\r\n      </div>\r\n    </div>\r\n    <!-- completion hint -->\r\n    <div v-show=\"completionPercentage < 100.0\" class=\"row text-center mb-5\">\r\n      <div class=\"col col-12 my-4\">\r\n        <sprbutton\r\n          type=\"primary\"\r\n          :size=\"1\"\r\n          :title=\"$t('frontPageRegistered.updateProfile')\"\r\n          class=\"spr-redborder button-width\"\r\n          click-event=\"update-clicked\"\r\n          @update-clicked=\"updateButton\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <!-- My section -->\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span role=\"heading\" aria-level=\"3\" class=\"h4 brand-black\">\r\n          {{ $t(\"frontPageRegistered.mySection\") }}\r\n        </span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row feature\">\r\n      <p v-if=\"!sectionLoading && !inAnySection\" class=\"col-12\">\r\n        {{ $t(\"frontPageRegistered.notInAnySection\") }}\r\n      </p>\r\n      <div v-if=\"sectionLoading\" class=\"brand-red centerloading\">\r\n        <loading />\r\n      </div>\r\n      <div v-if=\"!sectionLoading && inAnySection\" class=\"col-8\">\r\n        <h3>{{ mySection.name }}</h3>\r\n      </div>\r\n      <div v-if=\"!sectionLoading && inAnySection\" class=\"col-4\">\r\n        <p>{{ mySection.districtName }}</p>\r\n        <div>{{ $t(\"userAdmin.sectionLanguage\") }} {{ sectionLanguage }}</div>\r\n      </div>\r\n\r\n      <div v-if=\"!sectionLoading && inAnySection\" class=\"col-12 text-center\">\r\n        <sprbutton\r\n          type=\"primary\"\r\n          :size=\"1\"\r\n          :title=\"$t('frontPageRegistered.viewSection')\"\r\n          class=\"spr-redborder button-width\"\r\n          click-event=\"click\"\r\n          @click=\"viewSection\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <!-- messages sections -->\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span role=\"heading\" aria-level=\"3\" class=\"h4 brand-black\">\r\n          {{ $t(\"frontPageRegistered.messages\") }}\r\n          <span v-if=\"newNumber\">{{ newNumber }}</span>\r\n        </span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row feature messages\">\r\n      <div class=\"col col-12 col-md-8\">\r\n        <div v-if=\"messagesLoading\" class=\"brand-red text-center centerloading\">\r\n          <loading />\r\n        </div>\r\n        <div v-if=\"messages.length\" :class=\"{ ismessagesloading: messagesLoading }\">\r\n          <sprmessage\r\n            v-for=\"(message, index) in firstMessages\"\r\n            :key=\"_uid + '_message_' + index\"\r\n            :message=\"message\"\r\n            @messageClicked=\"onMessageClicked\"\r\n          />\r\n        </div>\r\n        <div v-if=\"!messages.length && !messagesLoading\" class=\"nomessages\">\r\n          <span>{{ $t(\"frontPageRegistered.noMessages\") }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12 col-md-4\">\r\n        <div class=\"featurebuttonscontainer text-right\">\r\n          <div class=\"featurebuttons\">\r\n            <sprbutton\r\n              type=\"primary\"\r\n              :size=\"1\"\r\n              :title=\"$t('frontPageRegistered.viewAllMessages')\"\r\n              class=\"spr-redborder button-width my-2\"\r\n              click-event=\"viewMessages\"\r\n              @viewMessages=\"viewMessages\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <!-- My groups, suggested groups -->\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span role=\"heading\" aria-level=\"3\" class=\"h4 brand-black\">\r\n          {{ $t(\"frontPageRegistered.groups\") }}\r\n        </span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row feature\">\r\n      <div class=\"col-12 col-md-8\">\r\n        <div v-if=\"groupsLoading\" class=\"brand-red centerloading\">\r\n          <loading />\r\n        </div>\r\n        <div v-if=\"myGroups.length && !groupsLoading\">\r\n          <grouplist :list=\"myGroups\" />\r\n        </div>\r\n        <div v-if=\"!myGroups.length && !groupsLoading\" class=\"nomessages\">\r\n          <span>{{ $t(\"frontPageRegistered.noGroups\") }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12 col-md-4\">\r\n        <div class=\"featurebuttonscontainer text-right\">\r\n          <div class=\"featurebuttons\">\r\n            <sprbutton\r\n              type=\"primary\"\r\n              :size=\"1\"\r\n              :title=\"$t('frontPageRegistered.viewGroups')\"\r\n              class=\"spr-redborder button-width\"\r\n              click-event=\"viewGroups\"\r\n              @viewGroups=\"viewGroups\"\r\n            />\r\n            <sprbutton\r\n              type=\"primary\"\r\n              :size=\"1\"\r\n              :title=\"$t('frontPageRegistered.addGroup')\"\r\n              class=\"spr-redborder button-width\"\r\n              click-event=\"addGroup\"\r\n              @addGroup=\"addGroup\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <!-- Events -->\r\n    <div class=\"row feature justify-content-center\">\r\n      <div class=\"col-12 event-title\">\r\n        <span role=\"heading\" aria-level=\"3\" class=\"h4\">\r\n          {{ $t(\"frontPageRegistered.events\") }}\r\n        </span>\r\n      </div>\r\n      <div class=\"col-12 event-filter\">\r\n        <a\r\n          href=\"javascript:void(0)\"\r\n          :class=\"{ selected: selectedEventView == eventView.UPCOMING }\"\r\n          @click=\"onEventsUpcomingClick\"\r\n        >{{ $t(\"frontPageRegistered.eventsUpcoming\") }}</a>\r\n        <a\r\n          href=\"javascript:void(0)\"\r\n          :class=\"{ selected: selectedEventView == eventView.RECOMMENDED }\"\r\n          @click=\"onEventsRecommendedClick\"\r\n        >{{ $t(\"frontPageRegistered.eventsRecommended\") }}</a>\r\n        <a\r\n          href=\"javascript:void(0)\"\r\n          :class=\"{ selected: selectedEventView == eventView.POPULAR }\"\r\n          @click=\"onEventsPopularClick\"\r\n        >{{ $t(\"frontPageRegistered.eventsPopular\") }}</a>\r\n        <a\r\n          href=\"javascript:void(0)\"\r\n          :class=\"{ selected: selectedEventView == eventView.VOLUNTEERTASKS }\"\r\n          @click=\"onEventsVolunteerTasksClick\"\r\n        >{{ $t(\"frontPageRegistered.eventsVolunteerTasks\") }}</a>\r\n        <a\r\n          href=\"javascript:void(0)\"\r\n          :class=\"{ selected: selectedEventView == eventView.ORGANISER }\"\r\n          @click=\"onEventsOrganiserClick\"\r\n        >{{ $t(\"frontPageRegistered.eventsOrganiser\") }}</a>\r\n        <a\r\n          href=\"javascript:void(0)\"\r\n          :class=\"{ selected: selectedEventView == eventView.PARTICIPATING }\"\r\n          @click=\"onEventsParticipatingClick\"\r\n        >{{ $t(\"frontPageRegistered.eventsParticipating\") }}</a>\r\n      </div>\r\n    </div>\r\n    <div class=\"row align-items-center\">\r\n      <div class=\"col-12 text-center\">\r\n        <sprbutton\r\n          type=\"primary\"\r\n          :size=\"1\"\r\n          :title=\"$t('frontPageRegistered.search')\"\r\n          class=\"spr-redborder button-width mb-2\"\r\n          click-event=\"viewEventsWithAttribute\"\r\n          @viewEventsWithAttribute=\"onViewAllEventsWithAttribute\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div\r\n      v-show=\"selectedEventView == eventView.ORGANISER || selectedEventView == eventView.PARTICIPATING\"\r\n      class=\"row justify-content-center\"\r\n    >\r\n      <div class=\"col-12 event-filter\">\r\n        <a\r\n          href=\"javascript:void(0)\"\r\n          :class=\"{ selected: includeEventsFromPast == true }\"\r\n          @click=\"includeEventsFromPastClick\"\r\n        >{{ $t(\"frontPageRegistered.eventsInPast\") }}</a>\r\n        <a\r\n          href=\"javascript:void(0)\"\r\n          :class=\"{ selected: includeEventsFromPast == false }\"\r\n          @click=\"excludeEventsFromPastClick\"\r\n        >{{ $t(\"frontPageRegistered.eventsUpcoming\") }}</a>\r\n      </div>\r\n    </div>\r\n    <div class=\"row event-list\">\r\n      <div v-if=\"eventsLoading\" class=\"brand-red text-center col-12 centerloading\">\r\n        <loading />\r\n      </div>\r\n      <div\r\n        v-for=\"sprevent in eventsToShow\"\r\n        :key=\"sprevent.id\"\r\n        class=\"event col-sm-12 col-md-6 col-lg-4\"\r\n      >\r\n        <eventtile :sprevent=\"sprevent\" />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"!hasEvents && !eventsLoading\" class=\"row no-events text-center\">\r\n      <div class=\"col-12\">\r\n        <span>{{ $t(\"frontPageRegistered.noEventsFound\") }}</span>\r\n      </div>\r\n    </div>\r\n    <div v-if=\"moreEventsToShow && !eventsLoading\" class=\"row more-events\">\r\n      <div class=\"col-12 text-center\">\r\n        <sprbutton\r\n          type=\"primary\"\r\n          :size=\"4\"\r\n          :title=\"$t('frontPageRegistered.showMoreEvents')\"\r\n          class=\"show-more\"\r\n          click-event=\"showMore\"\r\n          @showMore=\"onShowMoreEventsClick\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 text-center\">\r\n        <sprbutton\r\n          v-if=\"jwtToken.ActionGroupMembership || hasRole('Admin') || hasRole('Employee')\"\r\n          type=\"primary\"\r\n          :size=\"1\"\r\n          :title=\"$t('frontPageRegistered.addEvent')\"\r\n          class=\"spr-redborder button-width mb-2\"\r\n          click-event=\"addEvent\"\r\n          @addEvent=\"onAddEvent\"\r\n        />\r\n        <sprbutton\r\n          type=\"primary\"\r\n          :size=\"1\"\r\n          :title=\"$t('frontPageRegistered.allEvents')\"\r\n          class=\"spr-redborder button-width mb-2\"\r\n          click-event=\"viewEvents\"\r\n          @viewEvents=\"onViewAllEvents\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import _ from 'lodash'\r\n  import sprportrait from './SPRPortrait.vue'\r\n  import sprbutton from './SPRButton.vue'\r\n  import sprmessage from './messages/SPRMessage.vue'\r\n  import grouplist from './groups/GroupList.vue'\r\n  import eventtile from './events/EventTile.vue'\r\n  import messages from '../mixins/messages.js'\r\n  import events from '../mixins/event.js'\r\n  import loading from './SPRLoading.vue'\r\n  import anonPortrait from '../assets/img/anon-portrait.png'\r\n  import banner from './common/Banner/CommonBanner.vue'\r\nimport EventView from './useradmin/EventView.vue'\r\n\r\n  const EMAIL_FLAG = 2; // Email flag value\r\n\r\n  export interface TemplateComponentData {\r\n    completionPercentage: number\r\n    mySection: any\r\n    sectionLoading: boolean\r\n    inAnySection: boolean\r\n    messages: any[]\r\n    messagesLoading: boolean\r\n    myGroups: any[]\r\n    groupsLoading: boolean\r\n    events: any\r\n    eventsLoading: boolean\r\n    eventView: {\r\n      RECOMMENDED: number\r\n      POPULAR: number\r\n      VOLUNTEERTASKS: number\r\n      ORGANISER: number\r\n      PARTICIPATING: number\r\n      UPCOMING: number\r\n    }\r\n    selectedEventView: number\r\n    eventsToShowInitial: number\r\n    eventsToShowActual: number\r\n    searchtext: string\r\n    includeEventsFromPast: boolean\r\n    refreshMessagesInterval: any\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'FrontRegistered',\r\n    components: {\r\n      sprportrait,\r\n      sprbutton,\r\n      sprmessage,\r\n      grouplist,\r\n      eventtile,\r\n      loading,\r\n      banner\r\n    },\r\n    mixins: [messages, events],\r\n    data () {\r\n      return {\r\n        completionPercentage: 90,\r\n        mySection: {} as any,\r\n        sectionLoading: false,\r\n        inAnySection: false,\r\n        messages: [],\r\n        messagesLoading: false,\r\n        myGroups: [],\r\n        groupsLoading: false,\r\n        events: [],\r\n        eventsLoading: false,\r\n        eventView: {\r\n          RECOMMENDED: 1,\r\n          POPULAR: 3,\r\n          VOLUNTEERTASKS: 4,\r\n          ORGANISER: 5,\r\n          PARTICIPATING: 6,\r\n          UPCOMING: 7\r\n        },\r\n        selectedEventView: EventView.RECOMMENDED,\r\n        eventsToShowInitial: 6,\r\n        eventsToShowActual: 6,\r\n        searchtext: '',\r\n        includeEventsFromPast: false,\r\n        refreshMessagesInterval: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      emailOptIn (): boolean {\r\n        // show the banner only if Email was not yet set for this user.\r\n        return (this.$store.state.profile.preferredContactMethods & EMAIL_FLAG) === EMAIL_FLAG\r\n      },\r\n      portraitStyle(): any {\r\n        var port = this.$store.state.profile.portrait\r\n          ? this.$store.state.profile.portrait\r\n          : anonPortrait\r\n        return (\r\n          'background: url(' +\r\n          port +\r\n          '); background-size: cover; background-position: center center;'\r\n        )\r\n      },\r\n      hasEvents (): boolean {\r\n        return this.events.length > 0\r\n      },\r\n      moreEventsToShow (): boolean {\r\n        return this.eventsToShow.length < this.filteredEvents.length\r\n      },\r\n      firstMessages(): any[] {\r\n        if (this.messages.length === 0) {\r\n          return []\r\n        }\r\n\r\n        if (this.messages.length <= 5) {\r\n          return this.messages\r\n        }\r\n\r\n        return this.messages.slice(0, 5)\r\n      },\r\n      newNumber(): string | null {\r\n        if (this.messages.length > 5) {\r\n          return '(5 ' + this.$t('frontPageRegistered.latestMessages') + ')'\r\n        }\r\n\r\n        return null\r\n      },\r\n      filteredEvents (): any[] {\r\n        if (this.searchtext.length === 0) return this.events\r\n\r\n        var self = this\r\n        const filtered = _.filter(this.events, (evt) => {\r\n          return (\r\n            self\r\n              .eventTranslation(evt)\r\n              .name.toLowerCase()\r\n              .indexOf(self.searchtext.toLowerCase()) > -1 ||\r\n            evt.translations.some((elem) => {\r\n              return elem.city.toLowerCase().indexOf(self.searchtext.toLowerCase()) > -1\r\n            }) ||\r\n            evt.zipCode.indexOf(self.searchtext) > -1\r\n          )\r\n        })\r\n        return filtered\r\n      },\r\n      eventsToShow (): any[] {\r\n        return _.take(this.filteredEvents, this.eventsToShowActual)\r\n      },\r\n      sectionLanguage(): any { \r\n        \r\n        if (this.mySection.language === 0) {\r\n          return this.$t('languages.fi')\r\n        } else if (this.mySection.language === 1) {\r\n          return this.$t('languages.sv')\r\n        } else if (this.mySection.language === 2) {\r\n          return this.$t('userAdmin.bilingual')\r\n        }\r\n\r\n        return ''\r\n      }\r\n    },\r\n    created: function () {\r\n      this.messagesLoading = true\r\n      this.selectedEventView = sessionStorage.getItem('selectedEventView') ?? this.eventView.RECOMMENDED.toString()\r\n      this.getMyGroups()\r\n      this.getEvents()\r\n      this.getMySection()\r\n      this.loadUserMessages()\r\n\r\n      // Start message fetch loop every 3 mins\r\n      // this.refreshMessagesInterval = setInterval(function () {\r\n      //   this.loadUserMessages()\r\n      // }.bind(this), 180000)\r\n\r\n      // temporarily disabled loop\r\n      this.loadUserMessages()\r\n    },\r\n    beforeDestroy: function () {\r\n      clearInterval(this.refreshMessagesInterval)\r\n    },\r\n    methods: {\r\n      updateProfileOnBackend (profile: any) {\r\n        this.$store.commit('profileEdit', profile)\r\n        // @ts-ignore cannot find mixins\r\n        this.updateOwnProfile((response) => {\r\n          // @ts-ignore cannot find mixins\r\n          this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n        }, (fail) => {\r\n          // @ts-ignore cannot find mixins\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        })\r\n      },\r\n      onViewAllEventsWithAttribute () {\r\n        this.$router.push({ path: 'events', query: { search: this.searchtext } })\r\n      // this.$router.push('/publicevents')\r\n      },\r\n      handleElementClicked(element) {\r\n        const profile = this.$store.state.profile;\r\n        profile.preferredContactMethods |= EMAIL_FLAG; \r\n        this.updateProfileOnBackend (profile);\r\n        \r\n      },\r\n      loadUserMessages () {\r\n        if (this.$store.state.profile) {\r\n          this.messagesLoading = true\r\n          this.loadMessages().then(() => {\r\n            this.getMessages()\r\n          })\r\n        }\r\n      },\r\n      updateButton () {\r\n        this.$router.push('/profile')\r\n      },\r\n      eventSingup () {\r\n        console.log('event singup clicked')\r\n      },\r\n      organizeButton () {\r\n        this.$router.push('/groups/createaction')\r\n      },\r\n      onMessageClicked (message) {\r\n        this.$router.push(`/messages/${message.id}`)\r\n      },\r\n      viewSection () {\r\n        this.$router.push('/section')\r\n      },\r\n      viewMessages () {\r\n        this.$router.push('/messages')\r\n      },\r\n      viewGroups () {\r\n        this.$router.push('/groups')\r\n      },\r\n      addGroup () {\r\n        this.$router.push('/groups/create')\r\n      },\r\n      getMessages () {\r\n        this.messagesLoading = false\r\n        this.messages = this.$store.state.messages\r\n      },\r\n      getMySection () {\r\n        var self = this\r\n        self.sectionLoading = true\r\n        var url =\r\n          this.$store.state.apiBases.userservice +\r\n          this.$store.state.apiEndpoints.mysection[0]\r\n        this.$http.get(url).then(\r\n          (resp: any) => {\r\n            self.mySection = resp.body\r\n            self.inAnySection = true\r\n            self.sectionLoading = false\r\n          },\r\n          (resp: any) => {\r\n            self.sectionLoading = false\r\n          }\r\n        )\r\n      },\r\n      getMyGroups () {\r\n        var self = this\r\n        self.groupsLoading = true\r\n        var url = `${\r\n          this.$store.state.apiBases.userservice +\r\n          this.$store.state.apiEndpoints.groupmygroups[0]\r\n        }`\r\n        this.$http.get(url).then((resp: any) => {\r\n          self.myGroups = _.filter(resp.body, (g) => {\r\n            return g.isActive\r\n          })\r\n          self.groupsLoading = false\r\n        })\r\n      },\r\n      getEvents () {\r\n        var self = this\r\n        self.eventsLoading = true\r\n\r\n        let url = this.$store.state.apiBases.eventservice\r\n        sessionStorage.setItem('selectedEventView', this.selectedEventView)\r\n\r\n        switch (this.selectedEventView) {\r\n        case this.eventView.RECOMMENDED:\r\n          url += this.$store.state.apiEndpoints.eventrecommended[0]\r\n          break\r\n\r\n        case this.eventView.POPULAR:\r\n          url += this.$store.state.apiEndpoints.eventpopular[0]\r\n          break\r\n\r\n        case this.eventView.VOLUNTEERTASKS:\r\n          url += this.$store.state.apiEndpoints.eventvolunteertasks[0]\r\n          break\r\n\r\n        case this.eventView.ORGANISER:\r\n          url +=\r\n            this.$store.state.apiEndpoints.eventorganised[0] +\r\n            '/' +\r\n            this.includeEventsFromPast\r\n          break\r\n\r\n        case this.eventView.PARTICIPATING:\r\n          url += this.$store.state.apiEndpoints.eventparticipated[0] +\r\n            '/' +\r\n            this.includeEventsFromPast\r\n          break\r\n\r\n        case this.eventView.UPCOMING:\r\n        default:\r\n          url += this.$store.state.apiEndpoints.eventupcoming[0]\r\n          break\r\n        }\r\n\r\n        this.$http.get(url).then(\r\n          (resp: any) => {\r\n            self.events = resp.body\r\n            self.eventsLoading = false\r\n          },\r\n          (resp) => {\r\n            self.events = []\r\n            self.eventsLoading = false\r\n          }\r\n        )\r\n      },\r\n      onAddEvent () {\r\n        this.$router.push('/event')\r\n      },\r\n      onViewAllEvents () {\r\n        this.$router.push('/events')\r\n      },\r\n      onViewOrganisedEvents () {\r\n        this.$router.push('/events/organised')\r\n      },\r\n      onViewParticipatedEvents () {\r\n        this.$router.push('/events/participated')\r\n      },\r\n      onEventsUpcomingClick () {\r\n        this.selectedEventView = this.eventView.UPCOMING\r\n        this.eventsToShowActual = this.eventsToShowInitial\r\n        this.getEvents()\r\n      },\r\n      onEventsRecommendedClick () {\r\n        this.selectedEventView = this.eventView.RECOMMENDED\r\n        this.eventsToShowActual = this.eventsToShowInitial\r\n        this.getEvents()\r\n      },\r\n      onEventsPopularClick () {\r\n        this.selectedEventView = this.eventView.POPULAR\r\n        this.eventsToShowActual = this.eventsToShowInitial\r\n        this.getEvents()\r\n      },\r\n      onEventsVolunteerTasksClick () {\r\n        this.selectedEventView = this.eventView.VOLUNTEERTASKS\r\n        this.eventsToShowActual = this.eventsToShowInitial\r\n        this.getEvents()\r\n      },\r\n      onEventsOrganiserClick () {\r\n        this.selectedEventView = this.eventView.ORGANISER\r\n        this.eventsToShowActual = this.eventsToShowInitial\r\n        this.getEvents()\r\n      },\r\n      onEventsParticipatingClick () {\r\n        this.selectedEventView = this.eventView.PARTICIPATING\r\n        this.eventsToShowActual = this.eventsToShowInitial\r\n        this.getEvents()\r\n      },\r\n      includeEventsFromPastClick () {\r\n        this.includeEventsFromPast = true\r\n        this.eventsToShowActual = this.eventsToShowInitial\r\n        this.getEvents()\r\n      },\r\n      excludeEventsFromPastClick () {\r\n        this.includeEventsFromPast = false\r\n        this.eventsToShowActual = this.eventsToShowInitial\r\n        this.getEvents()\r\n      },\r\n      onSearchChanged (text) {\r\n        this.searchtext = text\r\n      },\r\n      onShowMoreEventsClick () {\r\n        this.eventsToShowActual += this.eventsToShowInitial\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n@import \"../assets/scss/_variables.scss\";\r\n\r\n.comp-front-logged {\r\n  min-height: calc(100vh - 200px);\r\n\r\n  .button-width {\r\n    width: 100%;\r\n    max-width: 300px;\r\n    direction: inline-block;\r\n  }\r\n\r\n  .portrait-size {\r\n    width: 100px;\r\n    height: 100px;\r\n  }\r\n\r\n  .wrapper {\r\n    padding: 1em;\r\n    overflow: hidden;\r\n  }\r\n\r\n  .feature {\r\n    background-color: $brand-white;\r\n    padding: 15px 0;\r\n    margin-bottom: 30px;\r\n    position: relative;\r\n  }\r\n\r\n  .featurebuttonscontainer {\r\n    display: flex;\r\n    height: 100%;\r\n    .featurebuttons {\r\n      margin: auto;\r\n      text-align: center;\r\n    }\r\n\r\n    .spr-button {\r\n      margin-bottom: 10px;\r\n    }\r\n  }\r\n\r\n  .event-title {\r\n    text-align: center;\r\n    color: $brand-red;\r\n  }\r\n\r\n  .event-filter {\r\n    text-align: center;\r\n\r\n    a {\r\n      color: $brand-grey8;\r\n      cursor: pointer;\r\n      padding: 10px 5px;\r\n      display: inline-block;\r\n\r\n      &.selected {\r\n        color: $brand-red;\r\n        font-weight: bold;\r\n      }\r\n    }\r\n  }\r\n\r\n  .event-search {\r\n    margin-bottom: 30px;\r\n  }\r\n\r\n  .event-list {\r\n    position: relative;\r\n    min-height: 50px;\r\n  }\r\n\r\n  .event-actions {\r\n    margin-bottom: 15px;\r\n    .col-sm-12 {\r\n      margin-bottom: 10px;\r\n    }\r\n\r\n    .col-sm-12:last-child {\r\n      margin-bottom: 0;\r\n    }\r\n  }\r\n\r\n  .event-list {\r\n    .event {\r\n      background-color: $brand-grey1;\r\n    }\r\n  }\r\n\r\n  .no-events {\r\n    color: $brand-font;\r\n    margin-bottom: 15px;\r\n  }\r\n\r\n  .more-events {\r\n    margin-bottom: 30px;\r\n\r\n    .show-more {\r\n      background-color: $brand-red;\r\n      color: $brand-white;\r\n    }\r\n  }\r\n\r\n  .messages {\r\n    .ismessagesloading {\r\n      opacity: 0.4;\r\n    }\r\n  }\r\n\r\n  .centerloading {\r\n    display: flex;\r\n    width: 100%;\r\n    height: 100%;\r\n    position: absolute;\r\n\r\n    span {\r\n      margin: auto;\r\n      justify-content: center;\r\n      align-items: center;\r\n      z-index: 999;\r\n    }\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FrontRegistered.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FrontRegistered.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FrontRegistered.vue?vue&type=template&id=c4959452&scoped=true\"\nimport script from \"./FrontRegistered.vue?vue&type=script&lang=ts\"\nexport * from \"./FrontRegistered.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FrontRegistered.vue?vue&type=style&index=0&id=c4959452&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"c4959452\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div :is=\"selectFrontPage\" />\r\n</template>\r\n\r\n<script>\r\n  import anonfront from './FrontAnon.vue'\r\n  import registeredfront from './FrontRegistered.vue'\r\n\r\n  export default {\r\n    name: 'Front',\r\n    components: {\r\n      anonfront, registeredfront\r\n    },\r\n    data () {\r\n      return {\r\n        frontPages: [anonfront, registeredfront]\r\n      }\r\n    },\r\n    computed: {\r\n      selectFrontPage: function () {\r\n        return this.frontPages[this.$store.state.profile ? 1 : 0]\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Front.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Front.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Front.vue?vue&type=template&id=755cdd83\"\nimport script from \"./Front.vue?vue&type=script&lang=js\"\nexport * from \"./Front.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comp-login\"},[_c('div',{staticClass:\"fill-height fill-width swapped-elements\"},[_c('div',{staticClass:\"row bg-top\"},[_c('banner',{attrs:{\"banner-text\":_vm.$t('login.loginBanner')}}),_c('div',{staticClass:\"login-header col-12 text-center\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('login.loginPageHeader')))])]),(_vm.validationErrors.length)?_c('div',{staticClass:\"col-12 text-center mb-4\"},[_c('sprvalidation',{attrs:{\"validation-errors\":_vm.validationErrors}})],1):_vm._e(),(_vm.successMessages.length)?_c('div',{staticClass:\"col-12 text-center mb-4\"},[_c('sprsuccess',{attrs:{\"messages\":_vm.successMessages}})],1):_vm._e(),_c('form',{staticClass:\"d-block col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"login-info d-inline-block\",attrs:{\"hint\":_vm.$t('login.emailField'),\"is-valid\":!_vm.errors.has('emailField'),\"data-vv-delay\":\"15000\",\"name\":\"emailField\",\"disabled\":_vm.pending,\"autocomplete\":\"username email\",\"dark\":\"\"},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('sprPassword',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"login-info d-inline-block\",attrs:{\"hint\":_vm.$t('login.passwordField'),\"is-valid\":!_vm.errors.has('passwordField'),\"name\":\"passwordField\",\"disabled\":_vm.pending,\"autocomplete\":\"current-password\",\"dark\":\"\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.pending && !_vm.success),expression:\"!pending && !success\"}],staticClass:\"col-12 text-center my-4\"},[_c('SPRButton',{staticClass:\"spr-shadow d-inline-block\",attrs:{\"size\":2,\"title\":_vm.$t('login.loginButton'),\"aria-label\":_vm.$t('login.loginButton'),\"tabindex\":0,\"click-event\":\"logIn\",\"type\":\"submit\"},on:{\"logIn\":_vm.loginClicked}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.pending || _vm.success),expression:\"pending || success\"}],staticClass:\"col-12 my-4\"},[_c('div',{staticClass:\"text-center pending\"},[_c('loading')],1)])]),(_vm.showCheckBoxes)?_c('div',{staticClass:\"text-center\"},[_c('div',{staticClass:\"grid-container\"},[_c('div',{staticClass:\"grid-item\"}),_c('div',{staticClass:\"grid-item text-center my-4 checkbox-container\"},[_vm._v(\" \"+_vm._s(_vm.$t('login.ethicsProtectionText'))+\" \")]),_c('div',{staticClass:\"grid-item\"}),_c('div',{staticClass:\"grid-item\"}),_c('div',{staticClass:\"grid-item checkboxes-container\"},[_c('checkbox',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"title\":_vm.$t('wizard.acknowledgeEthics'),\"allow-html\":true,\"white-warnings\":true,\"name\":\"ethicsCheckbox\",\"is-valid\":!_vm.errors.has('ethicsCheckbox') || !_vm.showCheckBoxes,\"has-error\":_vm.errors.has('ethicsCheckbox') && _vm.showCheckBoxes},model:{value:(_vm.codeOfEthics),callback:function ($$v) {_vm.codeOfEthics=$$v},expression:\"codeOfEthics\"}}),_c('checkbox',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"title\":_vm.$t('wizard.complyGDPR'),\"allow-html\":true,\"white-warnings\":true,\"name\":\"gdprCheckbox\",\"is-valid\":!_vm.errors.has('gdprCheckbox') && _vm.showCheckBoxes},model:{value:(_vm.dataProtection),callback:function ($$v) {_vm.dataProtection=$$v},expression:\"dataProtection\"}})],1),_c('div',{staticClass:\"grid-item\"})])]):_vm._e()])],1),_c('div',{staticClass:\"row bg-bottom\"},[_c('div',{staticClass:\"col-12 text-center my-5\"},[_c('router-link',{staticClass:\"login-link\",attrs:{\"to\":\"/restore\",\"tabindex\":\"0\"}},[_vm._v(\" \"+_vm._s(_vm.$t('login.forgotPassword'))+\" \")])],1),_c('div',{staticClass:\"col-12 text-center my-3\"},[_c('p'),_c('div',{staticClass:\"pending_dark\"},[_vm._v(\" \"+_vm._s(_vm.$t('login.noAccount'))),_c('br')]),_c('router-link',{staticClass:\"login-link\",attrs:{\"to\":{name: 'wizard'},\"tabindex\":\"0\"}},[_vm._v(\" \"+_vm._s(_vm.$t('login.register'))+\" \")]),_c('br'),_c('a',{staticClass:\"login-link\",on:{\"click\":_vm.onActiveDirectoryLogin}},[_vm._v(_vm._s(_vm.$t('login.adLoginLink')))])],1)])]),_c('div',{staticClass:\"common-elements\"},[_c('div',{staticClass:\"col-12 text-center mt-5 marginBottom25\"},[_c('a',{staticClass:\"login-link\",attrs:{\"href\":\"https://www.punainenristi.fi/tietosuoja\",\"target\":\"_blank\",\"tabindex\":\"0\"}},[_vm._v(_vm._s(_vm.$t('wizard.privacyPolicy')))])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"spr-password-container\"},[_c('div',{staticClass:\"inputcontainer\"},[_c('input',{class:{ 'spr-danger': !_vm.isValid && !_vm.dark, 'spr-danger-dark': !_vm.isValid && _vm.dark, 'spr-roundbox-1 spr-password': true },attrs:{\"type\":_vm.passwordType,\"required\":_vm.required,\"disabled\":_vm.disabled,\"placeholder\":_vm.hint},domProps:{\"value\":_vm.value},on:{\"input\":_vm.handleInput}}),_c('a',{staticClass:\"iconToggler\",on:{\"click\":_vm.toggleType}},[_c('font-awesome-icon',{attrs:{\"icon\":_vm.icon,\"aria-hidden\":\"true\"}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"spr-password-container\">\r\n    <div class=\"inputcontainer\">\r\n      <input :type=\"passwordType\"\r\n             :class=\"{ 'spr-danger': !isValid && !dark, 'spr-danger-dark': !isValid && dark, 'spr-roundbox-1 spr-password': true }\"\r\n             :required=\"required\"\r\n             :disabled=\"disabled\"\r\n             :placeholder=\"hint\"\r\n             :value=\"value\"\r\n             @input=\"handleInput\"\r\n      >\r\n      <a class=\"iconToggler\" @click=\"toggleType\">\r\n        <font-awesome-icon :icon=\"icon\" aria-hidden=\"true\" />\r\n      </a>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n      passwordType: string,\r\n      icon: string\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'SprPassword',\r\n    props: {\r\n      dark: Boolean,\r\n      hint: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      isValid: Boolean,\r\n      value: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      required: {\r\n        type: Boolean,\r\n        default: true\r\n      },\r\n      disabled: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        passwordType: 'password',\r\n        icon: 'eye'\r\n      }\r\n    },\r\n    computed: {\r\n      computedType (): string {\r\n        if (this.passwordType) {\r\n          return this.passwordType\r\n        }\r\n        return 'text'\r\n      }\r\n    },\r\n    methods: {\r\n      handleInput: function (e) {\r\n        this.$emit('input', e.target.value)\r\n      },\r\n      toggleType () {\r\n        if (this.passwordType === 'password') {\r\n          this.passwordType = 'text'\r\n          this.icon = 'eye-slash'\r\n          setTimeout(() => {\r\n            this.passwordType = 'password'\r\n            this.icon = 'eye'\r\n          }, 15000)\r\n        } else {\r\n          this.passwordType = 'password'\r\n          this.icon = 'eye'\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .spr-password-container {\r\n    height: 100%;\r\n\r\n    .inputcontainer {\r\n      position: relative;\r\n\r\n      .spr-password {\r\n        width: 100%;\r\n        padding: 12px 20px;\r\n        box-sizing: border-box;\r\n        font-family: \"Signa-Light\", Sans-Serif;\r\n        margin: 5px 3px;\r\n        border: 2px solid $brand-grey3;\r\n\r\n        &::placeholder {\r\n          color:$brand-grey6;\r\n        }\r\n\r\n        &:disabled {\r\n          cursor: not-allowed;\r\n        }\r\n\r\n        &:focus-visible {\r\n          color: #495057;\r\n          border: solid 2px $brand-grey5;\r\n          outline: 0;\r\n          box-shadow: 0 0 0 0.2rem rgba(204, 0, 0, 0.25);\r\n          transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n        }\r\n      }\r\n\r\n      .iconToggler {\r\n        position: absolute;\r\n        right: 10px;\r\n        top: 18px;\r\n\r\n        svg {\r\n          display: inline-block;\r\n          color: $brand-red;\r\n          z-index: 1000;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  .spr-danger {\r\n    border: 2px solid $brand-red !important;\r\n  }\r\n  .spr-danger-dark {\r\n    border: 2px solid $error-dark !important;\r\n  }\r\n  .center {\r\n    text-align: center;\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprPassword.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprPassword.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SprPassword.vue?vue&type=template&id=4e867576&scoped=true\"\nimport script from \"./SprPassword.vue?vue&type=script&lang=ts\"\nexport * from \"./SprPassword.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SprPassword.vue?vue&type=style&index=0&id=4e867576&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4e867576\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.messages.length > 0),expression:\"messages.length > 0\"}],staticClass:\"success-message\"},[_c('span',{staticClass:\"fa-stack fa-lg success-icon\"},[_c('font-awesome-icon',{staticClass:\"anne-sized\",attrs:{\"icon\":['far', 'smile'],\"aria-hidden\":\"true\"}})],1),_c('span',{staticClass:\"success-container fill-height\"},_vm._l((_vm.messages),function(msg,index){return _c('p',{key:index},[_vm._v(_vm._s(msg))])}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-show=\"messages.length > 0\" class=\"success-message\">\r\n    <span class=\"fa-stack fa-lg success-icon\">\r\n      <font-awesome-icon :icon=\"['far', 'smile']\" class=\"anne-sized\" aria-hidden=\"true\" />\r\n    </span>\r\n    <span class=\"success-container fill-height\">\r\n      <p v-for=\"(msg, index) in messages\" :key=\"index\">{{ msg }}</p>\r\n    </span>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'Sprsuccess',\r\n    props: {\r\n      messages: {\r\n        type: Array,\r\n        default () {\r\n          return []\r\n        }\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .success-message {\r\n    box-sizing: border-box;\r\n    color: $brand-success;\r\n    background: $brand-white;\r\n    border: solid 2px $brand-success;\r\n    display: inline-block;\r\n    position: relative;\r\n    align-content: center;\r\n    flex-flow: row;\r\n    border-radius: 5px;\r\n\r\n    max-width: 500px;\r\n    width: 100%;\r\n    padding: 10px 0;\r\n    margin: 0;\r\n\r\n    .success-icon {\r\n      position: absolute;\r\n      top: 0;\r\n      bottom: 0;\r\n      margin: auto;\r\n      margin-left: 20px;\r\n      font-size: 20px;\r\n      display: flex;\r\n      align-items: center;\r\n    }\r\n\r\n    .success-container {\r\n      display: block;\r\n      text-align: left;\r\n      padding-left: 80px;\r\n      padding-right: 10px;\r\n      padding-top: 10px;\r\n      padding-bottom: 10px;\r\n\r\n      p {\r\n        display: block;\r\n        margin: 0;\r\n      }\r\n    }\r\n\r\n    .anne-sized {\r\n      font-size: 150%;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSuccess.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSuccess.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRSuccess.vue?vue&type=template&id=111f24aa&scoped=true\"\nimport script from \"./SPRSuccess.vue?vue&type=script&lang=js\"\nexport * from \"./SPRSuccess.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRSuccess.vue?vue&type=style&index=0&id=111f24aa&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"111f24aa\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"comp-login\">\r\n    <div class=\"fill-height fill-width swapped-elements\">\r\n      <div class=\"row bg-top\">\r\n        <banner :banner-text=\"$t('login.loginBanner')\" />\r\n        <div class=\"login-header col-12 text-center\">\r\n          <h1>{{ $t('login.loginPageHeader') }}</h1>\r\n        </div>\r\n        <div v-if=\"validationErrors.length\" class=\"col-12 text-center mb-4\">\r\n          <sprvalidation :validation-errors=\"validationErrors\" />\r\n        </div>\r\n        <div v-if=\"successMessages.length\" class=\"col-12 text-center mb-4\">\r\n          <sprsuccess :messages=\"successMessages\" />\r\n        </div>\r\n        <!--\r\n          Intentionally not requiring this to be valid email address\r\n          1) Might have special logins in future\r\n          2) Reduced chance of people not being able to login due regression\r\n          3) No real benefit of validating\r\n      -->\r\n        <form class=\"d-block col-12\">\r\n          <div class=\"row\">\r\n            <div class=\"col-12 text-center\">\r\n              <sprinput v-model=\"email\"\r\n                        v-validate=\"'required'\"\r\n                        :hint=\"$t('login.emailField')\"\r\n                        class=\"login-info d-inline-block\"\r\n                        :is-valid=\"!errors.has('emailField')\"\r\n                        data-vv-delay=\"15000\"\r\n                        name=\"emailField\"\r\n                        :disabled=\"pending\" autocomplete=\"username email\"\r\n                        dark\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12 text-center\">\r\n              <sprPassword v-model=\"password\"\r\n                           v-validate=\"'required'\"\r\n                           :hint=\"$t('login.passwordField')\"\r\n                           class=\"login-info d-inline-block\"\r\n                           :is-valid=\"!errors.has('passwordField')\"\r\n                           name=\"passwordField\"\r\n                           :disabled=\"pending\" autocomplete=\"current-password\"\r\n                           dark\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"row\">\r\n            <div v-show=\"!pending && !success\" class=\"col-12 text-center my-4\">\r\n              <SPRButton :size=\"2\"\r\n                         :title=\"$t('login.loginButton')\"\r\n                         :aria-label=\"$t('login.loginButton')\"\r\n                         :tabindex=\"0\"\r\n                         click-event=\"logIn\"\r\n                         class=\"spr-shadow d-inline-block\"\r\n                         type=\"submit\"\r\n                         @logIn=\"loginClicked\"\r\n              />\r\n            </div>\r\n            <div v-show=\"pending || success\" class=\"col-12 my-4\">\r\n              <div class=\"text-center pending\">\r\n                <loading />\r\n              </div>\r\n            </div>\r\n          </div>\r\n          <div v-if=\"showCheckBoxes\" class=\"text-center\">\r\n            <div class=\"grid-container\">\r\n              <div class=\"grid-item\"></div>\r\n\r\n              <div class=\"grid-item text-center my-4 checkbox-container\">\r\n                {{ $t('login.ethicsProtectionText') }}\r\n              </div>\r\n\r\n              <div class=\"grid-item\"></div>\r\n\r\n              <div class=\"grid-item\"></div>\r\n\r\n              <div class=\"grid-item checkboxes-container\">\r\n                <checkbox v-model=\"codeOfEthics\"\r\n                          v-validate=\"'required'\"\r\n                          :title=\"$t('wizard.acknowledgeEthics')\"\r\n                          :allow-html=\"true\"\r\n                          :white-warnings=\"true\"\r\n                          name=\"ethicsCheckbox\"\r\n                          :is-valid=\"!errors.has('ethicsCheckbox') || !showCheckBoxes\"\r\n                          :has-error=\"errors.has('ethicsCheckbox') && showCheckBoxes\"\r\n                />\r\n                <checkbox v-model=\"dataProtection\"\r\n                          v-validate=\"'required'\"\r\n                          :title=\"$t('wizard.complyGDPR')\"\r\n                          :allow-html=\"true\"\r\n                          :white-warnings=\"true\"\r\n                          name=\"gdprCheckbox\"\r\n                          :is-valid=\"!errors.has('gdprCheckbox') && showCheckBoxes\"\r\n                />\r\n              </div>\r\n\r\n              <div class=\"grid-item\"></div>\r\n            </div>\r\n          </div>\r\n        </form>\r\n      </div>\r\n      <div class=\"row bg-bottom\">\r\n        <div class=\"col-12 text-center my-5\">\r\n          <router-link to=\"/restore\" class=\"login-link\" tabindex=\"0\">\r\n            {{ $t('login.forgotPassword') }}\r\n          </router-link>\r\n        </div>\r\n        <div class=\"col-12 text-center my-3\">\r\n          <p>\r\n          </p><div class=\"pending_dark\">\r\n            {{ $t('login.noAccount') }}<br>\r\n          </div>\r\n          <router-link :to=\"{name: 'wizard'}\" class=\"login-link\" tabindex=\"0\">\r\n            {{ $t('login.register') }}\r\n          </router-link>\r\n          <br>\r\n          <a class=\"login-link\" @click=\"onActiveDirectoryLogin\">{{ $t('login.adLoginLink') }}</a>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"common-elements\">\r\n      <div class=\"col-12 text-center mt-5 marginBottom25\">\r\n        <a href=\"https://www.punainenristi.fi/tietosuoja\" target=\"_blank\" class=\"login-link\" tabindex=\"0\">{{ $t('wizard.privacyPolicy') }}</a>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import SPRButton from './SPRButton.vue'\r\n  import sprinput from './SPRInput.vue'\r\n  import sprPassword from './SprPassword.vue'\r\n  import sprvalidation from './SPRValidationError.vue'\r\n  import sprsuccess from './SPRSuccess.vue'\r\n  import checkbox from './SPRSimpleCheckbox.vue'\r\n  import banner from './common/Banner/CommonBanner.vue'\r\n  import loading from './SPRLoading.vue'\r\n\r\n  export default {\r\n    name: 'Login',\r\n    pageName: 'login-page',\r\n    components: { SPRButton, sprinput, checkbox, sprPassword, sprvalidation, sprsuccess, loading, banner },\r\n    data () {\r\n      return {\r\n        email: '',\r\n        password: '',\r\n        username: '',\r\n        validatedFields: ['emailField',\r\n                          'passwordField',\r\n                          'ethicsCheckbox',\r\n                          'gdprCheckbox'],\r\n        failedLoginAttempt: 0,\r\n        pending: false,\r\n        cameFrom: null,\r\n        success: false,\r\n        successMessages: [],\r\n        adFailure: false,\r\n        codeOfEthics: null,\r\n        dataProtection: null,\r\n        showCheckBoxes: false\r\n      }\r\n    },\r\n    computed: {\r\n      bannerVisible (){\r\n        return this.$t('login.loginBanner')\r\n      },\r\n      validationErrors: function () {\r\n        var arr = []\r\n\r\n        if (this.adFailure) {\r\n          arr.push(['login.attempt', 'adfailed', ''])\r\n        }\r\n\r\n        if (!this.validatedFields) {\r\n          return arr\r\n        }\r\n\r\n        var self = this\r\n        this.validatedFields.forEach(function (fieldName) {\r\n          var err = _.find(self.errors.items, function (item) {\r\n            return item.field === fieldName\r\n          })\r\n          if (err != null) {\r\n            arr.push(['login.' + err.field, String(err.rule), String(err.msg)])\r\n          }\r\n        })\r\n        if (self.failedLoginAttempt === 1) {\r\n          arr.push(['login.attempt', 'unauthorized', ''])\r\n        }\r\n        if (self.failedLoginAttempt === 2) {\r\n          arr.push(['login.attempt', 'exception', ''])\r\n        }\r\n        return arr\r\n      }\r\n    },\r\n    watch: {\r\n      email: function (val) {\r\n        this.failedLoginAttempt = false\r\n      },\r\n      password: function (val) {\r\n        if (val !== '') {\r\n          this.failedLoginAttempt = false\r\n        }\r\n      },\r\n      codeOfEthics: function (val) {\r\n        // need to have false as null for required to work\r\n        if (val !== null) {\r\n          if (!val) {\r\n            this.codeOfEthics = null\r\n          }\r\n        }\r\n      },\r\n      dataProtection: function (val) {\r\n        if (val !== null) {\r\n          if (!val) {\r\n            this.dataProtection = null\r\n          }\r\n        }\r\n      }\r\n    },\r\n    mounted () {\r\n      if (this.$route.query) {\r\n        if (this.$route.query.token) {\r\n          this.handleToken(this.$route.query.token)\r\n        } else if (this.$route.query.message) {\r\n          this.cameFrom = this.$route.query.message.toLowerCase()\r\n          switch (this.cameFrom) {\r\n          case 'registersuccess':\r\n            this.$set(this.successMessages, 0, this.$t('login.registrationSuccessful'))\r\n            break\r\n          case 'join':\r\n            this.$set(this.successMessages, 0, this.$t('login.fromJoinHeader'))\r\n            this.$set(this.successMessages, 1, this.$t('login.fromJoin'))\r\n            break\r\n          case 'invoice':\r\n            this.$set(this.successMessages, 0, this.$t('login.fromInvoiceHeader'))\r\n            this.$set(this.successMessages, 1, this.$t('login.fromInvoice'))\r\n            break\r\n          case 'aderr':\r\n            this.adFailure = false\r\n          }\r\n        }\r\n\r\n        this.email = sessionStorage.getItem('email')\r\n      }\r\n    },\r\n    methods: {\r\n      loginClicked: function (value, event) {\r\n        var self = this\r\n        this.cameFrom = null\r\n        this.successMessages = []\r\n        event.preventDefault()\r\n        this.$validator.validateAll().then(function (valid) {\r\n          if (valid) {\r\n            self.pending = true\r\n            self.login()\r\n          } else {\r\n            return false\r\n          }\r\n        })\r\n      },\r\n      handleToken: function (authToken) {\r\n        this.pending = true\r\n        sessionStorage.setItem('authtoken', authToken)\r\n        this.$store.dispatch('setSessionJwtToken', authToken)\r\n        const sessionRedirect = sessionStorage.getItem('postloginredirect')\r\n        let callback = 'front'\r\n        // Users can be redirected after login using either a postloginredirect session variable, or by the ?from={url} querystring parameter\r\n        if (sessionRedirect) {\r\n          callback = sessionRedirect\r\n          sessionStorage.removeItem('postloginredirect')\r\n        } else if (this.$route.query.from) {\r\n          callback = this.$route.query.from\r\n        }\r\n\r\n        this.success = true\r\n        window.location.href = this.$router.resolve({\r\n          path: callback\r\n        }).href\r\n      },\r\n      login: function () {\r\n        this.$http.post(this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.login[0], { Email: this.email, Password: this.password, codeOfEthicsAccepted: this.codeOfEthics ? this.codeOfEthics : false, dataProtectionAccepted: this.dataProtection ? this.dataProtection : false }).then(response => {\r\n          if (response.status === 200) {\r\n            this.handleToken(response.body)\r\n          } else {\r\n            // rejected connections\r\n            this.password = ''\r\n            this.$validator.reset()\r\n            this.failedLoginAttempt = 2\r\n            this.pending = false\r\n          }\r\n        }, response => {\r\n          // for connections that did not get proper response from the server\r\n          if (response.body.description.toLowerCase() === 'expired') {\r\n            this.$router.push({ path: `/resetexpired/${this.email}` })\r\n          } else if (response.body.description.toLowerCase() === 'employeedenied') {\r\n            this.showAlertInfo(this.$t('login.employeeDenied'))\r\n          } else if (response.body.description.toLowerCase() === 'dataprotectionandethics') {\r\n            this.showAlertInfo(this.$t('login.dataProtectionAndEthics'))\r\n            this.showCheckBoxes = true\r\n            this.pending = false\r\n          } else {\r\n            this.password = ''\r\n            this.$validator.reset()\r\n            this.failedLoginAttempt = 1\r\n            this.pending = false\r\n          }\r\n        })\r\n        return false\r\n      },\r\n      onActiveDirectoryLogin () {\r\n        if (this.$route.query.from) {\r\n          sessionStorage.setItem('logincallback', this.$route.query.from)\r\n        }\r\n        window.location.href = this.$store.state.aduri\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .comp-login {\r\n    background-color: $wizard-bg;\r\n    -webkit-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    width: 100%;\r\n    min-height: calc(100vh - 200px);\r\n    padding-bottom: 25px;\r\n    background: linear-gradient($brand-back 51%, $brand-white 49%) center center;\r\n    background-repeat: no-repeat;\r\n    background-size: contain cover;\r\n    background-color: $brand-grey1;\r\n    text-align: center;\r\n\r\n    display: grid;\r\n    display: -ms-grid;\r\n    grid-template-columns: 1fr;\r\n    -ms-grid-columns: 1fr;\r\n    grid-template-rows: auto 40px 80px;\r\n    -ms-grid-rows: auto 40px 80px;\r\n\r\n    .bg-top {\r\n      background: $brand-back center center;\r\n    }\r\n    .bg-bottom {\r\n      background: $brand-white center center;\r\n    }\r\n    .fill-height {\r\n      height: 100%;\r\n    }\r\n    .common-elements {\r\n        grid-column: 1;\r\n        grid-row: 3;\r\n        -ms-grid-column: 1;\r\n        -ms-grid-row: 3;\r\n    }\r\n    .swapped-elements  {\r\n      grid-column: 1;\r\n      grid-row: 1;\r\n      -ms-grid-column: 1;\r\n      -ms-grid-row: 1;\r\n    }\r\n\r\n    a {\r\n      padding: 2px;\r\n      font-family: \"Signa-Light\", Sans-Serif;\r\n      color: $brand-grey5;\r\n    }\r\n\r\n    .link-container {\r\n      text-align: center;\r\n      margin: 40px auto 0 auto;\r\n      color: $brand-white;\r\n    }\r\n\r\n    .login-link {\r\n      text-decoration: none;\r\n      font-family: \"Signa-Light\", Sans-Serif;\r\n      cursor: pointer;\r\n      color: $brand-grey11;\r\n\r\n      &:hover {\r\n        background: $brand-white;\r\n        color: $brand-red;\r\n      }\r\n    }\r\n\r\n    .login-header {\r\n      margin-top: 75px;\r\n      margin-bottom: 65px;\r\n      overflow-wrap: break-word;\r\n      h1 {\r\n        color: $brand-white;\r\n      }\r\n      @media screen and (max-width: $media-sm-max) {\r\n      h1 {\r\n        font-size: 35px;\r\n      }\r\n      margin-bottom: 20px;\r\n      }\r\n      @media screen and (max-width: $media-xs-max) {\r\n        h1 {\r\n          font-size: 24px;\r\n        }\r\n\r\n        margin-bottom: 0;\r\n      }\r\n   }\r\n\r\n    .login-info {\r\n      width: 100% !important;\r\n      max-width: 300px;\r\n    }\r\n\r\n    .btn {\r\n      border: none;\r\n    }\r\n\r\n    .pending {\r\n      color: $brand-white;\r\n    }\r\n\r\n    .pending_dark  {\r\n      color: $brand-font;\r\n      font-weight: 600;\r\n    }\r\n\r\n    .marginBottom10 {\r\n      margin-bottom: 10px;\r\n    }\r\n    .marginBottom25 {\r\n      margin-bottom: 35px;\r\n    }\r\n  }\r\n  .checkbox-container {\r\n    max-width: 600px;\r\n    width: 100%;\r\n    color: $brand-white;\r\n\r\n    @media (max-width: $media-sm-max) {\r\n      max-width: 500px;\r\n    }\r\n  }\r\n  .checkbox-space {\r\n    max-width: 600px;\r\n    width: 100%;\r\n    color: $brand-white;\r\n    @media (max-width: $media-sm-max) {\r\n      max-width: 0px;\r\n    }\r\n  }\r\n\r\n  .grid-container {\r\n  display: grid;\r\n  grid-template-columns: repeat(3, 1fr); /* Three equal-width columns */\r\n  gap: 1rem; /* Adjust as needed */\r\n}\r\n\r\n.grid-item {\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n}\r\n\r\n/* Center and align checkboxes in a single column */\r\n.checkboxes-container {\r\n  display: flex;\r\n  flex-direction: column; /* Stack checkboxes vertically */\r\n  align-items: flex-start; /* Align checkboxes to the left */\r\n  margin: 0 auto; /* Center the entire container */\r\n  color: $brand-white;\r\n  text-align: left;\r\n\r\n\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=fe431308&scoped=true\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=fe431308&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"fe431308\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('adhandler')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ad-state-machine\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"ad-state-machine\" />\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    uri: string\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'AdStateMachine',\r\n    data (): TemplateComponentData {\r\n      return {\r\n        uri: ''\r\n      }\r\n    },\r\n    computed: {\r\n      adState (): any {\r\n        if (!this.uri || this.uri.indexOf('#') < 0) {\r\n          return null\r\n        }\r\n\r\n        const fragment = this.uri.split('#')[1]\r\n\r\n        if (!fragment || fragment.indexOf('id_token=') < 0) {\r\n          return null\r\n        }\r\n\r\n        var params = fragment.split('&')\r\n        var rv = { }\r\n        params.forEach(function (val) {\r\n          var pair = val.split('=')\r\n          if (pair.length === 2) {\r\n            rv[pair[0]] = pair[1]\r\n          }\r\n        })\r\n\r\n        return rv\r\n      }\r\n    },\r\n    mounted: function () {\r\n      this.uri = window.location.href.replace('#/', '#')\r\n      this.passAdToBackend()\r\n    },\r\n    methods: {\r\n      passAdToBackend: function () {\r\n        if (this.adState && this.adState.id_token) {\r\n          var uri = (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.adauth[0]).replace('{token}', this.adState.id_token).replace('{session_state}', this.adState.session_state)\r\n          this.$http.get(uri).then(this.actOnSuccessfullAdResponse, (response) => {\r\n            // Handle in case of an error\r\n            if (response.body && response.body.error && response.body.error.errors.length > 0) {\r\n              console.log('AD login failed: ' + response.body.error.errors)\r\n            }\r\n            this.$router.push('/login?message=aderr&err=ADcallfail')\r\n          })\r\n        }\r\n      },\r\n      actOnSuccessfullAdResponse: function (response) {\r\n        // in case of success, ther response always has a body with an object of type LoginResult\r\n        // this LoginResult Object has a couple of relevant properties for this case:\r\n        // - Operation: Which can have the value HandleValidatedAdUserLoginRequest(2), or RegisterNewAdUser (5)\r\n        // - Token: is the JWT token that is used for authentication, or a token that is fabricated to act as a JWT token without content of an actual underlying user\r\n        // These are the only properties that are relevant for this case\r\n        if (response.body && response.body.token) {\r\n          // this means that the authorization was successfull and a token has been returned\r\n          if (response.body.operation === 2) {\r\n            //2 is HandleValidatedAdUserLoginRequest\r\n            var redirectUrl = '/login?token=' + response.body.token\r\n            var callback = sessionStorage.getItem('logincallback')\r\n            if (callback) {\r\n              sessionStorage.removeItem('logincallback')\r\n              redirectUrl += `&from=${callback}`\r\n            }\r\n            this.$router.push(redirectUrl)\r\n          } else if (response.body.operation === 5) {\r\n            this.$router.push({ name: 'wizard-ad', params: { token: response.body.token } })\r\n          }\r\n        } else {\r\n          this.$router.push('/login?message=aderr&err=no_response')\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AdStateMachine.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AdStateMachine.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AdStateMachine.vue?vue&type=template&id=90997e90\"\nimport script from \"./AdStateMachine.vue?vue&type=script&lang=ts\"\nexport * from \"./AdStateMachine.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <adhandler />\r\n</template>\r\n\r\n<script>\r\n  import adhandler from '@/components/ad/AdStateMachine.vue'\r\n  export default {\r\n    name: 'AdSignin',\r\n    components: { adhandler }\r\n  }\r\n</script>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AdSignin.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AdSignin.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AdSignin.vue?vue&type=template&id=2a01f0bc\"\nimport script from \"./AdSignin.vue?vue&type=script&lang=js\"\nexport * from \"./AdSignin.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"profilepage\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12 col-sm-3 col-md-2 progress-container text-center text-md-left\"},[_c('div',{staticClass:\"d-inline-block\"},[_c('div',{staticClass:\"image-editor-container\"},[_c('sprportrait',{staticClass:\"progress-size\",style:(_vm.portClass),attrs:{\"completion\":90,\"show-numeric\":false}}),_c('router-link',{attrs:{\"tabindex\":\"0\",\"to\":\"/profile/image\"}},[_c('span',{staticClass:\"fa-stack fa-lg image-editor-link brand-red\"},[_c('font-awesome-layers',{staticClass:\"fa-lg\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"circle\"}}),_c('font-awesome-icon',{staticStyle:{\"color\":\"white\"},attrs:{\"icon\":\"pencil-alt\",\"transform\":\"shrink-6\"}})],1)],1)])],1)])]),_c('div',{staticClass:\"col col-12 col-sm-9 col-md-10\"},[_c('span',{staticClass:\"h1 brand-red text-center text-md-left\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.labels))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12 col-md-4\"},[_c('sprEditorText',{staticClass:\"motto-editor\",attrs:{\"value\":_vm.profile.motto,\"title\":_vm.$t('profile.motto'),\"save-event\":\"on-save\",\"is-valid\":!_vm.errors.has('motto'),\"name\":\"motto\"},on:{\"on-save\":_vm.updateMotto}})],1),_c('div',{staticClass:\"col col-12 col-md-8\"},[_c('sprEditorText',{staticClass:\"story-editor\",attrs:{\"value\":_vm.profile.story,\"title\":_vm.$t('profile.story'),\"save-event\":\"on-save\",\"is-valid\":!_vm.errors.has('story'),\"name\":\"story\"},on:{\"on-save\":_vm.updateStory}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12\"},[_c('span',{staticClass:\"h4 brand-black\",attrs:{\"role\":\"heading\",\"aria-level\":\"3\"}},[_vm._v(\" \"+_vm._s(_vm.$t('profile.headerState'))+\" \")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12\"},[_c('div',{staticClass:\"profile-state\"},[_c('SPRRadioList',{attrs:{\"value\":_vm.profile.profileState,\"options\":_vm.profileStatusOptions},on:{\"input\":_vm.updateProfileState}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-left\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('wizard.preferredContactMethod')))])]),_c('div',{staticClass:\"col-12\"},[_c('checkboxlist',{attrs:{\"value\":_vm.profile.preferredContactMethods,\"list\":_vm.preferredContactMethodOptions,\"rows\":1},on:{\"input\":_vm.updatePreferredContactMethods}})],1)]),_c('div',{staticClass:\"row withbutton\"},[_c('div',{staticClass:\"col col-10\"},[_c('span',{staticClass:\"h4 brand-black\",attrs:{\"role\":\"heading\",\"aria-level\":\"3\"}},[_vm._v(\" \"+_vm._s(_vm.$t('profile.headerInfo'))+\" \")])]),_c('div',{staticClass:\"col-2 save\"},[_c('SPRButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.save'),\"click-event\":\"onSave\"},on:{\"onSave\":_vm.updateProfileOnBackend}})],1)]),_c('div',{staticClass:\"row profile-feature\"},[_c('div',{staticClass:\"col-12\"},[_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12 col-md-6\"},[_c('div',{staticClass:\"info-label\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('wizard.alreadyInvolved')))]),_c('router-link',{attrs:{\"tabindex\":\"0\",\"to\":\"/profile/involvedEventCategories\"}},[_c('font-awesome-icon',{staticClass:\"pencil-edit\",attrs:{\"icon\":\"pencil-alt\"}})],1)],1),_c('div',{staticClass:\"info-panel-body\"},[(!_vm.hasInvolvedEventCategories)?_c('span',[_vm._v(_vm._s(_vm.$t('profile.noInvolvedEventCategories')))]):_vm._e(),_vm._l((_vm.activeProfileInvolvedEventCategories),function(i){return _c('span',{key:i,staticClass:\"selected-value spr-roundbox-1 m-1\"},[_vm._v(_vm._s(_vm.$t('involvedEventCategories.' + _vm.getInvolvedEventCategories(i))))])})],2)]),_c('div',{staticClass:\"col col-12 col-md-6\"},[_c('div',{staticClass:\"info-label\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('profile.sectionInterests')))]),_c('router-link',{attrs:{\"tabindex\":\"0\",\"to\":\"/profile/interest\"}},[_c('font-awesome-icon',{staticClass:\"pencil-edit\",attrs:{\"icon\":\"pencil-alt\"}})],1)],1),_c('div',{staticClass:\"info-panel-body\"},[_vm._l((_vm.profile.areasOfInterest),function(i){return _c('span',{key:i,staticClass:\"selected-value spr-roundbox-1 m-1\"},[_vm._v(_vm._s(_vm.$t('interest.' + _vm.getAreaOfInterestText(i))))])}),(!_vm.profile.areasOfInterest.length)?_c('span',[_vm._v(_vm._s(_vm.$t('profile.noInterests')))]):_vm._e()],2)]),_c('div',{staticClass:\"col col-12 col-md-6\"},[_c('div',{staticClass:\"info-label\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('profile.sectionSkills')))]),_c('router-link',{attrs:{\"tabindex\":\"0\",\"to\":\"/profile/skills\"}},[_c('font-awesome-icon',{staticClass:\"pencil-edit\",attrs:{\"icon\":\"pencil-alt\"}})],1)],1),_c('div',{staticClass:\"info-panel-body\"},[_vm._l((_vm.profile.personalSkills),function(i){return _c('span',{key:i,staticClass:\"selected-value spr-roundbox-1 m-1\"},[_vm._v(_vm._s(_vm.$t('skills.' + _vm.getPersonalSkillsText(i))))])}),(!_vm.profile.personalSkills.length)?_c('span',[_vm._v(_vm._s(_vm.$t('profile.noSkills')))]):_vm._e()],2)]),_c('div',{staticClass:\"col col-12 col-md-6\"},[_c('div',{staticClass:\"info-label\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('profile.sectionLanguages')))]),_c('router-link',{attrs:{\"tabindex\":\"0\",\"to\":\"/profile/languages\"}},[_c('font-awesome-icon',{staticClass:\"pencil-edit\",attrs:{\"icon\":\"pencil-alt\"}})],1)],1),_c('div',{staticClass:\"info-panel-body\"},[_vm._l((_vm.profile.spokenLanguages),function(i){return _c('span',{key:i,staticClass:\"selected-value spr-roundbox-1 m-1\"},[_vm._v(_vm._s(_vm.normalizeTranslation(i)))])}),(!_vm.profile.spokenLanguages.length)?_c('span',[_vm._v(_vm._s(_vm.$t('profile.noLangaugeSkills')))]):_vm._e()],2)]),_c('div',{staticClass:\"col col-12 col-md-6\"},[_c('div',{staticClass:\"info-label\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('profile.sectionLocation')))]),_c('router-link',{attrs:{\"tabindex\":\"0\",\"to\":\"/profile/location\"}},[_c('font-awesome-icon',{staticClass:\"pencil-edit\",attrs:{\"icon\":\"pencil-alt\"}})],1)],1),_c('div',{},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('profile.section')))]),_c('dd',[_vm._v(_vm._s(_vm.userSection))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.workZip')))]),_c('dd',[_vm._v(_vm._s(_vm.$store.state.profile.workingZipCode))]),_c('dt',[_vm._v(_vm._s(_vm.$t('adminUserEditor.volunteerOnline')))]),_c('dd',[_vm._v(_vm._s(_vm.formatBoolean(_vm.$store.state.profile.volunteerOnline)))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.availabilityTimes')))]),_c('dd',[_vm._l((_vm.$store.state.profile.availabilityTimes),function(e,i){return _c('span',{key:i},[_vm._v(\" \"+_vm._s(_vm.$t('availabilityTimes.' + _vm.databaseIdToText(e, _vm.$store.state.databaseAvailabilityTimes)))),(i + 1 < _vm.$store.state.profile.availabilityTimes.length)?_c('span',[_vm._v(\", \")]):_vm._e()])}),(!_vm.$store.state.profile.availabilityTimes.length)?_c('span'):_vm._e()],2),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.travelOptions')))]),_c('dd',[_vm._l((_vm.$store.state.profile.transportation),function(e,i){return _c('span',{key:i},[_vm._v(\" \"+_vm._s(_vm.$t('transportation.' + _vm.idToText(e, _vm.$store.state.transportation)))),(i + 1 < _vm.$store.state.profile.transportation.length)?_c('span',[_vm._v(\", \")]):_vm._e()])}),(!_vm.$store.state.profile.transportation.length)?_c('span'):_vm._e()],2),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.travelTime')))]),_c('dd',[_c('span',[_vm._v(_vm._s(_vm.$store.state.profile.travelTime)+\" min\")])])])])]),_c('div',{staticClass:\"col col-12 col-md-6\"},[_c('div',{staticClass:\"info-label\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('profile.sectionPersonalInfo')))]),_c('router-link',{attrs:{\"tabindex\":\"0\",\"to\":\"/profile/personal\"}},[_c('font-awesome-icon',{staticClass:\"pencil-edit\",attrs:{\"icon\":\"pencil-alt\"}})],1)],1),_c('div',{staticClass:\"info-panel-body\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('profile.phoneNumber')))]),_c('dd',[_vm._v(_vm._s(_vm.$store.state.profile.phoneNumber))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.address')))]),_c('dd',[_vm._v(_vm._s(_vm.$store.state.profile.streetAddress)+\", \"+_vm._s(_vm.$store.state.profile.zipCode)+\" \"+_vm._s(_vm.$store.state.profile.city))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.dateOfBirth')))]),_c('dd',[_vm._v(_vm._s(_vm.formatDate(_vm.$store.state.profile.age)))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.nativeLanguage')))]),_c('dd',[_vm._v(_vm._s(_vm.normalizeTranslation(_vm.$store.state.profile.nativeLanguage)))])])])]),_c('div',{staticClass:\"col-6\"},[_c('div',{staticClass:\"info-label\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('profile.sectionMembership')))])]),_c('div',{staticClass:\"info-panel-body\"},[(_vm.member)?_c('dl',[_c('MembershipData',{attrs:{\"member\":_vm.member}})],1):_vm._e(),_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('profile.rcCourses')))]),_vm._v(\" \"+_vm._s(_vm.trainText)+\" \")])])]),_c('div',{staticClass:\"col-6 align-middle\"},[(_vm.showMembershipButton())?_c('div',{staticClass:\"info-label-black\"},[_c('span',[_vm._v(_vm._s(_vm.$t('profile.joinTitle')))])]):_vm._e(),(_vm.showMembershipButton())?_c('SPRButton',{attrs:{\"size\":1,\"title\":_vm.$t('wizard.joinButton'),\"click-event\":\"tojoin\"},on:{\"tojoin\":_vm.join}}):_vm._e()],1),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"info-label\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('profile.editUsernameAndPassword')))]),_c('router-link',{attrs:{\"tabindex\":\"0\",\"to\":\"/profile/login\"}},[_c('font-awesome-icon',{staticClass:\"pencil-edit\",attrs:{\"icon\":\"pencil-alt\"}})],1)],1),_c('div',{staticClass:\"info-panel-body\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('profile.email')))]),_c('dd',[_vm._v(_vm._s(_vm.$store.state.profile.email))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.password')))]),_c('dd',[_vm._v(\"******\")])])])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"info-label\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('profile.editEventAdmins')))]),_c('router-link',{attrs:{\"tabindex\":\"0\",\"to\":\"/profile/eventadmins\"}},[_c('font-awesome-icon',{staticClass:\"pencil-edit\",attrs:{\"icon\":\"pencil-alt\"}})],1)],1),_c('div',{staticClass:\"info-panel-body\"},[(_vm.$store.state.profile.eventAdmins)?_c('ul',{staticClass:\"eventadmins\"},_vm._l((_vm.$store.state.profile.eventAdmins),function(admin){return _c('li',{key:admin.email},[_vm._v(\" \"+_vm._s(admin.email)+\" \")])}),0):_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('profile.noEventAdminsCreated'))+\" \")])])]),_c('div',{staticClass:\"col-12\"},[_c('deleteUserProfile')],1)])])])]),(_vm.showFriendshipSection)?_c('div',{staticClass:\"profile-feature\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('profile.volunteerInfo')))])])]),(_vm.$store.state.profile.friendInfo)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('volunteerprofiledetails',{attrs:{\"volunteer\":_vm.$store.state.profile.friendInfo}})],1)]):_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"profile-feature text-center\"},[_c('router-link',{attrs:{\"to\":'/friend/volunteer/add'}},[_vm._v(\" \"+_vm._s(_vm.$t('profile.createFriendProfilePrompt'))+\" \")])],1)])])]):_vm._e(),_c('div',{staticClass:\"col-12 save\"},[_c('SPRButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.save'),\"click-event\":\"onSave\"},on:{\"onSave\":_vm.updateProfileOnBackend}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"comp-profile-editor\",attrs:{\"id\":_vm.uniqueid}},[_c('div',{staticClass:\"editor-header\"},[_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.editing),expression:\"!editing\"}],staticClass:\"cap-label action-icon\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.toggleEdit}},[_vm._v(\" \"+_vm._s(_vm.title)+\" \"),_c('font-awesome-icon',{attrs:{\"icon\":\"pencil-alt\",\"aria-hidden\":\"true\"}})],1),_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.editing),expression:\"editing\"}],staticClass:\"cap-label action-icon\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.toggleEdit}},[_vm._v(\" \"+_vm._s(_vm.title)+\" \"),_c('font-awesome-icon',{staticClass:\"save\",attrs:{\"icon\":\"check\",\"aria-hidden\":\"true\"}})],1),_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.editing),expression:\"editing\"}],staticClass:\"cap-label action-icon\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.revertChanges}},[_c('font-awesome-icon',{attrs:{\"icon\":\"times\",\"aria-hidden\":\"true\"}})],1)]),(!_vm.editing)?_c('div',{staticClass:\"editor-area\"},[_vm._v(\" \"+_vm._s(_vm.value)+\" \")]):_c('div',{staticClass:\"editor-area\"},[_c('textarea',{ref:\"editorRef\",class:{'spr-danger':!_vm.isValid},attrs:{\"rows\":\"6\"},domProps:{\"value\":_vm.value},on:{\"input\":_vm.handleInput}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div :id=\"uniqueid\" class=\"comp-profile-editor\">\r\n    <div class=\"editor-header\">\r\n      <!-- This is intentionally <a> element. This is the proper way to\r\n      enable keyboard navigation for the element, believe it or not. -->\r\n      <a v-show=\"!editing\" class=\"cap-label action-icon\" tabindex=\"0\" href=\"javascript:void(0);\" @click=\"toggleEdit\">\r\n        {{ title }}\r\n        <font-awesome-icon icon=\"pencil-alt\" aria-hidden=\"true\" />\r\n      </a>\r\n      <a v-show=\"editing\" class=\"cap-label action-icon\" tabindex=\"0\" href=\"javascript:void(0);\" @click=\"toggleEdit\">\r\n        {{ title }}\r\n        <font-awesome-icon icon=\"check\" class=\"save\" aria-hidden=\"true\" />\r\n      </a>\r\n      <a v-show=\"editing\" class=\"cap-label action-icon\" tabindex=\"0\" href=\"javascript:void(0);\" @click=\"revertChanges\">\r\n        <font-awesome-icon icon=\"times\" aria-hidden=\"true\" />\r\n      </a>\r\n    </div>\r\n    <div v-if=\"!editing\" class=\"editor-area\">\r\n      {{ value }}\r\n    </div>\r\n    <div v-else class=\"editor-area\">\r\n      <textarea ref=\"editorRef\" rows=\"6\" :value=\"value\" :class=\"{'spr-danger':!isValid}\" @input=\"handleInput\" />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import messages from '../mixins/messages.js'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    editing: boolean,\r\n    backup: string,\r\n    uniqueid: string\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'ProfileEditorText',\r\n    mixins: [messages],\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      value: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      saveEvent: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      isValid: Boolean\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        editing: false,\r\n        backup: '',\r\n        uniqueid: _.uniqueId('profile-editor-')\r\n      }\r\n    },\r\n    computed: {\r\n      parentNode (): HTMLTextAreaElement | null {\r\n        return document.getElementById(this.uniqueid) as HTMLTextAreaElement\r\n      }\r\n    },\r\n    beforeDestroy: function () {\r\n      window.removeEventListener('focus', this.handleBlur)\r\n      window.removeEventListener('click', this.detectClicks)\r\n    },\r\n    mounted: function () {\r\n      window.addEventListener('focus', this.handleBlur, true)\r\n      window.addEventListener('click', this.detectClicks, true)\r\n    },\r\n    methods: {\r\n      toggleEdit: function () {\r\n        if (!this.isValid) {\r\n          return\r\n        }\r\n\r\n        this.editing = !this.editing\r\n\r\n        if (this.editing) {\r\n          // opening edit dialog\r\n          this.backup = this.value\r\n        } else {\r\n          // closing edit dialog\r\n          if (this.backup !== (this.$refs.editorRef as HTMLTextAreaElement).value) {\r\n            this.$emit(this.saveEvent, (this.$refs.editorRef as HTMLTextAreaElement).value)\r\n          }\r\n        }\r\n      },\r\n      handleInput: function () {\r\n        this.$emit('input', (this.$refs.editorRef as HTMLTextAreaElement).value)\r\n      },\r\n      handleBlur: function (event) {\r\n        if (this.editing && event.target && this.parentNode && !this.parentNode.contains(event.target)) {\r\n          this.toggleEdit()\r\n        }\r\n      },\r\n      detectClicks: function (event) {\r\n        this.handleBlur(event)\r\n      },\r\n      revertChanges: function () {\r\n        if (this.editing) {\r\n          (this.$refs.editorRef as HTMLTextAreaElement).value = this.backup\r\n          this.handleInput()\r\n          this.toggleEdit()\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .comp-profile-editor {\r\n    display: grid;\r\n    display: -ms-grid;\r\n\r\n    grid-template-columns: 1fr;\r\n    -ms-grid-columns: 1fr;\r\n    grid-template-rows: 25px 1fr;\r\n    -ms-grid-rows: 25px 1fr;\r\n\r\n    .editor-header {\r\n      grid-row: 1;\r\n      -ms-grid-row: 1;\r\n      grid-column: 1;\r\n      -ms-grid-column: 1;\r\n\r\n      .action-icon {\r\n        color: $brand-red;\r\n        font-family: $font-bold;\r\n        cursor: pointer;\r\n        text-decoration: none;\r\n        text-transform:uppercase;\r\n        margin-right: 5px;\r\n\r\n        .save {\r\n          color: $brand-success;\r\n        }\r\n      }\r\n    }\r\n\r\n    .editor-area {\r\n      grid-row: 2;\r\n      -ms-grid-row: 2;\r\n      grid-column: 1;\r\n      -ms-grid-column: 1;\r\n      margin-left: 5px;\r\n      white-space: pre-line;\r\n      overflow-wrap: break-word;\r\n      word-break: break-all;\r\n\r\n      textarea {\r\n        width: calc(100% - 15px);\r\n        resize: none;\r\n        margin-top: 10px;\r\n        font-family: \"Signa-Book\", Sans-Serif;\r\n        font-size: 14px;\r\n        line-height: 20px;\r\n      }\r\n    }\r\n\r\n    .spr-danger {\r\n      border: 2px solid $brand-red !important;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRProfileEditor.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRProfileEditor.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRProfileEditor.vue?vue&type=template&id=555d1e5d&scoped=true\"\nimport script from \"./SPRProfileEditor.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRProfileEditor.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRProfileEditor.vue?vue&type=style&index=0&id=555d1e5d&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"555d1e5d\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"volunteerprofiledetails\"},[_c('div',{staticClass:\"row section\"},[_c('div',{staticClass:\"col-12\"},[_c('FriendVolunteerCommonDetails',{attrs:{\"volunteer\":_vm.volunteer}})],1)]),_c('div',{staticClass:\"row section\"},[(_vm.volunteer.hasStandardProfile)?_c('div',{staticClass:\"col-12\"},[_c('FriendVolunteerStandardDetails',{attrs:{\"profile\":_vm.volunteer.standardProfile}})],1):_c('div',{staticClass:\"col-12 text-center\"},[_c('SprButton',{staticClass:\"spr-redborder button-width mb-2\",attrs:{\"type\":\"primary\",\"size\":5,\"title\":_vm.$t('volunteerForm.createStandardProfile'),\"click-event\":\"click\"},on:{\"click\":_vm.createStandard}})],1)]),_c('div',{staticClass:\"row section\"},[(_vm.volunteer.hasNetProfile)?_c('div',{staticClass:\"col-12\"},[_c('FriendVolunteerNetDetails',{attrs:{\"profile\":_vm.volunteer.netProfile}})],1):_c('div',{staticClass:\"col-12 text-center\"},[_c('SprButton',{staticClass:\"spr-redborder button-width mb-2\",attrs:{\"type\":\"primary\",\"size\":5,\"title\":_vm.$t('volunteerForm.createNetProfile'),\"click-event\":\"click\"},on:{\"click\":_vm.createNet}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row friendvolunteercommondetails\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('volunteerForm.personalInformation')))]),_c('router-link',{staticClass:\"edit\",attrs:{\"to\":'/friend/volunteer/edit/common'}},[_c('font-awesome-icon',{attrs:{\"icon\":\"pencil-alt\"}})],1)],1),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.gender')))]),_c('dd',[_vm._v(_vm._s(_vm.computedGender))])])]),_c('div',{staticClass:\"col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.hasHealthcareTraining')))]),_c('dd',[_vm._v(_vm._s(_vm.$t('boolean.' + _vm.volunteer.hasHealthCareTraining)))])])]),(_vm.volunteer.healthCareTrainingFreetext)?_c('div',{staticClass:\"col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.healthCareTrainingFreetext')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteer.healthCareTrainingFreetext))])])]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row friendvolunteercommondetails\">\r\n    <div class=\"col-12\">\r\n      <h5>{{ $t('volunteerForm.personalInformation') }}</h5>\r\n      <router-link class=\"edit\" :to=\"'/friend/volunteer/edit/common'\">\r\n        <font-awesome-icon icon=\"pencil-alt\" />\r\n      </router-link>\r\n    </div>\r\n    <div class=\"col-12\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <dl>\r\n            <dt>{{ $t('volunteerForm.gender') }}</dt>\r\n            <dd>{{ computedGender }}</dd>\r\n          </dl>\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <dl>\r\n            <dt>{{ $t('volunteerForm.hasHealthcareTraining') }}</dt>\r\n            <dd>{{ $t('boolean.' + volunteer.hasHealthCareTraining) }}</dd>\r\n          </dl>\r\n        </div>\r\n        <div v-if=\"volunteer.healthCareTrainingFreetext\" class=\"col-12\">\r\n          <dl>\r\n            <dt>{{ $t('volunteerForm.healthCareTrainingFreetext') }}</dt>\r\n            <dd>{{ volunteer.healthCareTrainingFreetext }}</dd>\r\n          </dl>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { FriendVolunteerDto } from '@/types/index'\r\n  import enumhelper from '../../mixins/enums.js'\r\n\r\n  export default Vue.extend({\r\n    name: 'FriendVolunteerCommonDetails',\r\n    mixins: [enumhelper],\r\n    props: {\r\n      volunteer: {\r\n        type: Object as () => FriendVolunteerDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      // all computed props should define return type, or you will get ts errors!\r\n      computedGender (): string {\r\n        // @ts-ignore can't find mixins\r\n        return this.getGenderTranslation(this.volunteer.gender)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .friendvolunteercommondetails {\r\n    background-color: $brand-white;\r\n    padding-top: 15px;\r\n    padding-bottom: 15px;\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendVolunteerCommonDetails.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendVolunteerCommonDetails.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FriendVolunteerCommonDetails.vue?vue&type=template&id=40048b7c\"\nimport script from \"./FriendVolunteerCommonDetails.vue?vue&type=script&lang=ts\"\nexport * from \"./FriendVolunteerCommonDetails.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FriendVolunteerCommonDetails.vue?vue&type=style&index=0&id=40048b7c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row friendvolunteerstandarddetails\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('volunteerForm.standardFormTitle')))]),_c('router-link',{staticClass:\"edit\",attrs:{\"to\":'/friend/volunteer/edit/standard'}},[_c('font-awesome-icon',{attrs:{\"icon\":\"pencil-alt\"}})],1)],1),(_vm.profile.shortDescription)?_c('div',{staticClass:\"col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.shortDescription')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.shortDescription))])])]):_vm._e(),_c('div',{staticClass:\"col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.multipleCustomers2')))]),_c('dd',[_vm._v(_vm._s(_vm.$t('boolean.' + _vm.profile.multipleCustomers)))])])]),(_vm.profile.hasAlternativeAddress)?_c('div',{staticClass:\"col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.alternativeAddress')))]),_c('dd',[_vm._v(_vm._s(_vm.computedAlternativeAddress))])])]):_vm._e(),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.genderPreference')))]),_c('dd',[_c('pilllist',{staticClass:\"pills\",attrs:{\"value\":_vm.computedGenderPreference}})],1)])]),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.desiredAge')))]),_c('dd',[_c('pilllist',{staticClass:\"pills\",attrs:{\"value\":_vm.computedPreferredAges}})],1)])]),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.friendshipType')))]),_c('dd',[_c('pilllist',{staticClass:\"pills\",attrs:{\"value\":_vm.computedFriendshipTypes}})],1)])]),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.interests')))]),_c('dd',[_c('pilllist',{staticClass:\"pills\",attrs:{\"value\":_vm.computedInterests}})],1)])]),(_vm.profile.otherInterests)?_c('div',{staticClass:\"col-12\"},[_c('dl',[_c('dt',[_vm._v(\" \"+_vm._s(_vm.$t('volunteerForm.otherInterests'))+\" \")]),_c('dd',[_vm._v(\" \"+_vm._s(_vm.profile.otherInterests)+\" \")])])]):_vm._e(),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.availabilityTimes')))]),_c('dd',[_c('pilllist',{staticClass:\"pills\",attrs:{\"value\":_vm.computedAvailabilityTimes}})],1),_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.availabilityFrequency')))]),_c('dd',[_vm._v(_vm._s(_vm.computedAvailabilityFrequence))]),(_vm.profile.availabilityDetails)?_c('dt',[_vm._v(\" \"+_vm._s(_vm.$t('volunteerForm.availabilityDetails'))+\" \")]):_vm._e(),(_vm.profile.availabilityDetails)?_c('dd',[_vm._v(\" \"+_vm._s(_vm.profile.availabilityDetails)+\" \")]):_vm._e()])]),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.customerType')))]),_c('dd',[_c('pilllist',{staticClass:\"pills\",attrs:{\"value\":_vm.computedCustomerTypes}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"pilllist\"},_vm._l((_vm.value),function(pill){return _c('div',{key:pill,attrs:{\"value\":pill}},[_c('pill',{attrs:{\"value\":pill,\"selected\":false}})],1)}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"pill\",class:{'selected': _vm.selected, 'deletable': _vm.showDelete}},[_c('span',{staticClass:\"pillcontent\"},[_vm._v(_vm._s(_vm.value))]),_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.onRemove}},[(_vm.showDelete)?_c('font-awesome-icon',{attrs:{\"icon\":\"times\"}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n  .pill {\r\n    background-color: $brand-white;\r\n    border: solid 2px $brand-red;\r\n    padding: 5px 10px;\r\n    border-radius: 20px;\r\n    position: relative;\r\n    display: inline-block;\r\n    background-color: $brand-white;\r\n    color: $brand-red;\r\n    margin-top: 5px;\r\n    font-family: $font-light;\r\n    font-weight: bold;\r\n    font-size:13px;\r\n    display:inline-block;\r\n\r\n    &.selected {\r\n      background-color: $brand-red;\r\n      color: $brand-white;\r\n    }\r\n\r\n    .pillcontent {\r\n      display:inline-block;\r\n      margin: 0 auto;\r\n      font-weight: bold;\r\n      font-size:14px;\r\n    }\r\n\r\n    &.deletable {\r\n      .pillcontent {\r\n        margin-right:10px;\r\n      }\r\n    }\r\n\r\n    svg {\r\n      top:14px;\r\n      right:8px;\r\n      display:inline-block;\r\n      position: absolute;\r\n      margin-top:-10px;\r\n      color:$brand-red;\r\n      cursor:pointer;\r\n    }\r\n  }\r\n</style>\r\n<template>\r\n  <div class=\"pill\" :class=\"{'selected': selected, 'deletable': showDelete}\">\r\n    <span class=\"pillcontent\">{{ value }}</span>\r\n    <a href=\"javascript:void(0)\" @click=\"onRemove\">\r\n      <font-awesome-icon v-if=\"showDelete\" icon=\"times\" />\r\n    </a>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'Pill',\r\n    props: {\r\n      value: {\r\n        type: String,\r\n        default () {\r\n          return ''\r\n        }\r\n      },\r\n      selected: {\r\n        type: Boolean,\r\n        default () {\r\n          return false\r\n        }\r\n      },\r\n      showDelete: {\r\n        type: Boolean,\r\n        default () {\r\n          return false\r\n        }\r\n      }\r\n    },\r\n    methods: {\r\n      onRemove () {\r\n        this.$emit('remove', this.value)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPill.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPill.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRPill.vue?vue&type=template&id=7636bcaf\"\nimport script from \"./SPRPill.vue?vue&type=script&lang=js\"\nexport * from \"./SPRPill.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRPill.vue?vue&type=style&index=0&id=7636bcaf&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"pilllist\">\r\n    <div v-for=\"pill in value\" :key=\"pill\" :value=\"pill\">\r\n      <pill :value=\"pill\" :selected=\"false\" />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import pill from './SPRPill.vue'\r\n\r\n  export default {\r\n    name: 'PillList',\r\n    components: { pill },\r\n    props: {\r\n      value: {\r\n        type: Array,\r\n        default () {\r\n          return []\r\n        }\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  .pilllist {\r\n    > div {\r\n      display:inline-block;\r\n      margin-right: 10px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPillList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPillList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRPillList.vue?vue&type=template&id=6e19c5a8\"\nimport script from \"./SPRPillList.vue?vue&type=script&lang=js\"\nexport * from \"./SPRPillList.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRPillList.vue?vue&type=style&index=0&id=6e19c5a8&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"row friendvolunteerstandarddetails\">\r\n    <div class=\"col-12\">\r\n      <h5>{{ $t('volunteerForm.standardFormTitle') }}</h5>\r\n      <router-link class=\"edit\" :to=\"'/friend/volunteer/edit/standard'\">\r\n        <font-awesome-icon icon=\"pencil-alt\" />\r\n      </router-link>\r\n    </div>\r\n    <div v-if=\"profile.shortDescription\" class=\"col-12\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.shortDescription') }}</dt>\r\n        <dd>{{ profile.shortDescription }}</dd>\r\n      </dl>\r\n    </div>\r\n    <div class=\"col-12\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.multipleCustomers2') }}</dt>\r\n        <dd>{{ $t('boolean.' + profile.multipleCustomers) }}</dd>\r\n      </dl>\r\n    </div>\r\n    <div v-if=\"profile.hasAlternativeAddress\" class=\"col-12\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.alternativeAddress') }}</dt>\r\n        <dd>{{ computedAlternativeAddress }}</dd>\r\n      </dl>\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.genderPreference') }}</dt>\r\n        <dd><pilllist class=\"pills\" :value=\"computedGenderPreference\" /></dd>\r\n      </dl>\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.desiredAge') }}</dt>\r\n        <dd><pilllist class=\"pills\" :value=\"computedPreferredAges\" /></dd>\r\n      </dl>\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.friendshipType') }}</dt>\r\n        <dd><pilllist class=\"pills\" :value=\"computedFriendshipTypes\" /></dd>\r\n      </dl>\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.interests') }}</dt>\r\n        <dd><pilllist class=\"pills\" :value=\"computedInterests\" /></dd>\r\n      </dl>\r\n    </div>\r\n    <div v-if=\"profile.otherInterests\" class=\"col-12\">\r\n      <dl>\r\n        <dt>\r\n          {{ $t('volunteerForm.otherInterests') }}\r\n        </dt>\r\n        <dd>\r\n          {{ profile.otherInterests }}\r\n        </dd>\r\n      </dl>\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.availabilityTimes') }}</dt>\r\n        <dd><pilllist class=\"pills\" :value=\"computedAvailabilityTimes\" /></dd>\r\n        <dt>{{ $t('volunteerForm.availabilityFrequency') }}</dt>\r\n        <dd>{{ computedAvailabilityFrequence }}</dd>\r\n        <dt v-if=\"profile.availabilityDetails\">\r\n          {{ $t('volunteerForm.availabilityDetails') }}\r\n        </dt>\r\n        <dd v-if=\"profile.availabilityDetails\">\r\n          {{ profile.availabilityDetails }}\r\n        </dd>\r\n      </dl>\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.customerType') }}</dt>\r\n        <dd><pilllist class=\"pills\" :value=\"computedCustomerTypes\" /></dd>\r\n      </dl>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { FriendVolunteerProfileStandardDto } from '@/types/index'\r\n  import pilllist from '@/components/SPRPillList.vue'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import _ from 'lodash'\r\n\r\n  export default Vue.extend({\r\n    name: 'FriendVolunteerStandardDetails',\r\n    components: {\r\n      pilllist\r\n    },\r\n    mixins: [enumhelper],\r\n    props: {\r\n      profile: {\r\n        type: Object as () => FriendVolunteerProfileStandardDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      // all computed props should define return type, or you will get ts errors!\r\n      computedGenderPreference (): string {\r\n        // @ts-ignore can't find mixins\r\n        var elements = this.integerIntoBitmaskProxy(this.profile.preferredGenders)\r\n        // @ts-ignore can't find mixins\r\n        return _.map(elements, this.getGenderTranslation)\r\n      },\r\n      computedPreferredAges (): string {\r\n        // @ts-ignore can't find mixins\r\n        var elements = this.integerIntoBitmaskProxy(this.profile.preferredAges)\r\n        // @ts-ignore can't find mixins\r\n        return _.map(elements, this.getAgeTranslation)\r\n      },\r\n      computedAvailabilityFrequence (): string {\r\n        // @ts-ignore\r\n        return this.getAvailabilityFrequencyTranslation(this.profile.availabilityFrequence)\r\n      },\r\n      computedAlternativeAddress (): string {\r\n        if (!this.profile.hasAlternativeAddress) {\r\n          return ''\r\n        }\r\n\r\n        return `${this.profile.alternativeStreet ? this.profile.alternativeStreet : ''} ${this.profile.alternativeZipCode ? this.profile.alternativeZipCode : ''} ${this.profile.alternativeCity ? this.profile.alternativeCity : ''}`\r\n      },\r\n      computedFriendshipTypes (): string {\r\n        // @ts-ignore can't find mixins\r\n        var elements = this.integerIntoBitmaskProxy(this.profile.friendshipTypes)\r\n        // @ts-ignore can't find mixins\r\n        return _.map(elements, this.getFriendshipTypesTranslation)\r\n      },\r\n      computedInterests (): string {\r\n        // @ts-ignore can't find mixins\r\n        var elements = this.integerIntoBitmaskProxy(this.profile.interests)\r\n        // @ts-ignore can't find mixins\r\n        return _.map(elements, this.getInterestsTranslation)\r\n      },\r\n      computedCustomerTypes (): string {\r\n        // @ts-ignore can't find mixins\r\n        var elements = this.integerIntoBitmaskProxy(this.profile.customerTypes)\r\n        // @ts-ignore can't find mixins\r\n        return _.map(elements, this.getCustomerTypesTranslation)\r\n      },\r\n      computedAvailabilityTimes (): string {\r\n        // @ts-ignore can't find mixins\r\n        var elements = this.integerIntoBitmaskProxy(this.profile.availabilityTimes)\r\n        // @ts-ignore can't find mixins\r\n        return _.map(elements, this.getAvailabilityTimesTranslation)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .friendvolunteerstandarddetails {\r\n    background-color: $brand-white;\r\n    padding-top: 15px;\r\n    padding-bottom: 15px;\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendVolunteerStandardDetails.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendVolunteerStandardDetails.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FriendVolunteerStandardDetails.vue?vue&type=template&id=0171faaa\"\nimport script from \"./FriendVolunteerStandardDetails.vue?vue&type=script&lang=ts\"\nexport * from \"./FriendVolunteerStandardDetails.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FriendVolunteerStandardDetails.vue?vue&type=style&index=0&id=0171faaa&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row friendvolunteernetdetails\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('volunteerForm.netFormTitle')))]),_c('router-link',{staticClass:\"edit\",attrs:{\"to\":'/friend/volunteer/edit/net'}},[_c('font-awesome-icon',{attrs:{\"icon\":\"pencil-alt\"}})],1)],1),(_vm.profile.shortDescription)?_c('div',{staticClass:\"col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.shortDescription')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.shortDescription))])])]):_vm._e(),_c('div',{staticClass:\"col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.multipleCustomers2')))]),_c('dd',[_vm._v(_vm._s(_vm.$t('boolean.' + _vm.profile.multipleCustomers)))])])]),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.genderPreference')))]),_c('dd',[_c('pilllist',{staticClass:\"pills\",attrs:{\"value\":_vm.computedGenderPreference}})],1)])]),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.desiredAge')))]),_c('dd',[_c('pilllist',{staticClass:\"pills\",attrs:{\"value\":_vm.computedPreferredAges}})],1)])]),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.friendshipType')))]),_c('dd',[_c('pilllist',{staticClass:\"pills\",attrs:{\"value\":_vm.computedFriendshipTypes}})],1)])]),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.interests')))]),_c('dd',[_c('pilllist',{staticClass:\"pills\",attrs:{\"value\":_vm.computedInterests}})],1)])]),(_vm.profile.otherInterests)?_c('div',{staticClass:\"col-12\"},[_c('dl',[_c('dt',[_vm._v(\" \"+_vm._s(_vm.$t('volunteerForm.otherInterests'))+\" \")]),_c('dd',[_vm._v(\" \"+_vm._s(_vm.profile.otherInterests)+\" \")])])]):_vm._e(),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.availabilityFrequency')))]),_c('dd',[_vm._v(_vm._s(_vm.computedAvailabilityFrequence))]),_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.availabilityDetails')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.availabilityDetails))])])]),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('volunteerForm.customerType')))]),_c('dd',[_c('pilllist',{staticClass:\"pills\",attrs:{\"value\":_vm.computedCustomerTypes}})],1)])]),_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('customerForm.netFriendContacts')))])]),_c('div',{staticClass:\"col-12 col-md-6\"},[(_vm.profile.econtactEmail)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.email')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.econtactEmail))])]):_vm._e(),(_vm.profile.econtactTelegram)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.telegram')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.econtactTelegram))])]):_vm._e(),(_vm.profile.econtactKik)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.kik')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.econtactKik))])]):_vm._e(),(_vm.profile.econtactInstagram)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.instagram')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.econtactInstagram))])]):_vm._e(),(_vm.profile.econtactSkype)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.skype')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.econtactSkype))])]):_vm._e(),(_vm.profile.econtactDiscord)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.discord')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.econtactDiscord))])]):_vm._e(),(_vm.profile.econtactFreetext)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.freetext')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.econtactFreetext))])]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row friendvolunteernetdetails\">\r\n    <div class=\"col-12\">\r\n      <h5>{{ $t('volunteerForm.netFormTitle') }}</h5>\r\n      <router-link class=\"edit\" :to=\"'/friend/volunteer/edit/net'\">\r\n        <font-awesome-icon icon=\"pencil-alt\" />\r\n      </router-link>\r\n    </div>\r\n    <div v-if=\"profile.shortDescription\" class=\"col-12\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.shortDescription') }}</dt>\r\n        <dd>{{ profile.shortDescription }}</dd>\r\n      </dl>\r\n    </div>\r\n    <div class=\"col-12\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.multipleCustomers2') }}</dt>\r\n        <dd>{{ $t('boolean.' + profile.multipleCustomers) }}</dd>\r\n      </dl>\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.genderPreference') }}</dt>\r\n        <dd><pilllist class=\"pills\" :value=\"computedGenderPreference\" /></dd>\r\n      </dl>\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.desiredAge') }}</dt>\r\n        <dd><pilllist class=\"pills\" :value=\"computedPreferredAges\" /></dd>\r\n      </dl>\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.friendshipType') }}</dt>\r\n        <dd><pilllist class=\"pills\" :value=\"computedFriendshipTypes\" /></dd>\r\n      </dl>\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.interests') }}</dt>\r\n        <dd><pilllist class=\"pills\" :value=\"computedInterests\" /></dd>\r\n      </dl>\r\n    </div>\r\n    <div v-if=\"profile.otherInterests\" class=\"col-12\">\r\n      <dl>\r\n        <dt>\r\n          {{ $t('volunteerForm.otherInterests') }}\r\n        </dt>\r\n        <dd>\r\n          {{ profile.otherInterests }}\r\n        </dd>\r\n      </dl>\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.availabilityFrequency') }}</dt>\r\n        <dd>{{ computedAvailabilityFrequence }}</dd>\r\n        <dt>{{ $t('volunteerForm.availabilityDetails') }}</dt>\r\n        <dd>{{ profile.availabilityDetails }}</dd>\r\n      </dl>\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <dl>\r\n        <dt>{{ $t('volunteerForm.customerType') }}</dt>\r\n        <dd><pilllist class=\"pills\" :value=\"computedCustomerTypes\" /></dd>\r\n      </dl>\r\n    </div>\r\n    <div class=\"col-12\">\r\n      <h5>{{ $t('customerForm.netFriendContacts') }}</h5>\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <dl v-if=\"profile.econtactEmail\">\r\n        <dt>{{ $t('connectivity.email') }}</dt>\r\n        <dd>{{ profile.econtactEmail }}</dd>\r\n      </dl>\r\n      <dl v-if=\"profile.econtactTelegram\">\r\n        <dt>{{ $t('connectivity.telegram') }}</dt>\r\n        <dd>{{ profile.econtactTelegram }}</dd>\r\n      </dl>\r\n      <dl v-if=\"profile.econtactKik\">\r\n        <dt>{{ $t('connectivity.kik') }}</dt>\r\n        <dd>{{ profile.econtactKik }}</dd>\r\n      </dl>\r\n      <dl v-if=\"profile.econtactInstagram\">\r\n        <dt>{{ $t('connectivity.instagram') }}</dt>\r\n        <dd>{{ profile.econtactInstagram }}</dd>\r\n      </dl>\r\n      <dl v-if=\"profile.econtactSkype\">\r\n        <dt>{{ $t('connectivity.skype') }}</dt>\r\n        <dd>{{ profile.econtactSkype }}</dd>\r\n      </dl>\r\n      <dl v-if=\"profile.econtactDiscord\">\r\n        <dt>{{ $t('connectivity.discord') }}</dt>\r\n        <dd>{{ profile.econtactDiscord }}</dd>\r\n      </dl>\r\n      <dl v-if=\"profile.econtactFreetext\">\r\n        <dt>{{ $t('connectivity.freetext') }}</dt>\r\n        <dd>{{ profile.econtactFreetext }}</dd>\r\n      </dl>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { FriendVolunteerProfileNetDto } from '@/types/index'\r\n  import pilllist from '@/components/SPRPillList.vue'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import _ from 'lodash'\r\n\r\n  export default Vue.extend({\r\n    name: 'FriendVolunteerNetDetails',\r\n    components: {\r\n      pilllist\r\n    },\r\n    mixins: [enumhelper],\r\n    props: {\r\n      profile: {\r\n        type: Object as () => FriendVolunteerProfileNetDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      // all computed props should define return type, or you will get ts errors!\r\n      computedGenderPreference (): string {\r\n        // @ts-ignore can't find mixins\r\n        var elements = this.integerIntoBitmaskProxy(this.profile.preferredGenders)\r\n        // @ts-ignore can't find mixins\r\n        return _.map(elements, this.getGenderTranslation)\r\n      },\r\n      computedPreferredAges (): string {\r\n        // @ts-ignore can't find mixins\r\n        var elements = this.integerIntoBitmaskProxy(this.profile.preferredAges)\r\n        // @ts-ignore can't find mixins\r\n        return _.map(elements, this.getAgeTranslation)\r\n      },\r\n      computedAvailabilityFrequence (): string {\r\n        // @ts-ignore\r\n        return this.getAvailabilityFrequencyTranslation(this.profile.availabilityFrequence)\r\n      },\r\n      computedFriendshipTypes (): string {\r\n        // @ts-ignore can't find mixins\r\n        var elements = this.integerIntoBitmaskProxy(this.profile.friendshipTypes)\r\n        // @ts-ignore can't find mixins\r\n        return _.map(elements, this.getFriendshipTypesTranslation)\r\n      },\r\n      computedInterests (): string {\r\n        // @ts-ignore can't find mixins\r\n        var elements = this.integerIntoBitmaskProxy(this.profile.interests)\r\n        // @ts-ignore can't find mixins\r\n        return _.map(elements, this.getInterestsTranslation)\r\n      },\r\n      computedCustomerTypes (): string {\r\n        // @ts-ignore can't find mixins\r\n        var elements = this.integerIntoBitmaskProxy(this.profile.customerTypes)\r\n        // @ts-ignore can't find mixins\r\n        return _.map(elements, this.getCustomerTypesTranslation)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .friendvolunteernetdetails {\r\n    background-color: $brand-white;\r\n    padding-top: 15px;\r\n    padding-bottom: 15px;\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendVolunteerNetDetails.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendVolunteerNetDetails.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FriendVolunteerNetDetails.vue?vue&type=template&id=9936b826\"\nimport script from \"./FriendVolunteerNetDetails.vue?vue&type=script&lang=ts\"\nexport * from \"./FriendVolunteerNetDetails.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FriendVolunteerNetDetails.vue?vue&type=style&index=0&id=9936b826&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","\r\n<template>\r\n  <div class=\"volunteerprofiledetails\">\r\n    <div class=\"row section\">\r\n      <div class=\"col-12\">\r\n        <FriendVolunteerCommonDetails :volunteer=\"volunteer\" />\r\n      </div>\r\n    </div>\r\n    <div class=\"row section\">\r\n      <div v-if=\"volunteer.hasStandardProfile\" class=\"col-12\">\r\n        <FriendVolunteerStandardDetails :profile=\"volunteer.standardProfile\" />\r\n      </div>\r\n      <div v-else class=\"col-12 text-center\">\r\n        <SprButton type=\"primary\"\r\n                   :size=\"5\"\r\n                   :title=\"$t('volunteerForm.createStandardProfile')\"\r\n                   class=\"spr-redborder button-width mb-2\"\r\n                   click-event=\"click\"\r\n                   @click=\"createStandard\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row section\">\r\n      <div v-if=\"volunteer.hasNetProfile\" class=\"col-12\">\r\n        <FriendVolunteerNetDetails :profile=\"volunteer.netProfile\" />\r\n      </div>\r\n      <div v-else class=\"col-12 text-center\">\r\n        <SprButton type=\"primary\"\r\n                   :size=\"5\"\r\n                   :title=\"$t('volunteerForm.createNetProfile')\"\r\n                   class=\"spr-redborder button-width mb-2\"\r\n                   click-event=\"click\"\r\n                   @click=\"createNet\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import enumhelper from '../mixins/enums.js'\r\n  import cache from '../mixins/cache.js'\r\n  import SprButton from './SPRButton.vue'\r\n  import FriendVolunteerCommonDetails from '@/components/friends/FriendVolunteerCommonDetails.vue'\r\n  import FriendVolunteerStandardDetails from '@/components/friends/FriendVolunteerStandardDetails.vue'\r\n  import FriendVolunteerNetDetails from '@/components/friends/FriendVolunteerNetDetails.vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    initialVolunteer: object\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerProfileDetails',\r\n    components: { SprButton, FriendVolunteerCommonDetails, FriendVolunteerStandardDetails, FriendVolunteerNetDetails },\r\n    mixins: [enumhelper, cache],\r\n    props: {\r\n      volunteer: {\r\n        type: Object,\r\n        required: true\r\n      }\r\n    },\r\n    methods: {\r\n      createStandard () {\r\n        // @ts-ignore\r\n        this.$router.push('/friend/volunteer/add/standard')\r\n      },\r\n      createNet () {\r\n        // @ts-ignore\r\n        this.$router.push('/friend/volunteer/add/net')\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n  .volunteerprofiledetails {\r\n    margin-top:15px;\r\n\r\n    .section {\r\n      margin-bottom: 45px;\r\n\r\n      h5 {\r\n        display: inline-block;\r\n      }\r\n\r\n      svg {\r\n        margin-left: 5px;\r\n      }\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerProfileDetails.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerProfileDetails.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerProfileDetails.vue?vue&type=template&id=55eed10e\"\nimport script from \"./VolunteerProfileDetails.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerProfileDetails.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerProfileDetails.vue?vue&type=style&index=0&id=55eed10e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row delete-user-profile my-2\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"deletelink\",on:{\"click\":_vm.initiateDeleteOrAnonymize}},[_vm._v(\" \"+_vm._s(_vm.$t('profile.moveToDeleteUserProfile'))+\" \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row delete-user-profile my-2\">\r\n    <div class=\"col-12\">\r\n      <div class=\"deletelink\" @click=\"initiateDeleteOrAnonymize\">\r\n        {{ $t('profile.moveToDeleteUserProfile') }}\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  export default Vue.extend({\r\n    name: 'DeleteUser',\r\n    components: { },\r\n    methods: {\r\n      initiateDeleteOrAnonymize (): void {\r\n        this.$router.push('/profile/deleteprofile')\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n.delete-user-profile {\r\n  .deletelink {\r\n    color: $brand-red;\r\n    text-align: center;\r\n    cursor: pointer;\r\n    &:hover {\r\n      text-decoration: underline;\r\n    }\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteUserProfile.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteUserProfile.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeleteUserProfile.vue?vue&type=template&id=47965e8b\"\nimport script from \"./DeleteUserProfile.vue?vue&type=script&lang=ts\"\nexport * from \"./DeleteUserProfile.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DeleteUserProfile.vue?vue&type=style&index=0&id=47965e8b&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('dt',[_vm._v(_vm._s(_vm.$t('profile.section')))]),(_vm.member.section)?_c('dd',[_vm._v(\" \"+_vm._s(_vm.member.section)+\" \")]):_c('dd',[_vm._v(\" - \")]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.membershipId')))]),(_vm.member.crmcustomerid)?_c('dd',[_vm._v(\" \"+_vm._s(_vm.member.crmcustomerid)+\" \")]):_c('dd',[_vm._v(\" - \")]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.joinDate')))]),(_vm.member.membershipstartyear > 0)?_c('dd',[_vm._v(\" \"+_vm._s(_vm.member.membershipstartyear)+\" \")]):_c('dd',[_vm._v(\" - \")]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.membershipStatus')))]),(_vm.membershipStatus)?_c('dd',[_vm._v(\" \"+_vm._s(_vm.$t('membershipStatus.' + _vm.membershipStatus))+\" \")]):_c('dd',[_vm._v(\" - \")]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.membershipType')))]),(_vm.membershipType)?_c('dd',[_vm._v(\" \"+_vm._s(_vm.$t('membershipType.' + _vm.membershipType))+\" \")]):_c('dd',[_vm._v(\" - \")]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.membershipFees')))]),(_vm.memberFees)?_c('dd',[_vm._v(\" \"+_vm._s(_vm.memberFees)+\" \")]):_c('dd',[_vm._v(\" - \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div>\r\n    <dt>{{ $t('profile.section') }}</dt>\r\n    <dd v-if=\"member.section\">\r\n      {{ member.section }}\r\n    </dd>\r\n    <dd v-else>\r\n      -\r\n    </dd>\r\n    <dt>{{ $t('profile.membershipId') }}</dt>\r\n    <dd v-if=\"member.crmcustomerid\">\r\n      {{ member.crmcustomerid }}\r\n    </dd>\r\n    <dd v-else>\r\n      -\r\n    </dd>\r\n    <dt>{{ $t('profile.joinDate') }}</dt>\r\n    <dd v-if=\"member.membershipstartyear > 0\">\r\n      {{ member.membershipstartyear }}\r\n    </dd>\r\n    <dd v-else>\r\n      -\r\n    </dd>\r\n    <dt>{{ $t('profile.membershipStatus') }}</dt>\r\n    <dd v-if=\"membershipStatus\">\r\n      {{ $t('membershipStatus.' + membershipStatus) }}\r\n    </dd>\r\n    <dd v-else>\r\n      -\r\n    </dd>\r\n    <dt>{{ $t('profile.membershipType') }}</dt>\r\n    <dd v-if=\"membershipType\">\r\n      {{ $t('membershipType.' + membershipType) }}\r\n    </dd>\r\n    <dd v-else>\r\n      -\r\n    </dd>\r\n    <dt>{{ $t('profile.membershipFees') }}</dt>\r\n    <dd v-if=\"memberFees\">\r\n      {{ memberFees }}\r\n    </dd>\r\n    <dd v-else>\r\n      -\r\n    </dd>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { CrmDataDto, MembershipStatus, MembershipType } from '@/types/index'\r\n  import moment from 'moment'\r\n  import stringhelper from '@/helpers/stringhelper'\r\n\r\n  export default Vue.extend({\r\n    name: 'MembershipData',\r\n    props: {\r\n      member: {\r\n        type: Object as () => CrmDataDto,\r\n        default: null\r\n      }\r\n    },\r\n    computed: {\r\n      memberFees (): string {\r\n        const translationExists = this.$t('profile.membershipFees')\r\n\r\n        if (stringhelper.isEmptyOrSpaces(translationExists)) {\r\n          return ''\r\n        }\r\n\r\n        if (!this.member || !this.member.lastPaymentDate) {\r\n          return ' - '\r\n        }\r\n\r\n        const mom = moment(this.member.lastPaymentDate)\r\n\r\n        if (mom) {\r\n          return mom.format('DD.MM.YYYY')\r\n        }\r\n\r\n        return ''\r\n      },\r\n      membershipStatus (): string {\r\n        const translationExists = this.$t('profile.membershipStatus')\r\n\r\n        if (stringhelper.isEmptyOrSpaces(translationExists)) {\r\n          return ''\r\n        }\r\n\r\n        if (!this.member || !this.member.membershipstatus.toString()) {\r\n          return ' - '\r\n        }\r\n\r\n        const rv = MembershipStatus[this.member.membershipstatus]\r\n\r\n        return stringhelper.toCamelCase(rv)\r\n      },\r\n      membershipType (): string {\r\n        const translationExists = this.$t('profile.membershipType')\r\n\r\n        if (stringhelper.isEmptyOrSpaces(translationExists)) {\r\n          return ''\r\n        }\r\n\r\n        if (!this.member || !this.member.membershiptype.toString()) {\r\n          return ' - '\r\n        }\r\n\r\n        const rv = MembershipType[this.member.membershiptype]\r\n\r\n        return stringhelper.toCamelCase(rv)\r\n      }\r\n\r\n    }\r\n  })\r\n</script>","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MembershipData.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MembershipData.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MembershipData.vue?vue&type=template&id=5988e263\"\nimport script from \"./MembershipData.vue?vue&type=script&lang=ts\"\nexport * from \"./MembershipData.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"spr-radio-list\"},_vm._l((_vm.options),function(item,index){return _c('spr-radio',{key:index,attrs:{\"title\":item.text,\"value\":item.value,\"model-value\":_vm.value,\"name\":_vm.name},on:{\"input\":_vm.onRadioClicked}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"spr-simple-radio\",class:{ 'spr-danger': !_vm.isValid },on:{\"click\":_vm.onRadioClick}},[_c('input',{attrs:{\"id\":_vm.id,\"type\":\"radio\",\"name\":_vm.name},domProps:{\"value\":_vm.value,\"checked\":_vm.isChecked}}),_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.title))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"spr-simple-radio\" :class=\"{ 'spr-danger': !isValid }\" @click=\"onRadioClick\">\r\n    <input :id=\"id\" type=\"radio\" :value=\"value\" :checked=\"isChecked\" :name=\"name\">\r\n    <label :for=\"id\">{{ title }}</label>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  export default Vue.extend({\r\n    name: 'SprSimpleRadio',\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      value: {\r\n        type: [String, Number, Boolean],\r\n        required: true\r\n      },\r\n      modelValue: {\r\n        type: [String, Number, Boolean],\r\n        required: true\r\n      },\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      isValid: {\r\n        type: Boolean,\r\n        default: true\r\n      },\r\n      name: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n      }\r\n    },\r\n    computed: {\r\n      isChecked (): boolean {\r\n        return this.value === this.modelValue\r\n      }\r\n    },\r\n    methods: {\r\n      onRadioClick (): void {\r\n        this.$emit('input', this.value)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .spr-simple-radio {\r\n    //move real radio off the screen\r\n    [type=\"radio\"]:checked,\r\n    [type=\"radio\"]:not(:checked) {\r\n        position: absolute;\r\n        left: -9999px;\r\n    }\r\n    [type=\"radio\"]:checked + label,\r\n    [type=\"radio\"]:not(:checked) + label\r\n    {\r\n        position: relative;\r\n        padding-left: 28px;\r\n        cursor: pointer;\r\n        display: inline-block;\r\n    }\r\n    [type=\"radio\"]:checked + label:before,\r\n    [type=\"radio\"]:not(:checked) + label:before {\r\n        content: '';\r\n        position: absolute;\r\n        left: 0;\r\n        top: 0;\r\n        width: 18px;\r\n        height: 18px;\r\n        border: 1px solid #ddd;\r\n        border-radius: 100%;\r\n        background: #fff;\r\n    }\r\n    [type=\"radio\"]:checked + label:after,\r\n    [type=\"radio\"]:not(:checked) + label:after {\r\n        content: '';\r\n        width: 10px;\r\n        height: 10px;\r\n        background: $brand-red;\r\n        position: absolute;\r\n        top: 4px;\r\n        left: 4px;\r\n        border-radius: 100%;\r\n        -webkit-transition: all 0.2s ease;\r\n        transition: all 0.2s ease;\r\n    }\r\n    [type=\"radio\"]:not(:checked) + label:after {\r\n        opacity: 0;\r\n        -webkit-transform: scale(0);\r\n        transform: scale(0);\r\n    }\r\n    [type=\"radio\"]:checked + label:after {\r\n        opacity: 1;\r\n        -webkit-transform: scale(1);\r\n        transform: scale(1);\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleRadio.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleRadio.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRSimpleRadio.vue?vue&type=template&id=f911d5e6\"\nimport script from \"./SPRSimpleRadio.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRSimpleRadio.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRSimpleRadio.vue?vue&type=style&index=0&id=f911d5e6&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"spr-radio-list\">\r\n    <spr-radio\r\n      v-for=\"(item, index) in options\"\r\n      :key=\"index\"\r\n      :title=\"item.text\"\r\n      :value=\"item.value\"\r\n      :model-value=\"value\"\r\n      :name=\"name\"\r\n      @input=\"onRadioClicked\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import SprRadio from './SPRSimpleRadio.vue'\r\n  import { SprRadioPillOption } from '../types/custom'\r\n\r\n  export default Vue.extend({\r\n    name: 'SprRadioList',\r\n    components: {\r\n      SprRadio\r\n    },\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      value: {\r\n        type: [String, Number, Boolean],\r\n        required: true\r\n      },\r\n      options: {\r\n        type: Array as () => Array<SprRadioPillOption>,\r\n        default: []\r\n      },\r\n      name: {\r\n        type: String,\r\n        default: 'defaultradio'\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n      }\r\n    },\r\n    computed: {\r\n    },\r\n    methods: {\r\n      onRadioClicked (value: string | number | boolean) {\r\n        this.$emit('input', value)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n  .spr-radio-list {\r\n    .spr-simple-radio {\r\n      display: inline-block;\r\n      input[type=radio] {\r\n        color: blue;\r\n        background-color: green;\r\n      }\r\n      input[type=radio] + label {\r\n        padding: 8px 15px;\r\n      }\r\n      input[type=radio] + label:before,\r\n      input[type=radio]:checked + label:before {\r\n        content: none;\r\n      }\r\n      input[type=radio] + label:after,\r\n      input[type=radio]:checked + label:after {\r\n        content: none;\r\n      }\r\n      label {\r\n        border-radius: 30px;\r\n        padding: 8px 15px;\r\n        margin: 3px;\r\n        font-size: 13px;\r\n        font-weight: bold;\r\n        display: inline-block;\r\n        border: solid 1px $brand-white;\r\n        background-color: $brand-white;\r\n      }\r\n      input[type=radio]:checked + label {\r\n        color: $brand-white;\r\n        background-color: $brand-red;\r\n        border-color: $brand-red;\r\n      }\r\n      input[type=radio] + label:hover {\r\n        background: #ba0000;\r\n        border: 1px solid #ba0000 !important;\r\n        color: #FFFFFF !important;\r\n        border-radius: 1.5em;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRRadioList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRRadioList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRRadioList.vue?vue&type=template&id=104958de\"\nimport script from \"./SPRRadioList.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRRadioList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRRadioList.vue?vue&type=style&index=0&id=104958de&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"col\">\r\n    <div class=\"container\">\r\n      <div class=\"profilepage\">\r\n        <div class=\"row\">\r\n          <div class=\"col col-12 col-sm-3 col-md-2 progress-container text-center text-md-left\">\r\n            <!--<span class=\"caption vertical-center\">{{$t('profile.completion')}}</span>-->\r\n            <div class=\"d-inline-block\">\r\n              <div class=\"image-editor-container\">\r\n                <sprportrait :completion=\"90\"\r\n                             class=\"progress-size\"\r\n                             :style=\"portClass\"\r\n                             :show-numeric=\"false\"\r\n                />\r\n                <router-link tabindex=\"0\" to=\"/profile/image\">\r\n                  <span class=\"fa-stack fa-lg image-editor-link brand-red\">\r\n                    <font-awesome-layers class=\"fa-lg\">\r\n                      <font-awesome-icon icon=\"circle\" />\r\n                      <font-awesome-icon icon=\"pencil-alt\" transform=\"shrink-6\" style=\"color: white;\" />\r\n                    </font-awesome-layers>\r\n                  </span>\r\n                </router-link>\r\n              </div>\r\n            </div>\r\n          </div>\r\n          <div class=\"col col-12 col-sm-9 col-md-10\">\r\n            <span role=\"heading\" aria-level=\"1\" class=\"h1 brand-red text-center text-md-left\">{{ labels }}</span>\r\n          </div>\r\n        </div>\r\n        <!-- Motto and story editors -->\r\n        <div class=\"row\">\r\n          <div class=\"col col-12 col-md-4\">\r\n            <sprEditorText\r\n              :value=\"profile.motto\"\r\n              class=\"motto-editor\"\r\n              :title=\"$t('profile.motto')\"\r\n              save-event=\"on-save\"\r\n              :is-valid=\"!errors.has('motto')\"\r\n              name=\"motto\"\r\n              @on-save=\"updateMotto\"\r\n            />\r\n          </div>\r\n          <div class=\"col col-12 col-md-8\">\r\n            <sprEditorText\r\n              :value=\"profile.story\"\r\n              class=\"story-editor\"\r\n              :title=\"$t('profile.story')\"\r\n              save-event=\"on-save\"\r\n              :is-valid=\"!errors.has('story')\"\r\n              name=\"story\" @on-save=\"updateStory\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <!-- profile status -->\r\n        <div class=\"row\">\r\n          <div class=\"col col-12\">\r\n            <span role=\"heading\" aria-level=\"3\" class=\"h4 brand-black\">\r\n              {{ $t('profile.headerState') }}\r\n            </span>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col col-12\">\r\n            <div class=\"profile-state\">\r\n              <SPRRadioList\r\n                :value=\"profile.profileState\"\r\n                :options=\"profileStatusOptions\"\r\n                @input=\"updateProfileState\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- PreferredContactMethod -->\r\n        <div class=\"row\">\r\n          <div class=\"col-12 text-left\">\r\n            <span class=\"subheader\">{{ $t('wizard.preferredContactMethod') }}</span>\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <checkboxlist :value=\"profile.preferredContactMethods\"\r\n                          :list=\"preferredContactMethodOptions\"\r\n                          :rows=\"1\"\r\n                          @input=\"updatePreferredContactMethods\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <!-- PERSONAL INFO SECTION (Omat tiedot) -->\r\n        <div class=\"row withbutton\">\r\n          <div class=\"col col-10\">\r\n            <span role=\"heading\" aria-level=\"3\" class=\"h4 brand-black\">\r\n              {{ $t('profile.headerInfo') }}\r\n            </span>\r\n          </div>\r\n          <div class=\"col-2 save\">\r\n            <SPRButton type=\"button\"\r\n                       :size=\"1\"\r\n                       :title=\"$t('volunteerForm.save')\"\r\n                       click-event=\"onSave\"\r\n                       @onSave=\"updateProfileOnBackend\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div class=\"row profile-feature\">\r\n          <div class=\"col-12\">\r\n            <div>\r\n              <div class=\"row\">\r\n                <div class=\"col col-12 col-md-6\">\r\n                  <!-- Profile.InvolvedEventCategories -->\r\n                  <div class=\"info-label\">\r\n                    <span class=\"cap-label\">{{ $t('wizard.alreadyInvolved') }}</span>\r\n                    <router-link tabindex=\"0\" to=\"/profile/involvedEventCategories\">\r\n                      <font-awesome-icon icon=\"pencil-alt\" class=\"pencil-edit\" />\r\n                    </router-link>\r\n                  </div>\r\n                  <div class=\"info-panel-body\">\r\n                    <span v-if=\"!hasInvolvedEventCategories\">{{ $t('profile.noInvolvedEventCategories') }}</span>\r\n                    <span v-for=\"i in activeProfileInvolvedEventCategories\" :key=\"i\" class=\"selected-value spr-roundbox-1 m-1\">{{ $t('involvedEventCategories.' + getInvolvedEventCategories(i)) }}</span>\r\n                  </div>\r\n                </div>\r\n                <div class=\"col col-12 col-md-6\">\r\n                  <div class=\"info-label\">\r\n                    <span class=\"cap-label\">{{ $t('profile.sectionInterests') }}</span>\r\n                    <router-link tabindex=\"0\" to=\"/profile/interest\">\r\n                      <font-awesome-icon icon=\"pencil-alt\" class=\"pencil-edit\" />\r\n                    </router-link>\r\n                  </div>\r\n                  <div class=\"info-panel-body\">\r\n                    <span v-for=\"i in profile.areasOfInterest\" :key=\"i\" class=\"selected-value spr-roundbox-1 m-1\">{{ $t('interest.' + getAreaOfInterestText(i)) }}</span>\r\n                    <span v-if=\"!profile.areasOfInterest.length\">{{ $t('profile.noInterests') }}</span>\r\n                  </div>\r\n                </div>\r\n                <div class=\"col col-12 col-md-6\">\r\n                  <div class=\"info-label\">\r\n                    <span class=\"cap-label\">{{ $t('profile.sectionSkills') }}</span>\r\n                    <router-link tabindex=\"0\" to=\"/profile/skills\">\r\n                      <font-awesome-icon icon=\"pencil-alt\" class=\"pencil-edit\" />\r\n                    </router-link>\r\n                  </div>\r\n                  <div class=\"info-panel-body\">\r\n                    <span v-for=\"i in profile.personalSkills\" :key=\"i\" class=\"selected-value spr-roundbox-1 m-1\">{{ $t('skills.' + getPersonalSkillsText(i)) }}</span>\r\n                    <span v-if=\"!profile.personalSkills.length\">{{ $t('profile.noSkills') }}</span>\r\n                  </div>\r\n                </div>\r\n                <div class=\"col col-12 col-md-6\">\r\n                  <div class=\"info-label\">\r\n                    <span class=\"cap-label\">{{ $t('profile.sectionLanguages') }}</span>\r\n                    <router-link tabindex=\"0\" to=\"/profile/languages\">\r\n                      <font-awesome-icon icon=\"pencil-alt\" class=\"pencil-edit\" />\r\n                    </router-link>\r\n                  </div>\r\n                  <div class=\"info-panel-body\">\r\n                    <span v-for=\"i in profile.spokenLanguages\" :key=\"i\" class=\"selected-value spr-roundbox-1 m-1\">{{ normalizeTranslation(i) }}</span>\r\n                    <span v-if=\"!profile.spokenLanguages.length\">{{ $t('profile.noLangaugeSkills') }}</span>\r\n                  </div>\r\n                </div>\r\n                <div class=\"col col-12 col-md-6\">\r\n                  <div class=\"info-label\">\r\n                    <span class=\"cap-label\">{{ $t('profile.sectionLocation') }}</span>\r\n                    <router-link tabindex=\"0\" to=\"/profile/location\">\r\n                      <font-awesome-icon icon=\"pencil-alt\" class=\"pencil-edit\" />\r\n                    </router-link>\r\n                  </div>\r\n                  <div class=\"\">\r\n                    <dl>\r\n                      <dt>{{ $t('profile.section') }}</dt>\r\n                      <dd>{{ userSection }}</dd>\r\n                      <dt>{{ $t('profile.workZip') }}</dt>\r\n                      <dd>{{ $store.state.profile.workingZipCode }}</dd>\r\n                      <dt>{{ $t('adminUserEditor.volunteerOnline') }}</dt>\r\n                      <dd>{{ formatBoolean($store.state.profile.volunteerOnline) }}</dd>\r\n                      <dt>{{ $t('profile.availabilityTimes') }}</dt>\r\n                      <dd>\r\n                        <span v-for=\"(e, i) in $store.state.profile.availabilityTimes\" :key=\"i\">\r\n                          {{ $t('availabilityTimes.' + databaseIdToText(e, $store.state.databaseAvailabilityTimes)) }}<span v-if=\"i + 1 < $store.state.profile.availabilityTimes.length\">, </span>\r\n                        </span>\r\n                        <span v-if=\"!$store.state.profile.availabilityTimes.length\" />\r\n                      </dd>\r\n                      <dt>{{ $t('profile.travelOptions') }}</dt>\r\n                      <dd>\r\n                        <span v-for=\"(e, i) in $store.state.profile.transportation\" :key=\"i\">\r\n                          {{ $t('transportation.' + idToText(e, $store.state.transportation)) }}<span v-if=\"i + 1 < $store.state.profile.transportation.length\">, </span>\r\n                        </span>\r\n                        <span v-if=\"!$store.state.profile.transportation.length\" />\r\n                      </dd>\r\n                      <dt>{{ $t('profile.travelTime') }}</dt>\r\n                      <dd>\r\n                        <span>{{ $store.state.profile.travelTime }} min</span>\r\n                      </dd>\r\n                    </dl>\r\n                  </div>\r\n                </div>\r\n                <div class=\"col col-12 col-md-6\">\r\n                  <div class=\"info-label\">\r\n                    <span class=\"cap-label\">{{ $t('profile.sectionPersonalInfo') }}</span>\r\n                    <router-link tabindex=\"0\" to=\"/profile/personal\">\r\n                      <font-awesome-icon icon=\"pencil-alt\" class=\"pencil-edit\" />\r\n                    </router-link>\r\n                  </div>\r\n                  <div class=\"info-panel-body\">\r\n                    <dl>\r\n                      <dt>{{ $t('profile.phoneNumber') }}</dt>\r\n                      <dd>{{ $store.state.profile.phoneNumber }}</dd>\r\n                      <dt>{{ $t('profile.address') }}</dt>\r\n                      <dd>{{ $store.state.profile.streetAddress }}, {{ $store.state.profile.zipCode }} {{ $store.state.profile.city }}</dd>\r\n                      <dt>{{ $t('profile.dateOfBirth') }}</dt>\r\n                      <dd>{{ formatDate($store.state.profile.age) }}</dd>\r\n                      <dt>{{ $t('profile.nativeLanguage') }}</dt>\r\n                      <dd>{{ normalizeTranslation($store.state.profile.nativeLanguage) }}</dd>\r\n                    </dl>\r\n                  </div>\r\n                </div>\r\n                <div class=\"col-6\">\r\n                  <div class=\"info-label\">\r\n                    <span class=\"cap-label\">{{ $t('profile.sectionMembership') }}</span>\r\n                  </div>\r\n                  <div class=\"info-panel-body\">\r\n                    <dl v-if=\"member\">\r\n                      <MembershipData :member=\"member\"></MembershipData>\r\n                    </dl>\r\n                    <dl>\r\n                      <dt>{{ $t('profile.rcCourses') }}</dt>\r\n                      {{ trainText }}\r\n                    </dl>\r\n                  </div>\r\n                </div>\r\n                <div class=\"col-6 align-middle\">\r\n                  <div v-if=\"showMembershipButton()\" class=\"info-label-black\">\r\n                    <span>{{ $t('profile.joinTitle') }}</span>\r\n                  </div>\r\n                  <SPRButton v-if=\"showMembershipButton()\"\r\n                             :size=\"1\"\r\n                             :title=\"$t('wizard.joinButton')\"\r\n                             click-event=\"tojoin\"\r\n                             @tojoin=\"join\"\r\n                  />\r\n                </div>\r\n                <div class=\"col-12\">\r\n                  <div class=\"info-label\">\r\n                    <span class=\"cap-label\">{{ $t('profile.editUsernameAndPassword') }}</span>\r\n                    <router-link tabindex=\"0\" to=\"/profile/login\">\r\n                      <font-awesome-icon icon=\"pencil-alt\" class=\"pencil-edit\" />\r\n                    </router-link>\r\n                  </div>\r\n                  <div class=\"info-panel-body\">\r\n                    <dl>\r\n                      <dt>{{ $t('profile.email') }}</dt>\r\n                      <dd>{{ $store.state.profile.email }}</dd>\r\n                      <dt>{{ $t('profile.password') }}</dt>\r\n                      <dd>******</dd>\r\n                    </dl>\r\n                  </div>\r\n                </div>\r\n                <div class=\"col-12\">\r\n                  <div class=\"info-label\">\r\n                    <span class=\"cap-label\">{{ $t('profile.editEventAdmins') }}</span>\r\n                    <router-link tabindex=\"0\" to=\"/profile/eventadmins\">\r\n                      <font-awesome-icon icon=\"pencil-alt\" class=\"pencil-edit\" />\r\n                    </router-link>\r\n                  </div>\r\n                  <div class=\"info-panel-body\">\r\n                    <ul v-if=\"$store.state.profile.eventAdmins\" class=\"eventadmins\">\r\n                      <li v-for=\"admin in $store.state.profile.eventAdmins\" :key=\"admin.email\">\r\n                        {{ admin.email }}\r\n                      </li>\r\n                    </ul>\r\n                    <div v-else>\r\n                      {{ $t('profile.noEventAdminsCreated') }}\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n                <!-- Initiate UserProfile Anonomization or Deletion -->\r\n                <div class=\"col-12\">\r\n                  <deleteUserProfile />\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <!-- VOLUNTEER INFO -->\r\n        <div v-if=\"showFriendshipSection\" class=\"profile-feature\">\r\n          <div class=\"row\">\r\n            <div class=\"col-12\">\r\n              <h4>{{ $t('profile.volunteerInfo') }}</h4>\r\n            </div>\r\n          </div>\r\n          <!-- Profile friend profile section -->\r\n          <div v-if=\"$store.state.profile.friendInfo\" class=\"row\">\r\n            <div class=\"col-12\">\r\n              <volunteerprofiledetails :volunteer=\"$store.state.profile.friendInfo\" />\r\n            </div>\r\n          </div>\r\n          <!-- Prompt to create friend profile -->\r\n          <div v-else class=\"row\">\r\n            <div class=\"col-12\">\r\n              <div class=\"profile-feature text-center\">\r\n                <router-link :to=\"'/friend/volunteer/add'\">\r\n                  {{ $t('profile.createFriendProfilePrompt') }}\r\n                </router-link>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"col-12 save\">\r\n          <SPRButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.save')\"\r\n                     click-event=\"onSave\"\r\n                     @onSave=\"updateProfileOnBackend\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprportrait from './SPRPortrait.vue'\r\n  import sprEditorText from './SPRProfileEditor.vue'\r\n  import checkboxlist from './SPRSimpleCheckboxBitmaskList.vue'\r\n  import volunteerprofiledetails from './VolunteerProfileDetails.vue'\r\n  import deleteUserProfile from './profile-editor/DeleteUserProfile.vue'\r\n  import cache from '../mixins/cache.js'\r\n  import moment from 'moment'\r\n  import enumhelper from '../mixins/enums.js'\r\n  import inpututils from '../mixins/inpututils'\r\n  import anonPortrait from '../assets/img/anon-portrait.png'\r\n  import MembershipData from './MembershipData.vue'\r\n  import { CrmDataDto, InvolvedEventCategories, PreferredContactMethods, UserProfileDto } from '@/types'\r\n  import { SprCheckboxValue, SprRadioPillOption, YesNoWarning } from '@/types/custom'\r\n  import { TranslateResult } from 'vue-i18n'\r\n  import SPRRadioList from './SPRRadioList.vue'\r\n  import stringhelper from '@/helpers/stringhelper'\r\n  import SPRButton from './SPRButton.vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    member: undefined | CrmDataDto,\r\n    train: undefined | Array<string>,\r\n    profile: UserProfileDto,\r\n    statusOptions: Array<string>,\r\n    hasChanges: boolean,\r\n    anonPortrait: any\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'Profile',\r\n    components: { sprportrait, sprEditorText, volunteerprofiledetails, deleteUserProfile, checkboxlist, SPRRadioList, SPRButton, MembershipData },\r\n    mixins: [cache, enumhelper, inpututils],\r\n    data (): TemplateComponentData {\r\n      return {\r\n        member: undefined,\r\n        train: undefined,\r\n        profile: { ...this.$store.state.profile } as UserProfileDto,\r\n        statusOptions: ['activeOpen', 'activeNoContact', 'activeNoNew', 'inactive'],\r\n        anonPortrait: anonPortrait,\r\n        hasChanges: false\r\n      }\r\n    },\r\n    computed: {\r\n      option1Value (): YesNoWarning {\r\n        return YesNoWarning.Warning\r\n      },\r\n      hasInvolvedEventCategories (): boolean {\r\n        return this.profile.involvedEventCategories !== 0\r\n      },\r\n      profileStatusOptions (): Array<SprRadioPillOption> {\r\n        return this.$store.state.profileState.map((status: any) => {\r\n          return {\r\n            value: status.id,\r\n            text: this.$t(`profile.${status.text}`)\r\n          }\r\n        })\r\n      },\r\n      activeProfileInvolvedEventCategories (): TranslateResult[] | string[] | number[] {\r\n        var involvedEventCategories = this.$store.state.profile.involvedEventCategories\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        var activeItems = this.getProfileInvolvedEventCategoriesMaskItems(involvedEventCategories)\r\n        return activeItems\r\n      },\r\n      profileInvolvedEventCategories (): TranslateResult | string {\r\n        var involvedEventCategories = this.$store.state.profile.involvedEventCategories\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getProfileInvolvedEventCategoriesMaskTranslation(involvedEventCategories)\r\n      },\r\n      involvedEventCategoriesOptions (): Array<SprCheckboxValue> {\r\n        var self = this\r\n        var validItems = _.filter(this.$store.state.involvedEventCategories, (x) => x.id !== 0)\r\n\r\n        return _.map(validItems, function (val, key) {\r\n          return { value: val.id, text: self.$t('involvedEventCategories.' + val.text).toString() }\r\n        })\r\n      },\r\n      preferredContactMethodOptions (): Array<SprCheckboxValue> {\r\n        var self = this\r\n        var validItems = _.filter(this.$store.state.preferredContactMethods, (x) => x.id !== 0)\r\n\r\n        return _.map(validItems, function (val, key) {\r\n          return { value: val.id, text: self.$t('wizard.preferredContactMethodOption' + val.id).toString() }\r\n        })\r\n      },\r\n      trainText (): string {\r\n        const translationExists = this.$t('profile.rcCourses')\r\n        if (stringhelper.isEmptyOrSpaces(translationExists)) {\r\n          return ''\r\n        }\r\n        if (!this.train || this.train.length === 0) {\r\n          return ' - '\r\n        }\r\n\r\n        return this.train.join(', ')\r\n      },\r\n      portClass (): string {\r\n        var port = (this.$store.state.profile && this.$store.state.profile.portrait) ? this.$store.state.profile.portrait : anonPortrait\r\n        return 'background: url(' + port + '); background-size: cover; background-position: center center;'\r\n      },\r\n      labels (): string {\r\n        return this.$store.state.profile\r\n          ? this.$store.state.profile.firstName + ' ' + this.$store.state.profile.lastName\r\n          : ''\r\n      },\r\n      showFriendshipSection (): boolean {\r\n        // @ts-ignore cannot find mixins\r\n        return this.jwtToken && this.jwtToken.FriendProfileStatus && this.jwtToken.FriendProfileStatus > 1\r\n      },\r\n      userSection (): string {\r\n        var self = this\r\n        return _.find(self.$store.state.sections, function (section) {\r\n          return section.id === self.$store.state.profile.sectionId\r\n        }).name\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.fetchMembership(this.$store.state.profile.profileId)\r\n      this.profile = { ...this.$store.state.profile }\r\n    },\r\n\r\n    beforeRouteLeave (to, from, next) {\r\n      if (!_.isEqual(this.$store.state.profile, this.profile)) {\r\n        this.hasChanges = true\r\n      } else {\r\n        this.hasChanges = false\r\n      }\r\n      if (this.hasChanges) {\r\n        var text = this.$t('profile.unsavedChanges').toString()\r\n        const answer = window.confirm(text)\r\n        if (answer) {\r\n          return next()\r\n        } else {\r\n          return next(false)\r\n        }\r\n      }\r\n      return next()\r\n    },\r\n    methods: {\r\n      updateMotto (newValue: string): void {\r\n        this.profile.motto = newValue\r\n      },\r\n      join (): void {\r\n        this.setWizardModel()\r\n        this.$router.push({\r\n          name: 'join',\r\n          query: {\r\n            source: 'register'\r\n          }\r\n        })\r\n      },\r\n      showMembershipButton (): boolean {\r\n        // 0 = undefined, 3 = terminated\r\n        return !this.member || !this.member.email || this.member.membershipstatus === 0 || this.member.membershipstatus === 3\r\n      },\r\n      updateStory (newValue: string): void {\r\n        this.profile.story = newValue\r\n      },\r\n      updateProfileState (newVal): void {\r\n        this.profile.profileState = newVal\r\n      },\r\n      updateInvolvedEventCategories (newVal: InvolvedEventCategories): void {\r\n        this.profile.involvedEventCategories = newVal\r\n      },\r\n      updatePreferredContactMethods (newVal: PreferredContactMethods): void {\r\n        this.profile.preferredContactMethods = newVal\r\n      },\r\n      updateProfileOnBackend (): void {\r\n        this.$store.commit('profileEdit', this.profile)\r\n        // @ts-ignore cannot find mixins\r\n        this.updateOwnProfile((response) => {\r\n          // @ts-ignore cannot find mixins\r\n          this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n        }, (fail) => {\r\n          // @ts-ignore cannot find mixins\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        })\r\n      },\r\n      formatBoolean (val): string {\r\n        if (val != null) {\r\n          // @ts-ignore cannot find mixins\r\n          return this.tBool(val)\r\n        }\r\n        return '-'\r\n      },\r\n      setWizardModel (): void {\r\n        //    profile: UserProfileDto\r\n        this.$store.state.wizardModel.email = this.$store.state.profile.email\r\n        this.$store.state.wizardModel.phoneNumber = this.$store.state.profile.phoneNumber\r\n        this.$store.state.wizardModel.firstName = this.$store.state.profile.firstName\r\n        this.$store.state.wizardModel.lastName = this.$store.state.profile.lastName\r\n        this.$store.state.wizardModel.streetAddress = this.$store.state.profile.streetAddress\r\n        this.$store.state.wizardModel.zipCode = this.$store.state.profile.zipCode\r\n        this.$store.state.wizardModel.city = this.$store.state.profile.city\r\n        this.$store.state.wizardModel.country = this.$store.state.profile.country\r\n        this.$store.state.wizardModel.age = this.$store.state.profile.age\r\n        this.$store.state.wizardModel.travelTime = this.$store.state.profile.travelTime\r\n        this.$store.state.wizardModel.nativeLanguage = this.$store.state.profile.nativeLanguage\r\n        this.$store.state.wizardModel.preferredContactMethods = this.profile.preferredContactMethods\r\n        this.$store.state.wizardModel.dataProtectionAccepted = this.profile.dataProtectionAccepted\r\n        this.$store.state.wizardModel.codeOfEthicsAccepted = this.profile.codeOfEthicsAccepted\r\n        this.$store.state.wizardModel.areasOfInterest = this.profile.areasOfInterest\r\n        this.$store.state.wizardModel.involvedEventCategories = this.profile.involvedEventCategories\r\n        this.$store.state.wizardModel.availabilityTimes = this.$store.state.profile.availabilityTimes\r\n        this.$store.state.wizardModel.spokenLanguages = this.profile.spokenLanguages\r\n        this.$store.state.wizardModel.personalSkills = this.profile.personalSkills\r\n        this.$store.state.wizardModel.transportation = this.$store.state.profile.transportation\r\n        this.$store.state.wizardModel.workingZipCode = this.$store.state.profile.workingZipCode\r\n        this.$store.state.wizardModel.sectionId = this.$store.state.profile.sectionId\r\n        this.$store.state.wizardModel.profileState = this.profile.profileState\r\n        this.$store.state.wizardModel.story = this.profile.story\r\n        this.$store.state.wizardModel.volunteerOnline = this.$store.state.profile.volunteerOnline\r\n      },\r\n      fetchMembership (id): void {\r\n        const self = this\r\n        const url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.membership[0].replace('{0}', id)\r\n        // @ts-ignore cannot find mixins\r\n        this.fetchItem(url, this.expSeconds(3600), function (x) {\r\n          self.member = x\r\n        })\r\n\r\n        const url2 = this.$store.state.apiBases.eventservice + this.$store.state.apiEndpoints.trainings[0].replace('{0}', id)\r\n        // @ts-ignore cannot find mixins\r\n        this.fetchItem(url2, this.expSeconds(300), function (x) {\r\n          self.train = x\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import \"../assets/scss/_variables.scss\";\r\n$portrait-size: 100px;\r\n$progress-size: 100px;\r\n.warning-option {\r\n  margin-left: 11px;\r\n  margin-right: 11px;\r\n}\r\n.warning-banner {\r\n  margin-top: 6px;\r\n  margin-left: -47%;\r\n  max-width: 88%;\r\n  padding: 8px 0;\r\n  display: flex;\r\n  background: lemonchiffon;\r\n}\r\n.save {\r\n  text-align: right;\r\n}\r\n.withbutton {\r\n  padding-bottom: 30px;\r\n}\r\n.profilepage {\r\n  margin-top: 50px;\r\n\r\n  .subheader {\r\n    color:$brand-red;\r\n    text-transform: uppercase;\r\n    font-family: $font-bold;\r\n    margin: 0px 0 20px 0;\r\n    display:block;\r\n    font-size: 14px;\r\n  }\r\n\r\n.profile-feature {\r\n    background-color:$brand-white;\r\n    padding:15px;\r\n    margin-bottom: 30px;\r\n  }\r\n\r\n  .profile-state {\r\n    margin-bottom: 30px;\r\n  }\r\n\r\n  .progress-container {\r\n    padding: 15px 15px;\r\n    overflow: hidden;\r\n\r\n    .progress-size {\r\n      height: $progress-size;\r\n      width: $progress-size;\r\n      display: inline-block;\r\n    }\r\n  }\r\n\r\n  .portrait {\r\n    width: $portrait-size;\r\n    height: $portrait-size;\r\n    border-radius: 50%;\r\n  }\r\n\r\n  .msg-label {\r\n    padding: 10px 20px 10px 20px;\r\n  }\r\n\r\n  .info-label {\r\n    padding: 15px 0;\r\n    color: $brand-red;\r\n    border-bottom: none;\r\n\r\n    .pencil-edit {\r\n      margin-left: 5px;\r\n    }\r\n  }\r\n\r\n  .align-middle {\r\n  display: flex;\r\n  flex-direction: column;\r\n  align-items: center;\r\n  justify-content: center;\r\n}\r\n\r\n  .info-label-black {\r\n    padding: 15px 0;\r\n    color: $brand-black;\r\n    border-bottom: none;\r\n\r\n    .pencil-edit {\r\n      margin-left: 5px;\r\n    }\r\n  }\r\n  .info-panel-body {\r\n    margin-bottom: 30px;\r\n\r\n    .eventadmins {\r\n      padding: 0;\r\n      li {\r\n        list-style-type: none;\r\n        margin: 0;\r\n        padding: 0;\r\n      }\r\n    }\r\n  }\r\n\r\n  .main-btn {\r\n    margin: 10px 0;\r\n  }\r\n\r\n  .panel {\r\n    background: $brand-white;\r\n    height: 100%;\r\n  }\r\n\r\n  .white-background {\r\n    background: $brand-white;\r\n  }\r\n\r\n  .selected-value {\r\n    padding: 5px 10px;\r\n    color: $brand-red;\r\n    background-color:$brand-white;\r\n    border: 2px solid $brand-red;\r\n    display: inline-block;\r\n    font-family: \"Signa-Book\", Sans-Serif;\r\n    font-weight: bold;\r\n    font-size: 13px;\r\n  }\r\n\r\n  .image-editor-container {\r\n    position: relative;\r\n\r\n    .image-editor-link {\r\n      position: absolute;\r\n      bottom: -8px;\r\n      right: -20px;\r\n    }\r\n  }\r\n\r\n  .break-heading {\r\n    overflow-wrap: break-word;\r\n  }\r\n}\r\n@media (max-width: $media-lg-max) {\r\n  .warning-banner {\r\n    margin-left: -35%;\r\n  }\r\n}\r\n@media (max-width: $media-md-max) {\r\n  .warning-banner {\r\n    margin-left: -10%;\r\n  }\r\n}\r\n@media (max-width: $media-sm-max) {\r\n  .warning-banner {\r\n    margin-left: 0%;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Profile.vue?vue&type=template&id=a459e9cc&scoped=true\"\nimport script from \"./Profile.vue?vue&type=script&lang=ts\"\nexport * from \"./Profile.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Profile.vue?vue&type=style&index=0&id=a459e9cc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"a459e9cc\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"comp-profile-editor col-12\"},[_c('div',{staticClass:\"row page-header py-2\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12\"},[_c('router-link',{staticClass:\"d-inline-block\",attrs:{\"to\":\"/profile\"}},[_c('font-awesome-icon',{attrs:{\"icon\":\"chevron-left\",\"aria-hidden\":\"true\"}}),_vm._v(\" \"+_vm._s(_vm.$t('profile.back'))+\" \")],1)],1),_c('div',{staticClass:\"col col-12\"},[_c('span',{staticClass:\"h3 editor-header\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(_vm._s(_vm.headerTranslation))])])])])]),_c('div',{staticClass:\"row page-body\"},[_c('div',{staticClass:\"container\"},[(_vm.chooseEditor !== null)?_c(_vm.chooseEditor,{tag:\"div\",attrs:{\"editor\":_vm.editor},on:{\"onChange\":_vm.updateChildData,\"onSave\":_vm.childDataSaved,\"onCancel\":_vm.childCanceled}}):_c('div',[_vm._v(\" Illegal editor. \")])],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.isLegal)?_c('div',{staticClass:\"comp-profile-editor-checkbox row\"},[_c('div',{staticClass:\"col-12 text-center\"},[(_vm.editor === 'languages')?_c('span',{staticClass:\"cap-label py-5 d-inline-block\"},[_vm._v(_vm._s(_vm.$t('profile.languageEditorIngress')))]):_c('span',{staticClass:\"cap-label py-5 d-inline-block\"},[_vm._v(_vm._s(_vm.$t('profile.checkboxEditorIngress')))])]),_c('div',{staticClass:\"col-12 text-center\"},[_vm._l((_vm.wholeSet),function(entry){return _c('sprcheckbox',{key:'cb_' + _vm._uid + '_' + entry,staticClass:\"checkbox\",attrs:{\"title\":_vm.editor === 'languages' ? _vm.normalizeTranslation(entry) : _vm.$t(_vm.translationPrefix + '.' + entry),\"click-event\":\"on-click\",\"value\":_vm.editor === 'languages' ? entry : _vm.resolveId(entry),\"tabindex\":0,\"collection\":_vm.actualData},on:{\"on-click\":_vm.editSelection}})}),(_vm.editor === 'languages')?_c('div',{staticClass:\"col-12 text-center\"},[_c('sprlanguageselector',{staticClass:\"dropdown spr-roundbox-1\",attrs:{\"select-event\":\"custom-language\"},on:{\"custom-language\":_vm.editSelection}})],1):_vm._e()],2),(_vm.loading)?_c('div',{staticClass:\"brand-red centerloading\"},[_c('loading')],1):_vm._e(),_c('div',{staticClass:\"row my-5\",staticStyle:{\"padding-top\":\"5%\"}},[_c('div',{staticClass:\"col-3\"}),_c('div',{staticClass:\"col-3 col-md-3 my-1\"},[_c('sprbutton',{staticClass:\"fill-width\",attrs:{\"click-event\":\"save-event\",\"title\":_vm.$t('profile.save'),\"size\":1,\"bordersize\":2},on:{\"save-event\":_vm.save}})],1),_c('div',{staticClass:\"col-3 col-md-3 my-1\"},[_c('sprbutton',{staticClass:\"fill-width\",attrs:{\"click-event\":\"cancel-event\",\"title\":_vm.$t('profile.cancel'),\"size\":1,\"bordersize\":2},on:{\"cancel-event\":_vm.cancelButton}})],1)])]):_c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"isLegal\" class=\"comp-profile-editor-checkbox row\">\r\n    <div class=\"col-12 text-center\">\r\n      <span v-if=\"editor === 'languages'\" class=\"cap-label py-5 d-inline-block\">{{ $t('profile.languageEditorIngress') }}</span>\r\n      <span v-else class=\"cap-label py-5 d-inline-block\">{{ $t('profile.checkboxEditorIngress') }}</span>\r\n    </div>\r\n    <div class=\"col-12 text-center\">\r\n      <sprcheckbox v-for=\"(entry) in wholeSet\"\r\n                   :key=\"'cb_' + _uid + '_' + entry\"\r\n                   :title=\"editor === 'languages' ? normalizeTranslation(entry) : $t(translationPrefix + '.' + entry)\"\r\n                   click-event=\"on-click\"\r\n                   :value=\"editor === 'languages' ? entry : resolveId(entry)\"\r\n                   :tabindex=\"0\"\r\n                   :collection=\"actualData\"\r\n                   class=\"checkbox\"\r\n                   @on-click=\"editSelection\"\r\n      />\r\n      <div v-if=\"editor === 'languages'\" class=\"col-12 text-center\">\r\n        <sprlanguageselector select-event=\"custom-language\"\r\n                             class=\"dropdown spr-roundbox-1\"\r\n                             @custom-language=\"editSelection\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"loading\" class=\"brand-red centerloading\">\r\n      <loading />\r\n    </div>\r\n    <!-- Save and cancel buttons -->\r\n    <div class=\"row my-5\" style=\"padding-top: 5%\">\r\n      <div class=\"col-3\"></div>\r\n      <div class=\"col-3 col-md-3 my-1\">\r\n        <sprbutton click-event=\"save-event\" :title=\"$t('profile.save')\"\r\n                   :size=\"1\"\r\n                   :bordersize=\"2\" class=\"fill-width\" @save-event=\"save\"\r\n        />\r\n      </div>\r\n      <div class=\"col-3 col-md-3 my-1\">\r\n        <sprbutton click-event=\"cancel-event\" :title=\"$t('profile.cancel')\"\r\n                   :size=\"1\"\r\n                   :bordersize=\"2\" class=\"fill-width\" @cancel-event=\"cancelButton\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <div v-else />\r\n  </div>\r\n</template>\r\n\r\n<script lang = \"ts\">\r\n  import sprcheckbox from '../SPRCheckbox.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import Vue from 'vue'\r\n  import { TranslateResult } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n\r\n  import sprlanguageselector from '../SPRLanguageSelector.vue'\r\n\r\n  import enumhelper from '../../mixins/enums.js'\r\n  // the data object\r\n\r\n  export interface TemplateComponentData {\r\n    hasChanges: boolean,\r\n    isLoading: boolean,\r\n    skillsData: any,\r\n    interestsData: any,\r\n    languagesData: any\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'ProfileEditorCheckbox',\r\n    components: {\r\n      sprcheckbox, sprlanguageselector, sprbutton, loading },\r\n    mixins: [enumhelper],\r\n\r\n    props: {\r\n      editor: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        //\r\n        skillsData: this.$store.state.profile.personalSkills,\r\n        interestsData: this.$store.state.profile.areasOfInterest,\r\n        languagesData: this.$store.state.profile.spokenLanguages,\r\n        isLoading: false,\r\n        hasChanges: false\r\n      }\r\n    },\r\n    computed: {\r\n      actualData: function () {\r\n        switch (this.editor) {\r\n        case 'skills':\r\n          return this.skillsData\r\n        case 'interest':\r\n          return this.interestsData\r\n        case 'languages':\r\n          return this.languagesData\r\n        }\r\n        return []\r\n      },\r\n      objectSet: function () {\r\n        switch (this.editor) {\r\n        case 'skills':\r\n          return this.$store.state.translations[this.firstLanguage].skills\r\n        case 'interest':\r\n          return this.$store.state.translations[this.firstLanguage].interest\r\n        case 'languages':\r\n          return _.pickBy(this.$store.state.translations[this.firstLanguage].languages, (lang, key) => { return (key !== 'none' && key.length === 2) })\r\n        }\r\n        return []\r\n      },\r\n      idSet: function () {\r\n        switch (this.editor) {\r\n        case 'skills':\r\n          return this.$store.state.profilePersonalSkills\r\n        case 'interest':\r\n          return this.$store.state.profileAreasOfInterest\r\n        case 'languages':\r\n          return null\r\n        }\r\n        return []\r\n      },\r\n      wholeSet: function () {\r\n        if (this.editor === 'languages') {\r\n          return _.union(Object.keys(this.objectSet), this.$store.state.profile.spokenLanguages)\r\n        }\r\n        return Object.keys(this.objectSet)\r\n      },\r\n      vuixMutation: function () {\r\n        if (this.isLegal) {\r\n          return 'profile' + this.editor\r\n        }\r\n        return ''\r\n      },\r\n      isLegal: function () {\r\n        return (this.editor === 'skills' || this.editor === 'interest' || this.editor === 'languages')\r\n      },\r\n      translationPrefix: function () {\r\n        return this.isLegal ? this.editor : ''\r\n      }\r\n    },\r\n    mounted: function () {\r\n      if (!this.isLegal) {\r\n        this.$router.push('/profile')\r\n      }\r\n    },\r\n    methods: {\r\n      editSelection: function (value, truth) {\r\n        if (truth) {\r\n          // value was just enabled\r\n          if (this.actualData.indexOf(value) === -1) {\r\n            // actual data does not already contain this item, add it\r\n            var add = this.actualData.slice()\r\n            add.push(value)\r\n            switch (this.editor) {\r\n            case 'skills':\r\n              this.skillsData = add\r\n              break\r\n            case 'interest':\r\n              this.interestsData = add\r\n              break\r\n            case 'languages':\r\n              this.languagesData = add\r\n              break\r\n            }\r\n          }\r\n        } else {\r\n          // value was just disabled\r\n\r\n          var index = this.actualData.indexOf(value)\r\n          if (index !== -1) {\r\n            // actual data does already contain this item, remove it\r\n            var remove = this.actualData.slice()\r\n            remove.splice(index, 1)\r\n            switch (this.editor) {\r\n            case 'skills':\r\n              this.skillsData = remove\r\n              break\r\n            case 'interest':\r\n              this.interestsData = remove\r\n              break\r\n            case 'languages':\r\n              this.languagesData = remove\r\n              break\r\n            }\r\n          }\r\n        }\r\n\r\n        switch (this.editor) {\r\n        case 'skills':\r\n          if (!_.isEqual(this.$store.state.profile.personalSkills, this.skillsData)) {\r\n            this.hasChanges = true\r\n          } else {\r\n            this.hasChanges = false\r\n          }\r\n          break\r\n        case 'interest':\r\n          if (!_.isEqual(this.$store.state.profile.areasOfInterest, this.interestsData)) {\r\n            this.hasChanges = true\r\n          } else {\r\n            this.hasChanges = false\r\n          }\r\n          break\r\n        case 'languages':\r\n          if (!_.isEqual(this.$store.state.profile.spokenLanguages, this.languagesData)) {\r\n            this.hasChanges = true\r\n          } else {\r\n            this.hasChanges = false\r\n          }\r\n          break\r\n        }\r\n        this.$emit('onChange', this.hasChanges)\r\n      },\r\n      resolveId: function (value) {\r\n        switch (this.editor) {\r\n        case 'skills':\r\n          return _.find(this.$store.state.profilePersonalSkills, function (o) { return o.text === value }).id\r\n        case 'interest':\r\n          return _.find(this.$store.state.profileAreasOfInterest, function (o) { return o.text === value }).id\r\n        case 'languages':\r\n          return null\r\n        }\r\n      },\r\n      cancelButton: function () {\r\n        this.$emit('onCancel')\r\n        this.$router.go(-1)\r\n      },\r\n      save: function () {\r\n        this.isLoading = true\r\n        switch (this.editor) {\r\n        case 'skills':\r\n          this.$store.state.profile.personalSkills = this.skillsData\r\n          break\r\n        case 'interest':\r\n          this.$store.state.profile.areasOfInterest = this.interestsData\r\n          break\r\n        case 'languages':\r\n          this.$store.state.profile.spokenLanguages = this.languagesData\r\n          break\r\n        }\r\n        // @ts-ignore cannot find mixins\r\n        this.updateOwnProfile(succ => {\r\n          // @ts-ignore cannot find mixins\r\n          this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n          this.$emit('onSave')\r\n          this.$router.go(-1)\r\n          this.isLoading = false\r\n        }, f => {\r\n          // @ts-ignore cannot find mixins\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n          this.isLoading = false\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '~@/assets/scss/_variables.scss';\r\n.comp-profile-editor-checkbox {\r\n  .checkbox {\r\n    color: $brand-black;\r\n    border: 1px solid $brand-grey3;\r\n    box-shadow: none;\r\n  }\r\n\r\n  .dropdown {\r\n    margin: 30px auto;\r\n    max-width: 300px;\r\n  }\r\n  .page-body {\r\n    min-height: calc(100vh - 466px);\r\n    background: $brand-white;\r\n    padding-bottom: 150px;\r\n    position: relative;\r\n\r\n    .button-footer {\r\n      position: absolute;\r\n      bottom: 0px;\r\n      left: 0;\r\n      right: 0;\r\n      height: 140px;\r\n      margin-top: 10px;\r\n    }\r\n  }\r\n\r\n  .inputs {\r\n    width: calc(100% - 20px);\r\n    max-width: 300px;\r\n    border: 2px solid $brand-red;\r\n    background: $brand-white;\r\n    padding-top: 14px;\r\n    padding-bottom: 14px;\r\n    color: $brand-red;\r\n    &:hover\r\n\r\n    {\r\n      color: $brand-white;\r\n      background: $brand-red;\r\n    }\r\n  }\r\n  .centerloading {\r\n    display: flex;\r\n    width: 100%;\r\n    height: 100%;\r\n    position: absolute;\r\n\r\n    span {\r\n      margin: auto;\r\n      justify-content: center;\r\n      align-items: center;\r\n      z-index: 999;\r\n    }\r\n  }\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor-Checkbox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor-Checkbox.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Editor-Checkbox.vue?vue&type=template&id=6e0978a2&scoped=true\"\nimport script from \"./Editor-Checkbox.vue?vue&type=script&lang=ts\"\nexport * from \"./Editor-Checkbox.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Editor-Checkbox.vue?vue&type=style&index=0&id=6e0978a2&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"6e0978a2\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row comp-profile-editor-personal mx-auto text-center my-5\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprvalidation',{staticClass:\"mb-5\",attrs:{\"validation-errors\":_vm.validationErrors}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-6\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"editor-field\",attrs:{\"hint\":_vm.$t('wizard.firstNameField'),\"is-valid\":!_vm.errors.has('firstNameField'),\"name\":\"firstNameField\"},model:{value:(_vm.personal.firstName),callback:function ($$v) {_vm.$set(_vm.personal, \"firstName\", $$v)},expression:\"personal.firstName\"}})],1),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"editor-field\",attrs:{\"hint\":_vm.$t('wizard.lastNameField'),\"is-valid\":!_vm.errors.has('lastNameField'),\"name\":\"lastNameField\"},model:{value:(_vm.personal.lastName),callback:function ($$v) {_vm.$set(_vm.personal, \"lastName\", $$v)},expression:\"personal.lastName\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.isPhoneRequired),expression:\"isPhoneRequired\"}],staticClass:\"editor-field\",attrs:{\"hint\":_vm.$t('wizard.phoneNumberField'),\"is-valid\":!_vm.errors.has('phoneNumberField'),\"name\":\"phoneNumberField\"},model:{value:(_vm.personal.phoneNumber),callback:function ($$v) {_vm.$set(_vm.personal, \"phoneNumber\", $$v)},expression:\"personal.phoneNumber\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"editor-field\",attrs:{\"hint\":_vm.$t('wizard.streetAddressField'),\"is-valid\":!_vm.errors.has('streetAddressField'),\"name\":\"streetAddressField\"},model:{value:(_vm.personal.streetAddress),callback:function ($$v) {_vm.$set(_vm.personal, \"streetAddress\", $$v)},expression:\"personal.streetAddress\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-4\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|digits:5'),expression:\"'required|digits:5'\"}],staticClass:\"editor-field\",attrs:{\"hint\":_vm.$t('wizard.zipCodeField'),\"is-valid\":!_vm.errors.has('zipCodeField'),\"name\":\"zipCodeField\"},model:{value:(_vm.personal.zipCode),callback:function ($$v) {_vm.$set(_vm.personal, \"zipCode\", $$v)},expression:\"personal.zipCode\"}})],1),_c('div',{staticClass:\"col-12 col-md-8\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"editor-field\",attrs:{\"hint\":_vm.$t('wizard.cityField'),\"is-valid\":!_vm.errors.has('cityField'),\"name\":\"cityField\"},model:{value:(_vm.personal.city),callback:function ($$v) {_vm.$set(_vm.personal, \"city\", $$v)},expression:\"personal.city\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"editor-field\",attrs:{\"hint\":_vm.$t('wizard.countryField'),\"is-valid\":!_vm.errors.has('countryField'),\"name\":\"countryField\"},model:{value:(_vm.personal.country),callback:function ($$v) {_vm.$set(_vm.personal, \"country\", $$v)},expression:\"personal.country\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mt-2 wrap-date\"},[_c('sprdatepicker',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.birthdateValidation),expression:\"birthdateValidation\"}],staticClass:\"d-inline-block fill-width\",attrs:{\"in-title\":_vm.$t('wizard.ageField') + ': ',\"placeholder\":_vm.$t('wizard.ageField'),\"required\":true,\"name\":\"ageField\",\"has-errors\":_vm.errors.has('ageField')},model:{value:(_vm.personal.age),callback:function ($$v) {_vm.$set(_vm.personal, \"age\", $$v)},expression:\"personal.age\"}})],1),_c('div',{staticClass:\"col-12 col-md-8 mt-2\"},[_c('sprnativelanguageselector',{staticClass:\"spr-roundbox-1 pl-3\",attrs:{\"lang-pool\":_vm.$store.state.profile.spokenLanguages},model:{value:(_vm.personal.nativeLanguage),callback:function ($$v) {_vm.$set(_vm.personal, \"nativeLanguage\", $$v)},expression:\"personal.nativeLanguage\"}})],1)]),(!_vm.pending)?_c('div',{staticClass:\"row py-4\"},[_c('div',{staticClass:\"col-12 col-md-6 my-1\"},[_c('sprbutton',{staticClass:\"fill-width\",attrs:{\"click-event\":\"save-event\",\"title\":_vm.$t('profile.save'),\"size\":1,\"bordersize\":2},on:{\"save-event\":_vm.onSave}})],1),_c('div',{staticClass:\"col-12 col-md-6 my-1\"},[_c('sprbutton',{staticClass:\"fill-width\",attrs:{\"click-event\":\"cancel-event\",\"title\":_vm.$t('profile.cancel'),\"size\":1,\"bordersize\":2},on:{\"cancel-event\":_vm.onCancel}})],1)]):_c('div',{staticClass:\"row pending\"},[_c('div',{staticClass:\"col-12 py-4\"},[_c('loading')],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import moment from 'moment'\r\n\r\nconst datehelper = {\r\n  // Custom function to parse dates in dd.MM.yyyy format\r\n  parseDateFromString (dateString) {\r\n    const parts = dateString.split('.')\r\n\r\n    const d = new Date(parts[2], parts[1] - 1, parts[0])\r\n    return d\r\n  },\r\n  convertToUTC(date: Date): Date | undefined {\r\n    if (!date) {\r\n      return undefined\r\n    } \r\n\r\n    const utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()))\r\n    return new Date(utcDate.toISOString())\r\n  },\r\n  toUtcWithoutTime (date: Date | undefined) {\r\n    if (!date) {\r\n      return\r\n    }\r\n    // Create a UTC date for January 1, 2023, at 00:00:00\r\n    return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0))\r\n  },\r\n  finnishDateFormat (date: Date) {\r\n    return moment(date).format('DD.MM.YYYY')\r\n  },\r\n  // Gets the age in years\r\n  calculateAge (bDate) {\r\n    return moment().diff(moment(bDate), 'years')\r\n  },\r\n  calculateDayDiff (pDate) {\r\n    if (!pDate) {\r\n      return\r\n    }\r\n    return moment().diff(moment(pDate), 'days')\r\n  },\r\n  birthdateValidation (): string {\r\n    const date = new Date()\r\n    const nowDay = date.getDate()\r\n    const nowDayString = nowDay < 10 ? '0' + nowDay : nowDay.toString()\r\n    let nowMonth = date.getMonth()\r\n    if (nowMonth === 0) {\r\n      nowMonth = 1\r\n    }\r\n    const nowMonthString = nowMonth < 10 ? '0' + nowMonth : nowMonth.toString()\r\n    const nowYear = date.getUTCFullYear() - 2\r\n    const currentDateAsString = `${nowDayString}.${nowMonthString}.${nowYear}`\r\n\r\n    return `required|dateisbefore:${currentDateAsString}`\r\n  }\r\n}\r\n\r\nexport const { convertToUTC, toUtcWithoutTime, parseDateFromString, finnishDateFormat } = datehelper;\r\nexport default datehelper","<template>\r\n  <div class=\"row comp-profile-editor-personal mx-auto text-center my-5\">\r\n    <div class=\"col-12\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <sprvalidation :validation-errors=\"validationErrors\" class=\"mb-5\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <!-- first name -->\r\n        <div class=\"col-12 col-md-6\">\r\n          <sprinput v-model=\"personal.firstName\" v-validate=\"'required'\"\r\n                    :hint=\"$t('wizard.firstNameField')\" class=\"editor-field\"\r\n                    :is-valid=\"!errors.has('firstNameField')\" name=\"firstNameField\"\r\n          />\r\n        </div>\r\n        <!-- last name -->\r\n        <div class=\"col-12 col-md-6\">\r\n          <sprinput v-model=\"personal.lastName\" v-validate=\"'required'\"\r\n                    :hint=\"$t('wizard.lastNameField')\" class=\"editor-field\"\r\n                    :is-valid=\"!errors.has('lastNameField')\" name=\"lastNameField\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <!-- phone -->\r\n        <div class=\"col-12\">\r\n          <sprinput v-model=\"personal.phoneNumber\" v-validate=\"isPhoneRequired\"\r\n                    :hint=\"$t('wizard.phoneNumberField')\" class=\"editor-field\"\r\n                    :is-valid=\"!errors.has('phoneNumberField')\" name=\"phoneNumberField\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <!-- street address -->\r\n        <div class=\"col-12\">\r\n          <sprinput v-model=\"personal.streetAddress\" v-validate=\"'required'\"\r\n                    :hint=\"$t('wizard.streetAddressField')\" class=\"editor-field\"\r\n                    :is-valid=\"!errors.has('streetAddressField')\" name=\"streetAddressField\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <!-- zip code -->\r\n        <div class=\"col-12 col-md-4\">\r\n          <sprinput v-model=\"personal.zipCode\" v-validate=\"'required|digits:5'\"\r\n                    :hint=\"$t('wizard.zipCodeField')\" class=\"editor-field\"\r\n                    :is-valid=\"!errors.has('zipCodeField')\" name=\"zipCodeField\"\r\n          />\r\n        </div>\r\n        <!-- city == postitoimipaikka -->\r\n        <div class=\"col-12 col-md-8\">\r\n          <sprinput v-model=\"personal.city\" v-validate=\"'required'\"\r\n                    :hint=\"$t('wizard.cityField')\" class=\"editor-field\"\r\n                    :is-valid=\"!errors.has('cityField')\" name=\"cityField\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <!-- country -->\r\n        <div class=\"col-12\">\r\n          <sprinput v-model=\"personal.country\" v-validate=\"'required'\"\r\n                    :hint=\"$t('wizard.countryField')\" class=\"editor-field\"\r\n                    :is-valid=\"!errors.has('countryField')\" name=\"countryField\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <!-- age -->\r\n        <div class=\"col-12 mt-2 wrap-date\">\r\n          <sprdatepicker v-model=\"personal.age\"\r\n                         v-validate=\"birthdateValidation\"\r\n                         :in-title=\"$t('wizard.ageField') + ': '\"\r\n                         :placeholder=\"$t('wizard.ageField')\"\r\n                         :required=\"true\"\r\n                         class=\"d-inline-block fill-width\"\r\n                         name=\"ageField\"\r\n                         :has-errors=\"errors.has('ageField')\"\r\n          />\r\n        </div>\r\n        <!-- native language -->\r\n        <div class=\"col-12 col-md-8 mt-2\">\r\n          <sprnativelanguageselector v-model=\"personal.nativeLanguage\"\r\n                                     class=\"spr-roundbox-1 pl-3\"\r\n                                     :lang-pool=\"$store.state.profile.spokenLanguages\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <!-- save and cancel buttons -->\r\n      <div v-if=\"!pending\" class=\"row py-4\">\r\n        <div class=\"col-12 col-md-6 my-1\">\r\n          <sprbutton click-event=\"save-event\" :title=\"$t('profile.save')\"\r\n                     :size=\"1\"\r\n                     :bordersize=\"2\" class=\"fill-width\" @save-event=\"onSave\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 col-md-6 my-1\">\r\n          <sprbutton click-event=\"cancel-event\" :title=\"$t('profile.cancel')\"\r\n                     :size=\"1\"\r\n                     :bordersize=\"2\" class=\"fill-width\" @cancel-event=\"onCancel\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div v-else class=\"row pending\">\r\n        <div class=\"col-12 py-4\">\r\n          <loading />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n<script lang = \"ts\">\r\n  import sprinput from '../SPRInput.vue'\r\n  import sprnativelanguageselector from '../SPRNativeLanguageSelector.vue'\r\n  import sprdatepicker from '../SPRSimpleDatepicker.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import locationutils from '../../mixins/locationutils.js'\r\n  import datetwoyears from '../../helpers/datehelper'\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    initialPersonal: any,\r\n    personal: any,\r\n    data: any,\r\n    hasChanges: boolean,\r\n    pending: boolean,\r\n    validatedFields: string[]\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'ProfileEditorPersonal',\r\n    components: { sprinput, sprnativelanguageselector, sprdatepicker, sprbutton, sprvalidation, loading },\r\n    mixins: [locationutils],\r\n    data (): TemplateComponentData {\r\n      const profile = this.$store.state.profile\r\n      const initialPersonal = {\r\n        firstName: profile.firstName,\r\n        lastName: profile.lastName,\r\n        phoneNumber: profile.phoneNumber,\r\n        streetAddress: profile.streetAddress,\r\n        zipCode: profile.zipCode,\r\n        city: profile.city,\r\n        country: profile.country,\r\n        age: new Date(profile.age),\r\n        nativeLanguage: profile.nativeLanguage\r\n      }\r\n      return {\r\n        personal: { ...initialPersonal }, // Use spread operator to create a copy\r\n        initialPersonal, // Store initial values for comparison\r\n        hasChanges: false,\r\n        pending: false,\r\n        validatedFields: ['firstNameField', 'lastNameField', 'streetAddressField', 'zipCodeField', 'cityField', 'countryField', 'ageField', 'phoneNumberField']\r\n      } as TemplateComponentData\r\n    },\r\n    computed: {\r\n      birthdateValidation (): any {\r\n        return datetwoyears.birthdateValidation()\r\n      },\r\n      validationErrors (): any {\r\n        if (!this.validatedFields) {\r\n          return []\r\n        }\r\n\r\n        var arr = [] as Array<any>\r\n        var self = this\r\n        this.validatedFields.forEach(function (fieldName) {\r\n          var err = _.find(self.errors.items, function (item) {\r\n            return item.field === fieldName\r\n          })\r\n          if (err != null) {\r\n            arr.push(['wizard.' + err.field, String(err.rule), String(err.msg)])\r\n          }\r\n        })\r\n        return arr\r\n      },\r\n      zipCode (): string {\r\n        return this.personal.zipCode\r\n      },\r\n      isPhoneRequired (): string {\r\n        return this.$store.state.profile.friendInfo ? 'required' : ''\r\n      }\r\n    },\r\n    watch: {\r\n      zipCode: function (val) {\r\n        if (val.length === 5) {\r\n          var self = this\r\n          this.cityFromZip(val, this, response => {\r\n            self.personal.city = self.$store.state.language === 'se' ? response.body.citySe : response.body.cityFi\r\n          })\r\n        }\r\n      },\r\n      personal: {\r\n        handler (newVal, oldVal) {\r\n          // Do something when any property within personal changes\r\n          this.checkForChanges()\r\n        },\r\n        deep: true // Watch for deep changes within the object\r\n      }\r\n    },\r\n    methods: {\r\n      vuixCommit: function () {\r\n        this.$store.commit('profilepersonal', this.personal)\r\n      },\r\n      checkForChanges () {\r\n        this.hasChanges = false\r\n        // Compare each property of personal with its counterpart in initialPersonal\r\n        for (const key in this.personal) {\r\n          if (key === 'age') { //age needs to be checked separately, as the date on the UI is of a different format than the date from the $store.state object.\r\n            var newVal = this.personal[key]\r\n            var oldVal = this.initialPersonal[key]\r\n\r\n            // If the current property is a date, convert it to a Unix timestamp\r\n            if (newVal instanceof Date && oldVal instanceof Date) {\r\n              newVal = newVal.getTime()\r\n              oldVal = oldVal.getTime()\r\n            }\r\n            if (newVal !== oldVal) {\r\n              this.hasChanges = true\r\n              break\r\n            }\r\n          } else {\r\n            if (this.personal[key] !== this.initialPersonal[key]) {\r\n              this.hasChanges = true\r\n              break\r\n            }\r\n          }\r\n        }\r\n        this.$emit('onChange', this.hasChanges)\r\n      },\r\n      onSave: function () {\r\n        this.pending = true\r\n        this.$validator.validateAll().then(success => {\r\n          if (success) {\r\n            this.vuixCommit()\r\n            //@ts-ignore\r\n            this.updateOwnProfile(response => {\r\n              //@ts-ignore\r\n              this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n              this.pending = false\r\n              this.$emit('onSave')\r\n              this.$router.go(-1)\r\n            }, response => {\r\n              //@ts-ignore\r\n              this.showAlertError(this.$t('common.fetchFailed'))\r\n              console.log('Update failed!', response)\r\n              this.pending = false\r\n            })\r\n          }\r\n        })\r\n      },\r\n      onCancel: function () {\r\n        this.$emit('onCancel')\r\n        this.$router.go(-1)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n.comp-profile-editor-personal {\r\n  max-width: 600px;\r\n\r\n  .editor-field {\r\n    width: 100%;\r\n    text-align: left;\r\n  }\r\n\r\n  .row input {\r\n    box-shadow: none;\r\n    border: 2px solid $brand-grey3;\r\n  }\r\n\r\n  .wrap-date input {\r\n    box-shadow: none !important;\r\n    border: 2px solid $brand-grey3 !important;\r\n  }\r\n\r\n  .pending {\r\n    color: $brand-red;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor-Personal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor-Personal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Editor-Personal.vue?vue&type=template&id=2d0792d6\"\nimport script from \"./Editor-Personal.vue?vue&type=script&lang=ts\"\nexport * from \"./Editor-Personal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Editor-Personal.vue?vue&type=style&index=0&id=2d0792d6&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comp-profile-editor-image row text-center row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col image-editor\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 image-preview\"},[_c('img',{staticClass:\"prev\",attrs:{\"src\":_vm.imageChooser}})])]),(_vm.uploadState > 0)?_c('div',{staticClass:\"row py-2\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{class:_vm.feedbackClass},[_vm._v(_vm._s(_vm.uploadFeedback))])])]):_vm._e(),(!_vm.changePending)?_c('div',{staticClass:\"row py-2\"},[_c('div',{staticClass:\"col-12 text-left\"},[_c('b-form-file',{ref:\"fileInput\",attrs:{\"accept\":\"image/*\",\"prefix\":\"img\",\"placeholder\":_vm.$t('profile.imagePlaceholder'),\"choose-label\":_vm.$t('profile.choose') + ': ',\"drop-label\":_vm.$t('profile.drop')},on:{\"change\":_vm.onFileChange}})],1)]):_vm._e(),(!_vm.changePending)?_c('div',{staticClass:\"row text-center py-2\"},[_c('div',{staticClass:\"col-12 col-md-6 mb-2\"},[_c('button',{staticClass:\"btn spr-roundbox-3 image-inputs cap-label\",on:{\"click\":function($event){return _vm.progressButton(_vm.editorState)}}},[_vm._v(\" \"+_vm._s(_vm.progressText)+\" \")])]),_c('div',{staticClass:\"col-12 col-md-6 mb-2\"},[_c('button',{staticClass:\"btn spr-roundbox-3 image-inputs cap-label\",on:{\"click\":_vm.backButton}},[_vm._v(\" \"+_vm._s(_vm.cancelText)+\" \")])])]):_c('div',{staticClass:\"row text-center py-2\"},[_c('div',{staticClass:\"col image-editor\"},[_c('loading')],1)])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-profile-editor-image row text-center row\">\r\n    <div class=\"col-12\">\r\n      <div class=\"row\">\r\n        <div class=\"col image-editor\">\r\n          <!-- image preview panel-->\r\n          <div class=\"row\">\r\n            <div class=\"col-12 image-preview\">\r\n              <img class=\"prev\" :src=\"imageChooser\">\r\n            </div>\r\n          </div>\r\n          <div v-if=\"uploadState > 0\" class=\"row py-2\">\r\n            <div class=\"col-12\">\r\n              <span :class=\"feedbackClass\">{{ uploadFeedback }}</span>\r\n            </div>\r\n          </div>\r\n          <div v-if=\"!changePending\" class=\"row py-2\">\r\n            <div class=\"col-12 text-left\">\r\n              <b-form-file ref=\"fileInput\" accept=\"image/*\" prefix=\"img\"\r\n                           :placeholder=\"$t('profile.imagePlaceholder')\"\r\n                           :choose-label=\"$t('profile.choose') + ': '\"\r\n                           :drop-label=\"$t('profile.drop')\"\r\n                           @change=\"onFileChange\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div v-if=\"!changePending\" class=\"row text-center py-2\">\r\n            <div class=\"col-12 col-md-6 mb-2\">\r\n              <button class=\"btn spr-roundbox-3 image-inputs cap-label\" @click=\"progressButton(editorState)\">\r\n                {{ progressText }}\r\n              </button>\r\n            </div>\r\n            <div class=\"col-12 col-md-6 mb-2\">\r\n              <button class=\"btn spr-roundbox-3 image-inputs cap-label\" @click=\"backButton\">\r\n                {{ cancelText }}\r\n              </button>\r\n            </div>\r\n          </div>\r\n          <div v-else class=\"row text-center py-2\">\r\n            <div class=\"col image-editor\">\r\n              <loading />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n<script>\r\n  import loading from '../SPRLoading.vue'\r\n  import anonPortrait from '../../assets/img/anon-portrait.png'\r\n  export default {\r\n    name: 'ProfileEditorImage',\r\n    components: { loading },\r\n    props: {\r\n      editor: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        image: '',\r\n        changePending: false,\r\n        uploadState: 0,\r\n        editorState: 0\r\n      }\r\n    },\r\n    computed: {\r\n      cancelText: function () {\r\n        return this.editorState === 0 ? this.$t('profile.back') : this.$t('profile.cancel')\r\n      },\r\n      imageChooser: function () {\r\n        return this.image ? this.image : (this.$store.state.profile.portrait ? this.$store.state.profile.portrait : anonPortrait)\r\n      },\r\n      uploadFeedback: function () {\r\n        if (this.uploadState === 1) {\r\n          return this.$t('profile.imageSuccess')\r\n        }\r\n        return this.$t('profile.imageFailure')\r\n      },\r\n      feedbackClass: function () {\r\n        var css = 'cap-label feedback-'\r\n        css += this.uploadState === 1 ? 'success' : 'failure'\r\n        return css\r\n      },\r\n      progressText: function () {\r\n        return this.editorState === 0 ? this.$t('profile.choose') : this.$t('profile.save')\r\n      }\r\n    },\r\n    methods: {\r\n      progressButton: function (val) {\r\n        if (val === 1) {\r\n          this.uploadImage()\r\n        } else {\r\n          this.$refs.fileInput.$el.click()\r\n        }\r\n      },\r\n      onFileChange: function (e) {\r\n        var files = e.target.files || e.dataTransfer.files\r\n        if (!files.length) {\r\n          return\r\n        }\r\n        this.createImage(files[0])\r\n        this.editorState = 1\r\n      },\r\n      createImage: function (file) {\r\n        var reader = new FileReader()\r\n        var vm = this\r\n\r\n        reader.onload = (e) => {\r\n          vm.image = e.target.result\r\n        }\r\n        reader.readAsDataURL(file)\r\n      },\r\n      backButton: function () {\r\n        this.$router.push('/profile')\r\n      },\r\n      uploadImage: function () {\r\n        this.uploadState = 0\r\n        this.changePending = true\r\n        this.$http.post(this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.uploadimage[0], {\r\n          fileName: this.$store.state.profile.id,\r\n          fileBytes: this.image,\r\n          container: 'userimages'\r\n        }).then(result => {\r\n          if (result.ok === true) {\r\n            this.$store.commit('updateProfilePicture', result.body.body)\r\n            this.changePending = false\r\n            this.uploadState = 1\r\n          }\r\n        }, result => {\r\n          this.uploadState = 2\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n\r\n.comp-profile-editor-image {\r\n  .image-editor {\r\n    max-width: 600px;\r\n    margin: 0 auto;\r\n  }\r\n\r\n  .portrait {\r\n    width: 150px;\r\n    height: 150px;\r\n    border-radius: 50%;\r\n\r\n    margin: 0 auto;\r\n  }\r\n\r\n  .prev {\r\n    display: block;\r\n    width: 100%;\r\n    height: auto;\r\n  }\r\n\r\n  .image-preview {\r\n    max-width: 400px;\r\n    margin: 15px auto;\r\n  }\r\n\r\n  .image-inputs {\r\n    width: 100%;\r\n    border: 2px solid $brand-red;\r\n    background: $brand-white;\r\n\r\n    padding-top: 14px;\r\n    padding-bottom: 14px;\r\n\r\n    color: $brand-red;\r\n\r\n    &:hover {\r\n      color: $brand-white;\r\n      background: $brand-red;\r\n    }\r\n  }\r\n\r\n  .feedback-failure {\r\n    color: red;\r\n  }\r\n\r\n  .feedback-success {\r\n    color: green;\r\n  }\r\n\r\n  .custom-file {\r\n    border: 2px solid $brand-grey3;\r\n    border-radius: 5px;\r\n    position: relative;\r\n\r\n    span {\r\n      position: absolute;\r\n      top: 0px;\r\n      left: 0px;\r\n      bottom: 0px;\r\n      right: 0px;\r\n\r\n      line-height: 34px;\r\n      padding-left: 10px;\r\n    }\r\n  }\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor-Image.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor-Image.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Editor-Image.vue?vue&type=template&id=b16a7f6c\"\nimport script from \"./Editor-Image.vue?vue&type=script&lang=js\"\nexport * from \"./Editor-Image.vue?vue&type=script&lang=js\"\nimport style0 from \"./Editor-Image.vue?vue&type=style&index=0&id=b16a7f6c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.isLegal)?_c('div',{staticClass:\"comp-profile-editor-location mx-auto container-fluid\"},[_c('div',{staticClass:\"row mt-3\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('sprvalidation',{attrs:{\"validation-errors\":_vm.validationErrors}})],1)]),_c('div',{staticClass:\"row text-center mt-5 mb-3\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"instruct\"},[_vm._v(_vm._s(_vm.$t('profile.workingZipEditor')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},[(_vm.hasChangeSectionWithinDistrictPermissions)?_c('sprautocompletedropdown',{attrs:{\"options\":_vm.sectionsZips,\"option-label\":\"value\",\"placeholder\":_vm.$t('profile.workingZipEditorPlaceholder'),\"required\":true,\"max-results\":200,\"show-arrow\":false},model:{value:(_vm.sectionZip),callback:function ($$v) {_vm.sectionZip=$$v},expression:\"sectionZip\"}}):_c('sprsimpledropdown',{attrs:{\"title\":\"\",\"items\":_vm.disabledSectionsZips,\"required\":false,\"disabled\":true,\"is-valid\":true},model:{value:(_vm.disabledSectionZip),callback:function ($$v) {_vm.disabledSectionZip=$$v},expression:\"disabledSectionZip\"}})],1),(!_vm.hasChangeDistrictPermissions && _vm.hasChangeSectionWithinDistrictPermissions)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"district-change-warning\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(_vm._s(_vm.$t('profile.cannotChangeDistrictWarning'))+\" \")],1)]):_vm._e()]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprsimplecheckbox',{attrs:{\"title\":_vm.$t('wizard.volunteerOnline'),\"value\":_vm.volunteerOnline},on:{\"input\":_vm.onVolunteerOnlineChanged}})],1)]),_c('div',{staticClass:\"row text-center mt-5 mb-3\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"instruct\"},[_vm._v(_vm._s(_vm.$t('profile.availabilityEditor')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},_vm._l((_vm.objectSet),function(entry){return _c('sprcheckbox',{key:'cb_' + _vm._uid + '_' + entry.name,staticClass:\"checkbox\",attrs:{\"title\":_vm.$t('availabilityTimes.' + _vm.toLowerCamelCase(entry.name)),\"click-event\":\"on-click\",\"value\":entry.id,\"tabindex\":0,\"collection\":_vm.actualData},on:{\"on-click\":_vm.editSelection}})}),1)]),_c('div',{staticClass:\"row text-center mt-5 mb-3\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"instruct\"},[_vm._v(_vm._s(_vm.$t('profile.transportationEditor')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},_vm._l((_vm.objectSetTransport),function(entry){return _c('sprcheckbox',{key:'cc_' + _vm._uid + '_' + entry.text,staticClass:\"checkbox\",attrs:{\"title\":_vm.$t('transportation.' + entry.text),\"click-event\":\"on-click\",\"value\":entry.id,\"tabindex\":0,\"collection\":_vm.actualDataTransport},on:{\"on-click\":_vm.editSelectionTransport}})}),1)]),_c('div',{staticClass:\"row text-center mt-5 mb-3\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"instruct\"},[_vm._v(_vm._s(_vm.$t('profile.travelTimeEditor')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|numeric'),expression:\"'required|numeric'\"}],staticClass:\"editor-field\",attrs:{\"is-valid\":!_vm.errors.has('timeField'),\"name\":\"timeField\"},model:{value:(_vm.reasonable),callback:function ($$v) {_vm.reasonable=$$v},expression:\"reasonable\"}})],1)]),(!_vm.pending)?_c('div',{staticClass:\"row my-5\"},[_c('div',{staticClass:\"col-12 col-md-6 my-1\"},[_c('sprbutton',{staticClass:\"fill-width\",attrs:{\"click-event\":\"save-event\",\"title\":_vm.$t('profile.save'),\"size\":1,\"bordersize\":2},on:{\"save-event\":function($event){return _vm.onSave(3)}}})],1),_c('div',{staticClass:\"col-12 col-md-6 my-1\"},[_c('sprbutton',{staticClass:\"fill-width\",attrs:{\"click-event\":\"cancel-event\",\"title\":_vm.$t('profile.cancel'),\"size\":1,\"bordersize\":2},on:{\"cancel-event\":_vm.onCancel}})],1)]):_c('div',{staticClass:\"row my-5 text-center brand-red\"},[_c('div',{staticClass:\"col-12\"},[_c('loading')],1)])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"isLegal\" class=\"comp-profile-editor-location mx-auto container-fluid\">\r\n    <div class=\"row mt-3\">\r\n      <div class=\"col-12 text-center\">\r\n        <sprvalidation :validation-errors=\"validationErrors\" />\r\n      </div>\r\n    </div>\r\n    <div class=\"row text-center mt-5 mb-3\">\r\n      <div class=\"col-12\">\r\n        <span class=\"instruct\">{{ $t('profile.workingZipEditor') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 text-center\">\r\n        <sprautocompletedropdown\r\n          v-if=\"hasChangeSectionWithinDistrictPermissions\"\r\n          v-model=\"sectionZip\"\r\n          :options=\"sectionsZips\"\r\n          option-label=\"value\"\r\n          :placeholder=\"$t('profile.workingZipEditorPlaceholder')\"\r\n          :required=\"true\"\r\n          :max-results=\"200\"\r\n          :show-arrow=\"false\"\r\n        />\r\n        <sprsimpledropdown\r\n          v-else\r\n          v-model=\"disabledSectionZip\"\r\n          title=\"\"\r\n          :items=\"disabledSectionsZips\"\r\n          :required=\"false\"\r\n          :disabled=\"true\"\r\n          :is-valid=\"true\"\r\n        />\r\n      </div>\r\n      <div v-if=\"!hasChangeDistrictPermissions && hasChangeSectionWithinDistrictPermissions\" class=\"col-12\">\r\n        <div class=\"district-change-warning\">\r\n          <font-awesome-icon icon=\"exclamation-triangle\" />{{ $t('profile.cannotChangeDistrictWarning') }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <sprsimplecheckbox\r\n          :title=\"$t('wizard.volunteerOnline')\"\r\n          :value=\"volunteerOnline\"\r\n          @input=\"onVolunteerOnlineChanged\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row text-center mt-5 mb-3\">\r\n      <div class=\"col-12\">\r\n        <span class=\"instruct\">{{ $t('profile.availabilityEditor') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 text-center\">\r\n        <sprcheckbox v-for=\"(entry) in objectSet\"\r\n                     :key=\"'cb_' + _uid + '_' + entry.name\"\r\n                     :title=\"$t('availabilityTimes.' + toLowerCamelCase(entry.name))\"\r\n                     click-event=\"on-click\"\r\n                     :value=\"entry.id\"\r\n                     :tabindex=\"0\"\r\n                     :collection=\"actualData\"\r\n                     class=\"checkbox\"\r\n                     @on-click=\"editSelection\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row text-center mt-5 mb-3\">\r\n      <div class=\"col-12\">\r\n        <span class=\"instruct\">{{ $t('profile.transportationEditor') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 text-center\">\r\n        <sprcheckbox v-for=\"(entry) in objectSetTransport\"\r\n                     :key=\"'cc_' + _uid + '_' + entry.text\"\r\n                     :title=\"$t('transportation.' + entry.text)\"\r\n                     click-event=\"on-click\"\r\n                     :value=\"entry.id\"\r\n                     :tabindex=\"0\"\r\n                     :collection=\"actualDataTransport\"\r\n                     class=\"checkbox\"\r\n                     @on-click=\"editSelectionTransport\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row text-center mt-5 mb-3\">\r\n      <div class=\"col-12\">\r\n        <span class=\"instruct\">{{ $t('profile.travelTimeEditor') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 text-center\">\r\n        <sprinput v-model=\"reasonable\"\r\n                  v-validate=\"'required|numeric'\" class=\"editor-field\"\r\n                  :is-valid=\"!errors.has('timeField')\" name=\"timeField\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Save and cancel buttons -->\r\n    <div v-if=\"!pending\" class=\"row my-5\">\r\n      <div class=\"col-12 col-md-6 my-1\">\r\n        <sprbutton click-event=\"save-event\" :title=\"$t('profile.save')\"\r\n                   :size=\"1\"\r\n                   :bordersize=\"2\" class=\"fill-width\" @save-event=\"onSave(3)\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12 col-md-6 my-1\">\r\n        <sprbutton click-event=\"cancel-event\" :title=\"$t('profile.cancel')\"\r\n                   :size=\"1\"\r\n                   :bordersize=\"2\" class=\"fill-width\" @cancel-event=\"onCancel\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-else class=\"row my-5 text-center brand-red\">\r\n      <div class=\"col-12\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprautocompletedropdown from '../SPRAutocompleteDropdown.vue'\r\n  import sprsimpledropdown from '../SPRSimpleDropdown.vue'\r\n  import sprcheckbox from '../SPRCheckbox.vue'\r\n  import sprsimplecheckbox from '../SPRSimpleCheckbox.vue'\r\n  import sprinput from '../SPRInput.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { AvailabilityTimeDto } from '@/types'\r\n  import { SprDropDownValue, StringKeyValuePair } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    reasonable: string,\r\n    savedTransport: Array<number>,\r\n    savedAvailable: Array<number>,\r\n    savedReasonable: string,\r\n    hasChanges: boolean,\r\n    pending: boolean,\r\n    hasError: boolean,\r\n    sectionsZips: Array<StringKeyValuePair> | undefined,\r\n    sectionZip: StringKeyValuePair | undefined,\r\n    disabledSectionZip: string | undefined,\r\n    volunteerOnline: boolean | null\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'ProfileEditorLocation',\r\n    components: {\r\n      sprautocompletedropdown, sprsimpledropdown, sprcheckbox, sprsimplecheckbox, sprinput, sprbutton, sprvalidation, loading\r\n    },\r\n    props: {\r\n      editor: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      isOwnProfile: {\r\n        type: Boolean,\r\n        default: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        reasonable: '',\r\n        savedTransport: [],\r\n        savedAvailable: [],\r\n        savedReasonable: '',\r\n        hasChanges: false,\r\n        pending: false,\r\n        hasError: false,\r\n        sectionsZips: [],\r\n        sectionZip: undefined,\r\n        disabledSectionZip: undefined,\r\n        volunteerOnline: false\r\n      }\r\n    },\r\n    computed: {\r\n      actualData (): Array<number> {\r\n        return this.savedAvailable\r\n      },\r\n      actualDataTransport (): Array<number> {\r\n        return this.savedTransport\r\n      },\r\n      objectSet (): Array<AvailabilityTimeDto> {\r\n        return this.$store.state.databaseAvailabilityTimes\r\n      },\r\n      objectSetTransport (): Array<Record<string, any>> {\r\n        return this.$store.state.transportation\r\n      },\r\n      isLegal (): boolean {\r\n        return this.editor === 'location'\r\n      },\r\n      validationErrors (): Array<Array<string>> {\r\n        var arr = [] as Array<Array<string>>\r\n        var self = this\r\n        // @ts-ignore\r\n        var err = _.find(self.errors.items, function (item) {\r\n          return item.field === 'timeField'\r\n        })\r\n        if (err != null) {\r\n          arr.push(['wizard.' + err.field, String(err.rule), String(err.msg)])\r\n        }\r\n        return arr\r\n      },\r\n      disabledSectionsZips (): Array<SprDropDownValue> {\r\n        var arr = [] as Array<SprDropDownValue>\r\n        if (this.sectionZip) {\r\n          // @ts-ignore\r\n          arr.push({ value: this.sectionZip.key, text: this.sectionZip.value })\r\n        }\r\n\r\n        return arr\r\n      },\r\n      hasChangeDistrictPermissions (): boolean {\r\n        // these users are allowed to change their district, and sections within the district\r\n        // @ts-ignore cannot find mixins\r\n        return this.hasChangeSectionWithinDistrictPermissions && !(this.hasRole('Employee') || this.hasRole('DistrictAdmin') || this.hasRole('NationalAdmin') || this.hasRole('NationalEmployee'))\r\n      },\r\n      hasChangeSectionWithinDistrictPermissions (): boolean {\r\n        // these users can only change to sections within their current district.\r\n        // @ts-ignore cannot find mixins\r\n        return !(this.hasRole('J1') || this.hasRole('J2'))\r\n      },\r\n      currentUserDistrictId (): number | undefined {\r\n        var currentUserSectionId = this.$store.state.profile.sectionId\r\n        var currentSection = _.find(this.$store.state.sections, function (section) {\r\n          return section.id === currentUserSectionId\r\n        })\r\n        if (currentSection) {\r\n          return currentSection.districtId\r\n        }\r\n        return undefined\r\n      }\r\n    },\r\n    watch: {\r\n      reasonable: function (val) {\r\n        if (this.anyTravelSettingHasChanged()) {\r\n          this.hasChanges = true\r\n        } else {\r\n          this.hasChanges = false\r\n        }\r\n        this.$emit('onChange', this.hasChanges)\r\n      },\r\n      sectionZip: function (val) {\r\n        // key comes in in the format workingZip-newSection\r\n        if (val) {\r\n          var arr = val.key.split('-')\r\n          var workingZip = arr[0]\r\n          var section = Number(arr[1])\r\n          this.$store.commit('profileworkingzip', workingZip)\r\n          this.$store.commit('profilesection', section)\r\n        }\r\n      },\r\n      disabledSectionsZips () {\r\n        this.disabledSectionZip = this.disabledSectionsZips.length\r\n          ? String(this.disabledSectionsZips[0].value)\r\n          : undefined\r\n      }\r\n    },\r\n    created: function () {\r\n      this.reasonable = this.$store.state.profile.travelTime\r\n      this.savedTransport = this.$store.state.profile.transportation\r\n      this.savedAvailable = this.$store.state.profile.availabilityTimes\r\n      this.savedReasonable = this.$store.state.profile.travelTime\r\n      this.volunteerOnline = this.$store.state.profile.volunteerOnline\r\n\r\n      var sections = [] as Array<StringKeyValuePair>\r\n\r\n      _.each(this.$store.state.sections, (section) => {\r\n        if (this.hasChangeDistrictPermissions) {\r\n          _.each(section.zipCodes, (zip) => {\r\n            sections.push({ key: `${zip}-${section.id}`, value: `${zip} (${section.name})` })\r\n          })\r\n        } else {\r\n          // only load sections in this district\r\n          if (section.districtId === this.currentUserDistrictId) {\r\n            _.each(section.zipCodes, (zip) => {\r\n              sections.push({ key: `${zip}-${section.id}`, value: `${zip} (${section.name})` })\r\n            })\r\n          }\r\n        }\r\n      })\r\n\r\n      this.sectionsZips = _.sortBy(sections, 'value')\r\n    },\r\n    mounted: function () {\r\n      var self = this\r\n      if (!this.isLegal) {\r\n        this.$router.push('/profile')\r\n      }\r\n\r\n      this.sectionZip = _.find(this.sectionsZips, function (section) {\r\n        return section.key === `${self.$store.state.profile.workingZipCode}-${self.$store.state.profile.sectionId}`\r\n      })\r\n    },\r\n    methods: {\r\n      editSelection: function (value, truth) {\r\n        if (truth) {\r\n          if (this.actualData.indexOf(value) === -1) {\r\n            var add = this.actualData.slice()\r\n            add.push(value)\r\n            this.savedAvailable = add\r\n          }\r\n        } else {\r\n          var index = this.actualData.indexOf(value)\r\n          if (index !== -1) {\r\n            var remove = this.actualData.slice()\r\n            remove.splice(index, 1)\r\n            this.savedAvailable = remove\r\n            //this.$store.commit('profilelocation', remove)\r\n          }\r\n        }\r\n        if (this.anyTravelSettingHasChanged()) {\r\n          this.hasChanges = true\r\n        } else {\r\n          this.hasChanges = false\r\n        }\r\n        this.$emit('onChange', this.hasChanges)\r\n      },\r\n      anyTravelSettingHasChanged: function () {\r\n        return !_.isEqual(this.$store.state.profile.transportation, this.savedTransport) ||\r\n          !_.isEqual(this.$store.state.profile.volunteerOnline, this.volunteerOnline) ||\r\n          !_.isEqual(this.$store.state.profile.availabilityTimes, this.savedAvailable) ||\r\n          !_.isEqual(this.$store.state.profile.travelTime, this.reasonable)\r\n      },\r\n      editSelectionTransport: function (value, truth) {\r\n        if (truth) {\r\n          if (this.actualDataTransport.indexOf(value) === -1) {\r\n            var add = this.actualDataTransport.slice()\r\n            add.push(value)\r\n            this.savedTransport = add\r\n          }\r\n        } else {\r\n          var index = this.actualDataTransport.indexOf(value)\r\n          if (index !== -1) {\r\n            var remove = this.actualDataTransport.slice()\r\n            remove.splice(index, 1)\r\n            this.savedTransport = remove\r\n          }\r\n        }\r\n        if (this.anyTravelSettingHasChanged()) {\r\n          this.hasChanges = true\r\n        } else {\r\n          this.hasChanges = false\r\n        }\r\n        this.$emit('onChange', this.hasChanges)\r\n      },\r\n      onVolunteerOnlineChanged () {\r\n        this.volunteerOnline = !this.volunteerOnline\r\n        //state.profile.volunteerOnline\r\n        if (this.anyTravelSettingHasChanged()) {\r\n          this.hasChanges = true\r\n        } else {\r\n          this.hasChanges = false\r\n        }\r\n        this.$emit('onChange', this.hasChanges)\r\n      },\r\n      onSave: function (c) {\r\n        this.pending = true\r\n        this.$validator.validateAll().then(success => {\r\n          this.$store.state.profile.travelTime = this.reasonable\r\n          this.$store.state.profile.transportation = this.savedTransport\r\n          this.$store.state.profile.availabilityTimes = this.savedAvailable\r\n          this.$store.state.profile.volunteerOnline = this.volunteerOnline\r\n          if (success) {\r\n            if (this.isOwnProfile) {\r\n              // @ts-ignore cannot find mixins\r\n              this.updateOwnProfile(succ => {\r\n                this.hasChanges = false\r\n                // @ts-ignore cannot find mixins\r\n                this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n                this.$emit('onSave')\r\n                this.$router.go(-1)\r\n              }, fail => {\r\n                if (c > 0) {\r\n                  this.onSave(c - 1)\r\n                } else {\r\n                  this.hasError = true\r\n                }\r\n                // @ts-ignore cannot find mixins\r\n                this.showAlertError(this.$t('common.fetchFailed'))\r\n              })\r\n            } else {\r\n              // @ts-ignore cannot find mixins\r\n              this.updateProfile(succ => {\r\n                this.hasChanges = false\r\n                // @ts-ignore cannot find mixins\r\n                this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n                this.$emit('onSave')\r\n                window.location.href = '/profile'\r\n              }, fail => {\r\n                if (c > 0) {\r\n                  this.onSave(c - 1)\r\n                } else {\r\n                  this.hasError = true\r\n                }\r\n                // @ts-ignore cannot find mixins\r\n                this.showAlertError(this.$t('common.fetchFailed'))\r\n              })\r\n            }\r\n          }\r\n        })\r\n      },\r\n      onCancel: function () {\r\n        this.$emit('onCancel')\r\n        this.$router.go(-1)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '~@/assets/scss/_variables.scss';\r\n.comp-profile-editor-location {\r\n  max-width: 600px;\r\n\r\n  .checkbox {\r\n    color: $brand-black;\r\n    border: 1px solid $brand-grey3;\r\n  }\r\n\r\n  .dropdown {\r\n    margin: 30px auto;\r\n    max-width: 300px;\r\n  }\r\n\r\n  .editor-field {\r\n    width: calc(100% - 20px);\r\n    max-width: 140px;\r\n    text-align: center;\r\n  }\r\n\r\n  .row input {\r\n      box-shadow: none;\r\n      border: 2px solid $brand-grey3;\r\n      &:focus-visible{\r\n      color: #495057;\r\n      border: solid 2px $brand-grey5;\r\n      outline: 0;\r\n      box-shadow: 0 0 0 0.2rem rgba(204, 0, 0, 0.25);\r\n      transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n    }\r\n  }\r\n\r\n  .instruct {\r\n    font-family: \"Signa-Book\", Sans-Serif;\r\n  }\r\n\r\n  .district-change-warning {\r\n    svg {\r\n      margin-right: 7px;\r\n    }\r\n    background-color: $brand-warning;\r\n    color:$brand-white;\r\n    font-size: 0.8em;\r\n    padding: 10px;\r\n    margin-bottom: 15px;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor-Location.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor-Location.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Editor-Location.vue?vue&type=template&id=2cdf68d4&scoped=true\"\nimport script from \"./Editor-Location.vue?vue&type=script&lang=ts\"\nexport * from \"./Editor-Location.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Editor-Location.vue?vue&type=style&index=0&id=2cdf68d4&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2cdf68d4\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row comp-profile-editor-login mx-auto text-center my-5\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprvalidation',{staticClass:\"mb-5\",attrs:{\"validation-errors\":_vm.validationErrors}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"instructions\"},[_vm._v(_vm._s(_vm.$t('profile.editCredentialsInstructions')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-8 col-md-6\"},[_c('sprPassword',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|min:6|max:128'),expression:\"'required|min:6|max:128'\"}],staticClass:\"editor-field\",attrs:{\"hint\":_vm.$t('profile.currentPassword'),\"input-type\":\"password\",\"is-valid\":!_vm.errors.has('currentPassword'),\"name\":\"currentPassword\",\"data-vv-validate-on\":\"none\",\"autocomplete\":\"false\"},model:{value:(_vm.currentPassword),callback:function ($$v) {_vm.currentPassword=$$v},expression:\"currentPassword\"}})],1)]),_c('div',{staticClass:\"col-12 text-center my-3\"},[_c('router-link',{staticClass:\"link\",attrs:{\"to\":\"/restore\",\"tabindex\":\"0\"}},[_vm._v(\" \"+_vm._s(_vm.$t('login.forgotPassword'))+\" \")])],1),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"instructions\"},[_vm._v(_vm._s(_vm.$t('profile.editEmailInstructions')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-8 col-md-6\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|emailexists'),expression:\"'required|emailexists'\"}],staticClass:\"editor-field\",attrs:{\"hint\":_vm.$t('profile.email'),\"is-valid\":!_vm.errors.has('email'),\"name\":\"email\",\"data-vv-validate-on\":\"none\",\"autocomplete\":\"email username\"},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"instructions\"},[_vm._v(_vm._s(_vm.$t('profile.editPasswordInstructions')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-6\"},[_c('sprPassword',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('min:12|max:128'),expression:\"'min:12|max:128'\"}],ref:\"password\",staticClass:\"editor-field\",attrs:{\"hint\":_vm.$t('profile.password'),\"input-type\":\"password\",\"is-valid\":!_vm.errors.has('password'),\"name\":\"password\",\"data-vv-validate-on\":\"none\",\"autocomplete\":\"false\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}})],1),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('sprPassword',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({required: _vm.retypeRequired, confirmed:_vm.password }),expression:\"{required: retypeRequired, confirmed:password }\"}],staticClass:\"editor-field\",attrs:{\"data-vv-as\":\"password\",\"hint\":_vm.$t('profile.retypePassword'),\"input-type\":\"password\",\"is-valid\":!_vm.errors.has('retypePassword'),\"name\":\"retypePassword\",\"data-vv-validate-on\":\"none\",\"autocomplete\":\"false\"},model:{value:(_vm.confirmPassword),callback:function ($$v) {_vm.confirmPassword=$$v},expression:\"confirmPassword\"}})],1)]),(!_vm.pending)?_c('div',{staticClass:\"row py-4\"},[_c('div',{staticClass:\"col-12 col-md-6 my-1\"},[_c('sprbutton',{staticClass:\"fill-width\",attrs:{\"click-event\":\"save-event\",\"title\":_vm.$t('profile.save'),\"size\":1,\"bordersize\":2},on:{\"save-event\":_vm.onSave}})],1),_c('div',{staticClass:\"col-12 col-md-6 my-1\"},[_c('sprbutton',{staticClass:\"fill-width\",attrs:{\"click-event\":\"cancel-event\",\"title\":_vm.$t('profile.cancel'),\"size\":1,\"bordersize\":2},on:{\"cancel-event\":_vm.onCancel}})],1)]):_c('div',{staticClass:\"row pending\"},[_c('div',{staticClass:\"col-12 py-4\"},[_c('loading')],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\r\nimport VueResource from 'vue-resource'\r\nimport store from '../store/index.js'\r\n\r\nVue.use(VueResource)\r\n\r\nconst validatorEmailExists = {\r\n  getMessage (field, args) {\r\n    return 'Email already exists in the database'\r\n  },\r\n  validate (value, args) {\r\n    return new Promise((resolve, reject) => {\r\n      if (value === store.state.profile.email) resolve({ valid: true }) // not changed, do not validate\r\n      var url = `${store.state.apiBases.userservice}${store.state.apiEndpoints.emailexists[0]}?emailaddress=${value}`\r\n      Vue.http.get(url).then((resp) => {\r\n        if (resp.ok) {\r\n          resolve({\r\n            valid: !resp.body // should NOT exist\r\n          })\r\n        } else {\r\n          reject(new Error({\r\n            valid: false,\r\n            data: {\r\n              message: 'Unable to get response from the server'\r\n            }\r\n          }))\r\n        }\r\n      })\r\n    })\r\n  }\r\n}\r\n\r\nexport default validatorEmailExists\r\n","<template>\r\n  <div class=\"row comp-profile-editor-login mx-auto text-center my-5\">\r\n    <div class=\"col-12\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <sprvalidation :validation-errors=\"validationErrors\" class=\"mb-5\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <span class=\"instructions\">{{ $t('profile.editCredentialsInstructions') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <!-- current password -->\r\n        <div class=\"col-12 col-sm-8 col-md-6\">\r\n          <sprPassword v-model=\"currentPassword\" v-validate=\"'required|min:6|max:128'\"\r\n                       :hint=\"$t('profile.currentPassword')\"\r\n                       class=\"editor-field\"\r\n                       input-type=\"password\"\r\n                       :is-valid=\"!errors.has('currentPassword')\"\r\n                       name=\"currentPassword\"\r\n                       data-vv-validate-on=\"none\"\r\n                       autocomplete=\"false\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12 text-center my-3\">\r\n        <router-link to=\"/restore\" class=\"link\" tabindex=\"0\">\r\n          {{ $t('login.forgotPassword') }}\r\n        </router-link>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <span class=\"instructions\">{{ $t('profile.editEmailInstructions') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <!-- email -->\r\n        <div class=\"col-12 col-sm-8 col-md-6\">\r\n          <sprinput v-model=\"email\" v-validate=\"'required|emailexists'\"\r\n                    :hint=\"$t('profile.email')\"\r\n                    class=\"editor-field\"\r\n                    :is-valid=\"!errors.has('email')\"\r\n                    name=\"email\"\r\n                    data-vv-validate-on=\"none\"\r\n                    autocomplete=\"email username\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <span class=\"instructions\">{{ $t('profile.editPasswordInstructions') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <!-- password -->\r\n        <div class=\"col-12 col-md-6\">\r\n          <sprPassword ref=\"password\"\r\n                       v-model=\"password\"\r\n                       v-validate=\"'min:12|max:128'\"\r\n                       :hint=\"$t('profile.password')\"\r\n                       class=\"editor-field\"\r\n                       input-type=\"password\"\r\n                       :is-valid=\"!errors.has('password')\"\r\n                       name=\"password\"\r\n                       data-vv-validate-on=\"none\"\r\n                       autocomplete=\"false\"\r\n          />\r\n        </div>\r\n        <!-- retype password -->\r\n        <div class=\"col-12 col-md-6\">\r\n          <sprPassword v-model=\"confirmPassword\"\r\n                       v-validate=\"{required: retypeRequired, confirmed:password }\"\r\n                       data-vv-as=\"password\"\r\n                       :hint=\"$t('profile.retypePassword')\"\r\n                       class=\"editor-field\"\r\n                       input-type=\"password\"\r\n                       :is-valid=\"!errors.has('retypePassword')\"\r\n                       name=\"retypePassword\"\r\n                       data-vv-validate-on=\"none\"\r\n                       autocomplete=\"false\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <!-- save and cancel buttons -->\r\n      <div v-if=\"!pending\" class=\"row py-4\">\r\n        <div class=\"col-12 col-md-6 my-1\">\r\n          <sprbutton click-event=\"save-event\" :title=\"$t('profile.save')\"\r\n                     :size=\"1\"\r\n                     :bordersize=\"2\" class=\"fill-width\" @save-event=\"onSave\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 col-md-6 my-1\">\r\n          <sprbutton click-event=\"cancel-event\" :title=\"$t('profile.cancel')\"\r\n                     :size=\"1\"\r\n                     :bordersize=\"2\" class=\"fill-width\" @cancel-event=\"onCancel\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div v-else class=\"row pending\">\r\n        <div class=\"col-12 py-4\">\r\n          <loading />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import sprinput from '../SPRSimpleText.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprPassword from '../SprPassword.vue'\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import validatoremailexists from '../../mixins/validator-emailexists.js'\r\n  import { Validator } from 'vee-validate'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    currentPasswordFailure: any,\r\n    currentPassword: string,\r\n    email: string,\r\n    password: string,\r\n    confirmPassword: string,\r\n    pending: boolean,\r\n    hasChanges: boolean,\r\n    validatedFields: Array<string>\r\n  }\r\n\r\n  Validator.extend('emailexists', validatoremailexists)\r\n\r\n  export default Vue.extend({\r\n    name: 'ProfileEditorLogin',\r\n    components: { sprinput, sprbutton, sprPassword, sprvalidation, loading },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        currentPassword: '',\r\n        currentPasswordFailure: null,\r\n        email: this.$store.state.profile.email.slice(),\r\n        password: '',\r\n        confirmPassword: '',\r\n        hasChanges: false,\r\n        pending: false,\r\n        validatedFields: ['currentPassword', 'email', 'password', 'retypePassword']\r\n      }\r\n    },\r\n    computed: {\r\n      retypeRequired (): boolean {\r\n        return this.password.length > 0\r\n      },\r\n      validationErrors (): Array<any> {\r\n        var arr = [] as Array<any>\r\n        var self = this\r\n\r\n        if (self.currentPasswordFailure) {\r\n          arr.push(['login.attempt', 'currentPasswordFailed', ''])\r\n          self.currentPasswordFailure.forEach(err => {\r\n            //@ts-ignore\r\n            if (err.code) { arr.push(['', 'error.' + this.toLowerCamelCase(err.code), '']) }\r\n          })\r\n        }\r\n\r\n        if (!this.validatedFields) {\r\n          return arr\r\n        }\r\n\r\n        this.validatedFields.forEach(function (fieldName) {\r\n          //@ts-ignore\r\n          var err = _.find(self.errors.items, function (item) {\r\n            return item.field === fieldName\r\n          })\r\n\r\n          if (err != null) {\r\n            arr.push(['profile.' + err.field, String(err.rule), String(err.msg)])\r\n          }\r\n        })\r\n        return arr\r\n      }\r\n    },\r\n    watch: {\r\n      email: function (val) {\r\n        this.checkForChanges()\r\n        this.$emit('onChange', this.hasChanges)\r\n      },\r\n\r\n      currentPassword: function (val) {\r\n        this.checkForChanges()\r\n        this.$emit('onChange', this.hasChanges)\r\n      },\r\n\r\n      password: function (val) {\r\n        this.checkForChanges()\r\n        this.$emit('onChange', this.hasChanges)\r\n      },\r\n\r\n      confirmPassword: function (val) {\r\n        this.checkForChanges()\r\n        this.$emit('onChange', this.hasChanges)\r\n      }\r\n    },\r\n    methods: {\r\n      focusOnErrors (): void {\r\n        window.scrollTo({ top: 0, behavior: 'smooth' })\r\n      },\r\n      checkForChanges () {\r\n        if (this.email !== this.$store.state.profile.email ||\r\n          this.confirmPassword !== '' ||\r\n          this.password !== '' ||\r\n          this.currentPassword !== '') {\r\n          this.hasChanges = true\r\n        } else {\r\n          this.hasChanges = false\r\n        }\r\n      },\r\n\r\n      onSave (): void {\r\n        const self = this\r\n\r\n        this.currentPasswordFailure = null\r\n        this.$validator.validateAll().then((result) => {\r\n          if (result) {\r\n            self.pending = true\r\n\r\n            const url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.userupdate[0]\r\n\r\n            const data = {\r\n              currentPassword: this.currentPassword,\r\n              email: this.email,\r\n              password: this.password\r\n            }\r\n            this.$http.post(url, data).then((resp: any) => {\r\n              if (resp.ok && resp.body.success) {\r\n                this.$emit('onSave')\r\n\r\n                //@ts-ignore\r\n                this.logout('/login?email=' + data.email)\r\n              } else {\r\n                self.currentPasswordFailure = resp.body?.error?.errors\r\n                self.pending = false\r\n              }\r\n            }, function (errorResponse) {\r\n              self.currentPasswordFailure = errorResponse.body?.error?.errors\r\n              self.focusOnErrors()\r\n              self.pending = false\r\n            })\r\n          } else {\r\n            self.pending = false\r\n            if (this.validationErrors && this.validationErrors.length) {\r\n\r\n            }\r\n          }\r\n        })\r\n      },\r\n      onCancel: function () {\r\n        this.$emit('onCancel')\r\n        this.$router.go(-1)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n.comp-profile-editor-login {\r\n  max-width: 600px;\r\n\r\n  .editor-field {\r\n    width: 100%;\r\n    text-align: left;\r\n  }\r\n\r\n  .row input {\r\n    box-shadow: none;\r\n    border: 2px solid $brand-grey3;\r\n  }\r\n\r\n  .spr-shadow {\r\n    box-shadow: none !important;\r\n    border: 2px solid $brand-grey3;\r\n  }\r\n\r\n  .wrap-date input {\r\n    box-shadow: none !important;\r\n    border: 2px solid $brand-grey3 !important;\r\n  }\r\n\r\n  .instructions {\r\n    display: block;\r\n    margin-bottom: 30px;\r\n    text-align:left\r\n  }\r\n\r\n  .pending {\r\n    color: $brand-red;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor-Login.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor-Login.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Editor-Login.vue?vue&type=template&id=4f6ef563\"\nimport script from \"./Editor-Login.vue?vue&type=script&lang=ts\"\nexport * from \"./Editor-Login.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Editor-Login.vue?vue&type=style&index=0&id=4f6ef563&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"comp-profile-editor-event-admins\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mt-3\"},[_c('p',[_vm._v(_vm._s(_vm.$t('profile.eventAdminsInstructions')))])]),(_vm.hasError)?_c('div',{staticClass:\"col-12 text-center pb-3 pt-3\"},[_c('sprwarning',{attrs:{\"warnings\":_vm.savewarnings}})],1):_vm._e(),_c('div',{staticClass:\"col-7 col-sm-6 col-md-4 pb-3 pt-3\"},[_c('div',{staticClass:\"emailinput\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('email'),expression:\"'email'\"}],attrs:{\"input-type\":\"email\",\"placeholder\":_vm.placeholdertext,\"name\":\"admin.adminemail\",\"is-valid\":!_vm.errors.has('admin.adminemail')},model:{value:(_vm.adminemail),callback:function ($$v) {_vm.adminemail=$$v},expression:\"adminemail\"}})],1)]),_c('div',{staticClass:\"col-5 col-sm-3 col-md-3 pb-3 pt-3\"},[_c('sprbutton',{staticClass:\"add-button\",attrs:{\"size\":5,\"title\":_vm.$t('profile.addEventAdminButton'),\"click-event\":\"addAdmin\"},on:{\"addAdmin\":_vm.onAddAdmin}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 pb-3\"},[(_vm.eventAdmins)?_c('span',_vm._l((_vm.eventAdmins),function(admin){return _c('pill',{key:admin.email,staticClass:\"eventadmin-pill\",attrs:{\"show-delete\":true},on:{\"remove\":function($event){return _vm.onRemoveAdmin(admin)}},model:{value:(admin.email),callback:function ($$v) {_vm.$set(admin, \"email\", $$v)},expression:\"admin.email\"}})}),1):_c('span',[_vm._v(\" \"+_vm._s(_vm.$t('profile.noEventAdminsCreated'))+\" \")])])]),_c('div',{staticClass:\"row\"},[(!_vm.isSaving)?_c('div',{staticClass:\"col-12 col-md-6 my-1\"},[_c('sprbutton',{staticClass:\"fill-width\",attrs:{\"click-event\":\"save-event\",\"title\":_vm.$t('profile.save'),\"size\":1,\"bordersize\":2},on:{\"save-event\":function($event){return _vm.onSave()}}})],1):_vm._e(),(!_vm.isSaving)?_c('div',{staticClass:\"col-12 col-md-6 my-1\"},[_c('sprbutton',{staticClass:\"fill-width\",attrs:{\"click-event\":\"cancel-event\",\"title\":_vm.$t('profile.cancel'),\"size\":1,\"bordersize\":2},on:{\"cancel-event\":_vm.onCancel}})],1):_vm._e(),(_vm.isSaving)?_c('div',{staticClass:\"col-12\"},[_c('loading')],1):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-profile-editor-event-admins\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12 mt-3\">\r\n        <p>{{ $t('profile.eventAdminsInstructions') }}</p>\r\n      </div>\r\n      <div v-if=\"hasError\" class=\"col-12 text-center pb-3 pt-3\">\r\n        <sprwarning\r\n          :warnings=\"savewarnings\"\r\n        />\r\n      </div>\r\n      <div class=\"col-7 col-sm-6 col-md-4 pb-3 pt-3\">\r\n        <div class=\"emailinput\">\r\n          <sprinput\r\n            v-model=\"adminemail\"\r\n            v-validate=\"'email'\"\r\n            input-type=\"email\"\r\n            :placeholder=\"placeholdertext\"\r\n            name=\"admin.adminemail\"\r\n            :is-valid=\"!errors.has('admin.adminemail')\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"col-5 col-sm-3 col-md-3 pb-3 pt-3\">\r\n        <sprbutton\r\n          :size=\"5\"\r\n          :title=\"$t('profile.addEventAdminButton')\"\r\n          click-event=\"addAdmin\"\r\n          class=\"add-button\"\r\n          @addAdmin=\"onAddAdmin\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 pb-3\">\r\n        <span v-if=\"eventAdmins\">\r\n          <pill v-for=\"admin in eventAdmins\" :key=\"admin.email\" v-model=\"admin.email\" :show-delete=\"true\" class=\"eventadmin-pill\" @remove=\"onRemoveAdmin(admin)\" />\r\n        </span>\r\n        <span v-else>\r\n          {{ $t('profile.noEventAdminsCreated') }}\r\n        </span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <!-- Save and cancel buttons -->\r\n      <div v-if=\"!isSaving\" class=\"col-12 col-md-6 my-1\">\r\n        <sprbutton click-event=\"save-event\" :title=\"$t('profile.save')\"\r\n                   :size=\"1\"\r\n                   :bordersize=\"2\" class=\"fill-width\" @save-event=\"onSave()\"\r\n        />\r\n      </div>\r\n      <div v-if=\"!isSaving\" class=\"col-12 col-md-6 my-1\">\r\n        <sprbutton click-event=\"cancel-event\" :title=\"$t('profile.cancel')\"\r\n                   :size=\"1\"\r\n                   :bordersize=\"2\" class=\"fill-width\" @cancel-event=\"onCancel\"\r\n        />\r\n      </div>\r\n      <div v-if=\"isSaving\" class=\"col-12\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n<script lang=\"ts\">\r\n  import loading from '../SPRLoading.vue'\r\n  import sprwarning from '../SPRWarning.vue'\r\n  import sprinput from '../SPRSimpleText.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import pill from '../SPRPill.vue'\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    hasError: boolean,\r\n    hasChanges: boolean,\r\n        isSaving: boolean,\r\n        adminemail: string,\r\n        eventAdmins: Admin[],\r\n        origEventAdmins: Admin[],\r\n        newAdmins: string[],\r\n        placeholdertext: LocaleMessage,\r\n        savewarnings: Array<LocaleMessage>\r\n  }\r\n  export interface Admin {\r\n    email: string,\r\n    delegatedByProfileId: any\r\n  }\r\n  export default Vue.extend({\r\n    name: 'ProfileEditorEventAdmins',\r\n    components: { loading, sprwarning, sprinput, sprbutton, pill },\r\n    props: {\r\n      editor: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        hasError: false,\r\n        isSaving: false,\r\n        hasChanges: false,\r\n        adminemail: '',\r\n        eventAdmins: this.$store.state.profile.eventAdmins.slice() as Admin[],\r\n        origEventAdmins: this.$store.state.profile.eventAdmins.slice() as Admin[],\r\n        newAdmins: [] as string[], // Specify the type explicitly\r\n        placeholdertext: this.$t('profile.eventAdminPlaceholderText'),\r\n        savewarnings: [\r\n          this.$t('profile.eventAdminEditorSaveWarning')\r\n        ]\r\n      }\r\n    },\r\n    watch: {\r\n      adminemail: function (val) {\r\n        this.checkForChanges()\r\n      }\r\n    },\r\n    methods: {\r\n      onAddAdmin () {\r\n        if (!this.adminemail) return\r\n\r\n        this.$validator.validateAll().then(resp => {\r\n          if (resp) {\r\n            if (!this.eventAdmins.find(admin => admin.email.toLowerCase() === this.adminemail.toLowerCase())) {\r\n              var addedAdmin: Admin = {\r\n                email: this.adminemail.toLowerCase(),\r\n                delegatedByProfileId: this.$store.state.profile.profileId\r\n              }\r\n              this.eventAdmins.push(addedAdmin)\r\n              this.newAdmins.push(addedAdmin.email)\r\n            }\r\n          }\r\n          this.adminemail = ''\r\n        })\r\n      },\r\n      checkForChanges () {\r\n        if (this.newAdmins.length > 0 ||\r\n          this.adminemail !== '' ||\r\n          this.origEventAdmins.length !== this.eventAdmins.length) {\r\n          this.hasChanges = true\r\n        } else {\r\n          this.hasChanges = false\r\n        }\r\n        this.$emit('onChange', this.hasChanges)\r\n      },\r\n      onRemoveAdmin (adminToRemove: Admin) {\r\n        this.eventAdmins = this.eventAdmins.filter(admin => admin.email.toLowerCase() !== adminToRemove.email.toLowerCase())\r\n        this.newAdmins = this.newAdmins.filter(email => email.toLowerCase() !== adminToRemove.email.toLowerCase())\r\n        this.checkForChanges()\r\n      },\r\n      clearNewAdmins () {\r\n        for (const adminToDelete in this.newAdmins) {\r\n          this.eventAdmins = this.eventAdmins.filter(admin => admin.email.toLowerCase() !== adminToDelete.toLowerCase())\r\n          this.newAdmins = this.newAdmins.filter(email => email.toLowerCase() !== adminToDelete.toLowerCase())\r\n          this.checkForChanges()\r\n        }\r\n      },\r\n      onSave () {\r\n        this.hasError = false\r\n        this.isSaving = true\r\n        this.$validator.validateAll().then(success => {\r\n          if (success) {\r\n            this.$store.commit('profileeventadmins', this.eventAdmins)\r\n            //@ts-ignore\r\n            this.updateOwnProfile(succ => {\r\n              // invalidate the short token to force a refresh of section data from the back end\r\n              //@ts-ignore\r\n              this.getShortToken(sessionStorage.getItem('authtoken'))\r\n                .then(() => {\r\n                  // send messages to the users\r\n                  var url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.sendnewprofileeventadminmessages[0]}`\r\n                  var newEventAdminMessageDto = {\r\n                    emails: this.newAdmins\r\n                  }\r\n                  return this.$http.post(url, newEventAdminMessageDto)\r\n                })\r\n                .then(() => {\r\n                  this.newAdmins = []\r\n                  this.isSaving = false\r\n                  //@ts-ignore\r\n                  this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n                  window.location.href = '/profile'\r\n                })\r\n                .catch(() => {\r\n                  this.newAdmins = []\r\n                  this.hasError = true\r\n                  this.isSaving = false\r\n                  //@ts-ignore\r\n                  this.showAlertError(this.$t('common.fetchFailed'))\r\n                })\r\n            }, () => {\r\n              this.newAdmins = []\r\n              this.hasError = true\r\n              this.isSaving = false\r\n              //@ts-ignore\r\n              this.showAlertError(this.$t('common.fetchFailed'))\r\n            })\r\n          } else {\r\n            this.isSaving = false\r\n          }\r\n        })\r\n      },\r\n      onCancel () {\r\n        this.clearNewAdmins()\r\n        window.location.href = '/profile'\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n\r\n.comp-profile-editor-event-admins {\r\n  .eventadmin-pill {\r\n    margin-right: 4px;\r\n  }\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor-EventAdmins.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor-EventAdmins.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Editor-EventAdmins.vue?vue&type=template&id=0c449b75\"\nimport script from \"./Editor-EventAdmins.vue?vue&type=script&lang=ts\"\nexport * from \"./Editor-EventAdmins.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Editor-EventAdmins.vue?vue&type=style&index=0&id=0c449b75&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"editor-deleteprofile my-5\"},[(_vm.profileUsageReportData)?_c('myProfileUsageReport',{attrs:{\"report-data\":_vm.profileUsageReportData},on:{\"deleteprofile\":_vm.deleteMyUserProfile}}):_vm._e(),(_vm.loading)?_c('div',{staticClass:\"loading\"},[_c('loading')],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"col-12 my-user-profile-usage\"},[(_vm.reportData.special.has.hasDeleteMyProfileRequest)?_c('div',{staticClass:\"row has-already-requested-delete-warning\"},[_c('div',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('deleteMyProfile.hasAlreadyRequestedDelete'))+\" \")])]):_vm._e(),_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 general-instructions\"},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.$t('deleteMyProfile.general'))}})])]),(!_vm.isTypeA)?_c('div',{staticClass:\"row issue-options\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('deleteMyProfile.profileIs')))])]),_c('div',{staticClass:\"col-12\"},[(_vm.showOption1)?_c('div',{staticClass:\"option\"},[_c('div',{staticClass:\"option-value\"},[_c('tickcrosswarning',{attrs:{\"value\":_vm.option1Value}})],1),_c('div',{staticClass:\"option-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('deleteMyProfile.option1'))+\" \")])]):_vm._e(),(_vm.showOption2)?_c('div',{staticClass:\"option\"},[_c('div',{staticClass:\"option-value\"},[_c('tickcrosswarning',{attrs:{\"value\":_vm.option2Value}})],1),_c('div',{staticClass:\"option-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('deleteMyProfile.option2'))+\" \")])]):_vm._e(),(_vm.showOption3)?_c('div',{staticClass:\"option\"},[_c('div',{staticClass:\"option-value\"},[_c('tickcrosswarning',{attrs:{\"value\":_vm.option3Value}})],1),_c('div',{staticClass:\"option-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('deleteMyProfile.option3'))+\" \")])]):_vm._e(),(_vm.showOption4)?_c('div',{staticClass:\"option\"},[_c('div',{staticClass:\"option-value\"},[_c('tickcrosswarning',{attrs:{\"value\":_vm.option4Value}})],1),_c('div',{staticClass:\"option-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('deleteMyProfile.option4'))+\" \")])]):_vm._e()])]):_vm._e(),(!_vm.isTypeA)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 level-instructions-title\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('deleteMyProfile.levelInstructionsTitle')))])]),_c('div',{staticClass:\"col-12 level-instructions\"},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.levelInstructions)}})])]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 consent\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('deleteMyProfile.consent'),\"aria-label\":_vm.$t('deleteMyProfile.consent')},model:{value:(_vm.hasConsent),callback:function ($$v) {_vm.hasConsent=$$v},expression:\"hasConsent\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('sprbutton',{attrs:{\"disabled\":!_vm.hasConsent || _vm.isSending,\"title\":_vm.deleteButtonTitle,\"aria-label\":_vm.deleteButtonTitle,\"primary\":true && _vm.hasConsent && !_vm.isSending,\"click-event\":\"deleteProfile\"},on:{\"deleteProfile\":_vm.onDeleteProfile}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"col-12 my-user-profile-usage\">\r\n    <div v-if=\"reportData.special.has.hasDeleteMyProfileRequest\" class=\"row has-already-requested-delete-warning\">\r\n      <div class=\"col-12\">\r\n        {{ $t('deleteMyProfile.hasAlreadyRequestedDelete') }}\r\n      </div>\r\n    </div>\r\n    <div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 general-instructions\">\r\n          <div v-html=\"$t('deleteMyProfile.general')\" />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"!isTypeA\" class=\"row issue-options\">\r\n        <div class=\"col-12\">\r\n          <h5>{{ $t('deleteMyProfile.profileIs') }}</h5>\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <div v-if=\"showOption1\" class=\"option\">\r\n            <div class=\"option-value\">\r\n              <tickcrosswarning :value=\"option1Value\" />\r\n            </div>\r\n            <div class=\"option-label\">\r\n              {{ $t('deleteMyProfile.option1') }}\r\n            </div>\r\n          </div>\r\n          <div v-if=\"showOption2\" class=\"option\">\r\n            <div class=\"option-value\">\r\n              <tickcrosswarning :value=\"option2Value\" />\r\n            </div>\r\n            <div class=\"option-label\">\r\n              {{ $t('deleteMyProfile.option2') }}\r\n            </div>\r\n          </div>\r\n          <div v-if=\"showOption3\" class=\"option\">\r\n            <div class=\"option-value\">\r\n              <tickcrosswarning :value=\"option3Value\" />\r\n            </div>\r\n            <div class=\"option-label\">\r\n              {{ $t('deleteMyProfile.option3') }}\r\n            </div>\r\n          </div>\r\n          <div v-if=\"showOption4\" class=\"option\">\r\n            <div class=\"option-value\">\r\n              <tickcrosswarning :value=\"option4Value\" />\r\n            </div>\r\n            <div class=\"option-label\">\r\n              {{ $t('deleteMyProfile.option4') }}\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"!isTypeA\" class=\"row\">\r\n        <div class=\"col-12 level-instructions-title\">\r\n          <h5>{{ $t('deleteMyProfile.levelInstructionsTitle') }}</h5>\r\n        </div>\r\n        <div class=\"col-12 level-instructions\">\r\n          <div v-html=\"levelInstructions\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 consent\">\r\n          <checkboxinput\r\n            v-model=\"hasConsent\"\r\n            :title=\"$t('deleteMyProfile.consent')\"\r\n            :aria-label=\"$t('deleteMyProfile.consent')\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-center\">\r\n          <sprbutton\r\n            :disabled=\"!hasConsent || isSending\"\r\n            :title=\"deleteButtonTitle\"\r\n            :aria-label=\"deleteButtonTitle\"\r\n            :primary=\"true && hasConsent && !isSending\"\r\n            click-event=\"deleteProfile\"\r\n            @deleteProfile=\"onDeleteProfile\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import tickcrosswarning from '../SPRTickCrossWarning.vue'\r\n  import { YesNoWarning } from '@/types/custom'\r\n  import { MyProfileLevel } from '@/types'\r\n  import { TranslateResult } from 'vue-i18n'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    hasConsent: boolean,\r\n    isSending: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'MyUserProfileUsageReport',\r\n    components: { checkboxinput, sprbutton, tickcrosswarning },\r\n    props: {\r\n      reportData: {\r\n        type: Object,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        hasConsent: false,\r\n        isSending: false\r\n      }\r\n    },\r\n    computed: {\r\n      deletionType (): MyProfileLevel {\r\n        return this.reportData?.special?.level || MyProfileLevel.UserLevelA\r\n      },\r\n      isTypeA (): boolean {\r\n        // See #4084 for types. These ones can be deleted straight away (1)\r\n        return this.deletionType === MyProfileLevel.UserLevelA\r\n      },\r\n      isTypeB (): boolean {\r\n        // These ones can be deleted, but it is recommended they remove their events, etc first (10)\r\n        return this.deletionType === MyProfileLevel.UserLevelB\r\n      },\r\n      isTypeC (): boolean {\r\n        // These ones require an admin to perform the deletion (100)\r\n        return this.deletionType === MyProfileLevel.UserLevelC\r\n      },\r\n      levelInstructions (): string {\r\n        if (this.isTypeB) {\r\n          return this.$t('deleteMyProfile.userLevelB').toString().replace(/\\n/g, '<br/>')\r\n        }\r\n        if (this.isTypeC) {\r\n          return this.$t('deleteMyProfile.userLevelC').toString().replace(/\\n/g, '<br/>')\r\n        }\r\n        return ''\r\n      },\r\n      deleteButtonTitle (): string | TranslateResult {\r\n        return this.isTypeC\r\n          ? this.$t('deleteMyProfile.userLevelC-Action')\r\n          : this.$t('deleteMyProfile.action')\r\n      },\r\n      option1Value (): YesNoWarning {\r\n        // whether the user is in a critical role. Yes is ok, can delete.\r\n        return this.reportData?.special?.has?.hasRole\r\n          ? YesNoWarning.Warning\r\n          : YesNoWarning.Yes\r\n      },\r\n      option2Value (): YesNoWarning {\r\n        // whether the user is the creator of a future event. Yes is ok, can delete.\r\n        return this.reportData?.special?.has?.hasFutureEventAsCreator\r\n          ? YesNoWarning.Warning\r\n          : YesNoWarning.Yes\r\n      },\r\n      option3Value (): YesNoWarning {\r\n        // whether the user is an action group leader. Yes is ok, can delete.\r\n        return this.reportData?.special?.has?.hasActionGroupAdmin\r\n          ? YesNoWarning.Warning\r\n          : YesNoWarning.Yes\r\n      },\r\n      option4Value (): YesNoWarning {\r\n        // whether the user is in an active friendshipo. Yes is ok, can delete.\r\n        return this.reportData?.special?.has?.hasActiveFriendship\r\n          ? YesNoWarning.Warning\r\n          : YesNoWarning.Yes\r\n      },\r\n      showOption1 (): boolean {\r\n        return this.option1Value === YesNoWarning.Warning\r\n      },\r\n      showOption2 (): boolean {\r\n        return this.option2Value === YesNoWarning.Warning\r\n      },\r\n      showOption3 (): boolean {\r\n        return this.option3Value === YesNoWarning.Warning\r\n      },\r\n      showOption4 (): boolean {\r\n        return this.option4Value === YesNoWarning.Warning\r\n      }\r\n    },\r\n    methods: {\r\n      onDeleteProfile (): void {\r\n        this.isSending = true\r\n        this.$emit('deleteprofile', this.isTypeC)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n  .my-user-profile-usage {\r\n    .has-already-requested-delete-warning {\r\n      position: relative;\r\n      border: solid 2px $brand-warning;\r\n      background-color: rgba($brand-warning, 0.5);\r\n      padding: 15px;\r\n      margin-bottom: 15px;\r\n      text-align: center;\r\n    }\r\n    .level-instructions-title {\r\n      margin-top: 30px;\r\n    }\r\n    .level-instructions {\r\n      margin-top: 30px;\r\n      ul li {\r\n        margin-bottom: 10px;\r\n      }\r\n    }\r\n    .consent {\r\n      margin-top: 30px;\r\n    }\r\n    .issue-options {\r\n      margin-top: 30px;\r\n      h5 {\r\n        margin-bottom: 20px;\r\n      }\r\n      .option {\r\n        margin-bottom: 8px;\r\n        .option-value {\r\n          display: inline-block;\r\n          margin-right: 10px;\r\n        }\r\n        .option-label {\r\n          display: inline-block;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MyUserProfileUsageReport.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MyUserProfileUsageReport.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MyUserProfileUsageReport.vue?vue&type=template&id=40f7f735\"\nimport script from \"./MyUserProfileUsageReport.vue?vue&type=script&lang=ts\"\nexport * from \"./MyUserProfileUsageReport.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MyUserProfileUsageReport.vue?vue&type=style&index=0&id=40f7f735&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"editor-deleteprofile my-5\">\r\n    <myProfileUsageReport\r\n      v-if=\"profileUsageReportData\"\r\n      :report-data=\"profileUsageReportData\"\r\n      @deleteprofile=\"deleteMyUserProfile\"\r\n    />\r\n    <div v-if=\"loading\" class=\"loading\">\r\n      <loading />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n\r\n  import Vue from 'vue'\r\n  import { MyProfileUsageDto } from '@/types'\r\n  import myProfileUsageReport from './MyUserProfileUsageReport.vue'\r\n  import loading from '../SPRLoading.vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    loading: boolean,\r\n    profileUsageReportData: MyProfileUsageDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'EditorDeleteProfile',\r\n    components: { myProfileUsageReport, loading },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        loading: false,\r\n        profileUsageReportData: undefined\r\n      }\r\n    },\r\n    mounted (): void {\r\n      var uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.usermyprofileusage[0]\r\n      this.loading = true\r\n      this.$http.get(uri).then(succ => {\r\n        if (succ.data) {\r\n          this.profileUsageReportData = succ.data // JSON.parse(succ.data)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n        this.loading = false\r\n      }, fail => {\r\n        console.log(fail)\r\n        this.loading = false\r\n        // @ts-ignore\r\n        this.showAlertError(this.$t('common.fetchFailed'))\r\n      })\r\n    },\r\n    methods: {\r\n      deleteMyUserProfile (isOnlyDeletionRequest: boolean): void {\r\n        var uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.deletemyprofile[0]\r\n        this.loading = true\r\n        this.$http.delete(uri).then(succ => {\r\n          if (succ.ok) {\r\n            if (isOnlyDeletionRequest) {\r\n              // @ts-ignore\r\n              this.showAlertSuccess(this.$t('deleteMyProfile.deletionRequestSent'))\r\n            }\r\n            // @ts-ignore\r\n            this.logout()\r\n            // For type C deletions, they do not get deleted straight away, as admin needs to manually remove their friendships, roles, change the owner of events they are the creator of etc.\r\n            var isOnlyRequestQS = isOnlyDeletionRequest\r\n              ? '?deletionrequest=true'\r\n              : ''\r\n            this.$router.push(`/thankyou${isOnlyRequestQS}`)\r\n          } else {\r\n            // @ts-ignore\r\n            this.showAlertError(this.$t('common.fetchFailed'))\r\n          }\r\n          this.loading = false\r\n        }, fail => {\r\n          console.log(fail)\r\n          this.loading = false\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n.editor-deleteprofile {\r\n  .loading {\r\n    text-align: center;\r\n    margin-top: 5px;\r\n  }\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor-DeleteProfile.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor-DeleteProfile.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Editor-DeleteProfile.vue?vue&type=template&id=dfc7ad42\"\nimport script from \"./Editor-DeleteProfile.vue?vue&type=script&lang=ts\"\nexport * from \"./Editor-DeleteProfile.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Editor-DeleteProfile.vue?vue&type=style&index=0&id=dfc7ad42&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.isLegal)?_c('div',{staticClass:\"comp-profile-editor-pill row\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('span',{staticClass:\"cap-label py-5 d-inline-block\"},[_vm._v(_vm._s(_vm.$t('profile.checkboxEditorIngress')))])]),_c('div',{staticClass:\"col-12 text-center\"},_vm._l((_vm.wholeSet),function(entry){return _c('sprcheckbox',{key:'cb_' + _vm._uid + '_' + entry,staticClass:\"checkbox\",attrs:{\"title\":_vm.$t(_vm.translationPrefix + '.' + entry),\"click-event\":\"on-click\",\"value\":_vm.resolveId(entry),\"tabindex\":0,\"collection\":_vm.actualData},on:{\"on-click\":_vm.editSelection}})}),1),(_vm.isLoading)?_c('div',{staticClass:\"brand-red centerloading\"},[_c('loading')],1):_vm._e(),_c('div',{staticClass:\"row my-5\",staticStyle:{\"padding-top\":\"5%\"}},[_c('div',{staticClass:\"col-3\"}),_c('div',{staticClass:\"col-3 col-md-3 my-1\"},[_c('sprbutton',{staticClass:\"fill-width\",attrs:{\"click-event\":\"save-event\",\"title\":_vm.$t('profile.save'),\"size\":1,\"bordersize\":2},on:{\"save-event\":_vm.save}})],1),_c('div',{staticClass:\"col-3 col-md-3 my-1\"},[_c('sprbutton',{staticClass:\"fill-width\",attrs:{\"click-event\":\"cancel-event\",\"title\":_vm.$t('profile.cancel'),\"size\":1,\"bordersize\":2},on:{\"cancel-event\":_vm.cancelButton}})],1)])]):_c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!-- Use this editor to edit Flag value (decoded enum) -->\r\n<template>\r\n  <div v-if=\"isLegal\" class=\"comp-profile-editor-pill row\">\r\n    <div class=\"col-12 text-center\">\r\n      <span class=\"cap-label py-5 d-inline-block\">{{ $t('profile.checkboxEditorIngress') }}</span>\r\n    </div>\r\n    <div class=\"col-12 text-center\">\r\n      <sprcheckbox v-for=\"(entry) in wholeSet\"\r\n                   :key=\"'cb_' + _uid + '_' + entry\"\r\n                   :title=\"$t(translationPrefix + '.' + entry)\"\r\n                   click-event=\"on-click\"\r\n                   :value=\"resolveId(entry)\"\r\n                   :tabindex=\"0\"\r\n                   :collection=\"actualData\"\r\n                   class=\"checkbox\"\r\n                   @on-click=\"editSelection\"\r\n      />\r\n    </div>\r\n    <div v-if=\"isLoading\" class=\"brand-red centerloading\">\r\n      <loading />\r\n    </div>\r\n    <!-- Save and cancel buttons -->\r\n    <div class=\"row my-5\" style=\"padding-top: 5%\">\r\n      <div class=\"col-3\"></div>\r\n      <div class=\"col-3 col-md-3 my-1\">\r\n        <sprbutton click-event=\"save-event\" :title=\"$t('profile.save')\"\r\n                   :size=\"1\"\r\n                   :bordersize=\"2\" class=\"fill-width\" @save-event=\"save\"\r\n        />\r\n      </div>\r\n      <div class=\"col-3 col-md-3 my-1\">\r\n        <sprbutton click-event=\"cancel-event\" :title=\"$t('profile.cancel')\"\r\n                   :size=\"1\"\r\n                   :bordersize=\"2\" class=\"fill-width\" @cancel-event=\"cancelButton\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <div v-else />\r\n</template>\r\n<script lang = \"ts\">\r\n  import sprcheckbox from '../SPRCheckbox.vue'\r\n  import Vue from 'vue'\r\n  import { TranslateResult } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import loading from '../SPRLoading.vue'\r\n\r\n  import enumhelper from '../../mixins/enums.js'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    hasChanges: boolean,\r\n    isLoading: boolean,\r\n    data: any\r\n  }\r\n  export default Vue.extend({\r\n    name: 'ProfileEditorPills',\r\n    components: { sprcheckbox, sprbutton, loading },\r\n    mixins: [enumhelper],\r\n    props: {\r\n      editor: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      isOwnProfile: {\r\n        type: Boolean,\r\n        default: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        //\r\n        data: this.$store.state.profile.involvedEventCategories,\r\n        isLoading: false,\r\n        hasChanges: false\r\n      }\r\n    },\r\n    computed: {\r\n      actualData: function () {\r\n        switch (this.editor) {\r\n        case 'involvedEventCategories':\r\n          var involvedEventCategories = this.data\r\n          // @ts-ignore - ts intellisense not finding mixins\r\n          var activeItems = this.getProfileInvolvedEventCategoriesMaskItems(involvedEventCategories)\r\n          return activeItems\r\n        }\r\n        return []\r\n      },\r\n      objectSet: function () {\r\n        switch (this.editor) {\r\n        case 'involvedEventCategories':\r\n          return this.$store.state.translations[this.firstLanguage].involvedEventCategories\r\n        }\r\n        return []\r\n      },\r\n      idSet: function () {\r\n        switch (this.editor) {\r\n        case 'involvedEventCategories':\r\n          return this.$store.state.profile.involvedEventCategories\r\n        }\r\n        return []\r\n      },\r\n      wholeSet: function () {\r\n        return Object.keys(this.objectSet)\r\n      },\r\n      vuixMutation: function () {\r\n        if (this.isLegal) {\r\n          return 'profile' + this.editor\r\n        }\r\n        return ''\r\n      },\r\n      isLegal: function () {\r\n        return (this.editor === 'involvedEventCategories')\r\n      },\r\n      translationPrefix: function () {\r\n        return this.isLegal ? this.editor : ''\r\n      }\r\n    },\r\n    mounted: function () {\r\n      if (!this.isLegal) {\r\n        this.$router.push('/profile')\r\n      }\r\n    },\r\n    methods: {\r\n      addOption: function (value) {\r\n        switch (this.editor) {\r\n        case 'involvedEventCategories':\r\n          this.data = this.data + value\r\n        }\r\n      },\r\n      removeOption: function (value) {\r\n        switch (this.editor) {\r\n        case 'involvedEventCategories':\r\n          this.data = this.data - value\r\n        }\r\n      },\r\n      editSelection: function (value, truth) {\r\n        if (truth) {\r\n          // Value was just enabled\r\n          if (this.actualData.indexOf(value) === -1) {\r\n            // Actual data does not already contain this item, add it\r\n            this.addOption(value)\r\n          }\r\n        } else {\r\n          // Value was just disabled\r\n          var index = this.actualData.indexOf(value)\r\n          if (index !== -1) {\r\n            // Actual data does already contain this item, remove it\r\n            this.removeOption(value)\r\n          }\r\n        }\r\n        if (!_.isEqual(this.$store.state.profile.involvedEventCategories, this.data)) {\r\n          this.hasChanges = true\r\n        } else {\r\n          this.hasChanges = false\r\n        }\r\n        this.$emit('onChange', this.hasChanges)\r\n      },\r\n      resolveId: function (value) {\r\n        switch (this.editor) {\r\n        case 'involvedEventCategories':\r\n          return _.find(this.$store.state.involvedEventCategories, function (o) { return o.text === value }).id\r\n        }\r\n      },\r\n      resolveItem: function (value) {\r\n        switch (this.editor) {\r\n        case 'involvedEventCategories':\r\n          return _.find(this.$store.state.involvedEventCategories, function (o) { return o.text === value })\r\n        }\r\n      },\r\n      cancelButton: function () {\r\n        //revert any changes and move back.\r\n        this.$emit('onCancel')\r\n        this.$router.go(-1)\r\n      },\r\n      save: function () {\r\n        var self = this\r\n        self.isLoading = true\r\n        if (this.isOwnProfile) {\r\n          this.$store.state.profile.involvedEventCategories = this.data\r\n          // @ts-ignore cannot find mixins\r\n          this.updateOwnProfile(succ => {\r\n            // @ts-ignore cannot find mixins\r\n            this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n            this.$emit('onSave')\r\n\r\n            this.$router.go(-1)\r\n            self.isLoading = false\r\n          }, f => {\r\n            // @ts-ignore cannot find mixins\r\n            this.showAlertError(this.$t('common.fetchFailed'))\r\n            self.isLoading = false\r\n          })\r\n        } else {\r\n          this.$store.state.profile.involvedEventCategories = this.data\r\n          // @ts-ignore cannot find mixins\r\n          this.updateProfile(succ => {\r\n            // @ts-ignore cannot find mixins\r\n            this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n            this.$emit('onSave')\r\n\r\n            this.$router.go(-1)\r\n            self.isLoading = false\r\n          }, f => {\r\n            // @ts-ignore cannot find mixins\r\n            this.showAlertError(this.$t('common.fetchFailed'))\r\n            self.isLoading = false\r\n          })\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '~@/assets/scss/_variables.scss';\r\n.comp-profile-editor-pill {\r\n  .checkbox {\r\n    color: $brand-black;\r\n    border: 1px solid $brand-grey3;\r\n    box-shadow: none;\r\n  }\r\n\r\n  .dropdown {\r\n    margin: 30px auto;\r\n    max-width: 300px;\r\n  }\r\n  .page-body {\r\n    min-height: calc(100vh - 466px);\r\n    background: $brand-white;\r\n    padding-bottom: 150px;\r\n    position: relative;\r\n\r\n    .button-footer {\r\n      position: absolute;\r\n      bottom: 0px;\r\n      left: 0;\r\n      right: 0;\r\n      height: 140px;\r\n      margin-top: 10px;\r\n    }\r\n  }\r\n\r\n  .inputs {\r\n    width: calc(100% - 20px);\r\n    max-width: 300px;\r\n    border: 2px solid $brand-red;\r\n    background: $brand-white;\r\n    padding-top: 14px;\r\n    padding-bottom: 14px;\r\n    color: $brand-red;\r\n    &:hover\r\n\r\n    {\r\n      color: $brand-white;\r\n      background: $brand-red;\r\n    }\r\n  }\r\n  .centerloading {\r\n    display: flex;\r\n    width: 100%;\r\n    height: 100%;\r\n    position: absolute;\r\n\r\n    span {\r\n      margin: auto;\r\n      justify-content: center;\r\n      align-items: center;\r\n      z-index: 999;\r\n    }\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor-FlagPill.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor-FlagPill.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Editor-FlagPill.vue?vue&type=template&id=5871db75&scoped=true\"\nimport script from \"./Editor-FlagPill.vue?vue&type=script&lang=ts\"\nexport * from \"./Editor-FlagPill.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Editor-FlagPill.vue?vue&type=style&index=0&id=5871db75&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"5871db75\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"comp-profile-editor col-12\">\r\n    <div class=\"row page-header py-2\">\r\n      <div class=\"container\">\r\n        <div class=\"row\">\r\n          <div class=\"col col-12\">\r\n            <router-link to=\"/profile\" class=\"d-inline-block\">\r\n              <font-awesome-icon icon=\"chevron-left\" aria-hidden=\"true\" /> {{ $t('profile.back') }}\r\n            </router-link>\r\n          </div>\r\n          <div class=\"col col-12\">\r\n            <span class=\"h3 editor-header\" role=\"heading\" aria-level=\"1\">{{ headerTranslation }}</span>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row page-body\">\r\n      <div class=\"container\">\r\n        <div :is=\"chooseEditor\" v-if=\"chooseEditor !== null\" :editor=\"editor\" @onChange=\"updateChildData\" @onSave=\"childDataSaved\" @onCancel=\"childCanceled\" />\r\n        <div v-else>\r\n          Illegal editor.\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import checkboxEditor from './Editor-Checkbox.vue'\r\n  import personalEditor from './Editor-Personal.vue'\r\n  import imageEditor from './Editor-Image.vue'\r\n  import locationEditor from './Editor-Location.vue'\r\n  import loginEditor from './Editor-Login.vue'\r\n  import eventAdminEditors from './Editor-EventAdmins.vue'\r\n  import deleteProfile from './Editor-DeleteProfile.vue'\r\n  import profileInvolvedEventCategories from './Editor-FlagPill.vue'\r\n  import Vue from 'vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    legal: string[],\r\n    hasChanges: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'ProfileEditor',\r\n    props: {\r\n      editor: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        legal: ['skills', 'interest', 'languages', 'personal', 'image', 'location', 'login', 'eventadmins', 'deleteprofile', 'involvedEventCategories'] as string[],\r\n        hasChanges: false\r\n      }\r\n    },\r\n    computed: {\r\n      isLegal: function () {\r\n        var index = this.legal.indexOf(this.editor)\r\n        return index !== -1\r\n      },\r\n      chooseEditor: function () {\r\n        if (this.isLegal) {\r\n          if (this.editor === 'personal') {\r\n            return personalEditor\r\n          } else if (this.editor === 'image') {\r\n            return imageEditor\r\n          } else if (this.editor === 'location') {\r\n            return locationEditor\r\n          } else if (this.editor === 'login') {\r\n            return loginEditor\r\n          } else if (this.editor === 'eventadmins') {\r\n            return eventAdminEditors\r\n          } else if (this.editor === 'deleteprofile') {\r\n            return deleteProfile\r\n          } else if (this.editor === 'involvedEventCategories') {\r\n            return profileInvolvedEventCategories\r\n          } else {\r\n            return checkboxEditor\r\n          }\r\n        }\r\n        return null\r\n      },\r\n      headerTranslation: function () {\r\n        switch (this.editor) {\r\n        case 'skills':\r\n          return this.$t('profile.skillEditorHeader')\r\n        case 'interest':\r\n          return this.$t('profile.interestEditorHeader')\r\n        case 'languages':\r\n          return this.$t('profile.languageEditorHeader')\r\n        case 'personal':\r\n          return this.$t('profile.sectionPersonalInfo')\r\n        case 'image':\r\n          return this.$t('profile.imageEditorHeader')\r\n        case 'location':\r\n          return this.$t('profile.locationEditorHeader')\r\n        case 'login':\r\n          return this.$t('profile.loginEditorHeader')\r\n        case 'eventadmins':\r\n          return this.$t('profile.eventAdminsEditorHeader')\r\n        case 'deleteprofile':\r\n          return this.$t('profile.deleteUserProfile')\r\n        case 'involvedEventCategories':\r\n          return this.$t('wizard.alreadyInvolved')\r\n        default:\r\n          return '' // Error, should redirect immediately anyhow\r\n        }\r\n      }\r\n    },\r\n    mounted: function () {\r\n      if (!this.isLegal) {\r\n        this.$router.push('/profile')\r\n      }\r\n    },\r\n    beforeRouteLeave (to, from, next) {\r\n      if (this.hasChanges) {\r\n        var text = this.$t('profile.unsavedChanges').toString()\r\n        const answer = window.confirm(text)\r\n        if (answer) {\r\n          return next()\r\n        } else {\r\n          return next(false)\r\n        }\r\n      }\r\n      return next()\r\n    },\r\n    methods: {\r\n\r\n      updateChildData (data: boolean) {\r\n        this.hasChanges = data\r\n      },\r\n      childDataSaved () {\r\n        this.hasChanges = false\r\n      },\r\n      childCanceled () {\r\n        this.hasChanges = false\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '~@/assets/scss/_variables.scss';\r\n\r\n$header: 80px;\r\n\r\n.comp-profile-editor {\r\n  .page-header {\r\n    min-height: $header;\r\n    background: $brand-grey1;\r\n    overflow-wrap: break-word;\r\n\r\n    a {\r\n      color: $brand-black;\r\n      text-decoration: none;\r\n\r\n      &:hover {\r\n        color: $brand-red;\r\n      }\r\n\r\n      svg {\r\n        color: $brand-red;\r\n      }\r\n    }\r\n\r\n    .editor-header {\r\n      color: $brand-red;\r\n    }\r\n  }\r\n\r\n  .page-body {\r\n    min-height: calc(100vh - 266px);\r\n    background: $brand-white;\r\n    padding-bottom: 150px;\r\n    position: relative;\r\n\r\n    .button-footer {\r\n      position: absolute;\r\n      bottom: 0px;\r\n      left: 0;\r\n      right: 0;\r\n      height: 140px;\r\n      margin-top: 10px;\r\n    }\r\n  }\r\n\r\n  .inputs {\r\n    width: calc(100% - 20px);\r\n    max-width: 300px;\r\n    border: 2px solid $brand-red;\r\n    background: $brand-white;\r\n    padding-top: 14px;\r\n    padding-bottom: 14px;\r\n    color: $brand-red;\r\n    &:hover\r\n\r\n  {\r\n    color: $brand-white;\r\n    background: $brand-red;\r\n  }\r\n\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editor.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Editor.vue?vue&type=template&id=20f817ff&scoped=true\"\nimport script from \"./Editor.vue?vue&type=script&lang=ts\"\nexport * from \"./Editor.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Editor.vue?vue&type=style&index=0&id=20f817ff&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"20f817ff\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"profileidentvolunteerform\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.addEditTitle))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center py-2\"},[_c('validation',{ref:\"validationtarget\",attrs:{\"id\":'validationTarget' + _vm._uid,\"validation-errors\":_vm.validationErrors}})],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[_c('VolunteerProfileCommon',{attrs:{\"volunteer\":_vm.volunteer},on:{\"input\":_vm.onVolunteerChanged}})],1)]),(!_vm.hasStandardProfile && !_vm.hasNetProfile)?_c('div',{staticClass:\"row profilehead\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.selectProfileInfo')))])])]):_vm._e(),(_vm.hasStandardProfile)?_c('div',[_c('div',{staticClass:\"row profilehead\"},[_c('div',{staticClass:\"col-7\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.standardInfo')))])]),_c('div',{staticClass:\"col-5 text-right\"},[(!_vm.volunteer.standardProfile.id)?_c('SprButton',{staticClass:\"compact\",attrs:{\"size\":5,\"title\":_vm.$t('volunteerForm.remove'),\"click-event\":\"onStandardProfileRemove\"},on:{\"onStandardProfileRemove\":_vm.removeStandardForm}}):_vm._e()],1)]),(_vm.hasStandardProfile)?_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[_c('VolunteerProfileStandard',{attrs:{\"volunteer\":_vm.volunteer.standardProfile},on:{\"input\":_vm.onVolunteerStandardProfileChanged}})],1)]):_vm._e()]):_vm._e(),(_vm.hasNetProfile)?_c('div',[_c('div',{staticClass:\"row profilehead\"},[_c('div',{staticClass:\"col-7\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.netInfo')))])]),_c('div',{staticClass:\"col-5 text-right\"},[(!_vm.volunteer.netProfile.id)?_c('SprButton',{staticClass:\"compact\",attrs:{\"size\":5,\"title\":_vm.$t('volunteerForm.remove'),\"click-event\":\"onNetProfileRemove\"},on:{\"onNetProfileRemove\":_vm.removeNetForm}}):_vm._e()],1)]),(_vm.hasNetProfile)?_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[_c('VolunteerProfileNet',{attrs:{\"volunteer\":_vm.volunteer.netProfile},on:{\"input\":_vm.onVolunteerNetProfileChanged}})],1)]):_vm._e()]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 profile-button\"},[(!_vm.hasStandardProfile && !_vm.hasNetProfile)?_c('div',{staticClass:\"btn-option\"},[_c('a',{attrs:{\"name\":\"standard\"}}),_c('SprButton',{attrs:{\"primary\":true,\"size\":4,\"title\":_vm.$t('volunteerForm.addStandardProfile'),\"click-event\":\"onAddStandardProfile\"},on:{\"onAddStandardProfile\":_vm.showStandardForm}})],1):_vm._e(),_c('a',{attrs:{\"name\":\"net\"}}),(!_vm.hasNetProfile && !_vm.hasStandardProfile)?_c('div',{staticClass:\"btn-option\"},[_c('SprButton',{attrs:{\"primary\":true,\"size\":4,\"title\":_vm.$t('volunteerForm.addNetProfile'),\"click-event\":\"onAddNetProfile\"},on:{\"onAddNetProfile\":_vm.showNetForm}})],1):_vm._e()])]),_c('div',{staticClass:\"row feature-panel buttons\"},[_c('div',{staticClass:\"col-6 cancel\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.cancel'),\"click-event\":\"onCancel\"},on:{\"onCancel\":_vm.cancel}})],1),_c('div',{staticClass:\"col-6 save\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.save'),\"disabled\":!_vm.hasStandardProfile && !_vm.hasNetProfile,\"click-event\":\"onSave\"},on:{\"onSave\":_vm.save}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localVolunteer)?_c('div',{staticClass:\"volunteerprofilecommon\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6 sectionheader\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('volunteerForm.personalInformation')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('sprdropdownnumberkey',{attrs:{\"title\":_vm.$t('volunteerForm.gender'),\"items\":_vm.userGenders,\"is-valid\":true},on:{\"input\":_vm.update},model:{value:(_vm.localVolunteer.gender),callback:function ($$v) {_vm.$set(_vm.localVolunteer, \"gender\", $$v)},expression:\"localVolunteer.gender\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.healthcareTraining')))]),_c('checkboxinput',{attrs:{\"title\":_vm.$t('volunteerForm.hasHealthcareTraining'),\"aria-label\":_vm.$t('volunteerForm.hasHealthcareTraining')},on:{\"input\":_vm.update},model:{value:(_vm.localVolunteer.hasHealthCareTraining),callback:function ($$v) {_vm.$set(_vm.localVolunteer, \"hasHealthCareTraining\", $$v)},expression:\"localVolunteer.hasHealthCareTraining\"}})],1)]),(_vm.localVolunteer.hasHealthCareTraining)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('nonIdentProfileForm.whichHealthCareTraining'),\"is-valid\":true},on:{\"input\":_vm.update},model:{value:(_vm.volunteer.healthCareTrainingFreetext),callback:function ($$v) {_vm.$set(_vm.volunteer, \"healthCareTrainingFreetext\", $$v)},expression:\"volunteer.healthCareTrainingFreetext\"}})],1)]):_vm._e()]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\r\n  methods: {\r\n    firstError () {\r\n      var firstErrorId = this.$validator.errors.items[0].id\r\n      const firstErrorField = this.$validator.fields.itemsById[firstErrorId]\r\n      if (firstErrorField) {\r\n        const errorElement = firstErrorField.el\r\n        if (errorElement) {\r\n          errorElement.scrollIntoView()\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\n","<template>\r\n  <div v-if=\"localVolunteer\" class=\"volunteerprofilecommon\">\r\n    <!-- PERSONAL INFO -->\r\n    <div class=\"row\">\r\n      <div class=\"col-sm-6 sectionheader\">\r\n        <h3>{{ $t('volunteerForm.personalInformation') }}</h3>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- user gender -->\r\n    <div class=\"row\">\r\n      <div class=\"col-sm-6\">\r\n        <sprdropdownnumberkey v-model=\"localVolunteer.gender\"\r\n                              :title=\"$t('volunteerForm.gender')\"\r\n                              :items=\"userGenders\"\r\n                              :is-valid=\"true\"\r\n                              @input=\"update\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- healthcare training -->\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span class=\"subheader\">{{ $t('volunteerForm.healthcareTraining') }}</span>\r\n        <checkboxinput v-model=\"localVolunteer.hasHealthCareTraining\"\r\n                       :title=\"$t('volunteerForm.hasHealthcareTraining')\"\r\n                       :aria-label=\"$t('volunteerForm.hasHealthcareTraining')\"\r\n                       @input=\"update\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"localVolunteer.hasHealthCareTraining\" class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput v-model=\"volunteer.healthCareTrainingFreetext\"\r\n                   :hint=\"$t('nonIdentProfileForm.whichHealthCareTraining')\"\r\n                   :is-valid=\"true\"\r\n                   @input=\"update\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import sprdropdownnumberkey from '../SPRDropdownNumberKey.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import enums from '../../mixins/enums.js'\r\n  import scroll from '../../mixins/scroll.js'\r\n  import locationutils from '../../mixins/locationutils.js'\r\n  // import enumhelper from '../../mixins/enums.js'\r\n  import * as _ from 'lodash'\r\n  import { FriendVolunteerDto } from '../../types/index'\r\n  import { SprDropDownNumberValue } from '../../types/custom'\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerProfileCommon',\r\n    components: {\r\n      forminput,\r\n      sprdropdownnumberkey,\r\n      checkboxinput\r\n    },\r\n    mixins: [enums, scroll, locationutils],\r\n    inject: ['$validator'],\r\n    props: {\r\n      volunteer: {\r\n        type: Object as () => FriendVolunteerDto,\r\n        required: true\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        localVolunteer: undefined as undefined | FriendVolunteerDto\r\n      }\r\n    },\r\n    computed: {\r\n      userGenders (): Array<SprDropDownNumberValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.genders, function (val, key) {\r\n          return { value: val.id, text: self.$t('genders.' + val.text) } as SprDropDownNumberValue\r\n        })\r\n      }\r\n    },\r\n    watch: {\r\n      volunteer: function (newVal: FriendVolunteerDto): void {\r\n        this.localVolunteer = newVal\r\n      }\r\n    },\r\n    mounted (): void {\r\n      if (this.volunteer) {\r\n        this.localVolunteer = this.volunteer\r\n      }\r\n    },\r\n    methods: {\r\n      update () {\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            this.$emit('update', this.localVolunteer)\r\n          }\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteerprofilecommon {\r\n    background-color:$brand-white;\r\n\r\n    .subheader {\r\n      color:$brand-red;\r\n      text-transform: uppercase;\r\n      font-family: $font-bold;\r\n      margin: 0 0 10px 20px;\r\n      display:block;\r\n      font-size: 14px;\r\n    }\r\n\r\n    .sectionheader {\r\n      margin: 15px 0;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerProfileCommon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerProfileCommon.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerProfileCommon.vue?vue&type=template&id=73a63a42\"\nimport script from \"./VolunteerProfileCommon.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerProfileCommon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerProfileCommon.vue?vue&type=style&index=0&id=73a63a42&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.volunteer)?_c('div',{staticClass:\"volunteerprofilestandardform\"},[_c('a',{attrs:{\"name\":\"standard\"}}),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6 sectionheader\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('volunteerForm.standardFormTitle')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12\"},[_c('forminputarea',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({max:100}),expression:\"{max:100}\"}],attrs:{\"title\":_vm.$t('volunteerForm.shortDescriptionThirdPerson'),\"name\":\"volunteerForm.shortDescription\",\"is-valid\":!_vm.errors.has('volunteerForm.shortDescription'),\"maxlength\":100,\"max-characters\":100,\"show-counter\":\"\",\"auto-resize\":\"\",\"rows\":1},model:{value:(_vm.volunteer.shortDescription),callback:function ($$v) {_vm.$set(_vm.volunteer, \"shortDescription\", $$v)},expression:\"volunteer.shortDescription\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('volunteerForm.hasSeparateAddress'),\"aria-label\":_vm.$t('volunteerForm.hasSeparateAddress')},model:{value:(_vm.volunteer.hasAlternativeAddress),callback:function ($$v) {_vm.$set(_vm.volunteer, \"hasAlternativeAddress\", $$v)},expression:\"volunteer.hasAlternativeAddress\"}})],1)]),(_vm.volunteer.hasAlternativeAddress)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('volunteerForm.alternativeAddress'),\"is-valid\":!_vm.errors.has('volunteerForm.streetAddress'),\"name\":\"volunteerForm.streetAddress\",\"required\":true},model:{value:(_vm.volunteer.alternativeStreet),callback:function ($$v) {_vm.$set(_vm.volunteer, \"alternativeStreet\", $$v)},expression:\"volunteer.alternativeStreet\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-4 col-md-3\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|regex:^[0-9]{5}$'),expression:\"'required|regex:^[0-9]{5}$'\"}],attrs:{\"hint\":_vm.$t('volunteerForm.postalCode'),\"is-valid\":!_vm.errors.has('volunteerForm.postalCode'),\"name\":\"volunteerForm.postalCode\",\"required\":true},model:{value:(_vm.volunteer.alternativeZipCode),callback:function ($$v) {_vm.$set(_vm.volunteer, \"alternativeZipCode\", $$v)},expression:\"volunteer.alternativeZipCode\"}})],1),_c('div',{staticClass:\"col-12 col-sm-8 col-md-9\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('volunteerForm.city'),\"is-valid\":!_vm.errors.has('volunteerForm.city'),\"name\":\"volunteerForm.city\",\"required\":true},model:{value:(_vm.volunteer.alternativeCity),callback:function ($$v) {_vm.$set(_vm.volunteer, \"alternativeCity\", $$v)},expression:\"volunteer.alternativeCity\"}})],1)])]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.friendshipType')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxlist',{attrs:{\"list\":_vm.friendshipTypes,\"rows\":2},model:{value:(_vm.volunteer.friendshipTypes),callback:function ($$v) {_vm.$set(_vm.volunteer, \"friendshipTypes\", $$v)},expression:\"volunteer.friendshipTypes\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.interests')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxlist',{attrs:{\"list\":_vm.customerInterests,\"rows\":3},model:{value:(_vm.volunteer.interests),callback:function ($$v) {_vm.$set(_vm.volunteer, \"interests\", $$v)},expression:\"volunteer.interests\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('volunteerForm.otherInterests'),\"is-valid\":true},model:{value:(_vm.volunteer.otherInterests),callback:function ($$v) {_vm.$set(_vm.volunteer, \"otherInterests\", $$v)},expression:\"volunteer.otherInterests\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 sectionheader\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('volunteerForm.friendWishTitle')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('volunteerForm.multipleCustomers2'),\"aria-label\":_vm.$t('volunteerForm.multipleCustomers2')},model:{value:(_vm.volunteer.multipleCustomers),callback:function ($$v) {_vm.$set(_vm.volunteer, \"multipleCustomers\", $$v)},expression:\"volunteer.multipleCustomers\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-6\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.genderPreference'))+\"*\")]),_c('checkboxlist',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('option-selected'),expression:\"'option-selected'\"}],attrs:{\"list\":_vm.genders,\"rows\":1,\"name\":\"preferredGenderRequired\",\"is-valid\":!_vm.errors.has('preferredGenderRequired')},model:{value:(_vm.volunteer.preferredGenders),callback:function ($$v) {_vm.$set(_vm.volunteer, \"preferredGenders\", $$v)},expression:\"volunteer.preferredGenders\"}}),(_vm.errors.has('preferredGenderNotSelected'))?_c('span',{staticClass:\"error-message\"},[_vm._v(_vm._s(_vm.$t('validation.preferredGenderRequired')))]):_c('span',{staticClass:\"error-message\"},[_vm._v(\" \")])],1),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.desiredAge'))+\"*\")]),_c('checkboxlist',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('option-selected'),expression:\"'option-selected'\"}],attrs:{\"list\":_vm.preferredAge,\"rows\":1,\"name\":\"ageGroupRequired\",\"is-valid\":!_vm.errors.has('ageGroupRequired')},model:{value:(_vm.volunteer.preferredAges),callback:function ($$v) {_vm.$set(_vm.volunteer, \"preferredAges\", $$v)},expression:\"volunteer.preferredAges\"}}),(_vm.errors.has('ageGroupNotSelected'))?_c('span',{staticClass:\"error-message\"},[_vm._v(_vm._s(_vm.$t('validation.ageGroupNotSelected')))]):_c('span',{staticClass:\"error-message\"},[_vm._v(\" \")])],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.customerType')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxlist',{attrs:{\"list\":_vm.customerTypes,\"rows\":2},model:{value:(_vm.volunteer.customerTypes),callback:function ($$v) {_vm.$set(_vm.volunteer, \"customerTypes\", $$v)},expression:\"volunteer.customerTypes\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.availabilityTimes')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxlist',{attrs:{\"list\":_vm.availabilityTimes,\"rows\":3},model:{value:(_vm.volunteer.availabilityTimes),callback:function ($$v) {_vm.$set(_vm.volunteer, \"availabilityTimes\", $$v)},expression:\"volunteer.availabilityTimes\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('sprdropdownnumberkey',{attrs:{\"title\":_vm.$t('volunteerForm.availabilityFrequency'),\"items\":_vm.availabilityFrequency,\"is-valid\":true},model:{value:(_vm.volunteer.availabilityFrequence),callback:function ($$v) {_vm.$set(_vm.volunteer, \"availabilityFrequence\", $$v)},expression:\"volunteer.availabilityFrequence\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('volunteerForm.availabilityDetails'),\"is-valid\":true},model:{value:(_vm.volunteer.availabilityDetails),callback:function ($$v) {_vm.$set(_vm.volunteer, \"availabilityDetails\", $$v)},expression:\"volunteer.availabilityDetails\"}})],1)])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"volunteer\" class=\"volunteerprofilestandardform\">\r\n    <a name=\"standard\"></a>\r\n    <div class=\"row\">\r\n      <div class=\"col-sm-6 sectionheader\">\r\n        <h3>{{ $t('volunteerForm.standardFormTitle') }}</h3>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <div class=\"col-sm-12\">\r\n        <forminputarea v-model=\"volunteer.shortDescription\"\r\n                       v-validate=\"{max:100}\"\r\n                       :title=\"$t('volunteerForm.shortDescriptionThirdPerson')\"\r\n                       name=\"volunteerForm.shortDescription\"\r\n                       :is-valid=\"!errors.has('volunteerForm.shortDescription')\"\r\n                       :maxlength=\"100\"\r\n                       :max-characters=\"100\"\r\n                       show-counter\r\n                       auto-resize\r\n                       :rows=\"1\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- separate address -->\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxinput v-model=\"volunteer.hasAlternativeAddress\"\r\n                       :title=\"$t('volunteerForm.hasSeparateAddress')\"\r\n                       :aria-label=\"$t('volunteerForm.hasSeparateAddress')\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"volunteer.hasAlternativeAddress\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <forminput v-model=\"volunteer.alternativeStreet\"\r\n                     v-validate=\"'required'\"\r\n                     :hint=\"$t('volunteerForm.alternativeAddress')\"\r\n                     :is-valid=\"!errors.has('volunteerForm.streetAddress')\"\r\n                     name=\"volunteerForm.streetAddress\"\r\n                     :required=\"true\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 col-sm-4 col-md-3\">\r\n          <forminput v-model=\"volunteer.alternativeZipCode\"\r\n                     v-validate=\"'required|regex:^[0-9]{5}$'\"\r\n                     :hint=\"$t('volunteerForm.postalCode')\"\r\n                     :is-valid=\"!errors.has('volunteerForm.postalCode')\"\r\n                     name=\"volunteerForm.postalCode\"\r\n                     :required=\"true\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 col-sm-8 col-md-9\">\r\n          <forminput v-model=\"volunteer.alternativeCity\"\r\n                     v-validate=\"'required'\"\r\n                     :hint=\"$t('volunteerForm.city')\"\r\n                     :is-valid=\"!errors.has('volunteerForm.city')\"\r\n                     name=\"volunteerForm.city\"\r\n                     :required=\"true\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span class=\"subheader\">{{ $t('volunteerForm.friendshipType') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxlist v-model=\"volunteer.friendshipTypes\"\r\n                      :list=\"friendshipTypes\"\r\n                      :rows=\"2\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- interests -->\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span class=\"subheader\">{{ $t('volunteerForm.interests') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxlist v-model=\"volunteer.interests\"\r\n                      :list=\"customerInterests\"\r\n                      :rows=\"3\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput v-model=\"volunteer.otherInterests\"\r\n                   :hint=\"$t('volunteerForm.otherInterests')\"\r\n                   :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <!-- CUSTOMER PREFERENCES -->\r\n    <div class=\"row\">\r\n      <div class=\"col-12 sectionheader\">\r\n        <h3>{{ $t('volunteerForm.friendWishTitle') }}</h3>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxinput v-model=\"volunteer.multipleCustomers\"\r\n                       :title=\"$t('volunteerForm.multipleCustomers2')\"\r\n                       :aria-label=\"$t('volunteerForm.multipleCustomers2')\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <!-- gender -->\r\n      <div class=\"col-12 col-md-6\">\r\n        <span class=\"subheader\">{{ $t('volunteerForm.genderPreference') }}*</span>\r\n        <checkboxlist v-model=\"volunteer.preferredGenders\"\r\n                      v-validate=\"'option-selected'\"\r\n                      :list=\"genders\"\r\n                      :rows=\"1\"\r\n                      name=\"preferredGenderRequired\"\r\n                      :is-valid=\"!errors.has('preferredGenderRequired')\"\r\n        />\r\n        <span v-if=\"errors.has('preferredGenderNotSelected')\" class=\"error-message\">{{ $t('validation.preferredGenderRequired') }}</span>\r\n        <span v-else class=\"error-message\">&nbsp;</span>\r\n      </div>\r\n      <!-- Desired age -->\r\n      <div class=\"col-12 col-md-6\">\r\n        <span class=\"subheader\">{{ $t('volunteerForm.desiredAge') }}*</span>\r\n        <checkboxlist v-model=\"volunteer.preferredAges\"\r\n                      v-validate=\"'option-selected'\"\r\n                      :list=\"preferredAge\"\r\n                      :rows=\"1\"\r\n                      name=\"ageGroupRequired\"\r\n                      :is-valid=\"!errors.has('ageGroupRequired')\"\r\n        />\r\n        <span v-if=\"errors.has('ageGroupNotSelected')\" class=\"error-message\">{{ $t('validation.ageGroupNotSelected') }}</span>\r\n        <span v-else class=\"error-message\">&nbsp;</span>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span class=\"subheader\">{{ $t('volunteerForm.customerType') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxlist v-model=\"volunteer.customerTypes\"\r\n                      :list=\"customerTypes\"\r\n                      :rows=\"2\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span class=\"subheader\">{{ $t('volunteerForm.availabilityTimes') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxlist v-model=\"volunteer.availabilityTimes\"\r\n                      :list=\"availabilityTimes\"\r\n                      :rows=\"3\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-sm-6\">\r\n        <sprdropdownnumberkey v-model=\"volunteer.availabilityFrequence\"\r\n                              :title=\"$t('volunteerForm.availabilityFrequency')\"\r\n                              :items=\"availabilityFrequency\"\r\n                              :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput v-model=\"volunteer.availabilityDetails\"\r\n                   :hint=\"$t('volunteerForm.availabilityDetails')\"\r\n                   :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import forminputarea from '../SPRSimpleTextArea.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import checkboxlist from '../SPRSimpleCheckboxBitmaskList.vue'\r\n  import sprdropdownnumberkey from '../SPRDropdownNumberKey.vue'\r\n  import enums from '../../mixins/enums.js'\r\n  import scroll from '../../mixins/scroll.js'\r\n  import locationutils from '../../mixins/locationutils.js'\r\n  // import enumhelper from '../../mixins/enums.js'\r\n  import * as _ from 'lodash'\r\n  import { FriendVolunteerProfileStandardDto } from '../../types/index'\r\n  import { SprCheckboxBitmaskValue, SprDropDownNumberValue } from '../../types/custom'\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerProfileStandard',\r\n    components: {\r\n      forminput,\r\n      checkboxinput,\r\n      checkboxlist,\r\n      sprdropdownnumberkey,\r\n      forminputarea\r\n    },\r\n    mixins: [enums, scroll, locationutils],\r\n    model: {\r\n      prop: 'volunteer',\r\n      event: 'update'\r\n    },\r\n    props: {\r\n      volunteer: {\r\n        type: Object as () => FriendVolunteerProfileStandardDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      availabilityTimes (): Array<SprCheckboxBitmaskValue> {\r\n        return _.map(this.$store.state.availabilityTimes.filter(x => x.id !== 0), (val, key) => {\r\n          return { value: val.id, text: this.$t('availabilityTimes.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      friendshipTypes (): Array<SprCheckboxBitmaskValue> {\r\n        return _.map(this.$store.state.friendshipTypes.filter(x => x.id !== 0), (val, key) => {\r\n          return { value: val.id, text: this.$t('friendshipTypes.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      // not enabled yet, but will be.\r\n      // travelOptions (): Array<SprCheckboxBitmaskValue> {\r\n      //   return _.map(this.$store.state.transportation, (val, key) => {\r\n      //     return { value: val.id, text: this.$t('transportation.' + val.text) } as SprCheckboxBitmaskValue\r\n      //   })\r\n      // },\r\n      customerTypes (): Array<SprCheckboxBitmaskValue> {\r\n        return _.map(this.$store.state.customerTypes.filter(x => x.id !== 0), (val, key) => {\r\n          return { value: val.id, text: this.$t('customerTypes.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      customerInterests (): Array<SprCheckboxBitmaskValue> {\r\n        return _.map(this.$store.state.customerInterests.filter(x => x.id !== 0), (val, key) => {\r\n          return { value: val.id, text: this.$t('customerInterests.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      genders (): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.genders, function (val, key) {\r\n          return { value: val.id, text: self.$t('genders.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      preferredAge (this: any): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.preferredAge.filter(x => x.id !== 0), function (val, key) {\r\n          return { value: val.id, text: self.$t('preferredAge.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      availabilityFrequency (): Array<SprDropDownNumberValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.availabilityFrequency.filter(x => x.id !== 0), function (val, key) {\r\n          return { value: val.id, text: self.$t('availabilityFrequency.' + val.text) } as SprDropDownNumberValue\r\n        })\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.$nextTick(() => {\r\n        const hashName = this.$route.hash && this.$route.hash.substring(1)\r\n        if (hashName) {\r\n          const hashSelector = `a[name=${hashName}]`\r\n          const el = document.querySelector(hashSelector)\r\n          el && el.scrollIntoView()\r\n        }\r\n      })\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteerprofilestandardform {\r\n    background-color:$brand-white;\r\n\r\n    .subheader {\r\n      color:$brand-red;\r\n      text-transform: uppercase;\r\n      font-family: $font-bold;\r\n      margin: 0 0 10px 20px;\r\n      display:block;\r\n      font-size: 14px;\r\n    }\r\n\r\n    .error-message {\r\n      color:$brand-red;\r\n      margin: 0 0 2px 20px;\r\n      display:block;\r\n      font-size: 14px;\r\n    }\r\n    .sectionheader {\r\n      margin: 15px 0;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerProfileStandard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerProfileStandard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerProfileStandard.vue?vue&type=template&id=2f6301ec\"\nimport script from \"./VolunteerProfileStandard.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerProfileStandard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerProfileStandard.vue?vue&type=style&index=0&id=2f6301ec&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.volunteer)?_c('div',{staticClass:\"volunteerprofilenetform\"},[_c('a',{attrs:{\"name\":\"net\"}}),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6 sectionheader\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('volunteerForm.netFormTitle')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({max:100}),expression:\"{max:100}\"}],attrs:{\"hint\":_vm.$t('volunteerForm.shortDescriptionThirdPerson'),\"name\":\"volunteerForm.shortDescription\",\"is-valid\":!_vm.errors.has('volunteerForm.shortDescription'),\"maxlength\":100},model:{value:(_vm.volunteer.shortDescription),callback:function ($$v) {_vm.$set(_vm.volunteer, \"shortDescription\", $$v)},expression:\"volunteer.shortDescription\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.friendshipType')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxlist',{attrs:{\"list\":_vm.friendshipTypes,\"rows\":2},model:{value:(_vm.volunteer.friendshipTypes),callback:function ($$v) {_vm.$set(_vm.volunteer, \"friendshipTypes\", $$v)},expression:\"volunteer.friendshipTypes\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.interests')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxlist',{attrs:{\"list\":_vm.customerInterests,\"rows\":3},model:{value:(_vm.volunteer.interests),callback:function ($$v) {_vm.$set(_vm.volunteer, \"interests\", $$v)},expression:\"volunteer.interests\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('volunteerForm.otherInterests'),\"is-valid\":true},model:{value:(_vm.volunteer.otherInterests),callback:function ($$v) {_vm.$set(_vm.volunteer, \"otherInterests\", $$v)},expression:\"volunteer.otherInterests\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 sectionheader\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('volunteerForm.friendWishTitle')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('volunteerForm.multipleCustomers2'),\"aria-label\":_vm.$t('volunteerForm.multipleCustomers2')},model:{value:(_vm.volunteer.multipleCustomers),callback:function ($$v) {_vm.$set(_vm.volunteer, \"multipleCustomers\", $$v)},expression:\"volunteer.multipleCustomers\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-6\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.genderPreference'))+\"*\")]),_c('checkboxlist',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('option-selected'),expression:\"'option-selected'\"}],attrs:{\"list\":_vm.genders,\"rows\":1,\"name\":\"preferredGenderRequired\",\"is-valid\":!_vm.errors.has('preferredGenderRequired')},model:{value:(_vm.volunteer.preferredGenders),callback:function ($$v) {_vm.$set(_vm.volunteer, \"preferredGenders\", $$v)},expression:\"volunteer.preferredGenders\"}}),(_vm.errors.has('preferredGenderNotSelected'))?_c('span',{staticClass:\"error-message\"},[_vm._v(_vm._s(_vm.$t('validation.preferredGenderRequired')))]):_c('span',{staticClass:\"error-message\"},[_vm._v(\" \")])],1),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.desiredAge'))+\"*\")]),_c('checkboxlist',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('option-selected'),expression:\"'option-selected'\"}],attrs:{\"list\":_vm.preferredAge,\"rows\":1,\"name\":\"ageGroupRequired\",\"is-valid\":!_vm.errors.has('ageGroupRequired')},model:{value:(_vm.volunteer.preferredAges),callback:function ($$v) {_vm.$set(_vm.volunteer, \"preferredAges\", $$v)},expression:\"volunteer.preferredAges\"}}),(_vm.errors.has('ageGroupNotSelected'))?_c('span',{staticClass:\"error-message\"},[_vm._v(_vm._s(_vm.$t('validation.ageGroupNotSelected')))]):_c('span',{staticClass:\"error-message\"},[_vm._v(\" \")])],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('sprdropdownnumberkey',{attrs:{\"title\":_vm.$t('volunteerForm.availabilityFrequency'),\"items\":_vm.availabilityFrequency,\"is-valid\":true},model:{value:(_vm.volunteer.availabilityFrequence),callback:function ($$v) {_vm.$set(_vm.volunteer, \"availabilityFrequence\", $$v)},expression:\"volunteer.availabilityFrequence\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('volunteerForm.availabilityDetails'),\"is-valid\":true},model:{value:(_vm.volunteer.availabilityDetails),callback:function ($$v) {_vm.$set(_vm.volunteer, \"availabilityDetails\", $$v)},expression:\"volunteer.availabilityDetails\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.customerType')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxlist',{attrs:{\"list\":_vm.customerTypes,\"rows\":2},model:{value:(_vm.volunteer.customerTypes),callback:function ($$v) {_vm.$set(_vm.volunteer, \"customerTypes\", $$v)},expression:\"volunteer.customerTypes\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 sectionheader\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.netFriendContacts')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.email'),\"is-valid\":true},model:{value:(_vm.volunteer.econtactEmail),callback:function ($$v) {_vm.$set(_vm.volunteer, \"econtactEmail\", $$v)},expression:\"volunteer.econtactEmail\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.telegram'),\"is-valid\":true},model:{value:(_vm.volunteer.econtactTelegram),callback:function ($$v) {_vm.$set(_vm.volunteer, \"econtactTelegram\", $$v)},expression:\"volunteer.econtactTelegram\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.kik'),\"is-valid\":true},model:{value:(_vm.volunteer.econtactKik),callback:function ($$v) {_vm.$set(_vm.volunteer, \"econtactKik\", $$v)},expression:\"volunteer.econtactKik\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.instagram'),\"is-valid\":true},model:{value:(_vm.volunteer.econtactInstagram),callback:function ($$v) {_vm.$set(_vm.volunteer, \"econtactInstagram\", $$v)},expression:\"volunteer.econtactInstagram\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.skype'),\"is-valid\":true},model:{value:(_vm.volunteer.econtactSkype),callback:function ($$v) {_vm.$set(_vm.volunteer, \"econtactSkype\", $$v)},expression:\"volunteer.econtactSkype\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.discord'),\"is-valid\":true},model:{value:(_vm.volunteer.econtactDiscord),callback:function ($$v) {_vm.$set(_vm.volunteer, \"econtactDiscord\", $$v)},expression:\"volunteer.econtactDiscord\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.freetext'),\"is-valid\":true},model:{value:(_vm.volunteer.econtactFreetext),callback:function ($$v) {_vm.$set(_vm.volunteer, \"econtactFreetext\", $$v)},expression:\"volunteer.econtactFreetext\"}})],1)])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"volunteer\" class=\"volunteerprofilenetform\">\r\n    <a name=\"net\"></a>\r\n    <div class=\"row\">\r\n      <div class=\"col-sm-6 sectionheader\">\r\n        <h3>{{ $t('volunteerForm.netFormTitle') }}</h3>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <div class=\"col-sm-12\">\r\n        <forminput v-model=\"volunteer.shortDescription\"\r\n                   v-validate=\"{max:100}\"\r\n                   :hint=\"$t('volunteerForm.shortDescriptionThirdPerson')\"\r\n                   name=\"volunteerForm.shortDescription\"\r\n                   :is-valid=\"!errors.has('volunteerForm.shortDescription')\"\r\n                   :maxlength=\"100\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Friendship Types -->\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span class=\"subheader\">{{ $t('volunteerForm.friendshipType') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxlist v-model=\"volunteer.friendshipTypes\"\r\n                      :list=\"friendshipTypes\"\r\n                      :rows=\"2\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- interests -->\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span class=\"subheader\">{{ $t('volunteerForm.interests') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxlist v-model=\"volunteer.interests\"\r\n                      :list=\"customerInterests\"\r\n                      :rows=\"3\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput v-model=\"volunteer.otherInterests\"\r\n                   :hint=\"$t('volunteerForm.otherInterests')\"\r\n                   :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <!-- CUSTOMER PREFERENCES -->\r\n    <div class=\"row\">\r\n      <div class=\"col-12 sectionheader\">\r\n        <h3>{{ $t('volunteerForm.friendWishTitle') }}</h3>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxinput v-model=\"volunteer.multipleCustomers\"\r\n                       :title=\"$t('volunteerForm.multipleCustomers2')\"\r\n                       :aria-label=\"$t('volunteerForm.multipleCustomers2')\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <!-- gender -->\r\n      <div class=\"col-12 col-md-6\">\r\n        <span class=\"subheader\">{{ $t('volunteerForm.genderPreference') }}*</span>\r\n        <checkboxlist v-model=\"volunteer.preferredGenders\"\r\n                      v-validate=\"'option-selected'\"\r\n                      :list=\"genders\"\r\n                      :rows=\"1\"\r\n                      name=\"preferredGenderRequired\"\r\n                      :is-valid=\"!errors.has('preferredGenderRequired')\"\r\n        />\r\n        <span v-if=\"errors.has('preferredGenderNotSelected')\" class=\"error-message\">{{ $t('validation.preferredGenderRequired') }}</span>\r\n        <span v-else class=\"error-message\">&nbsp;</span>\r\n      </div>\r\n      <!-- Desired age -->\r\n      <div class=\"col-12 col-md-6\">\r\n        <span class=\"subheader\">{{ $t('volunteerForm.desiredAge') }}*</span>\r\n        <checkboxlist v-model=\"volunteer.preferredAges\"\r\n                      v-validate=\"'option-selected'\"\r\n                      :list=\"preferredAge\"\r\n                      :rows=\"1\"\r\n                      name=\"ageGroupRequired\"\r\n                      :is-valid=\"!errors.has('ageGroupRequired')\"\r\n        />\r\n        <span v-if=\"errors.has('ageGroupNotSelected')\" class=\"error-message\">{{ $t('validation.ageGroupNotSelected') }}</span>\r\n        <span v-else class=\"error-message\">&nbsp;</span>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <div class=\"col-sm-6\">\r\n        <sprdropdownnumberkey v-model=\"volunteer.availabilityFrequence\"\r\n                              :title=\"$t('volunteerForm.availabilityFrequency')\"\r\n                              :items=\"availabilityFrequency\"\r\n                              :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput v-model=\"volunteer.availabilityDetails\"\r\n                   :hint=\"$t('volunteerForm.availabilityDetails')\"\r\n                   :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span class=\"subheader\">{{ $t('volunteerForm.customerType') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxlist v-model=\"volunteer.customerTypes\"\r\n                      :list=\"customerTypes\"\r\n                      :rows=\"2\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 sectionheader\">\r\n        <h3>{{ $t('customerForm.netFriendContacts') }}</h3>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput v-model=\"volunteer.econtactEmail\"\r\n                   :hint=\"$t('connectivity.email')\"\r\n                   :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput v-model=\"volunteer.econtactTelegram\"\r\n                   :hint=\"$t('connectivity.telegram')\"\r\n                   :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput v-model=\"volunteer.econtactKik\"\r\n                   :hint=\"$t('connectivity.kik')\"\r\n                   :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput v-model=\"volunteer.econtactInstagram\"\r\n                   :hint=\"$t('connectivity.instagram')\"\r\n                   :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput v-model=\"volunteer.econtactSkype\"\r\n                   :hint=\"$t('connectivity.skype')\"\r\n                   :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput v-model=\"volunteer.econtactDiscord\"\r\n                   :hint=\"$t('connectivity.discord')\"\r\n                   :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput v-model=\"volunteer.econtactFreetext\"\r\n                   :hint=\"$t('connectivity.freetext')\"\r\n                   :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import checkboxlist from '../SPRSimpleCheckboxBitmaskList.vue'\r\n  import sprdropdownnumberkey from '../SPRDropdownNumberKey.vue'\r\n  import enums from '../../mixins/enums.js'\r\n  import scroll from '../../mixins/scroll.js'\r\n  import locationutils from '../../mixins/locationutils.js'\r\n  // import enumhelper from '../../mixins/enums.js'\r\n  import * as _ from 'lodash'\r\n  import { FriendVolunteerProfileNetDto } from '../../types/index'\r\n  import { SprCheckboxBitmaskValue, SprDropDownNumberValue } from '../../types/custom'\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerProfileNet',\r\n    components: {\r\n      forminput,\r\n      checkboxinput,\r\n      checkboxlist,\r\n      sprdropdownnumberkey\r\n    },\r\n    mixins: [enums, scroll, locationutils],\r\n    model: {\r\n      prop: 'volunteer',\r\n      event: 'update'\r\n    },\r\n    props: {\r\n      volunteer: {\r\n        type: Object as () => FriendVolunteerProfileNetDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      friendshipTypes (): Array<SprCheckboxBitmaskValue> {\r\n        return _.map(this.$store.state.netFriendshipTypes.filter(x => x.id !== 0 && x.id !== 32), (val, key) => {\r\n          return { value: val.id, text: this.$t('friendshipTypes.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      customerTypes (): Array<SprCheckboxBitmaskValue> {\r\n        return _.map(this.$store.state.netCustomerTypes.filter(x => x.id !== 0), (val, key) => {\r\n          return { value: val.id, text: this.$t('netCustomerTypes.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      customerInterests (): Array<SprCheckboxBitmaskValue> {\r\n        return _.map(this.$store.state.customerInterests.filter(x => x.id !== 0), (val, key) => {\r\n          return { value: val.id, text: this.$t('customerInterests.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      genders (): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.genders, function (val, key) {\r\n          return { value: val.id, text: self.$t('genders.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      preferredAge (this: any): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.preferredAge.filter(x => x.id !== 0), function (val, key) {\r\n          return { value: val.id, text: self.$t('preferredAge.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      availabilityFrequency (): Array<SprDropDownNumberValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.availabilityFrequency.filter(x => x.id !== 0), function (val, key) {\r\n          return { value: val.id, text: self.$t('availabilityFrequency.' + val.text) } as SprDropDownNumberValue\r\n        })\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.$nextTick(() => {\r\n        const hashName = this.$route.hash && this.$route.hash.substring(1)\r\n        if (hashName) {\r\n          const hashSelector = `a[name=${hashName}]`\r\n          const el = document.querySelector(hashSelector)\r\n          el && el.scrollIntoView()\r\n        }\r\n      })\r\n    },\r\n    methods: {\r\n      addError (fieldName, translationField): void {\r\n        if (!this.errors.has(fieldName)) { this.$validator.errors.add({ field: fieldName, rule: translationField, msg: 'empty message' }) }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteerprofilenetform {\r\n    background-color:$brand-white;\r\n\r\n    .subheader {\r\n      color:$brand-red;\r\n      text-transform: uppercase;\r\n      font-family: $font-bold;\r\n      margin: 0 0 10px 20px;\r\n      display:block;\r\n      font-size: 14px;\r\n    }\r\n\r\n    .sectionheader {\r\n      margin: 15px 0;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerProfileNet.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerProfileNet.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerProfileNet.vue?vue&type=template&id=cce9bbde\"\nimport script from \"./VolunteerProfileNet.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerProfileNet.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerProfileNet.vue?vue&type=style&index=0&id=cce9bbde&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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 Vue from 'vue'\r\nimport VueToast from 'vue-toast-notification'\r\n// below is overridden by _alerts.scss\r\nimport 'vue-toast-notification/dist/theme-default.css'\r\n\r\nVue.use(VueToast) // warning alerts\r\n\r\nexport default {\r\n  methods: {\r\n    showAlert403 () {\r\n      this.showAlertPermissionDenied()\r\n      this.$router.push('/404')\r\n    },\r\n    showAlertSuccess (html) {\r\n      return new Promise((resolve, reject) => {\r\n        this.showAlert(html, 'success', () => {\r\n          resolve()\r\n        })\r\n      })\r\n    },\r\n    showAlertInfo (html) {\r\n      return new Promise((resolve, reject) => {\r\n        this.showAlert(html, 'info', () => {\r\n          resolve()\r\n        })\r\n      })\r\n    },\r\n    showAlertWarning (html) {\r\n      return new Promise((resolve, reject) => {\r\n        this.showAlert(html, 'warning', () => {\r\n          resolve()\r\n        })\r\n      })\r\n    },\r\n    showAlertError (html) {\r\n      return new Promise((resolve, reject) => {\r\n        this.showAlert(html, 'error', () => {\r\n          resolve()\r\n        })\r\n      })\r\n    },\r\n    showAlertPermissionDenied () {\r\n      return new Promise((resolve, reject) => {\r\n        this.showAlert(this.$t('common.permissionDenied'), 'error', () => {\r\n          resolve()\r\n        })\r\n      })\r\n    },\r\n    showAlert (html, type, closefn, duration = 7000) {\r\n      this.$toast.open({\r\n        message: html,\r\n        type: type,\r\n        position: 'top',\r\n        duration: duration,\r\n        onClose: closefn\r\n      })\r\n    }\r\n  }\r\n}\r\n","<template>\r\n  <div class=\"container\">\r\n    <div class=\"profileidentvolunteerform\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <h2>{{ addEditTitle }}</h2>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-center py-2\">\r\n          <validation :id=\"'validationTarget' + _uid\"\r\n                      ref=\"validationtarget\"\r\n                      :validation-errors=\"validationErrors\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <VolunteerProfileCommon :volunteer=\"volunteer\" @input=\"onVolunteerChanged\" />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"!hasStandardProfile && !hasNetProfile\" class=\"row profilehead\">\r\n        <div class=\"col-12\">\r\n          <span class=\"subheader\">{{ $t('volunteerForm.selectProfileInfo') }}</span>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"hasStandardProfile\">\r\n        <div class=\"row profilehead\">\r\n          <div class=\"col-7\">\r\n            <span class=\"subheader\">{{ $t('volunteerForm.standardInfo') }}</span>\r\n          </div>\r\n          <div class=\"col-5 text-right\">\r\n            <SprButton v-if=\"!volunteer.standardProfile.id\"\r\n                       :size=\"5\"\r\n                       class=\"compact\"\r\n                       :title=\"$t('volunteerForm.remove')\"\r\n                       click-event=\"onStandardProfileRemove\"\r\n                       @onStandardProfileRemove=\"removeStandardForm\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div v-if=\"hasStandardProfile\" class=\"row feature-panel\">\r\n          <div class=\"col-12\">\r\n            <VolunteerProfileStandard :volunteer=\"volunteer.standardProfile\" @input=\"onVolunteerStandardProfileChanged\" />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"hasNetProfile\">\r\n        <div class=\"row profilehead\">\r\n          <div class=\"col-7\">\r\n            <span class=\"subheader\">{{ $t('volunteerForm.netInfo') }}</span>\r\n          </div>\r\n          <div class=\"col-5 text-right\">\r\n            <SprButton v-if=\"!volunteer.netProfile.id\"\r\n                       :size=\"5\"\r\n                       class=\"compact\"\r\n                       :title=\"$t('volunteerForm.remove')\"\r\n                       click-event=\"onNetProfileRemove\"\r\n                       @onNetProfileRemove=\"removeNetForm\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div v-if=\"hasNetProfile\" class=\"row feature-panel\">\r\n          <div class=\"col-12\">\r\n            <VolunteerProfileNet :volunteer=\"volunteer.netProfile\" @input=\"onVolunteerNetProfileChanged\" />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 profile-button\">\r\n          <div v-if=\"!hasStandardProfile && !hasNetProfile\" class=\"btn-option\">\r\n            <a name=\"standard\"></a>\r\n            <SprButton :primary=\"true\"\r\n                       :size=\"4\"\r\n                       :title=\"$t('volunteerForm.addStandardProfile')\"\r\n                       click-event=\"onAddStandardProfile\"\r\n                       @onAddStandardProfile=\"showStandardForm\"\r\n            />\r\n          </div>\r\n          <a name=\"net\"></a>\r\n          <div v-if=\"!hasNetProfile && !hasStandardProfile\" class=\"btn-option\">\r\n            <SprButton :primary=\"true\"\r\n                       :size=\"4\"\r\n                       :title=\"$t('volunteerForm.addNetProfile')\"\r\n                       click-event=\"onAddNetProfile\"\r\n                       @onAddNetProfile=\"showNetForm\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel buttons\">\r\n        <div class=\"col-6 cancel\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.cancel')\"\r\n                     click-event=\"onCancel\"\r\n                     @onCancel=\"cancel\"\r\n          />\r\n        </div>\r\n        <div class=\"col-6 save\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.save')\"\r\n                     :disabled=\"!hasStandardProfile && !hasNetProfile\"\r\n                     click-event=\"onSave\"\r\n                     @onSave=\"save\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import SprButton from '@/components/SPRButton.vue'\r\n  import VolunteerProfileCommon from '@/components/friends/VolunteerProfileCommon.vue'\r\n  import VolunteerProfileStandard from '@/components/friends/VolunteerProfileStandard.vue'\r\n  import VolunteerProfileNet from '@/components/friends/VolunteerProfileNet.vue'\r\n  import validation from '../SPRValidationError.vue'\r\n  import Alerts from '@/mixins/alerts.js'\r\n  import { ErrorBag, FieldError } from 'vee-validate'\r\n  import { FriendVolunteerDto, FriendVolunteerProfileStandardDto, FriendVolunteerProfileNetDto, CustomerState, PreferredGenders, FriendshipTypes, NetFriendshipTypes } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    volunteer: FriendVolunteerDto\r\n  }\r\n\r\n  // This is the component for a user to add and update their own Friend profile.\r\n  export default Vue.extend({\r\n    name: 'ProfileIdentVolunteerForm',\r\n    components: { validation, VolunteerProfileCommon, VolunteerProfileStandard, VolunteerProfileNet, SprButton },\r\n    mixins: [Alerts],\r\n    props: {\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        volunteer: {\r\n          city: '',\r\n          desiredAge: 0,\r\n          friendManagementGroupIds: [],\r\n          friendshipTypes: [],\r\n          friendVolunteerNetId: undefined,\r\n          friendVolunteerStandardId: undefined,\r\n          gender: 1,\r\n          hasHealthCareTraining: false,\r\n          hasNetProfile: false,\r\n          hasStandardProfile: false,\r\n          healthCareTrainingFreetext: '',\r\n          id: 0,\r\n          netProfile: {\r\n            availabilityDetails: '',\r\n            availabilityFrequence: 0,\r\n            availabilityTimes: 0,\r\n            customerTypes: 0,\r\n            friendManagementGroupId: 0,\r\n            friendships: [],\r\n            friendPools: [],\r\n            friendshipTypes: (NetFriendshipTypes.OneToOne),\r\n            id: 0,\r\n            interests: 0,\r\n            lastFriendshipEndDate: new Date(),\r\n            multipleCustomers: false,\r\n            onHold: false,\r\n            onHoldDeadline: undefined,\r\n            onHoldDetails: '',\r\n            otherInterests: '',\r\n            preferredAges: 0,\r\n            preferredGenders: (PreferredGenders.Other | PreferredGenders.Male | PreferredGenders.Female),\r\n            shortDescription: '',\r\n            startedPending: new Date(),\r\n            state: CustomerState.PendingApproval,\r\n            volunteerInterviewed: false,\r\n            volunteerInterviewedBy: '',\r\n            volunteerInterviewedDate: '',\r\n            econtactDiscord: '',\r\n            econtactEmail: '',\r\n            econtactFreetext: '',\r\n            econtactInstagram: '',\r\n            econtactKik: '',\r\n            econtactSkype: '',\r\n            econtactTelegram: '',\r\n            privateNotes: ''\r\n          },\r\n          otherLanguages: '',\r\n          phone: this.$store.state.profile.phoneNumber,\r\n          postalCode: '',\r\n          profileId: this.$store.state.profile.profileId,\r\n          standardProfile: {\r\n            availabilityDetails: '',\r\n            availabilityFrequence: 0,\r\n            customerTypes: 0,\r\n            friendManagementGroupId: 0,\r\n            friendships: [],\r\n            friendshipTypes: (FriendshipTypes.OneToOne),\r\n            friendPools: [],\r\n            id: 0,\r\n            interests: 0,\r\n            lastFriendshipEndDate: new Date(),\r\n            multipleCustomers: false,\r\n            onHold: false,\r\n            onHoldDeadline: undefined,\r\n            onHoldDetails: '',\r\n            otherInterests: '',\r\n            preferredAges: 0,\r\n            preferredGenders: (PreferredGenders.Other | PreferredGenders.Male | PreferredGenders.Female),\r\n            shortDescription: '',\r\n            startedPending: new Date(),\r\n            state: CustomerState.PendingApproval,\r\n            volunteerInterviewed: false,\r\n            volunteerInterviewedBy: '',\r\n            volunteerInterviewedDate: '',\r\n            availabilityTimes: 0,\r\n            hasAlternativeAddress: false,\r\n            alternativeCity: '',\r\n            alternativeStreet: '',\r\n            alternativeZipCode: '',\r\n            privateNotes: ''\r\n          },\r\n          streetAddress: ''\r\n        } as FriendVolunteerDto\r\n      }\r\n    },\r\n    computed: {\r\n      isAdd (): boolean {\r\n        return Boolean(!this.$store.state.profile.friendInfo)\r\n      },\r\n      isEdit (): boolean {\r\n        return Boolean(this.$store.state.profile.friendInfo)\r\n      },\r\n      addEditTitle (): string | LocaleMessage {\r\n        return this.isEdit\r\n          ? this.$t('volunteerForm.updateTitle')\r\n          : this.$t('volunteerForm.addTitle')\r\n      },\r\n      hasStandardProfile (): boolean {\r\n        return this.volunteer.hasStandardProfile\r\n      },\r\n      hasNetProfile (): boolean {\r\n        return this.volunteer.hasNetProfile\r\n      },\r\n      validationErrors (): Array<Array<string>> {\r\n        var errs: ErrorBag = this.errors ? this.errors : []\r\n        if (errs.items.length) {\r\n          return errs.items.map((err: FieldError) => {\r\n            return [`error_${err.field}`, err.rule ? err.rule : '', err.msg ? err.msg : '']\r\n          })\r\n        }\r\n        return []\r\n      }\r\n    },\r\n    mounted (): void {\r\n      if (this.isEdit) {\r\n        this.volunteer = this.$store.state.profile.friendInfo\r\n      }\r\n      // else its an add\r\n    },\r\n    provide (): Record<string, any> {\r\n      return {\r\n        $validator: this.$validator // allow child components to have validator injected\r\n      }\r\n    },\r\n    methods: {\r\n      onVolunteerChanged (newVolunteer: FriendVolunteerDto): void {\r\n        // only change the basic details, dont overwrite the net and standard profiles.\r\n        const origStandardProfile = { ...this.volunteer.standardProfile }\r\n        const origNetProfile = { ...this.volunteer.netProfile }\r\n        this.volunteer = newVolunteer\r\n        this.volunteer.standardProfile = origStandardProfile\r\n        this.volunteer.netProfile = origNetProfile\r\n      },\r\n      onVolunteerStandardProfileChanged (newProfile: FriendVolunteerProfileStandardDto): void {\r\n        this.volunteer.standardProfile = newProfile\r\n      },\r\n      onVolunteerNetProfileChanged (newProfile: FriendVolunteerProfileNetDto): void {\r\n        this.volunteer.netProfile = newProfile\r\n      },\r\n      showStandardForm (): void {\r\n        this.volunteer.hasStandardProfile = true\r\n        if (this.volunteer.standardProfile == null) {\r\n          this.volunteer.standardProfile = {\r\n            availabilityDetails: '',\r\n            availabilityFrequence: 0,\r\n            customerTypes: 0,\r\n            friendManagementGroupId: 0,\r\n            friendships: [],\r\n            friendshipTypes: (FriendshipTypes.OneToOne),\r\n            friendPools: [],\r\n            id: 0,\r\n            interests: 0,\r\n            lastFriendshipEndDate: new Date(),\r\n            multipleCustomers: false,\r\n            onHold: false,\r\n            onHoldDeadline: undefined,\r\n            onHoldDetails: '',\r\n            otherInterests: '',\r\n            preferredAges: 0,\r\n            preferredGenders: (PreferredGenders.Other | PreferredGenders.Male | PreferredGenders.Female),\r\n            shortDescription: '',\r\n            startedPending: new Date(),\r\n            state: CustomerState.PendingApproval,\r\n            volunteerInterviewed: false,\r\n            volunteerInterviewedBy: '',\r\n            volunteerInterviewedDate: '',\r\n            availabilityTimes: 0,\r\n            hasAlternativeAddress: false,\r\n            alternativeCity: '',\r\n            alternativeStreet: '',\r\n            alternativeZipCode: '',\r\n            privateNotes: ''\r\n          } as FriendVolunteerProfileStandardDto\r\n        }\r\n      },\r\n      showNetForm (): void {\r\n        this.volunteer.hasNetProfile = true\r\n        if (this.volunteer.netProfile == null) {\r\n          this.volunteer.netProfile = {\r\n            availabilityDetails: '',\r\n            availabilityFrequence: 0,\r\n            availabilityTimes: 0,\r\n            customerTypes: 0,\r\n            friendManagementGroupId: 0,\r\n            friendships: [],\r\n            friendshipTypes: (NetFriendshipTypes.OneToOne),\r\n            friendPools: [],\r\n            id: 0,\r\n            interests: 0,\r\n            lastFriendshipEndDate: new Date(),\r\n            multipleCustomers: false,\r\n            onHold: false,\r\n            onHoldDeadline: undefined,\r\n            onHoldDetails: '',\r\n            otherInterests: '',\r\n            preferredAges: 0,\r\n            preferredGenders: (PreferredGenders.Other | PreferredGenders.Male | PreferredGenders.Female),\r\n            shortDescription: '',\r\n            startedPending: new Date(),\r\n            state: CustomerState.PendingApproval,\r\n            volunteerInterviewed: false,\r\n            volunteerInterviewedBy: '',\r\n            volunteerInterviewedDate: '',\r\n            econtactDiscord: '',\r\n            econtactEmail: '',\r\n            econtactFreetext: '',\r\n            econtactInstagram: '',\r\n            econtactKik: '',\r\n            econtactSkype: '',\r\n            econtactTelegram: '',\r\n            privateNotes: ''\r\n          } as FriendVolunteerProfileNetDto\r\n        }\r\n      },\r\n      removeStandardForm (): void {\r\n        this.volunteer.hasStandardProfile = false\r\n      },\r\n      removeNetForm (): void {\r\n        this.volunteer.hasNetProfile = false\r\n      },\r\n      cancel (): void {\r\n        this.$router.push('/profile')\r\n      },\r\n      save (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          // check any child controls have not added errors\r\n          if (!result || (this.validationErrors && this.validationErrors.length)) {\r\n            var target = this.$refs['validationtarget']\r\n            if (target) {\r\n              window.scrollTo({\r\n                // @ts-ignore\r\n                top: target.$el.parentElement.clientHeight,\r\n                left: 0,\r\n                behavior: 'smooth'\r\n              })\r\n            }\r\n            return\r\n          }\r\n\r\n          const data = this.volunteer\r\n          if (!this.volunteer.hasNetProfile) {\r\n            // @ts-ignore\r\n            data.netProfile = null\r\n          }\r\n          if (!this.volunteer.hasStandardProfile) {\r\n            // @ts-ignore\r\n            data.standardProfile = null\r\n          }\r\n          data.profileId = this.$store.state.profile.profileId\r\n          if (this.isAdd) {\r\n            this.addFriendProfile(data)\r\n          } else {\r\n            this.updateFriendProfile(data)\r\n          }\r\n        })\r\n      },\r\n      addFriendProfile (data: FriendVolunteerDto): void {\r\n        const addUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteeridentadd[0]\r\n        this.$http.post(addUrl, data).then((result: any) => {\r\n          // @ts-ignore (doesnt always pick up mixins)\r\n          this.fetchProfile((response: any) => {\r\n            this.$store.commit('setProfile', response.body)\r\n            this.$router.push('/profile')\r\n          })\r\n        }, (err: Response | any) => {\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      updateFriendProfile (data: FriendVolunteerDto): void {\r\n        const updateUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteeridentupdate[0]\r\n        this.$http.put(updateUrl, data).then((result: any) => {\r\n          // @ts-ignore (doesnt always pick up mixins)\r\n          this.fetchProfile((response: any) => {\r\n            this.$store.commit('setProfile', response.body)\r\n            this.$router.push('/profile')\r\n          })\r\n        }, (err: Response | any) => {\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .profileidentvolunteerform {\r\n    .feature-panel {\r\n      background-color: $brand-white;\r\n      margin-bottom: 30px;\r\n      padding-top: 15px;\r\n\r\n      &.buttons {\r\n        margin-top: 30px;\r\n        padding-top: 15px;\r\n        padding-bottom: 15px;\r\n        .cancel {\r\n          text-align: left;\r\n        }\r\n        .save {\r\n          text-align: right;\r\n        }\r\n      }\r\n    }\r\n\r\n    .profilehead {\r\n      margin-top: 25px;\r\n      margin-bottom: 0;\r\n      padding-top: 10px;\r\n      padding-bottom: 10px;\r\n      background-color: $brand-white;\r\n    }\r\n\r\n    .subheader {\r\n      margin-top: 15px;\r\n      margin-bottom: 15px;\r\n      display: block;\r\n    }\r\n\r\n    .profile-button {\r\n      margin-top: 20px;\r\n      display: flex;\r\n      justify-content: center;\r\n    }\r\n\r\n    .fa-exclamation-triangle {\r\n      color: $brand-red;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileIdentVolunteerForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileIdentVolunteerForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ProfileIdentVolunteerForm.vue?vue&type=template&id=afb0ac06\"\nimport script from \"./ProfileIdentVolunteerForm.vue?vue&type=script&lang=ts\"\nexport * from \"./ProfileIdentVolunteerForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ProfileIdentVolunteerForm.vue?vue&type=style&index=0&id=afb0ac06&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"profileidentvolunteerformcommon\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.addEditTitle))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center py-2\"},[_c('validation',{ref:\"validationtarget\",attrs:{\"id\":'validationTarget' + _vm._uid,\"validation-errors\":_vm.validationErrors}})],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[_c('VolunteerProfileCommon',{attrs:{\"volunteer\":_vm.volunteer},on:{\"input\":_vm.onVolunteerChanged}})],1)]),_c('div',{staticClass:\"row feature-panel buttons\"},[_c('div',{staticClass:\"col-6 cancel\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.cancel'),\"click-event\":\"onCancel\"},on:{\"onCancel\":_vm.cancel}})],1),_c('div',{staticClass:\"col-6 save\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.save'),\"click-event\":\"onSave\"},on:{\"onSave\":_vm.save}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"container\">\r\n    <div class=\"profileidentvolunteerformcommon\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <h2>{{ addEditTitle }}</h2>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-center py-2\">\r\n          <validation :id=\"'validationTarget' + _uid\"\r\n                      ref=\"validationtarget\"\r\n                      :validation-errors=\"validationErrors\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <VolunteerProfileCommon :volunteer=\"volunteer\" @input=\"onVolunteerChanged\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel buttons\">\r\n        <div class=\"col-6 cancel\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.cancel')\"\r\n                     click-event=\"onCancel\"\r\n                     @onCancel=\"cancel\"\r\n          />\r\n        </div>\r\n        <div class=\"col-6 save\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.save')\"\r\n                     click-event=\"onSave\"\r\n                     @onSave=\"save\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import SprButton from '@/components/SPRButton.vue'\r\n  import VolunteerProfileCommon from '@/components/friends/VolunteerProfileCommon.vue'\r\n  import validation from '../SPRValidationError.vue'\r\n  import Alerts from '@/mixins/alerts.js'\r\n  import { ErrorBag, FieldError } from 'vee-validate'\r\n  import { FriendVolunteerDto, CustomerState, PreferredGenders } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    volunteer: FriendVolunteerDto,\r\n    isSavedOrCancelled: boolean\r\n  }\r\n\r\n  // This is the component for a user to add and update their own Friend profile.\r\n  export default Vue.extend({\r\n    name: 'ProfileIdentVolunteerFormCommon',\r\n    components: { validation, VolunteerProfileCommon, SprButton },\r\n    mixins: [Alerts],\r\n    props: {\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        volunteer: {} as FriendVolunteerDto,\r\n        isSavedOrCancelled: false\r\n      }\r\n    },\r\n    computed: {\r\n      addEditTitle (): string | LocaleMessage {\r\n        return this.$t('volunteerForm.updateTitle')\r\n      },\r\n      validationErrors (): Array<Array<string>> {\r\n        var errs: ErrorBag = this.errors ? this.errors : []\r\n        if (errs.items.length) {\r\n          return errs.items.map((err: FieldError) => {\r\n            return [`error_${err.field}`, err.rule ? err.rule : '', err.msg ? err.msg : '']\r\n          })\r\n        }\r\n        return []\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.volunteer = JSON.parse(JSON.stringify(this.$store.state.profile.friendInfo))\r\n    },\r\n    provide (): Record<string, any> {\r\n      return {\r\n        $validator: this.$validator // allow child components to have validator injected\r\n      }\r\n    },\r\n    beforeRouteLeave (to, from, next) {\r\n      if (this.changeDetected() && !this.isSavedOrCancelled) {\r\n        var text = this.$t('profile.unsavedChanges').toString()\r\n        const answer = window.confirm(text)\r\n        if (!answer) {\r\n          return next(false)\r\n        }\r\n      }\r\n      this.isSavedOrCancelled = false\r\n      return next()\r\n    },\r\n    methods: {\r\n      changeDetected (): boolean {\r\n        return JSON.stringify(this.$store.state.profile.friendInfo) !== JSON.stringify(this.volunteer)\r\n      },\r\n      onVolunteerChanged (newVolunteer: FriendVolunteerDto): void {\r\n        // only change the basic details, dont overwrite the net and standard profiles.\r\n        const origStandardProfile = { ...this.volunteer.standardProfile }\r\n        const origNetProfile = { ...this.volunteer.netProfile }\r\n        this.volunteer = newVolunteer\r\n        this.volunteer.standardProfile = origStandardProfile\r\n        this.volunteer.netProfile = origNetProfile\r\n      },\r\n      cancel (): void {\r\n        this.isSavedOrCancelled = true\r\n        this.$router.push('/profile')\r\n      },\r\n      save (): void {\r\n        this.isSavedOrCancelled = true\r\n        this.$validator.validateAll().then(result => {\r\n          // check any child controls have not added errors\r\n          if (!result || (this.validationErrors && this.validationErrors.length)) {\r\n            var target = this.$refs['validationtarget']\r\n            if (target) {\r\n              window.scrollTo({\r\n                // @ts-ignore\r\n                top: target.$el.parentElement.clientHeight,\r\n                left: 0,\r\n                behavior: 'smooth'\r\n              })\r\n            }\r\n            return\r\n          }\r\n\r\n          const data = this.volunteer\r\n          data.profileId = this.$store.state.profile.profileId\r\n          this.updateFriendProfile(data)\r\n        })\r\n      },\r\n      updateFriendProfile (data: FriendVolunteerDto): void {\r\n        const updateUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteeridentupdate[0]\r\n        this.$http.put(updateUrl, data).then((result: any) => {\r\n          // @ts-ignore (doesnt always pick up mixins)\r\n          this.fetchProfile((response: any) => {\r\n            this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n\r\n            this.$store.commit('setProfile', response.body)\r\n            this.$router.push('/profile')\r\n          })\r\n        }, (err: Response | any) => {\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .profileidentvolunteerformcommon {\r\n    .feature-panel {\r\n      background-color: $brand-white;\r\n      margin-bottom: 30px;\r\n      padding-top: 15px;\r\n\r\n      &.buttons {\r\n        margin-top: 30px;\r\n        padding-top: 15px;\r\n        padding-bottom: 15px;\r\n        .cancel {\r\n          text-align: left;\r\n        }\r\n        .save {\r\n          text-align: right;\r\n        }\r\n      }\r\n    }\r\n\r\n    .profilehead {\r\n      margin-top: 25px;\r\n      margin-bottom: 0;\r\n      padding-top: 10px;\r\n      padding-bottom: 10px;\r\n      background-color: $brand-white;\r\n    }\r\n\r\n    .subheader {\r\n      margin-top: 15px;\r\n      margin-bottom: 15px;\r\n      display: block;\r\n    }\r\n\r\n    .profile-button {\r\n      margin-top: 20px;\r\n      display: flex;\r\n      justify-content: center;\r\n    }\r\n\r\n    .fa-exclamation-triangle {\r\n      color: $brand-red;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileIdentVolunteerFormCommon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileIdentVolunteerFormCommon.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ProfileIdentVolunteerFormCommon.vue?vue&type=template&id=6cad2036\"\nimport script from \"./ProfileIdentVolunteerFormCommon.vue?vue&type=script&lang=ts\"\nexport * from \"./ProfileIdentVolunteerFormCommon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ProfileIdentVolunteerFormCommon.vue?vue&type=style&index=0&id=6cad2036&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"profileidentvolunteerformstandard\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.addEditTitle))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center py-2\"},[_c('validation',{ref:\"validationtarget\",attrs:{\"id\":'validationTarget' + _vm._uid,\"validation-errors\":_vm.validationErrors,\"exclude-field-reference\":\"\",\"include-title\":\"\"}})],1)]),_c('div',{staticClass:\"row profilehead\"},[_c('div',{staticClass:\"col-7\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.standardInfo')))])])]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[_c('VolunteerProfileStandard',{attrs:{\"volunteer\":_vm.volunteer.standardProfile},on:{\"update\":_vm.onVolunteerStandardProfileChanged},model:{value:(_vm.volunteer.standardProfile),callback:function ($$v) {_vm.$set(_vm.volunteer, \"standardProfile\", $$v)},expression:\"volunteer.standardProfile\"}})],1)]),_c('div',{staticClass:\"row feature-panel buttons\"},[_c('div',{staticClass:\"col-6 cancel\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.cancel'),\"click-event\":\"onCancel\"},on:{\"onCancel\":_vm.cancel}})],1),_c('div',{staticClass:\"col-6 save\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.save'),\"click-event\":\"onSave\"},on:{\"onSave\":_vm.save}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"container\">\r\n    <div class=\"profileidentvolunteerformstandard\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <h2>{{ addEditTitle }}</h2>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-center py-2\">\r\n          <validation :id=\"'validationTarget' + _uid\"\r\n                      ref=\"validationtarget\"\r\n                      :validation-errors=\"validationErrors\"\r\n                      exclude-field-reference\r\n                      include-title\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row profilehead\">\r\n        <div class=\"col-7\">\r\n          <span class=\"subheader\">{{ $t('volunteerForm.standardInfo') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <VolunteerProfileStandard v-model=\"volunteer.standardProfile\" :volunteer=\"volunteer.standardProfile\" @update=\"onVolunteerStandardProfileChanged\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel buttons\">\r\n        <div class=\"col-6 cancel\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.cancel')\"\r\n                     click-event=\"onCancel\"\r\n                     @onCancel=\"cancel\"\r\n          />\r\n        </div>\r\n        <div class=\"col-6 save\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.save')\"\r\n                     click-event=\"onSave\"\r\n                     @onSave=\"save\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import SprButton from '@/components/SPRButton.vue'\r\n  import VolunteerProfileStandard from '@/components/friends/VolunteerProfileStandard.vue'\r\n  import validation from '../SPRValidationError.vue'\r\n  import Alerts from '@/mixins/alerts.js'\r\n  import { ErrorBag, FieldError } from 'vee-validate'\r\n  import { FriendVolunteerDto, FriendVolunteerProfileStandardDto, FriendVolunteerProfileNetDto, CustomerState, PreferredGenders, PreferredAges, FriendshipTypes } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    volunteer: FriendVolunteerDto,\r\n    isSavedOrCancelled: boolean\r\n  }\r\n\r\n  // This is the component for a user to add and update their own Friend profile.\r\n  export default Vue.extend({\r\n    name: 'ProfileIdentVolunteerFormStandard',\r\n    components: { validation, VolunteerProfileStandard, SprButton },\r\n    mixins: [Alerts],\r\n    props: {\r\n      isAdd: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        volunteer: {} as FriendVolunteerDto,\r\n        isSavedOrCancelled: false\r\n      }\r\n    },\r\n    computed: {\r\n      addEditTitle (): string | LocaleMessage {\r\n        return this.isAdd\r\n          ? this.$t('volunteerForm.addTitle')\r\n          : this.$t('volunteerForm.updateTitle')\r\n      },\r\n      validationErrors (): Array<Array<string>> {\r\n        var errs: ErrorBag = this.errors ? this.errors : []\r\n        if (errs.items.length) {\r\n          return errs.items.map((err: FieldError) => {\r\n            return [`${err.field}`, err.rule ? err.rule : '', err.msg ? err.msg : '']\r\n          })\r\n        }\r\n        return []\r\n      }\r\n    },\r\n    created (): void {\r\n      this.volunteer = JSON.parse(JSON.stringify(this.$store.state.profile.friendInfo))\r\n      if (this.isAdd) {\r\n        // set default values\r\n        this.volunteer.standardProfile = {\r\n            availabilityDetails: '',\r\n            availabilityFrequence: 0,\r\n            customerTypes: 0,\r\n            friendManagementGroupId: 0,\r\n            friendships: [],\r\n            friendshipTypes: (FriendshipTypes.OneToOne),\r\n            friendPools: [],\r\n            id: 0,\r\n            interests: 0,\r\n            lastFriendshipEndDate: new Date(),\r\n            multipleCustomers: false,\r\n            onHold: false,\r\n            onHoldDeadline: undefined,\r\n            onHoldDetails: '',\r\n            otherInterests: '',\r\n            preferredAges: 0,\r\n            preferredGenders: (PreferredGenders.Other | PreferredGenders.Male | PreferredGenders.Female),\r\n            shortDescription: '',\r\n            startedPending: new Date(),\r\n            state: CustomerState.PendingApproval,\r\n            volunteerInterviewed: false,\r\n            volunteerInterviewedBy: '',\r\n            volunteerInterviewedDate: '',\r\n            availabilityTimes: 0,\r\n            hasAlternativeAddress: false,\r\n            alternativeCity: '',\r\n            alternativeStreet: '',\r\n            alternativeZipCode: '',\r\n            privateNotes: ''\r\n          } as FriendVolunteerProfileStandardDto\r\n      }\r\n    },\r\n    provide (): Record<string, any> {\r\n      return {\r\n        $validator: this.$validator // allow child components to have validator injected\r\n      }\r\n    },\r\n    beforeRouteLeave (to, from, next) {\r\n      if (this.changeDetected() && !this.isSavedOrCancelled) {\r\n        var text = this.$t('profile.unsavedChanges').toString()\r\n        const answer = window.confirm(text)\r\n        if (!answer) {\r\n          return next(false)\r\n        }\r\n      }\r\n      this.isSavedOrCancelled = false\r\n      return next()\r\n    },\r\n    methods: {\r\n      changeDetected (): boolean {\r\n        return JSON.stringify(this.$store.state.profile.friendInfo) !== JSON.stringify(this.volunteer)\r\n      },\r\n      onVolunteerStandardProfileChanged (newProfile: FriendVolunteerProfileStandardDto): void {\r\n        this.volunteer.standardProfile = newProfile\r\n      },\r\n      cancel (): void {\r\n        this.isSavedOrCancelled = true\r\n        this.$router.push('/profile')\r\n      },\r\n      save (): void {\r\n        this.isSavedOrCancelled = true\r\n        if (this.volunteer?.standardProfile?.preferredAges === PreferredAges.NotDefined) {\r\n          this.volunteer.standardProfile.preferredAges = 1 // tricking preferredAges to update in order to trigger a validation\r\n          this.$nextTick(() => {\r\n            if (!this.volunteer) return\r\n            this.volunteer.standardProfile.preferredAges = PreferredAges.NotDefined\r\n            this.validateAndSave()\r\n          })\r\n        } else {\r\n          this.validateAndSave()\r\n        }\r\n      },\r\n      validateAndSave (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          // check any child controls have not added errors\r\n          if (!result || (this.validationErrors && this.validationErrors.length)) {\r\n            var target = this.$refs['validationtarget']\r\n            if (target) {\r\n              window.scrollTo({\r\n                // @ts-ignore\r\n                top: target.$el.parentElement.clientHeight,\r\n                left: 0,\r\n                behavior: 'smooth'\r\n              })\r\n            }\r\n            return\r\n          }\r\n\r\n          const data = this.volunteer\r\n          data.profileId = this.$store.state.profile.profileId\r\n          this.updateFriendProfile(data)\r\n        })\r\n      },\r\n      updateFriendProfile (data: FriendVolunteerDto): void {\r\n        const updateUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteeridentupdate[0]\r\n        this.$http.put(updateUrl, data).then((result: any) => {\r\n          // @ts-ignore (doesnt always pick up mixins)\r\n          this.fetchProfile((response: any) => {\r\n            this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n            this.$store.commit('setProfile', response.body)\r\n            this.$router.push('/profile')\r\n          })\r\n        }, (err: Response | any) => {\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .profileidentvolunteerformstandard {\r\n    .feature-panel {\r\n      background-color: $brand-white;\r\n      margin-bottom: 30px;\r\n      padding-top: 15px;\r\n\r\n      &.buttons {\r\n        margin-top: 30px;\r\n        padding-top: 15px;\r\n        padding-bottom: 15px;\r\n        .cancel {\r\n          text-align: left;\r\n        }\r\n        .save {\r\n          text-align: right;\r\n        }\r\n      }\r\n    }\r\n\r\n    .profilehead {\r\n      margin-top: 25px;\r\n      margin-bottom: 0;\r\n      padding-top: 10px;\r\n      padding-bottom: 10px;\r\n      background-color: $brand-white;\r\n    }\r\n\r\n    .subheader {\r\n      margin-top: 15px;\r\n      margin-bottom: 15px;\r\n      display: block;\r\n    }\r\n\r\n    .profile-button {\r\n      margin-top: 20px;\r\n      display: flex;\r\n      justify-content: center;\r\n    }\r\n\r\n    .fa-exclamation-triangle {\r\n      color: $brand-red;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileIdentVolunteerFormStandard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileIdentVolunteerFormStandard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ProfileIdentVolunteerFormStandard.vue?vue&type=template&id=27298772\"\nimport script from \"./ProfileIdentVolunteerFormStandard.vue?vue&type=script&lang=ts\"\nexport * from \"./ProfileIdentVolunteerFormStandard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ProfileIdentVolunteerFormStandard.vue?vue&type=style&index=0&id=27298772&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"profileidentvolunteerformnet\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.addEditTitle))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center py-2\"},[_c('validation',{ref:\"validationtarget\",attrs:{\"id\":'validationTarget' + _vm._uid,\"validation-errors\":_vm.validationErrors,\"exclude-field-reference\":\"\",\"include-title\":\"\"}})],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[_c('VolunteerProfileNet',{attrs:{\"volunteer\":_vm.volunteer.netProfile},on:{\"update\":_vm.onVolunteerNetProfileChanged},model:{value:(_vm.volunteer.netProfile),callback:function ($$v) {_vm.$set(_vm.volunteer, \"netProfile\", $$v)},expression:\"volunteer.netProfile\"}})],1)]),_c('div',{staticClass:\"row feature-panel buttons\"},[_c('div',{staticClass:\"col-6 cancel\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.cancel'),\"click-event\":\"onCancel\"},on:{\"onCancel\":_vm.cancel}})],1),_c('div',{staticClass:\"col-6 save\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.save'),\"click-event\":\"onSave\"},on:{\"onSave\":_vm.save}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"container\">\r\n    <div class=\"profileidentvolunteerformnet\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <h2>{{ addEditTitle }}</h2>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-center py-2\">\r\n          <validation :id=\"'validationTarget' + _uid\"\r\n                      ref=\"validationtarget\"\r\n                      :validation-errors=\"validationErrors\"\r\n                      exclude-field-reference\r\n                      include-title\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <VolunteerProfileNet v-model=\"volunteer.netProfile\" :volunteer=\"volunteer.netProfile\" @update=\"onVolunteerNetProfileChanged\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel buttons\">\r\n        <div class=\"col-6 cancel\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.cancel')\"\r\n                     click-event=\"onCancel\"\r\n                     @onCancel=\"cancel\"\r\n          />\r\n        </div>\r\n        <div class=\"col-6 save\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.save')\"\r\n                     click-event=\"onSave\"\r\n                     @onSave=\"save\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import SprButton from '@/components/SPRButton.vue'\r\n  import VolunteerProfileNet from '@/components/friends/VolunteerProfileNet.vue'\r\n  import validation from '../SPRValidationError.vue'\r\n  import Alerts from '@/mixins/alerts.js'\r\n  import { ErrorBag, FieldError } from 'vee-validate'\r\n  import { FriendVolunteerDto, FriendVolunteerProfileNetDto, CustomerState, PreferredGenders, PreferredAges, NetFriendshipTypes } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    volunteer: FriendVolunteerDto,\r\n    isSavedOrCancelled: boolean\r\n  }\r\n\r\n  // This is the component for a user to add and update their own Friend profile.\r\n  export default Vue.extend({\r\n    name: 'ProfileIdentVolunteerFormNet',\r\n    components: { validation, VolunteerProfileNet, SprButton },\r\n    mixins: [Alerts],\r\n    props: {\r\n      isAdd: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        volunteer: {} as FriendVolunteerDto,\r\n        isSavedOrCancelled: false\r\n      }\r\n    },\r\n    computed: {\r\n      addEditTitle (): string | LocaleMessage {\r\n        return this.isAdd\r\n          ? this.$t('volunteerForm.addTitle')\r\n          : this.$t('volunteerForm.updateTitle')\r\n      },\r\n      validationErrors (): Array<Array<string>> {\r\n        var errs: ErrorBag = this.errors ? this.errors : []\r\n        if (errs.items.length) {\r\n          return errs.items.map((err: FieldError) => {\r\n            return [`error_${err.field}`, err.rule ? err.rule : '', err.msg ? err.msg : '']\r\n          })\r\n        }\r\n        return []\r\n      }\r\n    },\r\n    created (): void {\r\n      this.volunteer = JSON.parse(JSON.stringify(this.$store.state.profile.friendInfo))\r\n      if (this.isAdd) {\r\n        // set default values\r\n        this.volunteer.netProfile = {\r\n          availabilityDetails: '',\r\n          availabilityFrequence: 0,\r\n          availabilityTimes: 0,\r\n          customerTypes: 0,\r\n          friendManagementGroupId: 0,\r\n          friendships: [],\r\n          friendshipTypes: (NetFriendshipTypes.OneToOne),\r\n          friendPools: [],\r\n          id: 0,\r\n          interests: 0,\r\n          lastFriendshipEndDate: new Date(),\r\n          multipleCustomers: false,\r\n          onHold: false,\r\n          onHoldDeadline: undefined,\r\n          onHoldDetails: '',\r\n          otherInterests: '',\r\n          preferredAges: PreferredAges.NotDefined,\r\n          preferredGenders: (PreferredGenders.Other | PreferredGenders.Male | PreferredGenders.Female),\r\n          shortDescription: '',\r\n          startedPending: new Date(),\r\n          state: CustomerState.PendingApproval,\r\n          volunteerInterviewed: false,\r\n          volunteerInterviewedBy: '',\r\n          volunteerInterviewedDate: '',\r\n          econtactDiscord: '',\r\n          econtactEmail: '',\r\n          econtactFreetext: '',\r\n          econtactInstagram: '',\r\n          econtactKik: '',\r\n          econtactSkype: '',\r\n          econtactTelegram: '',\r\n          privateNotes: ''\r\n        } as FriendVolunteerProfileNetDto\r\n      }\r\n    },\r\n    provide (): Record<string, any> {\r\n      return {\r\n        $validator: this.$validator // allow child components to have validator injected\r\n      }\r\n    },\r\n    beforeRouteLeave (to, from, next) {\r\n      if (this.changeDetected() && !this.isSavedOrCancelled) {\r\n        var text = this.$t('profile.unsavedChanges').toString()\r\n        const answer = window.confirm(text)\r\n        if (!answer) {\r\n          return next(false)\r\n        }\r\n      }\r\n      this.isSavedOrCancelled = false\r\n      return next()\r\n    },\r\n    methods: {\r\n      changeDetected (): boolean {\r\n        return JSON.stringify(this.$store.state.profile.friendInfo) !== JSON.stringify(this.volunteer)\r\n      },\r\n      onVolunteerNetProfileChanged (newProfile: FriendVolunteerProfileNetDto): void {\r\n        this.volunteer.netProfile = newProfile\r\n      },\r\n      removeStandardForm (): void {\r\n        this.volunteer.hasStandardProfile = false\r\n      },\r\n      removeNetForm (): void {\r\n        this.volunteer.hasNetProfile = false\r\n      },\r\n      cancel (): void {\r\n        this.isSavedOrCancelled = true\r\n        this.$router.push('/profile')\r\n      },\r\n      save (): void {\r\n        this.isSavedOrCancelled = true\r\n        if (this.volunteer?.netProfile?.preferredAges === PreferredAges.NotDefined) {\r\n          this.volunteer.netProfile.preferredAges = 1 // tricking preferredAges to update in order to trigger a validation\r\n          this.$nextTick(() => {\r\n            if (!this.volunteer) return\r\n            this.volunteer.netProfile.preferredAges = PreferredAges.NotDefined\r\n            this.validateAndSave()\r\n          })\r\n        } else {\r\n          this.validateAndSave()\r\n        }\r\n      },\r\n      validateAndSave (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          // check any child controls have not added errors\r\n          if (!result || (this.validationErrors && this.validationErrors.length)) {\r\n            var target = this.$refs['validationtarget']\r\n            if (target) {\r\n              window.scrollTo({\r\n                // @ts-ignore\r\n                top: target.$el.parentElement.clientHeight,\r\n                left: 0,\r\n                behavior: 'smooth'\r\n              })\r\n            }\r\n            return\r\n          }\r\n\r\n          const data = this.volunteer\r\n          data.profileId = this.$store.state.profile.profileId\r\n          this.updateFriendProfile(data)\r\n        })\r\n      },\r\n      updateFriendProfile (data: FriendVolunteerDto): void {\r\n        const updateUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteeridentupdate[0]\r\n        this.$http.put(updateUrl, data).then((result: any) => {\r\n          // @ts-ignore (doesnt always pick up mixins)\r\n          this.fetchProfile((response: any) => {\r\n            this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n            this.$store.commit('setProfile', response.body)\r\n            this.$router.push('/profile')\r\n          })\r\n        }, (err: Response | any) => {\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .profileidentvolunteerformnet {\r\n    .feature-panel {\r\n      background-color: $brand-white;\r\n      margin-bottom: 30px;\r\n      padding-top: 15px;\r\n\r\n      &.buttons {\r\n        margin-top: 30px;\r\n        padding-top: 15px;\r\n        padding-bottom: 15px;\r\n        .cancel {\r\n          text-align: left;\r\n        }\r\n        .save {\r\n          text-align: right;\r\n        }\r\n      }\r\n    }\r\n\r\n    .profilehead {\r\n      margin-top: 25px;\r\n      margin-bottom: 0;\r\n      padding-top: 10px;\r\n      padding-bottom: 10px;\r\n      background-color: $brand-white;\r\n    }\r\n\r\n    .subheader {\r\n      margin-top: 15px;\r\n      margin-bottom: 15px;\r\n      display: block;\r\n    }\r\n\r\n    .profile-button {\r\n      margin-top: 20px;\r\n      display: flex;\r\n      justify-content: center;\r\n    }\r\n\r\n    .fa-exclamation-triangle {\r\n      color: $brand-red;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileIdentVolunteerFormNet.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileIdentVolunteerFormNet.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ProfileIdentVolunteerFormNet.vue?vue&type=template&id=af73c2ce\"\nimport script from \"./ProfileIdentVolunteerFormNet.vue?vue&type=script&lang=ts\"\nexport * from \"./ProfileIdentVolunteerFormNet.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ProfileIdentVolunteerFormNet.vue?vue&type=style&index=0&id=af73c2ce&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.friendProfile && _vm.friendProfile.friendInfo && _vm.friendProfile.friendInfo.standardProfile)?_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"profileidentstandardvolunteerform\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('volunteerForm.updateTitle')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('backbar')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center py-2\"},[_c('validation',{ref:\"validationtarget\",attrs:{\"id\":'validationTarget' + _vm._uid,\"validation-errors\":_vm.validationErrors,\"exclude-field-reference\":\"\",\"include-title\":\"\"}})],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12 col-sm-5 col-md-4\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('volunteerForm.phone'),\"is-valid\":!_vm.errors.has('volunteerForm.phone'),\"name\":\"volunteerForm.phone\",\"required\":true,\"disabled\":\"\",\"tooltip\":_vm.$t('volunteerForm.disabledPhone')},model:{value:(_vm.friendProfile.phoneNumber),callback:function ($$v) {_vm.$set(_vm.friendProfile, \"phoneNumber\", $$v)},expression:\"friendProfile.phoneNumber\"}})],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[_c('VolunteerProfileCommon',{attrs:{\"volunteer\":_vm.friendProfile.friendInfo},on:{\"input\":_vm.onVolunteerChanged}})],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[_c('ProfileInfoForm',{attrs:{\"profile\":_vm.friendProfile,\"is-net-profile\":false},on:{\"input\":_vm.onFriendProfileChanged}})],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[_c('VolunteerProfileStandard',{attrs:{\"volunteer\":_vm.friendProfile.friendInfo.standardProfile},on:{\"input\":_vm.onVolunteerStandardProfileChanged}})],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12 sectionheader\"},[_c('h3',[_vm._v(_vm._s(_vm.$t(\"nonIdentProfileForm.applicationState\")))])]),_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile)?_c('InterviewForm',{attrs:{\"value\":_vm.computedInterviewData,\"disabled\":_vm.isStateChangeDisabled},on:{\"input\":_vm.onInterviewDataChanged}}):_vm._e()],1),_c('div',{staticClass:\"col-12\"},[_c('OnHoldForm',{attrs:{\"value\":_vm.computedOnHoldData,\"disabled\":_vm.isStateChangeDisabled},on:{\"input\":_vm.onOnHoldDataChanged}})],1),_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile.friendInfo)?_c('LastContactedForm',{attrs:{\"value\":_vm.friendProfile.friendInfo.lastContacted},on:{\"input\":_vm.onlastContactedChanged}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('volunteerForm.privateNotes'),\"rows\":6},model:{value:(_vm.friendProfile.friendInfo.standardProfile.privateNotes),callback:function ($$v) {_vm.$set(_vm.friendProfile.friendInfo.standardProfile, \"privateNotes\", $$v)},expression:\"friendProfile.friendInfo.standardProfile.privateNotes\"}})],1)]),_c('div',{staticClass:\"row feature-panel buttons\"},[_c('div',{staticClass:\"col-6 cancel\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.cancel'),\"click-event\":\"onCancel\"},on:{\"onCancel\":_vm.cancel}})],1),_c('div',{staticClass:\"col-6 save\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.save'),\"click-event\":\"onSave\"},on:{\"onSave\":_vm.save}})],1)])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.profile)?_c('div',{staticClass:\"profileinfoform\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('nonIdentProfileForm.firstName'),\"is-valid\":!_vm.errors.has('nonIdentProfileForm.firstname'),\"name\":\"nonIdentProfileForm.firstname\",\"required\":true},model:{value:(_vm.profile.firstName),callback:function ($$v) {_vm.$set(_vm.profile, \"firstName\", $$v)},expression:\"profile.firstName\"}})],1),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('nonIdentProfileForm.lastName'),\"is-valid\":!_vm.errors.has('nonIdentProfileForm.lastname'),\"name\":\"nonIdentProfileForm.lastname\",\"required\":true},model:{value:(_vm.profile.lastName),callback:function ($$v) {_vm.$set(_vm.profile, \"lastName\", $$v)},expression:\"profile.lastName\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('nonIdentProfileForm.street'),\"is-valid\":!_vm.errors.has('nonIdentProfileForm.streetAddress'),\"name\":\"nonIdentProfileForm.streetAddress\",\"required\":true},model:{value:(_vm.profile.streetAddress),callback:function ($$v) {_vm.$set(_vm.profile, \"streetAddress\", $$v)},expression:\"profile.streetAddress\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|regex:^[0-9]{5}$'),expression:\"'required|regex:^[0-9]{5}$'\"}],attrs:{\"hint\":_vm.$t('nonIdentProfileForm.zipCode'),\"is-valid\":!_vm.errors.has('nonIdentProfileForm.zipCode'),\"name\":\"nonIdentProfileForm.zipCode\",\"required\":true},model:{value:(_vm.profile.zipCode),callback:function ($$v) {_vm.$set(_vm.profile, \"zipCode\", $$v)},expression:\"profile.zipCode\"}})],1),_c('div',{staticClass:\"col-12 col-sm-8\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('nonIdentProfileForm.city'),\"is-valid\":!_vm.errors.has('nonIdentProfileForm.city'),\"name\":\"nonIdentProfileForm.city\",\"required\":true},model:{value:(_vm.profile.city),callback:function ($$v) {_vm.$set(_vm.profile, \"city\", $$v)},expression:\"profile.city\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('div',{staticClass:\"datepicker\"},[_c('datepicker',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.birthdateValidation),expression:\"birthdateValidation\"}],attrs:{\"value\":_vm.dateBirthdate,\"title\":_vm.$t('nonIdentProfileForm.birthdate'),\"name\":\"onIdentProfileForm.birthDate\",\"is-valid\":!_vm.errors.has('onIdentProfileForm.birthDate'),\"required\":true},on:{\"input\":_vm.onBirthdayChange}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('dropdowninput',{attrs:{\"title\":_vm.$t('nonIdentProfileForm.languageNative'),\"items\":_vm.checkboxLanguages(_vm.profile.spokenLanguages, _vm.nativeLanguageOptions),\"is-valid\":true},model:{value:(_vm.profile.nativeLanguage),callback:function ($$v) {_vm.$set(_vm.profile, \"nativeLanguage\", $$v)},expression:\"profile.nativeLanguage\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"cap-label brand-red px-3 mb-2 d-inline-block\"},[_vm._v(\" \"+_vm._s(_vm.$t('nonIdentProfileForm.languageSpoken'))+\" \")]),_c('checkboxlist',{attrs:{\"list\":_vm.checkboxLanguages(_vm.profile.spokenLanguages, _vm.$store.state.friendCustomerLanguages),\"rows\":2},model:{value:(_vm.profile.spokenLanguages),callback:function ($$v) {_vm.$set(_vm.profile, \"spokenLanguages\", $$v)},expression:\"profile.spokenLanguages\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('nonIdentProfileForm.otherLanguages'),\"is-valid\":true},model:{value:(_vm.profile.otherLanguages),callback:function ($$v) {_vm.$set(_vm.profile, \"otherLanguages\", $$v)},expression:\"profile.otherLanguages\"}})],1)]),(!_vm.isNetProfile)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"cap-label brand-red px-3 mb-2 d-inline-block\"},[_vm._v(\" \"+_vm._s(_vm.$t('nonIdentProfileForm.traveloptions'))+\" \")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('checkboxlist',{attrs:{\"list\":_vm.travelOptions,\"rows\":1},model:{value:(_vm.profile.transportation),callback:function ($$v) {_vm.$set(_vm.profile, \"transportation\", $$v)},expression:\"profile.transportation\"}})],1),_c('div',{staticClass:\"col-12 col-sm-5\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('numeric'),expression:\"'numeric'\"}],attrs:{\"hint\":_vm.$t('nonIdentProfileForm.travelTime'),\"name\":\"nonIdentProfileForm.travelTimeField\",\"is-valid\":!_vm.errors.has('nonIdentProfileForm.travelTimeField')},model:{value:(_vm.profile.travelTime),callback:function ($$v) {_vm.$set(_vm.profile, \"travelTime\", $$v)},expression:\"profile.travelTime\"}})],1)])]):_vm._e()]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\r\nimport VueResource from 'vue-resource'\r\nimport moment from 'moment'\r\nimport { Rule, RuleValidate } from 'vee-validate'\r\n\r\nVue.use(VueResource)\r\n\r\nconst getTypeString = (target: any): string => {\r\n  var targetType = Object.prototype.toString.call(target)\r\n  return targetType\r\n}\r\n\r\nconst isADate = (d: any): boolean => {\r\n  if (!(Object.prototype.toString.call(d) === '[object Date]')) {\r\n    return false\r\n  }\r\n\r\n  return !isNaN(d.getTime())\r\n}\r\n\r\nconst convertFromFinnishDateStringToDate = (d: string): Date => {\r\n  const arr = d.toString().split('.')\r\n\r\n  return new Date(`${arr[2]}-${arr[1]}-${arr[0]}`)\r\n}\r\n\r\nconst getDate = (val: string | Date): Date => {\r\n  if (isADate(val)) {\r\n    return val as Date\r\n  }\r\n\r\n  var regex = /^\\d{1,2}\\.\\d{1,2}\\.\\d{4}$/\r\n  const valToTest = val.toString()\r\n\r\n  if (regex.test(valToTest)) {\r\n    return convertFromFinnishDateStringToDate(val.toString())\r\n  } else {\r\n    var parts = val.toString().split('-') // In format: YYYY-MM-DDT00:00:00Z ?\r\n\r\n    if (parts.length === 3) {\r\n      var year = parts[0]\r\n      var month = parts[1]\r\n      var endParts = parts[2].toString().split(':')\r\n\r\n      if (endParts.length === 3) {\r\n        var dayParts = endParts[0].toString().split('T')\r\n\r\n        if (dayParts.length === 2) {\r\n          var day = dayParts[0]\r\n          var date = `${day}.${month}.${year}`\r\n\r\n          if (regex.test(date)) {\r\n            return convertFromFinnishDateStringToDate(date.toString())\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    throw new Error(`Value must be in the format DD.MM.YYYY, but it is ${val}`)\r\n  }\r\n}\r\n\r\n// usage: v-validate=\"required|dateisbefore:20.02.2000\"\r\nconst validatorDateIsBefore: RuleValidate | Rule = {\r\n  getMessage (field: string, args: Array<string>): string {\r\n    return `${field} must be before ${moment(args[0], 'DD.MM.YYYY').format('DD.MM.YYYY')}.`\r\n  },\r\n  validate (value: Date | string, args: object | Array<any> | undefined): boolean {\r\n    if (!args) {\r\n      return false\r\n    }\r\n\r\n    if (Array.isArray(args) && !(typeof args[0] === 'string' && !isADate(args[0]))) {\r\n      throw new Error('The first argument must be a string in the format DD.MM.YYYY or a Date')\r\n    }\r\n\r\n    value = getDate(value)\r\n\r\n    var checkDate = Array.isArray(args)\r\n      ? getDate(args[0])\r\n      // @ts-ignore\r\n      : getDate(args)\r\n\r\n    var result = value <= checkDate\r\n\r\n    return result\r\n  }\r\n}\r\n\r\nexport default validatorDateIsBefore","<template>\r\n  <div v-if=\"profile\" class=\"profileinfoform\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12 col-sm-6\">\r\n        <forminput\r\n          v-model=\"profile.firstName\"\r\n          v-validate=\"'required'\"\r\n          :hint=\"$t('nonIdentProfileForm.firstName')\"\r\n          :is-valid=\"!errors.has('nonIdentProfileForm.firstname')\"\r\n          name=\"nonIdentProfileForm.firstname\"\r\n          :required=\"true\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12 col-sm-6\">\r\n        <forminput\r\n          v-model=\"profile.lastName\"\r\n          v-validate=\"'required'\"\r\n          :hint=\"$t('nonIdentProfileForm.lastName')\"\r\n          :is-valid=\"!errors.has('nonIdentProfileForm.lastname')\"\r\n          name=\"nonIdentProfileForm.lastname\"\r\n          :required=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput\r\n          v-model=\"profile.streetAddress\"\r\n          v-validate=\"'required'\"\r\n          :hint=\"$t('nonIdentProfileForm.street')\"\r\n          :is-valid=\"!errors.has('nonIdentProfileForm.streetAddress')\"\r\n          name=\"nonIdentProfileForm.streetAddress\"\r\n          :required=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 col-sm-4\">\r\n        <forminput\r\n          v-model=\"profile.zipCode\"\r\n          v-validate=\"'required|regex:^[0-9]{5}$'\"\r\n          :hint=\"$t('nonIdentProfileForm.zipCode')\"\r\n          :is-valid=\"!errors.has('nonIdentProfileForm.zipCode')\"\r\n          name=\"nonIdentProfileForm.zipCode\"\r\n          :required=\"true\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12 col-sm-8\">\r\n        <forminput\r\n          v-model=\"profile.city\"\r\n          v-validate=\"'required'\"\r\n          :hint=\"$t('nonIdentProfileForm.city')\"\r\n          :is-valid=\"!errors.has('nonIdentProfileForm.city')\"\r\n          name=\"nonIdentProfileForm.city\"\r\n          :required=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 col-sm-6\">\r\n        <div class=\"datepicker\">\r\n          <datepicker\r\n            v-validate=\"birthdateValidation\"\r\n            :value=\"dateBirthdate\"\r\n            :title=\"$t('nonIdentProfileForm.birthdate')\"\r\n            name=\"onIdentProfileForm.birthDate\"\r\n            :is-valid=\"!errors.has('onIdentProfileForm.birthDate')\"\r\n            :required=\"true\"\r\n            @input=\"onBirthdayChange\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <!-- Languages -->\r\n    <div class=\"row\">\r\n      <div class=\"col-12 col-sm-6\">\r\n        <dropdowninput\r\n          v-model=\"profile.nativeLanguage\"\r\n          :title=\"$t('nonIdentProfileForm.languageNative')\"\r\n          :items=\"checkboxLanguages(profile.spokenLanguages, nativeLanguageOptions)\"\r\n          :is-valid=\"true\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <span class=\"cap-label brand-red px-3 mb-2 d-inline-block\">\r\n          {{ $t('nonIdentProfileForm.languageSpoken') }}\r\n        </span>\r\n        <checkboxlist\r\n          v-model=\"profile.spokenLanguages\"\r\n          :list=\"checkboxLanguages(profile.spokenLanguages, $store.state.friendCustomerLanguages)\"\r\n          :rows=\"2\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <forminput\r\n          v-model=\"profile.otherLanguages\"\r\n          :hint=\"$t('nonIdentProfileForm.otherLanguages')\"\r\n          :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"!isNetProfile\">\r\n      <!-- travel -->\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <span class=\"cap-label brand-red px-3 mb-2 d-inline-block\">\r\n            {{ $t('nonIdentProfileForm.traveloptions') }}\r\n          </span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 col-sm-6\">\r\n          <checkboxlist v-model=\"profile.transportation\"\r\n                        :list=\"travelOptions\"\r\n                        :rows=\"1\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 col-sm-5\">\r\n          <forminput\r\n            v-model=\"profile.travelTime\"\r\n            v-validate=\"'numeric'\"\r\n            :hint=\"$t('nonIdentProfileForm.travelTime')\"\r\n            name=\"nonIdentProfileForm.travelTimeField\"\r\n            :is-valid=\"!errors.has('nonIdentProfileForm.travelTimeField')\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import moment from 'moment'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import dropdowninput from '../SPRSimpleDropdown.vue'\r\n  import checkboxlist from '../SPRSimpleCheckboxList.vue'\r\n  import datepicker from '../SPRSimpleDatepicker.vue'\r\n  import inpututils from '../../mixins/inpututils.js'\r\n  import _ from 'lodash'\r\n  import { Validator } from 'vee-validate'\r\n  import validatordateisbefore from '../../mixins/validator-dateisbefore'\r\n  import { FriendProfileDto } from '@/types/index'\r\n  import { SprDropDownValue } from '@/types/custom'\r\n\r\n  Validator.extend('dateisbefore', validatordateisbefore)\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    datePickerOptions: Record<string, any>\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'ProfileInfoForm',\r\n    inject: ['$validator'],\r\n    components: {\r\n      forminput,\r\n      dropdowninput,\r\n      checkboxlist,\r\n      datepicker\r\n    },\r\n    mixins: [inpututils],\r\n    props: {\r\n      profile: {\r\n        type: Object as () => FriendProfileDto,\r\n        required: true\r\n      },\r\n      isNetProfile: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        datePickerOptions: {\r\n          inputStyle: {\r\n            display: 'inline-block',\r\n            padding: '10px 20px',\r\n            'line-height': '22px',\r\n            'font-size': '16px',\r\n            border: '2px solid #DDDDDD',\r\n            'box-shadow': 'none',\r\n            'border-radius': '24px',\r\n            color: '#5F5F5F',\r\n            width: '100%'\r\n          }\r\n        }\r\n      }\r\n    },\r\n    computed: {\r\n      birthdateValidation (): string {\r\n        const date = new Date()\r\n        const nowDay = date.getDate()\r\n        const nowDayString = nowDay < 10 ? '0' + nowDay : nowDay.toString()\r\n        const nowMonth = date.getMonth() + 1\r\n        const nowMonthString = nowMonth < 10 ? '0' + nowMonth : nowMonth.toString()\r\n        const nowYear = date.getUTCFullYear()\r\n        const currentDateAsString = `${nowDayString}.${nowMonthString}.${nowYear}`\r\n\r\n        return `required|dateisbefore:${currentDateAsString}`\r\n      },\r\n      nativeLanguageOptions (): Array<SprDropDownValue> {\r\n        return this.$store.state.friendCustomerLanguages\r\n      },\r\n      travelOptions (): Array<SprDropDownValue> {\r\n        return _.map(this.$store.state.transportation, (val, key) => {\r\n          return { value: val.id, text: this.$t('transportation.' + val.text), selected: this.profile.transportation.indexOf(val.id) >= 0 }\r\n        })\r\n      },\r\n      dateBirthdate (): Date {\r\n        if (!this.profile || !this.profile.age) {\r\n          return new Date()\r\n        }\r\n        return new Date(this.profile.age)\r\n      }\r\n    },\r\n    methods: {\r\n      onBirthdayChange (newVal: Date): void {\r\n        // @ts-ignore eslint-disable-next-line\r\n        this.profile.age = newVal\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .profileinfoform {\r\n    background-color: $brand-white;\r\n\r\n    @media (max-width: $media-lg-max) and (min-width: $media-md) {\r\n      box-shadow: inset 30px 0 0px 0px red;\r\n    }\r\n    @media (max-width: $media-sm-max) {\r\n      box-shadow: inset 15px 0 0px 0px red;\r\n    }\r\n    .indicator-stripe {\r\n      @media (min-width: $media-xl) {\r\n        box-shadow: inset 50px 0 0px 0px red;\r\n      }\r\n    }\r\n\r\n    .subheader  {\r\n      color: $brand-red;\r\n      text-transform: uppercase;\r\n      font-family: $font-bold;\r\n      margin: 0 0 10px 20px;\r\n      display: block;\r\n      font-size: 14px;\r\n    }\r\n\r\n    .sectionheader {\r\n      margin: 15px 0;\r\n    }\r\n\r\n    .currentgroup {\r\n      font-weight: bold;\r\n      margin-bottom: 20px;\r\n      display: block;\r\n    }\r\n\r\n    .contact-info {\r\n      margin-top: 50px;\r\n    }\r\n\r\n    .datepicker {\r\n      .datepickbox {\r\n        input {\r\n          width: 100%;\r\n          box-shadow: none !important;\r\n          border: solid 2px $brand-grey3 !important;\r\n        }\r\n      }\r\n    }\r\n\r\n    .form-container {\r\n      margin: 0 auto;\r\n      max-width: 900px;\r\n    }\r\n\r\n    .spr-button {\r\n      background-color: $brand-red;\r\n      color: $brand-white;\r\n    }\r\n\r\n    .bottomspacer {\r\n      margin-bottom: 50px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileInfoForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileInfoForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ProfileInfoForm.vue?vue&type=template&id=90723cbc\"\nimport script from \"./ProfileInfoForm.vue?vue&type=script&lang=ts\"\nexport * from \"./ProfileInfoForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ProfileInfoForm.vue?vue&type=style&index=0&id=90723cbc&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.value)?_c('div',{staticClass:\"interviewform\",class:{ 'disabled': _vm.disabled },attrs:{\"data-vv-scope\":\"interviewForm\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{attrs:{\"disabled\":_vm.disabled,\"title\":_vm.$t(_vm.translationKey),\"aria-label\":_vm.$t(_vm.translationKey)},on:{\"input\":_vm.update},model:{value:(_vm.value.interviewed),callback:function ($$v) {_vm.$set(_vm.value, \"interviewed\", $$v)},expression:\"value.interviewed\"}})],1),(_vm.value.interviewed)?_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('forminput',{attrs:{\"disabled\":_vm.disabled,\"data-vv-as\":\"Interview By\",\"title\":_vm.$t('nonIdentProfileForm.interviewedBy'),\"is-valid\":!_vm.errors.has('interviewForm.intervName'),\"name\":\"interviewForm.intervName\",\"required\":_vm.interviewedByRequired},on:{\"input\":_vm.update},model:{value:(_vm.value.interviewedBy),callback:function ($$v) {_vm.$set(_vm.value, \"interviewedBy\", $$v)},expression:\"value.interviewedBy\"}})],1):_vm._e(),(_vm.value.interviewed)?_c('div',{staticClass:\"col-12 col-md-6 col-lg-4\"},[_c('simpledate',{attrs:{\"name\":\"interviewForm.interDate\",\"is-valid\":!_vm.errors.has('interviewForm.interDate'),\"disabled\":_vm.disabled,\"data-vv-as\":\"Interview Date\"},on:{\"input\":_vm.update},model:{value:(_vm.value.interviewedDate),callback:function ($$v) {_vm.$set(_vm.value, \"interviewedDate\", $$v)},expression:\"value.interviewedDate\"}})],1):_vm._e()])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"value\" class=\"interviewform\" :class=\"{ 'disabled': disabled }\"  data-vv-scope=\"interviewForm\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxinput\r\n          v-model=\"value.interviewed\"\r\n          :disabled=\"disabled\"\r\n          :title=\"$t(translationKey)\"\r\n          :aria-label=\"$t(translationKey)\"\r\n          @input=\"update\"\r\n        />\r\n      </div>\r\n      <div\r\n        v-if=\"value.interviewed\"\r\n        class=\"col-12 col-sm-6 col-md-4\"\r\n      >\r\n        <forminput\r\n          v-model=\"value.interviewedBy\"\r\n          :disabled=\"disabled\"\r\n          data-vv-as=\"Interview By\"\r\n          :title=\"$t('nonIdentProfileForm.interviewedBy')\"\r\n          :is-valid=\"!errors.has('interviewForm.intervName')\"\r\n          name=\"interviewForm.intervName\"\r\n          :required=\"interviewedByRequired\"\r\n          @input=\"update\"\r\n        />\r\n      </div>\r\n      <div\r\n        v-if=\"value.interviewed\"\r\n        class=\"col-12 col-md-6 col-lg-4\"\r\n      >\r\n        <simpledate\r\n          v-model=\"value.interviewedDate\"\r\n          name=\"interviewForm.interDate\"\r\n          :is-valid=\"!errors.has('interviewForm.interDate')\"\r\n          :disabled=\"disabled\"\r\n          data-vv-as=\"Interview Date\"\r\n          @input=\"update\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import simpledate from '../SPRSimpleDatepicker.vue'\r\n  import { InterviewData } from '../../types/custom'\r\n\r\n  // the data object\r\n  export default Vue.extend({\r\n    name: 'InterviewForm',\r\n    components: {\r\n      forminput,\r\n      checkboxinput,\r\n      simpledate\r\n    },\r\n    inject: ['$validator'],\r\n    props: {\r\n      value: {\r\n        type: Object as () => InterviewData,\r\n        required: true\r\n      },\r\n      translationKey: {\r\n        type: String,\r\n        default: 'nonIdentProfileForm.volunteerInterviewed'\r\n      },\r\n      disabled: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    created (): void {\r\n      if (!this.value.interviewedDate) {\r\n        this.value.interviewedDate = new Date()\r\n      }\r\n    },\r\n    computed: {\r\n      datePlaceholder (): string {\r\n        return this.$store.state.language === 'sv' ? 'dd.mm.åååå' : 'pp.kk.vvvv'\r\n      },\r\n      dateValidationRule (): string {\r\n        return this.value.interviewed ? 'required' : ''\r\n      },\r\n      interviewedByValidationRule (): string {\r\n        return this.value.interviewed ? 'required' : ''\r\n      },\r\n      interviewedByRequired (): boolean {\r\n        return this.value.interviewed\r\n      }\r\n    },\r\n    methods: {\r\n      update (): void {\r\n        if (this.value?.interviewed) {\r\n          // run the falidator in a timeout\r\n          setTimeout(() => {\r\n            this.$validator.validateAll('interviewForm').then((result: boolean) => {\r\n            if (result) {\r\n              this.$emit('input', this.value)\r\n            }\r\n          })\r\n          }, 0)\r\n          \r\n        } else {\r\n          if (this.value) {\r\n            this.value.interviewedBy = ''\r\n            this.value.interviewedDate = undefined\r\n            this.$emit('input', this.value)\r\n          }\r\n        }\r\n      }\r\n    },\r\n    watch: {\r\n      'value.interviewed'(newVal: boolean) {\r\n        if (newVal) {\r\n          if (!this.$validator.fields.find({ name: 'interviewForm.intervName' })) {\r\n            this.$validator.attach({\r\n              name: 'interviewForm.intervName',\r\n              rules: 'required',\r\n              getter: () => this.value.interviewedBy\r\n            });\r\n          }\r\n          if (!this.$validator.fields.find({ name: 'interviewForm.interDate' })) {\r\n            this.$validator.attach({\r\n              name: 'interviewForm.interDate',\r\n              rules: 'required',\r\n              getter: () => this.value.interviewedDate\r\n            });\r\n          }\r\n        } else {\r\n          if (this.$validator.fields.find({ name: 'interviewForm.intervName' })) {\r\n            this.$validator.detach('interviewForm.intervName');\r\n          }\r\n          if (this.$validator.fields.find({ name: 'interviewForm.interDate' })) {\r\n            this.$validator.detach('interviewForm.interDate');\r\n          }\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import \"../../assets/scss/_variables.scss\";\r\n\r\n.interviewform {\r\n  background-color: $brand-white;\r\n\r\n  .subheader {\r\n    color: $brand-red;\r\n    text-transform: uppercase;\r\n    font-family: $font-bold;\r\n    margin: 0 0 10px 20px;\r\n    display: block;\r\n    font-size: 14px;\r\n  }\r\n\r\n  .sectionheader {\r\n    margin: 15px 0;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InterviewForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InterviewForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./InterviewForm.vue?vue&type=template&id=2211ffab\"\nimport script from \"./InterviewForm.vue?vue&type=script&lang=ts\"\nexport * from \"./InterviewForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./InterviewForm.vue?vue&type=style&index=0&id=2211ffab&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localOnHoldData)?_c('div',{staticClass:\"onholdform\"},[(_vm.disabled)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"onholdchangeprohibited\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.onHoldChangeNotAllowed')))])])]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{attrs:{\"value\":_vm.localOnHoldData.onHold,\"disabled\":_vm.disabled,\"title\":_vm.$t('volunteerForm.onHold')},on:{\"input\":_vm.onHoldChecked}})],1)]),(_vm.localOnHoldData.onHold)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('forminput',{attrs:{\"value\":_vm.localOnHoldData.onHoldDetails,\"disabled\":_vm.disabled,\"hint\":_vm.$t('volunteerForm.onHoldDescription'),\"is-valid\":true},on:{\"input\":_vm.onHoldDetailsUpdate}})],1),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('datepicker',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.onHoldDeadlineRules),expression:\"onHoldDeadlineRules\"}],attrs:{\"value\":_vm.localOnHoldData.onHoldDeadline,\"disabled\":_vm.disabled,\"data-vv-scope\":\"onHoldForm\",\"title\":_vm.$t('volunteerForm.onHoldDeadline'),\"name\":\"volunteerForm.onHoldDeadline\",\"is-valid\":!_vm.errors.has('volunteerForm.onHoldDeadline'),\"future\":5},on:{\"input\":_vm.onHoldDeadlineUpdate}})],1)]):_vm._e()]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"localOnHoldData\" class=\"onholdform\">\r\n    <div v-if=\"disabled\" class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span class=\"onholdchangeprohibited\">{{ $t('volunteerForm.onHoldChangeNotAllowed') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxinput\r\n          :value=\"localOnHoldData.onHold\"\r\n          :disabled=\"disabled\"\r\n          :title=\"$t('volunteerForm.onHold')\"\r\n          @input=\"onHoldChecked\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"localOnHoldData.onHold\" class=\"row\">\r\n      <div class=\"col-12 col-sm-6\">\r\n        <forminput\r\n          :value=\"localOnHoldData.onHoldDetails\"\r\n          :disabled=\"disabled\"\r\n          :hint=\"$t('volunteerForm.onHoldDescription')\"\r\n          :is-valid=\"true\"\r\n          @input=\"onHoldDetailsUpdate\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12 col-sm-6\">\r\n        <datepicker\r\n          v-validate=\"onHoldDeadlineRules\"\r\n          :value=\"localOnHoldData.onHoldDeadline\"\r\n          :disabled=\"disabled\"\r\n          data-vv-scope=\"onHoldForm\"\r\n          :title=\"$t('volunteerForm.onHoldDeadline')\"\r\n          name=\"volunteerForm.onHoldDeadline\"\r\n          :is-valid=\"!errors.has('volunteerForm.onHoldDeadline')\"\r\n          :future=\"5\"\r\n          @input=\"onHoldDeadlineUpdate\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import datepicker from '../SPRSimpleDatepicker.vue'\r\n  import moment from 'moment'\r\n  import { OnHoldData } from '../../types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localOnHoldData: undefined | OnHoldData\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'OnHoldForm',\r\n    components: {\r\n      forminput,\r\n      checkboxinput,\r\n      datepicker\r\n    },\r\n    inject: ['$validator'],\r\n    props: {\r\n      value: {\r\n        type: Object as () => OnHoldData,\r\n        required: true\r\n      },\r\n      disabled: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        localOnHoldData: undefined as undefined | OnHoldData\r\n      }\r\n    },\r\n    computed: {\r\n      onHoldDeadlineRules (): string {\r\n        if (this.disabled) {\r\n          return ''\r\n        }\r\n        return this.localOnHoldData && this.localOnHoldData.onHold\r\n          ? `required|dateisafter:${moment().add(1, 'day').startOf('day').format('DD.MM.YYYY')}`\r\n          : ''\r\n      }\r\n    },\r\n    watch: {\r\n      value: function (newVal: OnHoldData): void {\r\n        this.localOnHoldData = newVal\r\n      }\r\n    },\r\n    mounted (): void {\r\n      if (this.value) {\r\n        this.localOnHoldData = this.value\r\n      }\r\n    },\r\n    methods: {\r\n      onHoldChecked (newVal): void {\r\n        if (!this.localOnHoldData) {\r\n          return\r\n        }\r\n        this.localOnHoldData.onHold = newVal\r\n        if (this.localOnHoldData?.onHold) {\r\n          // if its checked on, set the default value to 2 years ahead.\r\n          var d = new Date()\r\n          var year = d.getFullYear()\r\n          var month = d.getMonth()\r\n          var day = d.getDate()\r\n          this.localOnHoldData.onHoldDeadline = new Date(year + 2, month, day)\r\n        }\r\n        this.update()\r\n      },\r\n      onHoldDetailsUpdate (newVal): void {\r\n        if (!this.localOnHoldData) {\r\n          return\r\n        }\r\n        this.localOnHoldData.onHoldDetails = newVal\r\n        this.update()\r\n      },\r\n      onHoldDeadlineUpdate (newVal): void {\r\n        if (!this.localOnHoldData) {\r\n          return\r\n        }\r\n        this.localOnHoldData.onHoldDeadline = newVal\r\n        this.update()\r\n      },\r\n      update (): void {\r\n        if (this.localOnHoldData?.onHold) {\r\n          this.$validator.validate('onHoldForm.*').then(result => {\r\n            if (result) {\r\n              this.$emit('input', this.localOnHoldData)\r\n            }\r\n          })\r\n        } else {\r\n          this.$emit('input', this.localOnHoldData)\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import \"../../assets/scss/_variables.scss\";\r\n\r\n.onholdform {\r\n  background-color: $brand-white;\r\n\r\n  .onholdchangeprohibited {\r\n    color: $brand-red;\r\n    font-size: 12px;\r\n  }\r\n\r\n  .subheader {\r\n    color: $brand-red;\r\n    text-transform: uppercase;\r\n    font-family: $font-bold;\r\n    margin: 0 0 10px 20px;\r\n    display: block;\r\n    font-size: 14px;\r\n  }\r\n\r\n  .sectionheader {\r\n    margin: 15px 0;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OnHoldForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OnHoldForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./OnHoldForm.vue?vue&type=template&id=77fc8299\"\nimport script from \"./OnHoldForm.vue?vue&type=script&lang=ts\"\nexport * from \"./OnHoldForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./OnHoldForm.vue?vue&type=style&index=0&id=77fc8299&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"slastContactedForm\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('volunteerForm.lastContactedCheckBoxTitle'),\"aria-label\":_vm.$t('volunteerForm.lastContactedCheckBoxTitle')},on:{\"input\":_vm.update},model:{value:(_vm.hasLastContacted),callback:function ($$v) {_vm.hasLastContacted=$$v},expression:\"hasLastContacted\"}})],1)]),(_vm.hasLastContacted)?_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[_c('datepicker',{attrs:{\"disabled\":_vm.inActive,\"data-vv-scope\":\"lastContactedForm\",\"title\":_vm.$t('volunteerForm.lastContacted'),\"name\":\"onIdentProfileForm.lastContacted\",\"is-valid\":!_vm.errors.has('onIdentProfileForm.lastContacted')},on:{\"input\":_vm.update},model:{value:(_vm.lastContacted),callback:function ($$v) {_vm.lastContacted=$$v},expression:\"lastContacted\"}})],1)]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"slastContactedForm\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxinput\r\n          v-model=\"hasLastContacted\"\r\n          :title=\"$t('volunteerForm.lastContactedCheckBoxTitle')\"\r\n          :aria-label=\"$t('volunteerForm.lastContactedCheckBoxTitle')\"\r\n          @input=\"update\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"hasLastContacted\" class=\"row feature-panel\">\r\n      <div class=\"col-12\">\r\n        <datepicker\r\n          :disabled=\"inActive\"\r\n          data-vv-scope=\"lastContactedForm\"\r\n          v-model=\"lastContacted\"\r\n          :title=\"$t('volunteerForm.lastContacted')\"\r\n          name=\"onIdentProfileForm.lastContacted\"\r\n          :is-valid=\"!errors.has('onIdentProfileForm.lastContacted')\"\r\n          @input=\"update\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import datepicker from '../SPRSimpleDatepicker.vue'\r\n  import { debounce } from 'lodash'\r\n  \r\n\r\n  interface TemplateComponentData {\r\n    hasLastContacted: boolean,\r\n    inActive: boolean,\r\n    lastContacted: Object | undefined\r\n  }\r\n  export default Vue.extend({\r\n    name: 'LastContactedForm',\r\n    components: {\r\n      forminput,\r\n      checkboxinput,\r\n      datepicker\r\n    },\r\n    inject: ['$validator'],\r\n    data (): TemplateComponentData {\r\n      return {\r\n        hasLastContacted: false,\r\n        inActive: false,\r\n        lastContacted: undefined\r\n      }\r\n    },\r\n    props: {\r\n      value: {\r\n        type: Object,\r\n        required: true\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.hasLastContacted = this.value !== null\r\n      this.lastContacted = this.value\r\n    },\r\n    methods: {\r\n      update (): void {\r\n        if (this.hasLastContacted && !this.lastContacted) {\r\n          this.lastContacted = new Date()\r\n        }\r\n        this.$emit('input', this.hasLastContacted, this.lastContacted)\r\n      }\r\n    },\r\n    created () {\r\n      this.update = debounce(this.update, 300)\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import \"../../assets/scss/_variables.scss\";\r\n\r\n.lastContactedform {\r\n  background-color: $brand-white;\r\n\r\n  .subheader {\r\n    color: $brand-red;\r\n    text-transform: uppercase;\r\n    font-family: $font-bold;\r\n    margin: 0 0 10px 20px;\r\n    display: block;\r\n    font-size: 14px;\r\n  }\r\n\r\n  .sectionheader {\r\n    margin: 15px 0;\r\n  }\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LastContactedForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LastContactedForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./LastContactedForm.vue?vue&type=template&id=79690f46\"\nimport script from \"./LastContactedForm.vue?vue&type=script&lang=ts\"\nexport * from \"./LastContactedForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./LastContactedForm.vue?vue&type=style&index=0&id=79690f46&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"nav-header row py-2\"},[_c('div',{staticClass:\"container\"},[_c('a',{staticClass:\"back\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript: void(0);\"},on:{\"click\":_vm.goBack}},[_c('font-awesome-icon',{attrs:{\"icon\":\"chevron-left\"}}),_vm._v(_vm._s(_vm.$t('customerForm.back'))+\" \")],1),(_vm.title)?_c('h3',[_vm._v(\" \"+_vm._s(_vm.title)+\" \"),(_vm.infobutton)?_c('a',{attrs:{\"href\":_vm.infobutton,\"target\":\"_blank\",\"rel\":\"noopener\"}},[_c('font-awesome-icon',{attrs:{\"icon\":\"info-circle\"}})],1):_vm._e()]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.subtitle)+\" \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n<template>\r\n  <!-- BACK BUTTON -->\r\n  <div class=\"nav-header row py-2\">\r\n    <div class=\"container\">\r\n      <a class=\"back\" tabindex=\"0\" href=\"javascript: void(0);\" @click=\"goBack\">\r\n        <font-awesome-icon icon=\"chevron-left\" />{{ $t('customerForm.back') }}\r\n      </a>\r\n      <h3 v-if=\"title\">\r\n        {{ title }} <a v-if=\"infobutton\" :href=\"infobutton\" target=\"_blank\" rel=\"noopener\"><font-awesome-icon icon=\"info-circle\" /></a>\r\n      </h3>\r\n      {{ subtitle }}\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'BackBar',\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      subtitle: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      infobutton: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      back: {\r\n        type: String,\r\n        default () {\r\n          return ''\r\n        }\r\n      }\r\n    },\r\n    methods: {\r\n      goBack () {\r\n        if (this.back) {\r\n          this.$router.push(this.back)\r\n        } else if (sessionStorage.getItem('prev') === '/') {\r\n          this.$router.push('/')\r\n        } else {\r\n          this.$router.back()\r\n        }\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import \"../assets/scss/_variables.scss\";\r\n  .nav-header {\r\n    background-color: #EEEEEE;\r\n    overflow-wrap: break-word;\r\n    border-bottom: solid 1px #DDDDDD;\r\n\r\n    h3 {\r\n      color: $brand-red;\r\n      margin-top: 10px;\r\n\r\n      svg {\r\n        display: inline-block;\r\n        position: relative;\r\n        font-size: 0.67em;\r\n        top: -1px;\r\n      }\r\n    }\r\n\r\n    a {\r\n      color:#000;\r\n\r\n      svg {\r\n        color:$brand-red;\r\n        margin-right: 5px;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BackBar.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BackBar.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./BackBar.vue?vue&type=template&id=2b4390fa\"\nimport script from \"./BackBar.vue?vue&type=script&lang=js\"\nexport * from \"./BackBar.vue?vue&type=script&lang=js\"\nimport style0 from \"./BackBar.vue?vue&type=style&index=0&id=2b4390fa&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"friendProfile && friendProfile.friendInfo && friendProfile.friendInfo.standardProfile\" class=\"container\">\r\n    <div class=\"profileidentstandardvolunteerform\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <h2>{{ $t('volunteerForm.updateTitle') }}</h2>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <backbar />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-center py-2\">\r\n          <validation :id=\"'validationTarget' + _uid\"\r\n                      ref=\"validationtarget\"\r\n                      :validation-errors=\"validationErrors\"\r\n                      exclude-field-reference\r\n                      include-title\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12 col-sm-5 col-md-4\">\r\n          <forminput\r\n            v-model=\"friendProfile.phoneNumber\"\r\n            v-validate=\"'required'\"\r\n            :hint=\"$t('volunteerForm.phone')\"\r\n            :is-valid=\"!errors.has('volunteerForm.phone')\"\r\n            name=\"volunteerForm.phone\"\r\n            :required=\"true\"\r\n            disabled\r\n            :tooltip=\"$t('volunteerForm.disabledPhone')\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <VolunteerProfileCommon :volunteer=\"friendProfile.friendInfo\" @input=\"onVolunteerChanged\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <ProfileInfoForm :profile=\"friendProfile\" :is-net-profile=\"false\" @input=\"onFriendProfileChanged\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <VolunteerProfileStandard :volunteer=\"friendProfile.friendInfo.standardProfile\" @input=\"onVolunteerStandardProfileChanged\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12 sectionheader\">\r\n          <h3>{{ $t(\"nonIdentProfileForm.applicationState\") }}</h3>\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <InterviewForm\r\n            v-if=\"friendProfile\"\r\n            :value=\"computedInterviewData\"\r\n            :disabled=\"isStateChangeDisabled\"\r\n            @input=\"onInterviewDataChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <OnHoldForm\r\n            :value=\"computedOnHoldData\"\r\n            :disabled=\"isStateChangeDisabled\"\r\n            @input=\"onOnHoldDataChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <LastContactedForm\r\n            v-if=\"friendProfile.friendInfo\"\r\n            :value=\"friendProfile.friendInfo.lastContacted\"\r\n            @input=\"onlastContactedChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <textareainput\r\n            v-model=\"friendProfile.friendInfo.standardProfile.privateNotes\"\r\n            :title=\"$t('volunteerForm.privateNotes')\" :rows=\"6\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel buttons\">\r\n        <div class=\"col-6 cancel\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.cancel')\"\r\n                     click-event=\"onCancel\"\r\n                     @onCancel=\"cancel\"\r\n          />\r\n        </div>\r\n        <div class=\"col-6 save\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.save')\"\r\n                     click-event=\"onSave\"\r\n                     @onSave=\"save\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import SprButton from '@/components/SPRButton.vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import ProfileInfoForm from '@/components/friends/ProfileInfoForm.vue'\r\n  import VolunteerProfileCommon from '@/components/friends/VolunteerProfileCommon.vue'\r\n  import VolunteerProfileStandard from '@/components/friends/VolunteerProfileStandard.vue'\r\n  import InterviewForm from '@/components/friends/InterviewForm.vue'\r\n  import OnHoldForm from '@/components/friends/OnHoldForm.vue'\r\n  import LastContactedForm from '@/components/friends/LastContactedForm.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import backbar from '../BackBar.vue'\r\n  import validation from '../SPRValidationError.vue'\r\n  import Alerts from '@/mixins/alerts.js'\r\n  import { ErrorBag, FieldError } from 'vee-validate'\r\n  import { UserProfileDto, FriendProfileDto, FriendVolunteerDto, FriendVolunteerProfileStandardDto, GetFriendProfileByFriendVolunteerIdCriteria, CustomerState } from '@/types/index'\r\n  import { InterviewData, OnHoldData } from '@/types/custom'\r\n  import { convertToUTC } from '@/helpers/datehelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    friendProfile: FriendProfileDto | undefined\r\n  }\r\n\r\n  // This is the component for managing updating an ident users Standard Friend profile.\r\n  export default Vue.extend({\r\n    name: 'ProfileIdentStandardVolunteerForm',\r\n    components: { validation, backbar, forminput, ProfileInfoForm, VolunteerProfileCommon, VolunteerProfileStandard, InterviewForm, OnHoldForm, SprButton, textareainput, LastContactedForm },\r\n    mixins: [Alerts],\r\n    props: {\r\n      profileId: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      groupId: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        friendProfile: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      validationErrors (): Array<Array<string>> {\r\n        var errs: ErrorBag = this.errors ? this.errors : []\r\n        if (errs.items.length) {\r\n          return errs.items.map((err: FieldError) => {\r\n            return [`error_${err.field}`, err.rule ? err.rule : '', err.msg ? err.msg : '']\r\n          })\r\n        }\r\n        return []\r\n      },\r\n      computedInterviewData (): InterviewData | null {\r\n        if (!this.friendProfile?.friendInfo?.standardProfile) {\r\n          return {\r\n            interviewed: false,\r\n            interviewedBy: '',\r\n            interviewedDate: undefined\r\n        } as InterviewData\r\n        }\r\n\r\n        var defaultDate = new Date() // must be in UTC date format\r\n        const p = this.friendProfile.friendInfo.standardProfile\r\n        \r\n        return {\r\n          interviewed: p.volunteerInterviewed,\r\n          interviewedBy: p.volunteerInterviewedBy,\r\n          interviewedDate: p.volunteerInterviewedOnDate || defaultDate\r\n        } as InterviewData\r\n      },\r\n      computedOnHoldData (): OnHoldData | null {\r\n        if (this.friendProfile?.friendInfo?.standardProfile) {\r\n          const p = this.friendProfile.friendInfo.standardProfile\r\n          return {\r\n            onHold: Boolean(p.onHoldDeadline),\r\n            onHoldDeadline: p.onHoldDeadline,\r\n            onHoldDetails: p.onHoldDetails\r\n          } as OnHoldData\r\n        }\r\n\r\n        return null\r\n      },\r\n      isStateChangeDisabled (): boolean {\r\n        /// Cannot change the state if the customer has friendships\r\n        return this.friendProfile?.friendInfo.standardProfile.state === CustomerState.PendingFriend ||\r\n          this.friendProfile?.friendInfo.standardProfile.state === CustomerState.ActiveFriendship ||\r\n          Boolean(this.friendProfile?.friendInfo.standardProfile.friendships?.length)\r\n      }\r\n    },\r\n    mounted (): void {\r\n      var criteria: GetFriendProfileByFriendVolunteerIdCriteria = {\r\n        friendManagementGroupId: this.groupId,\r\n        friendVolunteerId: this.profileId,\r\n        includeFriendships: false,\r\n        includeFriendPools: false\r\n      }\r\n      var url = (this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteergetstandardprofilebyid[0])\r\n      this.$http.post(url, criteria).then(s => {\r\n        if (s.ok) {\r\n          // @ts-ignore\r\n          this.friendProfile = s.body as FriendProfileDto\r\n          return\r\n        }\r\n        this.failLoad()\r\n      }, f => this.failLoad())\r\n    },\r\n    provide (): Record<string, any> {\r\n      return {\r\n        $validator: this.$validator // allow child components to have validator injected\r\n      }\r\n    },\r\n    methods: {\r\n      failLoad (): void {\r\n        this.displayError(this.$t('common.fetchFailed'))\r\n      },\r\n      focusOnErrors () {\r\n        window.scrollTo({ top: 0, behavior: 'smooth' })\r\n      },\r\n      onFriendProfileChanged (newFriendProfile: FriendProfileDto): void {\r\n        this.friendProfile = newFriendProfile\r\n      },\r\n      onVolunteerChanged (newVolunteer: FriendVolunteerDto): void {\r\n        if (this.friendProfile) {\r\n          this.friendProfile.friendInfo = newVolunteer\r\n        }\r\n      },\r\n      onVolunteerStandardProfileChanged (newProfile: FriendVolunteerProfileStandardDto): void {\r\n        if (this.friendProfile) {\r\n          this.friendProfile.friendInfo.standardProfile = newProfile\r\n        }\r\n      },\r\n      onInterviewDataChanged (newData: InterviewData): void {\r\n        if (this.friendProfile) {\r\n          this.friendProfile.friendInfo.standardProfile.volunteerInterviewed = newData.interviewed\r\n          this.friendProfile.friendInfo.standardProfile.volunteerInterviewedBy = newData.interviewedBy\r\n          this.friendProfile.friendInfo.standardProfile.volunteerInterviewedOnDate = newData.interviewedDate\r\n        }\r\n      },\r\n      onOnHoldDataChanged (newData: OnHoldData): void {\r\n        if (this.friendProfile) {\r\n          this.friendProfile.friendInfo.standardProfile.onHoldDeadline = newData.onHold ? newData.onHoldDeadline : undefined\r\n          this.friendProfile.friendInfo.standardProfile.onHoldDetails = newData.onHold ? newData.onHoldDetails : ''\r\n        }\r\n      },\r\n      onlastContactedChanged (hasContactDate: boolean, lastContacted: Date): void {\r\n        if (!this.friendProfile?.friendInfo) return\r\n\r\n        this.friendProfile.friendInfo.lastContacted = hasContactDate ? lastContacted : undefined\r\n      },\r\n      cancel (): void {\r\n        const url = `/friend/volunteerpreview/${this.groupId}/${this.profileId}`\r\n        this.$router.push(url)\r\n      },\r\n      save (): void {\r\n        if (this.friendProfile?.friendInfo?.standardProfile?.preferredAges === 0) {\r\n          this.friendProfile.friendInfo.standardProfile.preferredAges = 1\r\n          this.$nextTick(() => {\r\n            if (!this.friendProfile) return\r\n            this.friendProfile.friendInfo.standardProfile.preferredAges = 0\r\n            this.validateAndSave()\r\n          })\r\n        } else {\r\n          this.validateAndSave()\r\n        }\r\n      },\r\n      validateAndSave (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          // check any child controls have not added errors\r\n          if (!result || (this.validationErrors && this.validationErrors.length)) {\r\n            var target = this.$refs['validationtarget']\r\n            if (target) {\r\n              window.scrollTo({\r\n                // @ts-ignore\r\n                top: target.$el.parentElement.clientHeight,\r\n                left: 0,\r\n                behavior: 'smooth'\r\n              })\r\n            }\r\n            return\r\n          }\r\n          if (this.friendProfile) {\r\n            const data = this.friendProfile\r\n            // @ts-ignore\r\n            data.friendInfo.netProfile = null\r\n            this.updateFriendProfile(data)\r\n          }\r\n        })\r\n      },\r\n      updateFriendProfile (data: FriendProfileDto): void {\r\n        data.friendInfo = this.convertDatesToUTC(data.friendInfo)\r\n\r\n        const updateUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.updateidentstandardprofile[0]\r\n\r\n        this.$http.put(updateUrl, data).then((result: any) => {\r\n          this.$router.push(`/friend/volunteerpreview/${this.groupId}/${this.profileId}`)\r\n        }, (err: Response | any) => {\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      convertDatesToUTC (friendInfo: FriendVolunteerDto): FriendVolunteerDto {\r\n        // convert dates to UTC and make sure they are corrected to the right date\r\n        if (friendInfo?.lastContacted) {\r\n          friendInfo.lastContacted = convertToUTC(friendInfo?.lastContacted)\r\n        }\r\n        if (friendInfo?.standardProfile?.volunteerInterviewed && friendInfo?.standardProfile?.volunteerInterviewedOnDate) {\r\n          friendInfo.standardProfile.volunteerInterviewedOnDate = convertToUTC(friendInfo.standardProfile.volunteerInterviewedOnDate)\r\n        }\r\n        if (friendInfo?.standardProfile?.onHoldDeadline) {\r\n          friendInfo.standardProfile.onHoldDeadline = convertToUTC(friendInfo?.standardProfile.onHoldDeadline)\r\n        }\r\n\r\n        return friendInfo\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .profileidentstandardvolunteerform {\r\n    .feature-panel {\r\n      background-color: $brand-white;\r\n      margin-bottom: 30px;\r\n      padding-top: 15px;\r\n\r\n      &.buttons {\r\n        margin-top: 30px;\r\n        padding-top: 15px;\r\n        padding-bottom: 15px;\r\n        .cancel {\r\n          text-align: left;\r\n        }\r\n        .save {\r\n          text-align: right;\r\n        }\r\n      }\r\n    }\r\n\r\n    .profilehead {\r\n      margin-top: 25px;\r\n      margin-bottom: 0;\r\n      padding-top: 10px;\r\n      padding-bottom: 10px;\r\n      background-color: $brand-white;\r\n    }\r\n\r\n    .subheader {\r\n      margin-top: 15px;\r\n      margin-bottom: 15px;\r\n      display: block;\r\n    }\r\n\r\n    .profile-button {\r\n      margin-top: 20px;\r\n      display: flex;\r\n      justify-content: center;\r\n    }\r\n\r\n    .fa-exclamation-triangle {\r\n      color: $brand-red;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileIdentStandardVolunteerForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileIdentStandardVolunteerForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ProfileIdentStandardVolunteerForm.vue?vue&type=template&id=490856ae\"\nimport script from \"./ProfileIdentStandardVolunteerForm.vue?vue&type=script&lang=ts\"\nexport * from \"./ProfileIdentStandardVolunteerForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ProfileIdentStandardVolunteerForm.vue?vue&type=style&index=0&id=490856ae&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.friendProfile && _vm.friendProfile.friendInfo && _vm.friendProfile.friendInfo.netProfile)?_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"profileidentnetvolunteerform\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('volunteerForm.updateTitle')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('backbar')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center py-2\"},[_c('validation',{ref:\"validationtarget\",attrs:{\"id\":'validationTarget' + _vm._uid,\"validation-errors\":_vm.validationErrors,\"exclude-field-reference\":\"\",\"include-title\":\"\"}})],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[_c('VolunteerProfileCommon',{attrs:{\"volunteer\":_vm.friendProfile.friendInfo},on:{\"input\":_vm.onVolunteerChanged}})],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[_c('VolunteerProfileNet',{attrs:{\"volunteer\":_vm.friendProfile.friendInfo.netProfile},on:{\"input\":_vm.onVolunteerNetProfileChanged}})],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12 sectionheader\"},[_c('h3',[_vm._v(_vm._s(_vm.$t(\"nonIdentProfileForm.applicationState\")))])]),_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile)?_c('InterviewForm',{attrs:{\"value\":_vm.computedInterviewData,\"disabled\":_vm.isStateChangeDisabled},on:{\"input\":_vm.onInterviewDataChanged}}):_vm._e()],1),_c('div',{staticClass:\"col-12\"},[_c('OnHoldForm',{attrs:{\"value\":_vm.computedOnHoldData,\"disabled\":_vm.isStateChangeDisabled},on:{\"input\":_vm.onOnHoldDataChanged}})],1),_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile.friendInfo)?_c('LastContactedForm',{attrs:{\"value\":_vm.friendProfile.friendInfo.lastContacted},on:{\"input\":_vm.onlastContactedChanged}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('volunteerForm.privateNotes'),\"rows\":6},model:{value:(_vm.friendProfile.friendInfo.netProfile.privateNotes),callback:function ($$v) {_vm.$set(_vm.friendProfile.friendInfo.netProfile, \"privateNotes\", $$v)},expression:\"friendProfile.friendInfo.netProfile.privateNotes\"}})],1)]),_c('div',{staticClass:\"row feature-panel buttons\"},[_c('div',{staticClass:\"col-6 cancel\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.cancel'),\"click-event\":\"onCancel\"},on:{\"onCancel\":_vm.cancel}})],1),_c('div',{staticClass:\"col-6 save\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.save'),\"click-event\":\"onSave\"},on:{\"onSave\":_vm.save}})],1)])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"friendProfile && friendProfile.friendInfo && friendProfile.friendInfo.netProfile\" class=\"container\">\r\n    <div class=\"profileidentnetvolunteerform\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <h2>{{ $t('volunteerForm.updateTitle') }}</h2>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <backbar />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-center py-2\">\r\n          <validation :id=\"'validationTarget' + _uid\"\r\n                      ref=\"validationtarget\"\r\n                      :validation-errors=\"validationErrors\"\r\n                      exclude-field-reference\r\n                      include-title\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <VolunteerProfileCommon :volunteer=\"friendProfile.friendInfo\" @input=\"onVolunteerChanged\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <VolunteerProfileNet :volunteer=\"friendProfile.friendInfo.netProfile\" @input=\"onVolunteerNetProfileChanged\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12 sectionheader\">\r\n          <h3>{{ $t(\"nonIdentProfileForm.applicationState\") }}</h3>\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <InterviewForm\r\n            v-if=\"friendProfile\"\r\n            :value=\"computedInterviewData\"\r\n            :disabled=\"isStateChangeDisabled\"\r\n            @input=\"onInterviewDataChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <OnHoldForm\r\n            :value=\"computedOnHoldData\"\r\n            :disabled=\"isStateChangeDisabled\"\r\n            @input=\"onOnHoldDataChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <LastContactedForm\r\n            v-if=\"friendProfile.friendInfo\"\r\n            :value=\"friendProfile.friendInfo.lastContacted\"\r\n            @input=\"onlastContactedChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <textareainput\r\n            v-model=\"friendProfile.friendInfo.netProfile.privateNotes\"\r\n            :title=\"$t('volunteerForm.privateNotes')\" :rows=\"6\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel buttons\">\r\n        <div class=\"col-6 cancel\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.cancel')\"\r\n                     click-event=\"onCancel\"\r\n                     @onCancel=\"cancel\"\r\n          />\r\n        </div>\r\n        <div class=\"col-6 save\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.save')\"\r\n                     click-event=\"onSave\"\r\n                     @onSave=\"save\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import SprButton from '@/components/SPRButton.vue'\r\n  import VolunteerProfileCommon from '@/components/friends/VolunteerProfileCommon.vue'\r\n  import VolunteerProfileNet from '@/components/friends/VolunteerProfileNet.vue'\r\n  import InterviewForm from '@/components/friends/InterviewForm.vue'\r\n  import OnHoldForm from '@/components/friends/OnHoldForm.vue'\r\n  import LastContactedForm from '@/components/friends/LastContactedForm.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import backbar from '../BackBar.vue'\r\n  import validation from '../SPRValidationError.vue'\r\n  import Alerts from '@/mixins/alerts.js'\r\n  import { ErrorBag, FieldError } from 'vee-validate'\r\n  import { UserProfileDto, FriendProfileDto, FriendVolunteerDto, FriendVolunteerProfileNetDto, GetFriendProfileByFriendVolunteerIdCriteria, CustomerState } from '@/types/index'\r\n  import { InterviewData, OnHoldData } from '@/types/custom'\r\n  import { convertToUTC } from '@/helpers/datehelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    friendProfile: FriendProfileDto | undefined,\r\n    isSavedOrCancelled: boolean\r\n  }\r\n\r\n  // This is the component for managing updating an ident users Net Friend profile.\r\n  export default Vue.extend({\r\n    name: 'ProfileIdentNetVolunteerForm',\r\n    components: { validation, backbar, VolunteerProfileCommon, VolunteerProfileNet, InterviewForm, OnHoldForm, SprButton, textareainput, LastContactedForm },\r\n    mixins: [Alerts],\r\n    props: {\r\n      profileId: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      groupId: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        friendProfile: undefined,\r\n        isSavedOrCancelled: false\r\n      }\r\n    },\r\n    computed: {\r\n      validationErrors (): Array<Array<string>> {\r\n        var errs: ErrorBag = this.errors ? this.errors : []\r\n        if (errs.items.length) {\r\n          return errs.items.map((err: FieldError) => {\r\n            return [`error_${err.field}`, err.rule ? err.rule : '', err.msg ? err.msg : '']\r\n          })\r\n        }\r\n        return []\r\n      },\r\n      computedInterviewData (): InterviewData | null {\r\n        if (!this.friendProfile?.friendInfo?.netProfile) {\r\n          return {\r\n            interviewed: false,\r\n            interviewedBy: '',\r\n            interviewedDate: undefined\r\n          } as InterviewData\r\n        }\r\n\r\n        var defaultDate = new Date() // must be in UTC date format\r\n        const p = this.friendProfile.friendInfo.netProfile\r\n        \r\n        return {\r\n          interviewed: p.volunteerInterviewed,\r\n          interviewedBy: p.volunteerInterviewedBy,\r\n          interviewedDate: p.volunteerInterviewedOnDate || defaultDate\r\n        } as InterviewData\r\n      },\r\n      computedOnHoldData (): OnHoldData | null {\r\n        if (this.friendProfile?.friendInfo?.netProfile) {\r\n          const p = this.friendProfile.friendInfo.netProfile\r\n          return {\r\n            onHold: Boolean(p.onHoldDeadline),\r\n            onHoldDeadline: p.onHoldDeadline,\r\n            onHoldDetails: p.onHoldDetails\r\n          } as OnHoldData\r\n        }\r\n\r\n        return null\r\n      },\r\n      isStateChangeDisabled (): boolean {\r\n        /// Cannot change the state if the customer has friendships\r\n        return this.friendProfile?.friendInfo.netProfile.state === CustomerState.PendingFriend ||\r\n          this.friendProfile?.friendInfo.netProfile.state === CustomerState.ActiveFriendship ||\r\n          Boolean(this.friendProfile?.friendInfo.netProfile.friendships?.length)\r\n      }\r\n    },\r\n    mounted (): void {\r\n      var criteria: GetFriendProfileByFriendVolunteerIdCriteria = {\r\n        friendManagementGroupId: this.groupId,\r\n        friendVolunteerId: this.profileId,\r\n        includeFriendships: false,\r\n        includeFriendPools: false\r\n      }\r\n      var url = (this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteergetnetprofilebyid[0])\r\n      this.$http.post(url, criteria).then(s => {\r\n        if (s.ok) {\r\n          // @ts-ignore\r\n          this.friendProfile = s.body as FriendProfileDto\r\n          return\r\n        }\r\n        this.failLoad()\r\n      }, f => this.failLoad())\r\n    },\r\n    provide (): Record<string, any> {\r\n      return {\r\n        $validator: this.$validator // allow child components to have validator injected\r\n      }\r\n    },\r\n    methods: {\r\n      failLoad (): void {\r\n        this.displayError(this.$t('common.fetchFailed'))\r\n      },\r\n      onVolunteerChanged (newVolunteer: FriendVolunteerDto): void {\r\n        if (this.friendProfile) {\r\n          this.friendProfile.friendInfo = newVolunteer\r\n        }\r\n      },\r\n      onVolunteerNetProfileChanged (newProfile: FriendVolunteerProfileNetDto): void {\r\n        if (this.friendProfile) {\r\n          this.friendProfile.friendInfo.netProfile = newProfile\r\n        }\r\n      },\r\n      onInterviewDataChanged (newData: InterviewData): void {\r\n        if (this.friendProfile) {\r\n          this.friendProfile.friendInfo.netProfile.volunteerInterviewed = newData.interviewed\r\n          this.friendProfile.friendInfo.netProfile.volunteerInterviewedBy = newData.interviewedBy\r\n          this.friendProfile.friendInfo.netProfile.volunteerInterviewedOnDate = newData.interviewedDate\r\n        }\r\n      },\r\n      onOnHoldDataChanged (newData: OnHoldData): void {\r\n        if (this.friendProfile) {\r\n          this.friendProfile.friendInfo.netProfile.onHoldDeadline = newData.onHold ? newData.onHoldDeadline : undefined\r\n          this.friendProfile.friendInfo.netProfile.onHoldDetails = newData.onHold ? newData.onHoldDetails : ''\r\n        }\r\n      },\r\n      onlastContactedChanged (hasContactDate: boolean, lastContacted: Date): void {\r\n        if (!this.friendProfile?.friendInfo) return\r\n\r\n        this.friendProfile.friendInfo.lastContacted = hasContactDate ? lastContacted : undefined\r\n      },\r\n      cancel (): void {\r\n        const url = `/friend/volunteerpreview/${this.groupId}/${this.profileId}`\r\n        this.$router.push(url)\r\n      },\r\n      save (): void {\r\n        if (this.friendProfile?.friendInfo?.netProfile?.preferredAges === 0) {\r\n          this.friendProfile.friendInfo.netProfile.preferredAges = 1\r\n          this.$nextTick(() => {\r\n            if (!this.friendProfile) return\r\n            this.friendProfile.friendInfo.netProfile.preferredAges = 0\r\n            this.validateAndSave()\r\n          })\r\n        } else {\r\n          this.validateAndSave()\r\n        }\r\n      },\r\n      validateAndSave (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          // check any child controls have not added errors\r\n          if (!result || (this.validationErrors && this.validationErrors.length)) {\r\n            var target = this.$refs['validationtarget']\r\n            if (target) {\r\n              window.scrollTo({\r\n                // @ts-ignore\r\n                top: target.$el.parentElement.clientHeight,\r\n                left: 0,\r\n                behavior: 'smooth'\r\n              })\r\n            }\r\n            return\r\n          }\r\n          if (this.friendProfile) {\r\n            const data = this.friendProfile\r\n            // @ts-ignore\r\n            data.friendInfo.standardProfile = null\r\n            this.updateFriendProfile(data.friendInfo)\r\n          }\r\n        })\r\n      },\r\n      updateFriendProfile (data: FriendVolunteerDto): void {\r\n        data = this.convertDatesToUTC(data)\r\n\r\n        const updateUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.updateidentnetfriendvolunteer[0]\r\n        this.$http.put(updateUrl, data).then((result: any) => {\r\n          this.$router.push(`/friend/volunteerpreview/${this.groupId}/${this.profileId}`)\r\n        }, (err: Response | any) => {\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      convertDatesToUTC (friendInfo: FriendVolunteerDto): FriendVolunteerDto {\r\n        // convert dates to UTC and make sure they are corrected to the right date\r\n        if (friendInfo?.lastContacted) {\r\n          friendInfo.lastContacted = convertToUTC(friendInfo?.lastContacted)\r\n        }\r\n        if (friendInfo?.netProfile?.volunteerInterviewed && friendInfo?.netProfile?.volunteerInterviewedOnDate) {\r\n          friendInfo.netProfile.volunteerInterviewedOnDate = convertToUTC(friendInfo?.netProfile.volunteerInterviewedOnDate)\r\n        }\r\n        if (friendInfo?.netProfile?.onHoldDeadline) {\r\n          friendInfo.netProfile.onHoldDeadline = convertToUTC(friendInfo?.netProfile.onHoldDeadline)\r\n        }\r\n\r\n        return friendInfo\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .profileidentnetvolunteerform {\r\n    .feature-panel {\r\n      background-color: $brand-white;\r\n      margin-bottom: 30px;\r\n      padding-top: 15px;\r\n\r\n      &.buttons {\r\n        margin-top: 30px;\r\n        padding-top: 15px;\r\n        padding-bottom: 15px;\r\n        .cancel {\r\n          text-align: left;\r\n        }\r\n        .save {\r\n          text-align: right;\r\n        }\r\n      }\r\n    }\r\n\r\n    .profilehead {\r\n      margin-top: 25px;\r\n      margin-bottom: 0;\r\n      padding-top: 10px;\r\n      padding-bottom: 10px;\r\n      background-color: $brand-white;\r\n    }\r\n\r\n    .subheader {\r\n      margin-top: 15px;\r\n      margin-bottom: 15px;\r\n      display: block;\r\n    }\r\n\r\n    .profile-button {\r\n      margin-top: 20px;\r\n      display: flex;\r\n      justify-content: center;\r\n    }\r\n\r\n    .fa-exclamation-triangle {\r\n      color: $brand-red;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileIdentNetVolunteerForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileIdentNetVolunteerForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ProfileIdentNetVolunteerForm.vue?vue&type=template&id=dcc6f948\"\nimport script from \"./ProfileIdentNetVolunteerForm.vue?vue&type=script&lang=ts\"\nexport * from \"./ProfileIdentNetVolunteerForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ProfileIdentNetVolunteerForm.vue?vue&type=style&index=0&id=dcc6f948&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"profilenonidentstandardvolunteerform\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.addEditTitle))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('backbar')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center py-2\"},[(_vm.friendProfile)?_c('validation',{ref:\"validationtarget\",attrs:{\"id\":'validationTarget' + _vm._uid,\"validation-errors\":_vm.validationErrors,\"exclude-field-reference\":\"\",\"include-title\":\"\"}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12 col-sm-5 col-md-4\"},[(_vm.friendProfile)?_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('volunteerForm.phone'),\"is-valid\":!_vm.errors.has('volunteerForm.phone'),\"name\":\"volunteerForm.phone\",\"required\":true,\"disabled\":_vm.isIdentProfile,\"tooltip\":_vm.$t('volunteerForm.disabledPhone')},model:{value:(_vm.friendProfile.phoneNumber),callback:function ($$v) {_vm.$set(_vm.friendProfile, \"phoneNumber\", $$v)},expression:\"friendProfile.phoneNumber\"}}):_vm._e()],1),_c('div',{staticClass:\"col-12 col-sm-7 col-md-4\"},[(_vm.friendProfile)?_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('email'),expression:\"'email'\"}],attrs:{\"hint\":_vm.$t('profile.email'),\"is-valid\":!_vm.errors.has('volunteerForm.email'),\"name\":\"volunteerForm.email\"},model:{value:(_vm.friendProfile.email),callback:function ($$v) {_vm.$set(_vm.friendProfile, \"email\", $$v)},expression:\"friendProfile.email\"}}):_vm._e()],1)]),(_vm.friendProfile)?_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile)?_c('ProfileInfoForm',{attrs:{\"profile\":_vm.friendProfile,\"is-net-profile\":false},on:{\"input\":_vm.onFriendProfileChanged}}):_vm._e()],1)]):_vm._e(),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile)?_c('VolunteerProfileCommon',{attrs:{\"volunteer\":_vm.friendProfile.friendInfo},on:{\"input\":_vm.onVolunteerChanged}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile)?_c('VolunteerProfileStandard',{attrs:{\"volunteer\":_vm.friendProfile.friendInfo.standardProfile},on:{\"input\":_vm.onVolunteerStandardProfileChanged}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12 sectionheader\"},[_c('h3',[_vm._v(_vm._s(_vm.$t(\"nonIdentProfileForm.applicationState\")))])]),_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile)?_c('InterviewForm',{attrs:{\"value\":_vm.computedInterviewData,\"disabled\":_vm.isStateChangeDisabled},on:{\"input\":_vm.onInterviewDataChanged}}):_vm._e()],1),_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile)?_c('OnHoldForm',{attrs:{\"value\":_vm.computedOnHoldData,\"disabled\":_vm.isStateChangeDisabled},on:{\"input\":_vm.onOnHoldDataChanged}}):_vm._e()],1),_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile.friendInfo)?_c('LastContactedForm',{attrs:{\"value\":_vm.friendProfile.friendInfo.lastContacted},on:{\"input\":_vm.onlastContactedChanged}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile)?_c('textareainput',{attrs:{\"title\":_vm.$t('volunteerForm.privateNotes'),\"rows\":6},model:{value:(_vm.friendProfile.friendInfo.standardProfile.privateNotes),callback:function ($$v) {_vm.$set(_vm.friendProfile.friendInfo.standardProfile, \"privateNotes\", $$v)},expression:\"friendProfile.friendInfo.standardProfile.privateNotes\"}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel buttons\"},[_c('div',{staticClass:\"col-6 cancel\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.cancel'),\"click-event\":\"onCancel\"},on:{\"onCancel\":_vm.cancel}})],1),_c('div',{staticClass:\"col-6 save\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"disabled\":_vm.isSaving,\"title\":_vm.$t('volunteerForm.save'),\"click-event\":\"onSave\"},on:{\"onSave\":_vm.save}})],1)])]),_c('b-modal',{attrs:{\"id\":_vm._uid + 'modal',\"size\":\"huge\",\"centered\":\"\",\"cancel-disabled\":\"\",\"ok-disabled\":\"\"},on:{\"close\":_vm.cancelModal},model:{value:(_vm.showModal),callback:function ($$v) {_vm.showModal=$$v},expression:\"showModal\"}},[_c('div',{attrs:{\"slot\":\"modal-header\"},slot:\"modal-header\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('volunteerForm.emailExists')))])]),(_vm.showModal)?_c('div',{staticClass:\"modal-body\"},[_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('volunteerForm.emailExistsMoreInfo')))]),(_vm.userProfile)?_c('div',[_c('p',[_c('b',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(_vm._s(_vm.$t('nonIdentProfileForm.firstName'))+\":\")]),_vm._v(\" \"+_vm._s(_vm.userProfile.firstName))]),_c('p',[_c('b',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(_vm._s(_vm.$t('nonIdentProfileForm.lastName'))+\":\")]),_vm._v(\" \"+_vm._s(_vm.userProfile.lastName)+\" \")]),_c('p',[_c('b',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(_vm._s(_vm.$t('nonIdentProfileForm.email'))+\":\")]),_vm._v(\" \"+_vm._s(_vm.userProfile.email))]),_c('p',[_c('b',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(_vm._s(_vm.$t('volunteerForm.phone'))+\":\")]),_vm._v(\" \"+_vm._s(_vm.userProfile.phoneNumber))]),_c('p',[_c('b',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(_vm._s(_vm.$t('nonIdentProfileForm.city'))+\":\")]),_vm._v(\" \"+_vm._s(_vm.userProfile.city))]),_c('p',[_c('b',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(_vm._s(_vm.$t('nonIdentProfileForm.birthdate'))+\":\")]),_vm._v(\" \"+_vm._s(_vm.birthdateString)+\" \")]),_c('p',[_c('b',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(_vm._s(_vm.$t('userAdmin.districtName'))+\":\")]),_vm._v(\" \"+_vm._s(_vm.existingProfileSectionName))]),(_vm.userProfile.friendInfo && _vm.userProfile.friendInfo.hasStandardProfile)?_c('p',[_c('b',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(_vm._s(_vm.$t('nonIdentProfileForm.hasStandardProfile'))+\":\")]),_vm._v(\" \"+_vm._s(_vm.$t('boolean.true'))+\" \")]):_vm._e(),(_vm.userProfile.friendInfo && _vm.userProfile.friendInfo.hasNetProfile)?_c('p',[_c('b',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(_vm._s(_vm.$t('nonIdentProfileForm.hasNetProfile'))+\":\")]),_vm._v(\" \"+_vm._s(_vm.$t('boolean.true'))+\" \")]):_vm._e()]):_vm._e()])]):_vm._e(),_c('div',{staticClass:\"container-fluid\",attrs:{\"slot\":\"modal-footer\"},slot:\"modal-footer\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-right close-link brand-red\"},[(_vm.userProfile && !_vm.userProfile.friendInfo)?_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.connect'),\"click-event\":\"onConnect\"},on:{\"onConnect\":_vm.connectProfiles}}):_vm._e(),_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.cancel'),\"click-event\":\"onCancel\"},on:{\"onCancel\":_vm.cancelModal}})],1)])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"container\">\r\n    <div class=\"profilenonidentstandardvolunteerform\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <h2>{{ addEditTitle }}</h2>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <backbar />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-center py-2\">\r\n          <validation\r\n            v-if=\"friendProfile\"\r\n            :id=\"'validationTarget' + _uid\"\r\n            ref=\"validationtarget\"\r\n            :validation-errors=\"validationErrors\"\r\n            exclude-field-reference\r\n            include-title\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12 col-sm-5 col-md-4\">\r\n          <forminput\r\n            v-if=\"friendProfile\"\r\n            v-model=\"friendProfile.phoneNumber\"\r\n            v-validate=\"'required'\"\r\n            :hint=\"$t('volunteerForm.phone')\"\r\n            :is-valid=\"!errors.has('volunteerForm.phone')\"\r\n            name=\"volunteerForm.phone\"\r\n            :required=\"true\"\r\n            :disabled=\"isIdentProfile\"\r\n            :tooltip=\"$t('volunteerForm.disabledPhone')\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 col-sm-7 col-md-4\">\r\n          <forminput\r\n            v-if=\"friendProfile\"\r\n            v-model=\"friendProfile.email\"\r\n            v-validate=\"'email'\"\r\n            :hint=\"$t('profile.email')\"\r\n            :is-valid=\"!errors.has('volunteerForm.email')\"\r\n            name=\"volunteerForm.email\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"friendProfile\" class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <ProfileInfoForm\r\n            v-if=\"friendProfile\"\r\n            :profile=\"friendProfile\"\r\n            :is-net-profile=\"false\"\r\n            @input=\"onFriendProfileChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <VolunteerProfileCommon\r\n            v-if=\"friendProfile\"\r\n            :volunteer=\"friendProfile.friendInfo\"\r\n            @input=\"onVolunteerChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <VolunteerProfileStandard\r\n            v-if=\"friendProfile\"\r\n            :volunteer=\"friendProfile.friendInfo.standardProfile\"\r\n            @input=\"onVolunteerStandardProfileChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12 sectionheader\">\r\n          <h3>{{ $t(\"nonIdentProfileForm.applicationState\") }}</h3>\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <InterviewForm\r\n            v-if=\"friendProfile\"\r\n            :value=\"computedInterviewData\"\r\n            :disabled=\"isStateChangeDisabled\"\r\n            @input=\"onInterviewDataChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <OnHoldForm\r\n            v-if=\"friendProfile\"\r\n            :value=\"computedOnHoldData\"\r\n            :disabled=\"isStateChangeDisabled\"\r\n            @input=\"onOnHoldDataChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <LastContactedForm\r\n            v-if=\"friendProfile.friendInfo\"\r\n            :value=\"friendProfile.friendInfo.lastContacted\"\r\n            @input=\"onlastContactedChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <textareainput\r\n            v-if=\"friendProfile\"\r\n            v-model=\"friendProfile.friendInfo.standardProfile.privateNotes\"\r\n            :title=\"$t('volunteerForm.privateNotes')\"\r\n            :rows=\"6\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel buttons\">\r\n        <div class=\"col-6 cancel\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.cancel')\"\r\n                     click-event=\"onCancel\"\r\n                     @onCancel=\"cancel\"\r\n          />\r\n        </div>\r\n        <div class=\"col-6 save\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :disabled=\"isSaving\"\r\n                     :title=\"$t('volunteerForm.save')\"\r\n                     click-event=\"onSave\"\r\n                     @onSave=\"save\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <b-modal\r\n      :id=\"_uid + 'modal'\"\r\n      v-model=\"showModal\"\r\n      size=\"huge\"\r\n      centered\r\n      cancel-disabled\r\n      ok-disabled\r\n      @close=\"cancelModal\"\r\n    >\r\n      <div slot=\"modal-header\">\r\n        <h3>{{ $t('volunteerForm.emailExists') }}</h3>\r\n      </div>\r\n      <div v-if=\"showModal\" class=\"modal-body\">\r\n        <div>\r\n          <p>{{ $t('volunteerForm.emailExistsMoreInfo') }}</p>\r\n          <div v-if=\"userProfile\">\r\n            <p> <b style=\"font-weight:bold;\">{{ $t('nonIdentProfileForm.firstName') }}:</b> {{ userProfile.firstName }}</p>\r\n            <p> <b style=\"font-weight:bold;\">{{ $t('nonIdentProfileForm.lastName') }}:</b> {{ userProfile.lastName }} </p>\r\n            <p> <b style=\"font-weight:bold;\">{{ $t('nonIdentProfileForm.email') }}:</b>  {{ userProfile.email }}</p>\r\n            <p> <b style=\"font-weight:bold;\">{{ $t('volunteerForm.phone') }}:</b> {{ userProfile.phoneNumber }}</p>\r\n            <p> <b style=\"font-weight:bold;\">{{ $t('nonIdentProfileForm.city') }}:</b> {{ userProfile.city }}</p>\r\n            <p> <b style=\"font-weight:bold;\">{{ $t('nonIdentProfileForm.birthdate') }}:</b> {{ birthdateString }} </p>\r\n            <p> <b style=\"font-weight:bold;\">{{ $t('userAdmin.districtName') }}:</b> {{ existingProfileSectionName }}</p>\r\n            <p v-if=\"userProfile.friendInfo && userProfile.friendInfo.hasStandardProfile\">\r\n              <b style=\"font-weight:bold;\">{{ $t('nonIdentProfileForm.hasStandardProfile') }}:</b> {{ $t('boolean.true') }}\r\n            </p>\r\n            <p v-if=\"userProfile.friendInfo && userProfile.friendInfo.hasNetProfile\">\r\n              <b style=\"font-weight:bold;\">{{ $t('nonIdentProfileForm.hasNetProfile') }}:</b>  {{ $t('boolean.true') }}\r\n            </p>\r\n\r\n            <!-- Add more fields as necessary -->\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <!-- footer -->\r\n      <div slot=\"modal-footer\" class=\"container-fluid\">\r\n        <div class=\"row\">\r\n          <div\r\n            class=\"col-12 text-right close-link brand-red\"\r\n          >\r\n            <SprButton v-if=\"userProfile && !userProfile.friendInfo\" type=\"button\"\r\n                       :size=\"1\"\r\n                       :title=\"$t('volunteerForm.connect')\"\r\n                       click-event=\"onConnect\"\r\n                       @onConnect=\"connectProfiles\"\r\n            />\r\n            <SprButton type=\"button\"\r\n                       :size=\"1\"\r\n                       :title=\"$t('volunteerForm.cancel')\"\r\n                       click-event=\"onCancel\"\r\n                       @onCancel=\"cancelModal\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </b-modal>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import SprButton from '@/components/SPRButton.vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import VolunteerProfileCommon from '@/components/friends/VolunteerProfileCommon.vue'\r\n  import ProfileInfoForm from '@/components/friends/ProfileInfoForm.vue'\r\n  import VolunteerProfileStandard from '@/components/friends/VolunteerProfileStandard.vue'\r\n  import InterviewForm from '@/components/friends/InterviewForm.vue'\r\n  import OnHoldForm from '@/components/friends/OnHoldForm.vue'\r\n  import LastContactedForm from '@/components/friends/LastContactedForm.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import backbar from '../BackBar.vue'\r\n  import validation from '../SPRValidationError.vue'\r\n  import Alerts from '@/mixins/alerts.js'\r\n  import { ErrorBag, FieldError } from 'vee-validate'\r\n  import { UserProfileDto, FriendProfileDto, ProfileState, FriendVolunteerDto, FriendVolunteerWithFriendshipsDto, FriendVolunteerProfileStandardDto, CustomerState, PreferredGenders, FriendshipTypes, NetFriendshipTypes, GetFriendProfileByFriendVolunteerIdCriteria } from '@/types/index'\r\n  import { InterviewData, OnHoldData } from '@/types/custom'\r\n  import { convertToUTC } from '@/helpers/datehelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    friendProfile: FriendProfileDto | undefined,\r\n    userProfile: UserProfileDto | undefined,\r\n    localProfileId: number,\r\n    isSaving: boolean,\r\n    showModal: boolean,\r\n    existingProfileSectionName: string\r\n  }\r\n\r\n  // This is the component for managing adding and updating an ident users Friend profile.\r\n  export default Vue.extend({\r\n    name: 'ProfileNonIdentStandardVolunteerForm',\r\n    components: { validation, backbar, ProfileInfoForm, VolunteerProfileCommon, VolunteerProfileStandard, InterviewForm, OnHoldForm, SprButton, textareainput, forminput, LastContactedForm },\r\n    mixins: [Alerts],\r\n    props: {\r\n      profileId: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      groupId: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        friendProfile: undefined,\r\n        isSaving: false,\r\n        showModal: false,\r\n        userProfile: undefined,\r\n        existingProfileSectionName: '',\r\n        localProfileId: 0\r\n      }\r\n    },\r\n    computed: {\r\n      isIdentProfile (): boolean {\r\n        return !this.friendProfile?.isNonIdent\r\n      },\r\n      isAdd (): boolean {\r\n        return Boolean(!this.profileId)\r\n      },\r\n      isEdit (): boolean {\r\n        return Boolean(this.profileId)\r\n      },\r\n      birthdateString (): string {\r\n        if (!this.userProfile) return ''\r\n        var d = new Date(this.userProfile.age)\r\n        return d ? d.toLocaleDateString('fi-FI') : ''\r\n      },\r\n      addEditTitle (): string | LocaleMessage {\r\n        return this.isEdit\r\n          ? this.$t('volunteerForm.updateTitle')\r\n          : this.$t('volunteerForm.addTitle')\r\n      },\r\n      validationErrors (): Array<Array<string>> {\r\n        const errs: ErrorBag = this.errors ? this.errors : []\r\n        if (errs.items.length) {\r\n          return errs.items.map((err: FieldError) => {\r\n            return [`error_${err.field}`, err.rule ? err.rule : '', err.msg ? err.msg : '']\r\n          })\r\n        }\r\n        return []\r\n      },\r\n\r\n      computedInterviewData (): InterviewData | null {\r\n        if (!this.friendProfile?.friendInfo?.standardProfile) {\r\n          return {\r\n            interviewed: false,\r\n            interviewedBy: '',\r\n            interviewedDate: undefined\r\n        } as InterviewData\r\n        }\r\n\r\n        var defaultDate = new Date() // must be in UTC date format\r\n        const p = this.friendProfile.friendInfo.standardProfile\r\n        \r\n        return {\r\n          interviewed: p.volunteerInterviewed,\r\n          interviewedBy: p.volunteerInterviewedBy,\r\n          interviewedDate: p.volunteerInterviewedOnDate || defaultDate\r\n        } as InterviewData\r\n      },\r\n      computedOnHoldData (): OnHoldData | null {\r\n        if (!this.friendProfile?.friendInfo?.standardProfile) return null\r\n\r\n        const p = this.friendProfile.friendInfo.standardProfile\r\n        \r\n        return {\r\n            onHold: Boolean(p.onHoldDeadline),\r\n            onHoldDeadline: p.onHoldDeadline,\r\n            onHoldDetails: p.onHoldDetails\r\n          } as OnHoldData\r\n      },\r\n      isStateChangeDisabled (): boolean {\r\n        if (!this.friendProfile?.friendInfo?.standardProfile) return false\r\n        /// Cannot change the state if the customer has friendships\r\n        return this.friendProfile?.friendInfo?.standardProfile?.state === CustomerState.PendingFriend ||\r\n          this.friendProfile?.friendInfo?.standardProfile?.state === CustomerState.ActiveFriendship ||\r\n          Boolean(this.friendProfile?.friendInfo?.standardProfile?.friendships?.length)\r\n      }\r\n    },\r\n    mounted (): void {\r\n      if (this.isEdit) {\r\n        var criteria: GetFriendProfileByFriendVolunteerIdCriteria = {\r\n          friendManagementGroupId: this.groupId,\r\n          friendVolunteerId: this.profileId,\r\n          includeFriendships: false,\r\n          includeFriendPools: false\r\n        }\r\n        var url = (this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteergetstandardprofilebyid[0])\r\n        this.$http.post(url, criteria).then(s => {\r\n          if (s.ok) {\r\n            // @ts-ignore\r\n            this.friendProfile = s.body as FriendProfileDto\r\n            return\r\n          }\r\n          this.failLoad()\r\n        }, f => this.failLoad())\r\n      } else {\r\n        this.friendProfile = {\r\n          age: new Date(),\r\n          availabilityTimes: [],\r\n          city: '',\r\n          country: '',\r\n          email: '',\r\n          firstName: '',\r\n          hasFriendInfo: true,\r\n          otherLanguages: '',\r\n          involvedEventCategories: 0,\r\n          friendInfo: {\r\n            city: '',\r\n            desiredAge: 0,\r\n            friendManagementGroupIds: [],\r\n            friendshipTypes: [],\r\n            friendVolunteerNetId: undefined,\r\n            friendVolunteerStandardId: undefined,\r\n            gender: 1,\r\n            hasHealthCareTraining: false,\r\n            hasNetProfile: false,\r\n            hasStandardProfile: false,\r\n            healthCareTrainingFreetext: '',\r\n            id: 0,\r\n            netProfile: {\r\n              availabilityDetails: '',\r\n              availabilityFrequence: 0,\r\n              availabilityTimes: 0,\r\n              customerTypes: 0,\r\n              friendManagementGroupId: this.groupId,\r\n              friendships: [],\r\n              friendshipTypes: (NetFriendshipTypes.OneToOne),\r\n              friendPools: [],\r\n              id: 0,\r\n              interests: 0,\r\n              lastFriendshipEndDate: new Date(),\r\n              lastContacted: undefined,\r\n              multipleCustomers: false,\r\n              onHold: false,\r\n              onHoldDeadline: undefined,\r\n              onHoldDetails: '',\r\n              otherInterests: '',\r\n              preferredAges: 0,\r\n              preferredGenders: (PreferredGenders.Other | PreferredGenders.Male | PreferredGenders.Female),\r\n              shortDescription: '',\r\n              startedPending: new Date(),\r\n              state: CustomerState.PendingApproval,\r\n              volunteerInterviewed: false,\r\n              volunteerInterviewedBy: '',\r\n              volunteerInterviewedDate: '', // this field should be ignored. it is not set anywhere. also not in the backend\r\n              volunteerInterviewedOnDate: undefined,\r\n              econtactDiscord: '',\r\n              econtactEmail: '',\r\n              econtactFreetext: '',\r\n              econtactInstagram: '',\r\n              econtactKik: '',\r\n              econtactSkype: '',\r\n              econtactTelegram: '',\r\n              privateNotes: ''\r\n            },\r\n            otherLanguages: '',\r\n            phone: '',\r\n            postalCode: '',\r\n            profileId: 0,\r\n            standardProfile: {\r\n              availabilityDetails: '',\r\n              availabilityFrequence: 0,\r\n              customerTypes: 0,\r\n              friendManagementGroupId: this.groupId,\r\n              friendships: [],\r\n              friendshipTypes: (FriendshipTypes.OneToOne),\r\n              friendPools: [],\r\n              id: 0,\r\n              interests: 0,\r\n              lastFriendshipEndDate: new Date(),\r\n              lastContacted: undefined,\r\n              multipleCustomers: false,\r\n              onHold: false,\r\n              onHoldDeadline: undefined,\r\n              onHoldDetails: '',\r\n              otherInterests: '',\r\n              preferredAges: 0,\r\n              preferredGenders: (PreferredGenders.Other | PreferredGenders.Male | PreferredGenders.Female),\r\n              shortDescription: '',\r\n              startedPending: new Date(),\r\n              state: CustomerState.PendingApproval,\r\n              volunteerInterviewed: false,\r\n              volunteerInterviewedBy: '',\r\n              volunteerInterviewedDate: '', // this field should be ignored. it is not set anywhere. also not in the backend\r\n              volunteerInterviewedOnDate: undefined,\r\n              availabilityTimes: 0,\r\n              hasAlternativeAddress: false,\r\n              alternativeCity: '',\r\n              alternativeStreet: '',\r\n              alternativeZipCode: '',\r\n              privateNotes: ''\r\n            },\r\n            streetAddress: ''\r\n          },\r\n          id: 0,\r\n          isNonIdent: true,\r\n          lastName: '',\r\n          nativeLanguage: 'fi',\r\n          phoneNumber: '',\r\n          spokenLanguages: [],\r\n          streetAddress: '',\r\n          transportation: [],\r\n          travelTime: '',\r\n          zipCode: ''\r\n        } as FriendProfileDto\r\n      }\r\n    },\r\n    provide (): Record<string, any> {\r\n      return {\r\n        $validator: this.$validator // allow child components to have validator injected\r\n      }\r\n    },\r\n    methods: {\r\n      failLoad (): void {\r\n        this.displayError(this.$t('common.fetchFailed'))\r\n      },\r\n      onFriendProfileChanged (newFriendProfile: FriendProfileDto): void {\r\n        this.friendProfile = newFriendProfile\r\n      },\r\n      onVolunteerChanged (newVolunteer: FriendVolunteerDto): void {\r\n        if (!this.friendProfile) return\r\n\r\n        this.friendProfile.friendInfo = newVolunteer\r\n      },\r\n      onVolunteerStandardProfileChanged (newProfile: FriendVolunteerProfileStandardDto): void {\r\n        if (!this.friendProfile) return\r\n\r\n        this.friendProfile.friendInfo.standardProfile = newProfile\r\n      },\r\n\r\n      onInterviewDataChanged (newData: InterviewData): void {\r\n        if (!this.friendProfile) return\r\n\r\n        this.friendProfile.friendInfo.standardProfile.volunteerInterviewed = newData.interviewed\r\n        this.friendProfile.friendInfo.standardProfile.volunteerInterviewedBy = newData.interviewedBy\r\n        this.friendProfile.friendInfo.standardProfile.volunteerInterviewedOnDate = newData.interviewedDate\r\n      },\r\n      onOnHoldDataChanged (newData: OnHoldData): void {\r\n        if (!this.friendProfile) return\r\n\r\n        this.friendProfile.friendInfo.standardProfile.onHoldDeadline = newData.onHold ? newData.onHoldDeadline : undefined\r\n        this.friendProfile.friendInfo.standardProfile.onHoldDetails = newData.onHold ? newData.onHoldDetails : ''\r\n      },\r\n      onlastContactedChanged (hasContactDate: boolean, lastContacted: Date): void {\r\n        if (!this.friendProfile?.friendInfo) return\r\n\r\n        this.friendProfile.friendInfo.lastContacted = hasContactDate ? lastContacted : undefined\r\n      },\r\n      cancel (): void {\r\n        const url = this.isEdit\r\n          ? `/friend/volunteerpreview/${this.groupId}/${this.profileId}`\r\n          : `/friend/search/${this.groupId}/volunteer`\r\n        this.$router.push(url)\r\n      },\r\n      save (): void {\r\n        //this.showModal = true\r\n        if (this.friendProfile?.friendInfo?.standardProfile?.preferredAges === 0) {\r\n          this.friendProfile.friendInfo.standardProfile.preferredAges = 1\r\n          this.$nextTick(() => {\r\n            if (!this.friendProfile) return\r\n            this.friendProfile.friendInfo.standardProfile.preferredAges = 0\r\n            this.validateAndSave()\r\n          })\r\n        } else {\r\n          this.validateAndSave()\r\n        }\r\n      },\r\n      validateAndSave (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          // check any child controls have not added errors\r\n          if (!result || (this.validationErrors && this.validationErrors.length)) {\r\n            var target = this.$refs['validationtarget']\r\n            if (target) {\r\n              window.scrollTo({\r\n                // @ts-ignore\r\n                top: target.$el.parentElement.clientHeight,\r\n                left: 0,\r\n                behavior: 'smooth'\r\n              })\r\n            }\r\n            return\r\n          }\r\n          if (this.friendProfile) {\r\n            const data = this.friendProfile\r\n            // @ts-ignore\r\n            data.friendInfo.netProfile = null\r\n            if (this.isAdd) {\r\n              this.addFriendProfile(data)\r\n            } else {\r\n              this.updateFriendProfile(data)\r\n            }\r\n          }\r\n        })\r\n      },\r\n      convertFriendProfileToUserProfile (friendProfile: FriendProfileDto): UserProfileDto {\r\n        var returnable = {\r\n          // Fields from CrmUserProfileDto\r\n          acceptMarketing: false, // Default value\r\n          city: friendProfile.city,\r\n          email: friendProfile.email,\r\n          firstName: friendProfile.firstName,\r\n          id: friendProfile.id.toString(), // Assuming id in FriendProfileDto is a number\r\n          lastName: friendProfile.lastName,\r\n          profileId: 0, // Default value\r\n          streetAddress: friendProfile.streetAddress,\r\n          volunteerOnline: false, // Default value\r\n\r\n          // Fields from UserProfileDto\r\n          actionGroups: [], // Default value\r\n          age: friendProfile.age,\r\n          areasOfInterest: [], // Default value\r\n          availabilityTimes: friendProfile.availabilityTimes,\r\n          contactedDate: undefined, // Default value\r\n          country: 'Suomi', // Default value\r\n          created: undefined, // Default value\r\n          eventAdmins: [], // Default value\r\n          friendInfo: friendProfile.friendInfo as FriendVolunteerWithFriendshipsDto, // Assuming type compatibility //FriendVolunteerDto in FriendProfileDto\r\n          involvedEventCategories: friendProfile.involvedEventCategories,\r\n          isNonIdent: friendProfile.isNonIdent,\r\n          isPublic: false, // Default value\r\n          lockoutEnabled: false, // Default value\r\n          motto: '', // Default value\r\n          nativeLanguage: friendProfile.nativeLanguage,\r\n          otherLanguages: friendProfile.otherLanguages,\r\n          personalSkills: [], // Default value\r\n          phoneNumber: friendProfile.phoneNumber,\r\n          portrait: '', // Default value\r\n          preferredContactMethods: undefined, // Default value\r\n          profileState: ProfileState.Active, // Default value, assuming ProfileState is an enum\r\n          sectionId: 0, // Default value\r\n          spokenLanguages: friendProfile.spokenLanguages,\r\n          standardGroups: [], // Default value\r\n          story: '', // Default value\r\n          trainedDate: friendProfile.trainedDate,\r\n          transportation: friendProfile.transportation,\r\n          travelTime: friendProfile.travelTime,\r\n          useWorkingZipCode: false, // Default value\r\n          workingZipCode: friendProfile.zipCode,\r\n          zipCode: friendProfile.zipCode,\r\n          codeOfEthicsAccepted: false, // Default value\r\n          dataProtectionAccepted: false // Default value\r\n\r\n        } as UserProfileDto\r\n        return returnable\r\n      },\r\n      setDefaultValues (payload: UserProfileDto) {\r\n        // default native language to the language set for the user if its not set\r\n        if (!payload.nativeLanguage || payload.nativeLanguage === '') {\r\n          payload.nativeLanguage = this.$store.state.language\r\n        }\r\n\r\n        // quick and dirty fix\r\n        if (!payload.travelTime || payload.travelTime === '') {\r\n          payload.travelTime = '60'\r\n        }\r\n      },\r\n      sectionName (id: number): string {\r\n        var self = this\r\n        return _.find(self.$store.state.sections, function (section) {\r\n          return section.id === id\r\n        }).name\r\n      },\r\n      async addFriendProfile (data: FriendProfileDto): Promise<void> {\r\n        if (!data) return\r\n\r\n        this.isSaving = true\r\n        var addUrl = ''\r\n\r\n        if (data.email) {\r\n          //we still need to grab the profile information and show it on the modal\r\n          var profileInfoUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.getvolunteerinfobyemail[0].replace('{emailaddress}', data.email)\r\n          try {\r\n            const resp = await this.$http.get(profileInfoUrl)\r\n\r\n            if (resp.data) {\r\n              this.userProfile = resp.data as UserProfileDto\r\n              this.showModal = true\r\n              this.localProfileId = this.userProfile.profileId\r\n              this.existingProfileSectionName = this.sectionName(resp.data.sectionId)\r\n            }\r\n            if (this.showModal) {\r\n              //showmodal is set to true when the email already exists.\r\n              //If so, we just return out of the function and let the user handle the situation\r\n              this.isSaving = false\r\n              return\r\n            }\r\n          } catch (error) {\r\n            console.log('error', error)\r\n            this.handleError(error)\r\n            this.isSaving = false\r\n            return\r\n          }\r\n\r\n          // first add a profile/user using data.email and continue the process normally, send password via email etc.\r\n          // somehow we need to convert FriendprofileDto to UserProfileDto\r\n          var registerUrl = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.registerwithfriendprofile[0]\r\n\r\n          var useProfileDto = this.convertFriendProfileToUserProfile(data)\r\n          this.setDefaultValues(useProfileDto)\r\n          var friendVolunteer = this.convertFriendProfileToVolunteer(data)\r\n\r\n          const payload = { payload1: useProfileDto, payload2: friendVolunteer }\r\n          const self = this\r\n\r\n          this.$http.post(`${registerUrl}?AddedByBroker=true`, payload).then(s => {\r\n            if (s.status === 200) {\r\n              this.isSaving = false\r\n              this.$router.push(`/friend/search/${this.groupId}/volunteer`)\r\n            } else {\r\n              console.log('register failed:', s)\r\n              this.handleError(s)\r\n            }\r\n          }, (err) => {\r\n            console.log('register failed:', err)\r\n            this.handleError(err)\r\n          })\r\n        } else {\r\n          addUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.addnonidentstandardfriendvolunteer[0]\r\n          this.$http.post(addUrl, data).then((result: any) => {\r\n            this.isSaving = false\r\n            this.$router.push(`/friend/search/${this.groupId}/volunteer`)\r\n          }, (err: Response | any) => {\r\n            this.isSaving = false\r\n            this.displayError(err)\r\n          })\r\n        }\r\n        this.isSaving = false\r\n      },\r\n      async addNewFriendProfile (data: FriendProfileDto): Promise<void> {\r\n        if (!data) return\r\n\r\n        data.friendInfo = this.convertDatesToUTC(data.friendInfo)\r\n\r\n        this.isSaving = true\r\n        var addUrl = ''\r\n        // first add a profile/user using data.email and continue the process normally, send password via email etc.\r\n        // somehow we need to convert FriendprofileDto to UserProfileDto\r\n        var registerUrl = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.brokervolunteeridentadd[0]\r\n\r\n        var friendVolunteer = this.convertFriendProfileToVolunteer(data)\r\n        friendVolunteer.profileId = this.localProfileId\r\n\r\n        const self = this\r\n\r\n        this.$http.post(`${registerUrl}`, friendVolunteer).then(s => {\r\n          if (s.status === 200) {\r\n            this.isSaving = false\r\n            this.$router.push(`/friend/search/${this.groupId}/volunteer`)\r\n          } else {\r\n            console.log('register failed:', s)\r\n            this.handleError(s)\r\n          }\r\n        }, (err) => {\r\n          console.log('register failed:', err)\r\n          this.handleError(err)\r\n        })\r\n\r\n        this.isSaving = false\r\n      },\r\n      convertFriendProfileToVolunteer (profile: FriendProfileDto): FriendVolunteerDto {\r\n        const volunteer: FriendVolunteerDto = {\r\n          id: profile.id,\r\n          friendVolunteerNetId: profile.friendInfo.friendVolunteerNetId,\r\n          friendVolunteerStandardId: profile.friendInfo.friendVolunteerStandardId,\r\n          gender: profile.friendInfo.gender,\r\n          hasHealthCareTraining: profile.friendInfo.hasHealthCareTraining,\r\n          healthCareTrainingFreetext: profile.friendInfo.healthCareTrainingFreetext,\r\n          otherLanguages: profile.otherLanguages,\r\n          phone: profile.phoneNumber,\r\n          profileId: profile.id,\r\n          hasNetProfile: profile.friendInfo.hasNetProfile,\r\n          hasStandardProfile: profile.friendInfo.hasStandardProfile,\r\n          netProfile: profile.friendInfo.netProfile,\r\n          standardProfile: profile.friendInfo.standardProfile\r\n        }\r\n        return volunteer\r\n      },\r\n      handleError: function (error) {\r\n        var rv = [] as Array<Array<string>>\r\n        if (error.body) {\r\n          // error.body.forEach(s => rv.push(['', this.lcFirst(s.code), '']))\r\n          if (error.body.ErrorCode === 101) {\r\n            // @ts-ignore cannot find mixins\r\n            rv.push(['', this.lcFirst(error.body.TranslationKey), ''])\r\n          } else {\r\n            console.log('handleError.errorCode not 101', error.body)\r\n            console.log('error: ', error)\r\n          }\r\n        }\r\n\r\n        console.log(error, rv)\r\n        // @ts-ignore\r\n        //this.$refs.currentStage.registerErrors = rv\r\n        this.focusOnErrors()\r\n      },\r\n      focusOnErrors (): void {\r\n        window.scrollTo({ top: 0, behavior: 'smooth' })\r\n      },\r\n      connectProfiles (): void {\r\n        //this is still todo\r\n        this.showModal = false\r\n        if (this.friendProfile) {\r\n          const data = this.friendProfile\r\n          // @ts-ignore\r\n          data.friendInfo.netProfile = null\r\n          this.addNewFriendProfile(data)\r\n        }\r\n      },\r\n      updateFriendProfile (data: FriendProfileDto): void {\r\n        if (!data) return\r\n\r\n        data.friendInfo = this.convertDatesToUTC(data.friendInfo)\r\n\r\n        this.isSaving = true\r\n        var updateUrl = ''\r\n        if (data.email && this.isIdentProfile) {\r\n          updateUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.updateidentstandardprofile[0]\r\n        } else {\r\n          updateUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.updatenonidentstandardfriendvolunteer[0]\r\n        }\r\n        this.$http.put(updateUrl, data).then((result: any) => {\r\n          this.isSaving = false\r\n          this.$router.push(`/friend/volunteerpreview/${this.groupId}/${this.profileId}`)\r\n        }, (err: Response | any) => {\r\n          this.isSaving = false\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      convertDatesToUTC (friendInfo: FriendVolunteerDto) : FriendVolunteerDto {\r\n        // convert dates to UTC and make sure they are corrected to the right date\r\n        if (friendInfo?.lastContacted) {\r\n          friendInfo.lastContacted = convertToUTC(friendInfo?.lastContacted)\r\n        }\r\n        if (friendInfo?.standardProfile?.volunteerInterviewed && friendInfo.standardProfile?.volunteerInterviewedOnDate) {\r\n          friendInfo.standardProfile.volunteerInterviewedOnDate = convertToUTC(friendInfo?.standardProfile.volunteerInterviewedOnDate)\r\n        }\r\n        if (friendInfo?.standardProfile?.onHoldDeadline) {\r\n          friendInfo.standardProfile.onHoldDeadline = convertToUTC(friendInfo?.standardProfile.onHoldDeadline)\r\n        }\r\n\r\n        return friendInfo\r\n      },\r\n      cancelModal (): void {\r\n        this.showModal = false\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (!err) return\r\n\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .profilenonidentstandardvolunteerform {\r\n    .feature-panel {\r\n      background-color: $brand-white;\r\n      margin-bottom: 30px;\r\n      padding-top: 15px;\r\n\r\n      &.buttons {\r\n        margin-top: 30px;\r\n        padding-top: 15px;\r\n        padding-bottom: 15px;\r\n        .cancel {\r\n          text-align: left;\r\n        }\r\n        .save {\r\n          text-align: right;\r\n        }\r\n      }\r\n    }\r\n\r\n    .profilehead {\r\n      margin-top: 25px;\r\n      margin-bottom: 0;\r\n      padding-top: 10px;\r\n      padding-bottom: 10px;\r\n      background-color: $brand-white;\r\n    }\r\n\r\n    .subheader {\r\n      margin-top: 15px;\r\n      margin-bottom: 15px;\r\n      display: block;\r\n    }\r\n\r\n    .profile-button {\r\n      margin-top: 20px;\r\n      display: flex;\r\n      justify-content: center;\r\n    }\r\n\r\n    .fa-exclamation-triangle {\r\n      color: $brand-red;\r\n    }\r\n  }\r\n\r\n  @media (min-width: 992px) {\r\n  .modal .modal-huge {\r\n     max-width: 90% !important;\r\n     width: 90% !important;;\r\n     max-height: 90% !important;\r\n     height: 90% !important;\r\n   }\r\n   .modal-body {\r\n    font-weight: none !important;\r\n   }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileNonIdentStandardVolunteerForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileNonIdentStandardVolunteerForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ProfileNonIdentStandardVolunteerForm.vue?vue&type=template&id=2f4b584b&scoped=true\"\nimport script from \"./ProfileNonIdentStandardVolunteerForm.vue?vue&type=script&lang=ts\"\nexport * from \"./ProfileNonIdentStandardVolunteerForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ProfileNonIdentStandardVolunteerForm.vue?vue&type=style&index=0&id=2f4b584b&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2f4b584b\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"profilenonidentnetvolunteerform\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.addEditTitle))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('backbar')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center py-2\"},[_c('validation',{ref:\"validationtarget\",attrs:{\"id\":'validationTarget' + _vm._uid,\"validation-errors\":_vm.validationErrors,\"exclude-field-reference\":\"\",\"include-title\":\"\"}})],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12 col-sm-5 col-md-4\"},[(_vm.friendProfile)?_c('forminput',{attrs:{\"hint\":_vm.$t('volunteerForm.phone'),\"is-valid\":true,\"name\":\"volunteerForm.phone\",\"disabled\":!_vm.isNonIdent,\"tooltip\":_vm.$t('volunteerForm.disabledPhone')},model:{value:(_vm.friendProfile.phoneNumber),callback:function ($$v) {_vm.$set(_vm.friendProfile, \"phoneNumber\", $$v)},expression:\"friendProfile.phoneNumber\"}}):_vm._e()],1),_c('div',{staticClass:\"col-12 col-sm-7 col-md-4\"},[(_vm.friendProfile)?_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|email'),expression:\"'required|email'\"}],attrs:{\"hint\":_vm.$t('profile.email'),\"is-valid\":!_vm.errors.has('volunteerForm.email'),\"name\":\"volunteerForm.email\",\"required\":true},model:{value:(_vm.friendProfile.email),callback:function ($$v) {_vm.$set(_vm.friendProfile, \"email\", $$v)},expression:\"friendProfile.email\"}}):_vm._e()],1)]),(_vm.friendProfile)?_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile)?_c('ProfileInfoForm',{attrs:{\"profile\":_vm.friendProfile,\"is-net-profile\":true},on:{\"input\":_vm.onFriendProfileChanged}}):_vm._e()],1)]):_vm._e(),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile)?_c('VolunteerProfileCommon',{attrs:{\"volunteer\":_vm.friendProfile.friendInfo},on:{\"input\":_vm.onVolunteerChanged}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile)?_c('VolunteerProfileNet',{attrs:{\"volunteer\":_vm.friendProfile.friendInfo.netProfile},on:{\"input\":_vm.onVolunteerNetProfileChanged}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12 sectionheader\"},[_c('h3',[_vm._v(_vm._s(_vm.$t(\"nonIdentProfileForm.applicationState\")))])]),_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile)?_c('InterviewForm',{attrs:{\"value\":_vm.computedInterviewData,\"disabled\":_vm.isStateChangeDisabled},on:{\"input\":_vm.onInterviewDataChanged}}):_vm._e()],1),_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile)?_c('OnHoldForm',{attrs:{\"value\":_vm.computedOnHoldData,\"disabled\":_vm.isStateChangeDisabled},on:{\"input\":_vm.onOnHoldDataChanged}}):_vm._e()],1),_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile?.friendInfo)?_c('LastContactedForm',{attrs:{\"value\":_vm.friendProfile?.friendInfo?.lastContacted},on:{\"input\":_vm.onlastContactedChanged}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[(_vm.friendProfile)?_c('textareainput',{attrs:{\"title\":_vm.$t('volunteerForm.privateNotes'),\"rows\":6},model:{value:(_vm.friendProfile.friendInfo.netProfile.privateNotes),callback:function ($$v) {_vm.$set(_vm.friendProfile.friendInfo.netProfile, \"privateNotes\", $$v)},expression:\"friendProfile.friendInfo.netProfile.privateNotes\"}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel buttons\"},[_c('div',{staticClass:\"col-6 cancel\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.cancel'),\"click-event\":\"onCancel\"},on:{\"onCancel\":_vm.cancel}})],1),_c('div',{staticClass:\"col-6 save\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"disabled\":_vm.isSaving,\"title\":_vm.$t('volunteerForm.save'),\"click-event\":\"onSave\"},on:{\"onSave\":_vm.save}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"container\">\r\n    <div class=\"profilenonidentnetvolunteerform\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <h2>{{ addEditTitle }}</h2>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <backbar />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-center py-2\">\r\n          <validation :id=\"'validationTarget' + _uid\"\r\n                      ref=\"validationtarget\"\r\n                      :validation-errors=\"validationErrors\"\r\n                      exclude-field-reference\r\n                      include-title\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12 col-sm-5 col-md-4\">\r\n          <forminput\r\n            v-if=\"friendProfile\"\r\n            v-model=\"friendProfile.phoneNumber\"\r\n            :hint=\"$t('volunteerForm.phone')\"\r\n            :is-valid=\"true\"\r\n            name=\"volunteerForm.phone\"\r\n            :disabled=\"!isNonIdent\"\r\n            :tooltip=\"$t('volunteerForm.disabledPhone')\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 col-sm-7 col-md-4\">\r\n          <forminput\r\n            v-if=\"friendProfile\"\r\n            v-model=\"friendProfile.email\"\r\n            v-validate=\"'required|email'\"\r\n            :hint=\"$t('profile.email')\"\r\n            :is-valid=\"!errors.has('volunteerForm.email')\"\r\n            name=\"volunteerForm.email\"\r\n            :required=\"true\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"friendProfile\" class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <ProfileInfoForm\r\n            v-if=\"friendProfile\"\r\n            :profile=\"friendProfile\"\r\n            :is-net-profile=\"true\"\r\n            @input=\"onFriendProfileChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <VolunteerProfileCommon\r\n            v-if=\"friendProfile\"\r\n            :volunteer=\"friendProfile.friendInfo\"\r\n            @input=\"onVolunteerChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <VolunteerProfileNet\r\n            v-if=\"friendProfile\"\r\n            :volunteer=\"friendProfile.friendInfo.netProfile\"\r\n            @input=\"onVolunteerNetProfileChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12 sectionheader\">\r\n          <h3>{{ $t(\"nonIdentProfileForm.applicationState\") }}</h3>\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <InterviewForm\r\n            v-if=\"friendProfile\"\r\n            :value=\"computedInterviewData\"\r\n            :disabled=\"isStateChangeDisabled\"\r\n            @input=\"onInterviewDataChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <OnHoldForm\r\n            v-if=\"friendProfile\"\r\n            :value=\"computedOnHoldData\"\r\n            :disabled=\"isStateChangeDisabled\"\r\n            @input=\"onOnHoldDataChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <LastContactedForm\r\n            v-if=\"friendProfile?.friendInfo\"\r\n            :value=\"friendProfile?.friendInfo?.lastContacted\"\r\n            @input=\"onlastContactedChanged\"\r\n          />\r\n        </div>\r\n\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <textareainput\r\n            v-if=\"friendProfile\"\r\n            v-model=\"friendProfile.friendInfo.netProfile.privateNotes\"\r\n            :title=\"$t('volunteerForm.privateNotes')\"\r\n            :rows=\"6\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel buttons\">\r\n        <div class=\"col-6 cancel\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.cancel')\"\r\n                     click-event=\"onCancel\"\r\n                     @onCancel=\"cancel\"\r\n          />\r\n        </div>\r\n        <div class=\"col-6 save\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :disabled=\"isSaving\"\r\n                     :title=\"$t('volunteerForm.save')\"\r\n                     click-event=\"onSave\"\r\n                     @onSave=\"save\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import SprButton from '@/components/SPRButton.vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import VolunteerProfileCommon from '@/components/friends/VolunteerProfileCommon.vue'\r\n  import ProfileInfoForm from '@/components/friends/ProfileInfoForm.vue'\r\n  import VolunteerProfileNet from '@/components/friends/VolunteerProfileNet.vue'\r\n  import InterviewForm from '@/components/friends/InterviewForm.vue'\r\n  import OnHoldForm from '@/components/friends/OnHoldForm.vue'\r\n  import LastContactedForm from '@/components/friends/LastContactedForm.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import backbar from '../BackBar.vue'\r\n  import validation from '../SPRValidationError.vue'\r\n  import Alerts from '@/mixins/alerts.js'\r\n  import { ErrorBag, FieldError } from 'vee-validate'\r\n  import { FriendProfileDto, FriendVolunteerDto, FriendVolunteerProfileNetDto, CustomerState, PreferredGenders, GetFriendProfileByFriendVolunteerIdCriteria, FriendshipTypes, NetFriendshipTypes } from '@/types/index'\r\n  import { InterviewData, OnHoldData } from '@/types/custom'\r\n  import { convertToUTC } from '@/helpers/datehelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    friendProfile: FriendProfileDto | undefined,\r\n    isSaving: boolean\r\n  }\r\n\r\n  // This is the component for managing adding and updating an ident users Friend profile.\r\n  export default Vue.extend({\r\n    name: 'ProfileNonIdentNetVolunteerForm',\r\n    components: { validation, backbar, ProfileInfoForm, VolunteerProfileCommon, VolunteerProfileNet, InterviewForm, OnHoldForm, SprButton, textareainput, forminput, LastContactedForm },\r\n    mixins: [Alerts],\r\n    props: {\r\n      profileId: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      groupId: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        friendProfile: undefined,\r\n        isSaving: false\r\n      }\r\n    },\r\n    computed: {\r\n      isAdd (): boolean {\r\n        return Boolean(!this.profileId)\r\n      },\r\n      isEdit (): boolean {\r\n        return Boolean(this.profileId)\r\n      },\r\n      addEditTitle (): string | LocaleMessage {\r\n        return this.isEdit\r\n          ? this.$t('volunteerForm.updateTitle')\r\n          : this.$t('volunteerForm.addTitle')\r\n      },\r\n      validationErrors (): Array<Array<string>> {\r\n        var errs: ErrorBag = this.errors ? this.errors : []\r\n        if (errs.items.length) {\r\n          return errs.items.map((err: FieldError) => {\r\n            return [`error_${err.field}`, err.rule ? err.rule : '', err.msg ? err.msg : '']\r\n          })\r\n        }\r\n        return []\r\n      },\r\n      computedInterviewData (): InterviewData | null {\r\n        if (!this.friendProfile?.friendInfo?.netProfile) {\r\n          return {\r\n            interviewed: false,\r\n            interviewedBy: '',\r\n            interviewedDate: undefined\r\n          } as InterviewData\r\n        }\r\n\r\n        var defaultDate = new Date() // must be in UTC date format\r\n        const p = this.friendProfile.friendInfo.netProfile\r\n        \r\n        return {\r\n          interviewed: p.volunteerInterviewed,\r\n          interviewedBy: p.volunteerInterviewedBy,\r\n          interviewedDate: p.volunteerInterviewedOnDate || defaultDate\r\n        } as InterviewData\r\n      },\r\n      computedOnHoldData (): OnHoldData | null {\r\n        if (!this.friendProfile?.friendInfo?.netProfile) return null\r\n\r\n        const p = this.friendProfile.friendInfo.netProfile\r\n        return {\r\n            onHold: Boolean(p.onHoldDeadline),\r\n            onHoldDeadline: p.onHoldDeadline,\r\n            onHoldDetails: p.onHoldDetails\r\n          } as OnHoldData\r\n      },\r\n      isStateChangeDisabled (): boolean {\r\n        if (!this.friendProfile?.friendInfo?.netProfile) return true\r\n        /// Cannot change the state if the customer has friendships\r\n        return this.friendProfile?.friendInfo?.netProfile?.state === CustomerState.PendingFriend ||\r\n          this.friendProfile?.friendInfo?.netProfile?.state === CustomerState.ActiveFriendship ||\r\n          Boolean(this.friendProfile?.friendInfo?.netProfile?.friendships?.length)\r\n      }\r\n    },\r\n    mounted (): void {\r\n      if (this.isEdit) {\r\n        var criteria: GetFriendProfileByFriendVolunteerIdCriteria = {\r\n          friendManagementGroupId: this.groupId,\r\n          friendVolunteerId: this.profileId,\r\n          includeFriendships: false,\r\n          includeFriendPools: false\r\n        }\r\n        var url = (this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteergetnetprofilebyid[0])\r\n        this.$http.post(url, criteria).then(s => {\r\n          if (s.ok) {\r\n            // @ts-ignore\r\n            this.friendProfile = s.body as FriendProfileDto\r\n            return\r\n          }\r\n          this.failLoad()\r\n        }, f => this.failLoad())\r\n      } else {\r\n        this.friendProfile = {\r\n          age: new Date(),\r\n          availabilityTimes: [],\r\n          city: '',\r\n          country: '',\r\n          email: '',\r\n          firstName: '',\r\n          hasFriendInfo: true,\r\n          otherLanguages: '',\r\n          involvedEventCategories: 0,\r\n          friendInfo: {\r\n            city: '',\r\n            desiredAge: 0,\r\n            friendManagementGroupIds: [],\r\n            friendshipTypes: [],\r\n            friendVolunteerNetId: undefined,\r\n            friendVolunteerStandardId: undefined,\r\n            gender: 1,\r\n            hasHealthCareTraining: false,\r\n            hasNetProfile: false,\r\n            hasStandardProfile: false,\r\n            healthCareTrainingFreetext: '',\r\n            id: 0,\r\n            netProfile: {\r\n              availabilityDetails: '',\r\n              availabilityFrequence: 0,\r\n              availabilityTimes: 0,\r\n              customerTypes: 0,\r\n              friendManagementGroupId: this.groupId,\r\n              friendships: [],\r\n              friendshipTypes: (NetFriendshipTypes.OneToOne),\r\n              friendPools: [],\r\n              id: 0,\r\n              interests: 0,\r\n              lastFriendshipEndDate: new Date(),\r\n              lastContacted: undefined,\r\n              multipleCustomers: false,\r\n              onHold: false,\r\n              onHoldDeadline: undefined,\r\n              onHoldDetails: '',\r\n              otherInterests: '',\r\n              preferredAges: 0,\r\n              preferredGenders: (PreferredGenders.Other | PreferredGenders.Male | PreferredGenders.Female),\r\n              shortDescription: '',\r\n              startedPending: new Date(),\r\n              state: CustomerState.PendingApproval,\r\n              volunteerInterviewed: false,\r\n              volunteerInterviewedBy: '',\r\n              volunteerInterviewedDate: '', // this field should be ignored. it is not set anywhere. also not in the backend\r\n              volunteerInterviewedOnDate: undefined,\r\n              econtactDiscord: '',\r\n              econtactEmail: '',\r\n              econtactFreetext: '',\r\n              econtactInstagram: '',\r\n              econtactKik: '',\r\n              econtactSkype: '',\r\n              econtactTelegram: '',\r\n              privateNotes: ''\r\n            },\r\n            otherLanguages: '',\r\n            phone: '',\r\n            postalCode: '',\r\n            profileId: 0,\r\n            standardProfile: {\r\n              availabilityDetails: '',\r\n              availabilityFrequence: 0,\r\n              customerTypes: 0,\r\n              friendManagementGroupId: 0,\r\n              friendships: [],\r\n              friendshipTypes: (FriendshipTypes.OneToOne),\r\n              friendPools: [],\r\n              id: 0,\r\n              interests: 0,\r\n              lastFriendshipEndDate: new Date(),\r\n              lastContacted: undefined,\r\n              multipleCustomers: false,\r\n              onHold: false,\r\n              onHoldDeadline: undefined,\r\n              onHoldDetails: '',\r\n              otherInterests: '',\r\n              preferredAges: 0,\r\n              preferredGenders: (PreferredGenders.Other | PreferredGenders.Male | PreferredGenders.Female),\r\n              shortDescription: '',\r\n              startedPending: new Date(),\r\n              state: CustomerState.PendingApproval,\r\n              volunteerInterviewed: false,\r\n              volunteerInterviewedBy: '',\r\n              volunteerInterviewedDate: '', // this field should be ignored. it is not set anywhere. also not in the backend\r\n              volunteerInterviewedOnDate: undefined,\r\n              availabilityTimes: 0,\r\n              hasAlternativeAddress: false,\r\n              alternativeCity: '',\r\n              alternativeStreet: '',\r\n              alternativeZipCode: '',\r\n              privateNotes: ''\r\n          },\r\n            streetAddress: ''\r\n          },\r\n          id: 0,\r\n          isNonIdent: true,\r\n          lastName: '',\r\n          nativeLanguage: 'fi',\r\n          phoneNumber: '',\r\n          spokenLanguages: [],\r\n          streetAddress: '',\r\n          transportation: [],\r\n          travelTime: '',\r\n          zipCode: ''\r\n        } as FriendProfileDto\r\n      }\r\n      // else its an add\r\n    },\r\n    provide (): Record<string, any> {\r\n      return {\r\n        $validator: this.$validator // allow child components to have validator injected\r\n      }\r\n    },\r\n    methods: {\r\n      failLoad (): void {\r\n        this.displayError(this.$t('common.fetchFailed'))\r\n      },\r\n      onFriendProfileChanged (newFriendProfile: FriendProfileDto): void {\r\n        this.friendProfile = newFriendProfile\r\n      },\r\n      onVolunteerChanged (newVolunteer: FriendVolunteerDto): void {\r\n        if (!this.friendProfile) return\r\n\r\n        this.friendProfile.friendInfo = newVolunteer\r\n      },\r\n      onVolunteerNetProfileChanged (newProfile: FriendVolunteerProfileNetDto): void {\r\n        if (!this.friendProfile) return\r\n\r\n        this.friendProfile.friendInfo.netProfile = newProfile\r\n      },\r\n      onInterviewDataChanged (newData: InterviewData): void {\r\n        if (!this.friendProfile) return\r\n        this.friendProfile.friendInfo.netProfile.volunteerInterviewed = newData.interviewed\r\n        this.friendProfile.friendInfo.netProfile.volunteerInterviewedBy = newData.interviewedBy\r\n        this.friendProfile.friendInfo.netProfile.volunteerInterviewedOnDate = newData.interviewedDate \r\n      },\r\n      onOnHoldDataChanged (newData: OnHoldData): void {\r\n        if (!this.friendProfile) return\r\n\r\n        this.friendProfile.friendInfo.netProfile.onHoldDeadline = newData.onHold ? newData.onHoldDeadline : undefined\r\n        this.friendProfile.friendInfo.netProfile.onHoldDetails = newData.onHold ? newData.onHoldDetails : ''\r\n      },\r\n      onlastContactedChanged (hasContactDate: boolean, lastContacted: Date): void {\r\n        if (!this.friendProfile?.friendInfo) return\r\n\r\n        this.friendProfile.friendInfo.lastContacted = hasContactDate ? lastContacted : undefined\r\n      },\r\n      cancel (): void {\r\n        const url = this.isEdit\r\n          ? `/friend/volunteerpreview/${this.groupId}/${this.profileId}`\r\n          : `/friend/search/${this.groupId}/volunteer`\r\n        this.$router.push(url)\r\n      },\r\n      save (): void {\r\n        if (this.friendProfile?.friendInfo?.netProfile?.preferredAges === 0) {\r\n          this.friendProfile.friendInfo.netProfile.preferredAges = 1\r\n          this.$nextTick(() => {\r\n            if (!this.friendProfile) return\r\n            this.friendProfile.friendInfo.netProfile.preferredAges = 0\r\n            this.validateAndSave()\r\n          })\r\n        } else {\r\n          this.validateAndSave()\r\n        }\r\n      },\r\n      validateAndSave (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          // check any child controls have not added errors\r\n          if (!result || (this.validationErrors && this.validationErrors.length)) {\r\n            var target = this.$refs['validationtarget']\r\n            if (target) {\r\n              window.scrollTo({\r\n                // @ts-ignore\r\n                top: target.$el.parentElement.clientHeight,\r\n                left: 0,\r\n                behavior: 'smooth'\r\n              })\r\n            }\r\n            return\r\n          }\r\n          if (this.friendProfile) {\r\n            const data = this.friendProfile\r\n            // @ts-ignore\r\n            data.friendInfo.standardProfile = null\r\n            if (this.isAdd) {\r\n              this.addFriendProfile(data)\r\n            } else {\r\n              this.updateFriendProfile(data)\r\n            }\r\n          }\r\n        })\r\n      },\r\n      addFriendProfile (data: FriendProfileDto): void {\r\n        if (!data) return\r\n\r\n        data.friendInfo = this.convertDatesToUTC(data.friendInfo)\r\n\r\n        this.isSaving = true\r\n        const addUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.addnonidentnetfriendvolunteer[0]\r\n        this.$http.post(addUrl, data).then((result: any) => {\r\n          this.isSaving = false\r\n          this.$router.push(`/friend/search/${this.groupId}/volunteer`)\r\n        }, (err: Response | any) => {\r\n          this.isSaving = false\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      updateFriendProfile (data: FriendProfileDto): void {\r\n        if (!data) return\r\n\r\n        data.friendInfo = this.convertDatesToUTC(data.friendInfo)\r\n\r\n        this.isSaving = true\r\n        const updateUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.updatenonidentnetfriendvolunteer[0]\r\n        this.$http.put(updateUrl, data).then((result: any) => {\r\n          this.isSaving = false\r\n          this.$router.push(`/friend/volunteerpreview/${this.groupId}/${this.profileId}`)\r\n        }, (err: Response | any) => {\r\n          this.isSaving = false\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      convertDatesToUTC (friendInfo: FriendVolunteerDto) : FriendVolunteerDto {\r\n        // convert dates to UTC and make sure they are corrected to the right date\r\n        if (friendInfo?.lastContacted) {\r\n          friendInfo.lastContacted = convertToUTC(friendInfo.lastContacted)\r\n        }\r\n        if (friendInfo?.netProfile?.volunteerInterviewed && friendInfo?.netProfile?.volunteerInterviewedOnDate) {\r\n          friendInfo.netProfile.volunteerInterviewedOnDate = convertToUTC(friendInfo.netProfile?.volunteerInterviewedOnDate)\r\n        }\r\n        if (friendInfo?.netProfile?.onHoldDeadline) {\r\n          friendInfo.netProfile.onHoldDeadline = convertToUTC(friendInfo.netProfile?.onHoldDeadline)\r\n        }\r\n        return friendInfo\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .profilenonidentnetvolunteerform {\r\n    .feature-panel {\r\n      background-color: $brand-white;\r\n      margin-bottom: 30px;\r\n      padding-top: 15px;\r\n\r\n      &.buttons {\r\n        margin-top: 30px;\r\n        padding-top: 15px;\r\n        padding-bottom: 15px;\r\n        .cancel {\r\n          text-align: left;\r\n        }\r\n        .save {\r\n          text-align: right;\r\n        }\r\n      }\r\n    }\r\n\r\n    .profilehead {\r\n      margin-top: 25px;\r\n      margin-bottom: 0;\r\n      padding-top: 10px;\r\n      padding-bottom: 10px;\r\n      background-color: $brand-white;\r\n    }\r\n\r\n    .subheader {\r\n      margin-top: 15px;\r\n      margin-bottom: 15px;\r\n      display: block;\r\n    }\r\n\r\n    .profile-button {\r\n      margin-top: 20px;\r\n      display: flex;\r\n      justify-content: center;\r\n    }\r\n\r\n    .fa-exclamation-triangle {\r\n      color: $brand-red;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileNonIdentNetVolunteerForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileNonIdentNetVolunteerForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ProfileNonIdentNetVolunteerForm.vue?vue&type=template&id=3567db7f\"\nimport script from \"./ProfileNonIdentNetVolunteerForm.vue?vue&type=script&lang=ts\"\nexport * from \"./ProfileNonIdentNetVolunteerForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ProfileNonIdentNetVolunteerForm.vue?vue&type=style&index=0&id=3567db7f&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"customerstandardform\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('backbar')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.addEditTitle))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center py-2\"},[_c('validation',{ref:\"validationtarget\",attrs:{\"id\":'validationTarget' + _vm._uid,\"validation-errors\":_vm.validationErrors,\"exclude-field-reference\":\"\",\"include-title\":\"\"}})],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[(_vm.customer)?_c('ApprovalForm',{attrs:{\"value\":_vm.computedApprovalData},on:{\"input\":_vm.onApprovalDataChanged}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[(_vm.customer)?_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('email'),expression:\"'email'\"}],attrs:{\"hint\":_vm.$t('customerForm.email'),\"is-valid\":!_vm.errors.has('customerForm.email'),\"name\":\"customerForm.email\"},model:{value:(_vm.customer.email),callback:function ($$v) {_vm.$set(_vm.customer, \"email\", $$v)},expression:\"customer.email\"}}):_vm._e()],1),_c('div',{staticClass:\"col-12 feature-panel\"},[(_vm.customer)?_c('CustomerCommon',{attrs:{\"customer\":_vm.customer},on:{\"input\":_vm.onCustomerCommonChanged}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.applicationInformation')))])]),_c('div',{staticClass:\"col-12\"},[(_vm.customer)?_c('InterviewForm',{attrs:{\"value\":_vm.computedInterviewData,\"disabled\":_vm.isStateChangeDisabled,\"translation-key\":'customerForm.customerInterviewed'},on:{\"input\":_vm.onInterviewDataChanged}}):_vm._e()],1),_c('div',{staticClass:\"col-12\"},[(_vm.customer)?_c('OnHoldForm',{attrs:{\"value\":_vm.computedOnHoldData,\"disabled\":_vm.isStateChangeDisabled},on:{\"input\":_vm.onOnHoldDataChanged}}):_vm._e()],1),_c('div',{staticClass:\"col-12\"},[(_vm.customer)?_c('SuitabilityForm',{attrs:{\"value\":_vm.computedSuitabilityData},on:{\"input\":_vm.onSuitabilityDataChanged}}):_vm._e()],1),_c('div',{staticClass:\"col-12\"},[(_vm.customer)?_c('LastContactedForm',{attrs:{\"value\":_vm.customer.lastContacted},on:{\"input\":_vm.onlastContactedChanged}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[(_vm.customer)?_c('textareainput',{attrs:{\"title\":_vm.$t('volunteerForm.privateNotes'),\"rows\":6},model:{value:(_vm.customer.privateNotes),callback:function ($$v) {_vm.$set(_vm.customer, \"privateNotes\", $$v)},expression:\"customer.privateNotes\"}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel buttons\"},[_c('div',{staticClass:\"col-6 cancel\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.cancel'),\"click-event\":\"onCancel\"},on:{\"onCancel\":_vm.cancel}})],1),_c('div',{staticClass:\"col-6 save\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"disabled\":_vm.isSaving,\"title\":_vm.$t('volunteerForm.save'),\"click-event\":\"onSave\"},on:{\"onSave\":_vm.save}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"customercommon\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.personalInformation')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('sprdropdownnumberkey',{attrs:{\"title\":_vm.$t('customerForm.gender'),\"items\":_vm.genders,\"is-valid\":true},model:{value:(_vm.customer.gender),callback:function ($$v) {_vm.$set(_vm.customer, \"gender\", $$v)},expression:\"customer.gender\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.firstname'),\"is-valid\":!_vm.errors.has('customerForm.firstname'),\"name\":\"customerForm.firstname\",\"required\":true},model:{value:(_vm.customer.firstName),callback:function ($$v) {_vm.$set(_vm.customer, \"firstName\", $$v)},expression:\"customer.firstName\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.lastname'),\"is-valid\":!_vm.errors.has('customerForm.lastname'),\"name\":\"customerForm.lastname\",\"required\":true},model:{value:(_vm.customer.lastName),callback:function ($$v) {_vm.$set(_vm.customer, \"lastName\", $$v)},expression:\"customer.lastName\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.street'),\"is-valid\":!_vm.errors.has('customerForm.streetAddress'),\"name\":\"customerForm.streetAddress\",\"required\":true},model:{value:(_vm.customer.streetAddress),callback:function ($$v) {_vm.$set(_vm.customer, \"streetAddress\", $$v)},expression:\"customer.streetAddress\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|regex:^[0-9]{5}$'),expression:\"'required|regex:^[0-9]{5}$'\"}],attrs:{\"hint\":_vm.$t('customerForm.zipCode'),\"is-valid\":!_vm.errors.has('customerForm.zipCode'),\"name\":\"customerForm.zipCode\",\"required\":true},model:{value:(_vm.customer.zipCode),callback:function ($$v) {_vm.$set(_vm.customer, \"zipCode\", $$v)},expression:\"customer.zipCode\"}})],1),_c('div',{staticClass:\"col-12 col-sm-8\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.city'),\"is-valid\":!_vm.errors.has('customerForm.city'),\"name\":\"customerForm.city\",\"required\":true},model:{value:(_vm.customer.city),callback:function ($$v) {_vm.$set(_vm.customer, \"city\", $$v)},expression:\"customer.city\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('customerForm.homePhone'),\"is-valid\":!_vm.errors.has('customerForm.homePhone'),\"name\":\"customerForm.homePhone\",\"required\":true},model:{value:(_vm.customer.homePhone),callback:function ($$v) {_vm.$set(_vm.customer, \"homePhone\", $$v)},expression:\"customer.homePhone\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.gSMPhone'),\"is-valid\":true,\"name\":\"customerForm.gsmPhone\"},model:{value:(_vm.customer.gsmPhone),callback:function ($$v) {_vm.$set(_vm.customer, \"gsmPhone\", $$v)},expression:\"customer.gsmPhone\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('div',{staticClass:\"datepicker\"},[_c('simpledate',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.birthdateValidation),expression:\"birthdateValidation\"}],attrs:{\"value\":_vm.birthDateDate,\"title\":_vm.$t('customerForm.birthDate'),\"required\":true,\"name\":\"customerForm.birthDate\",\"is-valid\":!_vm.errors.has('customerForm.birthDate')},on:{\"input\":_vm.onBirthDateSelected}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('dropdowninput',{attrs:{\"title\":_vm.$t('customerForm.nativeLanguage'),\"items\":_vm.nativeLanguageOptions,\"is-valid\":true},model:{value:(_vm.customer.nativeLanguage),callback:function ($$v) {_vm.$set(_vm.customer, \"nativeLanguage\", $$v)},expression:\"customer.nativeLanguage\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"cap-label brand-red px-3 mb-2 d-inline-block\"},[_vm._v(\" \"+_vm._s(_vm.$t('nonIdentProfileForm.languageSpoken'))+\" \")]),_c('objectcheckboxlist',{attrs:{\"value\":_vm.customerLanguages,\"list\":_vm.customerLanguageOptions,\"rows\":2},on:{\"input\":_vm.onCustomerLanguagesChanged}})],1),_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.otherLanguages'),\"name\":\"customerForm.otherLanguages\",\"is-valid\":true},model:{value:(_vm.customer.otherLanguages),callback:function ($$v) {_vm.$set(_vm.customer, \"otherLanguages\", $$v)},expression:\"customer.otherLanguages\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('customerForm.customerType')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxbitmasklist',{attrs:{\"list\":_vm.useCustomerTypes,\"rows\":2},model:{value:(_vm.customer.customerTypes),callback:function ($$v) {_vm.$set(_vm.customer, \"customerTypes\", $$v)},expression:\"customer.customerTypes\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.customerTypeOtherInfo'),\"is-valid\":true},model:{value:(_vm.customer.customerTypeOtherInfo),callback:function ($$v) {_vm.$set(_vm.customer, \"customerTypeOtherInfo\", $$v)},expression:\"customer.customerTypeOtherInfo\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('customerForm.customerInterests')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxbitmasklist',{attrs:{\"list\":_vm.customerInterests,\"rows\":3},model:{value:(_vm.customer.interests),callback:function ($$v) {_vm.$set(_vm.customer, \"interests\", $$v)},expression:\"customer.interests\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.customerInterestsFreeText'),\"name\":\"customerForm.interestFreeText\",\"is-valid\":true},model:{value:(_vm.customer.interestOther),callback:function ($$v) {_vm.$set(_vm.customer, \"interestOther\", $$v)},expression:\"customer.interestOther\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.friendWish')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('customerForm.multipleVolunteers'),\"aria-label\":_vm.$t('customerForm.multipleVolunteers')},model:{value:(_vm.customer.multipleVolunteers),callback:function ($$v) {_vm.$set(_vm.customer, \"multipleVolunteers\", $$v)},expression:\"customer.multipleVolunteers\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-6\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.genderPreference'))+\"*\")]),_c('checkboxbitmasklist',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('option-selected'),expression:\"'option-selected'\"}],attrs:{\"list\":_vm.genders,\"rows\":1,\"name\":\"preferredGenderRequired\",\"is-valid\":!_vm.errors.has('preferredGenderRequired')},model:{value:(_vm.customer.preferredGenders),callback:function ($$v) {_vm.$set(_vm.customer, \"preferredGenders\", $$v)},expression:\"customer.preferredGenders\"}}),(_vm.errors.has('preferredGenderNotSelected'))?_c('span',{staticClass:\"error-message\"},[_vm._v(_vm._s(_vm.$t('validation.preferredGenderRequired')))]):_c('span',{staticClass:\"error-message\"},[_vm._v(\" \")])],1),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.desiredAge'))+\"*\")]),_c('checkboxbitmasklist',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('option-selected'),expression:\"'option-selected'\"}],attrs:{\"list\":_vm.preferredAge,\"rows\":1,\"name\":\"ageGroupRequired\",\"is-valid\":!_vm.errors.has('ageGroupRequired')},model:{value:(_vm.customer.preferredAges),callback:function ($$v) {_vm.$set(_vm.customer, \"preferredAges\", $$v)},expression:\"customer.preferredAges\"}}),(_vm.errors.has('ageGroupNotSelected'))?_c('span',{staticClass:\"error-message\"},[_vm._v(_vm._s(_vm.$t('validation.ageGroupNotSelected')))]):_c('span',{staticClass:\"error-message\"},[_vm._v(\" \")])],1)]),(!_vm.isNet)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('customerForm.availabilityTimes')))])])]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[(!_vm.isNet)?_c('checkboxbitmasklist',{attrs:{\"list\":_vm.availabilityTimes,\"rows\":3},model:{value:(_vm.customer.availabilityTimes),callback:function ($$v) {_vm.$set(_vm.customer, \"availabilityTimes\", $$v)},expression:\"customer.availabilityTimes\"}}):_vm._e()],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('sprdropdownnumberkey',{attrs:{\"title\":_vm.$t('customerForm.availabilityFrequency'),\"items\":_vm.availabilityFrequency,\"is-valid\":true},model:{value:(_vm.customer.availabilityFrequency),callback:function ($$v) {_vm.$set(_vm.customer, \"availabilityFrequency\", $$v)},expression:\"customer.availabilityFrequency\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('customerForm.description'),\"rows\":3},model:{value:(_vm.customer.description),callback:function ($$v) {_vm.$set(_vm.customer, \"description\", $$v)},expression:\"customer.description\"}})],1)]),_c('div',{staticClass:\"row contact-info\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.contactInformation')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.contactFirstname'),\"is-valid\":true,\"name\":\"customerForm.contactFirstName\"},model:{value:(_vm.customer.contactFirstName),callback:function ($$v) {_vm.$set(_vm.customer, \"contactFirstName\", $$v)},expression:\"customer.contactFirstName\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.contactLastname'),\"is-valid\":true,\"name\":\"customerForm.contactLastName\"},model:{value:(_vm.customer.contactLastName),callback:function ($$v) {_vm.$set(_vm.customer, \"contactLastName\", $$v)},expression:\"customer.contactLastName\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.contactStreet'),\"is-valid\":true,\"name\":\"customerForm.contactStreetAddress\"},model:{value:(_vm.customer.contactStreetAddress),callback:function ($$v) {_vm.$set(_vm.customer, \"contactStreetAddress\", $$v)},expression:\"customer.contactStreetAddress\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.contactZipCode'),\"is-valid\":true,\"name\":\"customerForm.contactZipCode\"},model:{value:(_vm.customer.contactZipCode),callback:function ($$v) {_vm.$set(_vm.customer, \"contactZipCode\", $$v)},expression:\"customer.contactZipCode\"}})],1),_c('div',{staticClass:\"col-12 col-sm-8\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.contactCity'),\"is-valid\":true,\"name\":\"customerForm.contactCity\"},model:{value:(_vm.customer.contactCity),callback:function ($$v) {_vm.$set(_vm.customer, \"contactCity\", $$v)},expression:\"customer.contactCity\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.contactPhone'),\"is-valid\":true,\"name\":\"customerForm.contactPhoneNumber\"},model:{value:(_vm.customer.contactPhonenumber),callback:function ($$v) {_vm.$set(_vm.customer, \"contactPhonenumber\", $$v)},expression:\"customer.contactPhonenumber\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.contactEmail'),\"is-valid\":true},model:{value:(_vm.customer.contactEmail),callback:function ($$v) {_vm.$set(_vm.customer, \"contactEmail\", $$v)},expression:\"customer.contactEmail\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerForm.contactRelation'),\"is-valid\":true,\"name\":\"customerForm.contactRelation\"},model:{value:(_vm.customer.contactRelation),callback:function ($$v) {_vm.$set(_vm.customer, \"contactRelation\", $$v)},expression:\"customer.contactRelation\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('customerForm.otherContact')},model:{value:(_vm.customer.otherContact),callback:function ($$v) {_vm.$set(_vm.customer, \"otherContact\", $$v)},expression:\"customer.otherContact\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({max:100}),expression:\"{max:100}\"}],attrs:{\"hint\":_vm.$t('customerForm.shortDescription'),\"name\":\"customerForm.shortDescription\",\"is-valid\":!_vm.errors.has('customerForm.shortDescription'),\"maxlength\":100},model:{value:(_vm.customer.shortDescription),callback:function ($$v) {_vm.$set(_vm.customer, \"shortDescription\", $$v)},expression:\"customer.shortDescription\"}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"objectcheckboxlist\"},[_c('div',{staticClass:\"row\"},_vm._l((_vm.list),function(item){return _c('div',{key:item.key,class:_vm.calculatedClass,attrs:{\"value\":item}},[_c('checkbox',{attrs:{\"value\":item.key,\"checked\":_vm.isSelected(item.key),\"title\":item.text},on:{\"changed\":function($event){return _vm.onChecked(item)}}})],1)}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"objectcheckboxlist\">\r\n    <div class=\"row\">\r\n      <div v-for=\"item in list\" :key=\"item.key\" :class=\"calculatedClass\" :value=\"item\">\r\n        <checkbox :value=\"item.key\" :checked=\"isSelected(item.key)\" :title=\"item.text\" @changed=\"onChecked(item)\" />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import checkbox from './SPRSimpleNumberCheckbox.vue'\r\n  import { SprCheckboxObjectItem } from '../types/custom'\r\n  export default Vue.extend({\r\n    name: 'SprObjectCheckboxList',\r\n    components: { checkbox },\r\n    props: {\r\n      list: {\r\n        type: Array as () => Array<SprCheckboxObjectItem>,\r\n        default () { return [] }\r\n      },\r\n      value: {\r\n        type: Array as () => Array<SprCheckboxObjectItem>,\r\n        default: []\r\n      },\r\n      rows: {\r\n        type: Number,\r\n        default () { return 1 }\r\n      }\r\n    },\r\n    computed: {\r\n      calculatedClass (): string {\r\n        return 'col-12 col-sm-' + Math.floor(12 / this.rows)\r\n      }\r\n    },\r\n    methods: {\r\n      isSelected (key: number): boolean {\r\n        return this.value.map(x => x.key).indexOf(key) > -1\r\n      },\r\n      onChecked (val: SprCheckboxObjectItem): void {\r\n        var localVal = this.value\r\n        var index = _.indexOf(this.value.map(x => x.key), val.key)\r\n        // does this exist in the value already?\r\n        if (index === -1) {\r\n          //if it does not, add it and emit\r\n          localVal.push(val)\r\n        } else {\r\n          // otherwise remove it\r\n          localVal.splice(index, 1)\r\n        }\r\n        this.$emit('input', localVal)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\">\r\n@import \"../assets/scss/_variables.scss\";\r\n\r\n.objectcheckboxlist {\r\n\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRObjectCheckboxList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRObjectCheckboxList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRObjectCheckboxList.vue?vue&type=template&id=5fb389b1\"\nimport script from \"./SPRObjectCheckboxList.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRObjectCheckboxList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRObjectCheckboxList.vue?vue&type=style&index=0&id=5fb389b1&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"customercommon\">\r\n    <!-- personal info section -->\r\n    <div class=\"row\">\r\n      <div class=\"col\">\r\n        <h3>{{ $t('customerForm.personalInformation') }}</h3>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-sm-6\">\r\n        <sprdropdownnumberkey v-model=\"customer.gender\"\r\n                              :title=\"$t('customerForm.gender')\"\r\n                              :items=\"genders\"\r\n                              :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-sm-6\">\r\n        <forminput\r\n          v-model=\"customer.firstName\"\r\n          v-validate=\"'required'\"\r\n          :hint=\"$t('customerForm.firstname')\"\r\n          :is-valid=\"!errors.has('customerForm.firstname')\"\r\n          name=\"customerForm.firstname\"\r\n          :required=\"true\"\r\n        />\r\n      </div>\r\n      <div class=\"col-sm-6\">\r\n        <forminput\r\n          v-model=\"customer.lastName\"\r\n          v-validate=\"'required'\"\r\n          :hint=\"$t('customerForm.lastname')\"\r\n          :is-valid=\"!errors.has('customerForm.lastname')\"\r\n          name=\"customerForm.lastname\"\r\n          :required=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-sm-12\">\r\n        <forminput\r\n          v-model=\"customer.streetAddress\"\r\n          v-validate=\"'required'\"\r\n          :hint=\"$t('customerForm.street')\"\r\n          :is-valid=\"!errors.has('customerForm.streetAddress')\"\r\n          name=\"customerForm.streetAddress\"\r\n          :required=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 col-sm-4\">\r\n        <forminput\r\n          v-model=\"customer.zipCode\"\r\n          v-validate=\"'required|regex:^[0-9]{5}$'\"\r\n          :hint=\"$t('customerForm.zipCode')\"\r\n          :is-valid=\"!errors.has('customerForm.zipCode')\"\r\n          name=\"customerForm.zipCode\"\r\n          :required=\"true\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12 col-sm-8\">\r\n        <forminput\r\n          v-model=\"customer.city\"\r\n          v-validate=\"'required'\"\r\n          :hint=\"$t('customerForm.city')\"\r\n          :is-valid=\"!errors.has('customerForm.city')\"\r\n          name=\"customerForm.city\"\r\n          :required=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-sm-6\">\r\n        <forminput\r\n          v-model=\"customer.homePhone\"\r\n          v-validate=\"'required'\"\r\n          :hint=\"$t('customerForm.homePhone')\"\r\n          :is-valid=\"!errors.has('customerForm.homePhone')\"\r\n          name=\"customerForm.homePhone\"\r\n          :required=\"true\"\r\n        />\r\n      </div>\r\n      <div class=\"col-sm-6\">\r\n        <forminput\r\n          v-model=\"customer.gsmPhone\"\r\n          :hint=\"$t('customerForm.gSMPhone')\"\r\n          :is-valid=\"true\"\r\n          name=\"customerForm.gsmPhone\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <!-- Todo - Move this out to standard/net as its required/not required in each. Or pass in if its net or standard to know whether to make required or not -->\r\n      <!-- <div class=\"col-sm-6\">\r\n        <forminput\r\n          v-model=\"customer.email\"\r\n          :hint=\"$t('customerForm.email')\"\r\n          :is-valid=\"true\"\r\n        />\r\n      </div> -->\r\n      <div class=\"col-sm-6\">\r\n        <div class=\"datepicker\">\r\n          <simpledate\r\n            v-validate=\"birthdateValidation\"\r\n            :value=\"birthDateDate\"\r\n            :title=\"$t('customerForm.birthDate')\"\r\n            :required=\"true\"\r\n            name=\"customerForm.birthDate\"\r\n            :is-valid=\"!errors.has('customerForm.birthDate')\"\r\n            @input=\"onBirthDateSelected\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <!-- languages -->\r\n    <div class=\"row\">\r\n      <!-- native language-->\r\n      <div class=\"col-12 col-sm-6\">\r\n        <dropdowninput\r\n          v-model=\"customer.nativeLanguage\"\r\n          :title=\"$t('customerForm.nativeLanguage')\"\r\n          :items=\"nativeLanguageOptions\"\r\n          :is-valid=\"true\"\r\n        />\r\n      </div>\r\n      <!-- spoken languages -->\r\n      <div class=\"col-12\">\r\n        <span class=\"cap-label brand-red px-3 mb-2 d-inline-block\">\r\n          {{ $t('nonIdentProfileForm.languageSpoken') }}\r\n        </span>\r\n        <objectcheckboxlist\r\n          :value=\"customerLanguages\"\r\n          :list=\"customerLanguageOptions\"\r\n          :rows=\"2\"\r\n          @input=\"onCustomerLanguagesChanged\"\r\n        />\r\n      </div>\r\n      <!-- other languages freetext -->\r\n      <div class=\"col-12\">\r\n        <forminput\r\n          v-model=\"customer.otherLanguages\"\r\n          :hint=\"$t('customerForm.otherLanguages')\"\r\n          name=\"customerForm.otherLanguages\"\r\n          :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- customer type section-->\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span class=\"subheader\">{{ $t('customerForm.customerType') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxbitmasklist\r\n          v-model=\"customer.customerTypes\"\r\n          :list=\"useCustomerTypes\"\r\n          :rows=\"2\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput\r\n          v-model=\"customer.customerTypeOtherInfo\"\r\n          :hint=\"$t('customerForm.customerTypeOtherInfo')\"\r\n          :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- customer interests section-->\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span class=\"subheader\">{{ $t('customerForm.customerInterests') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxbitmasklist\r\n          v-model=\"customer.interests\"\r\n          :list=\"customerInterests\"\r\n          :rows=\"3\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <forminput\r\n          v-model=\"customer.interestOther\"\r\n          :hint=\"$t('customerForm.customerInterestsFreeText')\"\r\n          name=\"customerForm.interestFreeText\"\r\n          :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <div class=\"col\">\r\n        <h3>{{ $t('customerForm.friendWish') }}</h3>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxinput\r\n          v-model=\"customer.multipleVolunteers\"\r\n          :title=\"$t('customerForm.multipleVolunteers')\"\r\n          :aria-label=\"$t('customerForm.multipleVolunteers')\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <!-- gender -->\r\n      <div class=\"col-12 col-md-6\">\r\n        <span class=\"subheader\">{{ $t('volunteerForm.genderPreference') }}*</span>\r\n        <checkboxbitmasklist v-model=\"customer.preferredGenders\"\r\n                             v-validate=\"'option-selected'\"\r\n                             :list=\"genders\"\r\n                             :rows=\"1\"\r\n                             name=\"preferredGenderRequired\"\r\n                             :is-valid=\"!errors.has('preferredGenderRequired')\"\r\n        />\r\n        <span v-if=\"errors.has('preferredGenderNotSelected')\" class=\"error-message\">{{ $t('validation.preferredGenderRequired') }}</span>\r\n        <span v-else class=\"error-message\">&nbsp;</span>\r\n      </div>\r\n      <!-- Desired age -->\r\n      <div class=\"col-12 col-md-6\">\r\n        <span class=\"subheader\">{{ $t('volunteerForm.desiredAge') }}*</span>\r\n        <checkboxbitmasklist v-model=\"customer.preferredAges\"\r\n                             v-validate=\"'option-selected'\"\r\n                             :list=\"preferredAge\"\r\n                             :rows=\"1\"\r\n                             name=\"ageGroupRequired\"\r\n                             :is-valid=\"!errors.has('ageGroupRequired')\"\r\n        />\r\n        <span v-if=\"errors.has('ageGroupNotSelected')\" class=\"error-message\">{{ $t('validation.ageGroupNotSelected') }}</span>\r\n        <span v-else class=\"error-message\">&nbsp;</span>\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"!isNet\" class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span class=\"subheader\">{{ $t('customerForm.availabilityTimes') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxbitmasklist\r\n          v-if=\"!isNet\"\r\n          v-model=\"customer.availabilityTimes\"\r\n          :list=\"availabilityTimes\"\r\n          :rows=\"3\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-sm-6\">\r\n        <sprdropdownnumberkey v-model=\"customer.availabilityFrequency\"\r\n                              :title=\"$t('customerForm.availabilityFrequency')\"\r\n                              :items=\"availabilityFrequency\"\r\n                              :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <textareainput\r\n          v-model=\"customer.description\"\r\n          :title=\"$t('customerForm.description')\" :rows=\"3\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- contact section-->\r\n    <div class=\"row contact-info\">\r\n      <div class=\"col-12\">\r\n        <h3>{{ $t('customerForm.contactInformation') }}</h3>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <div class=\"col-sm-6\">\r\n        <forminput\r\n          v-model=\"customer.contactFirstName\"\r\n          :hint=\"$t('customerForm.contactFirstname')\"\r\n          :is-valid=\"true\"\r\n          name=\"customerForm.contactFirstName\"\r\n        />\r\n      </div>\r\n      <div class=\"col-sm-6\">\r\n        <forminput\r\n          v-model=\"customer.contactLastName\"\r\n          :hint=\"$t('customerForm.contactLastname')\"\r\n          :is-valid=\"true\"\r\n          name=\"customerForm.contactLastName\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-sm-12\">\r\n        <forminput\r\n          v-model=\"customer.contactStreetAddress\"\r\n          :hint=\"$t('customerForm.contactStreet')\"\r\n          :is-valid=\"true\"\r\n          name=\"customerForm.contactStreetAddress\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 col-sm-4\">\r\n        <forminput\r\n          v-model=\"customer.contactZipCode\"\r\n          :hint=\"$t('customerForm.contactZipCode')\"\r\n          :is-valid=\"true\"\r\n          name=\"customerForm.contactZipCode\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12 col-sm-8\">\r\n        <forminput\r\n          v-model=\"customer.contactCity\"\r\n          :hint=\"$t('customerForm.contactCity')\"\r\n          :is-valid=\"true\"\r\n          name=\"customerForm.contactCity\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-sm-6\">\r\n        <forminput\r\n          v-model=\"customer.contactPhonenumber\"\r\n          :hint=\"$t('customerForm.contactPhone')\"\r\n          :is-valid=\"true\"\r\n          name=\"customerForm.contactPhoneNumber\"\r\n        />\r\n      </div>\r\n      <div class=\"col-sm-6\">\r\n        <forminput\r\n          v-model=\"customer.contactEmail\"\r\n          :hint=\"$t('customerForm.contactEmail')\"\r\n          :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 col-sm-6\">\r\n        <forminput\r\n          v-model=\"customer.contactRelation\"\r\n          :hint=\"$t('customerForm.contactRelation')\"\r\n          :is-valid=\"true\"\r\n          name=\"customerForm.contactRelation\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <textareainput\r\n          v-model=\"customer.otherContact\"\r\n          :title=\"$t('customerForm.otherContact')\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput\r\n          v-model=\"customer.shortDescription\"\r\n          v-validate=\"{max:100}\"\r\n          :hint=\"$t('customerForm.shortDescription')\"\r\n          name=\"customerForm.shortDescription\"\r\n          :is-valid=\"!errors.has('customerForm.shortDescription')\"\r\n          :maxlength=\"100\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import moment from 'moment'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import sprdropdownnumberkey from '../SPRDropdownNumberKey.vue'\r\n  import dropdowninput from '../SPRSimpleDropdown.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import objectcheckboxlist from '../SPRObjectCheckboxList.vue'\r\n  import simpledate from '../SPRSimpleDatepicker.vue'\r\n  import checkboxbitmasklist from '../SPRSimpleCheckboxBitmaskList.vue'\r\n  import enums from '../../mixins/enums.js'\r\n  import scroll from '../../mixins/scroll.js'\r\n  import locationutils from '../../mixins/locationutils.js'\r\n  import * as _ from 'lodash'\r\n  import { FriendCustomerStandardDto, FriendCustomerNetDto, LanguageDto } from '../../types/index'\r\n  import { SprDropDownValue, SprDropDownNumberValue, SprCheckboxBitmaskValue, SprCheckboxObjectItem } from '../../types/custom'\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerCommon',\r\n    components: {\r\n      forminput,\r\n      sprdropdownnumberkey,\r\n      dropdowninput,\r\n      checkboxinput,\r\n      textareainput,\r\n      objectcheckboxlist,\r\n      checkboxbitmasklist,\r\n      simpledate\r\n    },\r\n    mixins: [enums, scroll, locationutils],\r\n    inject: ['$validator'],\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto | FriendCustomerNetDto,\r\n        required: true\r\n      },\r\n      isNet: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    computed: {\r\n      birthDateDate (): Date {\r\n        return new Date(this.customer.birthdate)\r\n      },\r\n      birthdateValidation (): string {\r\n        const date = new Date()\r\n        const nowDay = date.getDate()\r\n        const nowDayString = nowDay < 10 ? '0' + nowDay : nowDay.toString()\r\n        const nowMonth = date.getMonth() + 1\r\n        const nowMonthString = nowMonth < 10 ? '0' + nowMonth : nowMonth.toString()\r\n        const nowYear = date.getUTCFullYear()\r\n        const currentDateAsString = `${nowDayString}.${nowMonthString}.${nowYear}`\r\n\r\n        return `required|dateisbefore:${currentDateAsString}`\r\n      },\r\n      useCustomerTypes (): Array<SprCheckboxBitmaskValue> {\r\n        if (this.isNet) {\r\n          return this.netCustomerTypes\r\n        }\r\n        return this.customerTypes\r\n      },\r\n      availabilityTimes (): Array<SprCheckboxBitmaskValue> {\r\n        return _.map(this.$store.state.availabilityTimes.filter(x => x.id !== 0), (val, key) => {\r\n          return { value: val.id, text: this.$t('availabilityTimes.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      customerTypes (): Array<SprCheckboxBitmaskValue> {\r\n        return _.map(this.$store.state.customerTypes.filter(x => x.id !== 0), (val, key) => {\r\n          return { value: val.id, text: this.$t('customerTypes.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      netCustomerTypes (): Array<SprCheckboxBitmaskValue> {\r\n        return _.map(this.$store.state.netCustomerTypes.filter(x => x.id !== 0), (val, key) => {\r\n          return { value: val.id, text: this.$t('netCustomerTypes.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      customerInterests (): Array<SprCheckboxBitmaskValue> {\r\n        return _.map(this.$store.state.customerInterests.filter(x => x.id !== 0), (val, key) => {\r\n          return { value: val.id, text: this.$t('customerInterests.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      genders (): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.genders, function (val, key) {\r\n          return { value: val.id, text: self.$t('genders.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      preferredAge (this: any): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.preferredAge.filter(x => x.id !== 0), function (val, key) {\r\n          return { value: val.id, text: self.$t('preferredAge.' + val.text) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      availabilityFrequency (): Array<SprDropDownNumberValue> {\r\n        var self = this\r\n        return _.map(this.$store.state.availabilityFrequency.filter(x => x.id !== 0), function (val, key) {\r\n          return { value: val.id, text: self.$t('availabilityFrequency.' + val.text) } as SprDropDownNumberValue\r\n        })\r\n      },\r\n      nativeLanguageOptions (): Array<SprDropDownValue> {\r\n        return _.map(this.$store.state.customerLanguages, (val: LanguageDto, key) => {\r\n          return { value: val.isoCode, text: this.$t('languages.' + val.isoCode) } as SprDropDownValue\r\n        })\r\n      },\r\n      customerLanguages (): Array<SprCheckboxObjectItem> {\r\n        return _.map(this.customer.customerLanguages, (val: LanguageDto) => {\r\n          return { obj: val, key: val.id, text: this.$t('languages.' + val.isoCode) } as SprCheckboxObjectItem\r\n        })\r\n      },\r\n      customerLanguageOptions (): Array<SprCheckboxObjectItem> {\r\n        return _.map(this.$store.state.customerLanguages, (val: LanguageDto) => {\r\n          return { obj: val, key: val.id, text: this.$t('languages.' + val.isoCode) } as SprCheckboxObjectItem\r\n        })\r\n      }\r\n    },\r\n    methods: {\r\n      onBirthDateSelected (selectedDate: string): void {\r\n        if (this.customer) {\r\n          // @ts-ignore eslint-disable-next-line\r\n          this.customer.birthdate = moment(selectedDate, ['YYYY-MM-DD']).format('YYYY-MM-DD') // new Date(newVal)\r\n        }\r\n      },\r\n      onCustomerLanguagesChanged (val: Array<SprCheckboxObjectItem>): void {\r\n        this.customer.customerLanguages = _.map(val, (x: SprCheckboxObjectItem) => {\r\n          return x.obj as LanguageDto\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customercommon {\r\n    background-color:$brand-white;\r\n\r\n    .subheader {\r\n      color:$brand-red;\r\n      text-transform: uppercase;\r\n      font-family: $font-bold;\r\n      margin: 0 0 10px 20px;\r\n      display:block;\r\n      font-size: 14px;\r\n    }\r\n\r\n    .sectionheader {\r\n      margin: 15px 0;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerCommon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerCommon.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerCommon.vue?vue&type=template&id=b7611804\"\nimport script from \"./CustomerCommon.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerCommon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerCommon.vue?vue&type=style&index=0&id=b7611804&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localApprovalData)?_c('div',{staticClass:\"approvalform\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('customerForm.approvalSectionHeader')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('customerForm.customerApproval'),\"aria-label\":_vm.$t('customerForm.customerApproval')},on:{\"input\":_vm.update},model:{value:(_vm.localApprovalData.approval),callback:function ($$v) {_vm.$set(_vm.localApprovalData, \"approval\", $$v)},expression:\"localApprovalData.approval\"}})],1),(_vm.localApprovalData.approval)?_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"placeholder\":_vm.$t('customerForm.customerApprovedBy'),\"is-valid\":!_vm.errors.has('customerForm.approveName'),\"name\":\"customerForm.approveName\",\"required\":true},on:{\"input\":_vm.update},model:{value:(_vm.localApprovalData.approvedBy),callback:function ($$v) {_vm.$set(_vm.localApprovalData, \"approvedBy\", $$v)},expression:\"localApprovalData.approvedBy\"}})],1):_vm._e(),(_vm.localApprovalData.approval)?_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate.initial\",value:(_vm.computedDateRequired),expression:\"computedDateRequired\",modifiers:{\"initial\":true}}],attrs:{\"placeholder\":_vm.datePlaceholder,\"is-valid\":!_vm.errors.has('customerForm.approveDate'),\"name\":\"customerForm.approveDate\",\"required\":true},on:{\"input\":_vm.update},model:{value:(_vm.localApprovalData.approvalDate),callback:function ($$v) {_vm.$set(_vm.localApprovalData, \"approvalDate\", $$v)},expression:\"localApprovalData.approvalDate\"}})],1):_vm._e()])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"localApprovalData\" class=\"approvalform\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span class=\"subheader\">{{ $t('customerForm.approvalSectionHeader') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxinput\r\n          v-model=\"localApprovalData.approval\"\r\n          :title=\"$t('customerForm.customerApproval')\"\r\n          :aria-label=\"$t('customerForm.customerApproval')\"\r\n          @input=\"update\"\r\n        />\r\n      </div>\r\n      <div v-if=\"localApprovalData.approval\" class=\"col-12 col-sm-6 col-md-4\">\r\n        <forminput\r\n          v-model=\"localApprovalData.approvedBy\"\r\n          v-validate=\"'required'\"\r\n          :placeholder=\"$t('customerForm.customerApprovedBy')\"\r\n          :is-valid=\"!errors.has('customerForm.approveName')\"\r\n          name=\"customerForm.approveName\"\r\n          :required=\"true\"\r\n          @input=\"update\"\r\n        />\r\n      </div>\r\n      <div v-if=\"localApprovalData.approval\" class=\"col-12 col-sm-6 col-md-4\">\r\n        <forminput\r\n          v-model=\"localApprovalData.approvalDate\"\r\n          v-validate.initial=\"computedDateRequired\"\r\n          :placeholder=\"datePlaceholder\"\r\n          :is-valid=\"!errors.has('customerForm.approveDate')\"\r\n          name=\"customerForm.approveDate\"\r\n          :required=\"true\"\r\n          @input=\"update\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import { ApprovalData } from '../../types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localApprovalData: undefined | ApprovalData\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'ApprovalForm',\r\n    components: {\r\n      forminput,\r\n      checkboxinput\r\n    },\r\n    inject: ['$validator'],\r\n    props: {\r\n      value: {\r\n        type: Object as () => ApprovalData,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        localApprovalData: undefined as undefined | ApprovalData\r\n      }\r\n    },\r\n    computed: {\r\n      datePlaceholder (): string {\r\n        return this.$store.state.language === 'sv' ? 'dd.mm.åååå' : 'pp.kk.vvvv'\r\n      },\r\n      computedDateRequired (): Record<string, any> {\r\n        return {\r\n          required: this.localApprovalData?.approvalDate,\r\n          regex: /^\\d{1,2}\\.\\d{1,2}\\.\\d{4}$/\r\n        }\r\n      }\r\n    },\r\n    watch: {\r\n      value: function (newVal: ApprovalData): void {\r\n        this.localApprovalData = newVal\r\n      }\r\n    },\r\n    mounted (): void {\r\n      if (this.value) {\r\n        this.localApprovalData = this.value\r\n      }\r\n    },\r\n    methods: {\r\n      update (): void {\r\n        if (!this.localApprovalData?.approval) {\r\n          if (this.localApprovalData) {\r\n            this.localApprovalData.approvalDate = ''\r\n            this.localApprovalData.approvedBy = ''\r\n          }\r\n        }\r\n\r\n        this.$emit('input', this.localApprovalData)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import \"../../assets/scss/_variables.scss\";\r\n\r\n.approvalform {\r\n  background-color: $brand-white;\r\n\r\n  .subheader {\r\n    color: $brand-red;\r\n    text-transform: uppercase;\r\n    font-family: $font-bold;\r\n    margin: 0 0 10px 20px;\r\n    display: block;\r\n    font-size: 14px;\r\n  }\r\n\r\n  .sectionheader {\r\n    margin: 15px 0;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ApprovalForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ApprovalForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ApprovalForm.vue?vue&type=template&id=650cc4db\"\nimport script from \"./ApprovalForm.vue?vue&type=script&lang=ts\"\nexport * from \"./ApprovalForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ApprovalForm.vue?vue&type=style&index=0&id=650cc4db&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localSuitabilityData)?_c('div',{staticClass:\"suitabilityform\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('customerForm.customerNotForPrivateRelations'),\"aria-label\":_vm.$t('customerForm.customerNotForPrivateRelations')},on:{\"input\":_vm.update},model:{value:(_vm.localSuitabilityData.notForPrivateRelations),callback:function ($$v) {_vm.$set(_vm.localSuitabilityData, \"notForPrivateRelations\", $$v)},expression:\"localSuitabilityData.notForPrivateRelations\"}})],1)]),(_vm.localSuitabilityData.notForPrivateRelations)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"placeholder\":_vm.$t('customerForm.customerInterviewedBy'),\"is-valid\":!_vm.errors.has('customerForm.groupName'),\"name\":\"customerForm.groupName\",\"required\":true},on:{\"input\":_vm.update},model:{value:(_vm.localSuitabilityData.notForPrivateRelationsBy),callback:function ($$v) {_vm.$set(_vm.localSuitabilityData, \"notForPrivateRelationsBy\", $$v)},expression:\"localSuitabilityData.notForPrivateRelationsBy\"}})],1),_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"placeholder\":_vm.$t('customerForm.customerForGroupsMoreInfo'),\"is-valid\":!_vm.errors.has('customerForm.notForPrivateReason'),\"name\":\"customerForm.notForPrivateReason\",\"required\":true},on:{\"input\":_vm.update},model:{value:(_vm.localSuitabilityData.notForPrivateRelationsReason),callback:function ($$v) {_vm.$set(_vm.localSuitabilityData, \"notForPrivateRelationsReason\", $$v)},expression:\"localSuitabilityData.notForPrivateRelationsReason\"}})],1)]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('customerForm.customerNotForSPR'),\"aria-label\":_vm.$t('customerForm.customerNotForSPR')},on:{\"input\":_vm.update},model:{value:(_vm.localSuitabilityData.notForSpr),callback:function ($$v) {_vm.$set(_vm.localSuitabilityData, \"notForSpr\", $$v)},expression:\"localSuitabilityData.notForSpr\"}})],1)]),(_vm.localSuitabilityData.notForSpr)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"placeholder\":_vm.$t('customerForm.customerInterviewedBy'),\"is-valid\":!_vm.errors.has('customerForm.notForSprBy'),\"name\":\"customerForm.notForSprBy\",\"required\":true},on:{\"input\":_vm.update},model:{value:(_vm.localSuitabilityData.notForSprBy),callback:function ($$v) {_vm.$set(_vm.localSuitabilityData, \"notForSprBy\", $$v)},expression:\"localSuitabilityData.notForSprBy\"}})],1),_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"placeholder\":_vm.$t('customerForm.declineMoreInfo'),\"is-valid\":!_vm.errors.has('customerForm.notForSprReason'),\"name\":\"customerForm.notForSprReason\",\"required\":true},on:{\"input\":_vm.update},model:{value:(_vm.localSuitabilityData.notForSprReason),callback:function ($$v) {_vm.$set(_vm.localSuitabilityData, \"notForSprReason\", $$v)},expression:\"localSuitabilityData.notForSprReason\"}})],1)]):_vm._e()]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"localSuitabilityData\" class=\"suitabilityform\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxinput\r\n          v-model=\"localSuitabilityData.notForPrivateRelations\"\r\n          :title=\"$t('customerForm.customerNotForPrivateRelations')\"\r\n          :aria-label=\"$t('customerForm.customerNotForPrivateRelations')\"\r\n          @input=\"update\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"localSuitabilityData.notForPrivateRelations\" class=\"row\">\r\n      <div class=\"col-12 col-sm-6 col-md-4\">\r\n        <forminput\r\n          v-model=\"localSuitabilityData.notForPrivateRelationsBy\"\r\n          v-validate=\"'required'\"\r\n          :placeholder=\"$t('customerForm.customerInterviewedBy')\"\r\n          :is-valid=\"!errors.has('customerForm.groupName')\"\r\n          name=\"customerForm.groupName\"\r\n          :required=\"true\"\r\n          @input=\"update\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12 col-sm-6 col-md-4\">\r\n        <forminput\r\n          v-model=\"localSuitabilityData.notForPrivateRelationsReason\"\r\n          v-validate=\"'required'\"\r\n          :placeholder=\"$t('customerForm.customerForGroupsMoreInfo')\"\r\n          :is-valid=\"!errors.has('customerForm.notForPrivateReason')\"\r\n          name=\"customerForm.notForPrivateReason\"\r\n          :required=\"true\"\r\n          @input=\"update\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- not for spr -->\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <checkboxinput\r\n          v-model=\"localSuitabilityData.notForSpr\"\r\n          :title=\"$t('customerForm.customerNotForSPR')\"\r\n          :aria-label=\"$t('customerForm.customerNotForSPR')\"\r\n          @input=\"update\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"localSuitabilityData.notForSpr\" class=\"row\">\r\n      <div class=\"col-12 col-sm-6 col-md-4\">\r\n        <forminput\r\n          v-model=\"localSuitabilityData.notForSprBy\"\r\n          v-validate=\"'required'\"\r\n          :placeholder=\"$t('customerForm.customerInterviewedBy')\"\r\n          :is-valid=\"!errors.has('customerForm.notForSprBy')\"\r\n          name=\"customerForm.notForSprBy\"\r\n          :required=\"true\"\r\n          @input=\"update\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12 col-sm-6 col-md-4\">\r\n        <forminput\r\n          v-model=\"localSuitabilityData.notForSprReason\"\r\n          v-validate=\"'required'\"\r\n          :placeholder=\"$t('customerForm.declineMoreInfo')\"\r\n          :is-valid=\"!errors.has('customerForm.notForSprReason')\"\r\n          name=\"customerForm.notForSprReason\"\r\n          :required=\"true\"\r\n          @input=\"update\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import { SuitabilityData } from '../../types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localSuitabilityData: undefined | SuitabilityData\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'SuitabilityForm',\r\n    components: {\r\n      forminput,\r\n      checkboxinput\r\n    },\r\n    inject: ['$validator'],\r\n    props: {\r\n      value: {\r\n        type: Object as () => SuitabilityData,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        localSuitabilityData: undefined as undefined | SuitabilityData\r\n      }\r\n    },\r\n    computed: {\r\n    },\r\n    watch: {\r\n      value: function (newVal: SuitabilityData): void {\r\n        this.localSuitabilityData = newVal\r\n      }\r\n    },\r\n    mounted (): void {\r\n      if (this.value) {\r\n        this.localSuitabilityData = this.value\r\n      }\r\n    },\r\n    methods: {\r\n      update (): void {\r\n        if (!this.localSuitabilityData?.notForPrivateRelations) {\r\n          if (this.localSuitabilityData) {\r\n            this.localSuitabilityData.notForPrivateRelationsReason = ''\r\n            this.localSuitabilityData.notForPrivateRelationsBy = ''\r\n          }\r\n        }\r\n\r\n        if (!this.localSuitabilityData?.notForSpr) {\r\n          if (this.localSuitabilityData) {\r\n            this.localSuitabilityData.notForSprReason = ''\r\n            this.localSuitabilityData.notForSprBy = ''\r\n          }\r\n        }\r\n\r\n        this.$emit('input', this.localSuitabilityData)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import \"../../assets/scss/_variables.scss\";\r\n\r\n.suitabilityform {\r\n  background-color: $brand-white;\r\n\r\n  .subheader {\r\n    color: $brand-red;\r\n    text-transform: uppercase;\r\n    font-family: $font-bold;\r\n    margin: 0 0 10px 20px;\r\n    display: block;\r\n    font-size: 14px;\r\n  }\r\n\r\n  .sectionheader {\r\n    margin: 15px 0;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SuitabilityForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SuitabilityForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SuitabilityForm.vue?vue&type=template&id=a011035e\"\nimport script from \"./SuitabilityForm.vue?vue&type=script&lang=ts\"\nexport * from \"./SuitabilityForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SuitabilityForm.vue?vue&type=style&index=0&id=a011035e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"container\">\r\n    <div class=\"customerstandardform\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <backbar />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <h2>{{ addEditTitle }}</h2>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-center py-2\">\r\n          <validation :id=\"'validationTarget' + _uid\"\r\n                      ref=\"validationtarget\"\r\n                      :validation-errors=\"validationErrors\"\r\n                      exclude-field-reference\r\n                      include-title\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <ApprovalForm\r\n            v-if=\"customer\"\r\n            :value=\"computedApprovalData\"\r\n            @input=\"onApprovalDataChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <forminput\r\n            v-if=\"customer\"\r\n            v-model=\"customer.email\"\r\n            v-validate=\"'email'\"\r\n            :hint=\"$t('customerForm.email')\"\r\n            :is-valid=\"!errors.has('customerForm.email')\"\r\n            name=\"customerForm.email\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 feature-panel\">\r\n          <CustomerCommon v-if=\"customer\"\r\n                          :customer=\"customer\"\r\n                          @input=\"onCustomerCommonChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col\">\r\n          <h3>{{ $t('customerForm.applicationInformation') }}</h3>\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <InterviewForm\r\n            v-if=\"customer\"\r\n            :value=\"computedInterviewData\"\r\n            :disabled=\"isStateChangeDisabled\"\r\n            :translation-key=\"'customerForm.customerInterviewed'\"\r\n            @input=\"onInterviewDataChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <OnHoldForm\r\n            v-if=\"customer\"\r\n            :value=\"computedOnHoldData\"\r\n            :disabled=\"isStateChangeDisabled\"\r\n            @input=\"onOnHoldDataChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <SuitabilityForm\r\n            v-if=\"customer\"\r\n            :value=\"computedSuitabilityData\"\r\n            @input=\"onSuitabilityDataChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <LastContactedForm\r\n            v-if=\"customer\"\r\n            :value=\"customer.lastContacted\"\r\n            @input=\"onlastContactedChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <textareainput\r\n            v-if=\"customer\"\r\n            v-model=\"customer.privateNotes\"\r\n            :title=\"$t('volunteerForm.privateNotes')\" :rows=\"6\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel buttons\">\r\n        <div class=\"col-6 cancel\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.cancel')\"\r\n                     click-event=\"onCancel\"\r\n                     @onCancel=\"cancel\"\r\n          />\r\n        </div>\r\n        <div class=\"col-6 save\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :disabled=\"isSaving\"\r\n                     :title=\"$t('volunteerForm.save')\"\r\n                     click-event=\"onSave\"\r\n                     @onSave=\"save\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import SprButton from '@/components/SPRButton.vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import CustomerCommon from '@/components/friends/CustomerCommon.vue'\r\n  import InterviewForm from '@/components/friends/InterviewForm.vue'\r\n  import ApprovalForm from '@/components/friends/ApprovalForm.vue'\r\n  import OnHoldForm from '@/components/friends/OnHoldForm.vue'\r\n  import SuitabilityForm from '@/components/friends/SuitabilityForm.vue'\r\n  import LastContactedForm from '@/components/friends/LastContactedForm.vue'\r\n  import backbar from '../BackBar.vue'\r\n  import validation from '../SPRValidationError.vue'\r\n  import Alerts from '@/mixins/alerts.js'\r\n  import { ErrorBag, FieldError } from 'vee-validate'\r\n  import { AvailabilityFrequence, FriendCustomerStandardDto, PreferredGenders, Gender, CustomerState, CustomerTypes, Interests, PreferredAges, AvailabilityTimes } from '@/types/index'\r\n  import { InterviewData, OnHoldData, ApprovalData, SuitabilityData } from '@/types/custom'\r\n  import { convertToUTC } from '@/helpers/datehelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    loaded: boolean,\r\n    isSaving: boolean,\r\n    customer: FriendCustomerStandardDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerStandardForm',\r\n    components: { validation, backbar, textareainput, ApprovalForm, CustomerCommon, InterviewForm, OnHoldForm, SuitabilityForm, SprButton, forminput, LastContactedForm },\r\n    mixins: [Alerts],\r\n    props: {\r\n      customerId: {\r\n        type: Number,\r\n        required: false, // only passed if its an edit\r\n        default: 0\r\n      },\r\n      groupId: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        loaded: false,\r\n        isSaving: false,\r\n        customer: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      isEdit (): boolean {\r\n        return this.customerId > 0\r\n      },\r\n      addEditTitle (): string | LocaleMessage {\r\n        return this.isEdit\r\n          ? this.$t('customerForm.editCustomerTitle')\r\n          : this.$t('customerForm.newCustomerTitle')\r\n      },\r\n      validationErrors (): Array<Array<string>> {\r\n        var errs: ErrorBag = this.errors ? this.errors : []\r\n        if (errs.items.length) {\r\n          return errs.items.map((err: FieldError) => {\r\n            return [`error_${err.field}`, err.rule ? err.rule : '', err.msg ? err.msg : '']\r\n          })\r\n        }\r\n        return []\r\n      },\r\n      computedInterviewData (): InterviewData | null {\r\n        if (!this.customer) return null\r\n\r\n        var defaultDate = new Date()\r\n        return {\r\n          interviewed: this.customer.customerInterviewed,\r\n          interviewedBy: this.customer.customerInterviewedBy,\r\n          interviewedDate: this.customer.customerInterviewedOnDate || defaultDate\r\n        } as InterviewData\r\n      },\r\n      computedOnHoldData (): OnHoldData | null {\r\n        if (!this.customer) return null\r\n\r\n        return {\r\n          onHold: Boolean(this.customer.onHoldUntilDate),\r\n          onHoldDeadline: this.customer.onHoldUntilDate,\r\n          onHoldDetails: this.customer.onHoldComment\r\n        } as OnHoldData\r\n      },\r\n      computedApprovalData (): ApprovalData | null {\r\n        if (!this.customer) return null\r\n\r\n        // weirdly, this contains two items of info in the database\r\n        var approvalData = this.customer.customerApprovedBy\r\n        var fields = approvalData?.split(' || ')\r\n        if (fields && fields.length === 2) {\r\n          return {\r\n            approval: this.customer.customerApproval,\r\n            approvalDate: fields[0],\r\n            approvedBy: fields[1]\r\n          } as ApprovalData\r\n        }\r\n\r\n        return {\r\n          approval: this.customer.customerApproval,\r\n          approvalDate: '',\r\n          approvedBy: ''\r\n        } as ApprovalData\r\n      },\r\n      computedSuitabilityData (): SuitabilityData | null {\r\n        if (!this.customer) return null\r\n\r\n        var notForPrivateData = this.customer.customerNotForPrivateRelationsBy\r\n        var notForSprData = this.customer.customerNotForSprBy\r\n        var pFields = notForPrivateData?.split(' || ')\r\n        var sFields = notForSprData?.split(' || ')\r\n        return {\r\n          notForPrivateRelations: this.customer.customerNotForPrivateRelations,\r\n          notForSpr: this.customer.customerNotForSpr,\r\n          notForPrivateRelationsReason: pFields ? pFields[0] : '',\r\n          notForPrivateRelationsBy: pFields && pFields.length > 1 ? pFields[1] : '',\r\n          notForSprReason: sFields ? sFields[0] : '',\r\n          notForSprBy: sFields && sFields.length > 1 ? sFields[1] : ''\r\n        } as SuitabilityData\r\n      },\r\n      isStateChangeDisabled (): boolean {\r\n        if (!this.customer) return true\r\n\r\n        /// Cannot change the state if the customer has friendships\r\n        return this.customer.state === CustomerState.PendingFriend ||\r\n          this.customer.state === CustomerState.ActiveFriendship ||\r\n          Boolean(this.customer.friendships?.length)\r\n      }\r\n    },\r\n    provide (): Record<string, any> {\r\n      return {\r\n        $validator: this.$validator // allow child components to have validator injected\r\n      }\r\n    },\r\n    mounted (): void {\r\n      if (this.isEdit) {\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customergetstandardbyid[0].replace('{customerid}', this.customerId).replace('{groupid}', this.groupId)\r\n        this.$http.get(url, this.customer).then((result: any) => {\r\n          this.customer = result.body\r\n          this.loaded = true\r\n        }, (err: Response | any) => {\r\n          this.displayError(err)\r\n        })\r\n      } else {\r\n        this.customer = {\r\n          availabilityFrequency: AvailabilityFrequence.OncePerWeek,\r\n          birthdate: new Date(),\r\n          city: '',\r\n          contactCity: '',\r\n          contactEmail: '',\r\n          contactFirstName: '',\r\n          contactLastName: '',\r\n          contactPhonenumber: '',\r\n          contactRelation: '',\r\n          contactStreetAddress: '',\r\n          contactZipCode: '',\r\n          customerApproval: false,\r\n          customerApprovedBy: '',\r\n          customerInterviewed: false,\r\n          customerInterviewedBy: '',\r\n          customerInterviewedOnDate: new Date(),\r\n          customerLanguages: [],\r\n          customerNotForPrivateRelations: false,\r\n          customerNotForPrivateRelationsBy: '',\r\n          customerNotForSpr: false,\r\n          customerNotForSprBy: '',\r\n          customerTypeOtherInfo: '',\r\n          customerTypes: CustomerTypes.NotDefined,\r\n          description: '',\r\n          firstName: '',\r\n          friendManagementGroupId: this.groupId,\r\n          friendPools: [],\r\n          friendships: [],\r\n          fullname: '',\r\n          gender: Gender.Male,\r\n          gsmPhone: '',\r\n          homePhone: '',\r\n          id: 0,\r\n          interestOther: '',\r\n          interests: Interests.NotDefined,\r\n          lastContacted: undefined,\r\n          lastFriendshipEndDate: new Date(),\r\n          lastName: '',\r\n          multipleVolunteers: false,\r\n          nativeLanguage: 'fi',\r\n          onHold: false,\r\n          onHoldComment: '',\r\n          onHoldUntilDate: undefined,\r\n          otherContact: '',\r\n          otherLanguages: '',\r\n          preferredAges: PreferredAges.NotDefined,\r\n          preferredGenders: PreferredGenders.Other | PreferredGenders.Male | PreferredGenders.Female,\r\n          privateNotes: '',\r\n          shortDescription: '',\r\n          startedPending: new Date(),\r\n          state: CustomerState.PendingApproval,\r\n          streetAddress: '',\r\n          zipCode: '',\r\n          availabilityTimes: AvailabilityTimes.NotDefined,\r\n          email: ''\r\n        } as FriendCustomerStandardDto\r\n        this.loaded = true\r\n      }\r\n    },\r\n    methods: {\r\n      failLoad (): void {\r\n        this.displayError(this.$t('common.fetchFailed'))\r\n      },\r\n      onCustomerCommonChanged (newCustomer: FriendCustomerStandardDto): void {\r\n        this.customer = newCustomer\r\n      },\r\n      onInterviewDataChanged (newData: InterviewData): void {\r\n        if (!this.customer) return\r\n\r\n        this.customer.customerInterviewed = newData.interviewed\r\n        this.customer.customerInterviewedBy = newData.interviewedBy\r\n        this.customer.customerInterviewedOnDate = newData.interviewedDate\r\n      },\r\n      onOnHoldDataChanged (newData: OnHoldData): void {\r\n        if (!this.customer) return\r\n\r\n        this.customer.onHoldUntilDate = newData.onHold ? newData.onHoldDeadline : undefined\r\n        this.customer.onHoldComment = newData.onHold ? newData.onHoldDetails : ''\r\n      },\r\n      onlastContactedChanged (hasContactDate: boolean, lastContacted: Date): void {\r\n        if (!this.customer) return\r\n  \r\n        this.customer.lastContacted = hasContactDate ? lastContacted : undefined\r\n      },\r\n      onApprovalDataChanged (newData: ApprovalData): void {\r\n        if (!this.customer) return\r\n\r\n        this.customer.customerApproval = newData.approval\r\n        this.customer.customerApprovedBy = `${newData.approvalDate} || ${newData.approvedBy}`\r\n      },\r\n      onSuitabilityDataChanged (newData: SuitabilityData): void {\r\n        if (!this.customer) return\r\n\r\n        this.customer.customerNotForPrivateRelations = newData.notForPrivateRelations\r\n        this.customer.customerNotForPrivateRelationsBy = `${newData.notForPrivateRelationsReason} || ${newData.notForPrivateRelationsBy}`\r\n        this.customer.customerNotForSpr = newData.notForSpr\r\n        this.customer.customerNotForSprBy = `${newData.notForSprReason} || ${newData.notForSprBy}`\r\n      },\r\n      cancel (): void {\r\n        const url = this.isEdit\r\n          ? `/friend/customerpreview/${this.groupId}/${this.customerId}`\r\n          : `/friend/search/${this.groupId}/customer`\r\n        this.$router.push(url)\r\n      },\r\n      save (): void {\r\n        if (this.customer?.preferredAges === PreferredAges.NotDefined) {\r\n          this.customer.preferredAges = 1\r\n          this.$nextTick(() => {\r\n            if (!this.customer) return\r\n            this.customer.preferredAges = PreferredAges.NotDefined\r\n            this.validateAndSave()\r\n          })\r\n        } else {\r\n          this.validateAndSave()\r\n        }\r\n      },\r\n      validateAndSave (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          // check any child controls have not added errors\r\n          if (!result || (this.validationErrors && this.validationErrors.length)) {\r\n            var target = this.$refs['validationtarget']\r\n            if (target) {\r\n              window.scrollTo({\r\n                // @ts-ignore\r\n                top: target.$el.parentElement.clientHeight,\r\n                left: 0,\r\n                behavior: 'smooth'\r\n              })\r\n            }\r\n            return\r\n          }\r\n          if (this.customer) {\r\n            if (this.isEdit) {\r\n              this.updateCustomer()\r\n            } else {\r\n              this.addCustomer()\r\n            }\r\n          }\r\n        }, error => {\r\n          console.log('validate error', error)\r\n        })  \r\n      },\r\n      addCustomer (): void {\r\n        if (!this.customer) return\r\n\r\n        this.customer = this.convertDatesToUtc(this.customer)\r\n\r\n        this.isSaving = true\r\n        const addUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customeraddstandard[0]\r\n\r\n\r\n        this.$http.post(addUrl, this.customer).then((result: any) => {\r\n          this.isSaving = false\r\n          this.$router.push(`/friend/search/${this.groupId}/customer`)\r\n        }, (err: Response | any) => {\r\n          this.isSaving = false\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      updateCustomer (): void {\r\n        if (!this.customer) return\r\n\r\n        this.customer = this.convertDatesToUtc(this.customer)\r\n\r\n        this.isSaving = true\r\n        const updateUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customerupdatestandard[0]\r\n\r\n        this.$http.put(updateUrl, this.customer).then((result: any) => {\r\n          this.isSaving = false\r\n          this.$router.push(`/friend/customerpreview/${this.groupId}/${this.customer?.id}`)\r\n        }, (err: Response | any) => {\r\n          this.isSaving = false\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      convertDatesToUtc(customer: FriendCustomerStandardDto | undefined): FriendCustomerStandardDto | undefined {\r\n        if (!customer) return customer\r\n        \r\n        // convert dates to UTC and make sure they are corrected to the right date\r\n        if (customer.lastContacted) {\r\n          customer.lastContacted = convertToUTC(customer.lastContacted)\r\n        }\r\n        if (customer.customerInterviewed && customer.customerInterviewedOnDate) {\r\n          customer.customerInterviewedOnDate = convertToUTC(customer.customerInterviewedOnDate)\r\n        }\r\n        if (customer.onHoldUntilDate) {\r\n          customer.onHoldUntilDate = convertToUTC(customer.onHoldUntilDate)\r\n        }\r\n        return customer\r\n      }, \r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .customerstandardform {\r\n    .nav-header {\r\n      border-bottom: none;\r\n    }\r\n    .feature-panel {\r\n      background-color: $brand-white;\r\n      margin-bottom: 30px;\r\n      padding-top: 15px;\r\n\r\n      &.buttons {\r\n        margin-top: 30px;\r\n        padding-top: 15px;\r\n        padding-bottom: 15px;\r\n        .cancel {\r\n          text-align: left;\r\n        }\r\n        .save {\r\n          text-align: right;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerStandardForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerStandardForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerStandardForm.vue?vue&type=template&id=1ed0bdd0\"\nimport script from \"./CustomerStandardForm.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerStandardForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerStandardForm.vue?vue&type=style&index=0&id=1ed0bdd0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"customernetform\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('backbar')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.addEditTitle))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center py-2\"},[_c('validation',{ref:\"validationtarget\",attrs:{\"id\":'validationTarget' + _vm._uid,\"validation-errors\":_vm.validationErrors,\"exclude-field-reference\":\"\",\"include-title\":\"\"}})],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[(_vm.customer)?_c('ApprovalForm',{attrs:{\"value\":_vm.computedApprovalData},on:{\"input\":_vm.onApprovalDataChanged}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[(_vm.customer)?_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|email'),expression:\"'required|email'\"}],attrs:{\"hint\":_vm.$t('customerForm.email'),\"is-valid\":!_vm.errors.has('customerForm.email'),\"name\":\"customerForm.email\",\"required\":true},model:{value:(_vm.customer.email),callback:function ($$v) {_vm.$set(_vm.customer, \"email\", $$v)},expression:\"customer.email\"}}):_vm._e()],1),_c('div',{staticClass:\"col-12 feature-panel\"},[(_vm.customer)?_c('CustomerCommon',{attrs:{\"customer\":_vm.customer,\"is-net\":true},on:{\"input\":_vm.onCustomerChanged}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[(_vm.customer)?_c('CustomerNetContactForm',{attrs:{\"value\":_vm.customer},on:{\"input\":_vm.onCustomerChanged}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.applicationInformation')))])]),_c('div',{staticClass:\"col-12\"},[(_vm.customer)?_c('InterviewForm',{attrs:{\"value\":_vm.computedInterviewData,\"disabled\":_vm.isStateChangeDisabled,\"translation-key\":'customerForm.customerInterviewed'},on:{\"input\":_vm.onInterviewDataChanged}}):_vm._e()],1),_c('div',{staticClass:\"col-12\"},[(_vm.customer)?_c('OnHoldForm',{attrs:{\"value\":_vm.computedOnHoldData,\"disabled\":_vm.isStateChangeDisabled},on:{\"input\":_vm.onOnHoldDataChanged}}):_vm._e()],1),_c('div',{staticClass:\"col-12\"},[(_vm.customer)?_c('SuitabilityForm',{attrs:{\"value\":_vm.computedSuitabilityData},on:{\"input\":_vm.onSuitabilityDataChanged}}):_vm._e()],1),_c('div',{staticClass:\"col-12\"},[(_vm.customer)?_c('LastContactedForm',{attrs:{\"value\":_vm.customer.lastContacted},on:{\"input\":_vm.onlastContactedChanged}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel\"},[_c('div',{staticClass:\"col-12\"},[(_vm.customer)?_c('textareainput',{attrs:{\"title\":_vm.$t('volunteerForm.privateNotes'),\"rows\":6},model:{value:(_vm.customer.privateNotes),callback:function ($$v) {_vm.$set(_vm.customer, \"privateNotes\", $$v)},expression:\"customer.privateNotes\"}}):_vm._e()],1)]),_c('div',{staticClass:\"row feature-panel buttons\"},[_c('div',{staticClass:\"col-6 cancel\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"title\":_vm.$t('volunteerForm.cancel'),\"click-event\":\"onCancel\"},on:{\"onCancel\":_vm.cancel}})],1),_c('div',{staticClass:\"col-6 save\"},[_c('SprButton',{attrs:{\"type\":\"button\",\"size\":1,\"disabled\":_vm.isSaving,\"title\":_vm.$t('volunteerForm.save'),\"click-event\":\"onSave\"},on:{\"onSave\":_vm.save}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"customernetcontactform\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.netFriendContacts')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.email'),\"is-valid\":true},model:{value:(_vm.localCustomer.econtactEmail),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"econtactEmail\", $$v)},expression:\"localCustomer.econtactEmail\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.telegram'),\"is-valid\":true},model:{value:(_vm.localCustomer.econtactTelegram),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"econtactTelegram\", $$v)},expression:\"localCustomer.econtactTelegram\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.kik'),\"is-valid\":true},model:{value:(_vm.localCustomer.econtactKik),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"econtactKik\", $$v)},expression:\"localCustomer.econtactKik\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.instagram'),\"is-valid\":true},model:{value:(_vm.localCustomer.econtactInstagram),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"econtactInstagram\", $$v)},expression:\"localCustomer.econtactInstagram\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.skype'),\"is-valid\":true},model:{value:(_vm.localCustomer.econtactSkype),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"econtactSkype\", $$v)},expression:\"localCustomer.econtactSkype\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.discord'),\"is-valid\":true},model:{value:(_vm.localCustomer.econtactDiscord),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"econtactDiscord\", $$v)},expression:\"localCustomer.econtactDiscord\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('connectivity.freetext'),\"is-valid\":true},model:{value:(_vm.localCustomer.econtactFreetext),callback:function ($$v) {_vm.$set(_vm.localCustomer, \"econtactFreetext\", $$v)},expression:\"localCustomer.econtactFreetext\"}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"customernetcontactform\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <h3>{{ $t('customerForm.netFriendContacts') }}</h3>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput\r\n          v-model=\"localCustomer.econtactEmail\"\r\n          :hint=\"$t('connectivity.email')\"\r\n          :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput\r\n          v-model=\"localCustomer.econtactTelegram\"\r\n          :hint=\"$t('connectivity.telegram')\"\r\n          :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput\r\n          v-model=\"localCustomer.econtactKik\"\r\n          :hint=\"$t('connectivity.kik')\"\r\n          :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput\r\n          v-model=\"localCustomer.econtactInstagram\"\r\n          :hint=\"$t('connectivity.instagram')\"\r\n          :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput\r\n          v-model=\"localCustomer.econtactSkype\"\r\n          :hint=\"$t('connectivity.skype')\"\r\n          :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput\r\n          v-model=\"localCustomer.econtactDiscord\"\r\n          :hint=\"$t('connectivity.discord')\"\r\n          :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <forminput\r\n          v-model=\"localCustomer.econtactFreetext\"\r\n          :hint=\"$t('connectivity.freetext')\"\r\n          :is-valid=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import { FriendCustomerNetDto } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localCustomer: FriendCustomerNetDto\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerNetContactForm',\r\n    components: { forminput },\r\n    props: {\r\n      value: {\r\n        type: Object as () => FriendCustomerNetDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        localCustomer: {} as FriendCustomerNetDto\r\n      }\r\n    },\r\n    watch: {\r\n      value: function (newVal: FriendCustomerNetDto): void {\r\n        this.localCustomer = newVal\r\n      }\r\n    },\r\n    mounted (): void {\r\n      if (this.value) {\r\n        this.localCustomer = this.value\r\n      }\r\n    },\r\n    methods: {\r\n      update (): void {\r\n        this.$emit('input', this.localCustomer)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerNetContactForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerNetContactForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerNetContactForm.vue?vue&type=template&id=14b9fd00\"\nimport script from \"./CustomerNetContactForm.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerNetContactForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerNetContactForm.vue?vue&type=style&index=0&id=14b9fd00&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"container\">\r\n    <div class=\"customernetform\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <backbar />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <h2>{{ addEditTitle }}</h2>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-center py-2\">\r\n          <validation :id=\"'validationTarget' + _uid\"\r\n                      ref=\"validationtarget\"\r\n                      :validation-errors=\"validationErrors\"\r\n                      exclude-field-reference\r\n                      include-title\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <ApprovalForm\r\n            v-if=\"customer\"\r\n            :value=\"computedApprovalData\"\r\n            @input=\"onApprovalDataChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <forminput\r\n            v-if=\"customer\"\r\n            v-model=\"customer.email\"\r\n            v-validate=\"'required|email'\"\r\n            :hint=\"$t('customerForm.email')\"\r\n            :is-valid=\"!errors.has('customerForm.email')\"\r\n            name=\"customerForm.email\"\r\n            :required=\"true\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 feature-panel\">\r\n          <CustomerCommon\r\n            v-if=\"customer\"\r\n            :customer=\"customer\"\r\n            :is-net=\"true\"\r\n            @input=\"onCustomerChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <CustomerNetContactForm\r\n            v-if=\"customer\"\r\n            :value=\"customer\"\r\n            @input=\"onCustomerChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col\">\r\n          <h3>{{ $t('customerForm.applicationInformation') }}</h3>\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <InterviewForm\r\n            v-if=\"customer\"\r\n            :value=\"computedInterviewData\"\r\n            :disabled=\"isStateChangeDisabled\"\r\n            :translation-key=\"'customerForm.customerInterviewed'\"\r\n            @input=\"onInterviewDataChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <OnHoldForm\r\n            v-if=\"customer\"\r\n            :value=\"computedOnHoldData\"\r\n            :disabled=\"isStateChangeDisabled\"\r\n            @input=\"onOnHoldDataChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <SuitabilityForm\r\n          v-if=\"customer\"\r\n          :value=\"computedSuitabilityData\"\r\n          @input=\"onSuitabilityDataChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <LastContactedForm\r\n            v-if=\"customer\"\r\n            :value=\"customer.lastContacted\"\r\n            @input=\"onlastContactedChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel\">\r\n        <div class=\"col-12\">\r\n          <textareainput\r\n            v-if=\"customer\"\r\n            v-model=\"customer.privateNotes\"\r\n            :title=\"$t('volunteerForm.privateNotes')\"\r\n            :rows=\"6\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row feature-panel buttons\">\r\n        <div class=\"col-6 cancel\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('volunteerForm.cancel')\"\r\n                     click-event=\"onCancel\"\r\n                     @onCancel=\"cancel\"\r\n          />\r\n        </div>\r\n        <div class=\"col-6 save\">\r\n          <SprButton type=\"button\"\r\n                     :size=\"1\"\r\n                     :disabled=\"isSaving\"\r\n                     :title=\"$t('volunteerForm.save')\"\r\n                     click-event=\"onSave\"\r\n                     @onSave=\"save\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import SprButton from '@/components/SPRButton.vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import CustomerCommon from '@/components/friends/CustomerCommon.vue'\r\n  import InterviewForm from '@/components/friends/InterviewForm.vue'\r\n  import ApprovalForm from '@/components/friends/ApprovalForm.vue'\r\n  import OnHoldForm from '@/components/friends/OnHoldForm.vue'\r\n  import SuitabilityForm from '@/components/friends/SuitabilityForm.vue'\r\n  import LastContactedForm from '@/components/friends/LastContactedForm.vue'\r\n  import CustomerNetContactForm from '@/components/friends/CustomerNetContactForm.vue'\r\n  import backbar from '../BackBar.vue'\r\n  import validation from '../SPRValidationError.vue'\r\n  import Alerts from '@/mixins/alerts.js'\r\n  import { ErrorBag, FieldError } from 'vee-validate'\r\n  import { AvailabilityFrequence, AvailabilityTimes, FriendCustomerNetDto, PreferredGenders, CustomerState, PreferredAges, Gender, NetCustomerTypes, Interests } from '@/types/index'\r\n  import { InterviewData, OnHoldData, ApprovalData, SuitabilityData } from '@/types/custom'\r\n  import { convertToUTC } from '@/helpers/datehelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    loaded: boolean,\r\n    isSaving: boolean,\r\n    customer: FriendCustomerNetDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerNetForm',\r\n    components: { validation, backbar, textareainput, ApprovalForm, CustomerCommon, InterviewForm, OnHoldForm, SuitabilityForm, CustomerNetContactForm, SprButton, forminput, LastContactedForm },\r\n    mixins: [Alerts],\r\n    props: {\r\n      customerId: {\r\n        type: Number,\r\n        required: false, // only passed if its an edit\r\n        default: 0\r\n      },\r\n      groupId: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        loaded: false,\r\n        isSaving: false,\r\n        customer: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      isEdit (): boolean {\r\n        return this.customerId > 0\r\n      },\r\n      addEditTitle (): string | LocaleMessage {\r\n        return this.isEdit\r\n          ? this.$t('customerForm.editCustomerTitle')\r\n          : this.$t('customerForm.newCustomerTitle')\r\n      },\r\n      validationErrors (): Array<Array<string>> {\r\n        var errs: ErrorBag = this.errors ? this.errors : []\r\n        if (errs.items.length) {\r\n          return errs.items.map((err: FieldError) => {\r\n            return [`error_${err.field}`, err.rule ? err.rule : '', err.msg ? err.msg : '']\r\n          })\r\n        }\r\n        return []\r\n      },\r\n      computedInterviewData (): InterviewData | null {\r\n        if (!this.customer) return null\r\n\r\n        var defaultDate = new Date()\r\n        return {\r\n          interviewed: this.customer.customerInterviewed,\r\n          interviewedBy: this.customer.customerInterviewedBy,\r\n          interviewedDate: this.customer.customerInterviewedOnDate || defaultDate\r\n        } as InterviewData\r\n      },\r\n      computedOnHoldData (): OnHoldData | null {\r\n        if (!this.customer) return null\r\n\r\n        return {\r\n          onHold: Boolean(this.customer.onHoldUntilDate),\r\n          onHoldDeadline: this.customer.onHoldUntilDate,\r\n          onHoldDetails: this.customer.onHoldComment\r\n        } as OnHoldData\r\n      },\r\n      computedApprovalData (): ApprovalData | null {\r\n        if (!this.customer) return null\r\n\r\n        // weirdly, this contains two items of info in the database\r\n        var approvalData = this.customer.customerApprovedBy\r\n        var fields = approvalData?.split(' || ')\r\n        if (fields && fields.length === 2) {\r\n          return {\r\n            approval: this.customer.customerApproval,\r\n            approvalDate: fields[0],\r\n            approvedBy: fields[1]\r\n          } as ApprovalData\r\n        }\r\n\r\n        return {\r\n          approval: this.customer.customerApproval,\r\n          approvalDate: '',\r\n          approvedBy: ''\r\n          } as ApprovalData\r\n      },\r\n      computedSuitabilityData (): SuitabilityData | null {\r\n        if (!this.customer) return null\r\n        var notForPrivateData = this.customer.customerNotForPrivateRelationsBy\r\n        var notForSprData = this.customer.customerNotForSprBy\r\n        var pFields = notForPrivateData?.split(' || ')\r\n        var sFields = notForSprData?.split(' || ')\r\n        return {\r\n          notForPrivateRelations: this.customer.customerNotForPrivateRelations,\r\n          notForSpr: this.customer.customerNotForSpr,\r\n          notForPrivateRelationsReason: pFields ? pFields[0] : '',\r\n          notForPrivateRelationsBy: pFields && pFields.length > 1 ? pFields[1] : '',\r\n          notForSprReason: sFields ? sFields[0] : '',\r\n          notForSprBy: sFields && sFields.length > 1 ? sFields[1] : ''\r\n        } as SuitabilityData\r\n      },\r\n      isStateChangeDisabled (): boolean {\r\n        if (!this.customer) return true\r\n        /// Cannot change the state if the customer has friendships\r\n        return this.customer.state === CustomerState.PendingFriend ||\r\n          this.customer.state === CustomerState.ActiveFriendship ||\r\n          Boolean(this.customer.friendships?.length)\r\n      }\r\n    },\r\n    provide (): Record<string, any> {\r\n      return {\r\n        $validator: this.$validator // allow child components to have validator injected\r\n      }\r\n    },\r\n    mounted (): void {\r\n      if (this.isEdit) {\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customergetnetbyid[0].replace('{customerid}', this.customerId).replace('{groupid}', this.groupId)\r\n        this.$http.get(url, this.customer).then((result: any) => {\r\n          this.customer = result.body\r\n          this.loaded = true\r\n        }, (err: Response | any) => {\r\n          this.displayError(err)\r\n        })\r\n      } else {\r\n        this.customer = {\r\n          availabilityFrequency: AvailabilityFrequence.OncePerWeek,\r\n          birthdate: new Date(),\r\n          city: '',\r\n          contactCity: '',\r\n          contactEmail: '',\r\n          contactFirstName: '',\r\n          contactLastName: '',\r\n          contactPhonenumber: '',\r\n          contactRelation: '',\r\n          contactStreetAddress: '',\r\n          contactZipCode: '',\r\n          customerApproval: false,\r\n          customerApprovedBy: '',\r\n          customerInterviewed: false,\r\n          customerInterviewedBy: '',\r\n          customerInterviewedOnDate: new Date(),\r\n          customerLanguages: [],\r\n          customerNotForPrivateRelations: false,\r\n          customerNotForPrivateRelationsBy: '',\r\n          customerNotForSpr: false,\r\n          customerNotForSprBy: '',\r\n          customerTypeOtherInfo: '',\r\n          customerTypes: NetCustomerTypes.NotDefined,\r\n          description: '',\r\n          firstName: '',\r\n          friendManagementGroupId: this.groupId,\r\n          friendPools: [],\r\n          friendships: [],\r\n          fullname: '',\r\n          gender: Gender.Male,\r\n          gsmPhone: '',\r\n          homePhone: '',\r\n          id: 0,\r\n          interestOther: '',\r\n          interests: Interests.NotDefined,\r\n          lastContacted: undefined,\r\n          lastFriendshipEndDate: new Date(),\r\n          lastName: '',\r\n          multipleVolunteers: false,\r\n          nativeLanguage: 'fi',\r\n          onHold: false,\r\n          onHoldComment: '',\r\n          onHoldUntilDate: undefined,\r\n          otherContact: '',\r\n          otherLanguages: '',\r\n          preferredAges: PreferredAges.NotDefined,\r\n          preferredGenders: PreferredGenders.Other | PreferredGenders.Male | PreferredGenders.Female,\r\n          privateNotes: '',\r\n          shortDescription: '',\r\n          startedPending: new Date(),\r\n          state: CustomerState.PendingApproval,\r\n          streetAddress: '',\r\n          zipCode: '',\r\n          availabilityTimes: AvailabilityTimes.NotDefined,\r\n          email: '',\r\n          econtactDiscord: '',\r\n          econtactEmail: '',\r\n          econtactFreetext: '',\r\n          econtactInstagram: '',\r\n          econtactKik: '',\r\n          econtactSkype: '',\r\n          econtactTelegram: ''\r\n        } as FriendCustomerNetDto\r\n        this.loaded = true\r\n      }\r\n    },\r\n    methods: {\r\n      failLoad (): void {\r\n        this.displayError(this.$t('common.fetchFailed'))\r\n      },\r\n      onCustomerChanged (newCustomer: FriendCustomerNetDto): void {\r\n        this.customer = newCustomer\r\n      },\r\n      onInterviewDataChanged (newData: InterviewData): void {\r\n        if (!this.customer) return\r\n\r\n        this.customer.customerInterviewed = newData.interviewed\r\n        this.customer.customerInterviewedBy = newData.interviewedBy\r\n        this.customer.customerInterviewedOnDate = newData.interviewedDate\r\n      },\r\n      onOnHoldDataChanged (newData: OnHoldData): void {\r\n        if (!this.customer) return\r\n\r\n        this.customer.onHoldUntilDate = newData.onHold ? newData.onHoldDeadline : undefined\r\n        this.customer.onHoldComment = newData.onHold ? newData.onHoldDetails : ''\r\n      },\r\n      onlastContactedChanged (hasContactDate: boolean, lastContacted: Date): void {\r\n        if (!this.customer) return\r\n  \r\n        this.customer.lastContacted = hasContactDate ? lastContacted : undefined\r\n      },\r\n      onApprovalDataChanged (newData: ApprovalData): void {\r\n        if (!this.customer) return\r\n\r\n        this.customer.customerApproval = newData.approval\r\n        this.customer.customerApprovedBy = `${newData.approvalDate} || ${newData.approvedBy}`\r\n      },\r\n      onSuitabilityDataChanged (newData: SuitabilityData): void {\r\n        if (!this.customer) return\r\n\r\n        this.customer.customerNotForPrivateRelations = newData.notForPrivateRelations\r\n        this.customer.customerNotForPrivateRelationsBy = `${newData.notForPrivateRelationsReason} || ${newData.notForPrivateRelationsBy}`\r\n        this.customer.customerNotForSpr = newData.notForSpr\r\n        this.customer.customerNotForSprBy = `${newData.notForSprReason} || ${newData.notForSprBy}`\r\n      },\r\n      cancel (): void {\r\n        const url = this.isEdit\r\n          ? `/friend/customerpreview/${this.groupId}/${this.customerId}`\r\n          : `/friend/search/${this.groupId}/customer`\r\n        this.$router.push(url)\r\n      },\r\n      save (): void {\r\n        if (this.customer?.preferredAges === PreferredAges.NotDefined) {\r\n          this.customer.preferredAges = 1\r\n          this.$nextTick(() => {\r\n            if (!this.customer) return\r\n            this.customer.preferredAges = PreferredAges.NotDefined\r\n            this.validateAndSave()\r\n          })\r\n        } else {\r\n          this.validateAndSave()\r\n        }\r\n      },\r\n      validateAndSave (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          // check any child controls have not added errors\r\n          if (!result || (this.validationErrors && this.validationErrors.length)) {\r\n            var target = this.$refs['validationtarget']\r\n            if (target) {\r\n              window.scrollTo({\r\n                // @ts-ignore\r\n                top: target.$el.parentElement.clientHeight,\r\n                left: 0,\r\n                behavior: 'smooth'\r\n              })\r\n            }\r\n            return\r\n          }\r\n          if (this.customer) {\r\n            if (this.isEdit) {\r\n              this.updateCustomer()\r\n            } else {\r\n              this.addCustomer()\r\n            }\r\n          }\r\n        }, error => {\r\n          console.log('validate error', error)\r\n        })  \r\n      },\r\n      addCustomer (): void {\r\n        if (!this.customer) return\r\n\r\n        this.customer = this.convertDatesToUtc(this.customer)\r\n\r\n        this.isSaving = true\r\n        const addUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customeraddnet[0]\r\n\r\n        this.$http.post(addUrl, this.customer).then((result: any) => {\r\n          this.isSaving = false\r\n          this.$router.push(`/friend/search/${this.groupId}/customer`)\r\n        }, (err: Response | any) => {\r\n          this.isSaving = false\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      updateCustomer (): void {\r\n        if (!this.customer) return\r\n\r\n        this.customer = this.convertDatesToUtc(this.customer)\r\n\r\n        this.isSaving = true\r\n        const updateUrl = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customerupdatenet[0]\r\n\r\n        this.$http.put(updateUrl, this.customer).then((result: any) => {\r\n          this.isSaving = false\r\n          this.$router.push(`/friend/customerpreview/${this.groupId}/${this.customer?.id}`)\r\n        }, (err: Response | any) => {\r\n          this.isSaving = false\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      convertDatesToUtc(customer: FriendCustomerNetDto | undefined): FriendCustomerNetDto | undefined {\r\n        if (!customer) return customer\r\n\r\n        // convert dates to UTC and make sure they are corrected to the right date\r\n        if (customer.lastContacted) {\r\n          customer.lastContacted = convertToUTC(customer.lastContacted)\r\n        }\r\n        if (customer.customerInterviewed && customer.customerInterviewedOnDate) {\r\n          customer.customerInterviewedOnDate = convertToUTC(customer.customerInterviewedOnDate)\r\n        }\r\n        if (customer.onHoldUntilDate) {\r\n          customer.onHoldUntilDate = convertToUTC(customer.onHoldUntilDate)\r\n        }\r\n\r\n        return customer\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .customernetform {\r\n    .nav-header {\r\n      border-bottom: none;\r\n    }\r\n    .feature-panel {\r\n      background-color: $brand-white;\r\n      margin-bottom: 30px;\r\n      padding-top: 15px;\r\n\r\n      &.buttons {\r\n        margin-top: 30px;\r\n        padding-top: 15px;\r\n        padding-bottom: 15px;\r\n        .cancel {\r\n          text-align: left;\r\n        }\r\n        .save {\r\n          text-align: right;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerNetForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerNetForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerNetForm.vue?vue&type=template&id=0ff7bed2\"\nimport script from \"./CustomerNetForm.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerNetForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerNetForm.vue?vue&type=style&index=0&id=0ff7bed2&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container customersearch\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)]),(_vm.isAuthorized)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-8 col-lg-9 order-md-2 search-list\"},[_c('banner',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isLoading && !_vm.noResults),expression:\"!isLoading && !noResults\"}],attrs:{\"banner-text\":_vm.$t('friendManagementSettings.warningBanner')}}),(_vm.isInitialized)?_c('searchheader',{attrs:{\"id\":_vm.id,\"is-net-fmg\":_vm.isNetFmg,\"search\":_vm.searchText},on:{\"search\":_vm.onSearch,\"sort\":_vm.onSort}}):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isCustomerTab || _vm.isVolunteerTab),expression:\"isCustomerTab || isVolunteerTab\"}],staticClass:\"searchresults\"},[(_vm.group)?_c('resultlist',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasSearched),expression:\"hasSearched\"}],attrs:{\"group\":_vm.group,\"take\":_vm.searchFilter.pagesize,\"skip\":_vm.searchFilter.skip,\"total\":_vm.total,\"search-type\":_vm.searchFilter.searchType,\"customerlist\":_vm.customerList,\"volunteerlist\":_vm.volunteerList},on:{\"pagechanged\":_vm.onPageChanged,\"next\":_vm.onNext,\"previous\":_vm.onPrevious,\"selected\":_vm.onItemSelected}}):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isLoading && _vm.noResults),expression:\"!isLoading && noResults\"}],staticClass:\"noresults infocontainer\"},[_c('div',{staticClass:\"info warning\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(_vm._s(_vm.$t('customerSearch.noResults'))+\" \")],1)])],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isPoolsTab),expression:\"isPoolsTab\"}],staticClass:\"pools\"},[(_vm.group)?_c('div',[(_vm.group.netFriendship)?_c('PoolsListNet',{attrs:{\"filter\":_vm.poolFilter,\"search\":_vm.poolSearchText}}):_c('PoolsListStandard',{attrs:{\"filter\":_vm.poolFilter,\"search\":_vm.poolSearchText}})],1):_vm._e()]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isDiscussionTab),expression:\"isDiscussionTab\"}],staticClass:\"discussion\"},[_c('discussion')],1)],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isLoading),expression:\"!isLoading\"}],staticClass:\"col-md-4 col-lg-3 order-md-1 mt-3 mt-md-0 search-filter\",class:{'disabled' : _vm.isLoading}},[((_vm.isCustomerTab || _vm.isVolunteerTab) && _vm.searchFilter && _vm.group)?_c('customerfilter',{attrs:{\"group\":_vm.group,\"filter-type\":_vm.searchFilter.searchType},on:{\"filterchanged\":_vm.onCustomerFilterChanged}}):_vm._e(),(_vm.isPoolsTab)?_c('poolfilter',{attrs:{\"filter\":_vm.poolFilter},on:{\"filterchanged\":_vm.onPoolFilterChanged}}):_vm._e()],1)]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"customerfilter\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.filterTitle')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('filteritems',{attrs:{\"customer-types\":_vm.customerTypes,\"customer-states\":_vm.customerStates,\"interests\":_vm.interests,\"friendship-types\":_vm.friendshipTypes,\"languages\":_vm.languageFilters,\"ages\":_vm.ages,\"genders\":_vm.genders,\"filter-type\":_vm.filterType,\"show-all\":_vm.showAll,\"time-without-friends\":_vm.timeWithoutFriends},on:{\"input\":_vm.filterChanged},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"filteritems\"},[(_vm.showAll)?_c('filter-button-group',{attrs:{\"filter-items\":_vm.customerStates,\"label\":_vm.$t('customerSearch.filterCustomerStatusTitle'),\"list\":_vm.list.customerStates,\"status\":true,\"collapsible\":true,\"isCollapsed\":false},on:{\"update-list\":_vm.changeCustomerStatus}}):_vm._e(),_c('filter-button-group',{attrs:{\"filter-items\":_vm.customerTypes,\"label\":_vm.$t('customerSearch.filterCustomerTypeTitle'),\"list\":_vm.list.customerTypes,\"collapsible\":true},on:{\"update-list\":_vm.changeCustomerTypes}}),_c('div',{staticClass:\"groupmembership\"},[_c('sprcol',{attrs:{\"heading\":_vm.$t('customerSearch.groupMembership'),\"fontsize\":'15px !important;'}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('span',{class:{ 'filterbutton': true, 'selected': _vm.hasGroupMembershipSelected }},[_c('sprbutton',{class:'',attrs:{\"title\":_vm.$t('customerSearch.isMember'),\"size\":6,\"bordersize\":2,\"value\":_vm.hasGroupMembershipSelected.toString(),\"click-event\":\"changeHasGroupMembership\"},on:{\"changeHasGroupMembership\":_vm.changeHasGroupMembership}})],1)])])],1),(_vm.showAll)?_c('filter-button-group',{attrs:{\"filter-items\":_vm.genders,\"label\":_vm.$t('customerSearch.gender'),\"list\":_vm.list.genders,\"collapsible\":true},on:{\"update-list\":_vm.changeGender}}):_vm._e(),(_vm.showAll)?_c('filter-button-group',{attrs:{\"filter-items\":_vm.friendshipTypes,\"label\":_vm.$t('customerSearch.filterFriendshipTypeTitle'),\"list\":_vm.list.friendshipTypes,\"collapsible\":true},on:{\"update-list\":_vm.changeFriendshipType}}):_vm._e(),_c('filter-button-group',{attrs:{\"filter-items\":_vm.languages,\"label\":_vm.$t('customerForm.nativeLanguage'),\"list\":_vm.list.motherTongs,\"collapsible\":true},on:{\"update-list\":_vm.changeMotherTongs}}),_c('filter-button-group',{attrs:{\"filter-items\":_vm.languages,\"label\":_vm.$t('customerForm.customerLanguages'),\"list\":_vm.list.languages,\"collapsible\":true},on:{\"update-list\":_vm.changeLanguages}}),_c('filter-button-group',{attrs:{\"filter-items\":_vm.ages,\"label\":_vm.$t('customerSearch.filterAge'),\"list\":_vm.list.ages,\"collapsible\":true},on:{\"update-list\":_vm.changeAges}}),(_vm.showAll)?_c('filter-button-group',{attrs:{\"filter-items\":_vm.timeWithoutFriends,\"label\":_vm.$t('customerSearch.timeWithoutFriends'),\"list\":_vm.list.timeWithoutFriends,\"collapsible\":true},on:{\"update-list\":_vm.changeTimeWithoutFriends}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"spr-collapsible\"},[_c('div',{on:{\"click\":function($event){_vm.collapsed = !_vm.collapsed}}},[_c('span',{staticClass:\"brand-red cap-label head-container\"},[_vm._v(\" \"+_vm._s(_vm.heading)+\" \"),(_vm.collapsed)?_c('font-awesome-icon',{attrs:{\"icon\":\"chevron-down\"}}):_c('font-awesome-icon',{attrs:{\"icon\":\"chevron-up\"}})],1)]),(!_vm.collapsed)?_c('div',[_vm._t(\"body\",function(){return [_vm._v(\" Remember to insert element to 'body' slot! \")]})],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"spr-collapsible\">\r\n    <div @click=\"collapsed = !collapsed\">\r\n      <span class=\"brand-red cap-label head-container\">\r\n        {{ heading }}\r\n        <font-awesome-icon v-if=\"collapsed\" icon=\"chevron-down\" />\r\n        <font-awesome-icon v-else icon=\"chevron-up\" />\r\n      </span>\r\n    </div>\r\n    <div v-if=\"!collapsed\">\r\n      <slot name=\"body\">\r\n        Remember to insert element to 'body' slot!\r\n      </slot>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'SprCollabsible',\r\n    props: {\r\n      heading: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      collapsedByDefault: {\r\n        type: Boolean,\r\n        default: true\r\n      }\r\n    },\r\n    data: function () {\r\n      return {\r\n        collapsed: this.collapsedByDefault\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n  .spr-collapsible {\r\n    .head-container {\r\n      cursor: pointer;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRCollapsible.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRCollapsible.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRCollapsible.vue?vue&type=template&id=28bf7ee6&scoped=true\"\nimport script from \"./SPRCollapsible.vue?vue&type=script&lang=js\"\nexport * from \"./SPRCollapsible.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRCollapsible.vue?vue&type=style&index=0&id=28bf7ee6&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"28bf7ee6\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.filterItems && _vm.filterItems.length),expression:\"filterItems && filterItems.length\"}]},[(_vm.collapsible)?_c('div',{staticClass:\"collaps\"},[_c('sprcol',{attrs:{\"collapsedByDefault\":_vm.isCollapsed,\"heading\":_vm.label,\"fontsize\":'15px !important;'}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},_vm._l((_vm.filterItems),function(filteritem){return _c('span',{key:filteritem.name},[_c('span',{class:{ 'filterbutton': true, 'selected': _vm.isSelected(filteritem.id) }},[_c('sprbutton',{class:_vm.status ? _vm.getStateFilterCssClass(filteritem.id) : '',attrs:{\"title\":filteritem.name,\"size\":6,\"bordersize\":2,\"value\":filteritem.id.toString(),\"click-event\":\"changeFilterItem\"},on:{\"changeFilterItem\":_vm.changeFilterItem}})],1)])}),0)])],1):_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.label)+\" \")])])]),(!_vm.collapsible)?_c('div',{staticClass:\"row filter-customer-status\"},[_c('div',{staticClass:\"col-12\"},_vm._l((_vm.filterItems),function(filteritem){return _c('span',{key:filteritem.name},[_c('span',{class:{ 'filterbutton': true, 'selected': _vm.isSelected(filteritem.id) }},[_c('sprbutton',{class:_vm.status ? _vm.getStateFilterCssClass(filteritem.id) : '',attrs:{\"title\":filteritem.name,\"size\":6,\"bordersize\":2,\"value\":filteritem.id.toString(),\"click-event\":\"changeFilterItem\"},on:{\"changeFilterItem\":_vm.changeFilterItem}})],1)])}),0)]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-show=\"filterItems && filterItems.length\">\r\n    <div v-if=\"collapsible\" class=\"collaps\">\r\n      <sprcol :collapsedByDefault=\"isCollapsed\" :heading=\"label\" :fontsize=\"'15px !important;'\">\r\n        <div slot=\"body\">\r\n          <span v-for=\"(filteritem) in filterItems\" :key=\"filteritem.name\">\r\n            <span :class=\"{ 'filterbutton': true, 'selected': isSelected(filteritem.id) }\">\r\n              <sprbutton\r\n                :title=\"filteritem.name\"\r\n                :size=\"6\"\r\n                :bordersize=\"2\"\r\n                :value=\"filteritem.id.toString()\"\r\n                :class=\"status ? getStateFilterCssClass(filteritem.id) : ''\"\r\n                click-event=\"changeFilterItem\"\r\n                @changeFilterItem=\"changeFilterItem\"\r\n              />\r\n            </span>\r\n          </span>\r\n        </div>\r\n      </sprcol>\r\n    </div>\r\n    <div v-else class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"cap-label\">\r\n          {{ label }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div v-if=\"!collapsible\" class=\"row filter-customer-status\">\r\n      <div class=\"col-12\">\r\n        <span v-for=\"(filteritem) in filterItems\" :key=\"filteritem.name\">\r\n          <span :class=\"{ 'filterbutton': true, 'selected': isSelected(filteritem.id) }\">\r\n            <sprbutton\r\n              :title=\"filteritem.name\"\r\n              :size=\"6\"\r\n              :bordersize=\"2\"\r\n              :value=\"filteritem.id.toString()\"\r\n              :class=\"status ? getStateFilterCssClass(filteritem.id) : ''\"\r\n              click-event=\"changeFilterItem\"\r\n              @changeFilterItem=\"changeFilterItem\"\r\n            />\r\n          </span>\r\n        </span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from './SPRButton.vue'\r\n  import sprcol from './SPRCollapsible.vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'FilterButtonGroup',\r\n    components: { sprbutton, sprcol },\r\n    props: {\r\n      filterItems: {\r\n        type: Array as () => Array<any>,\r\n        required: true\r\n      },\r\n      label: {\r\n        type: String,\r\n        required: true\r\n      },\r\n      list: {\r\n        type: Array as () => Array<any>,\r\n        required: true\r\n      },\r\n      status: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      collapsible: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      isCollapsed: {\r\n        type: Boolean,\r\n        default: true\r\n      }\r\n    },\r\n    methods: {\r\n      isSelected (id): boolean {\r\n        return _.indexOf(this.list, id) >= 0\r\n      },\r\n      getStateFilterCssClass (id) {\r\n        return `statefilteritem filteritem-${id}`\r\n      },\r\n      changeFilterItem (id) {\r\n        this.$emit('update-list', id)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n @import \"../assets/scss/_variables.scss\";\r\n\r\n    .filter-customer-type,\r\n    .filter-customer-status,\r\n    .filter-activity-type {\r\n      margin-bottom: 30px;\r\n    }\r\n    .collaps {\r\n      padding-bottom: 30px;\r\n    }\r\n    .cap-label {\r\n      margin-bottom: 15px;\r\n    }\r\n\r\n    .filterbutton {\r\n      padding-right:6px;\r\n      margin-top:8px;\r\n      display: inline-block;\r\n\r\n      .statefilteritem {\r\n        &:hover {\r\n          color: $brand-white;\r\n        }\r\n        &.filteritem-1 {\r\n          border-color: $state-pendingapproval;\r\n          &:hover {\r\n            background-color: $state-pendingapproval;\r\n          }\r\n        }\r\n\r\n        &.filteritem-2 {\r\n          border-color: $state-active;\r\n          &:hover {\r\n            background-color: $state-active;\r\n          }\r\n        }\r\n\r\n        &.filteritem-3 {\r\n          border-color: $state-pendingfriend;\r\n          &:hover {\r\n            background-color: $state-pendingfriend;\r\n          }\r\n        }\r\n\r\n        &.filteritem-4 {\r\n          border-color: $state-activefriendship;\r\n          &:hover {\r\n            background-color: $state-activefriendship;\r\n          }\r\n        }\r\n\r\n        &.filteritem-5 {\r\n          border-color: $state-nonactive;\r\n          &:hover {\r\n            background-color: $state-nonactive;\r\n          }\r\n        }\r\n\r\n        &.filteritem-6 {\r\n          border-color: $state-onhold;\r\n          &:hover {\r\n            background-color: $state-onhold;\r\n          }\r\n        }\r\n      }\r\n\r\n      button {\r\n        border-color:$brand-grey5;\r\n        color:$brand-black;\r\n        font-size:12px;\r\n        padding:5px 10px;\r\n\r\n        &:hover {\r\n          border-color:$brand-red;\r\n          color:$brand-white;\r\n        }\r\n\r\n        &:focus {\r\n          outline: none;\r\n        }\r\n      }\r\n\r\n      &.selected {\r\n        outline: none;\r\n        button {\r\n          outline: none;\r\n          border-color:$brand-red;\r\n          color:$brand-white;\r\n          background-color:$brand-red;\r\n\r\n          &:hover {\r\n            color:$brand-white;\r\n          }\r\n\r\n          &.filteritem-1 {\r\n            background-color: $state-pendingapproval;\r\n          }\r\n          &.filteritem-2 {\r\n            background-color: $state-active;\r\n          }\r\n          &.filteritem-3 {\r\n            background-color: $state-pendingfriend;\r\n          }\r\n          &.filteritem-4 {\r\n            background-color: $state-activefriendship;\r\n          }\r\n          &.filteritem-5 {\r\n            background-color: $state-nonactive;\r\n          }\r\n          &.filteritem-6 {\r\n            background-color: $state-onhold;\r\n          }\r\n        }\r\n      }\r\n    }\r\n</style>","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilterButtonGroup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilterButtonGroup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FilterButtonGroup.vue?vue&type=template&id=27627c56&scoped=true\"\nimport script from \"./FilterButtonGroup.vue?vue&type=script&lang=ts\"\nexport * from \"./FilterButtonGroup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilterButtonGroup.vue?vue&type=style&index=0&id=27627c56&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"27627c56\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"filteritems\">\r\n    <filter-button-group v-if=\"showAll\"\r\n                         :filter-items=\"customerStates\"\r\n                         :label=\"$t('customerSearch.filterCustomerStatusTitle')\"\r\n                         :list=\"list.customerStates\"\r\n                         :status=\"true\"\r\n                         :collapsible=\"true\"\r\n                         :isCollapsed=\"false\"\r\n                         @update-list=\"changeCustomerStatus\"\r\n    />\r\n    <filter-button-group :filter-items=\"customerTypes\"\r\n                         :label=\"$t('customerSearch.filterCustomerTypeTitle')\"\r\n                         :list=\"list.customerTypes\"\r\n                         :collapsible=\"true\"\r\n                         @update-list=\"changeCustomerTypes\"\r\n    />\r\n\r\n    <div class=\"groupmembership\">\r\n      <sprcol :heading=\"$t('customerSearch.groupMembership')\"\r\n              :fontsize=\"'15px !important;'\"\r\n      >\r\n        <div slot=\"body\">\r\n          <span :class=\"{ 'filterbutton': true, 'selected': hasGroupMembershipSelected }\">\r\n            <sprbutton :title=\"$t('customerSearch.isMember')\"\r\n                       :size=\"6\"\r\n                       :bordersize=\"2\"\r\n                       :value=\"hasGroupMembershipSelected.toString()\"\r\n                       click-event=\"changeHasGroupMembership\"\r\n                       :class=\"''\"\r\n                       @changeHasGroupMembership=\"changeHasGroupMembership\"\r\n            />\r\n          </span>\r\n        </div>\r\n      </sprcol>\r\n    </div>\r\n    <filter-button-group v-if=\"showAll\"\r\n                         :filter-items=\"genders\"\r\n                         :label=\"$t('customerSearch.gender')\"\r\n                         :list=\"list.genders\"\r\n                         :collapsible=\"true\"\r\n\r\n                         @update-list=\"changeGender\"\r\n    />\r\n    <filter-button-group v-if=\"showAll\"\r\n                         :filter-items=\"friendshipTypes\"\r\n                         :label=\"$t('customerSearch.filterFriendshipTypeTitle')\"\r\n                         :list=\"list.friendshipTypes\"\r\n                         :collapsible=\"true\"\r\n\r\n                         @update-list=\"changeFriendshipType\"\r\n    />\r\n\r\n    <filter-button-group :filter-items=\"languages\"\r\n                         :label=\"$t('customerForm.nativeLanguage')\"\r\n                         :list=\"list.motherTongs\"\r\n                         :collapsible=\"true\"\r\n\r\n                         @update-list=\"changeMotherTongs\"\r\n    />\r\n\r\n    <filter-button-group :filter-items=\"languages\"\r\n                         :label=\"$t('customerForm.customerLanguages')\"\r\n                         :list=\"list.languages\"\r\n                         :collapsible=\"true\"\r\n\r\n                         @update-list=\"changeLanguages\"\r\n    />\r\n\r\n    <filter-button-group :filter-items=\"ages\"\r\n                         :label=\"$t('customerSearch.filterAge')\"\r\n                         :list=\"list.ages\"\r\n                         :collapsible=\"true\"\r\n\r\n                         @update-list=\"changeAges\"\r\n    />\r\n    <filter-button-group v-if=\"showAll\"\r\n                         :filter-items=\"timeWithoutFriends\"\r\n                         :label=\"$t('customerSearch.timeWithoutFriends')\"\r\n                         :list=\"list.timeWithoutFriends\"\r\n                         :collapsible=\"true\"\r\n\r\n                         @update-list=\"changeTimeWithoutFriends\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprcol from '../SPRCollapsible.vue'\r\n\r\n  import filterButtonGroup from '../FilterButtonGroup.vue'\r\n  import { SearchFilter, SearchFilterText } from '../../types/custom'\r\n  import { CustomerTypes, NetCustomerTypes, CustomerState, Interests,\r\n           NetFriendshipTypes, FriendshipTypes, LanguageDto, PreferredAges,\r\n           PreferredGenders, TimeWithoutFriends, OrderByFriendType } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    list: SearchFilter,\r\n    hasGroupMembershipSelected: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'FilterItems',\r\n    components: { sprbutton, sprcol, filterButtonGroup },\r\n    props: {\r\n      value: {\r\n        type: Object as () => SearchFilter,\r\n        required: true\r\n      },\r\n      showAll: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      filterType: {\r\n        type: String,\r\n        default: 'VOLUNTEER'\r\n      },\r\n      customerTypes: {\r\n        type: Array as () => Array<CustomerTypes> | Array<NetCustomerTypes>,\r\n        default: () => []\r\n      },\r\n      customerStates: {\r\n        type: Array as () => Array<CustomerState>,\r\n        default: () => []\r\n      },\r\n      interests: {\r\n        type: Array as () => Array<Interests>,\r\n        default: () => []\r\n      },\r\n      friendshipTypes: {\r\n        type: Array as () => Array<FriendshipTypes> | Array<NetFriendshipTypes>,\r\n        default: () => []\r\n      },\r\n      languages: {\r\n        type: Array as () => Array<LanguageDto>,\r\n        default: () => []\r\n      },\r\n      ages: {\r\n        type: Array as () => Array<PreferredAges>,\r\n        default: () => []\r\n      },\r\n      genders: {\r\n        type: Array as () => Array<PreferredGenders>,\r\n        default: () => []\r\n      },\r\n      timeWithoutFriends: {\r\n        type: Array as () => Array<TimeWithoutFriends>,\r\n        default: () => []\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        list: {\r\n          customerTypes: [],\r\n          customerStates: [],\r\n          genders: [],\r\n          friendshipTypes: [],\r\n          motherTongs: [],\r\n          languages: [],\r\n          ages: [],\r\n          timeWithoutFriends: [],\r\n          interests: [],\r\n          hasGroupMembership: false,\r\n          searchText: {\r\n            customer: '',\r\n            volunteer: ''\r\n          } as SearchFilterText,\r\n          skip: 0,\r\n          pagesize: 10,\r\n          searchType: this.filterType,\r\n          orderByFriendType: OrderByFriendType.NotDefined\r\n        } as SearchFilter,\r\n        hasGroupMembershipSelected: this.$store.state.searchFilter.hasGroupMembership || false\r\n      }\r\n    },\r\n    watch: {\r\n      value (newVal) {\r\n        this.list = newVal\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.list = this.value\r\n    },\r\n    methods: {\r\n\r\n      changeCustomerType: function (id): void {\r\n        this.updateList(this.list.customerTypes, id)\r\n        this.$emit('input', this.list)\r\n      },\r\n      changeCustomerTypes (id) { // Expecting { id, action }\r\n        this.updateList(this.list.customerTypes, id)\r\n        this.$emit('input', this.list) // Update parent model if needed\r\n      },\r\n      changeCustomerStatus: function (id): void {\r\n        this.updateList(this.list.customerStates, id)\r\n        this.$emit('input', this.list)\r\n      },\r\n      changeHasGroupMembership: function (): void {\r\n        this.hasGroupMembershipSelected = !this.hasGroupMembershipSelected\r\n        this.list.hasGroupMembership = this.hasGroupMembershipSelected\r\n        this.$emit('input', this.list)\r\n      },\r\n      changeActivityType: function (id): void {\r\n        this.updateList(this.list.interests, id)\r\n        this.$emit('input', this.list)\r\n      },\r\n      changeFriendshipType: function (id): void {\r\n        this.updateList(this.list.friendshipTypes, id)\r\n        this.$emit('input', this.list)\r\n      },\r\n      changeGender: function (id): void {\r\n        this.updateList(this.list.genders, id)\r\n        this.$emit('input', this.list)\r\n      },\r\n      changeMotherTongs: function (id): void {\r\n        this.updateLanguageList(this.list.motherTongs, id)\r\n        this.$emit('input', this.list)\r\n      },\r\n      changeLanguages: function (id): void {\r\n        this.updateLanguageList(this.list.languages, id)\r\n        this.$emit('input', this.list)\r\n      },\r\n      changeAges: function (id): void {\r\n        this.updateList(this.list.ages, id)\r\n        this.$emit('input', this.list)\r\n      },\r\n      changeTimeWithoutFriends: function (id): void {\r\n        this.updateList(this.list.timeWithoutFriends, id)\r\n        this.$emit('input', this.list)\r\n      },\r\n      updateList: function (list, id): void {\r\n        var existingItemIndex = _.indexOf(list, Number(id))\r\n        if (existingItemIndex >= 0) {\r\n          this.$delete(list, existingItemIndex)\r\n        } else {\r\n          this.$set(list, list.length, Number(id))\r\n        }\r\n      },\r\n      updateLanguageList: function (list, isoCode): void {\r\n        var existingItemIndex = _.indexOf(list, isoCode)\r\n        if (existingItemIndex >= 0) {\r\n          this.$delete(list, existingItemIndex)\r\n        } else {\r\n          this.$set(list, list.length, isoCode)\r\n        }\r\n      },\r\n      isSelected (list, id): boolean {\r\n        return _.indexOf(list, id) >= 0\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .filteritems {\r\n    .filter-customer-status {\r\n      margin-bottom: 30px;\r\n    }\r\n    .groupmembership {\r\n      padding-bottom: 30px;\r\n    }\r\n    .cap-label {\r\n      margin-bottom: 15px;\r\n      padding:0 5px;\r\n\r\n    }\r\n\r\n    .filterbutton {\r\n      padding-right:6px;\r\n      margin-bottom: 8px;\r\n      display: inline-block;\r\n\r\n      .statefilteritem {\r\n        &:hover {\r\n          color: $brand-white;\r\n        }\r\n        &.filteritem-1 {\r\n          border-color: $state-pendingapproval;\r\n          &:hover {\r\n            background-color: $state-pendingapproval;\r\n          }\r\n        }\r\n\r\n        &.filteritem-2 {\r\n          border-color: $state-active;\r\n          &:hover {\r\n            background-color: $state-active;\r\n          }\r\n        }\r\n\r\n        &.filteritem-3 {\r\n          border-color: $state-pendingfriend;\r\n          &:hover {\r\n            background-color: $state-pendingfriend;\r\n          }\r\n        }\r\n\r\n        &.filteritem-4 {\r\n          border-color: $state-activefriendship;\r\n          &:hover {\r\n            background-color: $state-activefriendship;\r\n          }\r\n        }\r\n\r\n        &.filteritem-5 {\r\n          border-color: $state-nonactive;\r\n          &:hover {\r\n            background-color: $state-nonactive;\r\n          }\r\n        }\r\n\r\n        &.filteritem-6 {\r\n          border-color: $state-onhold;\r\n          &:hover {\r\n            background-color: $state-onhold;\r\n          }\r\n        }\r\n      }\r\n\r\n      button {\r\n        border-color:$brand-grey5;\r\n        color:$brand-black;\r\n        font-size:12px;\r\n        padding:5px 10px;\r\n\r\n        &:hover {\r\n          border-color:$brand-red;\r\n          color:$brand-white;\r\n        }\r\n\r\n        &:focus {\r\n          outline: none;\r\n        }\r\n      }\r\n      &.selected {\r\n        outline: none;\r\n        button {\r\n          outline: none;\r\n          border-color:$brand-red;\r\n          color:$brand-white;\r\n          background-color:$brand-red;\r\n\r\n          &:hover {\r\n            color:$brand-white;\r\n          }\r\n\r\n          &.filteritem-1 {\r\n            background-color: $state-pendingapproval;\r\n          }\r\n          &.filteritem-2 {\r\n            background-color: $state-active;\r\n          }\r\n          &.filteritem-3 {\r\n            background-color: $state-pendingfriend;\r\n          }\r\n          &.filteritem-4 {\r\n            background-color: $state-activefriendship;\r\n          }\r\n          &.filteritem-5 {\r\n            background-color: $state-nonactive;\r\n          }\r\n          &.filteritem-6 {\r\n            background-color: $state-onhold;\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilterItems.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilterItems.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FilterItems.vue?vue&type=template&id=796dbba8&scoped=true\"\nimport script from \"./FilterItems.vue?vue&type=script&lang=ts\"\nexport * from \"./FilterItems.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilterItems.vue?vue&type=style&index=0&id=796dbba8&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"796dbba8\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"customerfilter\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <h4>{{ $t('customerSearch.filterTitle') }}</h4>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <filteritems\r\n          v-model=\"filter\"\r\n          :customer-types=\"customerTypes\"\r\n          :customer-states=\"customerStates\"\r\n          :interests=\"interests\"\r\n          :friendship-types=\"friendshipTypes\"\r\n          :languages=\"languageFilters\"\r\n          :ages=\"ages\"\r\n          :genders=\"genders\"\r\n          :filter-type=\"filterType\"\r\n          :show-all=\"showAll\"\r\n          :time-without-friends=\"timeWithoutFriends\"\r\n          @input=\"filterChanged\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import filteritems from './FilterItems.vue'\r\n  import * as _ from 'lodash'\r\n  import { FriendManagementDto, FindNetFriendManagementGroupContentCriteria, FindStandardFriendManagementGroupContentCriteria } from '../../types/index'\r\n  import { FilterItem } from '../../types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    filter: FindNetFriendManagementGroupContentCriteria | FindStandardFriendManagementGroupContentCriteria\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerFilter',\r\n    components: { filteritems },\r\n    props: {\r\n      filterType: {\r\n        type: String,\r\n        default: 'VOLUNTEER'\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      showAll: {\r\n        type: Boolean,\r\n        default: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        filter: this.$store.state.searchFilter\r\n      }\r\n    },\r\n    computed: {\r\n      customerTypes (): Array<FilterItem> {\r\n        var self = this\r\n        if (this.group.netFriendship) {\r\n          return _.map(self.$store.state.netCustomerTypes.filter(x => x.id !== 0), function (val, key) {\r\n            return { id: val.id, name: self.$t('netCustomerTypes.' + val.text) }\r\n          })\r\n        } else {\r\n          return _.map(self.$store.state.customerTypes.filter(x => x.id !== 0), function (val, key) {\r\n            return { id: val.id, name: self.$t('customerTypes.' + val.text) }\r\n          })\r\n        }\r\n      },\r\n      customerStates (): Array<FilterItem> {\r\n        var self = this\r\n        return _.map(this.$store.state.customerStates.filter(x => x.id !== 0), function (val, key) {\r\n          return { id: val.id, name: self.$t('customerStates.' + val.text) }\r\n        })\r\n      },\r\n      interests (): Array<FilterItem> {\r\n        var self = this\r\n        return _.map(this.$store.state.customerInterests.filter(x => x.id !== 0), function (val, key) {\r\n          return { id: val.id, name: self.$t('customerInterests.' + val.text) }\r\n        })\r\n      },\r\n      friendshipTypes (): Array<FilterItem> {\r\n        var self = this\r\n        if (this.group.netFriendship) {\r\n          return _.map(\r\n            _.filter(this.$store.state.netFriendshipTypes.filter(x => x.id !== 0), function (val) {\r\n              return (self.filterType === 'VOLUNTEER')\r\n            }), function (val, key) {\r\n              return { id: val.id, name: self.$t('friendshipTypes.' + val.text) }\r\n            })\r\n        } else {\r\n          return _.map(\r\n            _.filter(this.$store.state.friendshipTypes.filter(x => x.id !== 0), function (val) {\r\n              return (self.filterType === 'VOLUNTEER')\r\n            }), function (val, key) {\r\n              return { id: val.id, name: self.$t('friendshipTypes.' + val.text) }\r\n            })\r\n        }\r\n      },\r\n      languageFilters (): Array<FilterItem> {\r\n        const self = this\r\n        return _.map(this.$store.state.customerLanguages, function (val, key) {\r\n          return { id: val.isoCode, name: self.$t('languages.' + val.isoCode) }\r\n        })\r\n      },\r\n      ages (): Array<FilterItem> {\r\n        const self = this\r\n        return _.map(this.$store.state.preferredAge.filter(x => x.id !== 0), function (val, key) {\r\n          return { id: val.id, name: self.$t('preferredAge.' + val.text).toString() } as FilterItem\r\n        })\r\n      },\r\n      genders (): Array<FilterItem> {\r\n        const self = this\r\n        return _.map(this.$store.state.genders.filter(x => x.id !== 0), function (val, key) {\r\n          return { id: val.id, name: self.$t('genders.' + val.text).toString() } as FilterItem\r\n        })\r\n      }, \r\n      timeWithoutFriends (): Array<FilterItem> {\r\n        const self = this\r\n        return _.map(this.$store.state.timeWithoutFriends.filter(x => x.id !== 0), (val, key) => {\r\n          return { id: val.id, name: self.$t('timeWithoutFriends.' + val.text).toString() } as FilterItem\r\n        })\r\n      }\r\n    },\r\n    methods: {\r\n      filterChanged (val): void {\r\n        this.$emit('filterchanged', val)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customerfilter {\r\n    background-color: $brand-white;\r\n    padding-top: 20px;\r\n\r\n    h4 {\r\n      margin-bottom:50px;\r\n    }\r\n\r\n    @media screen and (max-width: $media-md-max) {\r\n      h4 {\r\n        font-size:1.5em !important;\r\n        margin-bottom: 0;\r\n      }\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerFilter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerFilter.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerFilter.vue?vue&type=template&id=64386f76\"\nimport script from \"./CustomerFilter.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerFilter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerFilter.vue?vue&type=style&index=0&id=64386f76&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"poolfilter\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.filterTitle')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.filterPoolTypeTitle'))+\" \")])])]),_c('div',{staticClass:\"row filter-pool-type\"},[_c('div',{staticClass:\"col-12\"},_vm._l((_vm.poolStatuses),function(status){return _c('span',{key:status.id},[_c('span',{class:{ 'filterbutton': true, 'selected': _vm.isSelected(status.id) }},[_c('sprbutton',{attrs:{\"title\":status.name,\"size\":4,\"bordersize\":2,\"value\":status.id.toString(),\"click-event\":\"changePoolStatus\"},on:{\"changePoolStatus\":_vm.onFilterChanged}})],1)])}),0)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"poolfilter\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <h4>{{ $t('customerSearch.filterTitle') }}</h4>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('customerSearch.filterPoolTypeTitle') }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row filter-pool-type\">\r\n      <div class=\"col-12\">\r\n        <span v-for=\"(status) in poolStatuses\" :key=\"status.id\">\r\n          <span :class=\"{ 'filterbutton': true, 'selected': isSelected(status.id) }\">\r\n            <sprbutton :title=\"status.name\"\r\n                       :size=\"4\"\r\n                       :bordersize=\"2\"\r\n                       :value=\"status.id.toString()\"\r\n                       click-event=\"changePoolStatus\"\r\n                       @changePoolStatus=\"onFilterChanged\"\r\n            />\r\n          </span>\r\n        </span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton'\r\n  export default {\r\n    name: 'PoolFilter',\r\n    components: { sprbutton },\r\n    props: {\r\n      filter: {\r\n        type: Array,\r\n        default: () => []\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        poolStatuses: [\r\n          { id: 1, name: this.$t('customerSearch.friendPoolStatusActive') },\r\n          { id: 2, name: this.$t('customerSearch.friendPoolStatusRemoved') }\r\n        ]\r\n      }\r\n    },\r\n    methods: {\r\n      onFilterChanged (val) {\r\n        this.$emit('filterchanged', Number(val))\r\n      },\r\n      isSelected (filterType) {\r\n        return this.filter.indexOf(filterType) > -1\r\n      }\r\n    }\r\n  }\r\n</script>\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .poolfilter {\r\n    background-color: $brand-white;\r\n    padding-top: 20px;\r\n\r\n    h4 {\r\n      margin-bottom:50px;\r\n    }\r\n\r\n    .cap-label {\r\n      margin-bottom: 15px;\r\n    }\r\n\r\n    @media screen and (max-width: $media-md-max) {\r\n      h4 {\r\n        font-size:1.5em !important;\r\n        margin-bottom: 0;\r\n      }\r\n    }\r\n\r\n    .filterbutton {\r\n      padding-right:6px;\r\n      margin-bottom: 8px;\r\n      display: inline-block;\r\n\r\n      button {\r\n        border-color:$brand-grey5;\r\n        color:$brand-black;\r\n        font-size:12px;\r\n        padding:5px 10px;\r\n\r\n        &:hover {\r\n          border-color:$brand-red;\r\n          color:$brand-white;\r\n        }\r\n      }\r\n\r\n      &.selected {\r\n        button {\r\n          border-color:$brand-red;\r\n          color:$brand-white;\r\n          background-color:$brand-red;\r\n\r\n          &:hover {\r\n            color:$brand-white;\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolFilter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolFilter.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PoolFilter.vue?vue&type=template&id=4acdb9ce\"\nimport script from \"./PoolFilter.vue?vue&type=script&lang=js\"\nexport * from \"./PoolFilter.vue?vue&type=script&lang=js\"\nimport style0 from \"./PoolFilter.vue?vue&type=style&index=0&id=4acdb9ce&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"searchheader\"},[_c('div',{staticClass:\"row resultstypeheader\"},[_c('div',{staticClass:\"col-3\"},[_c('router-link',{staticClass:\"resultstype customer\",class:{ 'selected' : _vm.selectedTab === 'customer' },attrs:{\"to\":`/friend/search/${_vm.id}/customer`}},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.customerTypeFriend'))+\" \")])],1),_c('div',{staticClass:\"col-3\"},[_c('router-link',{staticClass:\"resultstype volunteer\",class:{ 'selected' : _vm.selectedTab === 'volunteer' },attrs:{\"to\":`/friend/search/${_vm.id}/volunteer`}},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.customerTypeVolunteer'))+\" \")])],1),_c('div',{staticClass:\"col-3\"},[_c('router-link',{staticClass:\"resultstype pools\",class:{ 'selected' : _vm.selectedTab === 'pools' },attrs:{\"to\":`/friend/search/${_vm.id}/pools`}},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.pools'))+\" \")])],1),_c('div',{staticClass:\"col-3\"},[_c('router-link',{staticClass:\"resultstype discussion\",class:{ 'selected' : _vm.selectedTab === 'discussion' },attrs:{\"to\":`/friend/search/${_vm.id}/discussion`}},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.discussionGroup'))+\" \")])],1),_c('div',{staticClass:\"navindicator col-12\",class:_vm.selectedTab})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedTab !== 'discussion'),expression:\"selectedTab !== 'discussion'\"}],staticClass:\"row search\"},[_c('div',{staticClass:\"col-md-12 col-lg-8 col-xl-7\"},[_c('searchbox',{attrs:{\"placeholder\":_vm.searchPlaceholder,\"value\":_vm.search},on:{\"input\":_vm.doSearch}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-5\"},[_c('searchsort',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedTab === 'customer' || _vm.selectedTab === 'volunteer'),expression:\"selectedTab === 'customer' || selectedTab === 'volunteer'\"}],attrs:{\"list\":_vm.sortByList},on:{\"input\":_vm.doSort},model:{value:(_vm.sortBy),callback:function ($$v) {_vm.sortBy=$$v},expression:\"sortBy\"}})],1),_c('div',{staticClass:\"col-7\"},[(_vm.selectedTab === 'customer')?_c('div',{staticClass:\"d-flex add-customer justify-content-end\"},[_c('sprbutton',{staticClass:\"next-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.addNewCustomer'),\"bordersize\":2,\"icon\":\"plus\",\"click-event\":\"click\"},on:{\"click\":_vm.addCustomer}})],1):(_vm.selectedTab === 'volunteer')?_c('div',{staticClass:\"d-flex add-customer justify-content-end\"},[_c('sprbutton',{staticClass:\"next-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.addNewVolunteer'),\"bordersize\":2,\"icon\":\"plus\",\"click-event\":\"click\"},on:{\"click\":_vm.addVolunteer}})],1):(_vm.selectedTab === 'pools')?_c('div',{staticClass:\"d-flex add-customer justify-content-end\"},[_c('sprbutton',{staticClass:\"next-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.addNewPool'),\"bordersize\":2,\"icon\":\"plus\",\"click-event\":\"click\"},on:{\"click\":_vm.addPool}})],1):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"searchsort\",class:{'open': _vm.isOpen}},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.changeSort}},[_vm._v(\" \"+_vm._s(_vm.computedSortBy)),_c('font-awesome-icon',{attrs:{\"icon\":\"chevron-down\"}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isOpen),expression:\"isOpen\"}],staticClass:\"sortbox\"},[_c('ul',_vm._l((_vm.list),function(sortitem){return _c('li',{key:sortitem.type,on:{\"click\":function($event){return _vm.chooseItem(sortitem)}}},[_vm._v(\" \"+_vm._s(sortitem.text)+\" \")])}),0)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"searchsort\" :class=\"{'open': isOpen}\">\r\n    <a href=\"javascript:void(0)\" @click=\"changeSort\">\r\n      {{ computedSortBy }}<font-awesome-icon icon=\"chevron-down\" />\r\n    </a>\r\n    <div v-show=\"isOpen\" class=\"sortbox\">\r\n      <ul>\r\n        <li v-for=\"(sortitem) in list\" :key=\"sortitem.type\" @click=\"chooseItem(sortitem)\">\r\n          {{ sortitem.text }}\r\n        </li>\r\n      </ul>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'SPRSearchSort',\r\n    props: {\r\n      value: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      list: {\r\n        type: Array,\r\n        default: () => []\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        isOpen: false\r\n      }\r\n    },\r\n    computed: {\r\n      computedSortBy () {\r\n        var self = this\r\n        if (self.value) {\r\n          var selectedItem = _.find(self.list, (o) => {\r\n            return o.type === self.value\r\n          })\r\n\r\n          if (selectedItem) return selectedItem.text\r\n        }\r\n        return ''\r\n      }\r\n    },\r\n    methods: {\r\n      changeSort: function () {\r\n        this.isOpen = !this.isOpen\r\n      },\r\n      chooseItem: function (item) {\r\n        this.isOpen = false\r\n        this.$emit('input', item.type)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .searchsort {\r\n    position: absolute;\r\n    z-index:1000;\r\n\r\n    &.open {\r\n      box-shadow: 2px 2px 5px $brand-grey5;\r\n    }\r\n\r\n    a {\r\n      display:block;\r\n      padding:5px 10px;\r\n      background-color:$brand-white;\r\n       color: $brand-red;\r\n       text-decoration: none;\r\n     }\r\n    svg {\r\n      margin-left: 10px;\r\n    }\r\n\r\n    .sortbox {\r\n      width:100%;\r\n      border-top:0;\r\n      z-index:1000;\r\n      background-color:$brand-white;\r\n      ul {\r\n        margin:0;\r\n        padding:0;\r\n        li {\r\n          list-style-type: none;\r\n          padding:3px 10px;\r\n          cursor: pointer;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSearchSort.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSearchSort.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRSearchSort.vue?vue&type=template&id=770ce7ea\"\nimport script from \"./SPRSearchSort.vue?vue&type=script&lang=js\"\nexport * from \"./SPRSearchSort.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRSearchSort.vue?vue&type=style&index=0&id=770ce7ea&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"searchheader\">\r\n    <div class=\"row resultstypeheader\">\r\n      <div class=\"col-3\">\r\n        <router-link\r\n          class=\"resultstype customer\"\r\n          :class=\"{ 'selected' : selectedTab === 'customer' }\"\r\n          :to=\"`/friend/search/${id}/customer`\"\r\n        >\r\n          {{ $t('customerSearch.customerTypeFriend') }}\r\n        </router-link>\r\n      </div>\r\n      <div class=\"col-3\">\r\n        <router-link\r\n          class=\"resultstype volunteer\"\r\n          :class=\"{ 'selected' : selectedTab === 'volunteer' }\"\r\n          :to=\"`/friend/search/${id}/volunteer`\"\r\n        >\r\n          {{ $t('customerSearch.customerTypeVolunteer') }}\r\n        </router-link>\r\n      </div>\r\n      <div class=\"col-3\">\r\n        <router-link\r\n          class=\"resultstype pools\"\r\n          :class=\"{ 'selected' : selectedTab === 'pools' }\"\r\n          :to=\"`/friend/search/${id}/pools`\"\r\n        >\r\n          {{ $t('customerSearch.pools') }}\r\n        </router-link>\r\n      </div>\r\n      <div class=\"col-3\">\r\n        <router-link\r\n          class=\"resultstype discussion\"\r\n          :class=\"{ 'selected' : selectedTab === 'discussion' }\"\r\n          :to=\"`/friend/search/${id}/discussion`\"\r\n        >\r\n          {{ $t('customerSearch.discussionGroup') }}\r\n        </router-link>\r\n      </div>\r\n      <div class=\"navindicator col-12\" :class=\"selectedTab\" />\r\n    </div>\r\n    <div v-show=\"selectedTab !== 'discussion'\" class=\"row search\">\r\n      <div class=\"col-md-12 col-lg-8 col-xl-7\">\r\n        <searchbox :placeholder=\"searchPlaceholder\" :value=\"search\" @input=\"doSearch\" />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-5\">\r\n        <searchsort v-show=\"selectedTab === 'customer' || selectedTab === 'volunteer'\" v-model=\"sortBy\" :list=\"sortByList\" @input=\"doSort\" />\r\n      </div>\r\n      <div class=\"col-7\">\r\n        <div v-if=\"selectedTab === 'customer'\" class=\"d-flex add-customer justify-content-end\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.addNewCustomer')\"\r\n                     :bordersize=\"2\"\r\n                     class=\"next-button\"\r\n                     icon=\"plus\"\r\n                     click-event=\"click\"\r\n                     @click=\"addCustomer\"\r\n          />\r\n        </div>\r\n        <div v-else-if=\"selectedTab === 'volunteer'\" class=\"d-flex add-customer justify-content-end\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.addNewVolunteer')\"\r\n                     :bordersize=\"2\"\r\n                     class=\"next-button\"\r\n                     icon=\"plus\"\r\n                     click-event=\"click\"\r\n                     @click=\"addVolunteer\"\r\n          />\r\n        </div>\r\n        <div v-else-if=\"selectedTab === 'pools'\" class=\"d-flex add-customer justify-content-end\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.addNewPool')\"\r\n                     :bordersize=\"2\"\r\n                     class=\"next-button\"\r\n                     icon=\"plus\"\r\n                     click-event=\"click\"\r\n                     @click=\"addPool\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import searchbox from '../SPRSearchBox.vue'\r\n  import searchsort from '../SPRSearchSort.vue'\r\n  export default Vue.extend({\r\n    name: 'SearchHeader',\r\n    components: { sprbutton, searchbox, searchsort },\r\n    props: {\r\n      search: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      isNetFmg: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        sortBy: 'NewestFirst',\r\n        sortByList: [\r\n          { type: 'NewestFirst', text: this.$t('customerSearch.sortByNewest') },\r\n          { type: 'OldestFirst', text: this.$t('customerSearch.sortByOldest') },\r\n          { type: 'LatestContactedFirst', text: this.$t('customerSearch.sortBycontactedFirst') },\r\n          { type: 'LongestUncontactedFirst', text: this.$t('customerSearch.sortByLongestUncontactedFirst') }\r\n        ]\r\n      }\r\n    },\r\n    computed: {\r\n      selectedTab (): string {\r\n        return this.$route.params.searchmode\r\n      },\r\n      searchPlaceholder (): string | LocaleMessage {\r\n        return this.selectedTab === 'pools' ? this.$t('customerSearch.poolsSearchPlaceholder') : this.$t('customerSearch.friendSearchPlaceholder')\r\n      }\r\n    },\r\n    created () {\r\n      if (this.selectedTab !== 'discussion' && this.selectedTab.toUpperCase() !== this.$store.state.searchFilter.searchType) {\r\n        this.$store.state.searchFilter.skip = 0\r\n      }\r\n    },\r\n    methods: {\r\n      doSearch (val) {\r\n        this.$emit('search', val)\r\n      },\r\n      doSort (type) {\r\n        this.$emit('sort', type)\r\n      },\r\n      addCustomer () {\r\n        const uri = this.isNetFmg ? `/friend/netcustomer/add/${this.id}` : `/friend/standardcustomer/add/${this.id}`\r\n        this.$router.push(uri)\r\n      },\r\n      addVolunteer () {\r\n        const uri = this.isNetFmg ? `/friend/netprofile/add/${this.id}` : `/friend/standardprofile/add/${this.id}`\r\n        this.$router.push(uri)\r\n      },\r\n      addPool () {\r\n        const uri = `/friend/pools/${this.id}/add`\r\n        this.$router.push(uri)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .searchheader {\r\n    .resultstypeheader {\r\n      margin-top:20px;\r\n      margin-bottom: 10px;\r\n      // @media screen and (min-width: $media-md-max) {\r\n      //   h4 {\r\n      //     font-size:1.5em !important;\r\n      //     display: inline;\r\n      //   }\r\n      // }\r\n\r\n      .col-3 {\r\n        padding: 0;\r\n      }\r\n\r\n      .resultstype {\r\n        color:$brand-grey5;\r\n        text-decoration:none;\r\n        display:inline-block;\r\n        font-size: 15px;\r\n        border: solid 2px transparent;\r\n        border-top-right-radius: 10px;\r\n        border-top-left-radius: 10px;\r\n        width: 100%;\r\n        padding: 5px 10px;\r\n        text-align: center;\r\n        color: $brand-white;\r\n        margin-bottom: -2px;\r\n\r\n        a {\r\n          color:$brand-white;\r\n        }\r\n\r\n        &.selected {\r\n          margin-top: -2px;\r\n        }\r\n\r\n        &.customer {\r\n          background-color:$customer-color-strong;\r\n        }\r\n        &.volunteer {\r\n          background-color:$volunteer-color-strong;\r\n        }\r\n        &.pools {\r\n          background-color:$pools-color-strong;\r\n        }\r\n        &.discussion {\r\n          background-color:$brand-grey10;\r\n        }\r\n      }\r\n    }\r\n\r\n    .navindicator {\r\n      height: 5px;\r\n      &.customer {\r\n        background-color:$customer-color-strong;\r\n      }\r\n      &.volunteer {\r\n        background-color:$volunteer-color-strong;\r\n      }\r\n      &.pools {\r\n        background-color:$pools-color-strong;\r\n      }\r\n      &.discussion {\r\n        background-color:$brand-grey10;\r\n      }\r\n    }\r\n\r\n    // @media screen and (max-width: $media-sm-max) {\r\n    //   .resultstypeheader {\r\n    //     margin-bottom: 10px;\r\n    //     // background-color:white;\r\n    //     // text-align:center;\r\n    //     h4 {\r\n    //       font-size:0.75em !important;\r\n    //       margin-bottom: 5px;\r\n\r\n    //       a.resultstype.selected {\r\n    //         color:$brand-red;\r\n    //       }\r\n    //     }\r\n    //   }\r\n    // }\r\n\r\n    .add-customer {\r\n      margin-bottom: 10px;\r\n      min-width: 253px;\r\n    }\r\n\r\n    .search {\r\n      margin-bottom: 15px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SearchHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SearchHeader.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SearchHeader.vue?vue&type=template&id=5788fdf7\"\nimport script from \"./SearchHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./SearchHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SearchHeader.vue?vue&type=style&index=0&id=5788fdf7&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"resultlist\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.searchType === 'CUSTOMER')?_c('div',{staticClass:\"row results\"},[_c('div',{staticClass:\"col\"},_vm._l((_vm.customerlist),function(customer){return _c('CustomerFindResult',{key:customer.id,attrs:{\"customer\":customer,\"group\":_vm.group}})}),1)]):_vm._e()]),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.searchType === 'VOLUNTEER')?_c('div',{staticClass:\"row results\"},[_c('div',{staticClass:\"col\"},[(_vm.group.netFriendship)?_c('div',_vm._l((_vm.volunteerlist),function(volunteer){return _c('VolunteerNetFindResult',{key:volunteer.id,attrs:{\"volunteer\":volunteer,\"group\":_vm.group}})}),1):_c('div',_vm._l((_vm.volunteerlist),function(volunteer){return _c('VolunteerStandardFindResult',{key:volunteer.id,attrs:{\"volunteer\":volunteer,\"group\":_vm.group}})}),1)])]):_vm._e()]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showPager),expression:\"showPager\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('pager',{attrs:{\"skip\":_vm.skip,\"take\":_vm.take,\"total\":_vm.total,\"max-display\":5},on:{\"pagerchanged\":_vm.onPagerChanged,\"pagerprevious\":_vm.onPagerPrevious,\"pagernext\":_vm.onPagerNext}})],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"customerfindresult\",class:{ 'hasfriend': _vm.hasFriendship }},[_c('div',{staticClass:\"usericons\"},[(_vm.hasMultipleCustomers)?_c('font-awesome-icon',{attrs:{\"icon\":\"users\",\"title\":_vm.$t('customerSearch.multipleCustomers')}}):_vm._e()],1),_c('div',{staticClass:\"col-lg-6 col-xl-4 customer-container\"},[_c('div',{staticClass:\"customerimage\"},[_c('friendicon',{attrs:{\"cross\":_vm.customer.customerNotForSpr,\"friendname\":_vm.customer.firstName,\"state\":_vm.customer.state,\"multiple-friendships\":_vm.customer.multipleVolunteers}})],1),_c('div',{staticClass:\"customerinfo\"},[_c('div',{staticClass:\"customername\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.selectCustomer}},[_vm._v(_vm._s(_vm.customer.firstName)+\" \"+_vm._s(_vm.customer.lastName))])]),_c('span',{staticClass:\"age\"},[_vm._v(_vm._s(_vm.genderAgeText))]),_c('div',{staticClass:\"zip\"},[_vm._v(\" \"+_vm._s(_vm.zipCodeText)+\" \")])])]),_c('div',{staticClass:\"d-none d-xl-block col-xl-4\"},[_c('div',{staticClass:\"description-container\"},[_c('div',{staticClass:\"contacted\"},[_c('div',{staticClass:\"col-12 pending\"},[_vm._v(\" \"+_vm._s(_vm.lastContacted(_vm.customer.lastContacted))+\" \")])]),_c('div',{staticClass:\"description-wrapper\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.customer.shortDescription),expression:\"customer.shortDescription\"}],staticClass:\"description\"},[_vm._v(\" “\"+_vm._s(_vm.customer.shortDescription)+\"” \")])])])]),_c('div',{staticClass:\"col-lg-6 col-xl-4 friend-container\"},[(!_vm.hasFriendship)?_c('div',{staticClass:\"row nofriend\"},[_c('div',{staticClass:\"col-12 pending\"},[_vm._v(\" \"+_vm._s(_vm.daysWithoutFriend(_vm.customer.lastFriendshipEndDate))+\" \")])]):_c('div',_vm._l((_vm.customer.friendships),function(friendship,i){return _c('div',{key:i,staticClass:\"row friendrow\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"friendinfo\"},[_c('router-link',{attrs:{\"to\":'/friend/volunteerpreview/' + _vm.group.id + '/' + friendship.friendVolunteerId}},[_vm._v(\" \"+_vm._s(friendship.firstName)+\" \"+_vm._s(friendship.lastName)+\" \")])],1),_c('div',{staticClass:\"friendimage\"},[_c('friendshipicon',{attrs:{\"friendname\":friendship.firstName,\"state\":friendship.friendshipState}})],1)])])}),0),_vm._l((_vm.customer.friendPools),function(pool){return _c('div',{key:pool.id,staticClass:\"row pools\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"poolinfo\",on:{\"click\":function($event){return _vm.onPoolClicked(pool)}}},[_vm._v(\" \"+_vm._s(pool.name)+\" \")]),_c('div',{staticClass:\"poolimage\"},[_c('poolicon',{attrs:{\"pool\":pool}})],1)])])})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"friendicon\",class:_vm.friendStateStyle,style:(_vm.style),attrs:{\"title\":_vm.titleText}},[_c('div',{staticClass:\"lettercontainer\"},[(_vm.cross)?_c('div',{staticClass:\"x x1\"}):_vm._e(),(_vm.cross)?_c('div',{staticClass:\"x x2\"}):_vm._e(),_c('div',{staticClass:\"lettertext\"},[_vm._v(\" \"+_vm._s(_vm.letter)+\" \")])]),(_vm.image)?_c('div',{staticClass:\"friendstate\",class:_vm.friendStateStyleOrb}):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"friendicon\" :class=\"friendStateStyle\" :style=\"style\" :title=\"titleText\">\r\n    <div class=\"lettercontainer\">\r\n      <div v-if=\"cross\" class=\"x x1\" />\r\n      <div v-if=\"cross\" class=\"x x2\" />\r\n      <div class=\"lettertext\">\r\n        {{ letter }}\r\n      </div>\r\n    </div>\r\n    <div v-if=\"image\" class=\"friendstate\" :class=\"friendStateStyleOrb\" />\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'FriendIcon',\r\n    props: {\r\n      image: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      friendname: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      state: {\r\n        type: Number,\r\n        default: -1\r\n      },\r\n      multipleFriendships: {\r\n        type: Boolean,\r\n        default: () => false\r\n      },\r\n      cross: {\r\n        type: Boolean,\r\n        default: () => false\r\n      }\r\n    },\r\n    computed: {\r\n      letter () {\r\n        if (this.friendname && this.friendname.length > 0) {\r\n          return this.friendname.substring(0, 1)\r\n        }\r\n        return '?'\r\n      },\r\n      style () {\r\n        if (!_.isEmpty(this.image)) {\r\n          return 'background:url(' + this.image + '); background-size: cover; background-position: center center no-repeat;'\r\n        }\r\n        return ''\r\n      },\r\n      friendStateStyle () {\r\n        var result = (this.multipleFriendships && this.state > 1 && this.state < 5) ? 'multipleFriendships ' : ''\r\n        if (!this.state || !this.$store.state.customerStates) return result + 'unknown'\r\n        const cState = this.$store.state.customerStates[this.state - 1]\r\n        return cState ? `${result}state-${this.$store.state.customerStates[this.state].text.toLowerCase()}` : `${result}unknown`\r\n      },\r\n      friendStateStyleOrb () {\r\n        if (!this.state || !this.$store.state.customerStates) return 'unknown'\r\n        const cState = this.$store.state.customerStates[this.state - 1]\r\n        return cState ? `state-${this.$store.state.customerStates[this.state].text.toLowerCase()}` : `unknown`\r\n      },\r\n      titleText: function () {\r\n        if (!this.state || !this.$store.state.customerStates) {\r\n          return this.$t('customerStates.unknown')\r\n        }\r\n        if (this.state === -1) {\r\n          return this.$t('customerStates.unknown')\r\n        }\r\n\r\n        return this.$t('customerStates.' + this.$store.state.customerStates[this.state]?.text)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .state-pendingapproval {\r\n    background-color: $state-pendingapproval;\r\n    border-color: $state-pendingapproval;\r\n  }\r\n\r\n  .state-active {\r\n    background-color: $state-active;\r\n    border-color: $state-active;\r\n  }\r\n\r\n  .state-pendingfriend {\r\n    background-color: $state-pendingfriend;\r\n    border-color: $state-pendingfriend;\r\n  }\r\n\r\n  .state-activefriendship {\r\n    background-color: $state-activefriendship;\r\n    border-color: $state-activefriendship;\r\n  }\r\n\r\n  .state-nonactive {\r\n    background-color: $state-nonactive;\r\n    border-color: $state-nonactive;\r\n  }\r\n\r\n  .state-onhold {\r\n    background-color: $state-onhold;\r\n    border-color: $state-onhold;\r\n  }\r\n\r\n  .multipleFriendships {\r\n    background-color: $multiple-friendships;\r\n    border-color: $multiple-friendships;\r\n  }\r\n\r\n  .unknown {\r\n    display: none;\r\n  }\r\n\r\n  .friendicon {\r\n    cursor: default;\r\n    display: inline-block;\r\n    border-radius:50%;\r\n    width:50px;\r\n    height:50px;\r\n    margin:0 auto;\r\n    position: relative;\r\n\r\n    .lettercontainer {\r\n      display:flex;\r\n      height: 100%;\r\n      width: 100%;\r\n      justify-content: center;\r\n      align-items: center;\r\n      align-content: center;\r\n\r\n      .lettertext {\r\n        align-self: center;\r\n        font-weight: bold;\r\n        color:$brand-white;\r\n        font-size: 1.4em;\r\n        text-transform: uppercase;\r\n      }\r\n    }\r\n\r\n    .x {\r\n      width: 0px;\r\n      height: 50px;\r\n      background-color:red;\r\n      display:inline-block;\r\n      position: absolute;\r\n      border: solid 2px red;\r\n      border-radius: 5px;\r\n    }\r\n\r\n    .x1 {\r\n      position: relative;\r\n      transform: rotate(45deg);\r\n      left: 9px;\r\n      top: 0px;\r\n    }\r\n\r\n    .x2 {\r\n      position: relative;\r\n      transform: rotate(135deg);\r\n      left: 5px;\r\n      top: 0px;\r\n    }\r\n  }\r\n\r\n  .friendstate {\r\n    width: 14px;\r\n    height: 14px;\r\n    position: absolute;\r\n    top: 0;\r\n    right: 0;\r\n    border-radius: 50%;\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendIcon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendIcon.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FriendIcon.vue?vue&type=template&id=24716b64&scoped=true\"\nimport script from \"./FriendIcon.vue?vue&type=script&lang=js\"\nexport * from \"./FriendIcon.vue?vue&type=script&lang=js\"\nimport style0 from \"./FriendIcon.vue?vue&type=style&index=0&id=24716b64&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"24716b64\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"friendicon\",class:_vm.friendStateStyle,attrs:{\"title\":_vm.titleText}},[_c('div',{staticClass:\"lettercontainer\"},[_c('div',{staticClass:\"lettertext\"},[_vm._v(\" \"+_vm._s(_vm.letter)+\" \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"friendicon\" :class=\"friendStateStyle\" :title=\"titleText\">\r\n    <div class=\"lettercontainer\">\r\n      <div class=\"lettertext\">\r\n        {{ letter }}\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import { FriendshipState } from '@/types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'FriendshipIcon',\r\n    props: {\r\n      friendname: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      state: {\r\n        type: Number as () => FriendshipState,\r\n        default: -1\r\n      },\r\n      multipleFriendships: {\r\n        type: Boolean,\r\n        default: () => false\r\n      }\r\n    },\r\n    computed: {\r\n      letter (): string {\r\n        if (this.friendname && this.friendname.length > 0) {\r\n          return this.friendname.substring(0, 1)\r\n        }\r\n        return '?'\r\n      },\r\n      friendStateStyle (): string {\r\n        return `state-${this.state}`\r\n      },\r\n      titleText (): string | LocaleMessage {\r\n        if (!this.state) {\r\n          return this.$t('customerStates.unknown')\r\n        }\r\n        if (this.state === -1) {\r\n          return this.$t('customerStates.unknown')\r\n        }\r\n\r\n        return this.$t('friendshipStates.state' + this.state)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .state-1 {\r\n    background-color: $state-pendingfriend;\r\n    border-color: $state-pendingfriend;\r\n  }\r\n\r\n  .state-2 {\r\n    background-color: $state-activefriendship;\r\n    border-color: $state-activefriendship;\r\n  }\r\n\r\n  .unknown {\r\n    display: none;\r\n  }\r\n\r\n  .friendicon {\r\n    cursor: default;\r\n    display: inline-block;\r\n    border-radius:50%;\r\n    width:50px;\r\n    height:50px;\r\n    margin:0 auto;\r\n    position: relative;\r\n\r\n    .lettercontainer {\r\n      display:flex;\r\n      height: 100%;\r\n      width: 100%;\r\n      justify-content: center;\r\n      align-items: center;\r\n      align-content: center;\r\n\r\n      .lettertext {\r\n        align-self: center;\r\n        font-weight: bold;\r\n        color:$brand-white;\r\n        font-size: 1.4em;\r\n        text-transform: uppercase;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipIcon.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FriendshipIcon.vue?vue&type=template&id=37a3b553&scoped=true\"\nimport script from \"./FriendshipIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./FriendshipIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FriendshipIcon.vue?vue&type=style&index=0&id=37a3b553&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"37a3b553\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"poolicon\"},[_c('div',{staticClass:\"lettercontainer\"},[_c('div',{staticClass:\"lettertext\"},[_vm._v(\" \"+_vm._s(_vm.letter)+\" \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"poolicon\">\r\n    <div class=\"lettercontainer\">\r\n      <div class=\"lettertext\">\r\n        {{ letter }}\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'Poolicon',\r\n    props: {\r\n      pool: {\r\n        type: Object,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      letter () {\r\n        if (this.pool.name && this.pool.name.length > 0) {\r\n          return this.pool.name.substring(0, 1)\r\n        }\r\n        return '?'\r\n      }\r\n    }\r\n  }\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .poolicon {\r\n    background-color: $pools-color-strong;\r\n    border-color: $pools-color-strong;\r\n    cursor: default;\r\n    display: inline-block;\r\n    border-radius:50%;\r\n    width:50px;\r\n    height:50px;\r\n    margin:0 auto;\r\n    position: relative;\r\n\r\n    .lettercontainer {\r\n      display:flex;\r\n      height: 100%;\r\n      width: 100%;\r\n      justify-content: center;\r\n      align-items: center;\r\n      align-content: center;\r\n\r\n      .lettertext {\r\n        align-self: center;\r\n        font-weight: bold;\r\n        color:$brand-white;\r\n        font-size: 1.4em;\r\n        text-transform: uppercase;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolIcon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolIcon.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PoolIcon.vue?vue&type=template&id=70463478&scoped=true\"\nimport script from \"./PoolIcon.vue?vue&type=script&lang=js\"\nexport * from \"./PoolIcon.vue?vue&type=script&lang=js\"\nimport style0 from \"./PoolIcon.vue?vue&type=style&index=0&id=70463478&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"70463478\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"customerfindresult\" :class=\"{ 'hasfriend': hasFriendship }\">\r\n    <div class=\"usericons\">\r\n      <font-awesome-icon v-if=\"hasMultipleCustomers\" icon=\"users\" :title=\"$t('customerSearch.multipleCustomers')\" />\r\n    </div>\r\n    <div class=\"col-lg-6 col-xl-4 customer-container\">\r\n      <div class=\"customerimage\">\r\n        <friendicon :cross=\"customer.customerNotForSpr\" :friendname=\"customer.firstName\" :state=\"customer.state\" :multiple-friendships=\"customer.multipleVolunteers\" />\r\n      </div>\r\n      <div class=\"customerinfo\">\r\n        <div class=\"customername\">\r\n          <a href=\"javascript:void(0)\" @click=\"selectCustomer\">{{ customer.firstName }} {{ customer.lastName }}</a>\r\n        </div>\r\n        <span class=\"age\">{{ genderAgeText }}</span>\r\n        <div class=\"zip\">\r\n          {{ zipCodeText }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n\r\n    <div class=\"d-none d-xl-block col-xl-4\">\r\n      <div class=\"description-container\">\r\n        <div class=\"contacted\">\r\n          <div class=\"col-12 pending\">\r\n            {{ lastContacted(customer.lastContacted) }}\r\n          </div>\r\n        </div>\r\n        <div class=\"description-wrapper\">\r\n          <div v-show=\"customer.shortDescription\" class=\"description\">\r\n            &#8220;{{ customer.shortDescription }}&#8221;\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"col-lg-6 col-xl-4 friend-container\">\r\n      <div v-if=\"!hasFriendship\" class=\"row nofriend\">\r\n        <div class=\"col-12 pending\">\r\n          {{ daysWithoutFriend(customer.lastFriendshipEndDate) }}\r\n        </div>\r\n      </div>\r\n      <div v-else>\r\n        <div v-for=\"(friendship, i) in customer.friendships\" :key=\"i\" class=\"row friendrow\">\r\n          <div class=\"col-12\">\r\n            <div class=\"friendinfo\">\r\n              <router-link :to=\"'/friend/volunteerpreview/' + group.id + '/' + friendship.friendVolunteerId\">\r\n                {{ friendship.firstName }} {{ friendship.lastName }}\r\n              </router-link>\r\n            </div>\r\n            <div class=\"friendimage\">\r\n              <friendshipicon :friendname=\"friendship.firstName\" :state=\"friendship.friendshipState\" />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div v-for=\"(pool) in customer.friendPools\" :key=\"pool.id\" class=\"row pools\">\r\n        <div class=\"col-12\">\r\n          <div class=\"poolinfo\" @click=\"onPoolClicked(pool)\">\r\n            {{ pool.name }}\r\n          </div>\r\n          <div class=\"poolimage\">\r\n            <poolicon :pool=\"pool\" />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import friendicon from './FriendIcon.vue'\r\n  import friendshipicon from './FriendshipIcon.vue'\r\n  import poolicon from './PoolIcon.vue'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import { FriendCustomerFindDto, FriendManagementDto } from '../../types/index'\r\n  import { finnishDateFormat } from '@/helpers/datehelper'\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerFindResult',\r\n    components: { friendicon, friendshipicon, poolicon },\r\n    mixins: [enumhelper, datehelper],\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerFindDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      hasFriendship (): boolean {\r\n        return this.customer.friendships !== null && this.customer.friendships.length > 0\r\n      },\r\n      hasMultipleCustomers (): boolean {\r\n        return !!this.customer?.multipleVolunteers\r\n      },\r\n      computedGender (): string | LocaleMessage {\r\n        // @ts-ignore (no mixins found)\r\n        return this.getGenderTranslation(this.customer.gender)\r\n      },\r\n      computedAge (): number {\r\n        // @ts-ignore (no mixins found)\r\n        return this.calculateAge(this.customer.birthdate)\r\n      },\r\n      genderAgeText (): string {\r\n        return [this.computedGender, this.computedAge ? `${this.computedAge} ${this.$t('customerSearch.years')}` : ''].filter(Boolean).join(', ')\r\n      },\r\n      zipCodeText (): string {\r\n        return '(' + this.customer.zipCode + ')'\r\n      }\r\n    },\r\n    methods: {\r\n      lastContacted(lastContactedDate: Date | undefined): string {\r\n        if (!lastContactedDate) {\r\n          return `${this.$t('customerSearch.neverContacted')}`\r\n        }\r\n        // @ts-ignore (no mixins found)\r\n        return `${this.$t('customerSearch.lastContacted')} ${finnishDateFormat(lastContactedDate)}`\r\n\r\n      },\r\n      daysWithoutFriend (lastFriendshipDate): string {\r\n        if (!lastFriendshipDate) {\r\n          return `${this.$t('customerSearch.neverHadFriend')}`\r\n        }\r\n        // @ts-ignore (no mixins found)\r\n        return `${this.calculateDayDiff(lastFriendshipDate)} ${this.$t('customerSearch.daysWithoutFriend')}`\r\n      },\r\n      selectCustomer (): void {\r\n        this.$bus.$emit('customerSelected', this.customer)\r\n      },\r\n      onPoolClicked (pool): void {\r\n        this.$router.push(`/friend/pools/${this.group.id}/${pool.id}`)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"@/assets/scss/_variables.scss\";\r\n  .customerfindresult {\r\n    display: flex;\r\n    align-items: stretch;\r\n    justify-content: space-between;\r\n    background-color: $brand-white;\r\n    border-left: solid 5px $customer-color-strong;\r\n    margin: 10px 0;\r\n    padding: 20px 0;\r\n    position: relative;\r\n\r\n    &.hasfriend {\r\n      border-right: solid 5px $volunteer-color-strong;\r\n    }\r\n    \r\n    .usericons {\r\n      position: absolute;\r\n      top: 5px;\r\n      left: 5px;\r\n      color: $brand-red;\r\n      margin-left: 5px;\r\n    }\r\n\r\n    .customer-container {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: flex-start;\r\n      .customerinfo {\r\n        padding-left: 10px;\r\n        text-align: left;\r\n        font-size: 13px;\r\n        .customername {\r\n          text-transform: uppercase;\r\n          font-weight: bold;\r\n        }\r\n      }\r\n    }\r\n\r\n    .description-container {\r\n      display: flex;\r\n      flex-direction: column;\r\n      justify-content: center; /* Centers .nofriend */\r\n      height: 100%;\r\n      border-right: solid $brand-grey12;\r\n      border-left: solid $brand-grey12;\r\n      \r\n      .contacted {\r\n        font-size: 13px;\r\n        margin-bottom: auto;\r\n        white-space: nowrap;\r\n      }\r\n      .description-wrapper  {\r\n        height: -webkit-fill-available;\r\n        align-content: space-evenly;\r\n        .description {\r\n          color: $brand-red;\r\n          font-style: italic;\r\n          font-size: 13px;\r\n          text-align: center;\r\n        }\r\n      }\r\n    }\r\n\r\n    .friend-container {\r\n      text-align: right;\r\n      font-size: 13px;\r\n      .friendrow {\r\n        padding: 3px 0;\r\n        display: block;\r\n        \r\n        .friendinfo {\r\n          display: inline-block;\r\n          margin-right: 5px;\r\n          text-transform: uppercase;\r\n          color: $brand-red;\r\n          font-weight: bold;\r\n        }\r\n        .friendimage {\r\n          display: inline-block;\r\n          .friendicon {\r\n            width: 24px;\r\n            height: 24px;\r\n            .lettertext {\r\n              font-size: 13px;\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      .nofriend {\r\n        text-align: right;\r\n        font-size: 13px;\r\n      }\r\n\r\n      .pools {\r\n        cursor: pointer;\r\n        padding: 3px 0;\r\n        display: block;\r\n        .poolinfo {\r\n          display: inline-block;\r\n          margin-right: 5px;\r\n          text-transform: uppercase;\r\n          color: $brand-red;\r\n          font-weight: bold;\r\n        }\r\n        .poolimage {\r\n          display: inline-block;\r\n          .poolicon {\r\n            width: 24px;\r\n            height: 24px;\r\n            .lettertext {\r\n              font-size: 13px;\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerFindResult.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerFindResult.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerFindResult.vue?vue&type=template&id=168197b6&scoped=true\"\nimport script from \"./CustomerFindResult.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerFindResult.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerFindResult.vue?vue&type=style&index=0&id=168197b6&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"168197b6\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"volunteernetfindresult\",class:{ 'hascustomer': _vm.hasCustomer }},[_c('div',{staticClass:\"usericons\"},[(!_vm.volunteer.isNonIdent)?_c('font-awesome-icon',{attrs:{\"icon\":\"user\",\"title\":_vm.$t('customerSearch.isIdent')}}):_vm._e(),(_vm.hasMultipleCustomers)?_c('font-awesome-icon',{attrs:{\"icon\":\"users\",\"title\":_vm.$t('customerSearch.multipleCustomers')}}):_vm._e()],1),_c('div',{staticClass:\"col-lg-6 col-xl-4 friend-container\"},[_c('div',{staticClass:\"friendimage\"},[_c('friendicon',{attrs:{\"image\":_vm.volunteer.portrait,\"friendname\":_vm.volunteer.firstName,\"state\":_vm.volunteerState,\"multiple-friendships\":_vm.hasMultipleCustomers}})],1),_c('div',{staticClass:\"friendinfo\"},[_c('div',{staticClass:\"friendname\"},[_c('router-link',{attrs:{\"to\":'/friend/volunteerpreview/' + _vm.group.id + '/' + _vm.volunteer.friendInfo.id}},[_vm._v(\" \"+_vm._s(_vm.volunteer.firstName)+\" \"+_vm._s(_vm.volunteer.lastName)+\" \")])],1),_c('div',{staticClass:\"frienddetails\"},[_c('span',{staticClass:\"age\"},[_vm._v(_vm._s(_vm.genderAgeText))]),_c('br'),_c('span',{staticClass:\"section\"},[_vm._v(_vm._s(_vm.section)+\" (\"+_vm._s(_vm.zipCodeText)+\")\")])])])]),_c('div',{staticClass:\"d-none d-xl-block col-xl-4\"},[_c('div',{staticClass:\"description-container\"},[(!_vm.hasFriendship)?_c('div',{staticClass:\"contacted\"},[_c('div',{staticClass:\"col-12 pending\"},[_vm._v(\" \"+_vm._s(_vm.lastContacted(_vm.volunteer.friendInfo.lastContacted))+\" \")])]):_vm._e(),_c('div',{staticClass:\"description-wrapper\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.volunteer.friendInfo.netProfile.shortDescription),expression:\"volunteer.friendInfo.netProfile.shortDescription\"}],staticClass:\"description\"},[_vm._v(\" “\"+_vm._s(_vm.volunteer.friendInfo.netProfile.shortDescription)+\"” \")])])])]),_c('div',{staticClass:\"col-lg-6 col-xl-4 customer-container\"},[(!_vm.hasCustomer)?_c('div',{staticClass:\"row nocustomer\"},[_c('div',{staticClass:\"col-12 pending\"},[_vm._v(\" \"+_vm._s(_vm.daysWithoutFriend(_vm.volunteer.friendInfo.netProfile.lastFriendshipEndDate))+\" \")])]):_c('div',_vm._l((_vm.volunteer.friendInfo.netProfile.friendships),function(friendship,i){return _c('div',{key:i,staticClass:\"row customerrow\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"customerinfo\"},[_c('router-link',{attrs:{\"to\":'/friend/customerpreview/' + _vm.group.id + '/' + friendship.customerId}},[_vm._v(\" \"+_vm._s(friendship.firstName)+\" \"+_vm._s(friendship.lastName)+\" \")])],1),_c('div',{staticClass:\"customerimage\"},[_c('friendshipicon',{attrs:{\"friendname\":friendship.firstName,\"state\":friendship.friendshipState}})],1)])])}),0),_vm._l((_vm.volunteer.friendInfo.netProfile.friendPools),function(pool){return _c('div',{key:pool.id,staticClass:\"row pools\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"poolinfo\",on:{\"click\":function($event){return _vm.onPoolClicked(pool)}}},[_vm._v(\" \"+_vm._s(pool.name)+\" \")]),_c('div',{staticClass:\"poolimage\"},[_c('poolicon',{attrs:{\"pool\":pool}})],1)])])})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"volunteernetfindresult\" :class=\"{ 'hascustomer': hasCustomer }\">\r\n    <div class=\"usericons\">\r\n      <font-awesome-icon v-if=\"!volunteer.isNonIdent\" icon=\"user\" :title=\"$t('customerSearch.isIdent')\" />\r\n      <font-awesome-icon v-if=\"hasMultipleCustomers\" icon=\"users\" :title=\"$t('customerSearch.multipleCustomers')\" />\r\n    </div>\r\n    <div class=\"col-lg-6 col-xl-4 friend-container\">\r\n      <div class=\"friendimage\">\r\n        <friendicon :image=\"volunteer.portrait\" :friendname=\"volunteer.firstName\" :state=\"volunteerState\" :multiple-friendships=\"hasMultipleCustomers\" />\r\n      </div>\r\n      <div class=\"friendinfo\">\r\n        <div class=\"friendname\">\r\n          <router-link :to=\"'/friend/volunteerpreview/' + group.id + '/' + volunteer.friendInfo.id\">\r\n            {{ volunteer.firstName }} {{ volunteer.lastName }}\r\n          </router-link>\r\n        </div>\r\n        <div class=\"frienddetails\">\r\n          <span class=\"age\">{{ genderAgeText }}</span><br>\r\n          <span class=\"section\">{{ section }} ({{ zipCodeText }})</span>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"d-none d-xl-block col-xl-4\">\r\n      <div class=\"description-container\">\r\n        <div v-if=\"!hasFriendship\" class=\"contacted\">\r\n          <div class=\"col-12 pending\">\r\n            {{ lastContacted(volunteer.friendInfo.lastContacted) }}\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"description-wrapper\">\r\n          <div v-show=\"volunteer.friendInfo.netProfile.shortDescription\" class=\"description\">\r\n            &#8220;{{ volunteer.friendInfo.netProfile.shortDescription }}&#8221;\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"col-lg-6 col-xl-4 customer-container\">\r\n      <div v-if=\"!hasCustomer\" class=\"row nocustomer\">\r\n        <div class=\"col-12 pending\">\r\n          {{ daysWithoutFriend(volunteer.friendInfo.netProfile.lastFriendshipEndDate) }}\r\n        </div>\r\n      </div>\r\n      <div v-else>\r\n        <div v-for=\"(friendship, i) in volunteer.friendInfo.netProfile.friendships\" :key=\"i\" class=\"row customerrow\">\r\n          <div class=\"col-12\">\r\n            <div class=\"customerinfo\">\r\n              <router-link :to=\"'/friend/customerpreview/' + group.id + '/' + friendship.customerId\">\r\n                {{ friendship.firstName }} {{ friendship.lastName }}\r\n              </router-link>\r\n            </div>\r\n            <div class=\"customerimage\">\r\n              <friendshipicon :friendname=\"friendship.firstName\" :state=\"friendship.friendshipState\" />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div v-for=\"(pool) in volunteer.friendInfo.netProfile.friendPools\" :key=\"pool.id\" class=\"row pools\">\r\n        <div class=\"col-12\">\r\n          <div class=\"poolinfo\" @click=\"onPoolClicked(pool)\">\r\n            {{ pool.name }}\r\n          </div>\r\n          <div class=\"poolimage\">\r\n            <poolicon :pool=\"pool\" />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n\r\n  // @ts-nocheck\r\n  // Do not check ts at this time as this file has not been converted to ts.\r\n  import friendicon from './FriendIcon.vue'\r\n  import friendshipicon from './FriendshipIcon.vue'\r\n  import poolicon from './PoolIcon.vue'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import { CustomerState, UserProfileFindDto, FriendshipState, FriendManagementDto } from '../../types/index'\r\n  import { finnishDateFormat } from '@/helpers/datehelper'\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerNetFindResult',\r\n    components: { friendicon, friendshipicon, poolicon },\r\n    mixins: [enumhelper, datehelper],\r\n    props: {\r\n      volunteer: {\r\n        type: Object as () => UserProfileFindDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      hasCustomer (): boolean {\r\n        return Boolean(this.volunteer?.friendInfo?.netProfile?.friendships?.length)\r\n      },\r\n      hasMultipleCustomers (): boolean {\r\n        return Boolean(this.volunteer?.friendInfo?.netProfile?.multipleCustomers)\r\n      },\r\n      volunteerState (): CustomerState {\r\n        return this.volunteer?.friendInfo?.netProfile ? this.volunteer.friendInfo.netProfile.state : CustomerState.PendingApproval\r\n      },\r\n      computedGender (): string | LocaleMessage {\r\n        // @ts-ignore (mixin not found)\r\n        return this.getGenderTranslation(this.volunteer.friendInfo.gender)\r\n      },\r\n      computedAge (): number {\r\n        // @ts-ignore (mixin not found)\r\n        return this.calculateAge(this.volunteer.age)\r\n      },\r\n      genderAgeText (): string {\r\n        return [this.computedGender, this.computedAge ? `${this.computedAge} ${this.$t('customerSearch.years')}` : ''].filter(Boolean).join(', ')\r\n      },\r\n      section (): string {\r\n        var self = this\r\n        var section = _.find(this.$store.state.sections, (s) => {\r\n          return s.id === self.volunteer.sectionId\r\n        })\r\n\r\n        return section ? section.name : ''\r\n      },\r\n      zipCodeText (): string {\r\n        return this.volunteer.isNonIdent ? this.volunteer.zipCode : this.volunteer.useWorkingZipCode ? this.volunteer.workingZipCode : this.volunteer.zipCode\r\n      }\r\n    },\r\n    methods: {\r\n      lastContacted(lastContactedDate: Date | undefined): string {\r\n        if (!lastContactedDate) {\r\n          return `${this.$t('customerSearch.neverContacted')}`\r\n        }\r\n        // @ts-ignore (no mixins found)\r\n        return `${this.$t('customerSearch.lastContacted')} ${finnishDateFormat(lastContactedDate)}`\r\n      },\r\n      daysWithoutFriend (lastFriendshipDate): string {\r\n        if (!lastFriendshipDate) {\r\n          return `${this.$t('customerSearch.neverHadFriend')}`\r\n        }\r\n        // @ts-ignore (mixin not found)\r\n        return `${this.calculateDayDiff(lastFriendshipDate)} ${this.$t('customerSearch.daysWithoutFriend')}`\r\n      },\r\n      onVolunteerSelected (): void {\r\n        this.$bus.$emit('volunteerFriendshipSelected', this.volunteer)\r\n      },\r\n      onPoolClicked (pool): void {\r\n        this.$router.push(`/friend/pools/${this.group.id}/${pool.id}`)\r\n      },\r\n      selectVolunteer (): void {\r\n        this.$bus.$emit('volunteerSelected', this.volunteer.profileId)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"@/assets/scss/_variables.scss\";\r\n  .volunteernetfindresult {\r\n    display: flex;\r\n    align-items: stretch;\r\n    justify-content: space-between;\r\n    background-color: $brand-white;\r\n    border-left: solid 5px $volunteer-color-strong;\r\n    margin: 10px 0;\r\n    padding: 20px 0;\r\n    position: relative;\r\n\r\n    &.hascustomer {\r\n      border-right: solid 5px $customer-color-strong;\r\n    }\r\n\r\n    .usericons {\r\n      position: absolute;\r\n      top: 5px;\r\n      left: 5px;\r\n      color: $brand-red;\r\n      margin-left: 5px;\r\n    }\r\n\r\n    .friend-container {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: flex-start;\r\n      .friendinfo {\r\n        padding-left: 10px;\r\n        text-align: left;\r\n        font-size: 13px;\r\n        .friendname {\r\n          text-transform: uppercase;\r\n          font-weight: bold;\r\n        }\r\n      }\r\n    }\r\n\r\n    .description-container {\r\n      display: flex;\r\n      flex-direction: column;\r\n      justify-content: center; /* Centers .nofriend */\r\n      height: 100%;\r\n      border-right: solid $brand-grey12;\r\n      border-left: solid $brand-grey12;\r\n\r\n      .contacted {\r\n        font-size: 13px;\r\n        margin-bottom: auto;\r\n        white-space: nowrap;\r\n      }\r\n      .description-wrapper  {\r\n        height: -webkit-fill-available;\r\n        align-content: space-evenly;\r\n        .description {\r\n          color: $brand-red;\r\n          font-style: italic;\r\n          font-size: 13px;\r\n          text-align: center;\r\n        }\r\n      }\r\n    }\r\n\r\n    .customer-container {\r\n      text-align: right;\r\n      font-size: 13px;\r\n      .customerrow {\r\n        padding: 3px 0;\r\n        display: block;\r\n\r\n        .customerinfo {\r\n          display: inline-block;\r\n          margin-right: 5px;\r\n          text-transform: uppercase;\r\n          color: $brand-red;\r\n          font-weight: bold;\r\n        }\r\n        .customerimage {\r\n          display: inline-block;\r\n          .friendicon {\r\n            width: 24px;\r\n            height: 24px;\r\n            .lettertext {\r\n              font-size: 13px;\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      .nocustomer {\r\n        text-align: right;\r\n        font-size: 13px;\r\n      }\r\n\r\n      .pools {\r\n        cursor: pointer;\r\n        padding: 3px 0;\r\n        display: block;\r\n        .poolinfo {\r\n          display: inline-block;\r\n          margin-right: 5px;\r\n          text-transform: uppercase;\r\n          color: $brand-red;\r\n          font-weight: bold;\r\n        }\r\n        .poolimage {\r\n          display: inline-block;\r\n          .poolicon {\r\n            width: 24px;\r\n            height: 24px;\r\n            .lettertext {\r\n              font-size: 13px;\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerNetFindResult.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerNetFindResult.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerNetFindResult.vue?vue&type=template&id=4a5641d3&scoped=true\"\nimport script from \"./VolunteerNetFindResult.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerNetFindResult.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerNetFindResult.vue?vue&type=style&index=0&id=4a5641d3&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4a5641d3\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"volunteerstandardfindresult\",class:{ 'hascustomer': _vm.hasCustomer }},[_c('div',{staticClass:\"usericons\"},[(!_vm.volunteer.isNonIdent)?_c('font-awesome-icon',{attrs:{\"icon\":\"user\",\"title\":_vm.$t('customerSearch.isIdent')}}):_vm._e(),(_vm.hasMultipleCustomers)?_c('font-awesome-icon',{attrs:{\"icon\":\"users\",\"title\":_vm.$t('customerSearch.multipleCustomers')}}):_vm._e()],1),_c('div',{staticClass:\"col-lg-6 col-xl-4 friend-container\"},[_c('div',{staticClass:\"friendimage\"},[_c('friendicon',{attrs:{\"image\":_vm.volunteer.portrait,\"friendname\":_vm.volunteer.firstName,\"state\":_vm.volunteerState,\"multiple-friendships\":_vm.hasMultipleCustomers}})],1),_c('div',{staticClass:\"friendinfo\"},[_c('div',{staticClass:\"friendname\"},[_c('router-link',{attrs:{\"to\":'/friend/volunteerpreview/' + _vm.group.id + '/' + _vm.volunteer.friendInfo.id}},[_vm._v(\" \"+_vm._s(_vm.volunteer.firstName)+\" \"+_vm._s(_vm.volunteer.lastName)+\" \")])],1),_c('div',{staticClass:\"frienddetails\"},[_c('span',{staticClass:\"age\"},[_vm._v(_vm._s(_vm.genderAgeText))]),_c('br'),_c('span',{staticClass:\"section\"},[_vm._v(_vm._s(_vm.section)+\" (\"+_vm._s(_vm.zipCodeText)+\")\")])])])]),_c('div',{staticClass:\"d-none d-xl-block col-xl-4\"},[_c('div',{staticClass:\"description-container\"},[(!_vm.hasFriendship)?_c('div',{staticClass:\"contacted\"},[_c('div',{staticClass:\"col-12 pending\"},[_vm._v(\" \"+_vm._s(_vm.lastContacted(_vm.volunteer.friendInfo.lastContacted))+\" \")])]):_vm._e(),_c('div',{staticClass:\"description-wrapper\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.volunteer.friendInfo.standardProfile.shortDescription),expression:\"volunteer.friendInfo.standardProfile.shortDescription\"}],staticClass:\"description\"},[_vm._v(\" “\"+_vm._s(_vm.volunteer.friendInfo.standardProfile.shortDescription)+\"” \")])])])]),_c('div',{staticClass:\"col-lg-6 col-xl-4 customer-container\"},[(!_vm.hasCustomer)?_c('div',{staticClass:\"row nocustomer\"},[_c('div',{staticClass:\"col-12 pending\"},[_vm._v(\" \"+_vm._s(_vm.daysWithoutFriend(_vm.volunteer.friendInfo.standardProfile.lastFriendshipEndDate))+\" \")])]):_c('div',_vm._l((_vm.volunteer.friendInfo.standardProfile.friendships),function(friendship,i){return _c('div',{key:i,staticClass:\"row customerrow\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"customerinfo\"},[_c('router-link',{attrs:{\"to\":'/friend/customerpreview/' + _vm.group.id + '/' + friendship.customerId}},[_vm._v(\" \"+_vm._s(friendship.firstName)+\" \"+_vm._s(friendship.lastName)+\" \")])],1),_c('div',{staticClass:\"customerimage\"},[_c('friendshipicon',{attrs:{\"friendname\":friendship.firstName,\"state\":friendship.friendshipState}})],1)])])}),0),_vm._l((_vm.volunteer.friendInfo.standardProfile.friendPools),function(pool){return _c('div',{key:pool.id,staticClass:\"row pools\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"poolinfo\",on:{\"click\":function($event){return _vm.onPoolClicked(pool)}}},[_vm._v(\" \"+_vm._s(pool.name)+\" \")]),_c('div',{staticClass:\"poolimage\"},[_c('poolicon',{attrs:{\"pool\":pool}})],1)])])})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"volunteerstandardfindresult\" :class=\"{ 'hascustomer': hasCustomer }\">\r\n    <div class=\"usericons\">\r\n      <font-awesome-icon v-if=\"!volunteer.isNonIdent\" icon=\"user\" :title=\"$t('customerSearch.isIdent')\" />\r\n      <font-awesome-icon v-if=\"hasMultipleCustomers\" icon=\"users\" :title=\"$t('customerSearch.multipleCustomers')\" />\r\n    </div>\r\n    <div class=\"col-lg-6 col-xl-4 friend-container\">\r\n      <div class=\"friendimage\">\r\n        <friendicon :image=\"volunteer.portrait\" :friendname=\"volunteer.firstName\" :state=\"volunteerState\" :multiple-friendships=\"hasMultipleCustomers\" />\r\n      </div>\r\n      <div class=\"friendinfo\">\r\n        <div class=\"friendname\">\r\n          <router-link :to=\"'/friend/volunteerpreview/' + group.id + '/' + volunteer.friendInfo.id\">\r\n            {{ volunteer.firstName }} {{ volunteer.lastName }}\r\n          </router-link>\r\n        </div>\r\n        <div class=\"frienddetails\">\r\n          <span class=\"age\">{{ genderAgeText }}</span><br>\r\n          <span class=\"section\">{{ section }} ({{ zipCodeText }})</span>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"d-none d-xl-block col-xl-4\">\r\n      <div class=\"description-container\">\r\n        <div v-if=\"!hasFriendship\" class=\"contacted\">\r\n          <div class=\"col-12 pending\">\r\n            {{ lastContacted(volunteer.friendInfo.lastContacted) }}\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"description-wrapper\">\r\n          <div v-show=\"volunteer.friendInfo.standardProfile.shortDescription\" class=\"description\">\r\n            &#8220;{{ volunteer.friendInfo.standardProfile.shortDescription }}&#8221;\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"col-lg-6 col-xl-4 customer-container\">\r\n      <div v-if=\"!hasCustomer\" class=\"row nocustomer\">\r\n        <div class=\"col-12 pending\">\r\n          {{ daysWithoutFriend(volunteer.friendInfo.standardProfile.lastFriendshipEndDate) }}\r\n        </div>\r\n      </div>\r\n      <div v-else>\r\n        <div v-for=\"(friendship, i) in volunteer.friendInfo.standardProfile.friendships\" :key=\"i\" class=\"row customerrow\">\r\n          <div class=\"col-12\">\r\n            <div class=\"customerinfo\">\r\n              <router-link :to=\"'/friend/customerpreview/' + group.id + '/' + friendship.customerId\">\r\n                {{ friendship.firstName }} {{ friendship.lastName }}\r\n              </router-link>\r\n            </div>\r\n            <div class=\"customerimage\">\r\n              <friendshipicon :friendname=\"friendship.firstName\" :state=\"friendship.friendshipState\" />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div v-for=\"(pool) in volunteer.friendInfo.standardProfile.friendPools\" :key=\"pool.id\" class=\"row pools\">\r\n        <div class=\"col-12\">\r\n          <div class=\"poolinfo\" @click=\"onPoolClicked(pool)\">\r\n            {{ pool.name }}\r\n          </div>\r\n          <div class=\"poolimage\">\r\n            <poolicon :pool=\"pool\" />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n\r\n  import friendicon from './FriendIcon.vue'\r\n  import friendshipicon from './FriendshipIcon.vue'\r\n  import poolicon from './PoolIcon.vue'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import { CustomerState, UserProfileFindDto, FriendshipState, FriendManagementDto } from '../../types/index'\r\n  import { finnishDateFormat } from '@/helpers/datehelper'\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerStandardFindResult',\r\n    components: { friendicon, friendshipicon, poolicon },\r\n    mixins: [enumhelper, datehelper],\r\n    props: {\r\n      volunteer: {\r\n        type: Object as () => UserProfileFindDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      hasCustomer (): boolean {\r\n        return Boolean(this.volunteer?.friendInfo?.standardProfile?.friendships?.length)\r\n      },\r\n      hasMultipleCustomers (): boolean {\r\n        return Boolean(this.volunteer?.friendInfo?.standardProfile?.multipleCustomers)\r\n      },\r\n      volunteerState (): CustomerState {\r\n        return this.volunteer?.friendInfo?.standardProfile ? this.volunteer.friendInfo.standardProfile.state : CustomerState.PendingApproval\r\n      },\r\n      computedGender (): string | LocaleMessage {\r\n        // @ts-ignore (mixin not found)\r\n        return this.getGenderTranslation(this.volunteer.friendInfo.gender)\r\n      },\r\n      computedAge (): number {\r\n        // @ts-ignore (mixin not found)\r\n        return this.calculateAge(this.volunteer.age)\r\n      },\r\n      genderAgeText (): string {\r\n        return [this.computedGender, this.computedAge ? `${this.computedAge} ${this.$t('customerSearch.years')}` : ''].filter(Boolean).join(', ')\r\n      },\r\n      section (): string {\r\n        var self = this\r\n        var section = _.find(this.$store.state.sections, (s) => {\r\n          return s.id === self.volunteer.sectionId\r\n        })\r\n\r\n        return section ? section.name : ''\r\n      },\r\n      zipCodeText (): string {\r\n        return this.volunteer.useWorkingZipCode ? this.volunteer.workingZipCode : this.volunteer.zipCode\r\n      }\r\n    },\r\n    methods: {\r\n      lastContacted(lastContactedDate: Date | undefined): string {\r\n        if (!lastContactedDate) {\r\n          return `${this.$t('customerSearch.neverContacted')}`\r\n        }\r\n        // @ts-ignore (no mixins found)\r\n        return `${this.$t('customerSearch.lastContacted')} ${finnishDateFormat(lastContactedDate)}`\r\n\r\n      },\r\n      daysWithoutFriend (lastFriendshipDate): string {\r\n        if (!lastFriendshipDate) {\r\n          return `${this.$t('customerSearch.neverHadFriend')}`\r\n        }\r\n        // @ts-ignore (mixin not found)\r\n        return `${this.calculateDayDiff(lastFriendshipDate)} ${this.$t('customerSearch.daysWithoutFriend')}`\r\n      },\r\n      onVolunteerSelected (): void {\r\n        this.$bus.$emit('volunteerFriendshipSelected', this.volunteer)\r\n      },\r\n      onPoolClicked (pool): void {\r\n        this.$router.push(`/friend/pools/${this.group.id}/${pool.id}`)\r\n      },\r\n      selectVolunteer (): void {\r\n        this.$bus.$emit('volunteerSelected', this.volunteer.profileId)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"@/assets/scss/_variables.scss\";\r\n  .volunteerstandardfindresult {\r\n    display: flex;\r\n    align-items: stretch;\r\n    justify-content: space-between;\r\n    background-color: $brand-white;\r\n    border-left: solid 5px $volunteer-color-strong;\r\n    margin: 10px 0;\r\n    padding: 20px 0;\r\n    position: relative;\r\n\r\n    &.hascustomer {\r\n      border-right: solid 5px $customer-color-strong;\r\n    }\r\n\r\n    .usericons {\r\n      position: absolute;\r\n      top: 5px;\r\n      left: 5px;\r\n      color: $brand-red;\r\n      margin-left: 5px;\r\n    }\r\n\r\n    .friend-container {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: flex-start;\r\n      .friendinfo {\r\n        padding-left: 10px;\r\n        text-align: left;\r\n        font-size: 13px;\r\n        .friendname {\r\n          text-transform: uppercase;\r\n          font-weight: bold;\r\n        }\r\n      }\r\n    }\r\n\r\n    .description-container {\r\n      display: flex;\r\n      flex-direction: column;\r\n      justify-content: center; /* Centers .nofriend */\r\n      height: 100%;\r\n      border-right: solid $brand-grey12;\r\n      border-left: solid $brand-grey12;\r\n\r\n      .contacted {\r\n        font-size: 13px;\r\n        margin-bottom: auto;\r\n        white-space: nowrap;\r\n      }\r\n      .description-wrapper  {\r\n        height: -webkit-fill-available;\r\n        align-content: space-evenly;\r\n        .description {\r\n          color: $brand-red;\r\n          font-style: italic;\r\n          font-size: 13px;\r\n          text-align: center;\r\n        }\r\n      }\r\n    }\r\n\r\n    .customer-container {\r\n      text-align: right;\r\n      font-size: 13px;\r\n      .customerrow {\r\n        padding: 3px 0;\r\n        display: block;\r\n\r\n        .customerinfo {\r\n          display: inline-block;\r\n          margin-right: 5px;\r\n          text-transform: uppercase;\r\n          color: $brand-red;\r\n          font-weight: bold;\r\n        }\r\n        .customerimage {\r\n          display: inline-block;\r\n          .friendicon {\r\n            width: 24px;\r\n            height: 24px;\r\n            .lettertext {\r\n              font-size: 13px;\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      .nocustomer {\r\n        text-align: right;\r\n        font-size: 13px;\r\n      }\r\n\r\n      .pools {\r\n        cursor: pointer;\r\n        padding: 3px 0;\r\n        display: block;\r\n        .poolinfo {\r\n          display: inline-block;\r\n          margin-right: 5px;\r\n          text-transform: uppercase;\r\n          color: $brand-red;\r\n          font-weight: bold;\r\n        }\r\n        .poolimage {\r\n          display: inline-block;\r\n          .poolicon {\r\n            width: 24px;\r\n            height: 24px;\r\n            .lettertext {\r\n              font-size: 13px;\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerStandardFindResult.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerStandardFindResult.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerStandardFindResult.vue?vue&type=template&id=77c5bab0&scoped=true\"\nimport script from \"./VolunteerStandardFindResult.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerStandardFindResult.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerStandardFindResult.vue?vue&type=style&index=0&id=77c5bab0&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"77c5bab0\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"pager-wrapper\"},[(_vm.moreThanOnePage)?_c('div',{staticClass:\"pager\"},[_c('div',{staticClass:\"pagernav\",class:(!_vm.statisticsvisible) ? 'pagernavcenter' : ''},[_c('span',{staticClass:\"page-title\"},[_vm._v(_vm._s(_vm.$t('listingPager.profilePage'))+\": \")]),(_vm.debug)?_c('div',[_vm._v(\" CurrentPage: \"+_vm._s(_vm.currentPage)+\", Take: \"+_vm._s(_vm.take)+\", Skip: \"+_vm._s(_vm.skip)+\", total: \"+_vm._s(_vm.total)+\", Max Display: \"+_vm._s(_vm.maxDisplay)+\", Lastpage? \"+_vm._s(_vm.isLastPage)+\" \")]):_vm._e(),_c('a',{staticClass:\"arrow-box\",style:({visibility: !_vm.isFirstPage ? 'visible' : 'hidden'}),attrs:{\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.onPrevious}},[_c('div',{staticClass:\"arrow1 previous\"})]),_vm._l((_vm.pages),function(page){return _c('div',{key:page.value,staticClass:\"pagecontainer\"},[(page.visible)?_c('div',{staticClass:\"page\",class:{'selected': page.selected}},[_c('a',{attrs:{\"href\":\"javascript:void(0);\"},on:{\"click\":function($event){return _vm.onClicked(page)}}},[_vm._v(\" \"+_vm._s(page.value)+\" \")])]):_vm._e()])}),(!_vm.isLastPage)?_c('a',{staticClass:\"arrow-box\",attrs:{\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.onNext}},[_c('div',{staticClass:\"arrow1 next\"})]):_vm._e()],2),(_vm.statisticsvisible)?_c('div',{staticClass:\"page-stats\"},[_c('pagerstats',{attrs:{\"total\":_vm.total,\"skip\":_vm.skip,\"take\":_vm.take}})],1):_vm._e()]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"showing\"},[_c('span',{staticClass:\"statistics-title\"},[_vm._v(_vm._s(_vm.$t('listingPager.profileTotal')))]),_c('span',{staticClass:\"highlight\"},[_vm._v(\" \"+_vm._s(_vm.total)+\", \")]),_c('span',{staticClass:\"statistics-title\"},[_vm._v(_vm._s(_vm.$t('listingPager.profilePageVisible')))]),_c('span',{staticClass:\"highlight\"},[_vm._v(\" \"+_vm._s(_vm.currentStartNumber)+\"-\"+_vm._s(_vm.currentEndNumber))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"showing\">\r\n    <span class=\"statistics-title\">{{ $t('listingPager.profileTotal') }}</span>\r\n    <span class=\"highlight\"> {{ total }}, </span>\r\n    <span class=\"statistics-title\">{{ $t('listingPager.profilePageVisible') }}</span>\r\n    <span class=\"highlight\"> {{ currentStartNumber }}-{{ currentEndNumber }}</span>\r\n  </div>\r\n</template>\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'PagerStats',\r\n    props: {\r\n      total: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      take: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      skip: {\r\n        type: Number,\r\n        default: 0\r\n      }\r\n    },\r\n    computed: {\r\n      currentStartNumber (): number {\r\n        return this.total === 0 ? 0 : this.skip + 1\r\n      },\r\n      currentEndNumber (): number {\r\n        const maxTotal = this.skip + this.take\r\n        return maxTotal > this.total ? this.total : maxTotal\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\" >\r\n  @import \"../assets/scss/_variables.scss\";\r\n  .showing {\r\n    .highlight {\r\n      font-weight: bold;\r\n    }\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPagerStats.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPagerStats.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRPagerStats.vue?vue&type=template&id=7bed2f93\"\nimport script from \"./SPRPagerStats.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRPagerStats.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRPagerStats.vue?vue&type=style&index=0&id=7bed2f93&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"pager-wrapper\">\r\n    <div v-if=\"moreThanOnePage\" class=\"pager\">\r\n      <div class=\"pagernav\" :class=\"(!statisticsvisible) ? 'pagernavcenter' : ''\">\r\n        <span class=\"page-title\">{{ $t('listingPager.profilePage') }}: </span>\r\n        <div v-if=\"debug\">\r\n          CurrentPage: {{ currentPage }}, Take: {{ take }}, Skip: {{ skip }}, total: {{ total }}, Max Display: {{ maxDisplay }}, Lastpage? {{ isLastPage }}\r\n        </div>\r\n        <a :style=\"{visibility: !isFirstPage ? 'visible' : 'hidden'}\" href=\"javascript:void(0);\" class=\"arrow-box\" @click=\"onPrevious\">\r\n          <div class=\"arrow1 previous\"></div>\r\n        </a>\r\n        <div v-for=\"page in pages\" :key=\"page.value\" class=\"pagecontainer\">\r\n          <div v-if=\"page.visible\" class=\"page\" :class=\"{'selected': page.selected}\">\r\n            <a href=\"javascript:void(0);\" @click=\"onClicked(page)\">\r\n              {{ page.value }}\r\n            </a>\r\n          </div>\r\n        </div>\r\n        <a v-if=\"!isLastPage\" href=\"javascript:void(0);\" class=\"arrow-box\" @click=\"onNext\">\r\n          <div class=\"arrow1 next\"></div>\r\n        </a>\r\n      </div>\r\n      <div v-if=\"statisticsvisible\" class=\"page-stats\">\r\n        <pagerstats :total=\"total\" :skip=\"skip\" :take=\"take\"></pagerstats>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import pagerstats from './SPRPagerStats.vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'Pager',\r\n    components: { pagerstats },\r\n    props: {\r\n      total: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      take: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      skip: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      statisticsvisible: {\r\n        type: Boolean,\r\n        default: true\r\n      },\r\n      maxDisplay: {\r\n        type: Number,\r\n        default: 0\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        actualDisplayed: 0,\r\n        debug: false\r\n      }\r\n    },\r\n    computed: {\r\n      currentPage (): number {\r\n        return Math.floor(this.skip / this.take) + 1\r\n      },\r\n      currentStartNumber (): number {\r\n        return this.skip + 1\r\n      },\r\n      currentEndNumber (): number {\r\n        const maxTotal = this.skip + this.take\r\n        return maxTotal > this.total ? this.total : maxTotal\r\n      },\r\n      isFirstPage (): boolean {\r\n        return this.currentPage === 1\r\n      },\r\n      isLastPage (): boolean {\r\n        return this.currentPage >= this.total / this.take\r\n      },\r\n      moreThanOnePage (): boolean {\r\n        return this.pages.length > 1\r\n      },\r\n      pages (): any {\r\n        if (this.take < 0) {\r\n          return []\r\n        }\r\n\r\n        const skipping = this.skip % this.take === 0 ? this.skip : Math.max(Math.floor(this.skip / this.take), 0) * this.take\r\n        const retval: object[] = []\r\n        let count = 0\r\n        this.resetActualDisplayed()\r\n        for (let i = 0; i < this.total; i = i + this.take) {\r\n          count++\r\n          const isVisible = this.checkIsVisible(count)\r\n          retval.push({ value: count, skip: i, selected: skipping === i, visible: isVisible })\r\n        }\r\n        return retval\r\n      }\r\n    },\r\n    created () {\r\n      this.resetActualDisplayed()\r\n    },\r\n    methods: {\r\n      onPageSizeChanged (pageSize): void {\r\n        this.$emit('pagesizechanged', pageSize)\r\n      },\r\n      checkIsVisible (page): boolean {\r\n        // If set to display all, ignore\r\n        if (this.maxDisplay <= 0) {\r\n          this.actualDisplayed++\r\n\r\n          return true\r\n        }\r\n\r\n        // start from one side of the middle one, then display until we run out of things to display\r\n        const oneside = Math.floor(this.maxDisplay / 2)\r\n\r\n        const tempCalc = this.currentPage - oneside\r\n\r\n        if (page < tempCalc) {\r\n          return false\r\n        }\r\n\r\n        if (this.actualDisplayed >= this.maxDisplay) {\r\n          return false\r\n        }\r\n\r\n        this.actualDisplayed++\r\n\r\n        return true\r\n      },\r\n      onClicked (val) {\r\n        this.resetActualDisplayed()\r\n        this.$emit('pagerchanged', val)\r\n      },\r\n      onPrevious () {\r\n        this.resetActualDisplayed()\r\n        this.$emit('pagerprevious')\r\n      },\r\n      onNext () {\r\n        this.resetActualDisplayed()\r\n        this.$emit('pagernext')\r\n      },\r\n      resetActualDisplayed () {\r\n        this.actualDisplayed = 0\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" >\r\n  @import \"../assets/scss/_variables.scss\";\r\n  .pager-wrapper{\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    margin-right: -15px;\r\n    margin-left: -15px;\r\n  }\r\n  .pager {\r\n    background: $brand-white;\r\n    display: flex;\r\n    align-content: center;\r\n    height: 3rem;\r\n    width: 100%;\r\n    padding-left: 15px;\r\n    padding-right: 15px;\r\n    border-bottom-right-radius: 5px;\r\n    border-bottom-left-radius: 5px;\r\n    font-family: Verdana, sans-serif; // Because Signa-Light numbers jump all over the place!\r\n\r\n    .page-title {\r\n      color: $brand-grey13;\r\n      margin-top: 4px;\r\n    }\r\n    .pagernav {\r\n      display: flex;\r\n      align-content: center;\r\n      align-self: center;\r\n      flex: 1 0 0;\r\n      width: 100%;\r\n    }\r\n\r\n    .pagernavcenter {\r\n      justify-content: center;\r\n    }\r\n\r\n    @media (min-width: $media-md) {\r\n      .pagernav {\r\n        flex: 1 0 0;\r\n        width: auto;\r\n        float: left;\r\n      }\r\n    }\r\n\r\n    .pagecontainer {\r\n      display: inline-block;\r\n    }\r\n\r\n    .arrow-box {\r\n      background-color: $brand-white;\r\n      color:$brand-grey13;\r\n      border: solid 2px $brand-grey1;\r\n      border-radius: 100%;\r\n      display: inline-block;\r\n      width: 30px;\r\n      height: 30px;\r\n      margin: 0px 20px 0px;\r\n      text-decoration: none;\r\n    }\r\n\r\n    .page {\r\n      background-color: $brand-white;\r\n      color:$brand-grey13;\r\n      border: solid 2px $brand-grey1;\r\n      border-radius: 100%;\r\n      width: 30px;\r\n      height: 30px;\r\n      display: inline-block;\r\n      margin-right:5px;\r\n      margin-left: 5px;\r\n\r\n      &:hover {\r\n        background-color:$brand-red;\r\n        a {\r\n          text-decoration: none;\r\n          color:$brand-white;\r\n        }\r\n      }\r\n\r\n      a {\r\n        display:block;\r\n        text-align:center;\r\n        color:$brand-grey13;\r\n        margin-top:2px;\r\n      }\r\n\r\n      &.selected {\r\n        background-color:$brand-grey1;\r\n\r\n        a {\r\n          color: $brand-red;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  .statistics-title{\r\n    color: $brand-grey13;\r\n    height: 30px;\r\n }\r\n\r\n  .arrow1 {\r\n    color: $brand-grey13;\r\n    border-top: solid 3px $brand-grey13;\r\n    border-right: solid 3px $brand-grey13;\r\n    height:9px;\r\n    width: 9px;\r\n    &.previous {\r\n      transform: rotate(-135deg) translate(-12px, 1px);\r\n    }\r\n    &.next {\r\n      transform: rotate(45deg) translate(12px, 1px);\r\n    }\r\n  }\r\n\r\n  .page-stats {\r\n    flex: 0 0 auto;\r\n    align-self: center;\r\n  }\r\n\r\n  @media (max-width: $media-md) {\r\n    .pager {\r\n      height: 4rem !important;\r\n      flex-direction: column;\r\n    }\r\n    .pagernav {\r\n      margin-top: 5px;\r\n      flex: 0 0 0 !important;\r\n    }\r\n    .page-stats {\r\n      margin-top: 5px;\r\n      align-self: flex-start;\r\n    }\r\n  }\r\n\r\n  @media (max-width: $media-xs) {\r\n    .pager {\r\n      height: 5rem !important;\r\n    }\r\n  }\r\n\r\n  @media (max-width: $media-xs) {\r\n    .arrow-box {\r\n      margin: 0 !important;\r\n    }\r\n  }\r\n\r\n  @media (min-width: $media-md) {\r\n    .showing {\r\n      width: auto;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPager.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPager.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRPager.vue?vue&type=template&id=0833302a\"\nimport script from \"./SPRPager.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRPager.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRPager.vue?vue&type=style&index=0&id=0833302a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"resultlist\">\r\n    <transition name=\"fade\">\r\n      <div v-if=\"searchType === 'CUSTOMER'\" class=\"row results\">\r\n        <div class=\"col\">\r\n          <CustomerFindResult\r\n            v-for=\"customer in customerlist\"\r\n            :key=\"customer.id\"\r\n            :customer=\"customer\"\r\n            :group=\"group\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </transition>\r\n    <transition name=\"fade\">\r\n      <div v-if=\"searchType === 'VOLUNTEER'\" class=\"row results\">\r\n        <div class=\"col\">\r\n          <div v-if=\"group.netFriendship\">\r\n            <VolunteerNetFindResult\r\n              v-for=\"volunteer in volunteerlist\"\r\n              :key=\"volunteer.id\"\r\n              :volunteer=\"volunteer\"\r\n              :group=\"group\"\r\n            />\r\n          </div>\r\n          <div v-else>\r\n            <VolunteerStandardFindResult\r\n              v-for=\"volunteer in volunteerlist\"\r\n              :key=\"volunteer.id\"\r\n              :volunteer=\"volunteer\"\r\n              :group=\"group\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </transition>\r\n    <div v-show=\"showPager\" class=\"row\">\r\n      <div class=\"col\">\r\n        <pager :skip=\"skip\" :take=\"take\" :total=\"total\" :max-display=\"5\" @pagerchanged=\"onPagerChanged\" @pagerprevious=\"onPagerPrevious\" @pagernext=\"onPagerNext\" />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import CustomerFindResult from './CustomerFindResult.vue'\r\n  import VolunteerNetFindResult from './VolunteerNetFindResult.vue'\r\n  import VolunteerStandardFindResult from './VolunteerStandardFindResult.vue'\r\n  import pager from '../SPRPager.vue'\r\n  import { UserProfileDto, FriendCustomerFindDto, FriendManagementDto } from '../../types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'ResultList',\r\n    components: { CustomerFindResult, VolunteerStandardFindResult, VolunteerNetFindResult, pager },\r\n    props: {\r\n      searchType: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      skip: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      take: {\r\n        type: Number,\r\n        default: 10\r\n      },\r\n      total: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      customerlist: {\r\n        type: Array as () => Array<FriendCustomerFindDto>,\r\n        default: () => []\r\n      },\r\n      volunteerlist: {\r\n        type: Array as () => Array<UserProfileDto>,\r\n        default: () => []\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      showPager (): boolean {\r\n        return this.total > 0 && (this.customerlist.length > 0 || this.volunteerlist.length > 0)\r\n      }\r\n    },\r\n    methods: {\r\n      onPagerChanged (value): void {\r\n        this.$emit('pagechanged', value)\r\n      },\r\n      onPagerPrevious (): void {\r\n        this.$emit('previous')\r\n      },\r\n      onPagerNext (): void {\r\n        this.$emit('next')\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ResultList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ResultList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ResultList.vue?vue&type=template&id=7aae1338\"\nimport script from \"./ResultList.vue?vue&type=script&lang=ts\"\nexport * from \"./ResultList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ResultList.vue?vue&type=style&index=0&id=7aae1338&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"poolsliststandard\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_vm._l((_vm.filteredPools),function(pool){return _c('poolview',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading),expression:\"!loading\"}],key:pool.id,attrs:{\"pool\":pool,\"groupid\":_vm.fmgId,\"action-view\":\"counts\"}})}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"poolview\",class:{'removed' : _vm.pool.status === this.$store.state.poolStatus.REMOVED}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-7 col-lg-5\"},[_c('div',{staticClass:\"poolname\",on:{\"click\":function($event){return _vm.onPoolClicked(_vm.pool.id)}}},[_vm._v(\" \"+_vm._s(_vm.pool.name)+\" \")]),_c('div',{staticClass:\"address\"},[_vm._v(\" \"+_vm._s(_vm.getAddress(_vm.pool))+\" \")])]),_c('div',{staticClass:\"col-lg-4 d-none d-sm-none d-md-none d-lg-block\"},[_c('div',{staticClass:\"description\"},[(_vm.pool.shortDescription)?_c('span',[_vm._v(\"\\\"\"+_vm._s(_vm.pool.shortDescription)+\"\\\"\")]):_vm._e()])]),_c('div',{staticClass:\"col-5 col-lg-3\"},[(_vm.actionView === 'remove')?_c('div',{staticClass:\"removal\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('poolPreview.removeMember'),\"click-event\":\"remove\"},on:{\"remove\":_vm.onRemove}})],1):_vm._e(),(_vm.actionView === 'join')?_c('div',{staticClass:\"join\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('poolPreview.join'),\"click-event\":\"join\"},on:{\"join\":_vm.onJoin}})],1):_vm._e(),(_vm.actionView === 'counts')?_c('div',{staticClass:\"counts\"},[_c('div',[_vm._v(_vm._s(_vm.pool.customerCount)+\" \"+_vm._s(_vm.$t('customerSearch.poolCustomers')))]),_c('div',[_vm._v(_vm._s(_vm.pool.volunteerCount)+\" \"+_vm._s(_vm.$t('customerSearch.poolVolunteers')))])]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const addresshelper = {\r\n  formatAddress (streetAddress, postalCode, city): string {\r\n    return [streetAddress, [postalCode, city].filter(Boolean).join(' ')].filter(Boolean).join(', ')\r\n  }\r\n}\r\n\r\nexport default addresshelper","<template>\r\n  <div class=\"poolview\" :class=\"{'removed' : pool.status === this.$store.state.poolStatus.REMOVED}\">\r\n    <div class=\"row\">\r\n      <div class=\"col-7 col-lg-5\">\r\n        <div class=\"poolname\" @click=\"onPoolClicked(pool.id)\">\r\n          {{ pool.name }}\r\n        </div>\r\n        <div class=\"address\">\r\n          {{ getAddress(pool) }}\r\n        </div>\r\n      </div>\r\n      <div class=\"col-lg-4 d-none d-sm-none d-md-none d-lg-block\">\r\n        <div class=\"description\">\r\n          <span v-if=\"pool.shortDescription\">\"{{ pool.shortDescription }}\"</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-5 col-lg-3\">\r\n        <div v-if=\"actionView === 'remove'\" class=\"removal\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('poolPreview.removeMember')\"\r\n                     click-event=\"remove\"\r\n                     @remove=\"onRemove\"\r\n          />\r\n        </div>\r\n        <div v-if=\"actionView === 'join'\" class=\"join\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('poolPreview.join')\"\r\n                     click-event=\"join\"\r\n                     @join=\"onJoin\"\r\n          />\r\n        </div>\r\n        <div v-if=\"actionView === 'counts'\" class=\"counts\">\r\n          <div>{{ pool.customerCount }} {{ $t('customerSearch.poolCustomers') }}</div>\r\n          <div>{{ pool.volunteerCount }} {{ $t('customerSearch.poolVolunteers') }}</div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import locationhelper from '../../mixins/locationutils.js'\r\n  import addresshelper from '@/helpers/addresshelper'\r\n  import { FriendPoolFindStandardDto, FriendPoolFindNetDto } from '@/types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'PoolView',\r\n    components: { sprbutton },\r\n    mixins: [locationhelper],\r\n    props: {\r\n      pool: {\r\n        type: Object as () => FriendPoolFindStandardDto | FriendPoolFindNetDto,\r\n        required: true\r\n      },\r\n      groupid: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      actionView: {\r\n        type: String,\r\n        default: 'counts',\r\n        validator: function (value: string) {\r\n          // The value must match one of these strings\r\n          return ['counts', 'remove', 'join'].indexOf(value) !== -1\r\n        }\r\n      }\r\n    },\r\n    methods: {\r\n      getAddress (pool) {\r\n        return addresshelper.formatAddress(pool.address, pool.postalCode, pool.city)\r\n      },\r\n      onPoolClicked (id) {\r\n        const uri = `/friend/pools/${this.groupid}/${id}`\r\n        this.$router.push(uri)\r\n      },\r\n      onJoin () {\r\n        this.$emit('join', this.pool)\r\n      },\r\n      onRemove () {\r\n        this.$emit('remove', this.pool)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .poolview {\r\n    border-left: solid 5px $pools-color-strong;\r\n    background-color:$brand-white;\r\n    margin: 10px 0;\r\n    padding: 20px 15px;\r\n\r\n    &.removed {\r\n      border-left: solid 5px $brand-grey7;\r\n      background-color: $brand-grey3;\r\n    }\r\n\r\n    .poolname {\r\n      text-transform: uppercase;\r\n      color:$brand-red;\r\n      font-weight: bold;\r\n      cursor: pointer;\r\n    }\r\n\r\n    .address {\r\n      font-size: 13px;\r\n    }\r\n\r\n    .description {\r\n      color: $brand-red;\r\n      font-style: italic;\r\n      font-size: 13px;\r\n      text-align: center;\r\n    }\r\n\r\n    .counts {\r\n      font-size: 13px;\r\n      text-align: right;\r\n    }\r\n\r\n    .removal, .join {\r\n      text-align: right;\r\n      button {\r\n        font-size: 13px;\r\n        padding: 5px 10px;\r\n        margin-right: 10px;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolView.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolView.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PoolView.vue?vue&type=template&id=47f53a5a\"\nimport script from \"./PoolView.vue?vue&type=script&lang=ts\"\nexport * from \"./PoolView.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PoolView.vue?vue&type=style&index=0&id=47f53a5a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","\r\n<template>\r\n  <div class=\"poolsliststandard\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <poolview\r\n          v-for=\"pool in filteredPools\"\r\n          v-show=\"!loading\"\r\n          :key=\"pool.id\"\r\n          :pool=\"pool\"\r\n          :groupid=\"fmgId\"\r\n          action-view=\"counts\"\r\n        />\r\n        <div v-show=\"loading\" class=\"loading\">\r\n          <div class=\"spinner\">\r\n            <loading />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import poolview from './PoolView.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { FriendPoolStandardDto } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    loading: boolean,\r\n    fmgId: number,\r\n    pools: Array<FriendPoolStandardDto>\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'PoolsListStandard',\r\n    components: { poolview, loading },\r\n    props: {\r\n      filter: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      search: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        loading: false,\r\n        fmgId: Number(this.$route.params.id),\r\n        pools: []\r\n      }\r\n    },\r\n    computed: {\r\n      filteredPools (): Array<FriendPoolStandardDto> {\r\n        var self = this\r\n        var filtered = this.pools\r\n        if (this.filter && this.filter.length) {\r\n          filtered = _.filter(self.pools, (pool) => {\r\n            return _.includes(self.filter, pool.status)\r\n          })\r\n        }\r\n\r\n        if (this.search) {\r\n          filtered = _.filter(filtered, (pool) => {\r\n            return pool.name.toLowerCase().indexOf(this.search.toLowerCase()) > -1\r\n          })\r\n        }\r\n\r\n        return filtered\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.getPools()\r\n    },\r\n    methods: {\r\n      getPools (): void {\r\n        this.loading = true\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.getfriendmanagementpoolsstandard[0].replace('{fmgid}', this.fmgId)\r\n        var self = this\r\n        this.$http.get(url).then(resp => {\r\n          self.pools = resp.data\r\n          self.loading = false\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .poolsliststandard {\r\n    .loading {\r\n      text-align: center;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolsListStandard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolsListStandard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PoolsListStandard.vue?vue&type=template&id=53a3cfd3\"\nimport script from \"./PoolsListStandard.vue?vue&type=script&lang=ts\"\nexport * from \"./PoolsListStandard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PoolsListStandard.vue?vue&type=style&index=0&id=53a3cfd3&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"poolslistnet\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_vm._l((_vm.filteredPools),function(pool){return _c('poolview',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading),expression:\"!loading\"}],key:pool.id,attrs:{\"pool\":pool,\"groupid\":_vm.fmgId,\"action-view\":\"counts\"}})}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n<template>\r\n  <div class=\"poolslistnet\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <poolview\r\n          v-for=\"pool in filteredPools\"\r\n          v-show=\"!loading\"\r\n          :key=\"pool.id\"\r\n          :pool=\"pool\"\r\n          :groupid=\"fmgId\"\r\n          action-view=\"counts\"\r\n        />\r\n        <div v-show=\"loading\" class=\"loading\">\r\n          <div class=\"spinner\">\r\n            <loading />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import poolview from './PoolView.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { FriendPoolNetDto } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    loading: boolean,\r\n    fmgId: number,\r\n    pools: Array<FriendPoolNetDto>\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'PoolsListNet',\r\n    components: { poolview, loading },\r\n    props: {\r\n      filter: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      search: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        loading: false,\r\n        fmgId: Number(this.$route.params.id),\r\n        pools: []\r\n      }\r\n    },\r\n    computed: {\r\n      filteredPools (): Array<FriendPoolNetDto> {\r\n        var self = this\r\n        var filtered = this.pools\r\n        if (this.filter && this.filter.length) {\r\n          filtered = _.filter(self.pools, (pool) => {\r\n            return _.includes(self.filter, pool.status)\r\n          })\r\n        }\r\n\r\n        if (this.search) {\r\n          filtered = _.filter(filtered, (pool) => {\r\n            return pool.name.toLowerCase().indexOf(this.search.toLowerCase()) > -1\r\n          })\r\n        }\r\n\r\n        return filtered\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.getPools()\r\n    },\r\n    methods: {\r\n      getPools (): void {\r\n        this.loading = true\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.getfriendmanagementpoolsnet[0].replace('{fmgid}', this.fmgId)\r\n        var self = this\r\n        this.$http.get(url).then(resp => {\r\n          self.pools = resp.data\r\n          self.loading = false\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .poolslistnet {\r\n    .loading {\r\n      text-align: center;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolsListNet.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolsListNet.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PoolsListNet.vue?vue&type=template&id=0157727e\"\nimport script from \"./PoolsListNet.vue?vue&type=script&lang=ts\"\nexport * from \"./PoolsListNet.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PoolsListNet.vue?vue&type=style&index=0&id=0157727e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container discussion\",class:{'disabled' : _vm.messagesLoading}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-lg-8 offset-lg-2\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 my-2 send-message\"},[_c('div',{staticClass:\"message-body\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.messageBody),expression:\"messageBody\"}],attrs:{\"rows\":\"3\",\"placeholder\":_vm.$t('groups.messageBodyPlaceholder')},domProps:{\"value\":(_vm.messageBody)},on:{\"input\":function($event){if($event.target.composing)return;_vm.messageBody=$event.target.value}}})]),_c('div',{staticClass:\"message-actions\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('groups.sendMessage'),\"click-event\":\"sendMessage\",\"disabled\":_vm.messageBody.length === 0},on:{\"sendMessage\":_vm.sendMessageThread}})],1)])]),_c('noteview',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.notes && _vm.notes.length > 0),expression:\"notes && notes.length > 0\"}],attrs:{\"notes\":_vm.notes,\"groupid\":_vm.fmgId,\"portraits\":_vm.portraits,\"focus\":_vm.focusMessage,\"can-delete\":_vm.canDelete,\"can-send-as-email\":false},on:{\"removed\":_vm.removed}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"msg-list\"},_vm._l((_vm.getThreads),function(thread){return _c('thread',{key:'thread_' + thread.id,attrs:{\"note\":thread,\"children\":_vm.getThreadChildren(thread.id),\"focus\":_vm.focus,\"portraits\":_vm.portraits,\"can-delete\":_vm.canDelete,\"can-send-as-email\":_vm.canSendAsEmail},on:{\"remove\":_vm.remove}})}),1),_c('b-modal',{model:{value:(_vm.showModal),callback:function ($$v) {_vm.showModal=$$v},expression:\"showModal\"}},[_c('div',{attrs:{\"slot\":\"modal-header\"},slot:\"modal-header\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('groups.youSure')))])]),_c('div',{staticClass:\"text-center\",attrs:{\"slot\":\"modal-footer\"},slot:\"modal-footer\"},[_c('sprbutton',{attrs:{\"click-event\":\"rem\",\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('groups.remove')},on:{\"rem\":_vm.removeMessage}}),_c('sprbutton',{attrs:{\"click-event\":\"can\",\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('groups.cancel')},on:{\"can\":function($event){_vm.showModal = false}}})],1),_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('groups.deleteMessagePrompt')))]),(_vm.toRem)?_c('p',[_vm._v(\" \"+_vm._s(_vm.messageSummary(_vm.toRem))+\" \")]):_vm._e(),(_vm.toRem)?_c('p',[_vm._v(\" – \"+_vm._s(_vm.toRem.sender)+\", \"+_vm._s(_vm.formattedDate(_vm.toRem.sent))+\" \")]):_vm._e()])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:'sprmessage thread-node thread-message' + _vm.activeClass,attrs:{\"id\":'msg-' + _vm.note.id}},[_c('div',{staticClass:\"msg-sender\"},[_c('div',{staticClass:\"sender-img\"},[_c('div',{staticClass:\"spr-portrait portrait-size\",style:(_vm.portraitStyle)})]),_c('div',{staticClass:\"sender-details\"},[_c('div',{staticClass:\"sender\"},[_c('span',{staticClass:\"sentby cap-label brand-red\"},[_vm._v(_vm._s(_vm.note.sender))])]),_c('span',{staticClass:\"date\"},[_vm._v(_vm._s(_vm.formattedDate(_vm.note.sent)))])]),(_vm.canDelete)?_c('div',{staticClass:\"rem-btn\",attrs:{\"title\":\"Poista\"},on:{\"click\":function($event){return _vm.removeNote(_vm.note)}}},[_c('span',[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"ban\"}})],1)]):_vm._e()]),_c('div',{staticClass:\"msg-content\"},[_c('div',{staticClass:\"head-cont\"},[_c('div',{staticClass:\"subject\"},[(!_vm.note.deleted)?_c('div',[_vm._v(\" \"+_vm._s(_vm.note.subject)+\" \")]):_vm._e()]),(!_vm.note.deleted)?_c('div',[_c('p',{directives:[{name:\"linkified\",rawName:\"v-linkified:options\",value:({ nl2br: true }),expression:\"{ nl2br: true }\",arg:\"options\"}]},[_vm._v(\" \"+_vm._s(_vm.note.content)+\" \")]),_c('p',[_c('a',{attrs:{\"href\":\"reply\"},on:{\"click\":function($event){$event.preventDefault();return _vm.replyTo(true)}}},[_vm._v(_vm._s(_vm.$t('groups.reply')))])])]):_c('div',{staticClass:\"pt-3\"},[_c('p',[_vm._v(_vm._s(_vm.$t('groups.messageRemoved')))])])])]),(_vm.isCollapsed)?_c('div',{staticClass:\"show-all-messages caret-down\",on:{\"click\":function($event){_vm.isCollapsed = false}}},[_c('span',[_vm._v(_vm._s(_vm.$t('groups.showAll').replace('{number}', _vm.totalReplies - 1)))])]):_vm._e(),(!_vm.isCollapsed && _vm.totalReplies > 1)?_c('div',{staticClass:\"show-all-messages caret-up\",on:{\"click\":function($event){_vm.isCollapsed = true}}},[_c('span',[_vm._v(_vm._s(_vm.$t('groups.onlyLatest')))])]):_vm._e(),_vm._l((_vm.filteredChildren),function(child,i){return _c('reply',{key:'reply_' + child.id,attrs:{\"note\":child,\"focus\":_vm.focus,\"can-delete\":_vm.canDelete,\"is-last\":i == _vm.filteredChildren.length - 1},on:{\"remove\":_vm.removeNote,\"reply\":function($event){return _vm.replyTo(true)}}})}),(_vm.showReplyUi)?_c('div',{staticClass:\"sendMessage\"},[_c('div',{staticClass:\"messagebody\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.replyMessage),expression:\"replyMessage\"}],attrs:{\"id\":'reply-' + _vm.note.id,\"rows\":\"3\",\"placeholder\":\"Viestin sisältö\"},domProps:{\"value\":(_vm.replyMessage)},on:{\"input\":function($event){if($event.target.composing)return;_vm.replyMessage=$event.target.value}}})]),_c('div',{staticClass:\"actions\"},[(_vm.canSendAsEmail)?_c('checkboxinput',{attrs:{\"title\":_vm.$t('sectionMessages.sendAsMail')},model:{value:(_vm.asEmail),callback:function ($$v) {_vm.asEmail=$$v},expression:\"asEmail\"}}):_vm._e(),_c('sprbutton',{attrs:{\"click-event\":\"reply\",\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('groups.reply'),\"disabled\":_vm.replyMessage.length === 0},on:{\"reply\":_vm.replyToThread}})],1)]):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:'sprmessage thread-message' + _vm.activeClass,attrs:{\"id\":'msg-' + _vm.note.id}},[_c('div',{staticClass:\"msg-sender\"},[_c('div',{staticClass:\"sender-details\"},[_c('div',{staticClass:\"sender\"},[_c('span',{staticClass:\"sentby cap-label brand-red\"},[_vm._v(_vm._s(_vm.note.sender))])]),_c('span',{staticClass:\"date\"},[_vm._v(_vm._s(_vm.formattedDate(_vm.note.sent)))])]),(_vm.canDelete)?_c('span',{staticClass:\"rem-btn\",attrs:{\"title\":\"Poista\"},on:{\"click\":function($event){return _vm.$emit('remove', _vm.note)}}},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"ban\"}})],1):_vm._e()]),_c('div',{staticClass:\"msg-content\"},[_c('p',{directives:[{name:\"linkified\",rawName:\"v-linkified:options\",value:({ nl2br: true }),expression:\"{ nl2br: true }\",arg:\"options\"}]},[_vm._v(\" \"+_vm._s(_vm.note.content)+\" \")]),_c('p',[(_vm.isLast)?_c('a',{attrs:{\"href\":\"reply\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('reply')}}},[_vm._v(_vm._s(_vm.$t('groups.reply')))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div :id=\"'msg-' + note.id\" :class=\"'sprmessage thread-message' + activeClass\">\r\n    <div class=\"msg-sender\">\r\n      <div class=\"sender-details\">\r\n        <div class=\"sender\">\r\n          <span class=\"sentby cap-label brand-red\">{{ note.sender }}</span>\r\n        </div>\r\n        <span class=\"date\">{{ formattedDate(note.sent) }}</span>\r\n      </div>\r\n      <span v-if=\"canDelete\" title=\"Poista\" class=\"rem-btn\" @click=\"$emit('remove', note)\">\r\n        <font-awesome-icon icon=\"ban\" class=\"brand-red\" />\r\n      </span>\r\n    </div>\r\n    <div class=\"msg-content\">\r\n      <p v-linkified:options=\"{ nl2br: true }\">\r\n        {{ note.content }}\r\n      </p>\r\n      <p>\r\n        <a v-if=\"isLast\" href=\"reply\" @click.prevent=\"$emit('reply')\">{{ $t('groups.reply') }}</a>\r\n      </p>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import moment from 'moment'\r\n  import messages from '../../mixins/messages.js'\r\n\r\n  export default {\r\n    name: 'ReplyView',\r\n    components: {},\r\n    mixins: [messages],\r\n    props: {\r\n      note: {\r\n        type: Object,\r\n        required: true\r\n      },\r\n      focus: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      canDelete: Boolean,\r\n      isLast: Boolean\r\n    },\r\n    data () {\r\n      return {\r\n      }\r\n    },\r\n    computed: {\r\n      activeClass: function () {\r\n        return this.note.id === this.focus ? ' active' : ''\r\n      }\r\n    },\r\n    methods: {\r\n      formattedDate (date) {\r\n        return moment.utc(date).local().format('DD.MM.YYYY H:mm')\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReplyView.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReplyView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ReplyView.vue?vue&type=template&id=8d60fcb6\"\nimport script from \"./ReplyView.vue?vue&type=script&lang=js\"\nexport * from \"./ReplyView.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div :id=\"'msg-' + note.id\" :class=\"'sprmessage thread-node thread-message' + activeClass\">\r\n    <!-- thread OP sender -->\r\n    <div class=\"msg-sender\">\r\n      <div class=\"sender-img\">\r\n        <div class=\"spr-portrait portrait-size\"\r\n             :style=\"portraitStyle\"\r\n        />\r\n      </div>\r\n      <div class=\"sender-details\">\r\n        <div class=\"sender\">\r\n          <span class=\"sentby cap-label brand-red\">{{ note.sender }}</span>\r\n        </div>\r\n        <span class=\"date\">{{ formattedDate(note.sent) }}</span>\r\n      </div>\r\n      <div v-if=\"canDelete\" title=\"Poista\" class=\"rem-btn\" @click=\"removeNote(note)\">\r\n        <span>\r\n          <font-awesome-icon icon=\"ban\" class=\"brand-red\" />\r\n        </span>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- thread OP message -->\r\n    <div class=\"msg-content\">\r\n      <div class=\"head-cont\">\r\n        <div class=\"subject\">\r\n          <div v-if=\"!note.deleted\">\r\n            {{ note.subject }}\r\n          </div>\r\n        </div>\r\n        <div v-if=\"!note.deleted\">\r\n          <p v-linkified:options=\"{ nl2br: true }\">\r\n            {{ note.content }}\r\n          </p>\r\n          <p>\r\n            <a href=\"reply\" @click.prevent=\"replyTo(true)\">{{ $t('groups.reply') }}</a>\r\n          </p>\r\n        </div>\r\n        <div v-else class=\"pt-3\">\r\n          <p>{{ $t('groups.messageRemoved') }}</p>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- replies to -->\r\n    <div v-if=\"isCollapsed\" class=\"show-all-messages caret-down\" @click=\"isCollapsed = false\">\r\n      <span>{{ $t('groups.showAll').replace('{number}', totalReplies - 1) }}</span>\r\n    </div>\r\n    <div v-if=\"!isCollapsed && totalReplies > 1\" class=\"show-all-messages caret-up\" @click=\"isCollapsed = true\">\r\n      <span>{{ $t('groups.onlyLatest') }}</span>\r\n    </div>\r\n\r\n    <reply v-for=\"(child, i) in filteredChildren\"\r\n           :key=\"'reply_' + child.id\"\r\n           :note=\"child\"\r\n           :focus=\"focus\"\r\n           :can-delete=\"canDelete\"\r\n           :is-last=\"i == filteredChildren.length - 1\"\r\n           @remove=\"removeNote\"\r\n           @reply=\"replyTo(true)\"\r\n    />\r\n\r\n    <!-- reply dialog -->\r\n    <div v-if=\"showReplyUi\" class=\"sendMessage\">\r\n      <div class=\"messagebody\">\r\n        <textarea :id=\"'reply-' + note.id\" v-model=\"replyMessage\" rows=\"3\" placeholder=\"Viestin sisältö\" />\r\n      </div>\r\n      <div class=\"actions\">\r\n        <checkboxinput v-if=\"canSendAsEmail\"\r\n                       v-model=\"asEmail\" :title=\"$t('sectionMessages.sendAsMail')\"\r\n        />\r\n        <sprbutton click-event=\"reply\" type=\"primary\" :size=\"1\" :title=\"$t('groups.reply')\" :disabled=\"replyMessage.length === 0\" @reply=\"replyToThread\" />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import moment from 'moment'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import reply from './ReplyView.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import messages from '../../mixins/messages.js'\r\n  import anonPortrait from '../../assets/img/anon-portrait.png'\r\n\r\n  export default {\r\n    name: 'ThreadView',\r\n    components: { sprbutton, reply, checkboxinput },\r\n    mixins: [messages],\r\n    props: {\r\n      note: {\r\n        type: Object,\r\n        required: true\r\n      },\r\n      children: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      portraits: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      focus: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      canDelete: Boolean,\r\n      canSendAsEmail: Boolean\r\n    },\r\n    data () {\r\n      return {\r\n        asEmail: false,\r\n        replyMessage: '',\r\n        collapseSelection: true,\r\n        showReplyUi: false\r\n      }\r\n    },\r\n    computed: {\r\n      activeClass: function () {\r\n        return this.note.id === this.focus ? ' active' : ''\r\n      },\r\n      totalReplies: function () {\r\n        return this.children.length\r\n      },\r\n      portraitUrl: function () {\r\n        const self = this\r\n        const found = _.find(this.portraits, function (x) {\r\n          return self.note.senderId === x.id\r\n        })\r\n\r\n        return (found && found.url) ? found.url : anonPortrait\r\n      },\r\n      portraitStyle: function () {\r\n        return 'background: rgba(0, 0, 0, 0) url(' + this.portraitUrl + ') repeat scroll center center / cover;'\r\n      },\r\n      isCollapsed: {\r\n        get: function () {\r\n          return this.collapseSelection && this.totalReplies > 1\r\n        },\r\n        set: function (newValue) {\r\n          this.collapseSelection = newValue\r\n        }\r\n      },\r\n      filteredChildren: function () {\r\n        if (this.isCollapsed) {\r\n          return [this.children[this.children.length - 1]]\r\n        }\r\n\r\n        return this.children\r\n      }\r\n    },\r\n    mounted: function () {\r\n      this.handleThreadLoad()\r\n    },\r\n    methods: {\r\n      handleThreadLoad: function () {\r\n        const self = this\r\n        if (this.children) {\r\n          var found = _.some(this.children, function (x) {\r\n            return x.id === self.focus\r\n          })\r\n\r\n          if (found) {\r\n            this.collapseSelection = false\r\n          }\r\n\r\n          if (found) {\r\n            this.$nextTick(function () {\r\n              const element = document.getElementById('msg-' + self.focus)\r\n              element.scrollIntoView({ behavior: 'smooth' })\r\n            })\r\n          }\r\n        }\r\n\r\n        if (this.note.id === this.focus) {\r\n          this.$nextTick(function () {\r\n            const element = document.getElementById('msg-' + self.focus)\r\n            element.scrollIntoView({ behavior: 'smooth' })\r\n          })\r\n        }\r\n      },\r\n      replyTo: function (scroll) {\r\n        this.showReplyUi = !this.showReplyUi\r\n        if (this.showReplyUi) {\r\n          const id = 'reply-' + this.note.id\r\n          this.$nextTick(function () {\r\n            const element = document.getElementById(id)\r\n            element.focus({ preventScroll: true })\r\n            if (scroll) element.scrollIntoView({ behavior: 'smooth', block: 'nearest' })\r\n          })\r\n        }\r\n      },\r\n      formattedDate (date) {\r\n        return moment.utc(date).local().format('DD.MM.YYYY H:mm')\r\n      },\r\n      removeNote: function (whichNote) {\r\n        this.$emit('remove', whichNote)\r\n      },\r\n      replyToThread: function () {\r\n        this.$bus.$emit('reply-to-thread', {\r\n          asEmail: this.asEmail,\r\n          message: this.replyMessage,\r\n          parentId: this.note.id\r\n        }, this.resetForm)\r\n      },\r\n      resetForm: function () {\r\n        this.replyMessage = ''\r\n        this.asEmail = false\r\n        this.showReplyUi = false\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  @keyframes msg-active-animation {\r\n    0% {background: $brand-grey2;}\r\n    100% {background: unset;}\r\n  }\r\n\r\n  .thread-message {\r\n    &.active {\r\n      animation-name: msg-active-animation;\r\n      animation-duration: 5s;\r\n    }\r\n  }\r\n\r\n  .thread-node {\r\n    margin-bottom: 15px;\r\n\r\n    &:last-child {\r\n      margin-bottom: 0px;\r\n    }\r\n\r\n    &:nth-child(odd) {\r\n      background: unset !important;\r\n    }\r\n  }\r\n\r\n  .sprmessage {\r\n    padding: 15px !important;\r\n\r\n    .head-cont {\r\n      .subject {\r\n        font-weight: bold;\r\n        margin-bottom: 3px;\r\n      }\r\n    }\r\n\r\n    .sprmessage {\r\n      border-left: 5px solid rgba(0,0,0,0.5);\r\n      padding: 0 0 0 20px !important;\r\n      margin-left: 50px;\r\n      background: transparent !important;\r\n\r\n      @media (max-width: $media-md-max) {\r\n        margin-left: 5px;\r\n      }\r\n\r\n      .msg-content {\r\n        padding-left: 0;\r\n      }\r\n    }\r\n\r\n    .msg-sender {\r\n      display: flex;\r\n      flex-direction: row;\r\n      align-items: center;\r\n      margin-bottom: 10px;\r\n      position: relative;\r\n\r\n      .rem-btn {\r\n        position: absolute;\r\n        right: 0;\r\n        top: 0;\r\n        cursor: pointer;\r\n      }\r\n\r\n      .spr-portrait {\r\n        height: 40px;\r\n        width: 40px;\r\n        display: inline-block;\r\n        border-radius: 50px;\r\n        margin-right: 13px;\r\n      }\r\n\r\n      @media (max-width: $media-md-max) {\r\n        .spr-portrait {\r\n          display: none;\r\n        }\r\n      }\r\n    }\r\n\r\n    .msg-content {\r\n      padding-left: 50px;\r\n\r\n      .sendMessage {\r\n        textarea {\r\n          min-height: 80px;\r\n        }\r\n      }\r\n\r\n      @media (max-width: $media-md-max) {\r\n        padding-left: 0px;\r\n      }\r\n    }\r\n\r\n    .sendMessage {\r\n      padding-left: 50px;\r\n\r\n      @media (max-width: $media-md-max) {\r\n        padding-left: 0px;\r\n      }\r\n\r\n      textarea {\r\n        box-sizing: border-box;\r\n        display: block;\r\n        width: 100%;\r\n        padding: 10px 20px;\r\n        font-size: 1rem;\r\n        line-height: 1.5;\r\n        color: #495057;\r\n        background-color: #fff;\r\n        background-clip: padding-box;\r\n        border: 1px solid #bdbdbd;\r\n        border-radius: 0;\r\n        transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;\r\n      }\r\n\r\n      .actions {\r\n        display: flex;\r\n        flex-direction: row;\r\n        justify-content: flex-end;\r\n        align-content: center;\r\n\r\n        * {\r\n            display: block;\r\n          }\r\n\r\n        .spr-simple-checkbox {\r\n          padding: 10px 10px 0 0 !important;\r\n        }\r\n      }\r\n    }\r\n\r\n    .show-all-messages {\r\n      padding: 10px 15px 10px 15px;\r\n      margin-bottom: 15px;\r\n      margin-left: 50px;\r\n      color: #c00;\r\n      cursor: pointer;\r\n      border: 1px solid rgba(0,0,0,0.1);\r\n      margin-top: 25px;\r\n\r\n      span {\r\n        padding-left: 10px;\r\n      }\r\n\r\n      @media (max-width: $media-md-max) {\r\n        margin-left: 0;\r\n      }\r\n    }\r\n\r\n    .caret-down:before {\r\n      content: \"»\";\r\n      display: inline-block;\r\n      transform: rotate(90deg);\r\n    }\r\n\r\n    .caret-up:before {\r\n      content: \"»\";\r\n      display: inline-block;\r\n      transform: rotate(270deg);\r\n    }\r\n\r\n    .show-all-messages:hover span {\r\n      text-decoration: underline;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ThreadView.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ThreadView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ThreadView.vue?vue&type=template&id=6cdda850\"\nimport script from \"./ThreadView.vue?vue&type=script&lang=js\"\nexport * from \"./ThreadView.vue?vue&type=script&lang=js\"\nimport style0 from \"./ThreadView.vue?vue&type=style&index=0&id=6cdda850&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div>\r\n    <div class=\"msg-list\">\r\n      <thread v-for=\"thread in getThreads\"\r\n              :key=\"'thread_' + thread.id\"\r\n              :note=\"thread\"\r\n              :children=\"getThreadChildren(thread.id)\"\r\n              :focus=\"focus\"\r\n              :portraits=\"portraits\"\r\n              :can-delete=\"canDelete\"\r\n              :can-send-as-email=\"canSendAsEmail\"\r\n              @remove=\"remove\"\r\n      />\r\n    </div>\r\n    <b-modal v-model=\"showModal\">\r\n      <div slot=\"modal-header\">\r\n        <h3>{{ $t('groups.youSure') }}</h3>\r\n      </div>\r\n      <div slot=\"modal-footer\" class=\"text-center\">\r\n        <sprbutton click-event=\"rem\" type=\"primary\" :size=\"1\" :title=\"$t('groups.remove')\" @rem=\"removeMessage\" />\r\n        <sprbutton click-event=\"can\" type=\"primary\" :size=\"1\" :title=\"$t('groups.cancel')\" @can=\"showModal = false\" />\r\n      </div>\r\n      <div>\r\n        <p>{{ $t('groups.deleteMessagePrompt') }}</p>\r\n        <p v-if=\"toRem\">\r\n          {{ messageSummary(toRem) }}\r\n        </p>\r\n        <p v-if=\"toRem\">\r\n          – {{ toRem.sender }}, {{ formattedDate(toRem.sent) }}\r\n        </p>\r\n      </div>\r\n    </b-modal>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import moment from 'moment'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import thread from './ThreadView.vue'\r\n  import messages from '../../mixins/messages.js'\r\n\r\n  export default {\r\n    name: 'NoteView',\r\n    components: { sprbutton, thread },\r\n    mixins: [messages],\r\n    props: {\r\n      notes: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      content: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      sender: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      sent: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      subject: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      groupid: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      portraits: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      focus: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      canDelete: Boolean,\r\n      canSendAsEmail: Boolean\r\n    },\r\n    data () {\r\n      return {\r\n        toRem: null,\r\n        showModal: false\r\n      }\r\n    },\r\n    computed: {\r\n      showRem: function () {\r\n        if (this.hasRole('Admin') || this.hasRole('Employee')) {\r\n          return true\r\n        }\r\n\r\n        if (this.notes[0] != null && (this.hasRole('J1') || this.hasRole('J2'))) {\r\n          var result = this.hasClaim(this.notes[0].sectionId.toString(), 'SectionMembership')\r\n          return result\r\n        }\r\n\r\n        if (this.groupid && this.hasClaim(this.groupid.toString(), 'GroupAdmin')) {\r\n          return true\r\n        }\r\n        return false\r\n      },\r\n      getThreads: function () {\r\n        return _.orderBy(_.filter(this.notes, function (x) {\r\n          return x.parentMessageId === null\r\n        }), ['id'], ['desc'])\r\n      }\r\n    },\r\n    watch: {\r\n      showModal: function (val) {\r\n        if (!val) {\r\n          this.toRem = null\r\n        }\r\n      }\r\n    },\r\n    mounted: function () {\r\n      if (this.focus != null) {\r\n        var message = {\r\n          id: this.focus,\r\n          messageType: 2\r\n        }\r\n        this.markMessageAsRead(message)\r\n      }\r\n    },\r\n    methods: {\r\n      formattedDate (date) {\r\n        return moment.utc(date).local().format('DD.MM.YYYY H:mm')\r\n      },\r\n      getThreadChildren: function (threadId) {\r\n        return _.orderBy(_.filter(this.notes, function (x) {\r\n          return x.parentMessageId === threadId\r\n        }), ['id'], ['asc'])\r\n      },\r\n      remove: function (x) {\r\n        this.toRem = x\r\n        this.showModal = true\r\n      },\r\n      removeMessage: function () {\r\n        this.showModal = false\r\n        this.$emit('removed', this.toRem.id)\r\n      },\r\n      messageSummary: function (msg) {\r\n        if (msg.subject) return msg.subject\r\n        if (msg.content.length <= 30 || msg.content.split(' ').length <= 5) return '\"' + msg.content + '\"'\r\n        var trunc = msg.content.split(' ').splice(0, 5).join(' ') + '...'\r\n        if (trunc.length <= 50) return '\"' + trunc + '\"'\r\n        return '\"' + trunc.substring(0, 30) + '...\"'\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .close-link {\r\n    cursor: pointer;\r\n  }\r\n\r\n  .rem-btn {\r\n    color: $brand-red;\r\n    cursor: pointer;\r\n\r\n    &:hover {\r\n      text-decoration: underline;\r\n    }\r\n  }\r\n\r\n  .head-cont {\r\n    display: flex;\r\n  }\r\n\r\n  .msg-list {\r\n    padding: 15px;\r\n    background-color: white;\r\n  }\r\n\r\n  .sprmessage {\r\n    padding: 5px;\r\n    background-color: white;\r\n    &:nth-child(odd)\r\n\r\n  {\r\n    background: rgba(0, 0, 0, 0.03);\r\n  }\r\n\r\n  .sender {\r\n    .state\r\n\r\n  {\r\n    width: 10px;\r\n    height: 10px;\r\n    border-radius: 100%;\r\n    display: none;\r\n    &.new\r\n\r\n  {\r\n    display: inline-block;\r\n    background-color: $brand-success;\r\n    border-color: $brand-success;\r\n  }\r\n\r\n  }\r\n\r\n  .sentby {\r\n    color: $brand-red;\r\n    &:hover\r\n\r\n  {\r\n    background-color: auto;\r\n  }\r\n\r\n  }\r\n  }\r\n\r\n  .subject {\r\n    width: calc(100% - 30px);\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n    font-weight: 800;\r\n  }\r\n\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NotesView.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NotesView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./NotesView.vue?vue&type=template&id=9e9713f8&scoped=true\"\nimport script from \"./NotesView.vue?vue&type=script&lang=js\"\nexport * from \"./NotesView.vue?vue&type=script&lang=js\"\nimport style0 from \"./NotesView.vue?vue&type=style&index=0&id=9e9713f8&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"9e9713f8\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"container discussion\" :class=\"{'disabled' : messagesLoading}\">\r\n    <div class=\"row\">\r\n      <div class=\"col-lg-8 offset-lg-2\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12 my-2 send-message\">\r\n            <div class=\"message-body\">\r\n              <textarea v-model=\"messageBody\" rows=\"3\" :placeholder=\"$t('groups.messageBodyPlaceholder')\" />\r\n            </div>\r\n            <div class=\"message-actions\">\r\n              <sprbutton type=\"primary\"\r\n                         :size=\"4\"\r\n                         :title=\"$t('groups.sendMessage')\"\r\n                         class=\"spr-redborder button-width\"\r\n                         click-event=\"sendMessage\"\r\n                         :disabled=\"messageBody.length === 0\"\r\n                         @sendMessage=\"sendMessageThread\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <noteview v-show=\"notes && notes.length > 0\"\r\n                  :notes=\"notes\"\r\n                  :groupid=\"fmgId\"\r\n                  :portraits=\"portraits\"\r\n                  :focus=\"focusMessage\"\r\n                  :can-delete=\"canDelete\"\r\n                  :can-send-as-email=\"false\"\r\n                  @removed=\"removed\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n  import noteview from '../groups/NotesView.vue'\r\n  import moment from 'moment'\r\n\r\n  export default {\r\n    name: 'FriendDiscussion',\r\n    components: { sprbutton, noteview },\r\n    data () {\r\n      return {\r\n        notes: null,\r\n        messageBody: '',\r\n        fmgId: this.$route.params.id,\r\n        messagesLoading: true\r\n      }\r\n    },\r\n    computed: {\r\n      canDelete: function () {\r\n        return (this.hasAdminToFriendManagementGroup(this.fmgId))\r\n      },\r\n      portraits: function () {\r\n        return _.map(this.notes, function (x) {\r\n          return { id: x.senderId, url: x.senderPortrait }\r\n        })\r\n      },\r\n      focusMessage: function () {\r\n        var message = parseInt(this.$route.query.msg)\r\n        return (message && !isNaN(message)) ? message : null\r\n      }\r\n    },\r\n\r\n    mounted: function () {\r\n      this.getMessages()\r\n      this.$bus.$on('reply-to-thread', this.handleReply)\r\n    },\r\n    beforeDestroy: function () {\r\n      this.$bus.$off('reply-to-thread')\r\n    },\r\n    methods: {\r\n      handleReply: function (reply, cb) {\r\n        this.sendMessage({\r\n          content: reply.message,\r\n          friendManagementGroupId: this.fmgId,\r\n          parentMessageId: reply.parentId,\r\n          link: this.$route.path\r\n        }, true)\r\n        this.messagesLoading = true\r\n        cb()\r\n      },\r\n      removed: function (x) {\r\n        const self = this\r\n        const url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.removefmgmessage[0]}/${x}`\r\n        this.$http.post(url).then(function (resp) {\r\n                                    self.getMessages()\r\n                                  },\r\n                                  function (y) {\r\n                                    console.log('error removing notification!')\r\n                                  })\r\n      },\r\n      getMessages () {\r\n        this.messagesLoading = true\r\n        var url = this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.fmgmessages[0].replace('{0}', this.fmgId)\r\n        var self = this\r\n        this.$http.get(url).then(resp => {\r\n          self.notes = _.sortBy(resp.body, function (message) {\r\n            return moment(message.sent)\r\n          }).reverse()\r\n          self.messagesLoading = false\r\n        })\r\n      },\r\n      sendMessageThread: function () {\r\n        this.sendMessage({\r\n          content: this.messageBody,\r\n          friendManagementGroupId: this.fmgId,\r\n          link: this.$route.path\r\n        })\r\n      },\r\n      sendMessage: function (messageDto, forceSend) {\r\n        if (this.messageBody.length === 0 && !forceSend) {\r\n          return\r\n        }\r\n        var self = this\r\n        this.sendSuccess = false\r\n        var url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.sendfmgmessage[0]}`\r\n        this.cancelSendMessage()\r\n        this.$http.post(url, messageDto).then((resp) => {\r\n          self.getMessages()\r\n        })\r\n      },\r\n      cancelSendMessage () {\r\n        this.messageBody = ''\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .discussion {\r\n    .message-body {\r\n      textarea {\r\n        margin: 3px 0;\r\n        width: 100%;\r\n      }\r\n    }\r\n\r\n    &.disabled {\r\n      pointer-events: none;\r\n      /* for \"disabled\" effect */\r\n      opacity: 0.5;\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Discussion.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Discussion.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Discussion.vue?vue&type=template&id=14c0f260\"\nimport script from \"./Discussion.vue?vue&type=script&lang=js\"\nexport * from \"./Discussion.vue?vue&type=script&lang=js\"\nimport style0 from \"./Discussion.vue?vue&type=style&index=0&id=14c0f260&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"container customersearch\">\r\n    <div v-show=\"isLoading\" class=\"loading\">\r\n      <div class=\"spinner\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"isAuthorized\" class=\"row\">\r\n      <div class=\"col-md-8 col-lg-9 order-md-2 search-list\">\r\n        <banner v-show=\"!isLoading && !noResults\" :banner-text=\"$t('friendManagementSettings.warningBanner')\" />\r\n        <searchheader\r\n          v-if=\"isInitialized\"\r\n          :id=\"id\"\r\n          :is-net-fmg=\"isNetFmg\"\r\n          :search=\"searchText\"\r\n          @search=\"onSearch\"\r\n          @sort=\"onSort\"\r\n        />\r\n        <div v-show=\"isCustomerTab || isVolunteerTab\" class=\"searchresults\">\r\n          <resultlist\r\n            v-if=\"group\"\r\n            v-show=\"hasSearched\"\r\n            :group=\"group\"\r\n            :take=\"searchFilter.pagesize\"\r\n            :skip=\"searchFilter.skip\"\r\n            :total=\"total\"\r\n            :search-type=\"searchFilter.searchType\"\r\n            :customerlist=\"customerList\"\r\n            :volunteerlist=\"volunteerList\"\r\n            @pagechanged=\"onPageChanged\"\r\n            @next=\"onNext\"\r\n            @previous=\"onPrevious\"\r\n            @selected=\"onItemSelected\"\r\n          />\r\n          <div v-show=\"!isLoading && noResults\" class=\"noresults infocontainer\">\r\n            <div class=\"info warning\">\r\n              <font-awesome-icon icon=\"exclamation-triangle\" />{{ $t('customerSearch.noResults') }}\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div v-show=\"isPoolsTab\" class=\"pools\">\r\n          <div v-if=\"group\">\r\n            <PoolsListNet\r\n              v-if=\"group.netFriendship\"\r\n              :filter=\"poolFilter\"\r\n              :search=\"poolSearchText\"\r\n            />\r\n            <PoolsListStandard\r\n              v-else\r\n              :filter=\"poolFilter\"\r\n              :search=\"poolSearchText\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div v-show=\"isDiscussionTab\" class=\"discussion\">\r\n          <discussion />\r\n        </div>\r\n      </div>\r\n      <div v-show=\"!isLoading\" class=\"col-md-4 col-lg-3 order-md-1 mt-3 mt-md-0 search-filter\" :class=\"{'disabled' : isLoading}\">\r\n        <customerfilter\r\n          v-if=\"(isCustomerTab || isVolunteerTab) && searchFilter && group\"\r\n          :group=\"group\"\r\n          :filter-type=\"searchFilter.searchType\"\r\n          @filterchanged=\"onCustomerFilterChanged\"\r\n        />\r\n        <poolfilter\r\n          v-if=\"isPoolsTab\"\r\n          :filter=\"poolFilter\"\r\n          @filterchanged=\"onPoolFilterChanged\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import customerfilter from './CustomerFilter.vue'\r\n  import poolfilter from './PoolFilter.vue'\r\n  import searchheader from './SearchHeader.vue'\r\n  import resultlist from './ResultList.vue'\r\n  import PoolsListStandard from './PoolsListStandard.vue'\r\n  import PoolsListNet from './PoolsListNet.vue'\r\n  import discussion from './Discussion.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n  import bitmaskhelper from '../../helpers/bitmaskhelper'\r\n  import { PreferredAges, CustomerTypes, NetCustomerTypes, CustomerState, \r\n    FindNetFriendManagementGroupContentCriteria, FindStandardFriendManagementGroupContentCriteria, \r\n    FindFriendManagementGroupCustomersResult, FindFriendManagementGroupVolunteersResult, \r\n    FriendManagementDto, UserProfileFindDto, FriendCustomerFindDto, OrderByFriendType } from '../../types/index'\r\n  import { SearchFilter } from '../../types/custom'\r\n  import banner from '@/components/common/Banner/CommonBanner.vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    searchFilter: SearchFilter,\r\n    customerList: Array<FriendCustomerFindDto>,\r\n    volunteerList: Array<UserProfileFindDto>,\r\n    total: number,\r\n    hasSearched: boolean,\r\n    isInitialized: boolean,\r\n    isLoading: boolean,\r\n    isAuthorized: boolean,\r\n    searchTimeout: undefined | number,\r\n    poolFilter: number[],\r\n    poolSearchText: string,\r\n    group: FriendManagementDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerSearch',\r\n    components: { poolfilter, customerfilter, searchheader, resultlist, PoolsListStandard, PoolsListNet, discussion, loading, banner },\r\n    props: {\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      }, // the group id\r\n      searchmode: {\r\n        type: String,\r\n        default: 'customer'\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        searchFilter: {} as SearchFilter,\r\n        customerList: [],\r\n        volunteerList: [],\r\n        total: 0,\r\n        hasSearched: false,\r\n        isInitialized: false,\r\n        isLoading: false,\r\n        isAuthorized: false,\r\n        searchTimeout: undefined,\r\n        poolFilter: [1], // Active preselected\r\n        poolSearchText: '',\r\n        group: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      isCustomerTab (): boolean {\r\n        return this.searchmode.toLowerCase() === 'customer'\r\n      },\r\n      isVolunteerTab (): boolean {\r\n        return this.searchmode.toLowerCase() === 'volunteer'\r\n      },\r\n      isPoolsTab (): boolean {\r\n        return this.searchmode.toLowerCase() === 'pools'\r\n      },\r\n      isDiscussionTab (): boolean {\r\n        return this.searchmode.toLowerCase() === 'discussion'\r\n      },\r\n      noResults (): boolean {\r\n        if (this.searchFilter.searchType === 'CUSTOMER') {\r\n          return this.customerList && this.customerList.length === 0 && this.hasSearched\r\n        } else if (this.searchFilter.searchType === 'VOLUNTEER') {\r\n          return this.volunteerList && this.volunteerList.length === 0 && this.hasSearched\r\n        } else {\r\n          return true\r\n        }\r\n      },\r\n      searchText (): string {\r\n        if (this.searchFilter.searchType === 'CUSTOMER') {\r\n          return this.$store.state.searchFilter.searchText.customer\r\n        } else if (this.searchFilter.searchType === 'VOLUNTEER') {\r\n          return this.$store.state.searchFilter.searchText.volunteer\r\n        } else {\r\n          return ''\r\n        }\r\n      },\r\n      isNetFmg (): boolean {\r\n        return this.group ? this.group.netFriendship : false\r\n      }\r\n    },\r\n    mounted (): void {\r\n      // @ts-ignore\r\n      if (!this.hasBrokerRole(this.id) && (!this.hasNetBrokerRole(this.id))) {\r\n        this.isAuthorized = false\r\n        // @ts-ignore\r\n        this.showAlertPermissionDenied().then(() => this.$router.push('/profile'))\r\n        return\r\n      }\r\n      this.isAuthorized = true\r\n      this.isLoading = true\r\n      this.hasSearched = false\r\n      this.loadFMG().then(x => {\r\n        this.isLoading = false\r\n        this.hasSearched = true\r\n        if (x.ok && x.data) {\r\n          this.group = x.data\r\n\r\n          this.searchFilter = this.$store.state.searchFilter\r\n\r\n          if (this.searchmode.toLowerCase() !== this.searchFilter.searchType.toLowerCase()) {\r\n            this.searchFilter.ages = []\r\n            this.searchFilter.customerTypes = []\r\n            this.searchFilter.customerStates = []\r\n            this.searchFilter.friendshipTypes = []\r\n            this.searchFilter.languages = []\r\n            this.searchFilter.motherTongs = []\r\n            this.searchFilter.timeWithoutFriends = []\r\n            this.searchFilter.skip = 0\r\n            this.searchFilter.genders = []\r\n            this.searchFilter.hasGroupMembership = false\r\n            this.searchFilter.interests = []\r\n          }\r\n          switch (this.searchmode) {\r\n          case 'customer':\r\n            this.searchFilter.searchType = 'CUSTOMER'\r\n            break\r\n          case 'volunteer':\r\n            this.searchFilter.searchType = 'VOLUNTEER'\r\n            break\r\n          case 'pools':\r\n            this.searchFilter.searchType = 'POOLS'\r\n          }\r\n\r\n          if (this.searchFilter.orderByFriendType === OrderByFriendType.NotDefined) this.searchFilter.orderByFriendType = OrderByFriendType.NewestFirst\r\n          this.$store.commit('setSearchFilter', this.searchFilter)\r\n          this.doSearch()\r\n          this.$bus.$on('customerSelected', this.onItemSelected)\r\n          this.$bus.$on('volunteerFriendshipSelected', this.onItemSelected)\r\n          this.$bus.$on('volunteerSelected', this.onItemSelected)\r\n\r\n          this.isInitialized = true\r\n        }\r\n      })\r\n    },\r\n    beforeDestroy (): void {\r\n      this.$bus.$off('customerSelected')\r\n      this.$bus.$off('volunteerFriendshipSelected')\r\n      this.$bus.$off('volunteerSelected')\r\n    },\r\n    methods: {\r\n      loadFMG (): PromiseLike<HttpResponse> {\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationById[0].replace('{0}', this.id)\r\n        return this.$http.get(url)\r\n      },\r\n      onCustomerFilterChanged (val): void {\r\n        this.$store.commit('setSearchFilter', val)\r\n        this.searchFilter.skip = 0\r\n        this.doSearch()\r\n      },\r\n      onPoolFilterChanged (val): void {\r\n        var existingIndex = this.poolFilter.indexOf(val)\r\n        if (existingIndex >= 0) {\r\n          this.poolFilter.splice(existingIndex, 1)\r\n        } else {\r\n          this.poolFilter.push(val)\r\n        }\r\n      },\r\n      onPageChanged (val): void {\r\n        this.searchFilter.skip = val.skip\r\n        this.$store.commit('setSearchFilter', this.searchFilter)\r\n        this.doSearch()\r\n      },\r\n      onPrevious (): void {\r\n        this.searchFilter.skip -= this.searchFilter.pagesize\r\n        if (this.searchFilter.skip < 0) this.searchFilter.skip = 0\r\n        this.$store.commit('setSearchFilter', this.searchFilter)\r\n        this.doSearch()\r\n      },\r\n      onNext (): void {\r\n        if (this.searchFilter.skip + this.searchFilter.pagesize > this.total) return\r\n        this.searchFilter.skip += this.searchFilter.pagesize\r\n        this.$store.commit('setSearchFilter', this.searchFilter)\r\n        this.doSearch()\r\n      },\r\n      onSearch (value: string): void {\r\n        if (this.isPoolsTab) {\r\n          this.poolSearchText = value\r\n        } else {\r\n          this.setSearchText(value)\r\n          clearTimeout(this.searchTimeout)\r\n          var self = this\r\n          this.searchTimeout = window.setTimeout(function () {\r\n            self.doSearch()\r\n          }, 200)\r\n        }\r\n      },\r\n      onSort (value): void {\r\n        this.searchFilter.orderByFriendType = value\r\n        this.searchFilter.skip = 0 // reset to full results\r\n        this.$store.commit('setSearchFilter', this.searchFilter)\r\n        this.doSearch()\r\n      },\r\n      setSearchText (value: string): void {\r\n        if (this.searchFilter.searchType === 'CUSTOMER' && (!value || this.searchFilter.searchText.customer !== value)) {\r\n          this.searchFilter.skip = 0\r\n          this.searchFilter.searchText.customer = value\r\n        } else if (this.searchFilter.searchType === 'VOLUNTEER' && (!value || this.searchFilter.searchText.volunteer !== value)) {\r\n          this.searchFilter.skip = 0\r\n          this.searchFilter.searchText.volunteer = value\r\n        }\r\n        this.$store.commit('setSearchFilter', this.searchFilter)\r\n      },\r\n      onItemSelected (value): void {\r\n        this.$router.push(`/friend/customerpreview/${this.id}/${value.id}`)\r\n      },\r\n      doSearch (): void {\r\n        var self = this\r\n        // get the last search from the store\r\n        self.searchFilter = self.$store.state.searchFilter\r\n        self.isLoading = true\r\n        self.hasSearched = false\r\n        var url = ''\r\n        var request = {} as FindNetFriendManagementGroupContentCriteria | FindStandardFriendManagementGroupContentCriteria\r\n        request.skip = self.searchFilter.skip\r\n        request.take = self.searchFilter.pagesize\r\n        request.groupMembership = self.searchFilter.hasGroupMembership\r\n        request.orderByFriendType = self.searchFilter.orderByFriendType\r\n        request.groupId = Number(this.id)\r\n        request.languages = self.searchFilter.languages ? self.searchFilter.languages : []\r\n        request.natives = self.searchFilter.motherTongs ? self.searchFilter.motherTongs : []\r\n        request.ages = bitmaskhelper.arrayToBitmask(self.searchFilter.ages ? self.searchFilter.ages : []) as PreferredAges\r\n        request.timeWithoutFriends = bitmaskhelper.arrayToBitmask(self.searchFilter.timeWithoutFriends ? self.searchFilter.timeWithoutFriends : [])\r\n        request.genders = self.searchFilter.genders ? self.searchFilter.genders : []\r\n        request.includeFriendPools = true\r\n        request.includeFriendships = true\r\n\r\n        if (self.searchFilter.customerTypes?.length) {\r\n          request.customerTypes = bitmaskhelper.arrayToBitmask(self.searchFilter.customerTypes) as CustomerTypes | NetCustomerTypes\r\n        }\r\n\r\n        if (self.searchFilter.customerStates?.length) {\r\n          request.customerStates = self.searchFilter.customerStates as Array<CustomerState>\r\n        }\r\n\r\n        if (self.searchFilter.friendshipTypes?.length) {\r\n          request.friendshipTypes = bitmaskhelper.arrayToBitmask(self.searchFilter.friendshipTypes)\r\n        }\r\n\r\n        if (self.searchFilter.searchType === 'CUSTOMER') {\r\n          request.searchString = self.searchFilter.searchText.customer\r\n          url = this.isNetFmg\r\n            ? this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customersearchnet[0]\r\n            : this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customersearchstandard[0]\r\n        } else {\r\n          url = this.isNetFmg\r\n            ? this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteersearchnet[0]\r\n            : this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteersearchstandard[0]\r\n          request.searchString = self.searchFilter.searchText.volunteer\r\n        }\r\n\r\n        self.customerList = []\r\n        self.volunteerList = []\r\n\r\n        this.$http.post(url, request).then(response => {\r\n          self.hasSearched = true\r\n          if (response.ok) {\r\n            var result: FindFriendManagementGroupCustomersResult | FindFriendManagementGroupVolunteersResult\r\n            if (self.searchFilter.searchType === 'CUSTOMER') {\r\n              result = response.data as FindFriendManagementGroupCustomersResult\r\n              self.customerList = result.items\r\n            } else {\r\n              result = response.data as FindFriendManagementGroupVolunteersResult\r\n              self.volunteerList = result.items\r\n            }\r\n            self.total = response.data.total\r\n            self.isLoading = false\r\n          }\r\n        }, () => {\r\n          self.hasSearched = true\r\n          console.log('Error loading search results')\r\n          self.isLoading = false\r\n        })\r\n      },\r\n      getManyToManyValues (list): string {\r\n        var url = ''\r\n        for (var i = 0; i < list.length; i++) {\r\n          url += `${list[i]},`\r\n        }\r\n        url = url.substring(0, url.length - 1)\r\n\r\n        return url\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n// filepath: /c:/Work/SPR/SPR.Web/src/components/friends/CustomerSearch.vue\r\n@import \"../../assets/scss/_variables.scss\";\r\n\r\n.customersearch {\r\n  .loading {\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    bottom: 0;\r\n    right: 0;\r\n    height: 100%;\r\n    width: 100%;\r\n    .spinner {\r\n      margin: 200px;\r\n      color: $brand-red;\r\n    }\r\n  }\r\n\r\n  .search-filter {\r\n    background-color: $brand-white;\r\n    padding-top: 20px;\r\n\r\n    &.disabled {\r\n      pointer-events: none;\r\n      /* for \"disabled\" effect */\r\n      opacity: 0.5;\r\n      background: #CCC;\r\n      .customerfilter {\r\n        background: #CCC;\r\n      }\r\n    }\r\n\r\n    @media screen and (max-width: $media-sm-max) {\r\n      &.disabled {\r\n        display: none;\r\n      }\r\n    }\r\n  }\r\n\r\n  .infocontainer {\r\n    height: 200px;\r\n    width: 100%;\r\n    background-color: $brand-white;\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n    align-content: center;\r\n    padding: 50px;\r\n    .info {\r\n      margin: auto;\r\n      svg {\r\n        margin-right: 5px;\r\n        color: $brand-red;\r\n        &.warning {\r\n          color: $brand-warning;\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerSearch.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerSearch.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerSearch.vue?vue&type=template&id=45f23cfe\"\nimport script from \"./CustomerSearch.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerSearch.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerSearch.vue?vue&type=style&index=0&id=45f23cfe&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container customerpreview\"},[_c('div',{staticClass:\"row header\"},[_c('div',{staticClass:\"col\"},[(_vm.group)?_c('HomeButton',{attrs:{\"group-id\":_vm.group.id}}):_vm._e(),_c('BackButton',{attrs:{\"back-url\":_vm.backUrlString}})],1)]),(_vm.showModal)?_c('div',{staticClass:\"modal\"},[_c('div',{staticClass:\"modal-content\"},[_c('CustomerMoveForm',{attrs:{\"target-id\":_vm.id,\"current-group\":_vm.currentGroup,\"friend-management-groups\":_vm.friendManagementGroups},on:{\"save\":_vm.moveCustomerToFmg,\"cancel\":_vm.cancelMove}})],1)]):_vm._e(),(_vm.loaded && _vm.group)?_c('div',{staticClass:\"row content\"},[(!_vm.group.netFriendship)?_c('div',{staticClass:\"col-lg-4 mb-3 mb-lg-0 customer-area\"},[(_vm.customer && _vm.group)?_c('CustomerCardStandard',{attrs:{\"group\":_vm.group},on:{\"refresh\":_vm.refresh,\"moveCustomer\":_vm.moveCustomer},model:{value:(_vm.customer),callback:function ($$v) {_vm.customer=$$v},expression:\"customer\"}}):_vm._e()],1):_vm._e(),(_vm.group.netFriendship)?_c('div',{staticClass:\"col-lg-4 mb-3 mb-lg-0 customer-area\"},[(_vm.customer && _vm.group)?_c('CustomerCardNet',{attrs:{\"group\":_vm.group},on:{\"refresh\":_vm.refresh},model:{value:(_vm.customer),callback:function ($$v) {_vm.customer=$$v},expression:\"customer\"}}):_vm._e()],1):_vm._e(),_c('div',{staticClass:\"col-lg-8 volunteer-area\"},[(_vm.inactiveText)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"inactive text-center\"},[_c('div',[_vm._v(_vm._s(_vm.inactiveText))])])])]):_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.friendshipsTitle'))+\" \")])])]),_c('div',{staticClass:\"customeractions\"},[_c('customermatchstatus',{attrs:{\"customer\":_vm.customer,\"group\":_vm.group,\"highlightedvolunteerid\":_vm.volunteerid},on:{\"addNewMatch\":_vm.onAddNewMatch,\"volunteerMatchSelected\":_vm.onVolunteerMatchSelected}})],1),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.poolsTitle'))+\" \")])])]),(_vm.loaded)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[(_vm.group.netFriendship)?_c('CustomerPoolsNet',{attrs:{\"customer\":_vm.customer,\"group\":_vm.group,\"is-active\":_vm.isActive},on:{\"poolsupdated\":_vm.onPoolsUpdated}}):_c('CustomerPoolsStandard',{attrs:{\"customer\":_vm.customer,\"group\":_vm.group,\"is-active\":_vm.isActive},on:{\"poolsupdated\":_vm.onPoolsUpdated}})],1)]):_vm._e()])])]):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loaded),expression:\"!loaded\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"backbutton\"},[_c('SprButton',{staticClass:\"back\",attrs:{\"size\":4,\"title\":_vm.$t('customerForm.previousButton'),\"preicon\":\"chevron-left\",\"click-event\":\"back\"},on:{\"back\":_vm.onBackClicked}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"backbutton\">\r\n    <SprButton\r\n      :size=\"4\"\r\n      :title=\"$t('customerForm.previousButton')\"\r\n      preicon=\"chevron-left\"\r\n      click-event=\"back\"\r\n      class=\"back\"\r\n      @back=\"onBackClicked\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import SprButton from './SPRButton.vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'BackButton',\r\n    components: { SprButton },\r\n    props: {\r\n      // If this is supplied, it will go there. Otherwise browser back.\r\n      backUrl: {\r\n        type: String,\r\n        required: false,\r\n        default: ''\r\n      }\r\n    },\r\n    methods: {\r\n      onBackClicked (): void {\r\n        var useBackUrl = this.backUrl\r\n        if (useBackUrl) {\r\n          this.$router.push(this.backUrl)\r\n        } else {\r\n          this.$router.back()\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n  .backbutton {\r\n    display: inline-block;\r\n    .back {\r\n      padding: 3px 6px;\r\n      font-size: 13px;\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BackButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BackButton.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./BackButton.vue?vue&type=template&id=3784e5c0\"\nimport script from \"./BackButton.vue?vue&type=script&lang=ts\"\nexport * from \"./BackButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./BackButton.vue?vue&type=style&index=0&id=3784e5c0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"homebutton\"},[_c('SprButton',{staticClass:\"home\",attrs:{\"size\":4,\"primary\":true,\"title\":_vm.$t('customerForm.homeButton'),\"preicon\":\"home\",\"click-event\":\"home\"},on:{\"home\":_vm.onHomeClicked}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"homebutton\">\r\n    <SprButton\r\n      :size=\"4\"\r\n      :primary=\"true\"\r\n      :title=\"$t('customerForm.homeButton')\"\r\n      preicon=\"home\"\r\n      click-event=\"home\"\r\n      class=\"home\"\r\n      @home=\"onHomeClicked\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import SprButton from './SPRButton.vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'HomeButton',\r\n    components: { SprButton },\r\n    props: {\r\n      // If this is supplied, it will go there. Otherwise browser back.\r\n      homeUrl: {\r\n        type: String,\r\n        required: false,\r\n        default: ''\r\n      },\r\n      groupId: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    methods: {\r\n      onHomeClicked (): void {\r\n        if (this.homeUrl) {\r\n          this.$router.push(this.homeUrl)\r\n        } else {\r\n          this.$router.push(`/friend/search/${this.groupId}/customer`)\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n  .homebutton {\r\n    display: inline-block;\r\n    .home {\r\n      padding: 3px 6px;\r\n      font-size: 13px;\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HomeButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HomeButton.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./HomeButton.vue?vue&type=template&id=0882a520\"\nimport script from \"./HomeButton.vue?vue&type=script&lang=ts\"\nexport * from \"./HomeButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./HomeButton.vue?vue&type=style&index=0&id=0882a520&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"customercardstandard\"},[_c('div',{staticClass:\"topsection\"},[_c('div',{staticClass:\"circle\"},[(_vm.friendshipStateOverride)?_c('friendshipicon',{attrs:{\"friendname\":_vm.customer.firstName,\"state\":_vm.friendshipStateOverride}}):_c('friendicon',{attrs:{\"friendname\":_vm.customer.firstName,\"state\":_vm.customer.state,\"multiple-friendships\":_vm.customer.multipleVolunteers}})],1),_c('div',{staticClass:\"details\"},[_c('div',{staticClass:\"name\"},[_c('span',[_vm._v(_vm._s(_vm.customer.firstName)+\" \"+_vm._s(_vm.customer.lastName))]),_c('div',{staticClass:\"usericons\"},[(_vm.hasMultipleCustomers)?_c('font-awesome-icon',{attrs:{\"icon\":\"users\",\"title\":_vm.$t('customerSearch.multipleCustomers')}}):_vm._e()],1)]),_c('div',{staticClass:\"personal\"},[_c('div',[_vm._v(_vm._s(_vm.genderAgeText))]),_c('div',[_vm._v(_vm._s(_vm.customerType))]),_c('div',[_vm._v(_vm._s(_vm.customer.customerTypeOtherInfo))]),(_vm.customer.shortDescription)?_c('div',{staticClass:\"short-description\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"quote-left\",\"aria-hidden\":\"true\"}}),_c('span',[_vm._v(_vm._s(_vm.customer.shortDescription))]),_c('font-awesome-icon',{attrs:{\"icon\":\"quote-right\",\"aria-hidden\":\"true\"}})],1):_vm._e()])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.customer.lastContacted),expression:\"customer.lastContacted\"}],staticClass:\"contacted\"},[_vm._v(\" \"+_vm._s(_vm.lastContacted(_vm.customer.lastContacted))+\" \")]),_c('div',{staticClass:\"nofriend\"},[_vm._v(\" \"+_vm._s(_vm.daysWithoutFriend(_vm.customer.lastFriendshipEndDate))+\" \")])]),_c('div',{staticClass:\"properties\"},[_c('div',{staticClass:\"row property location\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"map-marker-alt\"}})],1),_c('div',{staticClass:\"content\"},[_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.address'))+\": \"+_vm._s(_vm.address || '–'))]),(_vm.showMatches)?_c('div',[_vm._v(\" \"+_vm._s(_vm.matches.travelData.travelDistanceTime)+\" \")]):_vm._e()]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[(_vm.showDistanceWarning)?_c('div',[_c('tickcrosswarning',{model:{value:(_vm.showDistanceWarningValue),callback:function ($$v) {_vm.showDistanceWarningValue=$$v},expression:\"showDistanceWarningValue\"}})],1):_c('div',[_c('tickcross',{model:{value:(_vm.matches.travelData.isMatch),callback:function ($$v) {_vm.$set(_vm.matches.travelData, \"isMatch\", $$v)},expression:\"matches.travelData.isMatch\"}})],1)]):_vm._e()]),_c('div',{staticClass:\"row property availabilitytimes\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'clock']}})],1),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.myTimes'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.availabilityText || '–'))])]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[_c('tickcross',{model:{value:(_vm.matches.availabilityTimesMatch),callback:function ($$v) {_vm.$set(_vm.matches, \"availabilityTimesMatch\", $$v)},expression:\"matches.availabilityTimesMatch\"}})],1):_vm._e()]),_c('div',{staticClass:\"row property availabilitytimes\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'clock']}})],1),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.myFrequency'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.availabilityFrequency || '–'))])]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[_c('tickcross',{model:{value:(_vm.matches.availabilityFrequencyMatch),callback:function ($$v) {_vm.$set(_vm.matches, \"availabilityFrequencyMatch\", $$v)},expression:\"matches.availabilityFrequencyMatch\"}})],1):_vm._e()]),_c('div',{staticClass:\"row property genders\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"venus-mars\"}})],1),_c('div',{staticClass:\"content\"},[_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.am'))+\" \"),_c('strong',[_vm._v(_vm._s(_vm.gender.toLowerCase() || '...?'))])]),_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.forFriend'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.genderPreferences || '–'))])])]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[_c('tickcrosswarning',{model:{value:(_vm.matches.genderMatch),callback:function ($$v) {_vm.$set(_vm.matches, \"genderMatch\", $$v)},expression:\"matches.genderMatch\"}})],1):_vm._e()]),_c('div',{staticClass:\"row property age\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"id-badge\"}})],1),_c('div',{staticClass:\"content\"},[_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.am'))+\" \"),_c('strong',[_vm._v(_vm._s(_vm.age || '?')+\" \"+_vm._s(_vm.$t('customerSearch.years')))])]),_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.forFriend'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.agePreferences || '–'))])])]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[_c('tickcross',{model:{value:(_vm.matches.ageMatch),callback:function ($$v) {_vm.$set(_vm.matches, \"ageMatch\", $$v)},expression:\"matches.ageMatch\"}})],1):_vm._e()]),_c('div',{staticClass:\"row property language\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'comment']}})],1),_c('div',{staticClass:\"content\"},[_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.speak'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.normalizeTranslation(_vm.customer.nativeLanguage))+\" (\"+_vm._s(_vm.$t('customerSearch.nativeLanguage'))+\")\")])]),(_vm.spokenLanguages)?_c('div',[_c('strong',[_vm._v(_vm._s(_vm.spokenLanguages))])]):_vm._e()]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[_c('tickcross',{model:{value:(_vm.matches.languageMatch),callback:function ($$v) {_vm.$set(_vm.matches, \"languageMatch\", $$v)},expression:\"matches.languageMatch\"}})],1):_vm._e()]),_c('div',{staticClass:\"row property interest\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"puzzle-piece\"}})],1),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.interestedIn'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.interests || '–'))])])])]),_c('div',{staticClass:\"moreinfo\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col description\"},[_c('sprcollapsible',{attrs:{\"heading\":_vm.$t('profile.notes')}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('sprprivatenotes',{attrs:{\"endpoint\":\"customerupdateprivatenotesstandard\",\"friend-management-group-id\":_vm.group.id,\"target-id\":_vm.targetId,\"is-customer\":\"\"},model:{value:(_vm.customer),callback:function ($$v) {_vm.customer=$$v},expression:\"customer\"}})],1)])],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col contact\"},[_c('sprcollapsible',{attrs:{\"heading\":_vm.$t('customerSearch.contactTitle')}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('p',{staticClass:\"smalltext\"},[_vm._v(\" \"+_vm._s(_vm.contactDetails)+\" \")])])])],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col other\"},[_c('sprcollapsible',{attrs:{\"heading\":_vm.$t('customerSearch.otherInfoTitle')}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[(_vm.customer.customerApproval)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.customerApproval'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.customerApprovedBy)+\" \")])]):_vm._e(),(_vm.customer.customerInterviewed)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.customerInterviewed'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.customerInterviewedBy)+\" \")])]):_vm._e(),(_vm.customer.customerNotForSpr)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.customerNotForSPR'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.customerNotForSprBy)+\" \")])]):_vm._e(),(_vm.customer.customerNotForPrivateRelations)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.customerNotForPrivateRelations'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.customerNotForPrivateRelationsBy)+\" \")])]):_vm._e(),(_vm.contactPerson)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.customerContactPerson'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.contactPerson)+\" \")])]):_vm._e(),(_vm.customer.otherContact)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.customerContactOther'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.otherContact)+\" \")])]):_vm._e()])])],1)]),(_vm.isOnHold)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col onhold\"},[_c('sprcollapsible',{attrs:{\"heading\":_vm.$t('customerSearch.onHoldTitle')}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.onHoldUntilDate'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.formattedOnHoldUntilDate)+\" \")])]),_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.onHoldComment'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.onHoldComment)+\" \")])])])])],1)]):_vm._e()]),(_vm.showActions || _vm.showEditButton)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col buttons\"},[_c('customerActions',{attrs:{\"group\":_vm.group,\"loaded\":_vm.loaded,\"show-edit-button\":_vm.showEditButton,\"show-all-buttons\":_vm.showActions},on:{\"saveCustomer\":_vm.saveCustomer,\"toggleActivity\":_vm.toggleActivity,\"moveCustomer\":_vm.moveCustomer},model:{value:(_vm.customer),callback:function ($$v) {_vm.customer=$$v},expression:\"customer\"}})],1)]):_vm._e(),(_vm.isSending)?_c('div',{staticClass:\"text-center\"},[_c('Loading')],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"tickcross\"},[(_vm.value)?_c('font-awesome-icon',{staticClass:\"tick\",attrs:{\"icon\":['far', 'check-circle']}}):_vm._e(),(!_vm.value)?_c('font-awesome-icon',{staticClass:\"cross\",attrs:{\"icon\":['far', 'times-circle']}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .tickcross {\r\n    display:inline-block;\r\n\r\n    svg {\r\n      &.tick {\r\n        color:$brand-success;\r\n      }\r\n      &.cross {\r\n        color:$brand-danger;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n\r\n<template>\r\n  <div class=\"tickcross\">\r\n    <font-awesome-icon v-if=\"value\" :icon=\"['far', 'check-circle']\" class=\"tick\" />\r\n    <font-awesome-icon v-if=\"!value\" :icon=\"['far', 'times-circle']\" class=\"cross\" />\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'TickCross',\r\n    props: {\r\n      value: Boolean\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRTickCross.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRTickCross.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRTickCross.vue?vue&type=template&id=0830cc91&scoped=true\"\nimport script from \"./SPRTickCross.vue?vue&type=script&lang=js\"\nexport * from \"./SPRTickCross.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRTickCross.vue?vue&type=style&index=0&id=0830cc91&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"0830cc91\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"spr-private-notes pb-2\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.privateNotes),expression:\"privateNotes\"}],staticClass:\"smalltext form-control\",attrs:{\"id\":_vm._uid,\"disabled\":_vm.isSending},domProps:{\"value\":(_vm.privateNotes)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.privateNotes=$event.target.value},_vm.handleInput]}}),_vm._v(\" \"),_c('div',{staticClass:\"pn-buttons\"},[_c('button',{staticClass:\"smalltext\",attrs:{\"disabled\":_vm.isNotChanged || _vm.isSending},on:{\"click\":_vm.saveChanges}},[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'save'],\"aria-hidden\":\"true\"}}),_vm._v(\" \"+_vm._s(_vm.$t('profile.save'))+\" \")],1),_c('button',{staticClass:\"smalltext\",attrs:{\"disabled\":_vm.isNotChanged || _vm.isSending},on:{\"click\":_vm.revertChanges}},[_c('font-awesome-icon',{attrs:{\"icon\":\"times\",\"aria-hidden\":\"true\"}}),_vm._v(\" \"+_vm._s(_vm.$t('profile.cancel'))+\" \")],1)]),(_vm.isPostError)?_c('div',{staticClass:\"posterror\"},[_vm._v(\" \"+_vm._s(_vm.$t('profile.saveFailed'))+\" \")]):_vm._e(),(_vm.isSending)?_c('div',{staticClass:\"loading\"},[_c('loading',{staticClass:\"spinner\"})],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"spr-private-notes pb-2\">\r\n    <!--<label v-if=\"title\" :for=\"_uid\" class=\"cap-label\">{{ title }}</label>-->\r\n    <textarea :id=\"_uid\" v-model=\"privateNotes\" class=\"smalltext form-control\" :disabled=\"isSending\" @input=\"handleInput\" />\r\n    <div class=\"pn-buttons\">\r\n      <button class=\"smalltext\" :disabled=\"isNotChanged || isSending\" @click=\"saveChanges\">\r\n        <font-awesome-icon :icon=\"['far', 'save']\" aria-hidden=\"true\" />\r\n        {{ $t('profile.save') }}\r\n      </button>\r\n      <button class=\"smalltext\" :disabled=\"isNotChanged || isSending\" @click=\"revertChanges\">\r\n        <font-awesome-icon icon=\"times\" aria-hidden=\"true\" />\r\n        {{ $t('profile.cancel') }}\r\n      </button>\r\n    </div>\r\n    <div v-if=\"isPostError\" class=\"posterror\">\r\n      {{ $t('profile.saveFailed') }}\r\n    </div>\r\n    <div v-if=\"isSending\" class=\"loading\">\r\n      <loading class=\"spinner\" />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import loading from './SPRLoading.vue'\r\n  export default {\r\n    name: 'SprPrivateNotes',\r\n    components: { loading },\r\n    props: {\r\n      isCustomer: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      // title: String,\r\n      value: {\r\n        type: Object,\r\n        required: true\r\n      },\r\n      endpoint: {\r\n        type: String,\r\n        required: true\r\n      },\r\n      isNet: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      friendManagementGroupId: {\r\n        type: Number,\r\n        default: -1\r\n      },\r\n      targetId: {\r\n        type: Number,\r\n        default: -1\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        privateNotes0: '',\r\n        privateNotes: '',\r\n        isSending: false,\r\n        isPostError: false\r\n      }\r\n    },\r\n    computed: {\r\n      isNotChanged: function () {\r\n        return this.privateNotes === this.privateNotes0\r\n      },\r\n      addNoteCommand: function () {\r\n        return { groupId: this.friendManagementGroupId, targetId: this.targetId, note: this.privateNotes }\r\n      }\r\n    },\r\n    watch: {\r\n      value: {\r\n        immediate: true,\r\n        handler: function () {\r\n          if (this.isCustomer) {\r\n            this.privateNotes0 = this.value.privateNotes ? '\\n-------------------------------------\\n' + this.value.privateNotes : ''\r\n          } else {\r\n            if (this.isNet && this.value.netProfile) {\r\n              this.privateNotes0 = this.value.netProfile.privateNotes ? '\\n-------------------------------------\\n' + this.value.netProfile.privateNotes : ''\r\n            } else if (!this.isNet && this.value.standardProfile) {\r\n              this.privateNotes0 = this.value.standardProfile.privateNotes ? '\\n-------------------------------------\\n' + this.value.standardProfile.privateNotes : ''\r\n            }\r\n          }\r\n          this.revertChanges()\r\n        }\r\n      }\r\n    },\r\n    methods: {\r\n      handleInput () {\r\n        var txtArea = this.$el.querySelector('textarea')\r\n        txtArea.style.height = 'auto'\r\n        txtArea.style.height = txtArea.scrollHeight + 'px'\r\n      },\r\n      saveChanges () {\r\n        this.isPostError = false\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            this.isSending = true\r\n            var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints[this.endpoint][0]\r\n            this.value.privateNotes = String(this.privateNotes)\r\n            this.$http.put(url, this.addNoteCommand).then(response => {\r\n              this.isSending = false\r\n              if (response.ok && !isNaN(response.body) && Number(response.body) !== -1) {\r\n                this.privateNotes0 = String(this.privateNotes)\r\n              } else {\r\n                this.isSending = false\r\n                this.isPostError = true\r\n                console.log('Error saving')\r\n              }\r\n            }, response => {\r\n              this.isSending = false\r\n              this.isPostError = true\r\n              console.log('Error saving')\r\n            })\r\n          } else {\r\n            this.isSending = false\r\n            this.firstError()\r\n          }\r\n        })\r\n      },\r\n      revertChanges () {\r\n        this.privateNotes = String(this.privateNotes0)\r\n        var vm = this\r\n        setTimeout(function () {\r\n          var txtArea = vm.$el.querySelector('textarea')\r\n          txtArea.focus()\r\n          txtArea.selectionEnd = txtArea.selectionStart = 0\r\n          vm.handleInput()\r\n        }, 0)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .spr-private-notes {\r\n    margin-top: 8px;\r\n    border-radius: 20px;\r\n    border:solid 2px $brand-red;\r\n    label {\r\n      color:$brand-red;\r\n      padding: 0 20px 10px;\r\n    }\r\n    textarea {\r\n      border:none;\r\n      box-shadow: none;\r\n      background: transparent;\r\n      overflow-y: hidden;\r\n    }\r\n    .pn-buttons {\r\n      margin-top: 8px;\r\n      border-top: 1px solid $brand-grey3;\r\n      padding: 9px 10px 0;\r\n      text-align: right;\r\n\r\n      button {\r\n        border: none;\r\n        background: none;\r\n        color: $brand-red;\r\n        cursor: pointer;\r\n        &:disabled {\r\n          color: $brand-grey4 !important;\r\n          cursor:not-allowed;\r\n        }\r\n      }\r\n    }\r\n\r\n    .posterror {\r\n      text-align: center;\r\n      color: $brand-red;\r\n      font-size: 13px;\r\n    }\r\n\r\n    .loading {\r\n      position: absolute;\r\n      display: flex;\r\n      top: 0;\r\n      left: 0;\r\n      height: 100%;\r\n      width: 100%;\r\n      background-color:rgba(255, 255, 255, 0.8);\r\n\r\n      .spinner {\r\n        padding-top: 26px;\r\n        margin: auto;\r\n        color:$brand-red;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPrivateNotes.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPrivateNotes.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRPrivateNotes.vue?vue&type=template&id=a6b660e8&scoped=true\"\nimport script from \"./SPRPrivateNotes.vue?vue&type=script&lang=js\"\nexport * from \"./SPRPrivateNotes.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRPrivateNotes.vue?vue&type=style&index=0&id=a6b660e8&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"a6b660e8\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"customer-actions row button-row\"},[_c('div',{staticClass:\"col buttons\"},[(_vm.showEditButton || _vm.showAllButtons)?_c('div',{staticClass:\"edit-customer\"},[_c('sprbutton',{staticClass:\"edit-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.editCustomerButton'),\"click-event\":\"edit\"},on:{\"edit\":_vm.editCustomer}})],1):_vm._e(),(_vm.showAllButtons)?_c('div',[_c('div',{staticClass:\"disable-customer\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.activityText,\"click-event\":\"delete-customer\",\"disabled\":_vm.inFriendship,\"tooltip\":_vm.inFriendship ? _vm.$t('customerSearch.inFriendshipNoDelete'): ''},on:{\"delete-customer\":_vm.toggleActivity}})],1),(!_vm.inFriendship)?_c('div',{staticClass:\"customer-onhold\"},[_c('onhold',{attrs:{\"on-hold\":_vm.onHoldValue},on:{\"update\":_vm.onHoldUpdate}})],1):_c('div',{staticClass:\"disable-customer\"},[_c('sprbutton',{staticClass:\"disable-button button-disabled\",attrs:{\"title\":_vm.$t('customerSearch.showHoldCustomerButton'),\"size\":4,\"tooltip\":_vm.inFriendship ? _vm.$t('moveFMGForm.disabledHasFriendship') : '',\"disabled\":\"\"}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isMoveAdmin && !_vm.group.netFriendship),expression:\"isMoveAdmin && !group.netFriendship\"}],staticClass:\"edit-customer\"},[_c('sprbutton',{staticClass:\"edit-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.moveCustomerButton'),\"tooltip\":_vm.inFriendship || _vm.inFriendshipPool ? _vm.$t('moveFMGForm.disabledHasFriendship') : '',\"click-event\":\"move\",\"disabled\":!!_vm.inFriendship || !!_vm.inFriendshipPool},on:{\"move\":_vm.moveCustomer}})],1)]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"onhold\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.onHold.onHold),expression:\"!onHold.onHold\"}],staticClass:\"onhold-customer\"},[_c('sprbutton',{staticClass:\"showhold-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.showHoldCustomerButton'),\"click-event\":\"showHold\"},on:{\"showHold\":_vm.showHold}})],1),(_vm.showOnHoldInfo)?_c('div',{staticClass:\"onholdinfo\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 holddate\"},[_c('sprdatepicker',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.onHoldDeadlineRules),expression:\"onHoldDeadlineRules\"}],key:_vm.componentKey,attrs:{\"title\":_vm.$t('customerSearch.onHoldUntilDate'),\"placeholder\":_vm.$t('customerSearch.chooseHoldDate'),\"initial\":_vm.currentDate,\"name\":\"customerSearch.onHoldUntilDate\",\"has-error\":_vm.errors.has('customerSearch.onHoldUntilDate'),\"options\":_vm.datepickerOptions},model:{value:(_vm.resultHoldDate),callback:function ($$v) {_vm.resultHoldDate=$$v},expression:\"resultHoldDate\"}})],1),_c('div',{staticClass:\"col-12 holdcomment\"},[_c('sprinput',{attrs:{\"hint\":_vm.$t('customerSearch.onHoldComment'),\"is-valid\":true},model:{value:(_vm.onHold.onHoldDetails),callback:function ($$v) {_vm.$set(_vm.onHold, \"onHoldDetails\", $$v)},expression:\"onHold.onHoldDetails\"}})],1),_c('div',{staticClass:\"col-6\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.cancelHold}},[_vm._v(_vm._s(_vm.$t('customerSearch.cancelHold')))])]),_c('div',{staticClass:\"col-6\"},[_c('sprbutton',{staticClass:\"hold-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.holdCustomerButton'),\"click-event\":\"hold\"},on:{\"hold\":_vm.onHoldCommit}})],1)])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"spr-datepicker\"},[(_vm.title)?_c('label',{staticClass:\"cap-label\",attrs:{\"for\":_vm._uid}},[_vm._v(_vm._s(_vm.title))]):_vm._e(),(_vm.initialDate)?_c('date-picker',{attrs:{\"id\":_vm._uid,\"title\":_vm.title,\"is-valid\":true,\"date\":_vm.initialDate,\"option\":_vm.defaultOptions,\"limit\":_vm.limit},on:{\"change\":_vm.updateValue}}):_c('date-picker',{attrs:{\"id\":_vm._uid,\"title\":_vm.title,\"is-valid\":true,\"option\":_vm.defaultOptions,\"limit\":_vm.limit},on:{\"change\":_vm.updateValue}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"cov-vue-date\"},[_c('div',{staticClass:\"datepickbox\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.date.time),expression:\"date.time\"}],class:{ 'spr-danger': !_vm.isValid, 'spr-roundbox-1 friend-form-input spr-datepicker-input': true },style:(_vm.option && _vm.option.inputStyle ? _vm.option.inputStyle : {}),attrs:{\"readonly\":\"\",\"type\":\"text\",\"title\":\"\",\"placeholder\":_vm.option.placeholder,\"required\":_vm.required},domProps:{\"value\":(_vm.date.time)},on:{\"click\":_vm.showCheck,\"focus\":_vm.showCheck,\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.date, \"time\", $event.target.value)}}}),_c('font-awesome-icon',{staticClass:\"calendar-icon\",attrs:{\"icon\":\"calendar\"},on:{\"click\":_vm.showCheck,\"focus\":_vm.showCheck}})],1),(_vm.showInfo.check)?_c('div',{staticClass:\"datepicker-overlay\",style:({'background' : _vm.option.overlayOpacity? 'rgba(0,0,0,'+_vm.option.overlayOpacity+')' : 'rgba(0,0,0,0.5)'}),on:{\"click\":function($event){return _vm.dismiss($event)}}},[_c('div',{staticClass:\"cov-date-body\",style:({'background-color': _vm.option.color ? _vm.option.color.header : '#3f51b5'})},[_c('div',{staticClass:\"cov-date-monthly\"},[_c('div',{staticClass:\"cov-date-previous\",on:{\"click\":function($event){return _vm.nextMonth('pre')}}},[_vm._v(\" « \")]),_c('div',{staticClass:\"cov-date-caption\",style:({'color': _vm.option.color ? _vm.option.color.headerText : '#fff'})},[_c('span',{on:{\"click\":_vm.showYear}},[_c('small',[_vm._v(_vm._s(_vm.checked.year))])]),_c('br'),_c('span',{on:{\"click\":_vm.showMonth}},[_vm._v(_vm._s(_vm.displayInfo.month))])]),_c('div',{staticClass:\"cov-date-next\",on:{\"click\":function($event){return _vm.nextMonth('next')}}},[_vm._v(\" » \")])]),(_vm.showInfo.day)?_c('div',{staticClass:\"cov-date-box\"},[_c('div',{staticClass:\"cov-picker-box\"},[_c('div',{staticClass:\"week\"},[_c('ul',_vm._l((_vm.library.week),function(weekie){return _c('li',{key:weekie},[_vm._v(\" \"+_vm._s(weekie)+\" \")])}),0)]),_vm._l((_vm.dayList),function(day,index){return _c('div',{key:index,staticClass:\"day\",class:{'checked':day.checked,'unavailable':day.unavailable,'passive-day': !(day.inMonth)},style:(day.checked ? (_vm.option.color && _vm.option.color.checkedDay ? { background: _vm.option.color.checkedDay } : { background: '#F50057' }) : {}),on:{\"click\":function($event){return _vm.checkDay(day)}}},[_vm._v(\" \"+_vm._s(day.value)+\" \")])})],2)]):_vm._e(),(_vm.showInfo.year)?_c('div',{staticClass:\"cov-date-box list-box\"},[_c('div',{staticClass:\"cov-picker-box date-list\",attrs:{\"id\":\"yearList\"}},_vm._l((_vm.library.year),function(yearItem,index){return _c('div',{key:index,staticClass:\"date-item\",on:{\"click\":function($event){return _vm.setYear(yearItem)}}},[_vm._v(\" \"+_vm._s(yearItem)+\" \")])}),0)]):_vm._e(),(_vm.showInfo.month)?_c('div',{staticClass:\"cov-date-box list-box\"},[_c('div',{staticClass:\"cov-picker-box date-list\"},_vm._l((_vm.library.month),function(monthItem,index){return _c('div',{key:index,staticClass:\"date-item\",on:{\"click\":function($event){return _vm.setMonth(monthItem)}}},[_vm._v(\" \"+_vm._s(monthItem)+\" \")])}),0)]):_vm._e(),(_vm.showInfo.hour)?_c('div',{staticClass:\"cov-date-box list-box\"},[_c('div',{staticClass:\"cov-picker-box date-list\"},[_c('div',{staticClass:\"watch-box\"},[_c('div',{staticClass:\"hour-box\"},[_c('div',{staticClass:\"mui-pciker-rule mui-pciker-rule-ft\"}),_c('ul',_vm._l((_vm.hours),function(hitem,index){return _c('li',{key:index,staticClass:\"hour-item\",class:{'active':hitem.checked},on:{\"click\":function($event){return _vm.setTime('hour', hitem, _vm.hours)}}},[_vm._v(\" \"+_vm._s(hitem.value)+\" \")])}),0)]),_c('div',{staticClass:\"min-box\"},[_c('div',{staticClass:\"mui-pciker-rule mui-pciker-rule-ft\"}),_vm._l((_vm.mins),function(mitem,index){return _c('div',{key:index,staticClass:\"min-item\",class:{'active':mitem.checked},on:{\"click\":function($event){return _vm.setTime('min',mitem, _vm.mins)}}},[_vm._v(\" \"+_vm._s(mitem.value)+\" \")])})],2)])])]):_vm._e(),_c('div',{staticClass:\"button-box\"},[(_vm.option.buttons.clear)?_c('span',{staticClass:\"left\",on:{\"click\":_vm.clear}},[_vm._v(_vm._s(_vm.option.buttons? _vm.option.buttons.clear : 'Clear'))]):_vm._e(),_c('span',{on:{\"click\":function($event){_vm.showInfo.check=false}}},[_vm._v(_vm._s(_vm.option.buttons? _vm.option.buttons.cancel : 'Cancel'))]),_c('span',{on:{\"click\":_vm.picked}},[_vm._v(_vm._s(_vm.option.buttons? _vm.option.buttons.ok : 'Ok'))])])])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cov-vue-date\">\r\n    <div class=\"datepickbox\">\r\n      <input v-model=\"date.time\"\r\n             readonly\r\n             type=\"text\"\r\n             title=\"\"\r\n             :class=\"{ 'spr-danger': !isValid, 'spr-roundbox-1 friend-form-input spr-datepicker-input': true }\"\r\n             :placeholder=\"option.placeholder\"\r\n             :required=\"required\"\r\n             :style=\"option && option.inputStyle ? option.inputStyle : {}\"\r\n             @click=\"showCheck\"\r\n             @focus=\"showCheck\"\r\n      >\r\n      <font-awesome-icon class=\"calendar-icon\" icon=\"calendar\" @click=\"showCheck\"\r\n                         @focus=\"showCheck\"\r\n      />\r\n      <!-- <input type=\"text\" title=\"input date\" class=\"cov-datepicker\" readonly=\"readonly\" :placeholder=\"option.placeholder\" v-model=\"date.time\" :required=\"required\" @click=\"showCheck\" @foucus=\"showCheck\" :style=\"option.inputStyle ? option.inputStyle : {}\" /> -->\r\n    </div>\r\n    <div v-if=\"showInfo.check\" class=\"datepicker-overlay\" :style=\"{'background' : option.overlayOpacity? 'rgba(0,0,0,'+option.overlayOpacity+')' : 'rgba(0,0,0,0.5)'}\" @click=\"dismiss($event)\">\r\n      <div class=\"cov-date-body\" :style=\"{'background-color': option.color ? option.color.header : '#3f51b5'}\">\r\n        <div class=\"cov-date-monthly\">\r\n          <div class=\"cov-date-previous\" @click=\"nextMonth('pre')\">\r\n            «\r\n          </div>\r\n          <div class=\"cov-date-caption\" :style=\"{'color': option.color ? option.color.headerText : '#fff'}\">\r\n            <span @click=\"showYear\"><small>{{ checked.year }}</small></span>\r\n            <br>\r\n            <span @click=\"showMonth\">{{ displayInfo.month }}</span>\r\n          </div>\r\n          <div class=\"cov-date-next\" @click=\"nextMonth('next')\">\r\n            »\r\n          </div>\r\n        </div>\r\n        <div v-if=\"showInfo.day\" class=\"cov-date-box\">\r\n          <div class=\"cov-picker-box\">\r\n            <div class=\"week\">\r\n              <ul>\r\n                <li v-for=\"weekie in library.week\" :key=\"weekie\">\r\n                  {{ weekie }}\r\n                </li>\r\n              </ul>\r\n            </div>\r\n            <div v-for=\"(day, index) in dayList\" :key=\"index\" class=\"day\" :class=\"{'checked':day.checked,'unavailable':day.unavailable,'passive-day': !(day.inMonth)}\" :style=\"day.checked ? (option.color && option.color.checkedDay ? { background: option.color.checkedDay } : { background: '#F50057' }) : {}\" @click=\"checkDay(day)\">\r\n              {{ day.value }}\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"showInfo.year\" class=\"cov-date-box list-box\">\r\n          <div id=\"yearList\" class=\"cov-picker-box date-list\">\r\n            <div v-for=\"(yearItem, index) in library.year\" :key=\"index\" class=\"date-item\" @click=\"setYear(yearItem)\">\r\n              {{ yearItem }}\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"showInfo.month\" class=\"cov-date-box list-box\">\r\n          <div class=\"cov-picker-box date-list\">\r\n            <div v-for=\"(monthItem, index) in library.month\" :key=\"index\" class=\"date-item\" @click=\"setMonth(monthItem)\">\r\n              {{ monthItem }}\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"showInfo.hour\" class=\"cov-date-box list-box\">\r\n          <div class=\"cov-picker-box date-list\">\r\n            <div class=\"watch-box\">\r\n              <div class=\"hour-box\">\r\n                <div class=\"mui-pciker-rule mui-pciker-rule-ft\" />\r\n                <ul>\r\n                  <li v-for=\"(hitem, index) in hours\" :key=\"index\" class=\"hour-item\" :class=\"{'active':hitem.checked}\" @click=\"setTime('hour', hitem, hours)\">\r\n                    {{ hitem.value }}\r\n                  </li>\r\n                </ul>\r\n              </div>\r\n              <div class=\"min-box\">\r\n                <div class=\"mui-pciker-rule mui-pciker-rule-ft\" />\r\n                <div v-for=\"(mitem, index) in mins\" :key=\"index\" class=\"min-item\" :class=\"{'active':mitem.checked}\" @click=\"setTime('min',mitem, mins)\">\r\n                  {{ mitem.value }}\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"button-box\">\r\n          <span v-if=\"option.buttons.clear\" class=\"left\" @click=\"clear\">{{ option.buttons? option.buttons.clear : 'Clear' }}</span>\r\n          <span @click=\"showInfo.check=false\">{{ option.buttons? option.buttons.cancel : 'Cancel' }}</span>\r\n          <span @click=\"picked\">{{ option.buttons? option.buttons.ok : 'Ok' }}</span>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import moment from 'moment'\r\n\r\n  export interface TemplateComponentData {\r\n    hours: object[],\r\n    mins: object[],\r\n    showInfo: any,\r\n    displayInfo: any,\r\n    library: any,\r\n    checked: any,\r\n    dayList: object[],\r\n    selectedDays: string[]\r\n  }\r\n\r\n  export default Vue.extend({\r\n    props: {\r\n      required: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      isValid: Boolean,\r\n      date: {\r\n        type: Object,\r\n        default: Date.now()\r\n      },\r\n      option: {\r\n        type: Object,\r\n        default () {\r\n          return {\r\n            type: 'day',\r\n            SundayFirst: false,\r\n            week: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\r\n            month: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n            format: 'YYYY-MM-DD',\r\n            color: {\r\n              checked: '#F50057',\r\n              header: '#3f51b5',\r\n              headerText: '#fff'\r\n            },\r\n            inputStyle: {\r\n              display: 'inline-block',\r\n              padding: '6px',\r\n              'line-height': '22px',\r\n              'font-size': '16px',\r\n              border: '2px solid #fff',\r\n              'box-shadow': '0 1px 3px 0 rgba(0, 0, 0, 0.2)',\r\n              'border-radius': '2px',\r\n              color: '#5F5F5F'\r\n            },\r\n            placeholder: 'when?',\r\n            buttons: {\r\n              ok: 'OK',\r\n              cancel: 'Cancel'\r\n            },\r\n            overlayOpacity: 0.5,\r\n            dismissible: true\r\n          }\r\n        }\r\n      },\r\n      limit: {\r\n        type: Array,\r\n        default: () => [] as any[]\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      function hours () {\r\n        const list = [] as object[]\r\n        let hour = 24\r\n        while (hour > 0) {\r\n          hour--\r\n          list.push({\r\n            checked: false,\r\n            value: hour < 10 ? '0' + hour : hour\r\n          })\r\n        }\r\n        return list\r\n      }\r\n      function mins () {\r\n        const list = [] as object[]\r\n        let min = 60\r\n        while (min > 0) {\r\n          min--\r\n          list.push({\r\n            checked: false,\r\n            value: min < 10 ? '0' + min : min\r\n          })\r\n        }\r\n        return list\r\n      }\r\n      return {\r\n        hours: hours(),\r\n        mins: mins(),\r\n        showInfo: {\r\n          hour: false,\r\n          day: false,\r\n          month: false,\r\n          year: false,\r\n          check: false\r\n        },\r\n        displayInfo: {\r\n          month: ''\r\n        },\r\n        library: {\r\n          week: this.option.week,\r\n          month: this.option.month,\r\n          year: []\r\n        },\r\n        checked: {\r\n          oldtime: '',\r\n          currentMoment: null,\r\n          year: '',\r\n          month: '',\r\n          day: '',\r\n          hour: '00',\r\n          min: '00'\r\n        },\r\n        dayList: [] as any[],\r\n        selectedDays: [] as any[]\r\n      }\r\n    },\r\n    methods: {\r\n      pad (n) {\r\n        n = Math.floor(n)\r\n        return n < 10 ? '0' + n : n\r\n      },\r\n      nextMonth (type) {\r\n        let next = null as any\r\n        type === 'next' ? next = moment(this.checked.currentMoment).add(1, 'M') : next = moment(this.checked.currentMoment).add(-1, 'M')\r\n        this.showDay(next)\r\n      },\r\n      showDay (time) {\r\n        if (time === undefined || !moment(time, this.option.format).isValid()) {\r\n          this.checked.currentMoment = moment()\r\n        } else {\r\n          this.checked.currentMoment = moment(time, this.option.format)\r\n        }\r\n        this.showOne('day')\r\n        this.checked.year = moment(this.checked.currentMoment).format('YYYY')\r\n        this.checked.month = moment(this.checked.currentMoment).format('MM')\r\n        this.checked.day = moment(this.checked.currentMoment).format('DD')\r\n        this.displayInfo.month = this.library.month[moment(this.checked.currentMoment).month()]\r\n        let days = [] as any[]\r\n        const currentMoment = this.checked.currentMoment\r\n        let firstDay = moment(currentMoment).date(1).day()\r\n        // gettting previous and next month\r\n        // let currentMonth = moment(currentMoment)\r\n        const previousMonth = moment(currentMoment)\r\n        const nextMonth = moment(currentMoment)\r\n        nextMonth.add(1, 'months')\r\n        previousMonth.subtract(1, 'months')\r\n        const monthDays = moment(currentMoment).daysInMonth()\r\n        const oldtime = this.checked.oldtime\r\n        for (let i = 1; i <= monthDays; ++i) {\r\n          days.push({\r\n            value: i,\r\n            inMonth: true,\r\n            unavailable: false,\r\n            checked: false,\r\n            moment: moment(currentMoment).date(i)\r\n          })\r\n          const dayAsNumber = parseInt(moment(currentMoment).format('D'))\r\n\r\n          if (i === Math.ceil(dayAsNumber) && moment(oldtime, this.option.format).year() === moment(currentMoment).year() && moment(oldtime, this.option.format).month() === moment(currentMoment).month()) {\r\n            days[i - 1].checked = true\r\n          }\r\n          this.checkBySelectDays(i, days)\r\n        }\r\n        if (firstDay === 0) firstDay = 7\r\n        for (let i = 0; i < firstDay - (this.option.SundayFirst ? 0 : 1); i++) {\r\n          const passiveDay = {\r\n            value: previousMonth.daysInMonth() - (i),\r\n            inMonth: false,\r\n            action: 'previous',\r\n            unavailable: false,\r\n            checked: false,\r\n            moment: moment(currentMoment).date(1).subtract(i + 1, 'days')\r\n          }\r\n          days.unshift(passiveDay)\r\n        }\r\n        var passiveDaysAtFinal = 42 - days.length\r\n        for (let i = 1; i <= passiveDaysAtFinal; i++) {\r\n          const passiveDay = {\r\n            value: i,\r\n            inMonth: false,\r\n            action: 'next',\r\n            unavailable: false,\r\n            checked: false,\r\n            moment: moment(currentMoment).add(1, 'months').date(i)\r\n          }\r\n          days.push(passiveDay)\r\n        }\r\n        if (this.limit.length > 0) {\r\n          for (const li of this.limit) {\r\n            switch (li.type) {\r\n            case 'fromto':\r\n              days = this.limitFromTo(li, days)\r\n              break\r\n            case 'weekday':\r\n              days = this.limitWeekDay(li, days)\r\n              break\r\n            case 'days':\r\n              days = this.limitDays(li, days)\r\n              break\r\n            }\r\n          }\r\n        }\r\n        this.dayList = days\r\n      },\r\n      checkBySelectDays (d, days) {\r\n        this.selectedDays.forEach(day => {\r\n          const dayAsNumber: number = parseInt(moment(day).format('D'))\r\n          if (this.checked.year === moment(day).format('YYYY') && this.checked.month === moment(day).format('MM') && d === Math.ceil(dayAsNumber)) {\r\n            days[d - 1].checked = true\r\n          }\r\n        })\r\n      },\r\n      limitWeekDay (limit, days) {\r\n        days.map((day) => {\r\n          if (limit.available.indexOf(Math.floor(day.moment.format('d'))) === -1) {\r\n            day.unavailable = true\r\n          }\r\n        })\r\n        return days\r\n      },\r\n      limitFromTo (limit, days) {\r\n        if (limit.from || limit.to) {\r\n          days.map((day) => {\r\n            if (this.getLimitCondition(limit, day)) {\r\n              day.unavailable = true\r\n            }\r\n          })\r\n        }\r\n        return days\r\n      },\r\n      limitDays (limit, days) {\r\n        days.map((day) => {\r\n          if (limit.available.indexOf(day.moment.format('YYYY-MM-DD')) === -1) {\r\n            day.unavailable = true\r\n          }\r\n        })\r\n        return days\r\n      },\r\n      getLimitCondition (limit, day) {\r\n        const tmpMoment = moment(day.moment.year() + '-' + this.pad(day.moment.month() + 1) + '-' + this.pad(day.value))\r\n        if (limit.from && !limit.to) {\r\n          return !tmpMoment.isAfter(limit.from)\r\n        } else if (!limit.from && limit.to) {\r\n          return !tmpMoment.isBefore(limit.to)\r\n        } else {\r\n          return !tmpMoment.isBetween(limit.from, limit.to)\r\n        }\r\n      },\r\n      checkDay (obj) {\r\n        if (obj.unavailable || obj.value === '') {\r\n          return false\r\n        }\r\n        if (!(obj.inMonth)) {\r\n          this.nextMonth(obj.action)\r\n        }\r\n        if (this.option.type === 'day' || this.option.type === 'min') {\r\n          this.dayList.forEach((x: any) => {\r\n            x.checked = false\r\n          })\r\n          this.checked.day = this.pad(obj.value)\r\n          obj.checked = true\r\n        } else {\r\n          const day = this.pad(obj.value)\r\n          const ctime = this.checked.year + '-' + this.checked.month + '-' + day\r\n          if (obj.checked === true) {\r\n            obj.checked = false\r\n            const index = this.selectedDays.indexOf(ctime)\r\n            if (index > -1) {\r\n              this.selectedDays.splice(index, 1)\r\n            }\r\n          } else {\r\n            this.selectedDays.push(ctime)\r\n            obj.checked = true\r\n          }\r\n        }\r\n        switch (this.option.type) {\r\n        case 'day':\r\n          this.picked()\r\n          break\r\n        case 'min':\r\n          this.showOne('hour')\r\n          // shift activated time items to visible position.\r\n          this.shiftActTime()\r\n          break\r\n        }\r\n      },\r\n      showYear () {\r\n        const year = moment(this.checked.currentMoment).year()\r\n        this.library.year = []\r\n        const yearTmp = [] as any\r\n        for (let i = year - 100; i < year + 5; ++i) {\r\n          yearTmp.push(i)\r\n        }\r\n        this.library.year = yearTmp\r\n        this.showOne('year')\r\n        this.$nextTick(() => {\r\n          const listDom = document.getElementById('yearList')\r\n          if (listDom) { listDom.scrollTop = (listDom.scrollHeight - 100) }\r\n          this.addYear()\r\n        })\r\n      },\r\n      showOne (type) {\r\n        switch (type) {\r\n        case 'year':\r\n          this.showInfo.hour = false\r\n          this.showInfo.day = false\r\n          this.showInfo.year = true\r\n          this.showInfo.month = false\r\n          break\r\n        case 'month':\r\n          this.showInfo.hour = false\r\n          this.showInfo.day = false\r\n          this.showInfo.year = false\r\n          this.showInfo.month = true\r\n          break\r\n        case 'day':\r\n          this.showInfo.hour = false\r\n          this.showInfo.day = true\r\n          this.showInfo.year = false\r\n          this.showInfo.month = false\r\n          break\r\n        case 'hour':\r\n          this.showInfo.hour = true\r\n          this.showInfo.day = false\r\n          this.showInfo.year = false\r\n          this.showInfo.month = false\r\n          break\r\n        default:\r\n          this.showInfo.day = true\r\n          this.showInfo.year = false\r\n          this.showInfo.month = false\r\n          this.showInfo.hour = false\r\n        }\r\n      },\r\n      showMonth () {\r\n        this.showOne('month')\r\n      },\r\n      addYear () {\r\n        const listDom = document.getElementById('yearList')\r\n        if (listDom) {\r\n          listDom.addEventListener('scroll', (e) => {\r\n            if (listDom.scrollTop < listDom.scrollHeight - 100) {\r\n              const len = this.library.year.length\r\n              const lastYear = this.library.year[len - 1]\r\n              this.library.year.push(lastYear + 1)\r\n            }\r\n          }, false)\r\n        }\r\n      },\r\n      setYear (year) {\r\n        this.checked.currentMoment = moment(year + '-' + this.checked.month + '-' + this.checked.day)\r\n        this.showDay(this.checked.currentMoment)\r\n      },\r\n      setMonth (month) {\r\n        let mo = (this.library.month.indexOf(month) + 1)\r\n        if (mo < 10) {\r\n          mo = '0' + '' + mo\r\n        }\r\n        this.checked.currentMoment = moment(this.checked.year + '-' + mo + '-' + this.checked.day)\r\n        this.showDay(this.checked.currentMoment)\r\n      },\r\n      showCheck () {\r\n        if (this.date.time === '') {\r\n          this.showDay(null)\r\n        } else {\r\n          if (this.option.type === 'day' || this.option.type === 'min') {\r\n            this.checked.oldtime = this.date.time\r\n            this.showDay(this.date.time)\r\n          } else {\r\n            this.selectedDays = JSON.parse(this.date.time)\r\n            if (this.selectedDays.length) {\r\n              this.checked.oldtime = this.selectedDays[0]\r\n              this.showDay(this.selectedDays[0])\r\n            } else {\r\n              this.showDay(null)\r\n            }\r\n          }\r\n        }\r\n        this.showInfo.check = true\r\n      },\r\n      setTime (type, obj, list) {\r\n        for (const item of list) {\r\n          item.checked = false\r\n          if (item.value === obj.value) {\r\n            item.checked = true\r\n            this.checked[type] = item.value\r\n          }\r\n        }\r\n      },\r\n      picked () {\r\n        if (this.option.type === 'day' || this.option.type === 'min') {\r\n          const ctime = this.checked.year + '-' + this.checked.month + '-' + this.checked.day + ' ' + this.checked.hour + ':' + this.checked.min\r\n          this.checked.currentMoment = moment(ctime, 'YYYY-MM-DD HH:mm')\r\n          this.date.time = moment(this.checked.currentMoment).format(this.option.format)\r\n        } else {\r\n          this.date.time = JSON.stringify(this.selectedDays)\r\n        }\r\n        this.showInfo.check = false\r\n        this.$emit('change', this.date.time)\r\n      },\r\n      clear () {\r\n        this.date.time = null\r\n        this.showInfo.check = false\r\n        this.$emit('change', this.date.time)\r\n      },\r\n      dismiss (evt) {\r\n        if (evt.target.className === 'datepicker-overlay') {\r\n          if (this.option.dismissible === undefined || this.option.dismissible) {\r\n            this.showInfo.check = false\r\n            this.$emit('cancel')\r\n          }\r\n        }\r\n      },\r\n      shiftActTime () {\r\n        // shift activated time items to visible position.\r\n        this.$nextTick(() => {\r\n          const hourItem = document.querySelector('.hour-item.active') as HTMLElement\r\n          const minItem = document.querySelector('.min-item.active')as HTMLElement\r\n          const hourBox = document.querySelector('.hour-box')\r\n          const minBox = document.querySelector('.min-box')\r\n\r\n          if (!hourItem || !minItem || !hourBox || !minBox) {\r\n            return false\r\n          }\r\n\r\n          hourBox.scrollTop = (hourItem.offsetTop || 0) - 250\r\n          minBox.scrollTop = (minItem.offsetTop || 0) - 250\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import \"../assets/scss/_variables.scss\";\r\n.cov-vue-date {\r\n  .datepicker-overlay {\r\n    position: fixed;\r\n    width: 100%;\r\n    height: 100%;\r\n    z-index: 998;\r\n    top: 0;\r\n    left: 0;\r\n    overflow: hidden;\r\n    -webkit-animation: fadein 0.5s;\r\n    /* Safari, Chrome and Opera > 12.1 */\r\n    -moz-animation: fadein 0.5s;\r\n    /* Firefox < 16 */\r\n    -ms-animation: fadein 0.5s;\r\n    /* Internet Explorer */\r\n    -o-animation: fadein 0.5s;\r\n    /* Opera < 12.1 */\r\n    animation: fadein 0.5s;\r\n  }\r\n  @keyframes fadein {\r\n    from {\r\n      opacity: 0;\r\n    }\r\n    to {\r\n      opacity: 1;\r\n    }\r\n  }\r\n  /* Firefox < 16 */\r\n  @-moz-keyframes fadein {\r\n    from {\r\n      opacity: 0;\r\n    }\r\n    to {\r\n      opacity: 1;\r\n    }\r\n  }\r\n  /* Safari, Chrome and Opera > 12.1 */\r\n  @-webkit-keyframes fadein {\r\n    from {\r\n      opacity: 0;\r\n    }\r\n    to {\r\n      opacity: 1;\r\n    }\r\n  }\r\n  /* Internet Explorer */\r\n  @-ms-keyframes fadein {\r\n    from {\r\n      opacity: 0;\r\n    }\r\n    to {\r\n      opacity: 1;\r\n    }\r\n  }\r\n  /* Opera < 12.1 */\r\n  @-o-keyframes fadein {\r\n    from {\r\n      opacity: 0;\r\n    }\r\n    to {\r\n      opacity: 1;\r\n    }\r\n  }\r\n  .cov-date-body {\r\n    display: inline-block;\r\n    background: #3F51B5;\r\n    overflow: hidden;\r\n    position: relative;\r\n    font-size: 16px;\r\n    font-family: $font-bold;\r\n    font-weight: 400;\r\n    position: fixed;\r\n    display: block;\r\n    width: 400px;\r\n    max-width: 100%;\r\n    z-index: 999;\r\n    top: 50%;\r\n    left: 50%;\r\n    -webkit-transform: translate(-50%, -50%);\r\n    -ms-transform: translate(-50%, -50%);\r\n    transform: translate(-50%, -50%);\r\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.2);\r\n  }\r\n  .cov-picker-box {\r\n    background: #fff;\r\n    width: 100%;\r\n    display: inline-block;\r\n    padding: 25px;\r\n    box-sizing: border-box !important;\r\n    -moz-box-sizing: border-box !important;\r\n    -webkit-box-sizing: border-box !important;\r\n    -ms-box-sizing: border-box !important;\r\n    width: 400px;\r\n    max-width: 100%;\r\n    height: 280px;\r\n    text-align: start!important;\r\n  }\r\n\r\n  .spr-datepicker-input {\r\n    padding:10px 20px;\r\n  }\r\n\r\n  .cov-picker-box td {\r\n    height: 34px;\r\n    width: 34px;\r\n    padding: 0;\r\n    line-height: 34px;\r\n    color: #000;\r\n    background: #fff;\r\n    text-align: center;\r\n    cursor: pointer;\r\n  }\r\n  .cov-picker-box td:hover {\r\n    background: #E6E6E6;\r\n  }\r\n  table {\r\n    border-collapse: collapse;\r\n    border-spacing: 0;\r\n    width: 100%;\r\n  }\r\n  .day {\r\n    width: 14.2857143%;\r\n    display: inline-block;\r\n    text-align: center;\r\n    cursor: pointer;\r\n    height: 34px;\r\n    padding: 0;\r\n    line-height: 34px;\r\n    color: #000;\r\n    background: #fff;\r\n    vertical-align: middle;\r\n  }\r\n  .week ul {\r\n    margin: 0 0 8px;\r\n    padding: 0;\r\n    list-style: none;\r\n  }\r\n  .week ul li {\r\n    width: 14.2%;\r\n    display: inline-block;\r\n    text-align: center;\r\n    background: transparent;\r\n    color: #000;\r\n    font-weight: bold;\r\n  }\r\n  .passive-day {\r\n    color: #bbb;\r\n  }\r\n  .checked {\r\n    background: $brand-red;\r\n    color: #FFF !important;\r\n    border-radius: 3px;\r\n  }\r\n  .unavailable {\r\n    color: #ccc;\r\n    cursor: not-allowed;\r\n  }\r\n  .cov-date-monthly {\r\n    height: 150px;\r\n  }\r\n  .cov-date-monthly > div {\r\n    display: inline-block;\r\n    padding: 0;\r\n    margin: 0;\r\n    vertical-align: middle;\r\n    color: #fff;\r\n    height: 150px;\r\n    float: left;\r\n    text-align: center;\r\n    cursor: pointer;\r\n  }\r\n  .cov-date-previous,\r\n  .cov-date-next {\r\n    position: relative;\r\n    width: 20% !important;\r\n    text-indent: -300px;\r\n    overflow: hidden;\r\n    color: #fff;\r\n  }\r\n  .cov-date-caption {\r\n    width: 60%;\r\n    padding: 50px 0!important;\r\n    box-sizing: border-box;\r\n    font-size: 24px;\r\n  }\r\n  .cov-date-caption span:hover {\r\n    color: rgba(255, 255, 255, 0.7);\r\n  }\r\n  .cov-date-previous:hover,\r\n  .cov-date-next:hover {\r\n    background: rgba(255, 255, 255, 0.1);\r\n  }\r\n  .day:hover {\r\n    background: #EAEAEA;\r\n  }\r\n  .unavailable:hover {\r\n    background: none;\r\n  }\r\n  .checked:hover {\r\n    background: $brand-red;\r\n  }\r\n  .cov-date-next::before,\r\n  .cov-date-previous::before {\r\n    width: 20px;\r\n    height: 2px;\r\n    text-align: center;\r\n    position: absolute;\r\n    background: #fff;\r\n    top: 50%;\r\n    margin-top: -7px;\r\n    margin-left: -7px;\r\n    left: 50%;\r\n    line-height: 0;\r\n    content: '';\r\n    -webkit-transform: rotate(45deg);\r\n    -moz-transform: rotate(45deg);\r\n    transform: rotate(45deg);\r\n  }\r\n  .cov-date-next::after,\r\n  .cov-date-previous::after {\r\n    width: 20px;\r\n    height: 2px;\r\n    text-align: center;\r\n    position: absolute;\r\n    background: #fff;\r\n    margin-top: 6px;\r\n    margin-left: -7px;\r\n    top: 50%;\r\n    left: 50%;\r\n    line-height: 0;\r\n    content: '';\r\n    -webkit-transform: rotate(-45deg);\r\n    -moz-transform: rotate(-45deg);\r\n    transform: rotate(-45deg);\r\n  }\r\n  .cov-date-previous::after {\r\n    -webkit-transform: rotate(45deg);\r\n    -moz-transform: rotate(45deg);\r\n    transform: rotate(45deg);\r\n  }\r\n  .cov-date-previous::before {\r\n    -webkit-transform: rotate(-45deg);\r\n    -moz-transform: rotate(-45deg);\r\n    transform: rotate(-45deg);\r\n  }\r\n  .date-item {\r\n    text-align: center;\r\n    font-size: 20px;\r\n    padding: 10px 0;\r\n    cursor: pointer;\r\n  }\r\n  .date-item:hover {\r\n    background: #e0e0e0;\r\n  }\r\n  .date-list {\r\n    overflow: auto;\r\n    vertical-align: top;\r\n    padding: 0;\r\n  }\r\n  .cov-vue-date {\r\n    display: block;\r\n    color: #5D5D5D;\r\n\r\n    .calendar-icon {\r\n      position: absolute;\r\n      top: 12px;\r\n      right: 16px;\r\n      color: $brand-red;\r\n    }\r\n  }\r\n  .button-box {\r\n    background: #fff;\r\n    vertical-align: top;\r\n    height: 50px;\r\n    line-height: 50px;\r\n    text-align: right;\r\n    padding-right: 20px;\r\n    position: relative;\r\n  }\r\n  .button-box span {\r\n    cursor: pointer;\r\n    padding: 10px 20px;\r\n  }\r\n  .watch-box {\r\n    height: 100%;\r\n    overflow: hidden;\r\n  }\r\n  .hour-box,\r\n  .min-box {\r\n    display: inline-block;\r\n    width: 50%;\r\n    text-align: center;\r\n    height: 100%;\r\n    overflow: auto;\r\n    float: left;\r\n  }\r\n  .hour-box ul,\r\n  .min-box ul {\r\n    list-style: none;\r\n    margin: 0;\r\n    padding: 0;\r\n  }\r\n  .hour-item,\r\n  .min-item {\r\n    padding: 10px;\r\n    font-size: 36px;\r\n    cursor: pointer;\r\n  }\r\n  .hour-item:hover,\r\n  .min-item:hover {\r\n    background: #E3E3E3;\r\n  }\r\n  .hour-box .active,\r\n  .min-box .active {\r\n    background: $brand-red;\r\n    color: #FFF !important;\r\n  }\r\n  ::-webkit-scrollbar {\r\n    width: 2px;\r\n  }\r\n  ::-webkit-scrollbar-track {\r\n    background: #E3E3E3;\r\n  }\r\n  ::-webkit-scrollbar-thumb {\r\n    background: #C1C1C1;\r\n    border-radius: 2px;\r\n  }\r\n\r\n  .datepickbox {\r\n    position: relative;\r\n\r\n    svg.calendar-icon {\r\n      top: 13px;\r\n      right: 12px;\r\n      color: $brand-red;\r\n      position: absolute;\r\n    }\r\n  }\r\n\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BaseDatepicker.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BaseDatepicker.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./BaseDatepicker.vue?vue&type=template&id=e5982706\"\nimport script from \"./BaseDatepicker.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseDatepicker.vue?vue&type=script&lang=ts\"\nimport style0 from \"./BaseDatepicker.vue?vue&type=style&index=0&id=e5982706&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"spr-datepicker\">\r\n    <label v-if=\"title\" :for=\"_uid\" class=\"cap-label\">{{ title }}</label>\r\n    <date-picker v-if=\"initialDate\"\r\n                 :id=\"_uid\"\r\n                 :title=\"title\"\r\n                 :is-valid=\"true\"\r\n                 :date=\"initialDate\"\r\n                 :option=\"defaultOptions\"\r\n                 :limit=\"limit\"\r\n                 @change=\"updateValue\"\r\n    />\r\n    <date-picker v-else\r\n                 :id=\"_uid\"\r\n                 :title=\"title\"\r\n                 :is-valid=\"true\"\r\n                 :option=\"defaultOptions\"\r\n                 :limit=\"limit\"\r\n                 @change=\"updateValue\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  // Customised from Vue-datepicker https://www.npmjs.com/package/vue-datepicker with our own input box styling\r\n  import myDatepicker from '../components/BaseDatepicker.vue'\r\n  import moment from 'moment'\r\n  import { DatePickerOptions } from '../types/custom'\r\n\r\n  export interface TemplateComponentData {\r\n    defaultOptions: DatePickerOptions,\r\n    timeoption: DatePickerOptions,\r\n    multiOption: DatePickerOptions\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'SprDatePicker',\r\n    components: {\r\n      'date-picker': myDatepicker\r\n    },\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      value: {\r\n        type: String, // expected in finnish format.... DD.MM.YYYY\r\n        default: ''\r\n      },\r\n      placeholder: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      hasError: Boolean,\r\n      initial: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      options: {\r\n        type: Object,\r\n        default: null\r\n      },\r\n      limit: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      isNullable: Boolean\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        defaultOptions: {\r\n          type: 'day',\r\n          week: [\r\n            this.$t('datePicker.mondayShort') as string,\r\n            this.$t('datePicker.tuesdayShort') as string,\r\n            this.$t('datePicker.wednesdayShort') as string,\r\n            this.$t('datePicker.thursdayShort') as string,\r\n            this.$t('datePicker.fridayShort') as string,\r\n            this.$t('datePicker.saturdayShort') as string,\r\n            this.$t('datePicker.sundayShort') as string\r\n          ],\r\n          month: [\r\n            this.$t('datePicker.january') as string,\r\n            this.$t('datePicker.february') as string,\r\n            this.$t('datePicker.march') as string,\r\n            this.$t('datePicker.april') as string,\r\n            this.$t('datePicker.may') as string,\r\n            this.$t('datePicker.june') as string,\r\n            this.$t('datePicker.july') as string,\r\n            this.$t('datePicker.august') as string,\r\n            this.$t('datePicker.september') as string,\r\n            this.$t('datePicker.october') as string,\r\n            this.$t('datePicker.november') as string,\r\n            this.$t('datePicker.december') as string\r\n          ],\r\n          format: 'DD.MM.YYYY',\r\n          placeholder: this.placeholder || 'Choose date',\r\n          inputStyle: {\r\n            border: 'none',\r\n            width: '100%',\r\n            'box-shadow': '2px 2px 5px #464646',\r\n            padding: '10px 20px'\r\n          },\r\n          errorStyle: {\r\n            border: '2px solid #CC0000'\r\n          },\r\n          color: {\r\n            header: '#CC0000',\r\n            headerText: '#fff',\r\n            checkedDay: '#CC0000'\r\n          },\r\n          buttons: {\r\n            ok: this.$t('datePicker.chooseDateOk'),\r\n            cancel: this.$t('datePicker.chooseDateCancel'),\r\n            clear: this.isNullable ? this.$t('datePicker.chooseDateClear') : null\r\n          },\r\n          overlayOpacity: 0.5, // 0.5 as default\r\n          dismissible: true // as true as default\r\n        },\r\n        timeoption: {\r\n          type: 'min',\r\n          week: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\r\n          month: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n          format: 'YYYY-MM-DD HH:mm'\r\n        },\r\n        multiOption: {\r\n          type: 'multi-day',\r\n          week: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\r\n          month: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n          format: 'YYYY-MM-DD HH:mm'\r\n        }\r\n      }\r\n    },\r\n    computed: {\r\n      initialDate (): any {\r\n        var rv = {} as any\r\n        rv.time = this.initial && this.initial !== '' ? moment(this.initial, 'DD.MM.YYYY').format('DD.MM.YYYY') : null\r\n        return rv\r\n      }\r\n    },\r\n    watch: {\r\n      hasError (val): void {\r\n        this.defaultOptions.inputStyle.border = val ? '2px solid #CC0000' : '2px solid #DDDDDD'\r\n      },\r\n      value (val): void {\r\n        const dateValue = moment(val, ['DD.MM.YYYY', 'YYYY-MM-DDTHH:mm:ss']).format('DD.MM.YYYY')\r\n        if (dateValue !== this.value) {\r\n          this.updateValue(dateValue)\r\n        }\r\n      }\r\n    },\r\n    mounted () {\r\n      Object.assign(this.defaultOptions, this.options)\r\n    },\r\n    methods: {\r\n      updateValue (val) {\r\n        if (!val) {\r\n          this.$emit('input', null)\r\n        } else {\r\n          var date = val\r\n          var dateArr = val.split('.')\r\n          if (dateArr.length === 3) {\r\n            // moment() obviously fixes the 0-based month issue, but so does the\r\n            // date picked component, so we need to unfix it before handing it to\r\n            // moment.\r\n            date = new Date(dateArr[2], dateArr[1] - 1, dateArr[0])\r\n            this.$emit('input', moment(date).format('DD.MM.YYYY'))\r\n          }\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .spr-datepicker {\r\n    label {\r\n      color: $brand-red;\r\n      margin-left: 20px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRDatepicker.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRDatepicker.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRDatepicker.vue?vue&type=template&id=6a7e8bae\"\nimport script from \"./SPRDatepicker.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRDatepicker.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRDatepicker.vue?vue&type=style&index=0&id=6a7e8bae&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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 Vue from 'vue'\r\nimport VueResource from 'vue-resource'\r\nimport moment from 'moment'\r\n\r\nVue.use(VueResource)\r\n\r\nconst validatorDateIsAfter = {\r\n  getMessage (field, args) {\r\n    return `${field} must be later than ${moment(args[0], ['DD.MM.YYYY', 'YYYY-MM-DDTHH:mm:ss']).format('DD.MM.YYYY')}.`\r\n  },\r\n  validate (value, args) {\r\n    return moment(value, ['DD.MM.YYYY', 'YYYY-MM-DDTHH:mm:ss']) >= moment(args[0], ['DD.MM.YYYY', 'YYYY-MM-DDTHH:mm:ss'])\r\n  }\r\n}\r\n\r\nexport default validatorDateIsAfter\r\n","<template>\r\n  <div class=\"onhold\">\r\n    <div v-show=\"!onHold.onHold\" class=\"onhold-customer\">\r\n      <sprbutton :size=\"4\"\r\n                 :title=\"$t('customerSearch.showHoldCustomerButton')\"\r\n                 click-event=\"showHold\"\r\n                 class=\"showhold-button\"\r\n                 @showHold=\"showHold\"\r\n      />\r\n    </div>\r\n    <div v-if=\"showOnHoldInfo\" class=\"onholdinfo\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12 holddate\">\r\n          <sprdatepicker :key=\"componentKey\"\r\n                         v-model=\"resultHoldDate\"\r\n                         v-validate=\"onHoldDeadlineRules\"\r\n                         :title=\"$t('customerSearch.onHoldUntilDate')\"\r\n                         :placeholder=\"$t('customerSearch.chooseHoldDate')\"\r\n                         :initial=\"currentDate\"\r\n                         name=\"customerSearch.onHoldUntilDate\"\r\n                         :has-error=\"errors.has('customerSearch.onHoldUntilDate')\"\r\n                         :options=\"datepickerOptions\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 holdcomment\">\r\n          <sprinput v-model=\"onHold.onHoldDetails\"\r\n                    :hint=\"$t('customerSearch.onHoldComment')\"\r\n                    :is-valid=\"true\"\r\n          />\r\n        </div>\r\n        <div class=\"col-6\">\r\n          <a href=\"javascript:void(0)\" @click=\"cancelHold\">{{ $t('customerSearch.cancelHold') }}</a>\r\n        </div>\r\n        <div class=\"col-6\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.holdCustomerButton')\"\r\n                     class=\"hold-button\"\r\n                     click-event=\"hold\"\r\n                     @hold=\"onHoldCommit\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import moment from 'moment'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprinput from '../SPRSimpleText.vue'\r\n  import sprdatepicker from '../SPRDatepicker.vue'\r\n  import validatordateisafter from '../../mixins/validator-dateisafter.js'\r\n  import { Validator } from 'vee-validate'\r\n  import { OnHoldData } from '@/types/custom'\r\n\r\n  Validator.extend('dateisafter', validatordateisafter)\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    showOnHoldButton: boolean,\r\n    showOnHoldInfo: boolean,\r\n    resultHoldDate: string,\r\n    currentDate: string,\r\n    componentKey: number,\r\n    datepickerOptions: Record<string, any>\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'Onhold',\r\n    components: { sprbutton, sprinput, sprdatepicker },\r\n    props: {\r\n      onHold: {\r\n        type: Object as () => OnHoldData,\r\n        required: true,\r\n        default: () => {\r\n          return {\r\n            onHold: false,\r\n            onHoldDeadline: new Date(),\r\n            onHoldDetails: ''\r\n          }\r\n        }\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        showOnHoldButton: true,\r\n        showOnHoldInfo: false,\r\n        resultHoldDate: '',\r\n        currentDate: moment().format('DD.MM.YYYY'),\r\n        componentKey: 0,\r\n        datepickerOptions: {\r\n          inputStyle: {\r\n            display: 'inline-block',\r\n            padding: '10px 20px',\r\n            'line-height': '22px',\r\n            'font-size': '16px',\r\n            border: '2px solid #DDDDDD',\r\n            'box-shadow': 'none',\r\n            'border-radius': '24px',\r\n            color: '#5F5F5F',\r\n            width: '100%'\r\n          }\r\n        }\r\n      }\r\n    },\r\n    computed: {\r\n      onHoldDeadlineRules (): string {\r\n        return this.showOnHoldInfo\r\n          ? `required|dateisafter:${moment().add(1, 'day').startOf('day').format('DD.MM.YYYY')}`\r\n          : ''\r\n      }\r\n    },\r\n    created (): void {\r\n      // Re-render the date component on changing language to update translations\r\n      this.$store.subscribe((mutation, state) => {\r\n        if (mutation.type === 'setLanguage') {\r\n          this.componentKey += 1\r\n        }\r\n      })\r\n    },\r\n    mounted () {\r\n      this.resultHoldDate = moment(this.onHold.onHoldDeadline).format('DD.MM.YYYY')\r\n    },\r\n    methods: {\r\n      setShowOnHoldButton (): void {\r\n        this.showOnHoldButton = !this.showOnHoldInfo\r\n      },\r\n      showHold (): void {\r\n        this.showOnHoldInfo = true\r\n        this.setShowOnHoldButton()\r\n      },\r\n      cancelHold (): void {\r\n        this.showOnHoldInfo = false\r\n        this.setShowOnHoldButton()\r\n      },\r\n      onHoldCommit (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            this.commitParent()\r\n            this.cancelHold() // To hide the ShowOnHold button\r\n          }\r\n        })\r\n      },\r\n      commitParent (): void {\r\n        this.$emit('update', {\r\n          onHold: true,\r\n          onHoldDeadline: this.resultHoldDate ? moment(this.resultHoldDate, 'DD.MM.YYYY').utc(true).toDate() : null,\r\n          onHoldDetails: this.onHold.onHoldDetails\r\n        } as OnHoldData)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OnHold.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OnHold.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./OnHold.vue?vue&type=template&id=286f0596\"\nimport script from \"./OnHold.vue?vue&type=script&lang=ts\"\nexport * from \"./OnHold.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"customer-actions row button-row\">\r\n    <div class=\"col buttons\">\r\n      <!-- Copied/moved from CustomerPreview -->\r\n      <div v-if=\"showEditButton || showAllButtons\" class=\"edit-customer\">\r\n        <sprbutton\r\n          :size=\"4\"\r\n          :title=\"$t('customerSearch.editCustomerButton')\"\r\n          click-event=\"edit\"\r\n          class=\"edit-button\"\r\n          @edit=\"editCustomer\"\r\n        />\r\n      </div>\r\n      <div v-if=\"showAllButtons\">\r\n        <div class=\"disable-customer\">\r\n          <sprbutton\r\n            :size=\"4\"\r\n            :title=\"activityText\"\r\n            click-event=\"delete-customer\"\r\n            :disabled=\"inFriendship\"\r\n            :tooltip=\"inFriendship ? $t('customerSearch.inFriendshipNoDelete'): ''\"\r\n            @delete-customer=\"toggleActivity\"\r\n          />\r\n        </div>\r\n        <div v-if=\"!inFriendship\" class=\"customer-onhold\">\r\n          <onhold\r\n            :on-hold=\"onHoldValue\"\r\n            @update=\"onHoldUpdate\"\r\n          />\r\n        </div>\r\n        <div v-else class=\"disable-customer\">\r\n          <sprbutton\r\n            :title=\"$t('customerSearch.showHoldCustomerButton')\"\r\n            :size=\"4\"\r\n            :tooltip=\"inFriendship ? $t('moveFMGForm.disabledHasFriendship') : ''\"\r\n            disabled\r\n            class=\"disable-button button-disabled\"\r\n          />\r\n        </div>\r\n        <div v-show=\"isMoveAdmin && !group.netFriendship\" class=\"edit-customer\">\r\n          <sprbutton\r\n            :size=\"4\"\r\n            :title=\"$t('customerSearch.moveCustomerButton')\"\r\n            :tooltip=\"inFriendship || inFriendshipPool ? $t('moveFMGForm.disabledHasFriendship') : ''\"\r\n            click-event=\"move\"\r\n            class=\"edit-button\"\r\n            :disabled=\"!!inFriendship || !!inFriendshipPool\"\r\n            @move=\"moveCustomer\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue, { shallowReactive } from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import onhold from './OnHold.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import { CustomerState, FriendCustomerNetDto, FriendCustomerStandardDto, FriendManagementDto } from '../../types/index'\r\n  import { OnHoldData } from '@/types/custom'\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerActions',\r\n\r\n    components: { onhold, sprbutton },\r\n    props: {\r\n      value: {\r\n        type: Object as () => FriendCustomerNetDto | FriendCustomerStandardDto,\r\n        required: true\r\n      },\r\n      showEditButton: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      showAllButtons: {\r\n        type: Boolean,\r\n        default: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: false,\r\n        default: null\r\n      },\r\n      loaded: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      loading: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    computed: {\r\n      activityText (): string | LocaleMessage {\r\n        return this.isInactive ? this.$t('customerSearch.enableCustomerButton') : this.$t('customerSearch.disableCustomerButton')\r\n      },\r\n      isInactive (): boolean {\r\n        return this.value.state === CustomerState.NonActive\r\n      },\r\n      inactiveText (): string | LocaleMessage {\r\n        switch (this.value.state) {\r\n        case CustomerState.PendingApproval:\r\n          return this.$t('customerSearch.noMatchingNotInterviewed')\r\n        case CustomerState.NonActive:\r\n          return this.$t('customerSearch.noMatchingRemoved')\r\n        case CustomerState.OnHold:\r\n          return this.$t('customerSearch.noMatchingOnHold')\r\n        }\r\n\r\n        return ''\r\n      },\r\n      inFriendship (): boolean {\r\n        return (this.value.state === CustomerState.ActiveFriendship) || (this.value.state === CustomerState.PendingFriend)\r\n      },\r\n      inFriendshipPool (): boolean {\r\n        return (this.value.friendPools && this.value.friendPools.length > 0)\r\n      },\r\n      onHoldValue (): OnHoldData {\r\n        return {\r\n          onHold: this.value.state === CustomerState.OnHold,\r\n          onHoldDeadline: this.value.onHoldUntilDate,\r\n          onHoldDetails: this.value.onHoldComment\r\n        } as OnHoldData\r\n      },\r\n      isMoveAdmin (): boolean {\r\n        // @ts-ignore\r\n        const isAdmin = this.hasRole('Admin')\r\n        // @ts-ignore\r\n        const isFriendshipAdmin = this.hasRole('FriendshipAdmin')\r\n        // @ts-ignore\r\n        const isDistrictFriendshipAdmin = this.hasRole('DistrictFriendshipAdmin')\r\n        // @ts-ignore\r\n        const isFriendshipBroker = this.hasRole('FriendshipBroker')\r\n        return isAdmin || isFriendshipAdmin || isDistrictFriendshipAdmin || isFriendshipBroker\r\n      }\r\n    },\r\n    methods: {\r\n      moveCustomer (): void {\r\n        this.$emit('moveCustomer')\r\n      },\r\n      editCustomer (): void {\r\n        var url = this.group.netFriendship\r\n          ? `/friend/netcustomer/edit/${this.group.id}/${this.value.id}`\r\n          : `/friend/standardcustomer/edit/${this.group.id}/${this.value.id}`\r\n\r\n        this.$router.push(url)\r\n      },\r\n      onHoldUpdate (onHold: OnHoldData): void {\r\n        this.value.state = CustomerState.OnHold\r\n        this.value.onHoldUntilDate = onHold.onHoldDeadline\r\n        this.value.onHoldComment = onHold.onHoldDetails\r\n        this.saveCustomer()\r\n      },\r\n      saveCustomer (): void {\r\n        this.$emit('saveCustomer')\r\n      },\r\n      toggleActivity (): void {\r\n        this.$emit('toggleActivity')\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .customer-actions {\r\n    .disable-customer .nodeletewarning {\r\n      color: $brand-red;\r\n      font-size: 13px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerActions.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerActions.vue?vue&type=template&id=0553599e\"\nimport script from \"./CustomerActions.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerActions.vue?vue&type=style&index=0&id=0553599e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"customercardstandard\">\r\n    <div class=\"topsection\">\r\n      <div class=\"circle\">\r\n        <friendshipicon\r\n          v-if=\"friendshipStateOverride\"\r\n          :friendname=\"customer.firstName\"\r\n          :state=\"friendshipStateOverride\"\r\n        />\r\n        <friendicon\r\n          v-else\r\n          :friendname=\"customer.firstName\"\r\n          :state=\"customer.state\"\r\n          :multiple-friendships=\"customer.multipleVolunteers\"\r\n        />\r\n      </div>\r\n      <div class=\"details\">\r\n        <div class=\"name\">\r\n          <span>{{ customer.firstName }} {{ customer.lastName }}</span>\r\n          <div class=\"usericons\">\r\n            <font-awesome-icon v-if=\"hasMultipleCustomers\" icon=\"users\" :title=\"$t('customerSearch.multipleCustomers')\" />\r\n          </div>\r\n        </div>\r\n        <div class=\"personal\">\r\n          <div>{{ genderAgeText }}</div>\r\n          <div>{{ customerType }}</div>\r\n          <div>{{ customer.customerTypeOtherInfo }}</div>\r\n          <div v-if=\"customer.shortDescription\" class=\"short-description\">\r\n            <font-awesome-icon icon=\"quote-left\" aria-hidden=\"true\" />\r\n            <span>{{ customer.shortDescription }}</span>\r\n            <font-awesome-icon icon=\"quote-right\" aria-hidden=\"true\" />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div v-show=\"customer.lastContacted\" class=\"contacted\">\r\n            {{ lastContacted(customer.lastContacted) }}\r\n      </div>\r\n      <div class=\"nofriend\">\r\n        {{ daysWithoutFriend(customer.lastFriendshipEndDate) }}\r\n      </div>\r\n    </div>\r\n    <div class=\"properties\">\r\n      <div class=\"row property location\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"map-marker-alt\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <div>{{ $t('customerSearch.address') }}: {{ address || '&ndash;' }}</div>\r\n          <div v-if=\"showMatches\">\r\n            {{ matches.travelData.travelDistanceTime }}\r\n          </div>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <div v-if=\"showDistanceWarning\">\r\n            <tickcrosswarning v-model=\"showDistanceWarningValue\" />\r\n          </div>\r\n          <div v-else>\r\n            <tickcross v-model=\"matches.travelData.isMatch\" />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"row property availabilitytimes\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon :icon=\"['far', 'clock']\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          {{ $t('customerSearch.myTimes') }}: <strong>{{ availabilityText || '&ndash;' }}</strong>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <tickcross v-model=\"matches.availabilityTimesMatch\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row property availabilitytimes\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon :icon=\"['far', 'clock']\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          {{ $t('customerSearch.myFrequency') }}: <strong>{{ availabilityFrequency || '&ndash;' }}</strong>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <tickcross v-model=\"matches.availabilityFrequencyMatch\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row property genders\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"venus-mars\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <div>{{ $t('customerSearch.am') }} <strong>{{ gender.toLowerCase() || '...?' }}</strong></div>\r\n          <div>{{ $t('customerSearch.forFriend') }}: <strong>{{ genderPreferences || '&ndash;' }}</strong></div>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <tickcrosswarning v-model=\"matches.genderMatch\" />\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property age\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"id-badge\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <div>{{ $t('customerSearch.am') }} <strong>{{ age || '?' }} {{ $t('customerSearch.years') }}</strong></div>\r\n          <div>{{ $t('customerSearch.forFriend') }}: <strong>{{ agePreferences || '&ndash;' }}</strong></div>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <tickcross v-model=\"matches.ageMatch\" />\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property language\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon :icon=\"['far', 'comment']\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <div>{{ $t('customerSearch.speak') }}: <strong>{{ normalizeTranslation(customer.nativeLanguage) }} ({{ $t('customerSearch.nativeLanguage') }})</strong></div>\r\n          <div v-if=\"spokenLanguages\">\r\n            <strong>{{ spokenLanguages }}</strong>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <tickcross v-model=\"matches.languageMatch\" />\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property interest\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"puzzle-piece\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          {{ $t('customerSearch.interestedIn') }}: <strong>{{ interests || '&ndash;' }}</strong>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"moreinfo\">\r\n      <div class=\"row\">\r\n        <div class=\"col description\">\r\n          <sprcollapsible :heading=\"$t('profile.notes')\">\r\n            <div slot=\"body\">\r\n              <sprprivatenotes v-model=\"customer\" endpoint=\"customerupdateprivatenotesstandard\" :friend-management-group-id=\"group.id\" :target-id=\"targetId\" is-customer />\r\n            </div>\r\n          </sprcollapsible>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col contact\">\r\n          <sprcollapsible :heading=\"$t('customerSearch.contactTitle')\">\r\n            <div slot=\"body\">\r\n              <p class=\"smalltext\">\r\n                {{ contactDetails }}\r\n              </p>\r\n            </div>\r\n          </sprcollapsible>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col other\">\r\n          <sprcollapsible :heading=\"$t('customerSearch.otherInfoTitle')\">\r\n            <div slot=\"body\">\r\n              <dl v-if=\"customer.customerApproval\" class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerForm.customerApproval') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ customer.customerApprovedBy }}\r\n                </dd>\r\n              </dl>\r\n              <dl v-if=\"customer.customerInterviewed\" class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerForm.customerInterviewed') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ customer.customerInterviewedBy }}\r\n                </dd>\r\n              </dl>\r\n              <dl v-if=\"customer.customerNotForSpr\" class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerForm.customerNotForSPR') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ customer.customerNotForSprBy }}\r\n                </dd>\r\n              </dl>\r\n              <dl v-if=\"customer.customerNotForPrivateRelations\" class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerForm.customerNotForPrivateRelations') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ customer.customerNotForPrivateRelationsBy }}\r\n                </dd>\r\n              </dl>\r\n              <dl v-if=\"contactPerson\" class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerForm.customerContactPerson') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ contactPerson }}\r\n                </dd>\r\n              </dl>\r\n              <dl v-if=\"customer.otherContact\" class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerForm.customerContactOther') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ customer.otherContact }}\r\n                </dd>\r\n              </dl>\r\n            </div>\r\n          </sprcollapsible>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"isOnHold\" class=\"row\">\r\n        <div class=\"col onhold\">\r\n          <sprcollapsible :heading=\"$t('customerSearch.onHoldTitle')\">\r\n            <div slot=\"body\">\r\n              <dl class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerSearch.onHoldUntilDate') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ formattedOnHoldUntilDate }}\r\n                </dd>\r\n              </dl>\r\n              <dl class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerSearch.onHoldComment') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ customer.onHoldComment }}\r\n                </dd>\r\n              </dl>\r\n            </div>\r\n          </sprcollapsible>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"showActions || showEditButton\" class=\"row\">\r\n      <div class=\"col buttons\">\r\n        <!-- Actions -->\r\n        <customerActions\r\n          v-model=\"customer\"\r\n          :group=\"group\"\r\n          :loaded=\"loaded\"\r\n          :show-edit-button=\"showEditButton\"\r\n          :show-all-buttons=\"showActions\"\r\n          @saveCustomer=\"saveCustomer\"\r\n          @toggleActivity=\"toggleActivity\"\r\n          @moveCustomer=\"moveCustomer\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"isSending\" class=\"text-center\">\r\n      <Loading />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import friendicon from './FriendIcon.vue'\r\n  import friendshipicon from './FriendshipIcon.vue'\r\n  import tickcross from '../SPRTickCross.vue'\r\n  import tickcrosswarning from '../SPRTickCrossWarning.vue'\r\n  import sprcollapsible from '../SPRCollapsible.vue'\r\n  import sprprivatenotes from '../SPRPrivateNotes.vue'\r\n  import customerActions from './CustomerActions.vue'\r\n  import Loading from '../SPRLoading.vue'\r\n  import moment from 'moment'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import locationhelper from '../../mixins/locationutils.js'\r\n\r\n  import { Validator } from 'vee-validate'\r\n  import validatordateisafter from '../../mixins/validator-dateisafter.js'\r\n  import { CustomerState, FriendManagementDto, FriendCustomerStandardDto, LanguageDto, FriendshipState } from '../../types/index'\r\n  import { MatchData, YesNoWarning } from '@/types/custom'\r\n  import { finnishDateFormat } from '@/helpers/datehelper'  \r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    loaded: boolean,\r\n    isSending: boolean,\r\n    customer: FriendCustomerStandardDto\r\n  }\r\n\r\n  Validator.extend('dateisafter', validatordateisafter)\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerCardStandard',\r\n    components: { customerActions, friendicon, friendshipicon, tickcross, tickcrosswarning, sprcollapsible, sprprivatenotes, Loading },\r\n    mixins: [enumhelper, datehelper, locationhelper],\r\n    props: {\r\n      value: {\r\n        type: Object as () => FriendCustomerStandardDto, // Customer object\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        default: null\r\n      },\r\n      showMatches: {\r\n        type: Boolean,\r\n        default: () => {\r\n          return false\r\n        }\r\n      },\r\n      showActions: {\r\n        type: Boolean,\r\n        default: () => {\r\n          return true\r\n        }\r\n      },\r\n      showEditButton: {\r\n        type: Boolean,\r\n        default: () => {\r\n          return false\r\n        }\r\n      },\r\n      matches: {\r\n        type: Object as () => MatchData,\r\n        default: () => {\r\n          return {\r\n            travelData: {\r\n              travelDistanceTime: '',\r\n              isMatch: false,\r\n              isRealDistance: false\r\n            },\r\n            availabilityTimesMatch: false,\r\n            availabilityFrequencyMatch: false,\r\n            friendshipTypesMatch: false,\r\n            genderMatch: 'FAIL',\r\n            ageMatch: false,\r\n            languageMatch: false,\r\n            interestMatch: false\r\n          }\r\n        }\r\n      },\r\n      friendshipStateOverride: {\r\n        type: Number as () => FriendshipState,\r\n        required: false,\r\n        default: undefined\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        customer: this.value,\r\n        loaded: true,\r\n        isSending: false\r\n      }\r\n    },\r\n    computed: {\r\n      isInactive (): boolean {\r\n        return this.value.state === CustomerState.NonActive\r\n      },\r\n      hasMultipleCustomers (): boolean {\r\n        return !!this.value?.multipleVolunteers\r\n      },\r\n      gender (): string | LocaleMessage {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getGenderTranslation(this.customer.gender)\r\n      },\r\n      isOnHold (): boolean {\r\n        return this.value.state === CustomerState.OnHold\r\n      },\r\n      formattedOnHoldUntilDate (): string {\r\n        if (this.customer.onHoldUntilDate) {\r\n          const date = this.customer.onHoldUntilDate\r\n          const formattedDate = moment(date).format('DD.MM.YYYY')\r\n\r\n          return formattedDate\r\n        } else {\r\n          return ''\r\n        }\r\n      },\r\n      age (): number {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.calculateAge(this.customer.birthdate)\r\n      },\r\n      genderAgeText (): string | LocaleMessage {\r\n        return [this.gender, this.age ? `${this.age} ${this.$t('customerSearch.years')}` : ''].filter(Boolean).join(', ')\r\n      },\r\n      customerType (): string {\r\n        var self = this\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getCustomerTypesMaskTranslation(self.customer.customerTypes)\r\n      },\r\n      address (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.formatAddress(this.customer.streetAddress, this.customer.zipCode, this.customer.city)\r\n      },\r\n      availabilityFrequency (): string {\r\n        if (this.group.netFriendship) {\r\n          return ''\r\n        }\r\n\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        var frequency = this.getAvailabilityFrequencyTranslation(this.customer.availabilityFrequency)\r\n        return frequency\r\n      },\r\n      availabilityText (): string {\r\n        if (this.group.netFriendship) {\r\n          return ''\r\n        }\r\n\r\n        var self = this\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        var times = this.getAvailabilityTimesMaskTranslation(self.customer.availabilityTimes)\r\n\r\n        return times\r\n      },\r\n      genderPreferences (): string | LocaleMessage {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getGenderPreferencesMaskTranslation(this.customer.preferredGenders)\r\n      },\r\n      agePreferences (): string | LocaleMessage {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getAgePreferencesMaskTranslation(this.customer.preferredAges)\r\n      },\r\n      spokenLanguages (): string {\r\n        var self = this\r\n        var languages = [] as string[]\r\n        _.forEach(this.customer.customerLanguages, (item: LanguageDto) => {\r\n          if (item.isoCode !== self.customer.nativeLanguage) {\r\n            // @ts-ignore - ts intellisense not finding mixins\r\n            languages.push(self.normalizeTranslation(item.isoCode))\r\n          }\r\n        })\r\n        languages.push(this.customer.otherLanguages)\r\n        return languages.filter(Boolean).join(', ')\r\n      },\r\n      interests (): string {\r\n        var self = this\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        var interests = this.getInterestsMaskTranslation(self.customer.interests)\r\n        if (this.customer.interestOther) {\r\n          interests += `, ${this.customer.interestOther}`\r\n        }\r\n        return interests\r\n      },\r\n      contactDetails (): string {\r\n        var phone = [this.customer.gsmPhone, this.customer.homePhone].filter(Boolean).join(' / ')\r\n        var phoneText = phone ? `${this.$t('customerSearch.telAbbreviation')} ${phone}` : ''\r\n        var email = this.customer.email ? `${this.$t('customerSearch.emailAbbreviation')}: ${this.customer.email}` : ''\r\n        return [phoneText, email].filter(Boolean).join(' | ')\r\n      },\r\n      contactPerson (): string {\r\n        var contactName = [this.customer.contactFirstName, this.customer.contactLastName].filter(Boolean).join(' ')\r\n        var contactPhone = this.customer.contactPhonenumber ? `${this.$t('customerSearch.telAbbreviation')} ${this.customer.contactPhonenumber}` : ''\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        var contactAddress = this.formatAddress(this.customer.contactStreetAddress, this.customer.contactZipCode, this.customer.contactCity)\r\n        return [this.customer.contactRelation,\r\n                contactName,\r\n                this.customer.contactEmail,\r\n                contactPhone,\r\n                contactAddress].filter(Boolean).join(' | ')\r\n      },\r\n      showEnable (): boolean {\r\n        return this.customer.state === CustomerState.NonActive\r\n      },\r\n      showDisable (): boolean {\r\n        return _.includes([CustomerState.PendingApproval, CustomerState.Active, CustomerState.OnHold], this.customer.state)\r\n      },\r\n      showDistanceWarning (): boolean {\r\n        if (!this.showMatches) {\r\n          return false\r\n        }\r\n        if (this.matches.travelData) {\r\n          return !this.matches.travelData.isRealDistance\r\n        }\r\n        return false\r\n      },\r\n      showDistanceWarningValue (): YesNoWarning {\r\n        return YesNoWarning.Warning\r\n      },\r\n      targetId (): number {\r\n        return this.value.id\r\n      }\r\n    },\r\n    watch: {\r\n      value (newVal) {\r\n        this.customer = newVal\r\n      }\r\n    },\r\n    methods: {\r\n      lastContacted (lastContactedDate: Date | undefined): string {\r\n        if (!lastContactedDate) {\r\n          return `${this.$t('customerSearch.neverContacted')}`\r\n        }\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return `${this.$t('customerSearch.lastContacted')} ${finnishDateFormat(lastContactedDate)}`\r\n      },\r\n      moveCustomer (): void {\r\n        this.$emit('moveCustomer')\r\n      },\r\n      daysWithoutFriend (lastFriendshipDate): string {\r\n        if (!lastFriendshipDate) {\r\n          return `${this.$t('customerSearch.neverHadFriend')}`\r\n        }\r\n        // @ts-ignore (no mixins found)\r\n        return `${this.calculateDayDiff(lastFriendshipDate)} ${this.$t('customerSearch.daysWithoutFriend')}`\r\n      },\r\n      updateRemoteCustomer (): void {\r\n        var self = this\r\n        self.isSending = true\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customerupdatestandard[0]}`\r\n        this.$http.put(url, this.customer).then(response => {\r\n          if (response.ok) {\r\n            self.isSending = false\r\n            this.notifyRefresh()\r\n          }\r\n        }, response => {\r\n          // @ts-ignore - mixins not picked up\r\n          this.showAlertError(`${this.$t('common.saveFailed')}`)\r\n          console.log('Error saving customer state')\r\n        })\r\n      },\r\n      saveCustomer (): void {\r\n        this.updateRemoteCustomer()\r\n      },\r\n      notifyRefresh (): void {\r\n        this.$emit('refresh')\r\n      },\r\n      toggleActivity (): void {\r\n        var uri = this.$store.state.apiBases.friendservice\r\n        if (this.customer.state === CustomerState.NonActive) {\r\n          uri += this.$store.state.apiEndpoints.markactivecustomerstandard[0]\r\n        } else {\r\n          uri += this.$store.state.apiEndpoints.markinactivecustomerstandard[0]\r\n        }\r\n\r\n        uri = uri\r\n          .replace('{customerid}', this.customer.id)\r\n          .replace('{groupid}', this.group.id)\r\n\r\n        const self = this\r\n\r\n        this.$http.post(uri).then(() => {\r\n          this.notifyRefresh()\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customercardstandard {\r\n    margin-bottom: 30px;\r\n\r\n    .usericons {\r\n        display: inline-block;\r\n        margin-left: 5px;\r\n        color: $brand-red;\r\n      }\r\n\r\n    .topsection {\r\n      min-height: 120px;\r\n      .circle {\r\n        float: left;\r\n        margin-top:20px;\r\n      }\r\n      .contacted {\r\n        text-align: center;\r\n        font-size: 13px;\r\n        margin-top: 15px;\r\n      }\r\n      .details {\r\n        margin-left:70px;\r\n\r\n        .name {\r\n          text-transform: uppercase;\r\n          color: $brand-red;\r\n          font-weight: bold;\r\n          position: relative;\r\n          .edit {\r\n            position: absolute;\r\n            left:-15px;\r\n            text-decoration: none;\r\n            color:$brand-red;\r\n          }\r\n        }\r\n\r\n        .personal {\r\n          font-size: 0.8em;\r\n          font-weight:bold;\r\n          .short-description {\r\n            font-weight:normal;\r\n            color:$brand-red;\r\n            font-style: italic;\r\n            margin-top: 10px;\r\n            position:relative;\r\n            span {\r\n              padding: 0 5px;\r\n            }\r\n            svg {\r\n              font-size:12px;\r\n              display:inline-block;\r\n            }\r\n          }\r\n        }\r\n\r\n      }\r\n      .nofriend {\r\n        text-align: center;\r\n        font-size: 13px;\r\n        margin-top: 15px;\r\n      }\r\n    }\r\n\r\n    .properties {\r\n      clear: both;\r\n      margin-top: 10px;\r\n      margin-bottom: 30px;\r\n\r\n      .property {\r\n        display: flex;\r\n        flex-flow: row nowrap;\r\n        justify-content: space-between;\r\n        align-items: center;\r\n\r\n        min-height: 55px;\r\n        margin: 0;\r\n        border-bottom: solid 1px $brand-grey3;\r\n        padding: 5px 0;\r\n\r\n        .icon {\r\n          flex: 0 0 40px;\r\n          text-align: center;\r\n\r\n          font-size: 2em;\r\n          color:$brand-red;\r\n        }\r\n        //IE11\r\n        *::-ms-backdrop, .icon { margin-top: 15px; }\r\n\r\n        .content {\r\n          margin-left: 10px;\r\n          flex: auto;\r\n\r\n          font-size: 0.8em;\r\n          dl {\r\n            margin-bottom: 0;\r\n            dt {\r\n              font-size: 1em;\r\n            }\r\n          }\r\n        }\r\n\r\n        .match {\r\n          flex: 0 0 40px;\r\n          text-align: right;\r\n\r\n          font-size: 1.5em;\r\n        }\r\n      }\r\n    }\r\n\r\n    button {\r\n      margin-bottom: 15px;\r\n      &.button-disabled {\r\n        border-color: $brand-grey4;\r\n        color: $brand-grey4;\r\n        cursor: not-allowed;\r\n        outline: none;\r\n        &:hover {\r\n          background-color:$brand-white;\r\n        }\r\n      }\r\n    }\r\n\r\n    .moreinfo {\r\n      .description,\r\n      .contact,\r\n      .other {\r\n        margin-bottom: 20px;\r\n      }\r\n      dl {\r\n        margin-bottom: 0;\r\n        font-size: 0.8em;\r\n        dt {\r\n          font-size: 1em;\r\n        }\r\n      }\r\n    }\r\n\r\n    .edit-customer,\r\n    .enable-customer,\r\n    .disable-customer,\r\n    .onhold-customer,\r\n    .onholdinfo {\r\n      text-align: center;\r\n      margin-top: 15px;\r\n    }\r\n\r\n    .onholdinfo {\r\n      text-align:left;\r\n\r\n      .holddate {\r\n        margin-bottom:15px;\r\n      }\r\n\r\n      a {\r\n        margin-top:14px;\r\n        display:block;\r\n      }\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerCardStandard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerCardStandard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerCardStandard.vue?vue&type=template&id=1cda20c6\"\nimport script from \"./CustomerCardStandard.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerCardStandard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerCardStandard.vue?vue&type=style&index=0&id=1cda20c6&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"customercardnet\"},[_c('div',{staticClass:\"topsection\"},[_c('div',{staticClass:\"circle\"},[(_vm.friendshipStateOverride)?_c('friendshipicon',{attrs:{\"friendname\":_vm.customer.firstName,\"state\":_vm.friendshipStateOverride}}):_c('friendicon',{attrs:{\"friendname\":_vm.customer.firstName,\"state\":_vm.customer.state,\"multiple-friendships\":_vm.customer.multipleVolunteers}})],1),_c('div',{staticClass:\"details\"},[_c('div',{staticClass:\"name\"},[_c('span',[_vm._v(_vm._s(_vm.customer.firstName)+\" \"+_vm._s(_vm.customer.lastName))]),_c('div',{staticClass:\"usericons\"},[(_vm.hasMultipleCustomers)?_c('font-awesome-icon',{attrs:{\"icon\":\"users\",\"title\":_vm.$t('customerSearch.multipleCustomers')}}):_vm._e()],1)]),_c('div',{staticClass:\"personal\"},[_c('div',[_vm._v(_vm._s(_vm.genderAgeText))]),_c('div',[_vm._v(_vm._s(_vm.customerType))]),_c('div',[_vm._v(_vm._s(_vm.customer.customerTypeOtherInfo))]),(_vm.customer.shortDescription)?_c('div',{staticClass:\"short-description\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"quote-left\",\"aria-hidden\":\"true\"}}),_c('span',[_vm._v(_vm._s(_vm.customer.shortDescription))]),_c('font-awesome-icon',{attrs:{\"icon\":\"quote-right\",\"aria-hidden\":\"true\"}})],1):_vm._e(),_c('div',[_vm._v(_vm._s(_vm.zipCode)+\" \")])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.customer.lastContacted),expression:\"customer.lastContacted\"}],staticClass:\"contacted\"},[_vm._v(\" \"+_vm._s(_vm.lastContacted(_vm.customer.lastContacted))+\" \")]),_c('div',{staticClass:\"nofriend\"},[_vm._v(\" \"+_vm._s(_vm.daysWithoutFriend(_vm.customer.lastFriendshipEndDate))+\" \")])]),_c('div',{staticClass:\"properties\"},[_c('div',{staticClass:\"row property genders\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"venus-mars\"}})],1),_c('div',{staticClass:\"content\"},[_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.am'))+\" \"),_c('strong',[_vm._v(_vm._s(_vm.gender.toLowerCase() || '...?'))])]),_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.forFriend'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.genderPreferences || '–'))])])]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[_c('tickcrosswarning',{model:{value:(_vm.matches.genderMatch),callback:function ($$v) {_vm.$set(_vm.matches, \"genderMatch\", $$v)},expression:\"matches.genderMatch\"}})],1):_vm._e()]),_c('div',{staticClass:\"row property age\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"id-badge\"}})],1),_c('div',{staticClass:\"content\"},[_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.am'))+\" \"),_c('strong',[_vm._v(_vm._s(_vm.age || '?')+\" \"+_vm._s(_vm.$t('customerSearch.years')))])]),_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.forFriend'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.agePreferences || '–'))])])]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[_c('tickcross',{model:{value:(_vm.matches.ageMatch),callback:function ($$v) {_vm.$set(_vm.matches, \"ageMatch\", $$v)},expression:\"matches.ageMatch\"}})],1):_vm._e()]),_c('div',{staticClass:\"row property language\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'comment']}})],1),_c('div',{staticClass:\"content\"},[_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.speak'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.normalizeTranslation(_vm.customer.nativeLanguage))+\" (\"+_vm._s(_vm.$t('customerSearch.nativeLanguage'))+\")\")])]),(_vm.spokenLanguages)?_c('div',[_c('strong',[_vm._v(_vm._s(_vm.spokenLanguages))])]):_vm._e()]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[_c('tickcross',{model:{value:(_vm.matches.languageMatch),callback:function ($$v) {_vm.$set(_vm.matches, \"languageMatch\", $$v)},expression:\"matches.languageMatch\"}})],1):_vm._e()]),_c('div',{staticClass:\"row property interest\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"puzzle-piece\"}})],1),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.interestedIn'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.interests || '–'))])])]),_c('div',{staticClass:\"row property ecomms\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"wifi\"}})],1),_c('div',{staticClass:\"content\"},[(_vm.customer.econtactDiscord)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('connectivity.discord'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.econtactDiscord)+\" \")])]):_vm._e(),(_vm.customer.econtactEmail)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('connectivity.email'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.econtactEmail)+\" \")])]):_vm._e(),(_vm.customer.econtactInstagram)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('connectivity.instagram'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.econtactInstagram)+\" \")])]):_vm._e(),(_vm.customer.econtactKik)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('connectivity.kik'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.econtactKik)+\" \")])]):_vm._e(),(_vm.customer.econtactSkype)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('connectivity.skype'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.econtactSkype)+\" \")])]):_vm._e(),(_vm.customer.econtactTelegram)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('connectivity.telegram'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.econtactTelegram)+\" \")])]):_vm._e(),(_vm.customer.econtactFreetext)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('connectivity.freetext'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.econtactFreetext)+\" \")])]):_vm._e()])])]),_c('div',{staticClass:\"moreinfo\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col description\"},[_c('sprcol',{attrs:{\"heading\":_vm.$t('profile.notes')}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('sprprivatenotes',{attrs:{\"endpoint\":\"customerupdateprivatenotesnet\",\"friend-management-group-id\":_vm.group.id,\"target-id\":_vm.targetId,\"is-customer\":\"\",\"is-net\":\"\"},model:{value:(_vm.customer),callback:function ($$v) {_vm.customer=$$v},expression:\"customer\"}})],1)])],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col contact\"},[_c('sprcol',{attrs:{\"heading\":_vm.$t('customerSearch.contactTitle')}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('p',{staticClass:\"smalltext\"},[_vm._v(\" \"+_vm._s(_vm.contactDetails)+\" \")])])])],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col other\"},[_c('sprcol',{attrs:{\"heading\":_vm.$t('customerSearch.otherInfoTitle')}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[(_vm.customer.customerApproval)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.customerApproval'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.customerApprovedBy)+\" \")])]):_vm._e(),(_vm.customer.customerInterviewed)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.customerInterviewed'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.customerInterviewedBy)+\" \")])]):_vm._e(),(_vm.customer.customerNotForSpr)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.customerNotForSPR'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.customerNotForSprBy)+\" \")])]):_vm._e(),(_vm.customer.customerNotForPrivateRelations)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.customerNotForPrivateRelations'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.customerNotForPrivateRelationsBy)+\" \")])]):_vm._e(),(_vm.contactPerson)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.customerContactPerson'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.contactPerson)+\" \")])]):_vm._e(),(_vm.customer.otherContact)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.customerContactOther'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.otherContact)+\" \")])]):_vm._e()])])],1)]),(_vm.isOnHold)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col onhold\"},[_c('sprcol',{attrs:{\"heading\":_vm.$t('volunteerForm.onHoldDescription')}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.onHoldUntilDate'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.formattedOnHoldUntilDate)+\" \")])]),_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.onHoldComment'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.customer.onHoldComment)+\" \")])])])])],1)]):_vm._e()]),(_vm.showActions || _vm.showEditButton)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col buttons\"},[_c('customerActions',{attrs:{\"group\":_vm.group,\"loaded\":_vm.loaded,\"show-edit-button\":_vm.showEditButton,\"show-all-buttons\":_vm.showActions},on:{\"saveCustomer\":_vm.saveCustomer,\"toggleActivity\":_vm.toggleActivity},model:{value:(_vm.customer),callback:function ($$v) {_vm.customer=$$v},expression:\"customer\"}})],1)]):_vm._e(),(_vm.isSending)?_c('div',{staticClass:\"text-center\"},[_c('Loading')],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"customercardnet\">\r\n    <div class=\"topsection\">\r\n      <div class=\"circle\">\r\n        <friendshipicon\r\n          v-if=\"friendshipStateOverride\"\r\n          :friendname=\"customer.firstName\"\r\n          :state=\"friendshipStateOverride\"\r\n        />\r\n        <friendicon\r\n          v-else\r\n          :friendname=\"customer.firstName\"\r\n          :state=\"customer.state\"\r\n          :multiple-friendships=\"customer.multipleVolunteers\"\r\n        />\r\n      </div>\r\n      <div class=\"details\">\r\n        <div class=\"name\">\r\n          <span>{{ customer.firstName }} {{ customer.lastName }}</span>\r\n          <div class=\"usericons\">\r\n            <font-awesome-icon v-if=\"hasMultipleCustomers\" icon=\"users\" :title=\"$t('customerSearch.multipleCustomers')\" />\r\n          </div>\r\n        </div>\r\n        <div class=\"personal\">\r\n          <div>{{ genderAgeText }}</div>\r\n          <div>{{ customerType }}</div>\r\n          <div>{{ customer.customerTypeOtherInfo }}</div>\r\n          <div v-if=\"customer.shortDescription\" class=\"short-description\">\r\n            <font-awesome-icon icon=\"quote-left\" aria-hidden=\"true\" />\r\n            <span>{{ customer.shortDescription }}</span>\r\n            <font-awesome-icon icon=\"quote-right\" aria-hidden=\"true\" />\r\n          </div>\r\n          <div>{{ zipCode }} </div>\r\n        </div>\r\n      </div>\r\n      <div v-show=\"customer.lastContacted\" class=\"contacted\">\r\n            {{ lastContacted(customer.lastContacted) }}\r\n      </div>\r\n      <div class=\"nofriend\">\r\n        {{ daysWithoutFriend(customer.lastFriendshipEndDate) }}\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"properties\">\r\n      <div class=\"row property genders\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"venus-mars\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <div>{{ $t('customerSearch.am') }} <strong>{{ gender.toLowerCase() || '...?' }}</strong></div>\r\n          <div>{{ $t('customerSearch.forFriend') }}: <strong>{{ genderPreferences || '&ndash;' }}</strong></div>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <tickcrosswarning v-model=\"matches.genderMatch\" />\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property age\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"id-badge\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <div>{{ $t('customerSearch.am') }} <strong>{{ age || '?' }} {{ $t('customerSearch.years') }}</strong></div>\r\n          <div>{{ $t('customerSearch.forFriend') }}: <strong>{{ agePreferences || '&ndash;' }}</strong></div>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <tickcross v-model=\"matches.ageMatch\" />\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property language\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon :icon=\"['far', 'comment']\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <div>{{ $t('customerSearch.speak') }}: <strong>{{ normalizeTranslation(customer.nativeLanguage) }} ({{ $t('customerSearch.nativeLanguage') }})</strong></div>\r\n          <div v-if=\"spokenLanguages\">\r\n            <strong>{{ spokenLanguages }}</strong>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <tickcross v-model=\"matches.languageMatch\" />\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property interest\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"puzzle-piece\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          {{ $t('customerSearch.interestedIn') }}: <strong>{{ interests || '&ndash;' }}</strong>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property ecomms\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"wifi\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <dl v-if=\"customer.econtactDiscord\" class=\"row\">\r\n            <dt class=\"col-12\">\r\n              {{ $t('connectivity.discord') }}\r\n            </dt>\r\n            <dd class=\"col-12\">\r\n              {{ customer.econtactDiscord }}\r\n            </dd>\r\n          </dl>\r\n          <dl v-if=\"customer.econtactEmail\" class=\"row\">\r\n            <dt class=\"col-12\">\r\n              {{ $t('connectivity.email') }}\r\n            </dt>\r\n            <dd class=\"col-12\">\r\n              {{ customer.econtactEmail }}\r\n            </dd>\r\n          </dl>\r\n          <dl v-if=\"customer.econtactInstagram\" class=\"row\">\r\n            <dt class=\"col-12\">\r\n              {{ $t('connectivity.instagram') }}\r\n            </dt>\r\n            <dd class=\"col-12\">\r\n              {{ customer.econtactInstagram }}\r\n            </dd>\r\n          </dl>\r\n          <dl v-if=\"customer.econtactKik\" class=\"row\">\r\n            <dt class=\"col-12\">\r\n              {{ $t('connectivity.kik') }}\r\n            </dt>\r\n            <dd class=\"col-12\">\r\n              {{ customer.econtactKik }}\r\n            </dd>\r\n          </dl>\r\n          <dl v-if=\"customer.econtactSkype\" class=\"row\">\r\n            <dt class=\"col-12\">\r\n              {{ $t('connectivity.skype') }}\r\n            </dt>\r\n            <dd class=\"col-12\">\r\n              {{ customer.econtactSkype }}\r\n            </dd>\r\n          </dl>\r\n          <dl v-if=\"customer.econtactTelegram\" class=\"row\">\r\n            <dt class=\"col-12\">\r\n              {{ $t('connectivity.telegram') }}\r\n            </dt>\r\n            <dd class=\"col-12\">\r\n              {{ customer.econtactTelegram }}\r\n            </dd>\r\n          </dl>\r\n          <dl v-if=\"customer.econtactFreetext\" class=\"row\">\r\n            <dt class=\"col-12\">\r\n              {{ $t('connectivity.freetext') }}\r\n            </dt>\r\n            <dd class=\"col-12\">\r\n              {{ customer.econtactFreetext }}\r\n            </dd>\r\n          </dl>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"moreinfo\">\r\n      <div class=\"row\">\r\n        <div class=\"col description\">\r\n          <sprcol :heading=\"$t('profile.notes')\">\r\n            <div slot=\"body\">\r\n              <sprprivatenotes v-model=\"customer\" endpoint=\"customerupdateprivatenotesnet\" :friend-management-group-id=\"group.id\" :target-id=\"targetId\" is-customer is-net />\r\n            </div>\r\n          </sprcol>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col contact\">\r\n          <sprcol :heading=\"$t('customerSearch.contactTitle')\">\r\n            <div slot=\"body\">\r\n              <p class=\"smalltext\">\r\n                {{ contactDetails }}\r\n              </p>\r\n            </div>\r\n          </sprcol>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col other\">\r\n          <sprcol :heading=\"$t('customerSearch.otherInfoTitle')\">\r\n            <div slot=\"body\">\r\n              <dl v-if=\"customer.customerApproval\" class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerForm.customerApproval') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ customer.customerApprovedBy }}\r\n                </dd>\r\n              </dl>\r\n              <dl v-if=\"customer.customerInterviewed\" class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerForm.customerInterviewed') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ customer.customerInterviewedBy }}\r\n                </dd>\r\n              </dl>\r\n              <dl v-if=\"customer.customerNotForSpr\" class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerForm.customerNotForSPR') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ customer.customerNotForSprBy }}\r\n                </dd>\r\n              </dl>\r\n              <dl v-if=\"customer.customerNotForPrivateRelations\" class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerForm.customerNotForPrivateRelations') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ customer.customerNotForPrivateRelationsBy }}\r\n                </dd>\r\n              </dl>\r\n              <dl v-if=\"contactPerson\" class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerForm.customerContactPerson') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ contactPerson }}\r\n                </dd>\r\n              </dl>\r\n              <dl v-if=\"customer.otherContact\" class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerForm.customerContactOther') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ customer.otherContact }}\r\n                </dd>\r\n              </dl>\r\n            </div>\r\n          </sprcol>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"isOnHold\" class=\"row\">\r\n        <div class=\"col onhold\">\r\n          <sprcol :heading=\"$t('volunteerForm.onHoldDescription')\">\r\n            <div slot=\"body\">\r\n              <dl class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerSearch.onHoldUntilDate') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ formattedOnHoldUntilDate }}\r\n                </dd>\r\n              </dl>\r\n              <dl class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerSearch.onHoldComment') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ customer.onHoldComment }}\r\n                </dd>\r\n              </dl>\r\n            </div>\r\n          </sprcol>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"showActions || showEditButton\" class=\"row\">\r\n      <div class=\"col buttons\">\r\n        <!-- Actions -->\r\n        <customerActions\r\n          v-model=\"customer\"\r\n          :group=\"group\"\r\n          :loaded=\"loaded\"\r\n          :show-edit-button=\"showEditButton\"\r\n          :show-all-buttons=\"showActions\"\r\n          @saveCustomer=\"saveCustomer\"\r\n          @toggleActivity=\"toggleActivity\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"isSending\" class=\"text-center\">\r\n      <Loading />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import friendicon from './FriendIcon.vue'\r\n  import friendshipicon from './FriendshipIcon.vue'\r\n  import tickcross from '../SPRTickCross.vue'\r\n  import tickcrosswarning from '../SPRTickCrossWarning.vue'\r\n  import sprcol from '../SPRCollapsible.vue'\r\n  import sprprivatenotes from '../SPRPrivateNotes.vue'\r\n  import customerActions from './CustomerActions.vue'\r\n  import Loading from '../SPRLoading.vue'\r\n  import moment from 'moment'\r\n\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import locationhelper from '../../mixins/locationutils.js'\r\n\r\n  import { Validator } from 'vee-validate'\r\n  import validatordateisafter from '../../mixins/validator-dateisafter.js'\r\n  import { CustomerState, FriendManagementDto, FriendCustomerNetDto, LanguageDto, FriendshipState } from '../../types/index'\r\n  import { MatchDataNet } from '@/types/custom'\r\n  import { finnishDateFormat } from '@/helpers/datehelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    loaded: boolean,\r\n    isSending: boolean,\r\n    customer: FriendCustomerNetDto\r\n  }\r\n\r\n  Validator.extend('dateisafter', validatordateisafter)\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerCardNet',\r\n    components: { customerActions, friendicon, friendshipicon, tickcross, tickcrosswarning, sprcol, sprprivatenotes, Loading },\r\n    mixins: [enumhelper, datehelper, locationhelper],\r\n    props: {\r\n      value: {\r\n        type: Object as () => FriendCustomerNetDto, // Customer object\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        default: null\r\n      },\r\n      showMatches: {\r\n        type: Boolean,\r\n        default: () => {\r\n          return false\r\n        }\r\n      },\r\n      showActions: {\r\n        type: Boolean,\r\n        default: () => {\r\n          return true\r\n        }\r\n      },\r\n      showEditButton: {\r\n        type: Boolean,\r\n        default: () => {\r\n          return false\r\n        }\r\n      },\r\n      matches: {\r\n        type: Object as () => MatchDataNet,\r\n        default: () => {\r\n          return {\r\n            genderMatch: 'FAIL',\r\n            ageMatch: false,\r\n            languageMatch: false,\r\n            interestMatch: false\r\n          }\r\n        }\r\n      },\r\n      friendshipStateOverride: {\r\n        type: Number as () => FriendshipState,\r\n        required: false,\r\n        default: undefined\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        customer: this.value,\r\n        loaded: true,\r\n        isSending: false\r\n      }\r\n    },\r\n    computed: {\r\n      isInactive (): boolean {\r\n        return this.value.state === CustomerState.NonActive\r\n      },\r\n      hasMultipleCustomers (): boolean {\r\n        return !!this.value?.multipleVolunteers\r\n      },\r\n      isOnHold (): boolean {\r\n        return this.value.state === CustomerState.OnHold\r\n      },\r\n      gender (): string | LocaleMessage {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getGenderTranslation(this.customer.gender)\r\n      },\r\n      formattedOnHoldUntilDate (): string {\r\n        if (this.customer.onHoldUntilDate) {\r\n          const date = this.customer.onHoldUntilDate\r\n          const formattedDate = moment(date).format('DD.MM.YYYY')\r\n\r\n          return formattedDate\r\n        } else {\r\n          return ''\r\n        }\r\n      },\r\n      age (): number {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.calculateAge(this.customer.birthdate)\r\n      },\r\n      genderAgeText (): string | LocaleMessage {\r\n        return [this.gender, this.age ? `${this.age} ${this.$t('customerSearch.years')}` : ''].filter(Boolean).join(', ')\r\n      },\r\n      customerType (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getNetCustomerTypesMaskTranslation(this.customer.customerTypes)\r\n      },\r\n      address (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.formatAddress(this.customer.streetAddress, this.customer.zipCode, this.customer.city)\r\n      },\r\n      zipCode (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.customer.zipCode\r\n      },\r\n      genderPreferences (): string | LocaleMessage {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getGenderPreferencesMaskTranslation(this.customer.preferredGenders)\r\n      },\r\n      agePreferences (): string | LocaleMessage {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getAgePreferencesMaskTranslation(this.customer.preferredAges)\r\n      },\r\n      spokenLanguages (): string {\r\n        var self = this\r\n        var languages = [] as string[]\r\n        _.forEach(this.customer.customerLanguages, (item: LanguageDto) => {\r\n          if (item.isoCode !== self.customer.nativeLanguage) {\r\n            // @ts-ignore - ts intellisense not finding mixins\r\n            languages.push(self.normalizeTranslation(item.isoCode))\r\n          }\r\n        })\r\n        languages.push(this.customer.otherLanguages)\r\n        return languages.filter(Boolean).join(', ')\r\n      },\r\n      interests (): string {\r\n        var self = this\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        var interests = this.getInterestsMaskTranslation(self.customer.interests)\r\n        if (this.customer.interestOther) {\r\n          interests += `, ${this.customer.interestOther}`\r\n        }\r\n        return interests\r\n      },\r\n      contactDetails (): string {\r\n        var phone = [this.customer.gsmPhone, this.customer.homePhone].filter(Boolean).join(' / ')\r\n        var phoneText = phone ? `${this.$t('customerSearch.telAbbreviation')} ${phone}` : ''\r\n        var email = this.customer.email ? `${this.$t('customerSearch.emailAbbreviation')}: ${this.customer.email}` : ''\r\n        return [phoneText, email].filter(Boolean).join(' | ')\r\n      },\r\n      contactPerson (): string {\r\n        var contactName = [this.customer.contactFirstName, this.customer.contactLastName].filter(Boolean).join(' ')\r\n        var contactPhone = this.customer.contactPhonenumber ? `${this.$t('customerSearch.telAbbreviation')} ${this.customer.contactPhonenumber}` : ''\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        var contactAddress = this.formatAddress(this.customer.contactStreetAddress, this.customer.contactZipCode, this.customer.contactCity)\r\n        return [this.customer.contactRelation,\r\n                contactName,\r\n                this.customer.contactEmail,\r\n                contactPhone,\r\n                contactAddress].filter(Boolean).join(' | ')\r\n      },\r\n      showEnable (): boolean {\r\n        return this.customer.state === CustomerState.NonActive\r\n      },\r\n      showDisable (): boolean {\r\n        return _.includes([CustomerState.PendingApproval, CustomerState.Active, CustomerState.OnHold], this.customer.state)\r\n      },\r\n      targetId (): number {\r\n        return this.value.id\r\n      }\r\n    },\r\n    watch: {\r\n      value (newVal) {\r\n        this.customer = newVal\r\n      }\r\n    },\r\n    methods: {\r\n      lastContacted(lastContactedDate: Date | undefined): string {\r\n        if (!lastContactedDate) {\r\n          return `${this.$t('customerSearch.neverContacted')}`\r\n        }\r\n        // @ts-ignore (no mixins found)\r\n        return `${this.$t('customerSearch.lastContacted')} ${finnishDateFormat(lastContactedDate)}`\r\n\r\n      },\r\n      updateRemoteCustomer (): void {\r\n        var self = this\r\n        self.isSending = true\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customerupdatenet[0]}`\r\n        this.$http.put(url, this.customer).then(response => {\r\n          if (response.ok) {\r\n            self.isSending = false\r\n            this.notifyRefresh()\r\n          }\r\n        }, response => {\r\n          // @ts-ignore - mixins not picked up\r\n          this.showAlertError(`${this.$t('common.saveFailed')}`)\r\n          console.log('Error saving customer state')\r\n        })\r\n      },\r\n      daysWithoutFriend (lastFriendshipDate): string {\r\n        if (!lastFriendshipDate) {\r\n          return `${this.$t('customerSearch.neverHadFriend')}`\r\n        }\r\n        // @ts-ignore (no mixins found)\r\n        return `${this.calculateDayDiff(lastFriendshipDate)} ${this.$t('customerSearch.daysWithoutFriend')}`\r\n      },\r\n      saveCustomer (): void {\r\n        this.updateRemoteCustomer()\r\n      },\r\n      notifyRefresh (): void {\r\n        this.$emit('refresh')\r\n      },\r\n      toggleActivity (): void {\r\n        var uri = this.$store.state.apiBases.friendservice\r\n        if (this.customer.state === CustomerState.NonActive) {\r\n          uri += this.$store.state.apiEndpoints.markactivecustomernet[0]\r\n        } else {\r\n          uri += this.$store.state.apiEndpoints.markinactivecustomernet[0]\r\n        }\r\n\r\n        uri = uri\r\n          .replace('{customerid}', this.customer.id)\r\n          .replace('{groupid}', this.group.id)\r\n\r\n        const self = this\r\n\r\n        this.$http.post(uri).then(() => {\r\n          this.notifyRefresh()\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customercardnet {\r\n    margin-bottom: 30px;\r\n\r\n    .usericons {\r\n        display: inline-block;\r\n        margin-left: 5px;\r\n        color: $brand-red;\r\n      }\r\n\r\n    .topsection {\r\n      min-height: 120px;\r\n      .circle {\r\n        float: left;\r\n        margin-top:20px;\r\n      }\r\n      \r\n      .contacted {\r\n        text-align: center;\r\n        font-size: 13px;\r\n        margin-top: 15px;\r\n      }\r\n\r\n      .details {\r\n        margin-left:70px;\r\n\r\n        .name {\r\n          text-transform: uppercase;\r\n          color: $brand-red;\r\n          font-weight: bold;\r\n          position: relative;\r\n          .edit {\r\n            position: absolute;\r\n            left:-15px;\r\n            text-decoration: none;\r\n            color:$brand-red;\r\n          }\r\n        }\r\n\r\n        .personal {\r\n          font-size: 0.8em;\r\n          font-weight:bold;\r\n          .short-description {\r\n            font-weight:normal;\r\n            color:$brand-red;\r\n            font-style: italic;\r\n            margin-top: 10px;\r\n            position:relative;\r\n            span {\r\n              padding: 0 5px;\r\n            }\r\n            svg {\r\n              font-size:12px;\r\n              display:inline-block;\r\n            }\r\n          }\r\n        }\r\n      }\r\n      .nofriend {\r\n        text-align: center;\r\n        font-size: 13px;\r\n        margin-top: 15px;\r\n      }\r\n    }\r\n\r\n    .properties {\r\n      clear: both;\r\n      margin-top: 10px;\r\n      margin-bottom: 30px;\r\n\r\n      .property {\r\n        display: flex;\r\n        flex-flow: row nowrap;\r\n        justify-content: space-between;\r\n        align-items: center;\r\n\r\n        min-height: 55px;\r\n        margin: 0;\r\n        border-bottom: solid 1px $brand-grey3;\r\n        padding: 5px 0;\r\n\r\n        .icon {\r\n          flex: 0 0 40px;\r\n          text-align: center;\r\n\r\n          font-size: 2em;\r\n          color:$brand-red;\r\n        }\r\n        //IE11\r\n        *::-ms-backdrop, .icon { margin-top: 15px; }\r\n\r\n        .content {\r\n          margin-left: 10px;\r\n          flex: auto;\r\n\r\n          font-size: 0.8em;\r\n          dl {\r\n            margin-bottom: 0;\r\n            dt {\r\n              font-size: 1em;\r\n            }\r\n          }\r\n        }\r\n\r\n        .match {\r\n          flex: 0 0 40px;\r\n          text-align: right;\r\n\r\n          font-size: 1.5em;\r\n        }\r\n      }\r\n    }\r\n\r\n    button {\r\n      margin-bottom: 15px;\r\n      &.button-disabled {\r\n        border-color: $brand-grey4;\r\n        color: $brand-grey4;\r\n        cursor: not-allowed;\r\n        outline: none;\r\n        &:hover {\r\n          background-color:$brand-white;\r\n        }\r\n      }\r\n    }\r\n\r\n    .moreinfo {\r\n      .description,\r\n      .contact,\r\n      .other {\r\n        margin-bottom: 20px;\r\n      }\r\n      dl {\r\n        margin-bottom: 0;\r\n        font-size: 0.8em;\r\n        dt {\r\n          font-size: 1em;\r\n        }\r\n      }\r\n    }\r\n\r\n    .edit-customer,\r\n    .enable-customer,\r\n    .disable-customer,\r\n    .onhold-customer,\r\n    .onholdinfo {\r\n      text-align: center;\r\n      margin-top: 15px;\r\n    }\r\n\r\n    .onholdinfo {\r\n      text-align:left;\r\n\r\n      .holddate {\r\n        margin-bottom:15px;\r\n      }\r\n\r\n      a {\r\n        margin-top:14px;\r\n        display:block;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerCardNet.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerCardNet.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerCardNet.vue?vue&type=template&id=b0d102d6\"\nimport script from \"./CustomerCardNet.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerCardNet.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerCardNet.vue?vue&type=style&index=0&id=b0d102d6&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row customermatchstatus\"},[(_vm.canAddNewMatch)?_c('div',{staticClass:\"col-12 addnew text-center\"},[_c('sprbutton',{attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('customerSearch.newMatch'),\"click-event\":\"new\"},on:{\"new\":_vm.onNewMatch}})],1):_vm._e(),(!_vm.hasCustomer)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"no-volunteers\"},[_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.noMatches')))])])]):_c('div',{staticClass:\"col-12\"},[_c('ul',{staticClass:\"customer-list\"},_vm._l((_vm.customer.friendships),function(item){return _c('li',{key:item.id,class:{ 'starthidden fadein': _vm.isHighlightedItem(item.volunteerId) }},[_c('customermatchdetail',{attrs:{\"friendship\":item,\"group\":_vm.group},on:{\"selectFriendship\":_vm.onSelectFriendship}})],1)}),0)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row customermatchdetail\"},[_c('div',{staticClass:\"col-6\"},[_c('div',{staticClass:\"img\"},[_c('friendshipicon',{attrs:{\"friendname\":_vm.friendship.volunteer.firstName,\"state\":_vm.friendship.friendshipState}})],1),_c('div',{staticClass:\"summary\"},[_c('div',{staticClass:\"volunteername\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.selectVolunteer}},[_vm._v(_vm._s(_vm.friendship.volunteer.firstName)+\" \"+_vm._s(_vm.friendship.volunteer.lastName))]),(_vm.isNetFriendship)?_c('span',{staticClass:\"icon\",attrs:{\"title\":_vm.$t('customerSearch.netFriendship')}},[_c('font-awesome-icon',{attrs:{\"icon\":\"tv\"}})],1):_c('span',{staticClass:\"icon\",attrs:{\"title\":_vm.$t('friendshipTypes.oneToOne')}},[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'handshake']}})],1)]),_c('span',{},[_vm._v(_vm._s(_vm.genderAgeText))]),_c('div',{},[_vm._v(\" \"+_vm._s(_vm.section)+\" \")])])]),_c('div',{staticClass:\"col-6 contact\"},[_c('div',{},[_vm._v(\" \"+_vm._s(_vm.customerState)+\" \")]),_c('div',{},[_vm._v(\" \"+_vm._s(_vm.startedDate)+\" \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row customermatchdetail\">\r\n    <div class=\"col-6\">\r\n      <div class=\"img\">\r\n        <friendshipicon :friendname=\"friendship.volunteer.firstName\" :state=\"friendship.friendshipState\" />\r\n      </div>\r\n      <div class=\"summary\">\r\n        <div class=\"volunteername\">\r\n          <a href=\"javascript:void(0)\" @click=\"selectVolunteer\">{{ friendship.volunteer.firstName }} {{ friendship.volunteer.lastName }}</a>\r\n          <span v-if=\"isNetFriendship\" class=\"icon\" :title=\"$t('customerSearch.netFriendship')\">\r\n            <font-awesome-icon icon=\"tv\" />\r\n          </span>\r\n          <span v-else class=\"icon\" :title=\"$t('friendshipTypes.oneToOne')\">\r\n            <font-awesome-icon :icon=\"['far', 'handshake']\" />\r\n          </span>\r\n        </div>\r\n        <span class=\"\">{{ genderAgeText }}</span>\r\n        <div class=\"\">\r\n          {{ section }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"col-6 contact\">\r\n      <div class=\"\">\r\n        {{ customerState }}\r\n      </div>\r\n      <div class=\"\">\r\n        {{ startedDate }}\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import friendshipicon from './FriendshipIcon.vue'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import moment from 'moment'\r\n  import { FriendshipStandardDto, FriendshipNetDto, FriendManagementDto } from '@/types'\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerMatchDetail',\r\n    components: { friendshipicon },\r\n    mixins: [enumhelper, datehelper],\r\n    props: {\r\n      friendship: {\r\n        type: Object as () => FriendshipNetDto | FriendshipStandardDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      computedGender (): LocaleMessage | string {\r\n        // @ts-ignore Cannot find mixins\r\n        return this.getGenderTranslation(this.friendship.volunteer.gender)\r\n      },\r\n      computedAge (): number {\r\n        // @ts-ignore Cannot find mixins\r\n        return this.calculateAge(this.friendship.volunteer.birthDate)\r\n      },\r\n      genderAgeText (): LocaleMessage | string {\r\n        return [this.computedGender, this.computedAge ? `${this.computedAge} ${this.$t('customerSearch.years')}` : ''].filter(Boolean).join(', ')\r\n      },\r\n      section (): string {\r\n        var section = _.find(this.$store.state.sections, (s) => {\r\n          return s.id === this.friendship.volunteer.sectionId\r\n        })\r\n\r\n        return section ? section.name : ''\r\n      },\r\n      customerState (): LocaleMessage | string {\r\n        // @ts-ignore Cannot find mixins\r\n        return this.getCustomerStatesTranslation(this.friendship.volunteer.state)\r\n      },\r\n      startedDate (): string {\r\n        return moment(this.friendship.started).format('D.M.YYYY')\r\n      },\r\n      isNetFriendship (): boolean {\r\n        return this.group.netFriendship\r\n      }\r\n    },\r\n    methods: {\r\n      selectVolunteer (): void {\r\n        this.$emit('selectFriendship', this.friendship)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .customermatchdetail {\r\n    display: flex;\r\n    align-items: center;\r\n    background-color: $brand-white;\r\n    border-left: solid 5px $volunteer-color-strong;\r\n    padding: 10px 0;\r\n    .img {\r\n      margin-right:5px;\r\n      display: inline-block;\r\n      vertical-align: top;\r\n      margin-top: 5px;\r\n    }\r\n    .summary {\r\n      font-size: 13px;\r\n      display: inline-block;\r\n\r\n      .volunteername {\r\n        font-weight: bold;\r\n        text-transform: uppercase;\r\n      }\r\n\r\n      .icon {\r\n        color: $brand-red;\r\n        margin-left: 5px;\r\n      }\r\n    }\r\n\r\n    .contact {\r\n      font-size: 13px;\r\n      display: inline-block;\r\n      text-align: right;\r\n      width: 100%;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchDetail.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchDetail.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerMatchDetail.vue?vue&type=template&id=ed59b97c\"\nimport script from \"./CustomerMatchDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerMatchDetail.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerMatchDetail.vue?vue&type=style&index=0&id=ed59b97c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"row customermatchstatus\">\r\n    <div\r\n      v-if=\"canAddNewMatch\"\r\n      class=\"col-12 addnew text-center\"\r\n    >\r\n      <sprbutton type=\"primary\"\r\n                 :size=\"4\"\r\n                 :title=\"$t('customerSearch.newMatch')\"\r\n                 click-event=\"new\"\r\n                 @new=\"onNewMatch\"\r\n      />\r\n    </div>\r\n    <div v-if=\"!hasCustomer\" class=\"col-12\">\r\n      <div class=\"no-volunteers\">\r\n        <div>{{ $t('customerSearch.noMatches') }}</div>\r\n      </div>\r\n    </div>\r\n    <div v-else class=\"col-12\">\r\n      <ul class=\"customer-list\">\r\n        <li v-for=\"item in customer.friendships\" :key=\"item.id\" :class=\"{ 'starthidden fadein': isHighlightedItem(item.volunteerId) }\">\r\n          <customermatchdetail :friendship=\"item\" :group=\"group\" @selectFriendship=\"onSelectFriendship\" />\r\n        </li>\r\n      </ul>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import customermatchdetail from './CustomerMatchDetail.vue'\r\n  import { FriendCustomerStandardDto, FriendCustomerNetDto, FriendManagementDto } from '@/types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerMatchStatus',\r\n    components: { sprbutton, customermatchdetail },\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto | FriendCustomerNetDto | undefined,\r\n        default: null\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        default: ''\r\n      },\r\n      highlightedvolunteerid: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    computed: {\r\n      hasCustomer (): boolean {\r\n        return Boolean(this.customer && this.customer.friendships?.length)\r\n      },\r\n      canAddNewMatch (): boolean {\r\n        return !this.hasCustomer || Boolean(this.customer?.multipleVolunteers)\r\n      }\r\n    },\r\n    methods: {\r\n      onNewMatch (): void {\r\n        this.$emit('addNewMatch')\r\n      },\r\n      onSelectFriendship (friendship): void {\r\n        this.$emit('volunteerMatchSelected', friendship)\r\n      },\r\n      isHighlightedItem (id): boolean {\r\n        return Boolean(this.highlightedvolunteerid && Number(this.highlightedvolunteerid) === Number(id))\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .customermatchstatus {\r\n    margin-bottom: 30px;\r\n    .addnew {\r\n      margin-bottom: 20px;\r\n    }\r\n    .inactive {\r\n      text-align: center;\r\n      padding: 15px 5px 30px 5px;\r\n    }\r\n    .no-volunteers {\r\n      text-align: center;\r\n    }\r\n\r\n    .customer-list {\r\n      list-style-type: none;\r\n      padding: 15px;\r\n\r\n      li {\r\n        padding: 10px 0 0 0;\r\n\r\n        &.fadein {\r\n          -webkit-animation: fadein 2s; /* Safari, Chrome and Opera > 12.1 */\r\n          -moz-animation: fadein 2s; /* Firefox < 16 */\r\n          -ms-animation: fadein 2s; /* Internet Explorer */\r\n          -o-animation: fadein 2s; /* Opera < 12.1 */\r\n          animation: fadein 2s;\r\n        }\r\n\r\n        @keyframes fadein {\r\n            from { opacity: 0; }\r\n            to   { opacity: 1; }\r\n        }\r\n\r\n        /* Firefox < 16 */\r\n        @-moz-keyframes fadein {\r\n            from { opacity: 0; }\r\n            to   { opacity: 1; }\r\n        }\r\n\r\n        /* Safari, Chrome and Opera > 12.1 */\r\n        @-webkit-keyframes fadein {\r\n            from { opacity: 0; }\r\n            to   { opacity: 1; }\r\n        }\r\n\r\n        /* Internet Explorer */\r\n        @-ms-keyframes fadein {\r\n            from { opacity: 0; }\r\n            to   { opacity: 1; }\r\n        }\r\n\r\n        /* Opera < 12.1 */\r\n        @-o-keyframes fadein {\r\n            from { opacity: 0; }\r\n            to   { opacity: 1; }\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchStatus.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchStatus.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerMatchStatus.vue?vue&type=template&id=3678158e\"\nimport script from \"./CustomerMatchStatus.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerMatchStatus.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerMatchStatus.vue?vue&type=style&index=0&id=3678158e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"customerpoolsstandard\"},[(!_vm.showPoolChooser)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 poolbuttons\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.addCustomerToPool'),\"click-event\":\"add\"},on:{\"add\":_vm.onAdd}})],1)]):_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 poolbuttons\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.cancelAddToPool'),\"click-event\":\"cancelAdd\"},on:{\"cancelAdd\":_vm.onCancelAdd}})],1),_c('div',{staticClass:\"col-12\"},[_c('PoolChooserStandard',{attrs:{\"friend-management-group\":_vm.group,\"selected-pools\":_vm.pools},on:{\"poolchosen\":_vm.onPoolChosen}})],1)]),_c('div',{staticClass:\"row\"},[(_vm.pools && _vm.pools.length)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('customerSearch.existingPools')))])])]),_vm._l((_vm.pools),function(pool){return _c('poolview',{key:pool.id,attrs:{\"pool\":pool,\"groupid\":_vm.group.id,\"action-view\":\"remove\"},on:{\"remove\":_vm.onRemove}})})],2):_vm._e(),((!_vm.pools || !_vm.pools.length) && !_vm.showPoolChooser)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"text-center nopools\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.customerNoPools'))+\" \")])]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"poolchooserstandard\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_vm._l((_vm.pools),function(pool){return _c('poolview',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading),expression:\"!loading\"}],key:pool.id,attrs:{\"pool\":pool,\"groupid\":_vm.friendManagementGroup.id,\"action-view\":\"join\"},on:{\"join\":_vm.onJoin}})}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])],2),(!_vm.pools || !_vm.pools.length)?_c('div',{staticClass:\"col-12 text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.noPoolsAvailable'))+\" \")]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .poolchooserstandard {\r\n    .loading {\r\n      text-align: center;\r\n    }\r\n  }\r\n\r\n</style>\r\n\r\n<template>\r\n  <div class=\"poolchooserstandard\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <poolview\r\n          v-for=\"pool in pools\"\r\n          v-show=\"!loading\"\r\n          :key=\"pool.id\"\r\n          :pool=\"pool\"\r\n          :groupid=\"friendManagementGroup.id\"\r\n          action-view=\"join\"\r\n          @join=\"onJoin\"\r\n        />\r\n        <div v-show=\"loading\" class=\"loading\">\r\n          <div class=\"spinner\">\r\n            <loading />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"!pools || !pools.length\" class=\"col-12 text-center\">\r\n        {{ $t('customerSearch.noPoolsAvailable') }}\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import poolview from './PoolView.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { FriendManagementDto, FriendPoolFindStandardDto } from '@/types'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    loading: boolean,\r\n    pools: Array<FriendPoolFindStandardDto>\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'PoolChooserStandard',\r\n    components: { poolview, loading },\r\n    props: {\r\n      selectedPools: {\r\n        type: Array as () => Array<FriendPoolFindStandardDto>,\r\n        default: () => []\r\n      },\r\n      friendManagementGroup: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        loading: false,\r\n        pools: []\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.getPools()\r\n    },\r\n    methods: {\r\n      getPools (): void {\r\n        this.loading = true\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.getfriendmanagementpoolsstandard[0].replace('{fmgid}', this.friendManagementGroup.id)\r\n        this.$http.get(url).then(resp => {\r\n          this.pools = _.filter(resp.data, (pool) => {\r\n            return pool.status === 1 && // Only active\r\n              !this.isMember(pool) // not a member of this pool already\r\n          })\r\n          this.loading = false\r\n        })\r\n      },\r\n      isMember (pool): boolean {\r\n        // is the member in the selected Pool already?\r\n        return _.includes(\r\n          _.map(this.selectedPools, (pool) => {\r\n            return pool.id\r\n          })\r\n          , pool.id)\r\n      },\r\n      onJoin (pool): void {\r\n        this.$emit('poolchosen', pool)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolChooserStandard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolChooserStandard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PoolChooserStandard.vue?vue&type=template&id=740b8bdc\"\nimport script from \"./PoolChooserStandard.vue?vue&type=script&lang=ts\"\nexport * from \"./PoolChooserStandard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PoolChooserStandard.vue?vue&type=style&index=0&id=740b8bdc&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"customerpoolsstandard\">\r\n    <div v-if=\"!showPoolChooser\" class=\"row\">\r\n      <div class=\"col-12 poolbuttons\">\r\n        <sprbutton :size=\"4\"\r\n                   :title=\"$t('customerSearch.addCustomerToPool')\"\r\n                   click-event=\"add\"\r\n                   @add=\"onAdd\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-else class=\"row\">\r\n      <div class=\"col-12 poolbuttons\">\r\n        <sprbutton :size=\"4\"\r\n                   :title=\"$t('customerSearch.cancelAddToPool')\"\r\n                   click-event=\"cancelAdd\"\r\n                   @cancelAdd=\"onCancelAdd\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <PoolChooserStandard\r\n          :friend-management-group=\"group\"\r\n          :selected-pools=\"pools\"\r\n          @poolchosen=\"onPoolChosen\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div v-if=\"pools && pools.length\" class=\"col-12\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <h5>{{ $t('customerSearch.existingPools') }}</h5>\r\n          </div>\r\n        </div>\r\n        <poolview\r\n          v-for=\"pool in pools\"\r\n          :key=\"pool.id\"\r\n          :pool=\"pool\"\r\n          :groupid=\"group.id\"\r\n          action-view=\"remove\"\r\n          @remove=\"onRemove\"\r\n        />\r\n      </div>\r\n      <div v-if=\"(!pools || !pools.length) && !showPoolChooser\" class=\"col-12\">\r\n        <div class=\"text-center nopools\">\r\n          {{ $t('customerSearch.customerNoPools') }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import poolview from './PoolView.vue'\r\n  import PoolChooserStandard from './PoolChooserStandard.vue'\r\n  import { FriendCustomerStandardDto, FriendManagementDto, FriendPoolFindStandardDto } from '@/types'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    showPoolChooser: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerPoolsStandard',\r\n    components: { sprbutton, poolview, PoolChooserStandard },\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      isActive: {\r\n        type: Boolean,\r\n        default: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        showPoolChooser: false\r\n      }\r\n    },\r\n    computed: {\r\n      pools (): Array<FriendPoolFindStandardDto> {\r\n        return this.customer?.friendPools ?? []\r\n      }\r\n    },\r\n    methods: {\r\n      onPoolChosen (pool) {\r\n        const url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.addcustomertopoolstandard[0].replace('{poolid}', pool.id).replace('{customerid}', this.customer.id)\r\n        var self = this\r\n        this.$http.post(url).then(resp => {\r\n          this.showPoolChooser = false\r\n          this.$emit('poolsupdated', pool)\r\n        }, err => this.displayError(err))\r\n      },\r\n      onAdd () {\r\n        this.showPoolChooser = true\r\n      },\r\n      onCancelAdd () {\r\n        this.showPoolChooser = false\r\n      },\r\n      onRemove (pool) {\r\n        const url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.removecustomerfrompoolstandard[0].replace('{poolid}', pool.id).replace('{customerid}', this.customer.id)\r\n        var self = this\r\n        this.$http.delete(url).then(resp => {\r\n          this.$emit('poolsupdated', pool)\r\n        }, err => this.displayError(err))\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customerpoolsstandard {\r\n    .poolbuttons {\r\n      text-align: center;\r\n      margin-top: 10px;\r\n      margin-bottom: 20px;\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerPoolsStandard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerPoolsStandard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerPoolsStandard.vue?vue&type=template&id=9fb80df4\"\nimport script from \"./CustomerPoolsStandard.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerPoolsStandard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerPoolsStandard.vue?vue&type=style&index=0&id=9fb80df4&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"customerpoolsnet\"},[(!_vm.showPoolChooser)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 poolbuttons\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.addCustomerToPool'),\"click-event\":\"add\"},on:{\"add\":_vm.onAdd}})],1)]):_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 poolbuttons\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.cancelAddToPool'),\"click-event\":\"cancelAdd\"},on:{\"cancelAdd\":_vm.onCancelAdd}})],1),_c('div',{staticClass:\"col-12\"},[_c('PoolChooserNet',{attrs:{\"friend-management-group\":_vm.group,\"selected-pools\":_vm.pools},on:{\"poolchosen\":_vm.onPoolChosen}})],1)]),_c('div',{staticClass:\"row\"},[(_vm.pools && _vm.pools.length)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('customerSearch.existingPools')))])])]),_vm._l((_vm.pools),function(pool){return _c('poolview',{key:pool.id,attrs:{\"pool\":pool,\"groupid\":_vm.group.id,\"action-view\":\"remove\"},on:{\"remove\":_vm.onRemove}})})],2):_vm._e(),((!_vm.pools || !_vm.pools.length) && !_vm.showPoolChooser)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"text-center nopools\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.customerNoPools'))+\" \")])]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"poolchoosernet\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_vm._l((_vm.pools),function(pool){return _c('poolview',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading),expression:\"!loading\"}],key:pool.id,attrs:{\"pool\":pool,\"groupid\":_vm.friendManagementGroup.id,\"action-view\":\"join\"},on:{\"join\":_vm.onJoin}})}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])],2),(!_vm.pools || !_vm.pools.length)?_c('div',{staticClass:\"col-12 text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.noPoolsAvailable'))+\" \")]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .poolchoosernet {\r\n    .loading {\r\n      text-align: center;\r\n    }\r\n  }\r\n\r\n</style>\r\n\r\n<template>\r\n  <div class=\"poolchoosernet\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <poolview\r\n          v-for=\"pool in pools\"\r\n          v-show=\"!loading\"\r\n          :key=\"pool.id\"\r\n          :pool=\"pool\"\r\n          :groupid=\"friendManagementGroup.id\"\r\n          action-view=\"join\"\r\n          @join=\"onJoin\"\r\n        />\r\n        <div v-show=\"loading\" class=\"loading\">\r\n          <div class=\"spinner\">\r\n            <loading />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"!pools || !pools.length\" class=\"col-12 text-center\">\r\n        {{ $t('customerSearch.noPoolsAvailable') }}\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import poolview from './PoolView.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { FriendManagementDto, FriendPoolFindNetDto } from '@/types'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    loading: boolean,\r\n    pools: Array<FriendPoolFindNetDto>\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'PoolChooserNet',\r\n    components: { poolview, loading },\r\n    props: {\r\n      selectedPools: {\r\n        type: Array as () => Array<FriendPoolFindNetDto>,\r\n        default: () => []\r\n      },\r\n      friendManagementGroup: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        loading: false,\r\n        pools: []\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.getPools()\r\n    },\r\n    methods: {\r\n      getPools (): void {\r\n        this.loading = true\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.getfriendmanagementpoolsnet[0].replace('{fmgid}', this.friendManagementGroup.id)\r\n        this.$http.get(url).then(resp => {\r\n          this.pools = _.filter(resp.data, (pool) => {\r\n            return pool.status === 1 && // Only active\r\n              !this.isMember(pool) // not a member of this pool already\r\n          })\r\n          this.loading = false\r\n        })\r\n      },\r\n      isMember (pool): boolean {\r\n        // is the member in the selected Pool already?\r\n        return _.includes(\r\n          _.map(this.selectedPools, (pool) => {\r\n            return pool.id\r\n          })\r\n          , pool.id)\r\n      },\r\n      onJoin (pool): void {\r\n        this.$emit('poolchosen', pool)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolChooserNet.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolChooserNet.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PoolChooserNet.vue?vue&type=template&id=24d5d5a8\"\nimport script from \"./PoolChooserNet.vue?vue&type=script&lang=ts\"\nexport * from \"./PoolChooserNet.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PoolChooserNet.vue?vue&type=style&index=0&id=24d5d5a8&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"customerpoolsnet\">\r\n    <div v-if=\"!showPoolChooser\" class=\"row\">\r\n      <div class=\"col-12 poolbuttons\">\r\n        <sprbutton :size=\"4\"\r\n                   :title=\"$t('customerSearch.addCustomerToPool')\"\r\n                   click-event=\"add\"\r\n                   @add=\"onAdd\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-else class=\"row\">\r\n      <div class=\"col-12 poolbuttons\">\r\n        <sprbutton :size=\"4\"\r\n                   :title=\"$t('customerSearch.cancelAddToPool')\"\r\n                   click-event=\"cancelAdd\"\r\n                   @cancelAdd=\"onCancelAdd\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <PoolChooserNet\r\n          :friend-management-group=\"group\"\r\n          :selected-pools=\"pools\"\r\n          @poolchosen=\"onPoolChosen\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div v-if=\"pools && pools.length\" class=\"col-12\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <h5>{{ $t('customerSearch.existingPools') }}</h5>\r\n          </div>\r\n        </div>\r\n        <poolview\r\n          v-for=\"pool in pools\"\r\n          :key=\"pool.id\"\r\n          :pool=\"pool\"\r\n          :groupid=\"group.id\"\r\n          action-view=\"remove\"\r\n          @remove=\"onRemove\"\r\n        />\r\n      </div>\r\n      <div v-if=\"(!pools || !pools.length) && !showPoolChooser\" class=\"col-12\">\r\n        <div class=\"text-center nopools\">\r\n          {{ $t('customerSearch.customerNoPools') }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import poolview from './PoolView.vue'\r\n  import PoolChooserNet from './PoolChooserNet.vue'\r\n  import { FriendCustomerNetDto, FriendManagementDto, FriendPoolFindNetDto } from '@/types'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    showPoolChooser: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerPoolsNet',\r\n    components: { sprbutton, poolview, PoolChooserNet },\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerNetDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      isActive: {\r\n        type: Boolean,\r\n        default: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        showPoolChooser: false\r\n      }\r\n    },\r\n    computed: {\r\n      pools (): Array<FriendPoolFindNetDto> {\r\n        return this.customer.friendPools ?? []\r\n      }\r\n    },\r\n    methods: {\r\n      onPoolChosen (pool) {\r\n        const url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.addcustomertopoolnet[0].replace('{poolid}', pool.id).replace('{customerid}', this.customer.id)\r\n        var self = this\r\n        this.$http.post(url).then(resp => {\r\n          this.showPoolChooser = false\r\n          this.$emit('poolsupdated', pool)\r\n        }, err => this.displayError(err))\r\n      },\r\n      onAdd () {\r\n        this.showPoolChooser = true\r\n      },\r\n      onCancelAdd () {\r\n        this.showPoolChooser = false\r\n      },\r\n      onRemove (pool) {\r\n        const url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.removecustomerfrompoolnet[0].replace('{poolid}', pool.id).replace('{customerid}', this.customer.id)\r\n        var self = this\r\n        this.$http.delete(url).then(resp => {\r\n          this.$emit('poolsupdated', pool)\r\n        }, err => this.displayError(err))\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customerpoolsnet {\r\n    .poolbuttons {\r\n      text-align: center;\r\n      margin-top: 10px;\r\n      margin-bottom: 20px;\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerPoolsNet.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerPoolsNet.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerPoolsNet.vue?vue&type=template&id=eb3b07a2\"\nimport script from \"./CustomerPoolsNet.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerPoolsNet.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerPoolsNet.vue?vue&type=style&index=0&id=eb3b07a2&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container move-to-fmg-form\"},[(_vm.showConfirmation)?_c('div',{staticClass:\"modal-level2\"},[_c('div',{staticClass:\"modal-content-level2\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('moveFMGForm.confirmationMessage'))+\" \")]),_c('SPRButton',{staticClass:\"spr-shadow margintop20\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('moveFMGForm.confirmationYes'),\"click-event\":\"confirmMove\"},on:{\"confirmMove\":_vm.confirmMove}}),_c('SPRButton',{staticClass:\"spr-shadow margintop20\",attrs:{\"size\":1,\"title\":_vm.$t('moveFMGForm.confirmationNo'),\"click-event\":\"cancelMove\"},on:{\"cancelMove\":_vm.cancelMove}})],1)]):_vm._e(),_c('h2',[_vm._v(_vm._s(_vm.$t('moveFMGForm.title')))]),_c('div',{staticClass:\"dropdown\"},[_c('sprautocomplete',{attrs:{\"options\":_vm.friendManagementGroups,\"placeholder\":_vm.$t('moveFMGForm.placeholder')},model:{value:(_vm.selectedGroup),callback:function ($$v) {_vm.selectedGroup=$$v},expression:\"selectedGroup\"}})],1),_c('SPRButton',{staticClass:\"spr-shadow margintop20\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('moveFMGForm.cancel'),\"click-event\":\"cancel\"},on:{\"cancel\":_vm.cancel}}),_c('SPRButton',{staticClass:\"spr-shadow margintop20\",attrs:{\"size\":1,\"title\":_vm.$t('moveFMGForm.save'),\"click-event\":\"save\",\"disabled\":!_vm.isGroupSelected},on:{\"save\":_vm.save}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"autocomplete-dropdown\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchText),expression:\"searchText\"}],staticClass:\"search-input\",attrs:{\"type\":\"text\",\"placeholder\":_vm.placeholder},domProps:{\"value\":(_vm.searchText)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.searchText=$event.target.value},_vm.filterOptions],\"click\":_vm.toggleDropdown,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"]))return null;$event.preventDefault();return _vm.movePointerDown.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"]))return null;$event.preventDefault();return _vm.movePointerUp.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.preventDefault();return _vm.selectOption.apply(null, arguments)}],\"blur\":_vm.closeDropdown}}),(_vm.dropdownOpen)?_c('ul',{staticClass:\"dropdown\"},_vm._l((_vm.filteredOptions),function(option,index){return _c('li',{key:option.key,class:{ highlighted: option === _vm.hoveredItem },on:{\"mouseenter\":function($event){_vm.hoveredItem = option},\"mouseleave\":function($event){_vm.hoveredItem = null},\"mousedown\":function($event){$event.preventDefault();return _vm.selectOption(index)}}},[_vm._v(\" \"+_vm._s(option.value)+\" \")])}),0):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"autocomplete-dropdown\">\r\n    <input\r\n      class=\"search-input\"\r\n      type=\"text\"\r\n      :placeholder=\"placeholder\"\r\n      v-model=\"searchText\"\r\n      @input=\"filterOptions\"\r\n      @click=\"toggleDropdown\"\r\n      @keydown.down.prevent=\"movePointerDown\"\r\n      @keydown.up.prevent=\"movePointerUp\"\r\n      @keydown.enter.prevent=\"selectOption\"\r\n      @blur=\"closeDropdown\"\r\n    />\r\n    <ul v-if=\"dropdownOpen\" class=\"dropdown\">\r\n      <li\r\n        v-for=\"(option, index) in filteredOptions\"\r\n        :key=\"option.key\"\r\n        :class=\"{ highlighted: option === hoveredItem }\"\r\n        @mouseenter=\"hoveredItem = option\"\r\n        @mouseleave=\"hoveredItem = null\"\r\n        @mousedown.prevent=\"selectOption(index)\"\r\n      >\r\n        {{ option.value }}\r\n      </li>\r\n    </ul>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport Vue from 'vue';\r\nimport { StringKeyValuePair } from '@/types/custom'\r\n\r\nexport interface TemplateComponentData {\r\n  startingUp: boolean,\r\n  searchText: string,\r\n  filteredOptions: Array<StringKeyValuePair>,\r\n  selectedOption: StringKeyValuePair | null,\r\n  dropdownOpen: boolean,\r\n  pointer: number,\r\n  hoveredItem: StringKeyValuePair | null\r\n\r\n}\r\n\r\nexport default Vue.extend({\r\n  name: 'AutocompleteDropdown',\r\n  props: {\r\n    value: {\r\n      type: Object as () => StringKeyValuePair | null,\r\n      required: false\r\n    },  \r\n    options: {\r\n      type: Array as () => Array<StringKeyValuePair>,\r\n      required: true\r\n    },\r\n    placeholder: {\r\n      type: String,\r\n      default: 'Type to search...'\r\n    }\r\n  },\r\n  data() {\r\n    return {\r\n      startingUp: true,\r\n      searchText: '',\r\n      filteredOptions: [] as Array<StringKeyValuePair>,\r\n      selectedOption: null as StringKeyValuePair | null,\r\n      dropdownOpen: false,\r\n      pointer: -1,\r\n      hoveredItem: null\r\n    };\r\n  },\r\n  mounted() {\r\n    this.searchText = this.value ? this.value.value: '';\r\n    this.filterOptions()\r\n  },\r\n  methods: {\r\n    filterOptions() {\r\n      this.filteredOptions = this.options.filter(option =>\r\n        option.value.toLowerCase().includes(this.searchText.toLowerCase())\r\n      );\r\n      this.pointer = -1;\r\n      if (!this.startingUp) {\r\n        this.dropdownOpen = true;\r\n      }\r\n      this.startingUp = false;\r\n    },\r\n    toggleDropdown() {\r\n      this.searchText = ''\r\n      this.selectedOption = null\r\n      this.$emit('input', this.selectedOption);\r\n      this.filterOptions()\r\n    },\r\n    closeDropdown() {\r\n      this.dropdownOpen = false;\r\n      this.pointer = -1;\r\n    },\r\n    movePointerDown() {\r\n      if (this.pointer < this.filteredOptions.length - 1) {\r\n        this.pointer++;\r\n      }\r\n    },\r\n    movePointerUp() {\r\n      if (this.pointer > 0) {\r\n        this.pointer--;\r\n      }\r\n    },\r\n    selectOption(index) {\r\n      if (index >= 0 && index < this.filteredOptions.length) {\r\n        this.selectedOption = this.filteredOptions[index];\r\n        this.searchText = this.selectedOption.value;\r\n        this.$emit('input', this.selectedOption);\r\n        this.dropdownOpen = false;\r\n        this.pointer = -1;\r\n      }\r\n    }\r\n  }\r\n})\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import \"../assets/scss/_variables.scss\";\r\n.autocomplete-dropdown {\r\n  list-style-type: none;\r\n  padding: 0;\r\n  position: relative;\r\n  width: 100%;\r\n  margin: 20px;\r\n  z-index: 5;\r\n  text-align: center;\r\n\r\n  li {\r\n    cursor: pointer;\r\n  }\r\n  ul {\r\n    list-style-type: none;\r\n    padding: 0;\r\n    position: absolute;\r\n    z-index: 10;\r\n    max-height: 100px; /* Set maximum height */\r\n    overflow-y: auto; /* Add scrollbar if content exceeds max height */\r\n    width: 100%; /* Set width to 100% */\r\n  }\r\n\r\n  li.highlighted {\r\n    background-color: #f0f0f0;\r\n  }\r\n\r\n  .dropdown {\r\n    -webkit-box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.12), 0 2px 4px 0 rgba(0, 0, 0, 0.08);\r\n    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.12), 0 2px 4px 0 rgba(0, 0, 0, 0.08);\r\n    background-color: #fff;\r\n    color: #606f7b;\r\n    border-radius: 0.25em;\r\n    line-height: 1.25;\r\n    text-align: left;\r\n  }\r\n\r\n  .dropdown > li {\r\n    padding: 0.5em 0.75em;\r\n  }\r\n\r\n  input {\r\n    display: block;\r\n    width: 100%;\r\n    padding: 6px 20px;\r\n    font-size: 1em;\r\n    color: $brand-font;\r\n    background-color: #fff;\r\n    background-clip: padding-box;\r\n    border: 2px solid $brand-grey3;\r\n    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n    box-sizing: border-box;\r\n    border-radius: 60px;\r\n    outline: none;\r\n  }\r\n}\r\n\r\n</style>","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRAutoCompleteDropdown2.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRAutoCompleteDropdown2.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRAutoCompleteDropdown2.vue?vue&type=template&id=738b89be&scoped=true\"\nimport script from \"./SPRAutoCompleteDropdown2.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRAutoCompleteDropdown2.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRAutoCompleteDropdown2.vue?vue&type=style&index=0&id=738b89be&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"738b89be\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"container move-to-fmg-form\">\r\n    <div v-if=\"showConfirmation\" class=\"modal-level2\">\r\n      <div class=\"modal-content-level2\">\r\n        <p>\r\n          {{ $t('moveFMGForm.confirmationMessage') }}\r\n        </p>\r\n        <SPRButton type=\"primary\"\r\n                   :size=\"1\"\r\n                   :title=\"$t('moveFMGForm.confirmationYes')\"\r\n                   class=\"spr-shadow margintop20\"\r\n                   click-event=\"confirmMove\"\r\n                   @confirmMove=\"confirmMove\"\r\n        />\r\n        <SPRButton\r\n          :size=\"1\"\r\n          :title=\"$t('moveFMGForm.confirmationNo')\"\r\n          class=\"spr-shadow margintop20\"\r\n          click-event=\"cancelMove\"\r\n          @cancelMove=\"cancelMove\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <h2>{{ $t('moveFMGForm.title') }}</h2>\r\n    <div class=\"dropdown\">\r\n      <sprautocomplete\r\n        v-model=\"selectedGroup\"\r\n        :options=\"friendManagementGroups\"\r\n        :placeholder=\"$t('moveFMGForm.placeholder')\"\r\n      />\r\n    </div>\r\n    <SPRButton type=\"primary\"\r\n               :size=\"1\"\r\n               :title=\"$t('moveFMGForm.cancel')\"\r\n               class=\"spr-shadow margintop20\"\r\n               click-event=\"cancel\"\r\n               @cancel=\"cancel\"\r\n    />\r\n    <SPRButton\r\n      :size=\"1\"\r\n      :title=\"$t('moveFMGForm.save')\"\r\n      class=\"spr-shadow margintop20\"\r\n      click-event=\"save\"\r\n      :disabled=\"!isGroupSelected\"\r\n      @save=\"save\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import SPRButton from '@/components/SPRButton.vue'\r\n  import sprautocomplete from '@/components/SPRAutoCompleteDropdown2.vue'\r\n  import { StringKeyValuePair } from '@/types/custom'\r\n\r\n  export interface TemplateComponentData {\r\n  selectedGroup: StringKeyValuePair | null,\r\n  showConfirmation: boolean\r\n}\r\n\r\n  export default Vue.extend({\r\n    components: { sprautocomplete, SPRButton },\r\n    props: {\r\n      currentGroup: {\r\n        type: Object as () => StringKeyValuePair,\r\n        required: true,\r\n        validator (value: any) {\r\n          return value === null || (typeof value === 'object' && 'key' in value && 'value' in value)\r\n        }\r\n      },\r\n      targetId: {\r\n        type: String,\r\n        required: true\r\n      },\r\n      friendManagementGroups: {\r\n        type: Array<StringKeyValuePair>,\r\n        required: true\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        selectedGroup: null as StringKeyValuePair | null,\r\n        showConfirmation: false\r\n      }\r\n    },\r\n    computed: {\r\n      isGroupSelected (): boolean {\r\n        return this.selectedGroup !== null\r\n      }\r\n    },\r\n    created () {\r\n      if (this.currentGroup !== null) { this.selectedGroup = this.currentGroup } else { this.selectedGroup = null }\r\n    },\r\n    methods: {\r\n      cancel () {\r\n        this.selectedGroup = null\r\n        this.$emit('cancel')\r\n      },\r\n      save () {\r\n        this.showConfirmation = true\r\n      },\r\n      confirmMove () {\r\n        // Logic to move the customer to the selected group\r\n        this.showConfirmation = false\r\n\r\n        if (this.selectedGroup === null) {\r\n          return\r\n        }\r\n\r\n        this.$emit('save', this.selectedGroup)\r\n      },\r\n      cancelMove () {\r\n        this.showConfirmation = false\r\n        this.$emit('cancel')\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"@/assets/scss/variables.scss\";\r\n\r\n  .move-to-fmg-form {\r\n    max-width: 400px;\r\n    h2 {\r\n      font-size: $font-size-1;\r\n      margin-bottom: 20px;\r\n    }\r\n  }\r\n\r\n  .dropdown {\r\n    margin: 20px;\r\n  }\r\n\r\n.modal-level2 {\r\n  display: block;\r\n  position: fixed;\r\n  z-index: 10;\r\n  left: 0;\r\n  top: 0;\r\n  width: 100%;\r\n  height: 100%;\r\n  overflow: auto;\r\n  background-color: rgb(0,0,0);\r\n  background-color: rgba(0,0,0,0.4);\r\n}\r\n.modal-content-level2 {\r\n    background-color: #fefefe;\r\n    margin: 5% auto;\r\n    max-width: 600px;\r\n    padding: 20px;\r\n    border: 1px solid #888;\r\n    width: 80%;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MoveToFMGForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MoveToFMGForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MoveToFMGForm.vue?vue&type=template&id=0e588686&scoped=true\"\nimport script from \"./MoveToFMGForm.vue?vue&type=script&lang=ts\"\nexport * from \"./MoveToFMGForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MoveToFMGForm.vue?vue&type=style&index=0&id=0e588686&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"0e588686\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"container customerpreview\">\r\n    <div class=\"row header\">\r\n      <div class=\"col\">\r\n        <HomeButton\r\n          v-if=\"group\"\r\n          :group-id=\"group.id\"\r\n        />\r\n        <BackButton :back-url=\"backUrlString\" />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"showModal\" class=\"modal\">\r\n      <div class=\"modal-content\">\r\n        <!-- Removed the close button (cross) -->\r\n        <CustomerMoveForm :target-id=\"id\" :current-group=\"currentGroup\" :friend-management-groups=\"friendManagementGroups\" @save=\"moveCustomerToFmg\" @cancel=\"cancelMove\" />\r\n      </div>\r\n    </div>\r\n    <div\r\n      v-if=\"loaded && group\"\r\n      class=\"row content\"\r\n    >\r\n      <div v-if=\"!group.netFriendship\" class=\"col-lg-4 mb-3 mb-lg-0 customer-area\">\r\n        <CustomerCardStandard\r\n          v-if=\"customer && group\"\r\n          v-model=\"customer\"\r\n          :group=\"group\"\r\n          @refresh=\"refresh\"\r\n          @moveCustomer=\"moveCustomer\"\r\n        />\r\n      </div>\r\n\r\n      <div v-if=\"group.netFriendship\" class=\"col-lg-4 mb-3 mb-lg-0 customer-area\">\r\n        <CustomerCardNet\r\n          v-if=\"customer && group\"\r\n          v-model=\"customer\"\r\n          :group=\"group\"\r\n          @refresh=\"refresh\"\r\n        />\r\n      </div>\r\n\r\n      <div class=\"col-lg-8 volunteer-area\">\r\n        <div v-if=\"inactiveText\" class=\"row\">\r\n          <div class=\"col-12\">\r\n            <div class=\"inactive text-center\">\r\n              <div>{{ inactiveText }}</div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div v-else>\r\n          <div class=\"row\">\r\n            <div class=\"col-12\">\r\n              <h3 class=\"title\">\r\n                {{ $t('customerSearch.friendshipsTitle') }}\r\n              </h3>\r\n            </div>\r\n          </div>\r\n          <div class=\"customeractions\">\r\n            <customermatchstatus\r\n              :customer=\"customer\"\r\n              :group=\"group\"\r\n              :highlightedvolunteerid=\"volunteerid\"\r\n              @addNewMatch=\"onAddNewMatch\"\r\n              @volunteerMatchSelected=\"onVolunteerMatchSelected\"\r\n            />\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12\">\r\n              <h3 class=\"title\">\r\n                {{ $t('customerSearch.poolsTitle') }}\r\n              </h3>\r\n            </div>\r\n          </div>\r\n          <div v-if=\"loaded\" class=\"row\">\r\n            <div class=\"col-12\">\r\n              <CustomerPoolsNet\r\n                v-if=\"group.netFriendship\"\r\n                :customer=\"customer\"\r\n                :group=\"group\"\r\n                :is-active=\"isActive\"\r\n                @poolsupdated=\"onPoolsUpdated\"\r\n              />\r\n              <CustomerPoolsStandard\r\n                v-else\r\n                :customer=\"customer\"\r\n                :group=\"group\"\r\n                :is-active=\"isActive\"\r\n                @poolsupdated=\"onPoolsUpdated\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div v-show=\"!loaded\" class=\"loading\">\r\n      <div class=\"spinner\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import BackButton from '../BackButton.vue'\r\n  import HomeButton from '../HomeButton.vue'\r\n  import CustomerCardStandard from './CustomerCardStandard.vue'\r\n  import CustomerCardNet from './CustomerCardNet.vue'\r\n  import customermatchstatus from './CustomerMatchStatus.vue'\r\n  import CustomerPoolsStandard from './CustomerPoolsStandard.vue'\r\n  import CustomerPoolsNet from './CustomerPoolsNet.vue'\r\n  import CustomerMoveForm from './MoveToFMGForm.vue'\r\n  import Loading from '../SPRLoading.vue'\r\n  import { StringKeyValuePair } from '@/types/custom'\r\n\r\n  import { CustomerState, FriendManagementDto, FriendCustomerStandardDto, FriendCustomerNetDto, FriendshipNetDto, FriendshipStandardDto } from '../../types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    showModal: boolean,\r\n    loaded: boolean,\r\n    customer: FriendCustomerStandardDto | FriendCustomerNetDto | undefined,\r\n    group: FriendManagementDto | undefined,\r\n    backUrl: string,\r\n    friendManagementGroups: Array<StringKeyValuePair>\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerPreview',\r\n    components: { CustomerCardStandard, BackButton, HomeButton, customermatchstatus, CustomerPoolsStandard, CustomerPoolsNet, Loading, CustomerCardNet, CustomerMoveForm },\r\n    props: {\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      }, // the customer id\r\n      groupid: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      volunteerid: {\r\n        type: String,\r\n        default: '',\r\n        required: false\r\n      } // optional. Used to highlight a specific match\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        friendManagementGroups: [] as Array<StringKeyValuePair>,\r\n        showModal: false,\r\n        customer: undefined,\r\n        group: undefined,\r\n        backUrl: '',\r\n        loaded: false\r\n      }\r\n    },\r\n    computed: {\r\n      currentGroup (): StringKeyValuePair | null {\r\n        var group = _.find(this.friendManagementGroups, { key: this.groupid })\r\n        return group\r\n      },\r\n      backUrlString (): string {\r\n        return '/friend/search/' + this.groupid + '/customer'\r\n      },\r\n      isActive (): boolean {\r\n        return _.includes([CustomerState.Active, CustomerState.PendingFriend, CustomerState.ActiveFriendship], this.customer?.state)\r\n      },\r\n      isInactive (): boolean {\r\n        return this.customer?.state === CustomerState.NonActive\r\n      },\r\n      inactiveText (): string | LocaleMessage {\r\n        switch (this.customer?.state) {\r\n        case CustomerState.PendingApproval:\r\n          return this.$t('customerSearch.noMatchingNotInterviewed')\r\n        case CustomerState.NonActive:\r\n          return this.$t('customerSearch.noMatchingRemoved')\r\n        case CustomerState.OnHold:\r\n          return this.$t('customerSearch.noMatchingOnHold')\r\n        }\r\n        return ''\r\n      }\r\n    },\r\n    created () {\r\n      if (this.isMoveAdmin()) {\r\n        const url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendstandardgroups[0]\r\n        const self = this\r\n        this.$http.get(url).then((resp: any) => {\r\n          if (resp.body) {\r\n            var friendManagementGroups = [] as Array<StringKeyValuePair>\r\n            _.each(resp.body, (fmg) => {\r\n              friendManagementGroups.push({ key: `${fmg.id}`, value: `${fmg.name}` })\r\n            })\r\n\r\n            this.friendManagementGroups = _.sortBy(friendManagementGroups, 'value')\r\n          }\r\n        })\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.backUrl = `/friend/search/${this.groupid}/customer`\r\n      this.load()\r\n    },\r\n    methods: {\r\n      isMoveAdmin (): boolean {\r\n        // @ts-ignore\r\n        const isAdmin = this.hasRole('Admin')\r\n        // @ts-ignore\r\n        const isFriendshipAdmin = this.hasRole('FriendshipAdmin')\r\n        // @ts-ignore\r\n        const isDistrictFriendshipAdmin = this.hasRole('DistrictFriendshipAdmin')\r\n        return isAdmin || isFriendshipAdmin || isDistrictFriendshipAdmin\r\n      },\r\n      goBackUrl (): string {\r\n        return `/friend/search/${this.groupid}/customer`\r\n      },\r\n      load (): void {\r\n        var getGroupUrl = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationById[0]}`.replace('{0}', this.groupid)\r\n\r\n        this.loaded = false\r\n        this.$http.get(getGroupUrl).then(resp => {\r\n          // @ts-ignore\r\n          this.group = resp.body\r\n          var getCustomerUrl = this.group?.netFriendship\r\n            ? `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customergetnetbyid[0]}`.replace('{customerid}', this.id).replace('{groupid}', this.groupid)\r\n            : `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customergetstandardbyid[0]}`.replace('{customerid}', this.id).replace('{groupid}', this.groupid)\r\n          return this.$http.get(getCustomerUrl)\r\n        })\r\n          .then(resp => {\r\n            // @ts-ignore\r\n            this.customer = resp.body\r\n            this.loaded = true\r\n          }, f => {\r\n            this.loaded = true\r\n            this.displayError(f)\r\n          })\r\n      },\r\n      moveCustomer (): void {\r\n        this.showModal = true\r\n      },\r\n      moveCustomerToFmg (selectedGroup): void {\r\n        if (selectedGroup === null) {\r\n          return\r\n        }\r\n        const url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customermovetodifferentfmg[0]\r\n\r\n        const moveToFMGCommand = {\r\n          TargetId: this.id,\r\n          GroupId: selectedGroup.key\r\n        }\r\n\r\n        this.$http.put(url, moveToFMGCommand).then((resp: any) => {\r\n          if (resp.status === 200) {\r\n            // Handle success response\r\n            // @ts-ignore\r\n            this.showAlertInfo(this.$t('customerSearch.movingCustomer'))\r\n          } else if (resp.status === 403) {\r\n            // Handle forbidden response\r\n            this.$router.push('/profile')\r\n          } else if (resp.status === 400) {\r\n            // Handle bad request response\r\n            // @ts-ignore\r\n            this.showAlertError(this.$t('customerSearch.failedToMove'))\r\n          }\r\n\r\n          this.showModal = false\r\n        }, (error: any) => {\r\n          // Handle any other errors\r\n          console.log('Error:', error)\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('customerSearch.failedToMove'))\r\n\r\n          this.showModal = false\r\n        })\r\n      },\r\n      cancelMove (): void {\r\n        this.showModal = false\r\n      },\r\n      closeMoveCustomer (): void {\r\n        this.showModal = false\r\n      },\r\n      onAddNewMatch (): void {\r\n        this.$router.push(`/friend/customermatch/${this.groupid}/${this.id}`)\r\n      },\r\n      onVolunteerMatchSelected (friendship: FriendshipNetDto | FriendshipStandardDto): void {\r\n        this.$router.push(`/friend/customermatch/${this.groupid}/${this.id}/${friendship.volunteer.volunteerId}`)\r\n      },\r\n      onPoolsUpdated (): void {\r\n        this.load()\r\n      },\r\n      refresh (): void {\r\n        // reload\r\n        this.$router.go(0)\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          var backUrl = this.goBackUrl()\r\n          this.$router.push(backUrl)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import \"@/assets/scss/variables.scss\";\r\n  .customerpreview {\r\n    .loading {\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    bottom: 0;\r\n    right: 0;\r\n    height: 100%;\r\n    width: 100%;\r\n    .spinner {\r\n      margin: 200px;\r\n      color: $brand-red;\r\n    }\r\n  }    .header {\r\n      margin-top: 10px;\r\n      margin-bottom: 15px;\r\n      .nav-header {\r\n        border-bottom: 0;\r\n      }\r\n    }\r\n\r\n    .content {\r\n      .customer-area {\r\n        padding-top: 30px;\r\n        background-color: $brand-white;\r\n        border-left: solid 5px $customer-color-strong;\r\n      }\r\n    }\r\n  }\r\n\r\n.modal {\r\n  display: block;\r\n  position: fixed;\r\n  z-index: 1;\r\n  left: 0;\r\n  top: 0;\r\n  width: 100%;\r\n  height: 100%;\r\n  overflow: auto;\r\n  background-color: rgb(0,0,0);\r\n  background-color: rgba(0,0,0,0.4);\r\n}\r\n\r\n.modal-content {\r\n  background-color: #fefefe;\r\n  margin: 15% auto;\r\n  max-width: 600px;\r\n  padding: 20px;\r\n  border: 1px solid #888;\r\n  width: 80%;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerPreview.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerPreview.vue?vue&type=template&id=4828d058&scoped=true\"\nimport script from \"./CustomerPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerPreview.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerPreview.vue?vue&type=style&index=0&id=4828d058&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4828d058\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.group)?_c('div',{staticClass:\"container customerfindmatch\"},[(_vm.group.netFriendship)?_c('CustomerFindNetMatch',{attrs:{\"group\":_vm.group,\"customerid\":_vm.customerIdNumber}}):_c('CustomerFindStandardMatch',{attrs:{\"group\":_vm.group,\"customerid\":_vm.customerIdNumber}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.customer)?_c('div',{staticClass:\"container customerfindnetmatch\"},[_c('div',{staticClass:\"row header\"},[_c('div',{staticClass:\"col-lg-4 col-xl-4\"},[(_vm.group)?_c('HomeButton',{attrs:{\"group-id\":_vm.group.id}}):_vm._e(),_c('BackButton')],1),(_vm.volunteerSelected)?_c('div',{staticClass:\"col-lg-8 col-xl-9 d-none d-lg-block\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.customerMatchTitle')))])]):_vm._e()]),(_vm.group)?_c('div',{staticClass:\"row content\"},[_c('div',{staticClass:\"col-lg-4 col-xl-3 mb-3 mb-lg-0 customer-area\"},[_c('CustomerCardNet',{attrs:{\"group\":_vm.group},on:{\"refresh\":_vm.onRefresh},model:{value:(_vm.customer),callback:function ($$v) {_vm.customer=$$v},expression:\"customer\"}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isSending),expression:\"isSending\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])],1),_c('div',{staticClass:\"col-lg-8 col-xl-9 volunteer-area\"},[(!_vm.volunteerSelected)?_c('div',{staticClass:\"row volunteer-selection\"},[_c('div',{staticClass:\"col-md-4 col-lg-4 order-md-2 search-filter\"},[_c('customerFilter',{attrs:{\"group\":_vm.group,\"filter-type\":'VOLUNTEER',\"show-all\":false},on:{\"filterchanged\":_vm.onFilterChanged}})],1),_c('div',{staticClass:\"col-md-8 col-lg-8 order-md-1 volunteer-list\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.customerMatchTitle')))]),_c('customermatchresults',{attrs:{\"list\":_vm.filteredvolunteers},on:{\"volunteerSelected\":_vm.onVolunteerSelected}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)]),(!_vm.isLoading && _vm.noResults)?_c('div',{staticClass:\"noresults infocontainer\"},[_c('div',{staticClass:\"info warning\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(_vm._s(_vm.$t('customerSearch.noResults'))+\" \")],1)]):_vm._e()],1)]):_vm._e(),(_vm.volunteerSelected)?_c('div',{staticClass:\"row d-lg-none volunteer-heading\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.customerMatchTitle')))])]):_vm._e(),(_vm.group && _vm.volunteerSelected)?_c('div',{staticClass:\"row ml-lg-1 volunteer-summary\"},[_c('div',{staticClass:\"col\"},[_c('VolunteerSummaryNet',{attrs:{\"volunteer\":_vm.volunteer,\"customer\":_vm.customer,\"group\":_vm.group,\"score\":_vm.score,\"is-first\":_vm.isFirst,\"is-last\":_vm.isLast,\"is-inappropriate\":_vm.isInappropriate},on:{\"prev\":_vm.onPrev,\"next\":_vm.onNext,\"close\":_vm.onClose}})],1)]):_vm._e()])]):_vm._e()]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row volunteersummarynet\",class:_vm.isInappropriateCss},[_c('div',{staticClass:\"col-md-6 mb-3 mb-md-0 maincolumn\"},[_c('div',{staticClass:\"topsection\"},[_c('div',{staticClass:\"controls\"},[(!_vm.isFirst)?_c('div',{staticClass:\"prev\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.prev}},[_c('font-awesome-icon',{attrs:{\"icon\":\"chevron-left\"}})],1)]):_vm._e(),(!_vm.isLast)?_c('div',{staticClass:\"next\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.next}},[_c('font-awesome-icon',{attrs:{\"icon\":\"chevron-right\"}})],1)]):_vm._e()])]),_c('volunteercardnet',{attrs:{\"group\":_vm.group,\"show-matches\":true,\"show-actions\":false,\"show-edit-button\":true,\"matches\":_vm.matchData},on:{\"refresh\":_vm.onRefresh},model:{value:(_vm.volunteer),callback:function ($$v) {_vm.volunteer=$$v},expression:\"volunteer\"}})],1),_c('div',{staticClass:\"col-md-6 sidecolumn\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col controls\"},[_c('div',{staticClass:\"back\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$t('customerSearch.close')))])])])]),_c('customermatchnetconfirm',{attrs:{\"customer\":_vm.customer,\"volunteer\":_vm.volunteer,\"is-inappropriate\":_vm.isInappropriate,\"score\":_vm.score}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"customermatchnetconfirm\"},[(_vm.isInappropriate)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col maintitle\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('customerSearch.inappropriate')))])])]),_c('div',{staticClass:\"row instructions\"},[_c('div',{staticClass:\"col instructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.inappropriateInstructions'))+\" \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col buttons\"},[_c('sprbutton',{staticClass:\"end-inappropriate-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.endInappropriate'),\"click-event\":\"endinappropriate\"},on:{\"endinappropriate\":_vm.onEndInappropriate}})],1)])]):_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col maintitle\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('customerSearch.matchConfirmTitle')))])])]),_c('div',{staticClass:\"row starscore\"},[_c('div',{staticClass:\"col-12\"},[_c('stars',{attrs:{\"score\":_vm.score,\"is-net\":true}})],1)]),_c('div',{staticClass:\"row instructions\"},[_c('div',{staticClass:\"col instructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.createMatchInstructions'))+\" \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col buttons\"},[_c('sprbutton',{staticClass:\"suggest-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.suggestButton'),\"click-event\":\"suggest\",\"disabled\":!_vm.isActive},on:{\"suggest\":_vm.suggest}})],1)]),(!_vm.showInappropriate)?_c('div',{staticClass:\"row inappropriate\"},[_c('div',{staticClass:\"col-12\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.markInappropriate}},[_vm._v(_vm._s(_vm.$t('customerSearch.markInnapropriateButton')))])])]):_vm._e(),(_vm.showInappropriate)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"inappropriate-instructions\"},[_vm._v(_vm._s(_vm.$t('customerSearch.markInapproprateInstructions')))])]),_c('div',{staticClass:\"col-6\"},[_c('a',{staticClass:\"cancel-inappropriate\",attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.cancelInappropriate}},[_vm._v(_vm._s(_vm.$t('customerSearch.cancelInappropriateButton')))])]),_c('div',{staticClass:\"col-6\"},[_c('sprbutton',{staticClass:\"confirm-inappropriate-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.confirmInappropriateButton'),\"click-event\":\"confirmInappropriate\"},on:{\"confirmInappropriate\":_vm.confirmInappropriate}})],1)]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"stars\"},[(_vm.numStars === 0)?_c('div',[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'times-circle']}})],1):_c('div',[_c('div',{staticClass:\"star\"},[_c('font-awesome-icon',{attrs:{\"icon\":_vm.getStarClass(1)}})],1),_c('div',{staticClass:\"star\"},[_c('font-awesome-icon',{attrs:{\"icon\":_vm.getStarClass(2)}})],1),_c('div',{staticClass:\"star\"},[_c('font-awesome-icon',{attrs:{\"icon\":_vm.getStarClass(3)}})],1)]),_c('div',{staticClass:\"description\"},[_vm._v(\" \"+_vm._s(_vm.getDescription(_vm.numStars))+\" \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n  .stars {\r\n    text-align:center;\r\n    color:$brand-red;\r\n\r\n    .star {\r\n      display:inline-block;\r\n\r\n      i.hidden {\r\n        display:none;\r\n      }\r\n    }\r\n\r\n    .description {\r\n      font-weight: bold;\r\n      font-size: 0.8em;\r\n      text-transform: uppercase;\r\n    }\r\n  }\r\n</style>\r\n<template>\r\n  <div class=\"stars\">\r\n    <div v-if=\"numStars === 0\">\r\n      <font-awesome-icon :icon=\"['far', 'times-circle']\" />\r\n    </div>\r\n    <div v-else>\r\n      <div class=\"star\">\r\n        <font-awesome-icon :icon=\"getStarClass(1)\" />\r\n      </div>\r\n      <div class=\"star\">\r\n        <font-awesome-icon :icon=\"getStarClass(2)\" />\r\n      </div>\r\n      <div class=\"star\">\r\n        <font-awesome-icon :icon=\"getStarClass(3)\" />\r\n      </div>\r\n    </div>\r\n    <div class=\"description\">\r\n      {{ getDescription(numStars) }}\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'Stars',\r\n    props: {\r\n      score: {\r\n        type: Number,\r\n        default () {\r\n          return 0\r\n        }\r\n      },\r\n      isNet: {\r\n        type: Boolean,\r\n        default () {\r\n          return false\r\n        }\r\n      }\r\n    },\r\n    computed: {\r\n      numStars () {\r\n        var tempScore = ~~this.score\r\n        if (this.isNet) {\r\n          if (tempScore < 30) return 0\r\n\r\n          if (tempScore <= 59) return 1\r\n\r\n          if (tempScore <= 89) return 2\r\n\r\n          return 3\r\n        } else {\r\n          if (tempScore < 0) return 0\r\n\r\n          if (tempScore <= 70) return 1\r\n\r\n          if (tempScore <= 100) return 2\r\n\r\n          return 3\r\n        }\r\n      }\r\n    },\r\n    methods: {\r\n      getStarClass (star) {\r\n        return this.numStars >= star ? ['fas', 'star'] : ['far', 'star']\r\n      },\r\n      getDescription (star) {\r\n        switch (star) {\r\n        case 1:\r\n          return this.$t('customerSearch.scoreSlightlySuitable') // + ' - ' + this.score //uncomment these for testing purposes, if you want to see the actual total score on the screen\r\n\r\n        case 2:\r\n          return this.$t('customerSearch.scoreFairlySuitable') //+ ' - ' + this.score\r\n\r\n        case 3:\r\n          return this.$t('customerSearch.scoreVerySuitable') //+ ' - ' + this.score\r\n\r\n        default:\r\n          return this.$t('customerSearch.scoreNotSuitable') //+ ' - ' + this.score\r\n        }\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRStars.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRStars.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRStars.vue?vue&type=template&id=17868892\"\nimport script from \"./SPRStars.vue?vue&type=script&lang=js\"\nexport * from \"./SPRStars.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRStars.vue?vue&type=style&index=0&id=17868892&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"customermatchnetconfirm\">\r\n    <div v-if=\"isInappropriate\">\r\n      <div class=\"row\">\r\n        <div class=\"col maintitle\">\r\n          <span class=\"title\">{{ $t('customerSearch.inappropriate') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row instructions\">\r\n        <div class=\"col instructions\">\r\n          {{ $t('customerSearch.inappropriateInstructions') }}\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col buttons\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.endInappropriate')\"\r\n                     click-event=\"endinappropriate\"\r\n                     class=\"end-inappropriate-button\"\r\n                     @endinappropriate=\"onEndInappropriate\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div v-else>\r\n      <div class=\"row\">\r\n        <div class=\"col maintitle\">\r\n          <span class=\"title\">{{ $t('customerSearch.matchConfirmTitle') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row starscore\">\r\n        <div class=\"col-12\">\r\n          <stars :score=\"score\" :is-net=\"true\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row instructions\">\r\n        <div class=\"col instructions\">\r\n          {{ $t('customerSearch.createMatchInstructions') }}\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col buttons\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.suggestButton')\"\r\n                     click-event=\"suggest\"\r\n                     class=\"suggest-button\"\r\n                     :disabled=\"!isActive\"\r\n                     @suggest=\"suggest\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"!showInappropriate\" class=\"row inappropriate\">\r\n        <div class=\"col-12\">\r\n          <a href=\"javascript:void(0)\" @click=\"markInappropriate\">{{ $t('customerSearch.markInnapropriateButton') }}</a>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"showInappropriate\" class=\"row\">\r\n        <div class=\"col-12\">\r\n          <span class=\"inappropriate-instructions\">{{ $t('customerSearch.markInapproprateInstructions') }}</span>\r\n        </div>\r\n        <div class=\"col-6\">\r\n          <a href=\"javascript:void(0)\" class=\"cancel-inappropriate\" @click=\"cancelInappropriate\">{{ $t('customerSearch.cancelInappropriateButton') }}</a>\r\n        </div>\r\n        <div class=\"col-6\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.confirmInappropriateButton')\"\r\n                     click-event=\"confirmInappropriate\"\r\n                     class=\"confirm-inappropriate-button\"\r\n                     @confirmInappropriate=\"confirmInappropriate\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import stars from '../SPRStars.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import { UserProfileDto, FriendCustomerNetDto, CustomerState } from '@/types/index'\r\n  import { NetMatchPair } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    suggestionMessage: string | LocaleMessage,\r\n    showInappropriate: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerMatchNetConfirm',\r\n    components: { stars, sprbutton },\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerNetDto,\r\n        required: true\r\n      },\r\n      volunteer: {\r\n        type: Object as () => UserProfileDto,\r\n        required: true\r\n      },\r\n      score: {\r\n        type: Number,\r\n        required: true\r\n      },\r\n      isInappropriate: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        suggestionMessage: this.$t('customerSearch.suggestionMessage'),\r\n        showInappropriate: false\r\n      }\r\n    },\r\n    computed: {\r\n      isActive (): boolean {\r\n        return (this.volunteer.friendInfo && _.includes([CustomerState.Active, CustomerState.PendingFriend, CustomerState.ActiveFriendship], this.volunteer.friendInfo.netProfile.state)) &&\r\n          (_.includes([CustomerState.Active, CustomerState.PendingFriend, CustomerState.ActiveFriendship], this.customer.state))\r\n      }\r\n    },\r\n    methods: {\r\n      suggest (): void {\r\n        this.$bus.$emit('initiate-friendship', { volunteer: this.volunteer, customer: this.customer, message: this.suggestionMessage })\r\n      },\r\n      markInappropriate (): void {\r\n        this.showInappropriate = true\r\n      },\r\n      confirmInappropriate (): void {\r\n        this.$bus.$emit('inappropriate-friendship', { volunteer: this.volunteer, customer: this.customer } as NetMatchPair)\r\n      },\r\n      cancelInappropriate (): void {\r\n        this.showInappropriate = false\r\n      },\r\n      onEndInappropriate (): void {\r\n        this.$bus.$emit('end-inappropriate-friendship', { volunteer: this.volunteer, customer: this.customer } as NetMatchPair)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .customermatchnetconfirm {\r\n    text-align: center;\r\n\r\n    .maintitle {\r\n      margin: 30px 0 20px 0;\r\n    }\r\n\r\n    .title {\r\n      text-transform: uppercase;\r\n      color:$brand-red;\r\n      font-weight: bold;\r\n      display:block;\r\n    }\r\n\r\n    .starscore {\r\n      margin-top:50px;\r\n      margin-bottom: 50px;\r\n    }\r\n\r\n    .instructions {\r\n      margin-bottom: 20px;\r\n      font-size: 13px;\r\n    }\r\n\r\n    .buttons {\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .inappropriate,\r\n    .cancel {\r\n      margin-bottom: 50px;\r\n      a {\r\n        color:$brand-red;\r\n      }\r\n    }\r\n\r\n    .inappropriate-instructions {\r\n      margin-bottom:30px;\r\n      display:block;\r\n      font-size: 13px;\r\n    }\r\n\r\n    .message {\r\n      width: 100%;\r\n      margin-bottom:30px;\r\n\r\n      textarea {\r\n        width: 100%;\r\n      }\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchNetConfirm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchNetConfirm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerMatchNetConfirm.vue?vue&type=template&id=5fba22c4\"\nimport script from \"./CustomerMatchNetConfirm.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerMatchNetConfirm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerMatchNetConfirm.vue?vue&type=style&index=0&id=5fba22c4&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.volunteer && _vm.volunteer.friendInfo)?_c('div',{staticClass:\"volunteercardnet\"},[_c('div',{staticClass:\"topsection\"},[_c('div',{staticClass:\"circle\"},[(_vm.friendshipStateOverride)?_c('friendshipicon',{attrs:{\"friendname\":_vm.volunteer.firstName,\"state\":_vm.friendshipStateOverride}}):_c('friendicon',{attrs:{\"friendname\":_vm.volunteer.firstName,\"image\":_vm.volunteer.portrait,\"state\":_vm.volunteer.friendInfo.netProfile.onHold ? 6 : _vm.volunteer.friendInfo.netProfile.state,\"multiple-friendships\":_vm.volunteer.friendInfo.netProfile.multipleCustomers}})],1),_c('div',{staticClass:\"details\"},[_c('div',{staticClass:\"name\"},[_c('span',[_vm._v(_vm._s(_vm.volunteer.firstName)+\" \"+_vm._s(_vm.volunteer.lastName))]),_c('div',{staticClass:\"usericons\"},[(!_vm.volunteer.isNonIdent)?_c('font-awesome-icon',{attrs:{\"icon\":\"user\",\"title\":_vm.$t('customerSearch.isIdent')}}):_vm._e(),(_vm.hasMultipleCustomers)?_c('font-awesome-icon',{attrs:{\"icon\":\"users\",\"title\":_vm.$t('customerSearch.multipleCustomers')}}):_vm._e()],1)]),_c('div',{staticClass:\"personal\"},[_c('div',[_vm._v(_vm._s(_vm.genderAgeText))]),_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.clientTypeWish'))+\": \"+_vm._s(_vm.customerTypes || '–'))]),(_vm.volunteer.friendInfo.netProfile.shortDescription)?_c('div',{staticClass:\"short-description\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"quote-left\",\"aria-hidden\":\"true\"}}),_c('span',[_vm._v(_vm._s(_vm.volunteer.friendInfo.netProfile.shortDescription))]),_c('font-awesome-icon',{attrs:{\"icon\":\"quote-left\",\"aria-hidden\":\"true\"}})],1):_vm._e(),_c('div',[_vm._v(_vm._s(_vm.zipCode)+\" \")])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.volunteer.friendInfo.lastContacted),expression:\"volunteer.friendInfo.lastContacted\"}],staticClass:\"contacted\"},[_vm._v(\" \"+_vm._s(_vm.lastContacted(_vm.volunteer.friendInfo.lastContacted))+\" \")]),_c('div',{staticClass:\"nofriend\"},[_vm._v(\" \"+_vm._s(_vm.daysWithoutFriend(_vm.volunteer.friendInfo.netProfile.lastFriendshipEndDate))+\" \")])]),_c('div',{staticClass:\"properties\"},[_c('div',{staticClass:\"row property friendshiptypes\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"calendar\"}})],1),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.seek'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.friendshipTypes || '–'))])])]),_c('div',{staticClass:\"row property genders\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"venus-mars\"}})],1),_c('div',{staticClass:\"content\"},[_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.am'))+\" \"),_c('strong',[_vm._v(_vm._s(_vm.gender.toLowerCase() || '...?'))])]),_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.forFriend'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.genderPreferences || '–'))])])]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[_c('tickcrosswarning',{model:{value:(_vm.matches.genderMatch),callback:function ($$v) {_vm.$set(_vm.matches, \"genderMatch\", $$v)},expression:\"matches.genderMatch\"}})],1):_vm._e()]),_c('div',{staticClass:\"row property age\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"id-badge\"}})],1),_c('div',{staticClass:\"content\"},[_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.am'))+\" \"),_c('strong',[_vm._v(_vm._s(_vm.age || '?')+\" \"+_vm._s(_vm.$t('customerSearch.years')))])]),_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.forFriend'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.agePreferences || '–'))])])]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[_c('tickcross',{model:{value:(_vm.matches.ageMatch),callback:function ($$v) {_vm.$set(_vm.matches, \"ageMatch\", $$v)},expression:\"matches.ageMatch\"}})],1):_vm._e()]),_c('div',{staticClass:\"row property language\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'comment']}})],1),_c('div',{staticClass:\"content\"},[_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.speak'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.normalizeTranslation(_vm.volunteer.nativeLanguage))+\" (\"+_vm._s(_vm.$t('customerSearch.nativeLanguage'))+\")\")])]),(_vm.spokenLanguages)?_c('div',[_c('strong',[_vm._v(_vm._s(_vm.spokenLanguages))])]):_vm._e()]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[_c('tickcross',{model:{value:(_vm.matches.languageMatch),callback:function ($$v) {_vm.$set(_vm.matches, \"languageMatch\", $$v)},expression:\"matches.languageMatch\"}})],1):_vm._e()]),_c('div',{staticClass:\"row property interest\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"puzzle-piece\"}})],1),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.interestedIn'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.interests || '–'))])])]),(_vm.hasNetProfileContactDetails)?_c('div',{staticClass:\"row property netcontacts\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"wifi\"}})],1),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.netcontactdetails'))+\" \"),(_vm.volunteer.friendInfo.netProfile.econtactEmail)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.email')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteer.friendInfo.netProfile.econtactEmail))])]):_vm._e(),(_vm.volunteer.friendInfo.netProfile.econtactSkype)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.skype')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteer.friendInfo.netProfile.econtactSkype))])]):_vm._e(),(_vm.volunteer.friendInfo.netProfile.econtactDiscord)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.discord')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteer.friendInfo.netProfile.econtactDiscord))])]):_vm._e(),(_vm.volunteer.friendInfo.netProfile.econtactInstagram)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.instagram')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteer.friendInfo.netProfile.econtactInstagram))])]):_vm._e(),(_vm.volunteer.friendInfo.netProfile.econtactKik)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.kik')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteer.friendInfo.netProfile.econtactKik))])]):_vm._e(),(_vm.volunteer.friendInfo.netProfile.econtactTelegram)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.telegram')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteer.friendInfo.netProfile.econtactTelegram))])]):_vm._e(),(_vm.volunteer.friendInfo.netProfile.econtactFreetext)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.freetext')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteer.friendInfo.netProfile.econtactFreetext))])]):_vm._e()])]):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.volunteer.friendInfo.hasHealthCareTraining),expression:\"volunteer.friendInfo.hasHealthCareTraining\"}],staticClass:\"row property training\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"plus\"}})],1),_c('div',{staticClass:\"content\"},[(_vm.volunteer.friendInfo.healthCareTrainingFreetext)?_c('span',[_vm._v(_vm._s(_vm.$t('customerSearch.hasHealthCareTraining'))+\" | \"+_vm._s(_vm.volunteer.friendInfo.healthCareTrainingFreetext))]):_c('span',[_vm._v(_vm._s(_vm.$t('customerSearch.unspecifiedHealthcareTraining')))])])])]),_c('div',{staticClass:\"moreinfo\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col description\"},[_c('sprcol',{attrs:{\"heading\":_vm.$t('profile.notes')}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('sprprivatenotes',{attrs:{\"endpoint\":\"volunteerupdateprivatenotesnet\",\"friend-management-group-id\":_vm.group.id,\"target-id\":_vm.targetId,\"is-net\":\"\"},model:{value:(_vm.volunteer.friendInfo),callback:function ($$v) {_vm.$set(_vm.volunteer, \"friendInfo\", $$v)},expression:\"volunteer.friendInfo\"}})],1)])],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col contact\"},[_c('sprcol',{attrs:{\"heading\":_vm.$t('customerSearch.contactTitle')}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('p',{staticClass:\"smalltext\"},[_vm._v(\" \"+_vm._s(_vm.contactDetails)+\" \")])])])],1)]),(_vm.volunteer.friendInfo.netProfile.volunteerInterviewed)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col other\"},[_c('sprcol',{attrs:{\"heading\":_vm.$t('customerSearch.otherInfoTitle')}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.customerInterviewed'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.volunteer.friendInfo.netProfile.volunteerInterviewedDate)+\" || \"+_vm._s(_vm.volunteer.friendInfo.netProfile.volunteerInterviewedBy)+\" \")])])])])],1)]):_vm._e(),(_vm.isOnHold)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col onhold\"},[_c('sprcol',{attrs:{\"heading\":_vm.$t('volunteerForm.onHoldDescription')}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.onHoldUntilDate'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.formattedOnHoldUntilDate)+\" \")])]),_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.onHoldComment'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.volunteer.friendInfo.netProfile.onHoldDetails)+\" \")])])])])],1)]):_vm._e()]),(_vm.loaded)?_c('div',{staticClass:\"row button-row\"},[(_vm.showActions || _vm.showEditButton)?_c('div',{staticClass:\"actions\"},[_c('div',{staticClass:\"col buttons\"},[_c('volunteerActions',{attrs:{\"group\":_vm.group,\"loaded\":_vm.loaded,\"show-edit-button\":_vm.showEditButton,\"show-all-buttons\":_vm.showActions},on:{\"saveVolunteer\":_vm.saveVolunteer,\"toggleActivity\":_vm.toggleActivity},model:{value:(_vm.volunteer),callback:function ($$v) {_vm.volunteer=$$v},expression:\"volunteer\"}})],1)]):_vm._e()]):_vm._e(),(_vm.isSending)?_c('div',{staticClass:\"text-center\"},[_c('Loading')],1):_vm._e()]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"volunteer-actions row button-row\"},[_c('div',{staticClass:\"col buttons\"},[(_vm.showEditButton || _vm.showAllButtons)?_c('div',{staticClass:\"edit-volunteer\"},[_c('sprbutton',{staticClass:\"edit-button\",attrs:{\"size\":4,\"title\":_vm.$t('volunteerPreview.editVolunteerButton'),\"click-event\":\"edit\"},on:{\"edit\":_vm.editVolunteer}})],1):_vm._e(),(_vm.showAllButtons)?_c('div',[(!_vm.inFriendship)?_c('div',{staticClass:\"disable-volunteer\"},[_c('sprbutton',{staticClass:\"disable-button\",class:{ 'button-disabled': _vm.loading },attrs:{\"size\":4,\"title\":_vm.activityText,\"click-event\":\"disable\"},on:{\"disable\":_vm.toggleActivity}})],1):_c('div',{staticClass:\"disable-volunteer\"},[_c('div',{staticClass:\"nodeletewarning\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.inFriendshipNoDelete'))+\" \")]),_c('sprbutton',{staticClass:\"disable-button button-disabled\",attrs:{\"title\":_vm.$t('volunteerPreview.disableVolunteerButton'),\"size\":4}})],1),_c('div',{staticClass:\"volunteer-onhold\"},[(!_vm.inFriendship)?_c('onhold',{attrs:{\"on-hold\":_vm.onHoldValue},on:{\"update\":_vm.onHoldUpdate}}):_c('sprbutton',{staticClass:\"disable-button button-disabled\",attrs:{\"title\":_vm.$t('customerSearch.showHoldCustomerButton'),\"size\":4}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isMoveAdmin && !_vm.group.netFriendship),expression:\"isMoveAdmin && !group.netFriendship\"}],staticClass:\"edit-customer\"},[_c('sprbutton',{staticClass:\"edit-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.moveCustomerButton'),\"tooltip\":_vm.inFriendship || _vm.inFriendshipPool ? _vm.$t('moveFMGForm.disabledHasFriendship') : '',\"click-event\":\"move\",\"disabled\":!!_vm.inFriendship || !!_vm.inFriendshipPool},on:{\"move\":_vm.moveVolunteer}})],1)]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"volunteer-actions row button-row\">\r\n    <div class=\"col buttons\">\r\n      <!-- Copied/moved from VolunteerPreview -->\r\n      <div v-if=\"showEditButton || showAllButtons\" class=\"edit-volunteer\">\r\n        <sprbutton\r\n          :size=\"4\"\r\n          :title=\"$t('volunteerPreview.editVolunteerButton')\"\r\n          click-event=\"edit\"\r\n          class=\"edit-button\"\r\n          @edit=\"editVolunteer\"\r\n        />\r\n      </div>\r\n      <div v-if=\"showAllButtons\">\r\n        <div v-if=\"!inFriendship\" class=\"disable-volunteer\">\r\n          <sprbutton\r\n            :size=\"4\"\r\n            :title=\"activityText\"\r\n            click-event=\"disable\"\r\n            class=\"disable-button\"\r\n            :class=\"{ 'button-disabled': loading }\"\r\n            @disable=\"toggleActivity\"\r\n          />\r\n        </div>\r\n        <div v-else class=\"disable-volunteer\">\r\n          <div class=\"nodeletewarning\">\r\n            {{ $t('customerSearch.inFriendshipNoDelete') }}\r\n          </div>\r\n          <sprbutton\r\n            :title=\"$t('volunteerPreview.disableVolunteerButton')\"\r\n            :size=\"4\"\r\n            class=\"disable-button button-disabled\"\r\n          />\r\n        </div>\r\n        <div class=\"volunteer-onhold\">\r\n          <onhold\r\n            v-if=\"!inFriendship\"\r\n            :on-hold=\"onHoldValue\"\r\n            @update=\"onHoldUpdate\"\r\n          />\r\n          <sprbutton\r\n            v-else\r\n            :title=\"$t('customerSearch.showHoldCustomerButton')\"\r\n            :size=\"4\"\r\n            class=\"disable-button button-disabled\"\r\n          />\r\n        </div>\r\n        <div v-show=\"isMoveAdmin && !group.netFriendship\" class=\"edit-customer\">\r\n          <sprbutton\r\n            :size=\"4\"\r\n            :title=\"$t('customerSearch.moveCustomerButton')\"\r\n            :tooltip=\"inFriendship || inFriendshipPool ? $t('moveFMGForm.disabledHasFriendship') : ''\"\r\n            click-event=\"move\"\r\n            class=\"edit-button\"\r\n            :disabled=\"!!inFriendship || !!inFriendshipPool\"\r\n            @move=\"moveVolunteer\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import onhold from './OnHold.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import { UserProfileDto, CustomerState, FriendManagementDto } from '@/types/index'\r\n  import { OnHoldData } from '@/types/custom'\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerActions',\r\n\r\n    components: { onhold, sprbutton },\r\n    props: {\r\n      value: {\r\n        type: Object as () => UserProfileDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      loaded: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      showEditButton: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      showAllButtons: {\r\n        type: Boolean,\r\n        default: true\r\n      },\r\n      loading: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n      }\r\n    },\r\n    computed: {\r\n      volunteerState (): CustomerState {\r\n        return this.group.netFriendship ? this.value.friendInfo.netProfile.state : this.value.friendInfo.standardProfile.state\r\n      },\r\n      activityText (): string | LocaleMessage {\r\n        return this.isInactive ? this.$t('volunteerPreview.activateVolunteerButton') : this.$t('volunteerPreview.disableVolunteerButton')\r\n      },\r\n      isInactive (): boolean {\r\n        return this.volunteerState === CustomerState.NonActive\r\n      },\r\n      inactiveText (): string | LocaleMessage {\r\n        if (this.value.friendInfo) {\r\n          switch (this.volunteerState) {\r\n          case CustomerState.PendingApproval:\r\n            return this.$t('customerSearch.noMatchingNotInterviewed')\r\n          case CustomerState.NonActive:\r\n            return this.$t('customerSearch.noMatchingRemoved')\r\n          case CustomerState.OnHold:\r\n            return this.$t('customerSearch.noMatchingOnHold')\r\n          }\r\n        }\r\n\r\n        return ''\r\n      },\r\n      inFriendship (): boolean {\r\n        return (this.volunteerState === CustomerState.ActiveFriendship) || (this.volunteerState === CustomerState.PendingFriend)\r\n      },\r\n      inFriendshipPool (): boolean {\r\n        return (this.group.netFriendship\r\n          ? this.value.friendInfo.netProfile.friendPools && this.value.friendInfo.netProfile.friendPools.length > 0\r\n          : this.value.friendInfo.standardProfile.friendPools && this.value.friendInfo.standardProfile.friendPools.length > 0)\r\n      },\r\n      onHoldValue (): OnHoldData {\r\n        return {\r\n          onHold: this.group.netFriendship ? this.value.friendInfo.netProfile.state === CustomerState.OnHold : this.value.friendInfo.standardProfile.state === CustomerState.OnHold,\r\n          onHoldDeadline: this.group.netFriendship ? this.value.friendInfo.netProfile.onHoldDeadline : this.value.friendInfo.standardProfile.onHoldDeadline,\r\n          onHoldDetails: this.group.netFriendship ? this.value.friendInfo.netProfile.onHoldDetails : this.value.friendInfo.standardProfile.onHoldDetails\r\n        }\r\n      },\r\n      isMoveAdmin (): boolean {\r\n        // @ts-ignore\r\n        const isAdmin = this.hasRole('Admin')\r\n        // @ts-ignore\r\n        const isFriendshipAdmin = this.hasRole('FriendshipAdmin')\r\n        // @ts-ignore\r\n        const isDistrictFriendshipAdmin = this.hasRole('DistrictFriendshipAdmin')\r\n        // @ts-ignore\r\n        const isFriendshipBroker = this.hasRole('FriendshipBroker')\r\n        return isAdmin || isFriendshipAdmin || isDistrictFriendshipAdmin || isFriendshipBroker\r\n      }\r\n    },\r\n    methods: {\r\n      moveVolunteer (): void {\r\n        this.$emit('moveVolunteer')\r\n      },\r\n      editVolunteer () {\r\n        var isNonIdent = this.value.isNonIdent\r\n        var isNetGroup = this.group.netFriendship\r\n        var identPath = isNonIdent ? '' : '/ident'\r\n        var groupTypePath = isNetGroup ? 'netprofile' : 'standardprofile'\r\n        this.$router.push(`/friend/${groupTypePath}${identPath}/edit/${this.group.id}/${this.value.friendInfo.id}`)\r\n      },\r\n      onHoldUpdate (onHold: OnHoldData) {\r\n        if (this.group.netFriendship) {\r\n          if (this.value.friendInfo.netProfile.volunteerInterviewed) {\r\n            this.value.friendInfo.netProfile.state = onHold.onHold ? CustomerState.OnHold : CustomerState.Active\r\n          } else {\r\n            this.value.friendInfo.netProfile.state = onHold.onHold ? CustomerState.OnHold : CustomerState.PendingApproval\r\n          }\r\n          this.value.friendInfo.netProfile.onHoldDeadline = onHold.onHoldDeadline\r\n          this.value.friendInfo.netProfile.onHoldDetails = onHold.onHoldDetails\r\n        } else {\r\n          if (this.value.friendInfo.standardProfile.volunteerInterviewed) {\r\n            this.value.friendInfo.standardProfile.state = onHold.onHold ? CustomerState.OnHold : CustomerState.Active\r\n          } else {\r\n            this.value.friendInfo.standardProfile.state = onHold.onHold ? CustomerState.OnHold : CustomerState.PendingApproval\r\n          }\r\n          this.value.friendInfo.standardProfile.onHoldDeadline = onHold.onHoldDeadline\r\n          this.value.friendInfo.standardProfile.onHoldDetails = onHold.onHoldDetails\r\n        }\r\n        this.saveVolunteer()\r\n      },\r\n      saveVolunteer () {\r\n        this.$emit('saveVolunteer')\r\n      },\r\n      toggleActivity: function () {\r\n        this.$emit('toggleActivity')\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .volunteer-actions {\r\n    .disable-volunteer .nodeletewarning {\r\n      color: $brand-red;\r\n      font-size: 13px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerActions.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerActions.vue?vue&type=template&id=1ff76866\"\nimport script from \"./VolunteerActions.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerActions.vue?vue&type=style&index=0&id=1ff76866&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"volunteer && volunteer.friendInfo\" class=\"volunteercardnet\">\r\n    <div class=\"topsection\">\r\n      <div class=\"circle\">\r\n        <friendshipicon\r\n          v-if=\"friendshipStateOverride\"\r\n          :friendname=\"volunteer.firstName\"\r\n          :state=\"friendshipStateOverride\"\r\n        />\r\n        <friendicon\r\n          v-else\r\n          :friendname=\"volunteer.firstName\"\r\n          :image=\"volunteer.portrait\"\r\n          :state=\"volunteer.friendInfo.netProfile.onHold ? 6 : volunteer.friendInfo.netProfile.state\"\r\n          :multiple-friendships=\"volunteer.friendInfo.netProfile.multipleCustomers\"\r\n        />\r\n      </div>\r\n      <div class=\"details\">\r\n        <div class=\"name\">\r\n          <span>{{ volunteer.firstName }} {{ volunteer.lastName }}</span>\r\n          <div class=\"usericons\">\r\n            <font-awesome-icon v-if=\"!volunteer.isNonIdent\" icon=\"user\" :title=\"$t('customerSearch.isIdent')\" />\r\n            <font-awesome-icon v-if=\"hasMultipleCustomers\" icon=\"users\" :title=\"$t('customerSearch.multipleCustomers')\" />\r\n          </div>\r\n        </div>\r\n        <div class=\"personal\">\r\n          <div>{{ genderAgeText }}</div>\r\n          <div>{{ $t('customerSearch.clientTypeWish') }}: {{ customerTypes || '&ndash;' }}</div>\r\n          <div v-if=\"volunteer.friendInfo.netProfile.shortDescription\" class=\"short-description\">\r\n            <font-awesome-icon icon=\"quote-left\" aria-hidden=\"true\" /><span>{{ volunteer.friendInfo.netProfile.shortDescription }}</span><font-awesome-icon icon=\"quote-left\" aria-hidden=\"true\" />\r\n          </div>\r\n          <div>{{ zipCode }} </div>\r\n        </div>\r\n      </div>\r\n      <div v-show=\"volunteer.friendInfo.lastContacted\" class=\"contacted\">\r\n          {{ lastContacted(volunteer.friendInfo.lastContacted) }}\r\n      </div>\r\n      <div class=\"nofriend\">\r\n        {{ daysWithoutFriend(volunteer.friendInfo.netProfile.lastFriendshipEndDate) }}\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"properties\">\r\n      <div class=\"row property friendshiptypes\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"calendar\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          {{ $t('customerSearch.seek') }}: <strong>{{ friendshipTypes || '&ndash;' }}</strong>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property genders\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"venus-mars\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <div>{{ $t('customerSearch.am') }} <strong>{{ gender.toLowerCase() || '...?' }}</strong></div>\r\n          <div>{{ $t('customerSearch.forFriend') }}: <strong>{{ genderPreferences || '&ndash;' }}</strong></div>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <tickcrosswarning v-model=\"matches.genderMatch\" />\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property age\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"id-badge\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <div>{{ $t('customerSearch.am') }} <strong>{{ age || '?' }} {{ $t('customerSearch.years') }}</strong></div>\r\n          <div>{{ $t('customerSearch.forFriend') }}: <strong>{{ agePreferences || '&ndash;' }}</strong></div>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <tickcross v-model=\"matches.ageMatch\" />\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property language\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon :icon=\"['far', 'comment']\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <div>{{ $t('customerSearch.speak') }}: <strong>{{ normalizeTranslation(volunteer.nativeLanguage) }} ({{ $t('customerSearch.nativeLanguage') }})</strong></div>\r\n          <div v-if=\"spokenLanguages\">\r\n            <strong>{{ spokenLanguages }}</strong>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <tickcross v-model=\"matches.languageMatch\" />\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property interest\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"puzzle-piece\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          {{ $t('customerSearch.interestedIn') }}: <strong>{{ interests || '&ndash;' }}</strong>\r\n        </div>\r\n      </div>\r\n\r\n      <div\r\n        v-if=\"hasNetProfileContactDetails\"\r\n        class=\"row property netcontacts\"\r\n      >\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"wifi\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          {{ $t('customerSearch.netcontactdetails') }}\r\n          <dl v-if=\"volunteer.friendInfo.netProfile.econtactEmail\">\r\n            <dt>{{ $t('connectivity.email') }}</dt>\r\n            <dd>{{ volunteer.friendInfo.netProfile.econtactEmail }}</dd>\r\n          </dl>\r\n          <dl v-if=\"volunteer.friendInfo.netProfile.econtactSkype\">\r\n            <dt>{{ $t('connectivity.skype') }}</dt>\r\n            <dd>{{ volunteer.friendInfo.netProfile.econtactSkype }}</dd>\r\n          </dl>\r\n          <dl v-if=\"volunteer.friendInfo.netProfile.econtactDiscord\">\r\n            <dt>{{ $t('connectivity.discord') }}</dt>\r\n            <dd>{{ volunteer.friendInfo.netProfile.econtactDiscord }}</dd>\r\n          </dl>\r\n          <dl v-if=\"volunteer.friendInfo.netProfile.econtactInstagram\">\r\n            <dt>{{ $t('connectivity.instagram') }}</dt>\r\n            <dd>{{ volunteer.friendInfo.netProfile.econtactInstagram }}</dd>\r\n          </dl>\r\n          <dl v-if=\"volunteer.friendInfo.netProfile.econtactKik\">\r\n            <dt>{{ $t('connectivity.kik') }}</dt>\r\n            <dd>{{ volunteer.friendInfo.netProfile.econtactKik }}</dd>\r\n          </dl>\r\n          <dl v-if=\"volunteer.friendInfo.netProfile.econtactTelegram\">\r\n            <dt>{{ $t('connectivity.telegram') }}</dt>\r\n            <dd>{{ volunteer.friendInfo.netProfile.econtactTelegram }}</dd>\r\n          </dl>\r\n          <dl v-if=\"volunteer.friendInfo.netProfile.econtactFreetext\">\r\n            <dt>{{ $t('connectivity.freetext') }}</dt>\r\n            <dd>{{ volunteer.friendInfo.netProfile.econtactFreetext }}</dd>\r\n          </dl>\r\n        </div>\r\n      </div>\r\n\r\n      <div v-show=\"volunteer.friendInfo.hasHealthCareTraining\" class=\"row property training\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"plus\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <span v-if=\"volunteer.friendInfo.healthCareTrainingFreetext\">{{ $t('customerSearch.hasHealthCareTraining') }} | {{ volunteer.friendInfo.healthCareTrainingFreetext }}</span>\r\n          <span v-else>{{ $t('customerSearch.unspecifiedHealthcareTraining') }}</span>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"moreinfo\">\r\n      <div class=\"row\">\r\n        <div class=\"col description\">\r\n          <sprcol :heading=\"$t('profile.notes')\">\r\n            <div slot=\"body\">\r\n              <sprprivatenotes v-model=\"volunteer.friendInfo\" endpoint=\"volunteerupdateprivatenotesnet\" :friend-management-group-id=\"group.id\" :target-id=\"targetId\" is-net />\r\n            </div>\r\n          </sprcol>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col contact\">\r\n          <sprcol :heading=\"$t('customerSearch.contactTitle')\">\r\n            <div slot=\"body\">\r\n              <p class=\"smalltext\">\r\n                {{ contactDetails }}\r\n              </p>\r\n            </div>\r\n          </sprcol>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"volunteer.friendInfo.netProfile.volunteerInterviewed\" class=\"row\">\r\n        <div class=\"col other\">\r\n          <sprcol :heading=\"$t('customerSearch.otherInfoTitle')\">\r\n            <div slot=\"body\">\r\n              <dl class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerForm.customerInterviewed') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ volunteer.friendInfo.netProfile.volunteerInterviewedDate }} || {{ volunteer.friendInfo.netProfile.volunteerInterviewedBy }}\r\n                </dd>\r\n              </dl>\r\n            </div>\r\n          </sprcol>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"isOnHold\" class=\"row\">\r\n        <div class=\"col onhold\">\r\n          <sprcol :heading=\"$t('volunteerForm.onHoldDescription')\">\r\n            <div slot=\"body\">\r\n              <dl class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerSearch.onHoldUntilDate') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ formattedOnHoldUntilDate }}\r\n                </dd>\r\n              </dl>\r\n              <dl class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerSearch.onHoldComment') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ volunteer.friendInfo.netProfile.onHoldDetails }}\r\n                </dd>\r\n              </dl>\r\n            </div>\r\n          </sprcol>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Actions -->\r\n    <div v-if=\"loaded\" class=\"row button-row\">\r\n      <div v-if=\"showActions || showEditButton\" class=\"actions\">\r\n        <div class=\"col buttons\">\r\n          <volunteerActions\r\n            v-model=\"volunteer\"\r\n            :group=\"group\"\r\n            :loaded=\"loaded\"\r\n            :show-edit-button=\"showEditButton\"\r\n            :show-all-buttons=\"showActions\"\r\n            @saveVolunteer=\"saveVolunteer\"\r\n            @toggleActivity=\"toggleActivity\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div v-if=\"isSending\" class=\"text-center\">\r\n      <Loading />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import friendicon from './FriendIcon.vue'\r\n  import friendshipicon from './FriendshipIcon.vue'\r\n  import tickcross from '../SPRTickCross.vue'\r\n  import tickcrosswarning from '../SPRTickCrossWarning.vue'\r\n  import sprcol from '../SPRCollapsible.vue'\r\n  import sprprivatenotes from '../SPRPrivateNotes.vue'\r\n  import volunteerActions from './VolunteerActions.vue'\r\n  import Loading from '../SPRLoading.vue'\r\n\r\n  import moment from 'moment'\r\n\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import locationhelper from '../../mixins/locationutils.js'\r\n  import scrollhelper from '../../mixins/scroll.js'\r\n  import { UserProfileDto, FriendshipState, FriendManagementDto, CustomerState } from '@/types/index'\r\n  import { YesNoWarning, MatchData } from '@/types/custom'\r\n  import { finnishDateFormat } from '@/helpers/datehelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    volunteer: UserProfileDto,\r\n    loaded: boolean,\r\n    isSending: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerCardNet',\r\n    components: { friendicon, friendshipicon, tickcross, tickcrosswarning, sprcol, sprprivatenotes, volunteerActions, Loading },\r\n    mixins: [enumhelper,\r\n             datehelper,\r\n             locationhelper,\r\n             scrollhelper],\r\n    props: {\r\n      value: {\r\n        type: Object as () => UserProfileDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      showActions: {\r\n        type: Boolean,\r\n        default: () => {\r\n          return true\r\n        }\r\n      },\r\n      showEditButton: {\r\n        type: Boolean,\r\n        default: () => {\r\n          return false\r\n        }\r\n      },\r\n      showMatches: {\r\n        type: Boolean,\r\n        default: () => {\r\n          return false\r\n        }\r\n      },\r\n      matches: {\r\n        type: Object as () => MatchData,\r\n        default: () => {\r\n          return {\r\n            travelData: {\r\n              travelDistanceTime: '',\r\n              isMatch: false,\r\n              isRealDistance: false\r\n            },\r\n            availabilityTimesMatch: false,\r\n            availabilityFrequencyMatch: false,\r\n            friendshipTypesMatch: false,\r\n            genderMatch: YesNoWarning.No, // 'FAIL',\r\n            ageMatch: false,\r\n            languageMatch: false,\r\n            interestMatch: false\r\n          } as MatchData\r\n        }\r\n      },\r\n      friendshipStateOverride: {\r\n        type: Number as () => FriendshipState,\r\n        required: false,\r\n        default: undefined\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        volunteer: this.value,\r\n        loaded: true,\r\n        isSending: false\r\n      }\r\n    },\r\n    computed: {\r\n      isNonIdent (): boolean {\r\n        return this.value.isNonIdent\r\n      },\r\n      zipCode (): string {\r\n        return this.volunteer.isNonIdent ? this.volunteer.zipCode : this.volunteer.useWorkingZipCode ? this.volunteer.workingZipCode : this.volunteer.zipCode\r\n      },\r\n      hasMultipleCustomers (): boolean {\r\n        return !!this.volunteer?.friendInfo?.netProfile?.multipleCustomers\r\n      },\r\n      gender (): string | LocaleMessage {\r\n        // @ts-ignore - mixins not picked up\r\n        return this.getGenderTranslation(this.volunteer.friendInfo.gender)\r\n      },\r\n      isOnHold (): boolean {\r\n        return this.volunteer.friendInfo.netProfile.state === CustomerState.OnHold\r\n      },\r\n      formattedOnHoldUntilDate (): string {\r\n        if (this.volunteer.friendInfo.netProfile.onHoldDeadline) {\r\n          const date = this.volunteer.friendInfo.netProfile.onHoldDeadline\r\n          const formattedDate = moment(date).format('DD.MM.YYYY')\r\n\r\n          return formattedDate\r\n        } else {\r\n          return ''\r\n        }\r\n      },\r\n      age (): number {\r\n        // @ts-ignore - mixins not picked up\r\n        return this.calculateAge(this.volunteer.age)\r\n      },\r\n      genderAgeText (): string {\r\n        return [this.gender, this.age ? `${this.age} ${this.$t('customerSearch.years')}` : ''].filter(Boolean).join(', ')\r\n      },\r\n      customerTypes (): string {\r\n        var self = this\r\n        // @ts-ignore - mixins not picked up\r\n        return this.getNetCustomerTypesTranslations((item) => {\r\n          // @ts-ignore - mixins not picked up\r\n          return _.includes(this.integerIntoBitmaskProxy(self.volunteer.friendInfo.netProfile.customerTypes), item.id)\r\n        }).filter(Boolean).join(', ')\r\n      },\r\n      fastestTransportation (): number | undefined {\r\n        var self = this\r\n        var fastest = [1,\r\n                       2,\r\n                       4,\r\n                       3]\r\n        return _.find(fastest, (item) => {\r\n          return _.includes(self.volunteer.transportation, item)\r\n        })\r\n      },\r\n      transportationText (): string {\r\n        // @ts-ignore - mixins not picked up\r\n        var mode = this.getTransportationTranslation(this.fastestTransportation)\r\n        var time = (this.volunteer.travelTime ? this.volunteer.travelTime : '?') + ' min'\r\n        return [time, mode].filter(Boolean).join(', ')\r\n      },\r\n      availabilityText (): string {\r\n        var self = this\r\n        // @ts-ignore - mixins not picked up\r\n        var times = this.getAvailabilityTimesTranslations((item) => {\r\n          // @ts-ignore - mixins not picked up\r\n          return _.includes(this.integerIntoBitmaskProxy(self.volunteer.friendInfo.netProfile.availabilityTimes), item.id)\r\n        }).filter(Boolean).join(', ')\r\n        // @ts-ignore - mixins not picked up\r\n        var frequency = this.getAvailabilityFrequencyTranslation(this.volunteer.friendInfo.netProfile.availabilityFrequence)\r\n        return [times, frequency].filter(Boolean).join(' | ')\r\n      },\r\n      friendshipTypes (): string {\r\n        // @ts-ignore - mixins not picked up\r\n        return this.getNetFriendshipTypesMaskTranslation(this.volunteer.friendInfo.netProfile.friendshipTypes)\r\n      },\r\n      genderPreferences (): string {\r\n        // @ts-ignore - mixins not picked up\r\n        return this.getGenderPreferencesMaskTranslation(this.volunteer.friendInfo.netProfile.preferredGenders)\r\n      },\r\n      agePreferences (): string {\r\n        // @ts-ignore - mixins not picked up\r\n        return this.getAgePreferencesMaskTranslation(this.volunteer.friendInfo.netProfile.preferredAges)\r\n      },\r\n      spokenLanguages (): string {\r\n        var self = this\r\n        var languages = [] as string[]\r\n        _.forEach(this.volunteer.spokenLanguages, (item) => {\r\n          if (item !== self.volunteer.nativeLanguage) {\r\n            // @ts-ignore - mixins not picked up\r\n            languages.push(self.normalizeTranslation(item))\r\n          }\r\n        })\r\n        languages.push(this.volunteer.otherLanguages)\r\n        return languages.filter(Boolean).join(', ')\r\n      },\r\n      interests (): string {\r\n        // @ts-ignore - mixins not picked up\r\n        return this.getInterestsMaskTranslation(this.volunteer.friendInfo.netProfile.interests)\r\n      },\r\n      contactDetails (): string {\r\n        var phone = this.volunteer.phoneNumber ? `${this.$t('customerSearch.telAbbreviation')} ${this.volunteer.phoneNumber}` : ''\r\n        var email = this.volunteer.email ? `${this.$t('customerSearch.emailAbbreviation')}: ${this.volunteer.email}` : ''\r\n        return [phone, email].filter(Boolean).join(' | ')\r\n      },\r\n      hasNetProfileContactDetails (): boolean {\r\n        var p = this.volunteer.friendInfo.netProfile\r\n        return p && (\r\n          Boolean(p.econtactDiscord) ||\r\n          Boolean(p.econtactEmail) ||\r\n          Boolean(p.econtactFreetext) ||\r\n          Boolean(p.econtactInstagram) ||\r\n          Boolean(p.econtactKik) ||\r\n          Boolean(p.econtactSkype) ||\r\n          Boolean(p.econtactTelegram))\r\n      },\r\n      targetId (): number {\r\n        return this.volunteer.friendInfo.netProfile.id\r\n      }\r\n    },\r\n    watch: {\r\n      value (newVal): void {\r\n        this.volunteer = newVal\r\n      }\r\n    },\r\n    methods: {\r\n      lastContacted (lastContactedDate: Date | undefined): string {\r\n        if (!lastContactedDate) {\r\n          return `${this.$t('customerSearch.neverContacted')}`\r\n        }\r\n        // @ts-ignore (no mixins found)\r\n        return `${this.$t('customerSearch.lastContacted')} ${finnishDateFormat(lastContactedDate)}`\r\n      },\r\n      getUpdateData (): any {\r\n        if (!this.isNonIdent) {\r\n          // @ts-ignore - mixins not picked up\r\n          return this.prune(this.volunteer.friendInfo)\r\n        }\r\n        // @ts-ignore - mixins not picked up\r\n        return this.prune(this.volunteer)\r\n      },\r\n      getUpdateUrl (): string {\r\n        if (!this.isNonIdent) {\r\n          return this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.updateidentnetfriendvolunteer[0]\r\n        }\r\n        return this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.updatenonidentnetfriendvolunteer[0]\r\n      },\r\n      notifyRefresh (): void {\r\n        this.$emit('refresh')\r\n      },\r\n      daysWithoutFriend (lastFriendshipDate): string {\r\n        if (!lastFriendshipDate) {\r\n          return `${this.$t('customerSearch.neverHadFriend')}`\r\n        }\r\n        // @ts-ignore (no mixins found)\r\n        return `${this.calculateDayDiff(lastFriendshipDate)} ${this.$t('customerSearch.daysWithoutFriend')}`\r\n      },\r\n      saveVolunteer (): void {\r\n        var self = this\r\n        self.isSending = true\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            var url = this.getUpdateUrl()\r\n            var data = this.getUpdateData()\r\n            this.$http.put(url, data).then(response => {\r\n              if (response.ok) {\r\n                self.isSending = false\r\n              }\r\n            }, response => {\r\n              self.isSending = false\r\n              if (response.bodyText) {\r\n                // @ts-ignore - mixins not picked up\r\n                this.showAlertError(`${this.$t('common.saveFailed')}: ${response.bodyText}`)\r\n              }\r\n              console.log('Error saving volunteer')\r\n            })\r\n          } else {\r\n            // @ts-ignore - mixins not picked up\r\n            this.firstError()\r\n          }\r\n        })\r\n      },\r\n      toggleActivity (): void {\r\n        this.isSending = true\r\n        var uri = this.$store.state.apiBases.friendservice\r\n        if (this.value.friendInfo.netProfile.state === CustomerState.NonActive) {\r\n          uri += this.$store.state.apiEndpoints.markactivevolunteernet[0]\r\n        } else {\r\n          uri += this.$store.state.apiEndpoints.markinactivevolunteernet[0]\r\n        }\r\n\r\n        uri = uri\r\n          .replace('{volunteerid}', this.value.friendInfo.id)\r\n          .replace('{groupid}', this.group?.id)\r\n\r\n        const self = this\r\n\r\n        this.$http.post(uri).then(() => {\r\n          self.isSending = false\r\n          this.notifyRefresh()\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteercardnet {\r\n    margin-bottom: 30px;\r\n\r\n    .usericons {\r\n        display: inline-block;\r\n        margin-left: 5px;\r\n        color: $brand-red;\r\n      }\r\n\r\n    .topsection {\r\n      min-height: 120px;\r\n      .circle {\r\n        float: left;\r\n        margin-top:20px;\r\n      }\r\n      .contacted {\r\n        text-align: center;\r\n        font-size: 13px;\r\n        margin-top: 15px;\r\n      }\r\n      .details {\r\n        margin-left:70px;\r\n\r\n        .name {\r\n          text-transform: uppercase;\r\n          color: $brand-red;\r\n          font-weight: bold;\r\n          position: relative;\r\n          .edit {\r\n            position: absolute;\r\n            left:-15px;\r\n            text-decoration: none;\r\n            color:$brand-red;\r\n          }\r\n          svg {\r\n            margin-left: 5px;\r\n          }\r\n        }\r\n\r\n        .personal {\r\n          font-size: 0.8em;\r\n          font-weight:bold;\r\n          .short-description {\r\n            font-weight:normal;\r\n            color:$brand-red;\r\n            font-style: italic;\r\n            margin-top: 10px;\r\n            position:relative;\r\n            span {\r\n              padding: 0 5px;\r\n            }\r\n            svg {\r\n              font-size:12px;\r\n              display:inline-block;\r\n            }\r\n          }\r\n        }\r\n      }\r\n      .nofriend {\r\n        text-align: center;\r\n        font-size: 13px;\r\n        margin-top: 15px;\r\n      }\r\n    }\r\n\r\n    .properties {\r\n      clear: both;\r\n      margin-top: 10px;\r\n      margin-bottom: 30px;\r\n\r\n      .property {\r\n        display: flex;\r\n        flex-flow: row nowrap;\r\n        justify-content: space-between;\r\n        align-items: center;\r\n\r\n        min-height: 55px;\r\n        margin: 0;\r\n        border-bottom: solid 1px $brand-grey3;\r\n        padding: 5px 0;\r\n\r\n        .icon {\r\n          flex: 0 0 40px;\r\n          text-align: center;\r\n\r\n          font-size: 2em;\r\n          color:$brand-red;\r\n        }\r\n        //IE11\r\n        *::-ms-backdrop, .icon { margin-top: 15px; }\r\n\r\n        .content {\r\n          margin-left: 10px;\r\n          flex: auto;\r\n\r\n          font-size: 0.8em;\r\n          dl {\r\n            margin-bottom: 0;\r\n            dt {\r\n              font-size: 1em;\r\n            }\r\n          }\r\n        }\r\n\r\n        .match {\r\n          flex: 0 0 40px;\r\n          text-align: right;\r\n\r\n          font-size: 1.5em;\r\n        }\r\n      }\r\n    }\r\n\r\n    .moreinfo {\r\n      .description,\r\n      .contact,\r\n      .other {\r\n        margin-bottom: 20px;\r\n      }\r\n      dl {\r\n        margin-bottom: 0;\r\n        font-size: 0.8em;\r\n        dt {\r\n          font-size: 1em;\r\n        }\r\n      }\r\n    }\r\n\r\n    .button-row {\r\n    text-align: center;\r\n    margin-top: 15px;\r\n\r\n      .load-indicator {\r\n        width: 100%;\r\n        margin-bottom: 15px;\r\n        color: $brand-red;\r\n      }\r\n      button {\r\n        margin-bottom: 15px;\r\n        &.button-disabled {\r\n          border-color: $brand-grey4;\r\n          color: $brand-grey4;\r\n          cursor: not-allowed;\r\n          outline: none;\r\n          &:hover {\r\n            background-color:$brand-white;\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerCardNet.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerCardNet.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerCardNet.vue?vue&type=template&id=1eba185c\"\nimport script from \"./VolunteerCardNet.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerCardNet.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerCardNet.vue?vue&type=style&index=0&id=1eba185c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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 dateHelper from '../helpers/datehelper'\r\nimport bitmaskhelper from '../helpers/bitmaskhelper'\r\nimport * as _ from 'lodash'\r\n\r\nexport default {\r\n  methods: {\r\n    matchAvailabilityFrequency (friendAvailabilityFrequency, customerAvailabilityFrequency) {\r\n      return _.intersection(\r\n        bitmaskhelper.bitmaskToArray(friendAvailabilityFrequency),\r\n        bitmaskhelper.bitmaskToArray(customerAvailabilityFrequency)).length > 0\r\n    },\r\n    matchAvailabilityTimes (friendAvailabilityTimes, customerAvailabilityTimes) {\r\n      return _.intersection(\r\n        bitmaskhelper.bitmaskToArray(friendAvailabilityTimes),\r\n        bitmaskhelper.bitmaskToArray(customerAvailabilityTimes)).length > 0\r\n    },\r\n    // Match the age and desired age in both directions, to decide if it is a match.\r\n    ageMatchFriend (volunteerBirthDate, customerDesiredAge, customerBirthDate, volunteerDesiredAge) {\r\n      return this.isDesiredAge(customerBirthDate, volunteerDesiredAge) &&\r\n      this.isDesiredAge(volunteerBirthDate, customerDesiredAge)\r\n    },\r\n    // see if a birthdate is within the age range they wish to meet with.\r\n    // The age ranges are a string, so make sure if these change in the translations, this method will need to change\r\n    isDesiredAge (bdate, desiredAge) {\r\n      return (this.calculateBitmaskFromAge(dateHelper.calculateAge(bdate)) & desiredAge) !== 0\r\n    },\r\n    calculateBitmaskFromAge (age) {\r\n      if (age < 18) {\r\n        return 1\r\n      }\r\n      if (age <= 29) {\r\n        return 2\r\n      }\r\n      if (age <= 45) {\r\n        return 4\r\n      }\r\n      if (age <= 65) {\r\n        return 8\r\n      }\r\n      if (age <= 79) {\r\n        return 16\r\n      }\r\n      return 32\r\n    }\r\n  }\r\n}\r\n","<template>\r\n  <div class=\"row volunteersummarynet\" :class=\"isInappropriateCss\">\r\n    <div class=\"col-md-6 mb-3 mb-md-0 maincolumn\">\r\n      <div class=\"topsection\">\r\n        <div class=\"controls\">\r\n          <div v-if=\"!isFirst\" class=\"prev\">\r\n            <a href=\"javascript:void(0)\" @click=\"prev\"><font-awesome-icon icon=\"chevron-left\" /></a>\r\n          </div>\r\n          <div v-if=\"!isLast\" class=\"next\">\r\n            <a href=\"javascript:void(0)\" @click=\"next\"><font-awesome-icon icon=\"chevron-right\" /></a>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <volunteercardnet\r\n        v-model=\"volunteer\"\r\n        :group=\"group\"\r\n        :show-matches=\"true\"\r\n        :show-actions=\"false\"\r\n        :show-edit-button=\"true\"\r\n        :matches=\"matchData\"\r\n        @refresh=\"onRefresh\"\r\n      />\r\n    </div>\r\n    <div class=\"col-md-6 sidecolumn\">\r\n      <div class=\"row\">\r\n        <div class=\"col controls\">\r\n          <div class=\"back\">\r\n            <a href=\"javascript:void(0)\" @click=\"close\">{{ $t('customerSearch.close') }}</a>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <customermatchnetconfirm :customer=\"customer\" :volunteer=\"volunteer\" :is-inappropriate=\"isInappropriate\" :score=\"score\" />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import customermatchnetconfirm from './CustomerMatchNetConfirm.vue'\r\n  import volunteercardnet from './VolunteerCardNet.vue'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import locationhelper from '../../mixins/locationutils.js'\r\n  import googlemaps from '../../mixins/googlemaps.js'\r\n  import friendMatch from '../../mixins/friendMatch'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n  import addresshelper from '@/helpers/addresshelper'\r\n  import { LanguageDto, UserProfileDto, FriendCustomerNetDto, FriendManagementDto, PreferredGenders, Gender } from '@/types/index'\r\n  import { TravelData, MatchData, YesNoWarning } from '@/types/custom'\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerSummaryNet',\r\n    components: { customermatchnetconfirm, volunteercardnet },\r\n    mixins: [datehelper, locationhelper, googlemaps, friendMatch],\r\n    props: {\r\n      volunteer: {\r\n        type: Object as () => UserProfileDto,\r\n        required: true\r\n      },\r\n      isFirst: Boolean,\r\n      isLast: Boolean,\r\n      customer: {\r\n        type: Object as () => FriendCustomerNetDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      isInappropriate: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      score: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      isInappropriateCss (): string {\r\n        return this.isInappropriate ? 'inappropriate' : ''\r\n      },\r\n      genderPreferenceMatch (): YesNoWarning {\r\n        if (this.customer.preferredGenders === Number(PreferredGenders.Male | PreferredGenders.Female)) { // male or female\r\n          if (this.volunteer.friendInfo.gender === Gender.Other) { // other or undefined\r\n            return YesNoWarning.Warning // 'WARNING'\r\n          }\r\n        }\r\n        return YesNoWarning.Yes // 'SUCCESS' // back end calculates it, always return true\r\n      },\r\n      ageMatch (): boolean {\r\n        return friendMatch.methods.ageMatchFriend(this.customer.birthdate, this.volunteer.friendInfo.netProfile.preferredAges, this.volunteer.age, this.customer.preferredAges)\r\n      },\r\n      interestMatch (): boolean {\r\n        return this.interestCount > 0\r\n      },\r\n      interestCount (): number {\r\n        return _.intersection(\r\n          bitmaskhelper.bitmaskToArray(this.volunteer.friendInfo.netProfile.interests),\r\n          bitmaskhelper.bitmaskToArray(this.customer.interests)).length\r\n      },\r\n      languageMatch (): boolean {\r\n        // Combine both spoken languages and native language and check for any matches\r\n        var volunteerLanguages = this.volunteer.spokenLanguages\r\n\r\n        // if volunteerLanguages doesn't include the native language yet, add it:\r\n        if (this.volunteer.nativeLanguage !== 'none' && !_.includes(volunteerLanguages, this.volunteer.nativeLanguage)) {\r\n          volunteerLanguages.push(this.volunteer.nativeLanguage)\r\n        }\r\n\r\n        var customerLanguages = this.customer.customerLanguages.map((x: LanguageDto) => x.isoCode)\r\n\r\n        // if customerLanguages doesn't include the native language yet, add it:\r\n        if (this.customer.nativeLanguage !== 'none' && !_.includes(customerLanguages, this.customer.nativeLanguage)) {\r\n          customerLanguages.push(this.customer.nativeLanguage)\r\n        }\r\n\r\n        // Now see if any of the languages in customerLanguages exists in the vulunteerLanguages.\r\n        return volunteerLanguages.some(language => customerLanguages.includes(language))\r\n      },\r\n      customerAddress (): string {\r\n        return addresshelper.formatAddress(this.customer.streetAddress, this.customer.zipCode, this.customer.city)\r\n      },\r\n      volunteerTransportation (): number | undefined {\r\n        var self = this\r\n        var fastest = [1, 2, 4, 3]\r\n        return _.find(fastest, (item) => {\r\n          return _.includes(self.volunteer.transportation, item)\r\n        })\r\n      },\r\n      matchData (): MatchData {\r\n        return {\r\n          travelData: undefined,\r\n          availabilityTimesMatch: undefined,\r\n          genderMatch: this.genderPreferenceMatch,\r\n          ageMatch: this.ageMatch,\r\n          languageMatch: this.languageMatch,\r\n          interestMatch: this.interestMatch\r\n        } as MatchData\r\n      }\r\n    },\r\n    methods: {\r\n      prev (): void {\r\n        this.$emit('prev')\r\n      },\r\n      next (): void {\r\n        this.$emit('next')\r\n      },\r\n      close (): void {\r\n        this.$emit('close')\r\n      },\r\n      onRefresh (): void {\r\n        window.location.reload()\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteersummarynet {\r\n    height: 100%;\r\n    .maincolumn {\r\n      background-color: $brand-white;\r\n      border-left: solid 5px $volunteer-color-strong;\r\n      padding-bottom: 15px;\r\n\r\n      @media (min-width: $media-md) {\r\n        border-right: solid 1px $brand-grey3;\r\n      }\r\n\r\n      .topsection {\r\n        margin-top: 30px;\r\n        .controls {\r\n          a {\r\n            color:$brand-red;\r\n            cursor: pointer;\r\n          }\r\n          .prev {\r\n            font-size:22px;\r\n            position: absolute;\r\n            top: 15px;\r\n            left: 15px;\r\n          }\r\n          .next {\r\n            font-size:22px;\r\n            position: absolute;\r\n            top: 15px;\r\n            right: 15px;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    .sidecolumn {\r\n      background-color: $brand-white;\r\n      .controls {\r\n        a {\r\n          color:$brand-red;\r\n          cursor: pointer;\r\n        }\r\n        .back {\r\n          position: absolute;\r\n          right:20px;\r\n          top: 15px;\r\n        }\r\n      }\r\n    }\r\n\r\n    &.inappropriate {\r\n      .maincolumn {\r\n        color: $brand-grey8;\r\n        background-color: $brand-grey3;\r\n\r\n        .icon, .match {\r\n          svg {\r\n            color: $brand-grey6;\r\n          }\r\n        }\r\n        .friendicon {\r\n          background-color: $brand-grey6;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerSummaryNet.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerSummaryNet.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerSummaryNet.vue?vue&type=template&id=44253ccc\"\nimport script from \"./VolunteerSummaryNet.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerSummaryNet.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerSummaryNet.vue?vue&type=style&index=0&id=44253ccc&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"customermatchresults\"},[_c('div',{staticClass:\"row search\"},[_c('div',{staticClass:\"col-12\"},[_c('searchbox',{attrs:{\"placeholder\":_vm.placeholder},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1)]),_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"row results-list\"},[_c('ul',_vm._l((_vm.filteredItems),function(item){return _c('li',{key:item.id},[_c('customermatchview',{attrs:{\"match\":item},on:{\"volunteerSelected\":function($event){return _vm.onVolunteerSelected(item)}}})],1)}),0)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"customermatchview\",class:_vm.cssClass},[(!_vm.match.match.isNonIdent)?_c('font-awesome-icon',{staticClass:\"identuser\",attrs:{\"icon\":\"user\",\"title\":_vm.$t('customerSearch.isIdent')}}):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-8 col-xl-5\"},[_c('div',{staticClass:\"friendcontainer\"},[_c('div',{staticClass:\"friendimage\"},[_c('friendicon',{attrs:{\"image\":_vm.match.match.portrait,\"friendname\":_vm.match.match.firstName,\"state\":_vm.friendshipState,\"multiple-friendships\":_vm.match.match.multipleCustomers}})],1),_c('div',{staticClass:\"friendinfo\"},[_c('div',{staticClass:\"friendname\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.onVolunteerSelected}},[_vm._v(\" \"+_vm._s(_vm.match.match.firstName)+\" \"+_vm._s(_vm.match.match.lastName)+\" \")])]),_c('div',{staticClass:\"frienddetails\"},[_c('div',{staticClass:\"age\"},[_vm._v(\" \"+_vm._s(_vm.genderAgeText)+\" \")]),_c('div',{staticClass:\"area\"},[_vm._v(\" \"+_vm._s(_vm.section)+\" \")])])])])]),_c('div',{staticClass:\"d-none d-xl-block col-xl-4\"},[_c('div',{staticClass:\"description-container\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.match.match.shortDescription),expression:\"match.match.shortDescription\"}],staticClass:\"description\"},[_vm._v(\" “\"+_vm._s(_vm.match.match.shortDescription)+\"” \")])])]),_c('div',{staticClass:\"col-4 col-xl-3 starblock\"},[_c('div',{staticClass:\"customercontainer justify-content-right\"},[(_vm.match.isInappropriateMatch)?_c('div',{staticClass:\"inappropriatelabel\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.inappropriate'))+\" \")]):_c('stars',{attrs:{\"score\":_vm.match.score,\"is-net\":_vm.isNetItem}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 nocustomer\"},[_vm._v(\" \"+_vm._s(_vm.daysWithoutFriend(_vm.match.match.lastFriendshipEndDate))+\" \")])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"customermatchview\" :class=\"cssClass\">\r\n    <font-awesome-icon v-if=\"!match.match.isNonIdent\" icon=\"user\" class=\"identuser\" :title=\"$t('customerSearch.isIdent')\" />\r\n    <div class=\"row\">\r\n      <div class=\"col-8 col-xl-5\">\r\n        <div class=\"friendcontainer\">\r\n          <div class=\"friendimage\">\r\n            <friendicon :image=\"match.match.portrait\" :friendname=\"match.match.firstName\" :state=\"friendshipState\" :multiple-friendships=\"match.match.multipleCustomers\" />\r\n          </div>\r\n          <div class=\"friendinfo\">\r\n            <div class=\"friendname\">\r\n              <a href=\"javascript:void(0)\" @click=\"onVolunteerSelected\">\r\n                {{ match.match.firstName }} {{ match.match.lastName }}\r\n              </a>\r\n            </div>\r\n            <div class=\"frienddetails\">\r\n              <div class=\"age\">\r\n                {{ genderAgeText }}\r\n              </div>\r\n              <div class=\"area\">\r\n                {{ section }}\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"d-none d-xl-block col-xl-4\">\r\n        <div class=\"description-container\">\r\n          <div v-show=\"match.match.shortDescription\" class=\"description\">\r\n            &#8220;{{ match.match.shortDescription }}&#8221;\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-4 col-xl-3 starblock\">\r\n        <div class=\"customercontainer justify-content-right\">\r\n          <div v-if=\"match.isInappropriateMatch\" class=\"inappropriatelabel\">\r\n            {{ $t('customerSearch.inappropriate') }}\r\n          </div>\r\n          <stars v-else :score=\"match.score\" :is-net=\"isNetItem\" />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 nocustomer\">\r\n        {{ daysWithoutFriend(match.match.lastFriendshipEndDate) }}\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import friendicon from './FriendIcon.vue'\r\n  import stars from '../SPRStars.vue'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import { MatchItemNetVolunteerDto, MatchItemStandardVolunteerDto, CustomerState } from '../../types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerMatchView',\r\n    components: { friendicon, stars },\r\n    mixins: [enumhelper, datehelper],\r\n    props: {\r\n      match: {\r\n        type: Object as () => MatchItemNetVolunteerDto | MatchItemStandardVolunteerDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      cssClass (): string {\r\n        return this.match.isInappropriateMatch ? 'inappropriate' : ''\r\n      },\r\n      isNetItem (): boolean {\r\n        return this.isMatchItemNetVolunteer(this.match)\r\n      },\r\n      computedGender (): string | LocaleMessage {\r\n        // @ts-ignore (cant find mixin)\r\n        return this.getGenderTranslation(this.match.match.gender)\r\n      },\r\n      computedAge (): number {\r\n        // @ts-ignore (cant find mixin)\r\n        return this.calculateAge(this.match.match.birthDate)\r\n      },\r\n      genderAgeText (): string {\r\n        return [this.computedGender, this.computedAge ? `${this.computedAge} ${this.$t('customerSearch.years')}` : ''].filter(Boolean).join(', ')\r\n      },\r\n      friendshipState (): CustomerState {\r\n        return this.match.match.state\r\n      },\r\n      section (): string {\r\n        var section = _.find(this.$store.state.sections, (s) => {\r\n          return s.id === this.match.match.sectionId\r\n        })\r\n\r\n        return (section ? section.name : '') + this.isNetItem ? ' (' + this.match.match.zipCode + ')' : ''\r\n      }\r\n    },\r\n    methods: {\r\n      onVolunteerSelected (): void {\r\n        this.$emit('volunteerSelected', this.match)\r\n      },\r\n      daysWithoutFriend (lastFriendshipDate): string {\r\n        if (!lastFriendshipDate) {\r\n          return `${this.$t('customerSearch.neverHadFriend')}`\r\n        }\r\n        // @ts-ignore (no mixins found)\r\n        return `${this.calculateDayDiff(lastFriendshipDate)} ${this.$t('customerSearch.daysWithoutFriend')}`\r\n      },\r\n      isMatchItemNetVolunteer (match: MatchItemNetVolunteerDto | MatchItemStandardVolunteerDto): match is MatchItemNetVolunteerDto {\r\n        return (match as MatchItemNetVolunteerDto).match.friendVolunteerProfileNetId !== undefined\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customermatchview {\r\n    background-color: $brand-white;\r\n    border-left: solid 5px $volunteer-color-strong;\r\n    margin-bottom: 10px;\r\n    padding: 10px;\r\n    position: relative;\r\n\r\n    .identuser {\r\n      position: absolute;\r\n      top: 5px;\r\n      left: 5px;\r\n      color: $brand-red;\r\n    }\r\n\r\n    .starblock {\r\n      display: flex;\r\n      justify-content: center;\r\n      flex-direction: column;\r\n    }\r\n\r\n    .customercontainer {\r\n      .identuser {\r\n        position: absolute;\r\n        right: 20px;\r\n        color: $brand-red;\r\n      }\r\n      .customerimage {\r\n        float: right;\r\n        margin-left: 5px;\r\n      }\r\n      .summary {\r\n        font-size: 13px;\r\n        display: inline-block;\r\n        text-align: right;\r\n        .customername {\r\n          text-transform: uppercase;\r\n          color: $brand-red;\r\n          font-weight: bold;\r\n          display: block;\r\n        }\r\n      }\r\n\r\n    }\r\n    .nocustomer {\r\n        text-align: center;\r\n        font-size: 13px;\r\n      }\r\n    &.inappropriate {\r\n      color: $brand-grey6;\r\n      background-color: $brand-grey3;\r\n\r\n      .friendinfo {\r\n        .friendname a {\r\n          color: $brand-grey8;\r\n        }\r\n      }\r\n\r\n      .friendimage .friendicon {\r\n        background-color: $brand-grey6;\r\n      }\r\n\r\n      .inappropriatelabel {\r\n        font-size: 13px;\r\n        font-weight: bold;\r\n        text-transform: uppercase;\r\n        color: $brand-grey8;\r\n        text-align: center;\r\n      }\r\n    }\r\n  }\r\n\r\n  .description-container {\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n    height: 100%;\r\n    .description {\r\n      color: $brand-red;\r\n      font-style: italic;\r\n      font-size: 13px;\r\n      text-align: center;\r\n      align-self: center;\r\n    }\r\n  }\r\n\r\n  .friendcontainer {\r\n    display: flex;\r\n    align-items: center;\r\n    .friendinfo {\r\n      align-items: center;\r\n      font-size: 13px;\r\n      display: inline-block;\r\n      text-align: left;\r\n      .friendname {\r\n        display: block;\r\n        a {\r\n          color: $brand-red;\r\n          text-transform: uppercase;\r\n          font-weight: bold;\r\n        }\r\n      }\r\n    }\r\n    .friendimage {\r\n      align-items: center;\r\n      display: inline-block;\r\n      margin-right: 5px;\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchView.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchView.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerMatchView.vue?vue&type=template&id=43777e67\"\nimport script from \"./CustomerMatchView.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerMatchView.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerMatchView.vue?vue&type=style&index=0&id=43777e67&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"customermatchresults\">\r\n    <div class=\"row search\">\r\n      <div class=\"col-12\">\r\n        <searchbox v-model=\"search\" :placeholder=\"placeholder\" />\r\n      </div>\r\n    </div>\r\n    <div class=\"col\">\r\n      <div class=\"row results-list\">\r\n        <ul>\r\n          <li v-for=\"item in filteredItems\" :key=\"item.id\">\r\n            <customermatchview :match=\"item\" @volunteerSelected=\"onVolunteerSelected(item)\" />\r\n          </li>\r\n        </ul>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import customermatchview from './CustomerMatchView.vue'\r\n  import searchbox from '../SPRSearchBox.vue'\r\n  import { MatchItemNetVolunteerDto, MatchItemStandardVolunteerDto } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    placeholder: string | LocaleMessage,\r\n    search: string\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerMatchResults',\r\n    components: { customermatchview, searchbox },\r\n    props: {\r\n      list: {\r\n        type: Array as () => Array<MatchItemNetVolunteerDto> | Array<MatchItemStandardVolunteerDto>,\r\n        required: true\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        placeholder: this.$t('customerSearch.friendSearchPlaceholder'),\r\n        search: ''\r\n      }\r\n    },\r\n    computed: {\r\n      filteredItems (): Array<MatchItemNetVolunteerDto> | Array<MatchItemStandardVolunteerDto> {\r\n        if (this.search === '') {\r\n          return this.list\r\n        }\r\n        const searchTerms = this.search.toLowerCase().split(/[^a-z0-9åäö]/)\r\n\r\n        const textParts: string[] = _.filter(searchTerms, s => { return isNaN(Number(s)) })\r\n        const zipParts: string[] = _.filter(searchTerms, s => { return !isNaN(Number(s)) })\r\n\r\n        // @ts-ignore\r\n        const result =  _.filter(this.list, (item: MatchItemNetVolunteerDto | MatchItemStandardVolunteerDto) => {\r\n          return (\r\n            _.every(textParts, s => {\r\n              return _.includes(item.match.firstName.toLowerCase() + ' ' + item.match.lastName.toLowerCase(), s)\r\n            }) ||\r\n            _.every(textParts, s => {\r\n              return _.includes(item.match.shortDescription.toLowerCase(), s)\r\n            })\r\n          ) && (\r\n            !zipParts.length || _.some(zipParts, z => {\r\n              return _.startsWith(item.match.zipCode, z)\r\n            })\r\n          )\r\n        }) as Array<MatchItemNetVolunteerDto> | Array<MatchItemStandardVolunteerDto>\r\n        \r\n        return result\r\n      }\r\n    },\r\n    methods: {\r\n      onVolunteerSelected (item: MatchItemNetVolunteerDto | MatchItemStandardVolunteerDto): void {\r\n        this.$emit('volunteerSelected', item)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .customermatchresults {\r\n    ul {\r\n      width: 100%;\r\n      list-style-type: none;\r\n      margin: 0;\r\n      padding: 0;\r\n        li {\r\n          margin:0;\r\n          padding:0;\r\n        }\r\n      }\r\n    .search {\r\n      margin-bottom: 15px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchResults.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchResults.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerMatchResults.vue?vue&type=template&id=7a381aba\"\nimport script from \"./CustomerMatchResults.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerMatchResults.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerMatchResults.vue?vue&type=style&index=0&id=7a381aba&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"customer\" class=\"container customerfindnetmatch\">\r\n    <div class=\"row header\">\r\n      <div class=\"col-lg-4 col-xl-4\">\r\n        <HomeButton\r\n          v-if=\"group\"\r\n          :group-id=\"group.id\"\r\n        />\r\n        <BackButton />\r\n      </div>\r\n      <div v-if=\"volunteerSelected\" class=\"col-lg-8 col-xl-9 d-none d-lg-block\">\r\n        <h4>{{ $t('customerSearch.customerMatchTitle') }}</h4>\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"group\" class=\"row content\">\r\n      <div class=\"col-lg-4 col-xl-3 mb-3 mb-lg-0 customer-area\">\r\n        <CustomerCardNet\r\n          v-model=\"customer\"\r\n          :group=\"group\"\r\n          @refresh=\"onRefresh\"\r\n        />\r\n        <div v-show=\"isSending\" class=\"loading\">\r\n          <div class=\"spinner\">\r\n            <loading />\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-lg-8 col-xl-9 volunteer-area\">\r\n        <div v-if=\"!volunteerSelected\" class=\"row volunteer-selection\">\r\n          <div class=\"col-md-4 col-lg-4 order-md-2 search-filter\">\r\n            <!--<matchfilter v-model=\"matchFilter\" :is-net=\"group.netFriendship\" @filterchanged=\"onFilterChanged\" />-->\r\n            <customerFilter\r\n              :group=\"group\"\r\n              :filter-type=\"'VOLUNTEER'\"\r\n              :show-all=\"false\"\r\n              @filterchanged=\"onFilterChanged\"\r\n            />\r\n          </div>\r\n\r\n          <div class=\"col-md-8 col-lg-8 order-md-1 volunteer-list\">\r\n            <h4>{{ $t('customerSearch.customerMatchTitle') }}</h4>\r\n            <customermatchresults :list=\"filteredvolunteers\" @volunteerSelected=\"onVolunteerSelected\" />\r\n            <div v-show=\"isLoading\" class=\"loading\">\r\n              <div class=\"spinner\">\r\n                <loading />\r\n              </div>\r\n            </div>\r\n            <div v-if=\"!isLoading && noResults\" class=\"noresults infocontainer\">\r\n              <div class=\"info warning\">\r\n                <font-awesome-icon icon=\"exclamation-triangle\" />{{ $t('customerSearch.noResults') }}\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"volunteerSelected\" class=\"row d-lg-none volunteer-heading\">\r\n          <h4>{{ $t('customerSearch.customerMatchTitle') }}</h4>\r\n        </div>\r\n        <div v-if=\"group && volunteerSelected\" class=\"row ml-lg-1 volunteer-summary\">\r\n          <div class=\"col\">\r\n            <VolunteerSummaryNet\r\n              :volunteer=\"volunteer\"\r\n              :customer=\"customer\"\r\n              :group=\"group\"\r\n              :score=\"score\"\r\n              :is-first=\"isFirst\"\r\n              :is-last=\"isLast\"\r\n              :is-inappropriate=\"isInappropriate\"\r\n              @prev=\"onPrev\"\r\n              @next=\"onNext\"\r\n              @close=\"onClose\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n  import CustomerCardNet from './CustomerCardNet.vue'\r\n  import VolunteerSummaryNet from './VolunteerSummaryNet.vue'\r\n  import customermatchresults from './CustomerMatchResults.vue'\r\n  import BackButton from '../BackButton.vue'\r\n  import HomeButton from '../HomeButton.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import datehelper from '@/helpers/datehelper'\r\n  import friendMatch from '@/mixins/friendMatch'\r\n  import customerFilter from './CustomerFilter.vue'\r\n\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n\r\n  import { MatchItemNetVolunteerDto, FriendCustomerNetDto, UserProfileDto, FriendManagementDto, FriendshipNetCommandCriteria, GetFriendProfileByFriendVolunteerIdCriteria } from '@/types/index'\r\n  import { MatchFilter, NetMatchPair } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    volunteerlist: Array<MatchItemNetVolunteerDto>,\r\n    filteredvolunteers: Array<MatchItemNetVolunteerDto>,\r\n    customer: undefined | FriendCustomerNetDto,\r\n    volunteer: undefined | UserProfileDto,\r\n    score: number,\r\n    isLoading: boolean,\r\n    isSending: boolean,\r\n    isAuthorized: boolean,\r\n    matchFilter: MatchFilter\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerFindNetMatch',\r\n    components: { CustomerCardNet, customerFilter, VolunteerSummaryNet, customermatchresults, BackButton, HomeButton, loading },\r\n    mixins: [friendMatch],\r\n    props: {\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      customerid: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        volunteerlist: [] as Array<MatchItemNetVolunteerDto>,\r\n        filteredvolunteers: [] as Array<MatchItemNetVolunteerDto>,\r\n        customer: undefined,\r\n        volunteer: undefined,\r\n        score: 0,\r\n        isLoading: false,\r\n        isSending: false,\r\n        isAuthorized: false,\r\n        matchFilter: {\r\n          customerTypes: [],\r\n          languages: [],\r\n          motherTongs: [],\r\n          ages: [],\r\n          hasGroupMembership: false,\r\n          genders: []\r\n        } as MatchFilter\r\n      }\r\n    },\r\n    computed: {\r\n      noResults (): boolean {\r\n        return this.volunteerlist === null || this.filteredvolunteers.length === 0\r\n      },\r\n      isFirst (): boolean {\r\n        if (this.filteredvolunteers.length <= 1) return true\r\n        return this.volunteer\r\n          // @ts-ignore: Object is possibly 'null'.\r\n          ? this.volunteer.friendInfo.id === this.filteredvolunteers[0].match.friendVolunteerId\r\n          : false\r\n      },\r\n      isLast (): boolean {\r\n        if (this.filteredvolunteers.length <= 1) return true\r\n        return this.volunteer\r\n          // @ts-ignore: Object is possibly 'null'.\r\n          ? this.volunteer.friendInfo.id === this.filteredvolunteers[this.filteredvolunteers.length - 1].match.friendVolunteerId\r\n          : false\r\n      },\r\n      isInappropriate (): boolean {\r\n        if (!this.volunteer) return false\r\n        // @ts-ignore: Object is possibly 'null'.\r\n        var selectedVolunteer = this.filteredvolunteers.find(x => x.match.friendVolunteerId === this.volunteer.friendInfo.id)\r\n        return selectedVolunteer ? selectedVolunteer.isInappropriateMatch : false\r\n      },\r\n      hasFriendship (): boolean {\r\n        return this.customer\r\n          // @ts-ignore: Object is possibly 'null'.\r\n          ? this.customer.friendships != null && this.customer.friendships.length > 0\r\n          : false\r\n      },\r\n      volunteerSelected (): boolean {\r\n        return !_.isEmpty(this.volunteer)\r\n      }\r\n    },\r\n    created (): void {\r\n      this.getCustomer()\r\n      this.getVolunteers()\r\n    },\r\n    mounted (): void {\r\n      window.scrollTo(0, 0)\r\n\r\n      this.$bus.$on('inappropriate-friendship', this.onInappropriateFriendship)\r\n      this.$bus.$on('end-inappropriate-friendship', this.onEndInappropriateFriendship)\r\n      this.$bus.$on('initiate-friendship', this.onInitiate)\r\n    },\r\n    beforeDestroy (): void {\r\n      this.$bus.$off('inappropriate-friendship')\r\n      this.$bus.$off('end-inappropriate-friendship')\r\n      this.$bus.$off('initiate-friendship')\r\n    },\r\n    methods: {\r\n      getCustomer (): void {\r\n        var self = this\r\n        this.isLoading = true\r\n        var getCustomerUrl = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customergetnetbyid[0]}`.replace('{customerid}', this.customerid.toString()).replace('{groupid}', this.group.id.toString())\r\n\r\n        this.$http.get(getCustomerUrl).then(resp => {\r\n          self.customer = resp.data\r\n          this.isLoading = false\r\n        })\r\n      },\r\n      getVolunteer (friendVolunteerId): void {\r\n        var self = this\r\n        var criteria: GetFriendProfileByFriendVolunteerIdCriteria = {\r\n          friendManagementGroupId: this.group.id,\r\n          friendVolunteerId: friendVolunteerId,\r\n          includeFriendships: true,\r\n          includeFriendPools: false\r\n        }\r\n        var getVolunteerUrl = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteergetnetprofilebyid[0]}`\r\n        this.isLoading = true\r\n        this.$http.post(getVolunteerUrl, criteria).then(resp => {\r\n          if (resp.data) {\r\n            self.volunteer = resp.data\r\n            self.isLoading = false\r\n          } else {\r\n            this.displayError(this.$t('common.fetchFailed'))\r\n          }\r\n        }, f => this.displayError(f))\r\n      },\r\n      getVolunteers (): void {\r\n        var self = this\r\n        this.isLoading = true\r\n        var volunteersUrl = `${this.$store.state.apiBases.friendservice}${this.$store.state.apiEndpoints.customerfindnetmatch[0]}`\r\n\r\n        volunteersUrl = volunteersUrl.replace('{customerid}', this.customerid.toString()).replace('{groupid}', this.group.id.toString())\r\n        this.$http.get(volunteersUrl).then(resp => {\r\n          self.volunteerlist = _.reverse(_.sortBy(resp.data.items, ['score']))\r\n          self.filteredvolunteers = self.volunteerlist\r\n          self.isLoading = false\r\n        })\r\n      },\r\n      onVolunteerSelected (match: MatchItemNetVolunteerDto): void {\r\n        window.scrollTo(0, 0)\r\n        // load volunteer from back end\r\n        this.getVolunteer(match.match.friendVolunteerId)\r\n        this.score = match.score\r\n      },\r\n      onInitiate (activation: NetMatchPair): void {\r\n        var data: FriendshipNetCommandCriteria = {\r\n          customerProfileNetId: activation.customer.id,\r\n          volunteerNetProfileId: activation.volunteer.friendInfo.netProfile.id,\r\n          groupId: this.group.id\r\n        }\r\n        var url = `${this.$store.state.apiBases.friendservice}${this.$store.state.apiEndpoints.friendshipinitiatenet[0]}`\r\n        this.$http.post(url, data).then(resp => {\r\n          this.$router.push(`/friend/customermatch/${this.group.id}/${this.customer?.id}/${activation.volunteer.friendInfo.id}`)\r\n        }, f => this.displayError(f || this.$t('common.fetchFailed')))\r\n      },\r\n      onPrev (): void {\r\n        var currentVolunteer = _.findIndex(this.filteredvolunteers, (item: MatchItemNetVolunteerDto) => {\r\n          if (!this.volunteer) return false\r\n          return item.match.friendVolunteerId === this.volunteer.friendInfo.id\r\n        })\r\n\r\n        if (currentVolunteer > 0) {\r\n          var id = this.filteredvolunteers[currentVolunteer - 1].match.friendVolunteerId\r\n          this.getVolunteer(id)\r\n          this.score = this.filteredvolunteers[currentVolunteer - 1].score\r\n        }\r\n      },\r\n      onNext (): void {\r\n        var currentVolunteer = _.findIndex(this.filteredvolunteers, (item: MatchItemNetVolunteerDto) => {\r\n          if (!this.volunteer) return false\r\n          return item.match.friendVolunteerId === this.volunteer.friendInfo.id\r\n        })\r\n\r\n        if (currentVolunteer > -1 && currentVolunteer < this.filteredvolunteers.length - 1) {\r\n          this.getVolunteer(this.filteredvolunteers[currentVolunteer + 1].match.friendVolunteerId)\r\n          this.score = this.filteredvolunteers[currentVolunteer + 1].score\r\n        }\r\n      },\r\n      onClose (): void {\r\n        this.volunteer = undefined\r\n      },\r\n      onInappropriateFriendship (friendshipInfo: NetMatchPair): void {\r\n        var data: FriendshipNetCommandCriteria = {\r\n          customerProfileNetId: friendshipInfo.customer.id,\r\n          volunteerNetProfileId: friendshipInfo.volunteer.friendInfo.netProfile.id,\r\n          groupId: this.group.id\r\n        }\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipmarkinappropriatenet[0]}`\r\n        this.$http.post(url, data).then((resp) => {\r\n          this.volunteer = undefined\r\n          this.getVolunteers()\r\n        })\r\n      },\r\n      onEndInappropriateFriendship (friendshipInfo: NetMatchPair): void {\r\n        var data: FriendshipNetCommandCriteria = {\r\n          customerProfileNetId: friendshipInfo.customer.id,\r\n          volunteerNetProfileId: friendshipInfo.volunteer.friendInfo.netProfile.id,\r\n          groupId: this.group.id\r\n        }\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipendinappropriatenet[0]}`\r\n        this.isLoading = true\r\n        this.$http.post(url, data).then((resp) => {\r\n          this.volunteer = undefined\r\n          this.getVolunteers()\r\n        }, f => {\r\n          // @ts-ignore Doesnt pick up mixins\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        })\r\n      },\r\n      onFilterChanged (val: MatchFilter): void {\r\n        var self = this\r\n        this.matchFilter = val\r\n        this.filteredvolunteers = this.volunteerlist.filter((matchresult: MatchItemNetVolunteerDto) => {\r\n          return (!self.matchFilter.customerTypes?.length || bitmaskhelper.bitmaskToArray(matchresult.match.customerTypes).some(customerType => self.matchFilter.customerTypes?.includes(customerType))) &&\r\n            (!self.matchFilter.languages?.length || matchresult.match.spokenLanguages.some(spokenLanguage => self.matchFilter.languages?.includes(spokenLanguage))) &&\r\n            (!self.matchFilter.motherTongs?.length || self.matchFilter.motherTongs?.includes(matchresult.match.nativeLanguage)) &&\r\n            (!self.matchFilter.ages?.length || self.matchFilter.ages?.includes(friendMatch.methods.calculateBitmaskFromAge(datehelper.calculateAge(matchresult.match.birthDate))))\r\n        })\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      },\r\n      onRefresh (): void {\r\n        window.location.reload()\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customerfindnetmatch {\r\n    .header {\r\n      margin-top: 10px;\r\n      margin-bottom: 15px;\r\n      .nav-header {\r\n        border-bottom: 0;\r\n      }\r\n      h4 {\r\n        padding-left: 10px;\r\n      }\r\n    }\r\n    .content {\r\n\r\n      .customer-area {\r\n        padding-top: 30px;\r\n        background-color: $brand-white;\r\n        border-left: solid 5px $customer-color-strong;\r\n      }\r\n\r\n      .volunteer-area {\r\n        .volunteer-selection {\r\n          height: 100%;\r\n          .search-filter {\r\n            background-color:$brand-white;\r\n            padding-top: 20px;\r\n          }\r\n          .volunteer-list {\r\n            h4 {\r\n              margin: 20px 0 10px 0;\r\n            }\r\n            .loading {\r\n              position: absolute;\r\n              display: flex;\r\n              top: 0;\r\n              left: 0;\r\n              bottom: 0;\r\n              right: 0;\r\n              height: 100%;\r\n              width: 100%;\r\n              background-color:rgba(255, 255, 255, 0.8);\r\n              .spinner {\r\n                margin: auto;\r\n                color:$brand-red;\r\n              }\r\n            }\r\n            .infocontainer {\r\n              height: 200px;\r\n              width: 100%;\r\n              background-color:$brand-white;\r\n              display: flex;\r\n              justify-content: center;\r\n              align-items:center;\r\n              align-content: center;\r\n              padding:50px;\r\n              .info {\r\n                margin: auto;\r\n                svg {\r\n                  margin-right: 5px;\r\n                  color:$brand-red;\r\n                  &.warning {\r\n                    color:$brand-warning;\r\n                  }\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n        .volunteer-heading {\r\n          h4 {\r\n            padding-left: 10px;\r\n          }\r\n        }\r\n        .volunteer-summary {\r\n          @media (min-width: $media-lg) {\r\n            height: 100%;\r\n          }\r\n        }\r\n      }\r\n\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerFindNetMatch.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerFindNetMatch.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerFindNetMatch.vue?vue&type=template&id=5080b8a2\"\nimport script from \"./CustomerFindNetMatch.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerFindNetMatch.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerFindNetMatch.vue?vue&type=style&index=0&id=5080b8a2&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.customer)?_c('div',{staticClass:\"container customerfindstandardmatch\"},[_c('div',{staticClass:\"row header\"},[_c('div',{staticClass:\"col-lg-4 col-xl-4\"},[(_vm.group)?_c('HomeButton',{attrs:{\"group-id\":_vm.group.id}}):_vm._e(),_c('BackButton')],1),(_vm.volunteerSelected)?_c('div',{staticClass:\"col-lg-8 col-xl-9 d-none d-lg-block\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.customerMatchTitle')))])]):_vm._e()]),(_vm.group)?_c('div',{staticClass:\"row content\"},[_c('div',{staticClass:\"col-lg-4 col-xl-3 mb-3 mb-lg-0 customer-area\"},[_c('CustomerCardStandard',{attrs:{\"group\":_vm.group},on:{\"refresh\":_vm.onRefresh},model:{value:(_vm.customer),callback:function ($$v) {_vm.customer=$$v},expression:\"customer\"}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isSending),expression:\"isSending\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])],1),_c('div',{staticClass:\"col-lg-8 col-xl-9 volunteer-area\"},[(!_vm.volunteerSelected)?_c('div',{staticClass:\"row volunteer-selection\"},[_c('div',{staticClass:\"col-md-4 col-lg-4 order-md-2 search-filter\"},[_c('customerFilter',{attrs:{\"group\":_vm.group,\"filter-type\":'VOLUNTEER',\"show-all\":false},on:{\"filterchanged\":_vm.onFilterChanged}})],1),_c('div',{staticClass:\"col-md-8 col-lg-8 order-md-1 volunteer-list\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.customerMatchTitle')))]),_c('customermatchresults',{attrs:{\"list\":_vm.filteredvolunteers},on:{\"volunteerSelected\":_vm.onVolunteerSelected}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)]),(!_vm.isLoading && _vm.noResults)?_c('div',{staticClass:\"noresults infocontainer\"},[_c('div',{staticClass:\"info warning\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(_vm._s(_vm.$t('customerSearch.noResults'))+\" \")],1)]):_vm._e()],1)]):_vm._e(),(_vm.volunteerSelected)?_c('div',{staticClass:\"row d-lg-none volunteer-heading\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.customerMatchTitle')))])]):_vm._e(),(_vm.group && _vm.volunteerSelected)?_c('div',{staticClass:\"row ml-lg-1 volunteer-summary\"},[_c('div',{staticClass:\"col\"},[_c('VolunteerSummaryStandard',{attrs:{\"volunteer\":_vm.volunteer,\"customer\":_vm.customer,\"group\":_vm.group,\"score\":_vm.score,\"is-first\":_vm.isFirst,\"is-last\":_vm.isLast,\"is-inappropriate\":_vm.isInappropriate},on:{\"prev\":_vm.onPrev,\"next\":_vm.onNext,\"close\":_vm.onClose}})],1)]):_vm._e()])]):_vm._e()]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row volunteersummarystandard\",class:_vm.isInappropriateCss},[_c('div',{staticClass:\"col-md-6 mb-3 mb-md-0 maincolumn\"},[_c('div',{staticClass:\"topsection\"},[_c('div',{staticClass:\"controls\"},[(!_vm.isFirst)?_c('div',{staticClass:\"prev\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.prev}},[_c('font-awesome-icon',{attrs:{\"icon\":\"chevron-left\"}})],1)]):_vm._e(),(!_vm.isLast)?_c('div',{staticClass:\"next\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.next}},[_c('font-awesome-icon',{attrs:{\"icon\":\"chevron-right\"}})],1)]):_vm._e()])]),_c('volunteercardstandard',{attrs:{\"group\":_vm.group,\"show-matches\":true,\"show-actions\":false,\"show-edit-button\":true,\"matches\":_vm.matchData},on:{\"refresh\":_vm.onRefresh},model:{value:(_vm.volunteer),callback:function ($$v) {_vm.volunteer=$$v},expression:\"volunteer\"}})],1),_c('div',{staticClass:\"col-md-6 sidecolumn\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col controls\"},[_c('div',{staticClass:\"back\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$t('customerSearch.close')))])])])]),_c('customermatchstandardconfirm',{attrs:{\"customer\":_vm.customer,\"volunteer\":_vm.volunteer,\"group\":_vm.group,\"is-inappropriate\":_vm.isInappropriate,\"score\":_vm.score}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"customermatchstandardconfirm\"},[(_vm.isInappropriate)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col maintitle\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('customerSearch.inappropriate')))])])]),_c('div',{staticClass:\"row instructions\"},[_c('div',{staticClass:\"col instructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.inappropriateInstructions'))+\" \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col buttons\"},[_c('sprbutton',{staticClass:\"end-inappropriate-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.endInappropriate'),\"click-event\":\"endinappropriate\"},on:{\"endinappropriate\":_vm.onEndInappropriate}})],1)])]):_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col maintitle\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('customerSearch.matchConfirmTitle')))])])]),_c('div',{staticClass:\"row starscore\"},[_c('div',{staticClass:\"col-12\"},[_c('stars',{attrs:{\"score\":_vm.score}})],1)]),_c('div',{staticClass:\"row instructions\"},[_c('div',{staticClass:\"col instructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.createMatchInstructions'))+\" \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col buttons\"},[_c('sprbutton',{staticClass:\"suggest-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.suggestButton'),\"click-event\":\"suggest\",\"disabled\":!_vm.isActive},on:{\"suggest\":_vm.suggest}})],1)]),(!_vm.showInappropriate)?_c('div',{staticClass:\"row inappropriate\"},[_c('div',{staticClass:\"col-12\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.markInappropriate}},[_vm._v(_vm._s(_vm.$t('customerSearch.markInnapropriateButton')))])])]):_vm._e(),(_vm.showInappropriate)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"inappropriate-instructions\"},[_vm._v(_vm._s(_vm.$t('customerSearch.markInapproprateInstructions')))])]),_c('div',{staticClass:\"col-6\"},[_c('a',{staticClass:\"cancel-inappropriate\",attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.cancelInappropriate}},[_vm._v(_vm._s(_vm.$t('customerSearch.cancelInappropriateButton')))])]),_c('div',{staticClass:\"col-6\"},[_c('sprbutton',{staticClass:\"confirm-inappropriate-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.confirmInappropriateButton'),\"click-event\":\"confirmInappropriate\"},on:{\"confirmInappropriate\":_vm.confirmInappropriate}})],1)]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"customermatchstandardconfirm\">\r\n    <div v-if=\"isInappropriate\">\r\n      <div class=\"row\">\r\n        <div class=\"col maintitle\">\r\n          <span class=\"title\">{{ $t('customerSearch.inappropriate') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row instructions\">\r\n        <div class=\"col instructions\">\r\n          {{ $t('customerSearch.inappropriateInstructions') }}\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col buttons\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.endInappropriate')\"\r\n                     click-event=\"endinappropriate\"\r\n                     class=\"end-inappropriate-button\"\r\n                     @endinappropriate=\"onEndInappropriate\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div v-else>\r\n      <div class=\"row\">\r\n        <div class=\"col maintitle\">\r\n          <span class=\"title\">{{ $t('customerSearch.matchConfirmTitle') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row starscore\">\r\n        <div class=\"col-12\">\r\n          <stars :score=\"score\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row instructions\">\r\n        <div class=\"col instructions\">\r\n          {{ $t('customerSearch.createMatchInstructions') }}\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col buttons\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.suggestButton')\"\r\n                     click-event=\"suggest\"\r\n                     class=\"suggest-button\"\r\n                     :disabled=\"!isActive\"\r\n                     @suggest=\"suggest\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"!showInappropriate\" class=\"row inappropriate\">\r\n        <div class=\"col-12\">\r\n          <a href=\"javascript:void(0)\" @click=\"markInappropriate\">{{ $t('customerSearch.markInnapropriateButton') }}</a>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"showInappropriate\" class=\"row\">\r\n        <div class=\"col-12\">\r\n          <span class=\"inappropriate-instructions\">{{ $t('customerSearch.markInapproprateInstructions') }}</span>\r\n        </div>\r\n        <div class=\"col-6\">\r\n          <a href=\"javascript:void(0)\" class=\"cancel-inappropriate\" @click=\"cancelInappropriate\">{{ $t('customerSearch.cancelInappropriateButton') }}</a>\r\n        </div>\r\n        <div class=\"col-6\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.confirmInappropriateButton')\"\r\n                     click-event=\"confirmInappropriate\"\r\n                     class=\"confirm-inappropriate-button\"\r\n                     @confirmInappropriate=\"confirmInappropriate\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import stars from '../SPRStars.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import { UserProfileDto, FriendCustomerStandardDto, CustomerState } from '@/types/index'\r\n  import { StandardMatchPair } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    suggestionMessage: string | LocaleMessage,\r\n    showInappropriate: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerMatchStandardConfirm',\r\n    components: { stars, sprbutton },\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto,\r\n        required: true\r\n      },\r\n      volunteer: {\r\n        type: Object as () => UserProfileDto,\r\n        required: true\r\n      },\r\n      score: {\r\n        type: Number,\r\n        required: true\r\n      },\r\n      isInappropriate: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        suggestionMessage: this.$t('customerSearch.suggestionMessage'),\r\n        showInappropriate: false\r\n      }\r\n    },\r\n    computed: {\r\n      isActive (): boolean {\r\n        return (this.volunteer.friendInfo && _.includes([CustomerState.Active, CustomerState.PendingFriend, CustomerState.ActiveFriendship], this.volunteer.friendInfo.standardProfile.state)) &&\r\n          (_.includes([CustomerState.Active, CustomerState.PendingFriend, CustomerState.ActiveFriendship], this.customer.state))\r\n      }\r\n    },\r\n    methods: {\r\n      suggest (): void {\r\n        this.$bus.$emit('initiate-friendship', { volunteer: this.volunteer, customer: this.customer, message: this.suggestionMessage })\r\n      },\r\n      markInappropriate (): void {\r\n        this.showInappropriate = true\r\n      },\r\n      confirmInappropriate (): void {\r\n        this.$bus.$emit('inappropriate-friendship', { volunteer: this.volunteer, customer: this.customer } as StandardMatchPair)\r\n      },\r\n      cancelInappropriate (): void {\r\n        this.showInappropriate = false\r\n      },\r\n      onEndInappropriate (): void {\r\n        this.$bus.$emit('end-inappropriate-friendship', { volunteer: this.volunteer, customer: this.customer } as StandardMatchPair)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .customermatchstandardconfirm {\r\n    text-align: center;\r\n\r\n    .maintitle {\r\n      margin: 30px 0 20px 0;\r\n    }\r\n\r\n    .title {\r\n      text-transform: uppercase;\r\n      color:$brand-red;\r\n      font-weight: bold;\r\n      display:block;\r\n    }\r\n\r\n    .starscore {\r\n      margin-top:50px;\r\n      margin-bottom: 50px;\r\n    }\r\n\r\n    .instructions {\r\n      margin-bottom: 20px;\r\n      font-size: 13px;\r\n    }\r\n\r\n    .buttons {\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .inappropriate,\r\n    .cancel {\r\n      margin-bottom: 50px;\r\n      a {\r\n        color:$brand-red;\r\n      }\r\n    }\r\n\r\n    .inappropriate-instructions {\r\n      margin-bottom:30px;\r\n      display:block;\r\n      font-size: 13px;\r\n    }\r\n\r\n    .message {\r\n      width: 100%;\r\n      margin-bottom:30px;\r\n\r\n      textarea {\r\n        width: 100%;\r\n      }\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchStandardConfirm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchStandardConfirm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerMatchStandardConfirm.vue?vue&type=template&id=6edd81e7\"\nimport script from \"./CustomerMatchStandardConfirm.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerMatchStandardConfirm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerMatchStandardConfirm.vue?vue&type=style&index=0&id=6edd81e7&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.volunteer && _vm.volunteer.friendInfo)?_c('div',{staticClass:\"volunteercardstandard\"},[_c('div',{staticClass:\"topsection\"},[_c('div',{staticClass:\"circle\"},[(_vm.friendshipStateOverride)?_c('friendshipicon',{attrs:{\"friendname\":_vm.volunteer.firstName,\"state\":_vm.friendshipStateOverride}}):_c('friendicon',{attrs:{\"friendname\":_vm.volunteer.firstName,\"image\":_vm.volunteer.portrait,\"state\":_vm.volunteer.friendInfo.standardProfile.onHold ? 6 : _vm.volunteer.friendInfo.standardProfile.state,\"multiple-friendships\":_vm.volunteer.friendInfo.standardProfile.multipleCustomers}})],1),_c('div',{staticClass:\"details\"},[_c('div',{staticClass:\"name\"},[_c('span',[_vm._v(_vm._s(_vm.volunteer.firstName)+\" \"+_vm._s(_vm.volunteer.lastName))]),_c('div',{staticClass:\"usericons\"},[(!_vm.volunteer.isNonIdent)?_c('font-awesome-icon',{attrs:{\"icon\":\"user\",\"title\":_vm.$t('customerSearch.isIdent')}}):_vm._e(),(_vm.hasMultipleCustomers)?_c('font-awesome-icon',{attrs:{\"icon\":\"users\",\"title\":_vm.$t('customerSearch.multipleCustomers')}}):_vm._e()],1)]),_c('div',{staticClass:\"personal\"},[_c('div',[_vm._v(_vm._s(_vm.genderAgeText))]),_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.clientTypeWish'))+\": \"+_vm._s(_vm.customerTypes || '–'))]),(_vm.volunteer.friendInfo.standardProfile.shortDescription)?_c('div',{staticClass:\"short-description\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"quote-left\",\"aria-hidden\":\"true\"}}),_c('span',[_vm._v(_vm._s(_vm.volunteer.friendInfo.standardProfile.shortDescription))]),_c('font-awesome-icon',{attrs:{\"icon\":\"quote-left\",\"aria-hidden\":\"true\"}})],1):_vm._e()])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.volunteer.friendInfo.lastContacted),expression:\"volunteer.friendInfo.lastContacted\"}],staticClass:\"contacted\"},[_vm._v(\" \"+_vm._s(_vm.lastContacted(_vm.volunteer.friendInfo.lastContacted))+\" \")]),_c('div',{staticClass:\"nofriend\"},[_vm._v(\" \"+_vm._s(_vm.daysWithoutFriend(_vm.volunteer.friendInfo.standardProfile.lastFriendshipEndDate))+\" \")])]),_c('div',{staticClass:\"properties\"},[_c('div',{staticClass:\"row property location\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"map-marker-alt\"}})],1),_c('div',{staticClass:\"content\"},[_c('div',[_vm._v(_vm._s(_vm.$t('profile.address'))+\": \"+_vm._s(_vm.address || '–'))]),_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.myTravelTime'))+\": \"+_vm._s(_vm.transportationText.toLowerCase()))]),(_vm.showMatches)?_c('div',[_vm._v(\" \"+_vm._s(_vm.matches.travelData.travelDistanceTime)+\" \")]):_vm._e()]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[(_vm.showDistanceWarning)?_c('div',[_c('tickcrosswarning',{model:{value:(_vm.showDistanceWarningValue),callback:function ($$v) {_vm.showDistanceWarningValue=$$v},expression:\"showDistanceWarningValue\"}})],1):_c('div',[_c('tickcross',{model:{value:(_vm.matches.travelData.isMatch),callback:function ($$v) {_vm.$set(_vm.matches.travelData, \"isMatch\", $$v)},expression:\"matches.travelData.isMatch\"}})],1)]):_vm._e()]),_c('div',{staticClass:\"row property availabilitytimes\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'clock']}})],1),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.myTimes'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.availabilityText || '–'))])]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[_c('tickcross',{model:{value:(_vm.matches.availabilityTimesMatch),callback:function ($$v) {_vm.$set(_vm.matches, \"availabilityTimesMatch\", $$v)},expression:\"matches.availabilityTimesMatch\"}})],1):_vm._e()]),_c('div',{staticClass:\"row property availabilitytimes\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'clock']}})],1),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.myFrequency'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.availabilityFrequency || '–'))])]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[_c('tickcross',{model:{value:(_vm.matches.availabilityFrequencyMatch),callback:function ($$v) {_vm.$set(_vm.matches, \"availabilityFrequencyMatch\", $$v)},expression:\"matches.availabilityFrequencyMatch\"}})],1):_vm._e()]),_c('div',{staticClass:\"row property genders\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"venus-mars\"}})],1),_c('div',{staticClass:\"content\"},[_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.am'))+\" \"),_c('strong',[_vm._v(_vm._s(_vm.gender.toLowerCase() || '...?'))])]),_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.forFriend'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.genderPreferences || '–'))])])]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[_c('tickcrosswarning',{model:{value:(_vm.matches.genderMatch),callback:function ($$v) {_vm.$set(_vm.matches, \"genderMatch\", $$v)},expression:\"matches.genderMatch\"}})],1):_vm._e()]),_c('div',{staticClass:\"row property age\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"id-badge\"}})],1),_c('div',{staticClass:\"content\"},[_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.am'))+\" \"),_c('strong',[_vm._v(_vm._s(_vm.age || '?')+\" \"+_vm._s(_vm.$t('customerSearch.years')))])]),_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.forFriend'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.agePreferences || '–'))])])]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[_c('tickcross',{model:{value:(_vm.matches.ageMatch),callback:function ($$v) {_vm.$set(_vm.matches, \"ageMatch\", $$v)},expression:\"matches.ageMatch\"}})],1):_vm._e()]),_c('div',{staticClass:\"row property language\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'comment']}})],1),_c('div',{staticClass:\"content\"},[_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.speak'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.normalizeTranslation(_vm.volunteer.nativeLanguage))+\" (\"+_vm._s(_vm.$t('customerSearch.nativeLanguage'))+\")\")])]),(_vm.spokenLanguages)?_c('div',[_c('strong',[_vm._v(_vm._s(_vm.spokenLanguages))])]):_vm._e()]),(_vm.showMatches)?_c('div',{staticClass:\"match\"},[_c('tickcross',{model:{value:(_vm.matches.languageMatch),callback:function ($$v) {_vm.$set(_vm.matches, \"languageMatch\", $$v)},expression:\"matches.languageMatch\"}})],1):_vm._e()]),_c('div',{staticClass:\"row property friendshiptypes\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"calendar\"}})],1),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.seek'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.friendshipTypes || '–'))])])]),_c('div',{staticClass:\"row property interest\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"puzzle-piece\"}})],1),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.interestedIn'))+\": \"),_c('strong',[_vm._v(_vm._s(_vm.interests || '–'))])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.volunteer.friendInfo.hasHealthCareTraining),expression:\"volunteer.friendInfo.hasHealthCareTraining\"}],staticClass:\"row property training\"},[_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"plus\"}})],1),_c('div',{staticClass:\"content\"},[(_vm.volunteer.friendInfo.healthCareTrainingFreetext)?_c('span',[_vm._v(_vm._s(_vm.$t('customerSearch.hasHealthCareTraining'))+\" | \"+_vm._s(_vm.volunteer.friendInfo.healthCareTrainingFreetext))]):_c('span',[_vm._v(_vm._s(_vm.$t('customerSearch.unspecifiedHealthcareTraining')))])])])]),_c('div',{staticClass:\"moreinfo\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col description\"},[_c('sprcol',{attrs:{\"heading\":_vm.$t('profile.notes')}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('sprprivatenotes',{attrs:{\"endpoint\":\"volunteerupdateprivatenotesstandard\",\"friend-management-group-id\":_vm.group.id,\"target-id\":_vm.targetId},model:{value:(_vm.volunteer.friendInfo),callback:function ($$v) {_vm.$set(_vm.volunteer, \"friendInfo\", $$v)},expression:\"volunteer.friendInfo\"}})],1)])],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col contact\"},[_c('sprcol',{attrs:{\"heading\":_vm.$t('customerSearch.contactTitle')}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('p',{staticClass:\"smalltext\"},[_vm._v(\" \"+_vm._s(_vm.contactDetails)+\" \")])])])],1)]),(_vm.volunteer.friendInfo.standardProfile.volunteerInterviewed)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col other\"},[_c('sprcol',{attrs:{\"heading\":_vm.$t('customerSearch.otherInfoTitle')}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerForm.customerInterviewed'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.volunteer.friendInfo.standardProfile.volunteerInterviewedDate)+\" || \"+_vm._s(_vm.volunteer.friendInfo.standardProfile.volunteerInterviewedBy)+\" \")])])])])],1)]):_vm._e(),(_vm.isOnHold)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col onhold\"},[_c('sprcol',{attrs:{\"heading\":_vm.$t('volunteerForm.onHoldDescription')}},[_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.onHoldUntilDate'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.formattedOnHoldUntilDate)+\" \")])]),_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.onHoldComment'))+\" \")]),_c('dd',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.volunteer.friendInfo.standardProfile.onHoldDetails)+\" \")])])])])],1)]):_vm._e()]),(_vm.loaded)?_c('div',{staticClass:\"row button-row\"},[(_vm.showActions || _vm.showEditButton)?_c('div',{staticClass:\"actions\"},[_c('div',{staticClass:\"col buttons\"},[_c('volunteerActions',{attrs:{\"group\":_vm.group,\"loaded\":_vm.loaded,\"show-edit-button\":_vm.showEditButton,\"show-all-buttons\":_vm.showActions},on:{\"saveVolunteer\":_vm.saveVolunteer,\"toggleActivity\":_vm.toggleActivity,\"moveVolunteer\":_vm.moveVolunteer},model:{value:(_vm.volunteer),callback:function ($$v) {_vm.volunteer=$$v},expression:\"volunteer\"}})],1)]):_vm._e()]):_vm._e(),(_vm.isSending)?_c('div',{staticClass:\"text-center\"},[_c('Loading')],1):_vm._e()]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"volunteer && volunteer.friendInfo\" class=\"volunteercardstandard\">\r\n    <div class=\"topsection\">\r\n      <div class=\"circle\">\r\n        <friendshipicon\r\n          v-if=\"friendshipStateOverride\"\r\n          :friendname=\"volunteer.firstName\"\r\n          :state=\"friendshipStateOverride\"\r\n        />\r\n        <friendicon\r\n          v-else\r\n          :friendname=\"volunteer.firstName\"\r\n          :image=\"volunteer.portrait\"\r\n          :state=\"volunteer.friendInfo.standardProfile.onHold ? 6 : volunteer.friendInfo.standardProfile.state\"\r\n          :multiple-friendships=\"volunteer.friendInfo.standardProfile.multipleCustomers\"\r\n        />\r\n      </div>\r\n      <div class=\"details\">\r\n        <div class=\"name\">\r\n          <span>{{ volunteer.firstName }} {{ volunteer.lastName }}</span>\r\n          <div class=\"usericons\">\r\n            <font-awesome-icon v-if=\"!volunteer.isNonIdent\" icon=\"user\" :title=\"$t('customerSearch.isIdent')\" />\r\n            <font-awesome-icon v-if=\"hasMultipleCustomers\" icon=\"users\" :title=\"$t('customerSearch.multipleCustomers')\" />\r\n          </div>\r\n        </div>\r\n        <div class=\"personal\">\r\n          <div>{{ genderAgeText }}</div>\r\n          <div>{{ $t('customerSearch.clientTypeWish') }}: {{ customerTypes || '&ndash;' }}</div>\r\n          <div v-if=\"volunteer.friendInfo.standardProfile.shortDescription\" class=\"short-description\">\r\n            <font-awesome-icon icon=\"quote-left\" aria-hidden=\"true\" /><span>{{ volunteer.friendInfo.standardProfile.shortDescription }}</span><font-awesome-icon icon=\"quote-left\" aria-hidden=\"true\" />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div v-show=\"volunteer.friendInfo.lastContacted\" class=\"contacted\">\r\n        {{ lastContacted(volunteer.friendInfo.lastContacted) }}\r\n      </div>\r\n      <div class=\"nofriend\">\r\n        {{ daysWithoutFriend(volunteer.friendInfo.standardProfile.lastFriendshipEndDate) }}\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"properties\">\r\n      <div class=\"row property location\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"map-marker-alt\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <div>{{ $t('profile.address') }}: {{ address || '&ndash;' }}</div>\r\n          <div>{{ $t('customerSearch.myTravelTime') }}: {{ transportationText.toLowerCase() }}</div>\r\n          <div v-if=\"showMatches\">\r\n            {{ matches.travelData.travelDistanceTime }}\r\n          </div>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <div v-if=\"showDistanceWarning\">\r\n            <tickcrosswarning v-model=\"showDistanceWarningValue\" />\r\n          </div>\r\n          <div v-else>\r\n            <tickcross v-model=\"matches.travelData.isMatch\" />\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property availabilitytimes\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon :icon=\"['far', 'clock']\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          {{ $t('customerSearch.myTimes') }}: <strong>{{ availabilityText || '&ndash;' }}</strong>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <tickcross v-model=\"matches.availabilityTimesMatch\" />\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property availabilitytimes\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon :icon=\"['far', 'clock']\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          {{ $t('customerSearch.myFrequency') }}: <strong>{{ availabilityFrequency || '&ndash;' }}</strong>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <tickcross v-model=\"matches.availabilityFrequencyMatch\" />\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property genders\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"venus-mars\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <div>{{ $t('customerSearch.am') }} <strong>{{ gender.toLowerCase() || '...?' }}</strong></div>\r\n          <div>{{ $t('customerSearch.forFriend') }}: <strong>{{ genderPreferences || '&ndash;' }}</strong></div>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <tickcrosswarning v-model=\"matches.genderMatch\" />\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property age\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"id-badge\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <div>{{ $t('customerSearch.am') }} <strong>{{ age || '?' }} {{ $t('customerSearch.years') }}</strong></div>\r\n          <div>{{ $t('customerSearch.forFriend') }}: <strong>{{ agePreferences || '&ndash;' }}</strong></div>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <tickcross v-model=\"matches.ageMatch\" />\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property language\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon :icon=\"['far', 'comment']\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <div>{{ $t('customerSearch.speak') }}: <strong>{{ normalizeTranslation(volunteer.nativeLanguage) }} ({{ $t('customerSearch.nativeLanguage') }})</strong></div>\r\n          <div v-if=\"spokenLanguages\">\r\n            <strong>{{ spokenLanguages }}</strong>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"showMatches\" class=\"match\">\r\n          <tickcross v-model=\"matches.languageMatch\" />\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property friendshiptypes\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"calendar\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          {{ $t('customerSearch.seek') }}: <strong>{{ friendshipTypes || '&ndash;' }}</strong>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row property interest\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"puzzle-piece\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          {{ $t('customerSearch.interestedIn') }}: <strong>{{ interests || '&ndash;' }}</strong>\r\n        </div>\r\n      </div>\r\n\r\n      <div v-show=\"volunteer.friendInfo.hasHealthCareTraining\" class=\"row property training\">\r\n        <div class=\"icon\">\r\n          <font-awesome-icon icon=\"plus\" />\r\n        </div>\r\n        <div class=\"content\">\r\n          <span v-if=\"volunteer.friendInfo.healthCareTrainingFreetext\">{{ $t('customerSearch.hasHealthCareTraining') }} | {{ volunteer.friendInfo.healthCareTrainingFreetext }}</span>\r\n          <span v-else>{{ $t('customerSearch.unspecifiedHealthcareTraining') }}</span>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"moreinfo\">\r\n      <div class=\"row\">\r\n        <div class=\"col description\">\r\n          <sprcol :heading=\"$t('profile.notes')\">\r\n            <div slot=\"body\">\r\n              <sprprivatenotes v-model=\"volunteer.friendInfo\" endpoint=\"volunteerupdateprivatenotesstandard\" :friend-management-group-id=\"group.id\" :target-id=\"targetId\" />\r\n            </div>\r\n          </sprcol>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col contact\">\r\n          <sprcol :heading=\"$t('customerSearch.contactTitle')\">\r\n            <div slot=\"body\">\r\n              <p class=\"smalltext\">\r\n                {{ contactDetails }}\r\n              </p>\r\n            </div>\r\n          </sprcol>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"volunteer.friendInfo.standardProfile.volunteerInterviewed\" class=\"row\">\r\n        <div class=\"col other\">\r\n          <sprcol :heading=\"$t('customerSearch.otherInfoTitle')\">\r\n            <div slot=\"body\">\r\n              <dl class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerForm.customerInterviewed') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ volunteer.friendInfo.standardProfile.volunteerInterviewedDate }} || {{ volunteer.friendInfo.standardProfile.volunteerInterviewedBy }}\r\n                </dd>\r\n              </dl>\r\n            </div>\r\n          </sprcol>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"isOnHold\" class=\"row\">\r\n        <div class=\"col onhold\">\r\n          <sprcol :heading=\"$t('volunteerForm.onHoldDescription')\">\r\n            <div slot=\"body\">\r\n              <dl class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerSearch.onHoldUntilDate') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ formattedOnHoldUntilDate }}\r\n                </dd>\r\n              </dl>\r\n              <dl class=\"row\">\r\n                <dt class=\"col-12\">\r\n                  {{ $t('customerSearch.onHoldComment') }}\r\n                </dt>\r\n                <dd class=\"col-12\">\r\n                  {{ volunteer.friendInfo.standardProfile.onHoldDetails }}\r\n                </dd>\r\n              </dl>\r\n            </div>\r\n          </sprcol>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Actions -->\r\n    <div v-if=\"loaded\" class=\"row button-row\">\r\n      <div v-if=\"showActions || showEditButton\" class=\"actions\">\r\n        <div class=\"col buttons\">\r\n          <volunteerActions\r\n            v-model=\"volunteer\"\r\n            :group=\"group\"\r\n            :loaded=\"loaded\"\r\n            :show-edit-button=\"showEditButton\"\r\n            :show-all-buttons=\"showActions\"\r\n            @saveVolunteer=\"saveVolunteer\"\r\n            @toggleActivity=\"toggleActivity\"\r\n            @moveVolunteer=\"moveVolunteer\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div v-if=\"isSending\" class=\"text-center\">\r\n      <Loading />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import friendicon from './FriendIcon.vue'\r\n  import friendshipicon from './FriendshipIcon.vue'\r\n  import tickcross from '../SPRTickCross.vue'\r\n  import tickcrosswarning from '../SPRTickCrossWarning.vue'\r\n  import sprcol from '../SPRCollapsible.vue'\r\n  import sprprivatenotes from '../SPRPrivateNotes.vue'\r\n  import volunteerActions from './VolunteerActions.vue'\r\n  import Loading from '../SPRLoading.vue'\r\n\r\n  import moment from 'moment'\r\n\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import locationhelper from '../../mixins/locationutils.js'\r\n  import scrollhelper from '../../mixins/scroll.js'\r\n  import addresshelper from '@/helpers/addresshelper'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n  import { UserProfileDto, FriendshipState, FriendManagementDto, CustomerState } from '@/types/index'\r\n  import { YesNoWarning, MatchData } from '@/types/custom'\r\n  import { finnishDateFormat } from '@/helpers/datehelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    volunteer: UserProfileDto,\r\n    loaded: boolean,\r\n    isSending: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerCardStandard',\r\n    components: { friendicon, friendshipicon, tickcross, tickcrosswarning, sprcol, sprprivatenotes, volunteerActions, Loading },\r\n    mixins: [enumhelper,\r\n             datehelper,\r\n             locationhelper,\r\n             scrollhelper],\r\n    props: {\r\n      value: {\r\n        type: Object as () => UserProfileDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      showActions: {\r\n        type: Boolean,\r\n        default: () => {\r\n          return true\r\n        }\r\n      },\r\n      showEditButton: {\r\n        type: Boolean,\r\n        default: () => {\r\n          return false\r\n        }\r\n      },\r\n      showMatches: {\r\n        type: Boolean,\r\n        default: () => {\r\n          return false\r\n        }\r\n      },\r\n      matches: {\r\n        type: Object as () => MatchData,\r\n        default: () => {\r\n          return {\r\n            travelData: {\r\n              travelDistanceTime: '',\r\n              isMatch: false,\r\n              isRealDistance: false\r\n            },\r\n            availabilityTimesMatch: false,\r\n            availabilityFrequencyMatch: false,\r\n            genderMatch: YesNoWarning.No,\r\n            ageMatch: false,\r\n            languageMatch: false,\r\n            interestMatch: false\r\n          } as MatchData\r\n        }\r\n      },\r\n      friendshipStateOverride: {\r\n        type: Number as () => FriendshipState,\r\n        required: false,\r\n        default: undefined\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        volunteer: this.value,\r\n        loaded: true,\r\n        isSending: false\r\n      }\r\n    },\r\n    computed: {\r\n      isNonIdent (): boolean {\r\n        return this.value.isNonIdent\r\n      },\r\n      hasMultipleCustomers (): boolean {\r\n        return Boolean(this.volunteer?.friendInfo?.standardProfile?.multipleCustomers)\r\n      },\r\n      gender (): string | LocaleMessage {\r\n        // @ts-ignore - mixins not picked up\r\n        return this.getGenderTranslation(this.volunteer.friendInfo.gender)\r\n      },\r\n      isOnHold (): boolean {\r\n        return this.volunteer.friendInfo.standardProfile.state === CustomerState.OnHold\r\n      },\r\n      formattedOnHoldUntilDate (): string {\r\n        if (this.volunteer.friendInfo.standardProfile.onHoldDeadline) {\r\n          const date = this.volunteer.friendInfo.standardProfile.onHoldDeadline\r\n          const formattedDate = moment(date).format('DD.MM.YYYY')\r\n\r\n          return formattedDate\r\n        } else {\r\n          return ''\r\n        }\r\n      },\r\n      age (): number {\r\n        // @ts-ignore - mixins not picked up\r\n        return this.calculateAge(this.volunteer.age)\r\n      },\r\n      genderAgeText (): string {\r\n        return [this.gender, this.age ? `${this.age} ${this.$t('customerSearch.years')}` : ''].filter(Boolean).join(', ')\r\n      },\r\n      customerTypes (): string {\r\n        var self = this\r\n        // @ts-ignore - mixins not picked up\r\n        return this.getCustomerTypesTranslations((item) => {\r\n          return _.includes(bitmaskhelper.bitmaskToArray(self.volunteer.friendInfo.standardProfile.customerTypes), item.id)\r\n        }).filter(Boolean).join(', ')\r\n      },\r\n      address (): string {\r\n        if (this.volunteer.friendInfo.standardProfile.hasAlternativeAddress) {\r\n          return addresshelper.formatAddress(this.volunteer.friendInfo.standardProfile.alternativeStreet, this.volunteer.friendInfo.standardProfile.alternativeZipCode, this.volunteer.friendInfo.standardProfile.alternativeCity)\r\n        } else {\r\n          return addresshelper.formatAddress(this.volunteer.streetAddress, this.volunteer.zipCode, this.volunteer.city)\r\n        }\r\n      },\r\n      fastestTransportation (): number | undefined {\r\n        var self = this\r\n        var fastest = [1,\r\n                       2,\r\n                       4,\r\n                       3]\r\n        return _.find(fastest, (item) => {\r\n          return _.includes(self.volunteer.transportation, item)\r\n        })\r\n      },\r\n      transportationText (): string {\r\n        // @ts-ignore - mixins not picked up\r\n        var mode = this.getTransportationTranslation(this.fastestTransportation)\r\n        var time = (this.volunteer.travelTime ? this.volunteer.travelTime : '?') + ' min'\r\n        return [time, mode].filter(Boolean).join(', ')\r\n      },\r\n      availabilityFrequency (): string {\r\n        // @ts-ignore - mixins not picked up\r\n        var frequency = this.getAvailabilityFrequencyTranslation(this.volunteer.friendInfo.standardProfile.availabilityFrequence)\r\n        return frequency\r\n      },\r\n      availabilityText (): string {\r\n        var self = this\r\n        // @ts-ignore - mixins not picked up\r\n        var times = this.getAvailabilityTimesTranslations((item) => {\r\n          // @ts-ignore - mixins not picked up\r\n          return _.includes(bitmaskhelper.bitmaskToArray(self.volunteer.friendInfo.standardProfile.availabilityTimes), item.id)\r\n        }).filter(Boolean).join(', ')\r\n        return times\r\n      },\r\n      friendshipTypes (): string {\r\n        // @ts-ignore - mixins not picked up\r\n        return this.getFriendshipTypesMaskTranslation(this.volunteer.friendInfo.standardProfile.friendshipTypes)\r\n      },\r\n      genderPreferences (): string {\r\n        // @ts-ignore - mixins not picked up\r\n        return this.getGenderPreferencesMaskTranslation(this.volunteer.friendInfo.standardProfile.preferredGenders)\r\n      },\r\n      agePreferences (): string {\r\n        // @ts-ignore - mixins not picked up\r\n        return this.getAgePreferencesMaskTranslation(this.volunteer.friendInfo.standardProfile.preferredAges)\r\n      },\r\n      spokenLanguages (): string {\r\n        var self = this\r\n        var languages = [] as string[]\r\n        _.forEach(this.volunteer.spokenLanguages, (item) => {\r\n          if (item !== self.volunteer.nativeLanguage) {\r\n            // @ts-ignore - mixins not picked up\r\n            languages.push(this.normalizeTranslation(item))\r\n          }\r\n        })\r\n        languages.push(this.volunteer.otherLanguages)\r\n        return languages.filter(Boolean).join(', ')\r\n      },\r\n      interests (): string {\r\n        // @ts-ignore - mixins not picked up\r\n        return this.getInterestsMaskTranslation(this.volunteer.friendInfo.standardProfile.interests)\r\n      },\r\n      contactDetails (): string {\r\n        var phone = this.volunteer.phoneNumber ? `${this.$t('customerSearch.telAbbreviation')} ${this.volunteer.phoneNumber}` : ''\r\n        var email = this.volunteer.email ? `${this.$t('customerSearch.emailAbbreviation')}: ${this.volunteer.email}` : ''\r\n        return [phone, email].filter(Boolean).join(' | ')\r\n      },\r\n      showDistanceWarning (): boolean {\r\n        if (!this.showMatches) {\r\n          return false\r\n        }\r\n        if (this.matches.travelData) {\r\n          return !this.matches.travelData.isRealDistance\r\n        }\r\n        return false\r\n      },\r\n      showDistanceWarningValue (): YesNoWarning {\r\n        return YesNoWarning.Warning\r\n      },\r\n      targetId (): number {\r\n        return this.volunteer.friendInfo.standardProfile.id\r\n      }\r\n    },\r\n    watch: {\r\n      value (newVal): void {\r\n        this.volunteer = newVal\r\n      }\r\n    },\r\n    methods: {\r\n      lastContacted (lastContactedDate: Date | undefined): string {\r\n        if (!lastContactedDate) {\r\n          return `${this.$t('customerSearch.neverContacted')}`\r\n        }\r\n        // @ts-ignore (no mixins found)\r\n        return `${this.$t('customerSearch.lastContacted')} ${finnishDateFormat(lastContactedDate)}`\r\n      },  \r\n      moveVolunteer (): void {\r\n        this.$emit('moveVolunteer')\r\n      },\r\n      getUpdateData (): any {\r\n        if (!this.isNonIdent) {\r\n          // @ts-ignore - mixins not picked up\r\n          return this.prune(this.volunteer.friendInfo)\r\n        }\r\n        // @ts-ignore - mixins not picked up\r\n        return this.prune(this.volunteer)\r\n      },\r\n      getUpdateUrl (): string {\r\n        if (!this.isNonIdent) {\r\n          return this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.updateidentstandardfriendvolunteer[0]\r\n        }\r\n        return this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.updatenonidentstandardfriendvolunteer[0]\r\n      },\r\n      daysWithoutFriend (lastFriendshipDate): string {\r\n        if (!lastFriendshipDate) {\r\n          return `${this.$t('customerSearch.neverHadFriend')}`\r\n        }\r\n        // @ts-ignore (no mixins found)\r\n        return `${this.calculateDayDiff(lastFriendshipDate)} ${this.$t('customerSearch.daysWithoutFriend')}`\r\n      },\r\n      notifyRefresh (): void {\r\n        this.$emit('refresh')\r\n      },\r\n      saveVolunteer (): void {\r\n        var self = this\r\n        self.isSending = true\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            var url = this.getUpdateUrl()\r\n            var data = this.getUpdateData()\r\n            this.$http.put(url, data).then(response => {\r\n              if (response.ok) {\r\n                self.isSending = false\r\n              }\r\n            }, response => {\r\n              self.isSending = false\r\n              if (response.bodyText) {\r\n                // @ts-ignore - mixins not picked up\r\n                this.showAlertError(`${this.$t('common.saveFailed')}: ${response.bodyText}`)\r\n              }\r\n              console.log('Error saving volunteer')\r\n            })\r\n          } else {\r\n            // @ts-ignore - mixins not picked up\r\n            this.firstError()\r\n          }\r\n        })\r\n      },\r\n      toggleActivity (): void {\r\n        this.isSending = true\r\n        var uri = this.$store.state.apiBases.friendservice\r\n        if (this.value.friendInfo.standardProfile.state === CustomerState.NonActive) {\r\n          uri += this.$store.state.apiEndpoints.markactivevolunteerstandard[0]\r\n        } else {\r\n          uri += this.$store.state.apiEndpoints.markinactivevolunteerstandard[0]\r\n        }\r\n\r\n        uri = uri\r\n          .replace('{volunteerid}', this.value.friendInfo.id)\r\n          .replace('{groupid}', this.group?.id)\r\n\r\n        const self = this\r\n\r\n        this.$http.post(uri).then(() => {\r\n          self.isSending = false\r\n          this.notifyRefresh()\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteercardstandard {\r\n    margin-bottom: 30px;\r\n\r\n    .usericons {\r\n        display: inline-block;\r\n        margin-left: 5px;\r\n        color: $brand-red;\r\n      }\r\n\r\n      .topsection {\r\n      min-height: 120px;\r\n      .circle {\r\n        float: left;\r\n        margin-top:20px;\r\n      }\r\n      .contacted {\r\n        text-align: center;\r\n        font-size: 13px;\r\n        margin-top: 15px;\r\n      }\r\n      .details {\r\n        margin-left:70px;\r\n\r\n        .name {\r\n          text-transform: uppercase;\r\n          color: $brand-red;\r\n          font-weight: bold;\r\n          position: relative;\r\n          .edit {\r\n            position: absolute;\r\n            left:-15px;\r\n            text-decoration: none;\r\n            color:$brand-red;\r\n          }\r\n          svg {\r\n            margin-left: 5px;\r\n          }\r\n        }\r\n\r\n        .personal {\r\n          font-size: 0.8em;\r\n          font-weight:bold;\r\n          .short-description {\r\n            font-weight:normal;\r\n            color:$brand-red;\r\n            font-style: italic;\r\n            margin-top: 10px;\r\n            position:relative;\r\n            span {\r\n              padding: 0 5px;\r\n            }\r\n            svg {\r\n              font-size:12px;\r\n              display:inline-block;\r\n            }\r\n          }\r\n        }\r\n      }\r\n      .nofriend {\r\n        text-align: center;\r\n        font-size: 13px;\r\n        margin-top: 15px;\r\n      }\r\n    }\r\n\r\n    .properties {\r\n      clear: both;\r\n      margin-top: 10px;\r\n      margin-bottom: 30px;\r\n\r\n      .property {\r\n        display: flex;\r\n        flex-flow: row nowrap;\r\n        justify-content: space-between;\r\n        align-items: center;\r\n\r\n        min-height: 55px;\r\n        margin: 0;\r\n        border-bottom: solid 1px $brand-grey3;\r\n        padding: 5px 0;\r\n\r\n        .icon {\r\n          flex: 0 0 40px;\r\n          text-align: center;\r\n\r\n          font-size: 2em;\r\n          color:$brand-red;\r\n        }\r\n        //IE11\r\n        *::-ms-backdrop, .icon { margin-top: 15px; }\r\n\r\n        .content {\r\n          margin-left: 10px;\r\n          flex: auto;\r\n\r\n          font-size: 0.8em;\r\n          dl {\r\n            margin-bottom: 0;\r\n            dt {\r\n              font-size: 1em;\r\n            }\r\n          }\r\n        }\r\n\r\n        .match {\r\n          flex: 0 0 40px;\r\n          text-align: right;\r\n\r\n          font-size: 1.5em;\r\n        }\r\n      }\r\n    }\r\n\r\n    .moreinfo {\r\n      .description,\r\n      .contact,\r\n      .other {\r\n        margin-bottom: 20px;\r\n      }\r\n      dl {\r\n        margin-bottom: 0;\r\n        font-size: 0.8em;\r\n        dt {\r\n          font-size: 1em;\r\n        }\r\n      }\r\n    }\r\n\r\n    .button-row {\r\n    text-align: center;\r\n    margin-top: 15px;\r\n\r\n      .load-indicator {\r\n        width: 100%;\r\n        margin-bottom: 15px;\r\n        color: $brand-red;\r\n      }\r\n      button {\r\n        margin-bottom: 15px;\r\n        &.button-disabled {\r\n          border-color: $brand-grey4;\r\n          color: $brand-grey4;\r\n          cursor: not-allowed;\r\n          outline: none;\r\n          &:hover {\r\n            background-color:$brand-white;\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerCardStandard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerCardStandard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerCardStandard.vue?vue&type=template&id=4322d2eb\"\nimport script from \"./VolunteerCardStandard.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerCardStandard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerCardStandard.vue?vue&type=style&index=0&id=4322d2eb&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"row volunteersummarystandard\" :class=\"isInappropriateCss\">\r\n    <div class=\"col-md-6 mb-3 mb-md-0 maincolumn\">\r\n      <div class=\"topsection\">\r\n        <div class=\"controls\">\r\n          <div v-if=\"!isFirst\" class=\"prev\">\r\n            <a href=\"javascript:void(0)\" @click=\"prev\"><font-awesome-icon icon=\"chevron-left\" /></a>\r\n          </div>\r\n          <div v-if=\"!isLast\" class=\"next\">\r\n            <a href=\"javascript:void(0)\" @click=\"next\"><font-awesome-icon icon=\"chevron-right\" /></a>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <volunteercardstandard\r\n        v-model=\"volunteer\"\r\n        :group=\"group\"\r\n        :show-matches=\"true\"\r\n        :show-actions=\"false\"\r\n        :show-edit-button=\"true\"\r\n        :matches=\"matchData\"\r\n        @refresh=\"onRefresh\"\r\n      />\r\n    </div>\r\n    <div class=\"col-md-6 sidecolumn\">\r\n      <div class=\"row\">\r\n        <div class=\"col controls\">\r\n          <div class=\"back\">\r\n            <a href=\"javascript:void(0)\" @click=\"close\">{{ $t('customerSearch.close') }}</a>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <customermatchstandardconfirm\r\n        :customer=\"customer\"\r\n        :volunteer=\"volunteer\"\r\n        :group=\"group\"\r\n        :is-inappropriate=\"isInappropriate\"\r\n        :score=\"score\"\r\n      />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import customermatchstandardconfirm from './CustomerMatchStandardConfirm.vue'\r\n  import volunteercardstandard from './VolunteerCardStandard.vue'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import locationhelper from '../../mixins/locationutils.js'\r\n  import googlemaps from '../../mixins/googlemaps.js'\r\n  import friendMatch from '../../mixins/friendMatch'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n  import addresshelper from '@/helpers/addresshelper'\r\n  import { LanguageDto, UserProfileDto, FriendCustomerStandardDto, FriendManagementDto, PreferredGenders, Gender } from '@/types/index'\r\n  import { TravelData, MatchData, YesNoWarning } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    unsub: undefined | Function,\r\n    travelData: TravelData\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerSummaryStandard',\r\n    components: { customermatchstandardconfirm, volunteercardstandard },\r\n    mixins: [datehelper, locationhelper, googlemaps, friendMatch],\r\n    props: {\r\n      volunteer: {\r\n        type: Object as () => UserProfileDto,\r\n        required: true\r\n      },\r\n      isFirst: Boolean,\r\n      isLast: Boolean,\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      isInappropriate: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      score: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        travelData: {\r\n          travelDistanceTime: '',\r\n          isMatch: false,\r\n          isRealDistance: false\r\n        },\r\n        unsub: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      isInappropriateCss (): string {\r\n        return this.isInappropriate ? 'inappropriate' : ''\r\n      },\r\n      availabilityTimesMatch (): boolean {\r\n        return friendMatch.methods.matchAvailabilityTimes(this.volunteer.friendInfo.standardProfile.availabilityTimes, this.customer.availabilityTimes)\r\n      },\r\n      availabilityFrequencyMatch (): boolean {\r\n        return friendMatch.methods.matchAvailabilityFrequency(this.volunteer.friendInfo.standardProfile.availabilityFrequence, this.customer.availabilityFrequency)\r\n      },\r\n      genderPreferenceMatch (): YesNoWarning {\r\n        if (this.customer.preferredGenders === Number(PreferredGenders.Male | PreferredGenders.Female)) { // male or female\r\n          if (this.volunteer.friendInfo.gender === Gender.Other) { // other or undefined\r\n            return YesNoWarning.Warning // 'WARNING'\r\n          }\r\n        }\r\n        return YesNoWarning.Yes // 'SUCCESS' // back end calculates it, always return true\r\n      },\r\n      ageMatch (): boolean {\r\n        return friendMatch.methods.ageMatchFriend(this.customer.birthdate, this.volunteer.friendInfo.standardProfile.preferredAges, this.volunteer.age, this.customer.preferredAges)\r\n      },\r\n      interestMatch (): boolean {\r\n        return this.interestCount > 0\r\n      },\r\n      interestCount (): number {\r\n        return _.intersection(\r\n          bitmaskhelper.bitmaskToArray(this.volunteer.friendInfo.standardProfile.interests),\r\n          bitmaskhelper.bitmaskToArray(this.customer.interests)).length\r\n      },\r\n      languageMatch (): boolean {\r\n        // Combine both spoken languages and native language and check for any matches\r\n        var volunteerLanguages = this.volunteer.spokenLanguages\r\n\r\n        // if volunteerLanguages doesn't include the native language yet, add it:\r\n        if (this.volunteer.nativeLanguage !== 'none' && !_.includes(volunteerLanguages, this.volunteer.nativeLanguage)) {\r\n          volunteerLanguages.push(this.volunteer.nativeLanguage)\r\n        }\r\n\r\n        var customerLanguages = this.customer.customerLanguages.map((x: LanguageDto) => x.isoCode)\r\n\r\n        // if customerLanguages doesn't include the native language yet, add it:\r\n        if (this.customer.nativeLanguage !== 'none' && !_.includes(customerLanguages, this.customer.nativeLanguage)) {\r\n          customerLanguages.push(this.customer.nativeLanguage)\r\n        }\r\n\r\n        // Now see if any of the languages in customerLanguages exists in the vulunteerLanguages.\r\n        return volunteerLanguages.some(language => customerLanguages.includes(language))\r\n      },\r\n      volunteerAddress (): string {\r\n        if (this.volunteer.friendInfo.standardProfile.hasAlternativeAddress) {\r\n          return addresshelper.formatAddress(this.volunteer.friendInfo.standardProfile.alternativeStreet, this.volunteer.friendInfo.standardProfile.alternativeZipCode, this.volunteer.friendInfo.standardProfile.alternativeCity)\r\n        } else {\r\n          return addresshelper.formatAddress(this.volunteer.streetAddress, this.volunteer.zipCode, this.volunteer.city)\r\n        }\r\n      },\r\n      customerAddress (): string {\r\n        return addresshelper.formatAddress(this.customer.streetAddress, this.customer.zipCode, this.customer.city)\r\n      },\r\n      volunteerTransportation (): number | undefined {\r\n        var self = this\r\n        var fastest = [1, 2, 4, 3]\r\n        return _.find(fastest, (item) => {\r\n          return _.includes(self.volunteer.transportation, item)\r\n        })\r\n      },\r\n      matchData (): MatchData {\r\n        return {\r\n          travelData: this.travelData,\r\n          availabilityTimesMatch: this.availabilityTimesMatch,\r\n          availabilityFrequencyMatch: this.availabilityFrequencyMatch,\r\n          genderMatch: this.genderPreferenceMatch,\r\n          ageMatch: this.ageMatch,\r\n          languageMatch: this.languageMatch,\r\n          interestMatch: this.interestMatch\r\n        } as MatchData\r\n      }\r\n    },\r\n    watch: {\r\n      volunteer () {\r\n        // re-initialize travel data\r\n        this.travelData = {\r\n          travelDistanceTime: this.$t('customerSearch.calculatingDistance').toString(),\r\n          isMatch: false,\r\n          isRealDistance: false\r\n        }\r\n        this.getTravelData()\r\n      }\r\n    },\r\n    mounted () {\r\n      this.getTravelData()\r\n\r\n      this.unsub = this.$store.subscribe((mutation, state) => {\r\n        switch (mutation.type) {\r\n        case 'setLanguage':\r\n          this.getTravelData()\r\n          break\r\n        }\r\n      })\r\n    },\r\n    beforeDestroy () {\r\n      if (this.unsub) {\r\n        this.unsub()\r\n      }\r\n    },\r\n    methods: {\r\n      prev (): void {\r\n        this.$emit('prev')\r\n      },\r\n      next (): void {\r\n        this.$emit('next')\r\n      },\r\n      close (): void {\r\n        this.$emit('close')\r\n      },\r\n      getTravelData (): void {\r\n        var self = this\r\n        // @ts-ignore (Mixins not found)\r\n        this.getTravelDistanceTime(this.volunteerAddress, this.customerAddress, this.volunteerTransportation).then(resp => {\r\n          this.travelData = {\r\n            travelDistanceTime: `${self.$t('customerSearch.travelToCustomer')}: ${resp.text}`,\r\n            isMatch: resp.minutes <= parseInt(self.volunteer.travelTime),\r\n            isRealDistance: resp.isRealDistance\r\n          }\r\n        }, () => {\r\n          this.travelData = {\r\n            travelDistanceTime: self.$t('customerSearch.distanceCalculationFailed').toString(),\r\n            isMatch: false,\r\n            isRealDistance: false\r\n          }\r\n        })\r\n      },\r\n      onRefresh (): void {\r\n        window.location.reload()\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteersummarystandard {\r\n    height: 100%;\r\n    .maincolumn {\r\n      background-color: $brand-white;\r\n      border-left: solid 5px $volunteer-color-strong;\r\n      padding-bottom: 15px;\r\n\r\n      @media (min-width: $media-md) {\r\n        border-right: solid 1px $brand-grey3;\r\n      }\r\n\r\n      .topsection {\r\n        margin-top: 30px;\r\n        .controls {\r\n          a {\r\n            color:$brand-red;\r\n            cursor: pointer;\r\n          }\r\n          .prev {\r\n            font-size:22px;\r\n            position: absolute;\r\n            top: 15px;\r\n            left: 15px;\r\n          }\r\n          .next {\r\n            font-size:22px;\r\n            position: absolute;\r\n            top: 15px;\r\n            right: 15px;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    .sidecolumn {\r\n      background-color: $brand-white;\r\n      .controls {\r\n        a {\r\n          color:$brand-red;\r\n          cursor: pointer;\r\n        }\r\n        .back {\r\n          position: absolute;\r\n          right:20px;\r\n          top: 15px;\r\n        }\r\n      }\r\n    }\r\n\r\n    &.inappropriate {\r\n      .maincolumn {\r\n        color: $brand-grey8;\r\n        background-color: $brand-grey3;\r\n\r\n        .icon, .match {\r\n          svg {\r\n            color: $brand-grey6;\r\n          }\r\n        }\r\n        .friendicon {\r\n          background-color: $brand-grey6;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerSummaryStandard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerSummaryStandard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerSummaryStandard.vue?vue&type=template&id=23c1ce86\"\nimport script from \"./VolunteerSummaryStandard.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerSummaryStandard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerSummaryStandard.vue?vue&type=style&index=0&id=23c1ce86&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"customer\" class=\"container customerfindstandardmatch\">\r\n    <div class=\"row header\">\r\n      <div class=\"col-lg-4 col-xl-4\">\r\n        <HomeButton\r\n          v-if=\"group\"\r\n          :group-id=\"group.id\"\r\n        />\r\n        <BackButton />\r\n      </div>\r\n      <div v-if=\"volunteerSelected\" class=\"col-lg-8 col-xl-9 d-none d-lg-block\">\r\n        <h4>{{ $t('customerSearch.customerMatchTitle') }}</h4>\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"group\" class=\"row content\">\r\n      <div class=\"col-lg-4 col-xl-3 mb-3 mb-lg-0 customer-area\">\r\n        <CustomerCardStandard\r\n          v-model=\"customer\"\r\n          :group=\"group\"\r\n          @refresh=\"onRefresh\"\r\n        />\r\n        <div v-show=\"isSending\" class=\"loading\">\r\n          <div class=\"spinner\">\r\n            <loading />\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-lg-8 col-xl-9 volunteer-area\">\r\n        <div v-if=\"!volunteerSelected\" class=\"row volunteer-selection\">\r\n          <div class=\"col-md-4 col-lg-4 order-md-2 search-filter\">\r\n            <!--<matchfilter v-model=\"matchFilter\" :is-net=\"group.netFriendship\" @filterchanged=\"onFilterChanged\" />-->\r\n            <customerFilter\r\n              :group=\"group\"\r\n              :filter-type=\"'VOLUNTEER'\"\r\n              :show-all=\"false\"\r\n              @filterchanged=\"onFilterChanged\"\r\n            />\r\n          </div>\r\n\r\n          <div class=\"col-md-8 col-lg-8 order-md-1 volunteer-list\">\r\n            <h4>{{ $t('customerSearch.customerMatchTitle') }}</h4>\r\n            <customermatchresults :list=\"filteredvolunteers\" @volunteerSelected=\"onVolunteerSelected\" />\r\n            <div v-show=\"isLoading\" class=\"loading\">\r\n              <div class=\"spinner\">\r\n                <loading />\r\n              </div>\r\n            </div>\r\n            <div v-if=\"!isLoading && noResults\" class=\"noresults infocontainer\">\r\n              <div class=\"info warning\">\r\n                <font-awesome-icon icon=\"exclamation-triangle\" />{{ $t('customerSearch.noResults') }}\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"volunteerSelected\" class=\"row d-lg-none volunteer-heading\">\r\n          <h4>{{ $t('customerSearch.customerMatchTitle') }}</h4>\r\n        </div>\r\n        <div v-if=\"group && volunteerSelected\" class=\"row ml-lg-1 volunteer-summary\">\r\n          <div class=\"col\">\r\n            <VolunteerSummaryStandard\r\n              :volunteer=\"volunteer\"\r\n              :customer=\"customer\"\r\n              :group=\"group\"\r\n              :score=\"score\"\r\n              :is-first=\"isFirst\"\r\n              :is-last=\"isLast\"\r\n              :is-inappropriate=\"isInappropriate\"\r\n              @prev=\"onPrev\"\r\n              @next=\"onNext\"\r\n              @close=\"onClose\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n  import CustomerCardStandard from './CustomerCardStandard.vue'\r\n  import VolunteerSummaryStandard from './VolunteerSummaryStandard.vue'\r\n  import customermatchresults from './CustomerMatchResults.vue'\r\n  import BackButton from '../BackButton.vue'\r\n  import HomeButton from '../HomeButton.vue'\r\n  import customerFilter from './CustomerFilter.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import datehelper from '@/helpers/datehelper'\r\n  import friendMatch from '@/mixins/friendMatch'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n\r\n  import { MatchItemStandardVolunteerDto, FriendCustomerStandardDto, UserProfileDto, FriendManagementDto, FriendshipStandardCommandCriteria, GetFriendProfileByFriendVolunteerIdCriteria } from '@/types/index'\r\n  import { MatchFilter, StandardMatchPair, SearchFilter } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    volunteerlist: Array<MatchItemStandardVolunteerDto>,\r\n    filteredvolunteers: Array<MatchItemStandardVolunteerDto>,\r\n    customer: undefined | FriendCustomerStandardDto,\r\n    volunteer: undefined | UserProfileDto,\r\n    score: number,\r\n    isLoading: boolean,\r\n    isSending: boolean,\r\n    isAuthorized: boolean,\r\n    matchFilter: MatchFilter\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerFindStandardMatch',\r\n    components: { CustomerCardStandard, customerFilter, VolunteerSummaryStandard, customermatchresults, BackButton, HomeButton, loading },\r\n    mixins: [friendMatch],\r\n    props: {\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      customerid: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        volunteerlist: [] as Array<MatchItemStandardVolunteerDto>,\r\n        filteredvolunteers: [] as Array<MatchItemStandardVolunteerDto>,\r\n        customer: undefined,\r\n        volunteer: undefined,\r\n        score: 0,\r\n        isLoading: false,\r\n        isSending: false,\r\n        isAuthorized: false,\r\n        matchFilter: {\r\n          customerTypes: [],\r\n          languages: [],\r\n          motherTongs: [],\r\n          ages: [],\r\n          hasGroupMembership: false,\r\n          genders: []\r\n        } as MatchFilter\r\n      }\r\n    },\r\n    computed: {\r\n      noResults (): boolean {\r\n        return this.volunteerlist === null || this.filteredvolunteers.length === 0\r\n      },\r\n      isFirst (): boolean {\r\n        if (this.filteredvolunteers.length <= 1) return true\r\n        return this.volunteer\r\n          // @ts-ignore: Object is possibly 'null'.\r\n          ? this.volunteer.friendInfo.id === this.filteredvolunteers[0].match.friendVolunteerId\r\n          : false\r\n      },\r\n      isLast (): boolean {\r\n        if (this.filteredvolunteers.length <= 1) return true\r\n        return this.volunteer\r\n          // @ts-ignore: Object is possibly 'null'.\r\n          ? this.volunteer.friendInfo.id === this.filteredvolunteers[this.filteredvolunteers.length - 1].match.friendVolunteerId\r\n          : false\r\n      },\r\n      isInappropriate (): boolean {\r\n        if (!this.volunteer) return false\r\n        // @ts-ignore: Object is possibly 'null'.\r\n        var selectedVolunteer = this.filteredvolunteers.find(x => x.match.friendVolunteerId === this.volunteer.friendInfo.id)\r\n        return selectedVolunteer ? selectedVolunteer.isInappropriateMatch : false\r\n      },\r\n      hasFriendship (): boolean {\r\n        return this.customer\r\n          // @ts-ignore: Object is possibly 'null'.\r\n          ? this.customer.friendships != null && this.customer.friendships.length > 0\r\n          : false\r\n      },\r\n      volunteerSelected (): boolean {\r\n        return !_.isEmpty(this.volunteer)\r\n      }\r\n    },\r\n    created (): void {\r\n      this.getCustomer()\r\n      this.getVolunteers()\r\n    },\r\n    mounted (): void {\r\n      window.scrollTo(0, 0)\r\n\r\n      this.$bus.$on('inappropriate-friendship', this.onInappropriateFriendship)\r\n      this.$bus.$on('end-inappropriate-friendship', this.onEndInappropriateFriendship)\r\n      this.$bus.$on('initiate-friendship', this.onInitiate)\r\n    },\r\n    beforeDestroy (): void {\r\n      this.$bus.$off('inappropriate-friendship')\r\n      this.$bus.$off('end-inappropriate-friendship')\r\n      this.$bus.$off('initiate-friendship')\r\n    },\r\n    methods: {\r\n      getCustomer (): void {\r\n        var self = this\r\n        this.isLoading = true\r\n        var getCustomerUrl = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customergetstandardbyid[0]}`.replace('{customerid}', this.customerid.toString()).replace('{groupid}', this.group.id.toString())\r\n\r\n        this.$http.get(getCustomerUrl).then(resp => {\r\n          self.customer = resp.data\r\n          this.isLoading = false\r\n        })\r\n      },\r\n      getVolunteer (friendVolunteerId): void {\r\n        var self = this\r\n        var criteria: GetFriendProfileByFriendVolunteerIdCriteria = {\r\n          friendManagementGroupId: this.group.id,\r\n          friendVolunteerId: friendVolunteerId,\r\n          includeFriendships: true,\r\n          includeFriendPools: false\r\n        }\r\n        var getVolunteerUrl = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteergetstandardprofilebyid[0]}`.replace('{friendvolunteerid}', friendVolunteerId).replace('{groupid}', this.group.id.toString())\r\n        this.isLoading = true\r\n        this.$http.post(getVolunteerUrl, criteria).then(resp => {\r\n          if (resp.data) {\r\n            self.volunteer = resp.data\r\n            self.isLoading = false\r\n          } else {\r\n            this.displayError(this.$t('common.fetchFailed'))\r\n          }\r\n        }, f => this.displayError(f))\r\n      },\r\n      getVolunteers (): void {\r\n        var self = this\r\n        this.isLoading = true\r\n        var volunteersUrl = `${this.$store.state.apiBases.friendservice}${this.$store.state.apiEndpoints.customerfindstandardmatch[0]}`\r\n\r\n        volunteersUrl = volunteersUrl.replace('{customerid}', this.customerid.toString()).replace('{groupid}', this.group.id.toString())\r\n        this.$http.get(volunteersUrl).then(resp => {\r\n          self.volunteerlist = _.reverse(_.sortBy(resp.data.items, ['score']))\r\n          self.filteredvolunteers = self.volunteerlist\r\n          self.isLoading = false\r\n        })\r\n      },\r\n      onVolunteerSelected (match: MatchItemStandardVolunteerDto): void {\r\n        window.scrollTo(0, 0)\r\n        // load volunteer from back end\r\n        this.getVolunteer(match.match.friendVolunteerId)\r\n        this.score = match.score\r\n      },\r\n      onInitiate (activation: StandardMatchPair): void {\r\n        var data: FriendshipStandardCommandCriteria = {\r\n          customerProfileStandardId: activation.customer.id,\r\n          volunteerStandardProfileId: activation.volunteer.friendInfo.standardProfile.id,\r\n          groupId: this.group.id\r\n        }\r\n        var url = `${this.$store.state.apiBases.friendservice}${this.$store.state.apiEndpoints.friendshipinitiatestandard[0]}`\r\n        this.$http.post(url, data).then(resp => {\r\n          this.$router.push(`/friend/customermatch/${this.group.id}/${this.customer?.id}/${activation.volunteer.friendInfo.id}`)\r\n        }, f => {\r\n          this.displayError(f || this.$t('common.fetchFailed'))\r\n        })\r\n      },\r\n      onPrev (): void {\r\n        var currentVolunteer = _.findIndex(this.filteredvolunteers, (item: MatchItemStandardVolunteerDto) => {\r\n          if (!this.volunteer) return false\r\n          return item.match.friendVolunteerId === this.volunteer.friendInfo.id\r\n        })\r\n\r\n        if (currentVolunteer > 0) {\r\n          var id = this.filteredvolunteers[currentVolunteer - 1].match.friendVolunteerId\r\n          this.getVolunteer(id)\r\n          this.score = this.filteredvolunteers[currentVolunteer - 1].score\r\n        }\r\n      },\r\n      onNext (): void {\r\n        var currentVolunteer = _.findIndex(this.filteredvolunteers, (item: MatchItemStandardVolunteerDto) => {\r\n          if (!this.volunteer) return false\r\n          return item.match.friendVolunteerId === this.volunteer.friendInfo.id\r\n        })\r\n\r\n        if (currentVolunteer > -1 && currentVolunteer < this.filteredvolunteers.length - 1) {\r\n          this.getVolunteer(this.filteredvolunteers[currentVolunteer + 1].match.friendVolunteerId)\r\n          this.score = this.filteredvolunteers[currentVolunteer + 1].score\r\n        }\r\n      },\r\n      onClose (): void {\r\n        this.volunteer = undefined\r\n      },\r\n      onInappropriateFriendship (friendshipInfo: StandardMatchPair): void {\r\n        var data: FriendshipStandardCommandCriteria = {\r\n          customerProfileStandardId: friendshipInfo.customer.id,\r\n          volunteerStandardProfileId: friendshipInfo.volunteer.friendInfo.standardProfile.id,\r\n          groupId: this.group.id\r\n        }\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipmarkinappropriatestandard[0]}`\r\n        this.$http.post(url, data).then((resp) => {\r\n          this.volunteer = undefined\r\n          this.getVolunteers()\r\n        })\r\n      },\r\n      onEndInappropriateFriendship (friendshipInfo: StandardMatchPair): void {\r\n        var data: FriendshipStandardCommandCriteria = {\r\n          customerProfileStandardId: friendshipInfo.customer.id,\r\n          volunteerStandardProfileId: friendshipInfo.volunteer.friendInfo.standardProfile.id,\r\n          groupId: this.group.id\r\n        }\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipendinappropriatestandard[0]}`\r\n        this.isLoading = true\r\n        this.$http.post(url, data).then((resp) => {\r\n          this.volunteer = undefined\r\n          this.getVolunteers()\r\n        }, f => {\r\n          // @ts-ignore Doesnt pick up mixins\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        })\r\n      },\r\n      onFilterChanged (val: MatchFilter): void {\r\n        var self = this\r\n        this.matchFilter = val\r\n        this.filteredvolunteers = this.volunteerlist.filter((matchresult: MatchItemStandardVolunteerDto) => {\r\n          return (!self.matchFilter.customerTypes?.length || bitmaskhelper.bitmaskToArray(matchresult.match.customerTypes).some(customerType => self.matchFilter.customerTypes?.includes(customerType))) &&\r\n            (!self.matchFilter.languages?.length || matchresult.match.spokenLanguages.some(spokenLanguage => self.matchFilter.languages?.includes(spokenLanguage))) &&\r\n            (!self.matchFilter.motherTongs?.length || self.matchFilter.motherTongs?.includes(matchresult.match.nativeLanguage)) &&\r\n            (!self.matchFilter.ages?.length || self.matchFilter.ages?.includes(friendMatch.methods.calculateBitmaskFromAge(datehelper.calculateAge(matchresult.match.birthDate))))\r\n        })\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      },\r\n      onRefresh (): void {\r\n        window.location.reload()\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customerfindstandardmatch {\r\n    .header {\r\n      margin-top: 10px;\r\n      margin-bottom: 15px;\r\n      .nav-header {\r\n        border-bottom: 0;\r\n      }\r\n      h4 {\r\n        padding-left: 10px;\r\n      }\r\n    }\r\n    .content {\r\n\r\n      .customer-area {\r\n        padding-top: 30px;\r\n        background-color: $brand-white;\r\n        border-left: solid 5px $customer-color-strong;\r\n      }\r\n\r\n      .volunteer-area {\r\n        .volunteer-selection {\r\n          height: 100%;\r\n          .search-filter {\r\n            background-color:$brand-white;\r\n            padding-top: 20px;\r\n          }\r\n          .volunteer-list {\r\n            h4 {\r\n              margin: 20px 0 10px 0;\r\n            }\r\n            .loading {\r\n              position: absolute;\r\n              display: flex;\r\n              top: 0;\r\n              left: 0;\r\n              bottom: 0;\r\n              right: 0;\r\n              height: 100%;\r\n              width: 100%;\r\n              background-color:rgba(255, 255, 255, 0.8);\r\n              .spinner {\r\n                margin: auto;\r\n                color:$brand-red;\r\n              }\r\n            }\r\n            .infocontainer {\r\n              height: 200px;\r\n              width: 100%;\r\n              background-color:$brand-white;\r\n              display: flex;\r\n              justify-content: center;\r\n              align-items:center;\r\n              align-content: center;\r\n              padding:50px;\r\n              .info {\r\n                margin: auto;\r\n                svg {\r\n                  margin-right: 5px;\r\n                  color:$brand-red;\r\n                  &.warning {\r\n                    color:$brand-warning;\r\n                  }\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n        .volunteer-heading {\r\n          h4 {\r\n            padding-left: 10px;\r\n          }\r\n        }\r\n        .volunteer-summary {\r\n          @media (min-width: $media-lg) {\r\n            height: 100%;\r\n          }\r\n        }\r\n      }\r\n\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerFindStandardMatch.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerFindStandardMatch.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerFindStandardMatch.vue?vue&type=template&id=74a5d834\"\nimport script from \"./CustomerFindStandardMatch.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerFindStandardMatch.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerFindStandardMatch.vue?vue&type=style&index=0&id=74a5d834&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"group\" class=\"container customerfindmatch\">\r\n    <CustomerFindNetMatch\r\n      v-if=\"group.netFriendship\"\r\n      :group=\"group\"\r\n      :customerid=\"customerIdNumber\"\r\n    />\r\n    <CustomerFindStandardMatch\r\n      v-else\r\n      :group=\"group\"\r\n      :customerid=\"customerIdNumber\"\r\n    />\r\n    <div v-show=\"isLoading\" class=\"loading\">\r\n      <div class=\"spinner\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n  import loading from '../SPRLoading.vue'\r\n  import CustomerFindNetMatch from './CustomerFindNetMatch.vue'\r\n  import CustomerFindStandardMatch from '@/components/friends/CustomerFindStandardMatch.vue'\r\n  import { FriendManagementDto } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    group: undefined | FriendManagementDto,\r\n    isLoading: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerFindMatch',\r\n    components: { CustomerFindStandardMatch, CustomerFindNetMatch, loading },\r\n    props: {\r\n      groupid: {\r\n        type: String,\r\n        required: true\r\n      },\r\n      customerid: {\r\n        type: String,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        group: undefined,\r\n        isLoading: false\r\n      }\r\n    },\r\n    computed: {\r\n      customerIdNumber (): number {\r\n        return Number(this.customerid)\r\n      }\r\n    },\r\n    created (): void {\r\n      this.isLoading = true\r\n      // @ts-ignore (cannot find mixins)\r\n      if (!this.hasBrokerRole(this.groupid) && !this.hasNetBrokerRole(this.groupid)) {\r\n        // @ts-ignore (cannot find mixins)\r\n        this.showAlertPermissionDenied().then(() => this.$router.push('/profile'))\r\n      } else {\r\n        this.getGroup().then(response => {\r\n          this.group = response.data\r\n          this.isLoading = false\r\n        }, f => {\r\n          // @ts-ignore (cannot find mixins)\r\n          this.showAlertPermissionDenied()\r\n        })\r\n      }\r\n    },\r\n    methods: {\r\n      getGroup (): PromiseLike<HttpResponse> {\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationById[0].replace('{0}', this.groupid)\r\n        return this.$http.get(url)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customerfindmatch {\r\n    .loading {\r\n      position: absolute;\r\n      display: flex;\r\n      top: 0;\r\n      left: 0;\r\n      bottom: 0;\r\n      right: 0;\r\n      height: 100%;\r\n      width: 100%;\r\n      background-color:rgba(255, 255, 255, 0.8);\r\n      .spinner {\r\n        margin: auto;\r\n        color:$brand-red;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerFindMatch.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerFindMatch.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerFindMatch.vue?vue&type=template&id=8da3278c\"\nimport script from \"./CustomerFindMatch.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerFindMatch.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerFindMatch.vue?vue&type=style&index=0&id=8da3278c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.isAuthorized && _vm.customer)?_c('div',{staticClass:\"container customermatchvolunteerdetails\"},[_c('div',{staticClass:\"row header\"},[_c('div',{staticClass:\"col-lg-4 col-xl-4\"},[(_vm.group)?_c('HomeButton',{attrs:{\"group-id\":_vm.group.id}}):_vm._e(),_c('BackButton')],1),_c('div',{staticClass:\"col-lg-8 col-xl-9 d-none d-lg-block\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.volunteerMatchDetails')))])])]),(_vm.group.netFriendship)?_c('CustomerNetMatchVolunteer',{attrs:{\"group\":_vm.group,\"customer\":_vm.customer,\"volunteer\":_vm.volunteer},on:{\"onactivate\":_vm.onActivate,\"oncancelpending\":_vm.onCancelPending,\"onterminate\":_vm.onTerminate}}):_c('CustomerStandardMatchVolunteer',{attrs:{\"group\":_vm.group,\"customer\":_vm.customer,\"volunteer\":_vm.volunteer},on:{\"onactivate\":_vm.onActivate,\"oncancelpending\":_vm.onCancelPending,\"onterminate\":_vm.onTerminate}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.volunteer)?_c('div',{staticClass:\"customerstandardmatchvolunteer\"},[_c('div',{staticClass:\"row content\"},[_c('div',{staticClass:\"col-lg-4 col-xl-3 mb-3 mb-lg-0 customer-area\"},[_c('CustomerCardStandard',{attrs:{\"group\":_vm.group,\"show-actions\":false},model:{value:(_vm.customer),callback:function ($$v) {_vm.customer=$$v},expression:\"customer\"}})],1),_c('div',{staticClass:\"col-lg-8 col-xl-9 volunteer-area\"},[_c('div',{staticClass:\"row d-lg-none\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.customerMatchDetails')))])]),_c('div',{staticClass:\"row ml-lg-1 volunteer-summary\"},[(_vm.hasFriendship)?_c('div',{staticClass:\"col\"},[_c('CustomerMatchSummaryStandard',{attrs:{\"group\":_vm.group,\"volunteer\":_vm.volunteer,\"customer\":_vm.customer},on:{\"close\":_vm.onClose,\"cancelpending\":_vm.onCancelPending,\"activate\":_vm.onActivate,\"terminate\":_vm.onTerminate}})],1):_c('div',{staticClass:\"volunteer-not-found\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(_vm._s(_vm.$t('customerSearch.matchNoLongerExists'))+\" \")],1)])])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row customermatchsummarystandard\"},[_c('div',{staticClass:\"col-md-6 mb-3 mb-md-0 maincolumn\"},[_c('VolunteerCardStandard',{attrs:{\"group\":_vm.group,\"show-matches\":false,\"friendship-state-override\":_vm.friendshipState},model:{value:(_vm.volunteer),callback:function ($$v) {_vm.volunteer=$$v},expression:\"volunteer\"}})],1),_c('div',{staticClass:\"col-md-6 sidecolumn\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"controls\"},[_c('div',{staticClass:\"back\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$t('customerSearch.close')))])])])])]),_c('div',[(_vm.selectedFriendship)?_c('FriendshipStatus',{attrs:{\"friendship\":_vm.selectedFriendship,\"group\":_vm.group},on:{\"cancelpending\":_vm.onCancelPending,\"activate\":_vm.onActivate,\"terminate\":_vm.onTerminate}}):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"friendshipstatus\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col maintitle\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('customerSearch.friendshipStatusTitle')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('statusindicator',{attrs:{\"statuses\":_vm.statuses},model:{value:(_vm.selectedStatus),callback:function ($$v) {_vm.selectedStatus=$$v},expression:\"selectedStatus\"}})],1),_vm._m(0)]),(_vm.isPending)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col proposedtitle\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('customerSearch.friendshipProposalSentTitle')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col proposed-instructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.friendshipProposalInstructions'))+\" \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col buttons\"},[_c('sprbutton',{staticClass:\"activate-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.activateButton'),\"click-event\":\"activate\"},on:{\"activate\":_vm.activate}}),_c('sprbutton',{staticClass:\"cancel-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.cancelProposedButton'),\"click-event\":\"cancel\"},on:{\"cancel\":_vm.cancel}})],1)])]):_vm._e(),(_vm.isActive)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col started\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('customerSearch.friendshipStartedTitle')))]),_vm._v(\" \"+_vm._s(_vm.startedPending)+\" \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col proposed-instructions\"},[_c('span',[_vm._v(_vm._s(_vm.$t('customerSearch.friendshipActivationInstructions')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col status\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('customerSearch.statusTitle'))+\": \"+_vm._s(_vm.selectedStatusText))])])]),(_vm.canSendMessage)?_c('div',[(!_vm.messaging)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col messagelink\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.startSendMessage}},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('customerSearch.sendMessageTitle'))+\" \"),_c('font-awesome-icon',{attrs:{\"icon\":\"chevron-right\"}})],1)])])]):_vm._e(),(_vm.sendSuccess)?_c('div',{staticClass:\"sendsuccess\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.messageSendSuccess'))+\" \")]):_vm._e(),(_vm.messaging)?_c('div',{staticClass:\"row messageform\"},[_c('div',{staticClass:\"col-12 message\"},[_c('div',{staticClass:\"subject\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('customerSearch.messageSubject'),\"is-valid\":true},model:{value:(_vm.subject),callback:function ($$v) {_vm.subject=$$v},expression:\"subject\"}})],1)]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"messagebody\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('customerSearch.messageContent'),\"rows\":5},model:{value:(_vm.content),callback:function ($$v) {_vm.content=$$v},expression:\"content\"}})],1)]),_c('div',{staticClass:\"col-12 text-left\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('customerSearch.sendAsMail'),\"aria-label\":_vm.$t('customerSearch.sendAsMail')},model:{value:(_vm.sendAsMail),callback:function ($$v) {_vm.sendAsMail=$$v},expression:\"sendAsMail\"}})],1)]):_vm._e(),(_vm.messaging)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col buttons\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('sectionMessages.sendMessage'),\"click-event\":\"sendMessage\"},on:{\"sendMessage\":_vm.sendMessage}}),_c('div',{staticClass:\"cancel\"},[_c('a',{attrs:{\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.cancelSendMessage}},[_vm._v(_vm._s(_vm.$t('customerSearch.cancel')))])])],1)]):_vm._e()]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col buttons\"},[_c('sprbutton',{staticClass:\"end-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.endFriendshipButton'),\"click-event\":\"end\"},on:{\"end\":_vm.end}})],1)])]):_vm._e()])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"col rule\"},[_c('hr')])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"statusindicator\"},_vm._l((_vm.statuses),function(status){return _c('div',{key:status.key,staticClass:\"indicatorcontainer\"},[_c('div',{staticClass:\"indicator\",class:{'selected': _vm.isSelected(status.key)}},[_c('span',{staticClass:\"status\"},[_vm._v(_vm._s(status.label))])]),_c('div',{staticClass:\"indicatortitle\"},[_vm._v(\" \"+_vm._s(status.title)+\" \")])])}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n  .statusindicator {\r\n    border-top:solid 1px $brand-red;\r\n    margin-top: 20px;\r\n    display:inline-block;\r\n\r\n    .indicatorcontainer {\r\n      display:inline-block;\r\n      top: -18px;\r\n      margin-right: 32px;\r\n      margin-left: 32px;\r\n      position:relative;\r\n\r\n      &:first-child {\r\n        margin-left: -2px;\r\n      }\r\n\r\n      &:last-child {\r\n        margin-right: -2px;\r\n      }\r\n\r\n      .indicator {\r\n        border: solid 2px $brand-red;\r\n        background-color:$brand-white;\r\n        color: $brand-red;\r\n        border-radius: 100%;\r\n        height: 32px;\r\n        width: 32px;\r\n        display:flex;\r\n        font-family:Verdana, sans-serif; //Signa-Light numbers jump above and below baseline!\r\n\r\n        &.selected {\r\n          background-color:$brand-red;\r\n          color:$brand-white;\r\n        }\r\n\r\n        .status {\r\n          margin: auto;\r\n        }\r\n      }\r\n\r\n      .indicatortitle {\r\n        position: absolute;\r\n        left: -19px;\r\n        width:70px;\r\n        display:block;\r\n        font-size:0.8em;\r\n        font-weight:bold;\r\n        margin-top:10px;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n<template>\r\n  <div class=\"statusindicator\">\r\n    <div v-for=\"status in statuses\" :key=\"status.key\" class=\"indicatorcontainer\">\r\n      <div class=\"indicator\" :class=\"{'selected': isSelected(status.key)}\">\r\n        <span class=\"status\">{{ status.label }}</span>\r\n      </div>\r\n      <div class=\"indicatortitle\">\r\n        {{ status.title }}\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'Statusindicator',\r\n    props: {\r\n      statuses: {\r\n        type: Array,\r\n        default () {\r\n          return []\r\n        }\r\n      },\r\n      value: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    methods: {\r\n      isSelected (key) {\r\n        return key === this.value\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRStatusIndicator.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRStatusIndicator.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRStatusIndicator.vue?vue&type=template&id=279a601c\"\nimport script from \"./SPRStatusIndicator.vue?vue&type=script&lang=js\"\nexport * from \"./SPRStatusIndicator.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRStatusIndicator.vue?vue&type=style&index=0&id=279a601c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"friendshipstatus\">\r\n    <div class=\"row\">\r\n      <div class=\"col maintitle\">\r\n        <span class=\"title\">{{ $t('customerSearch.friendshipStatusTitle') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <statusindicator v-model=\"selectedStatus\" :statuses=\"statuses\" />\r\n      </div>\r\n      <div class=\"col rule\">\r\n        <hr>\r\n      </div>\r\n    </div>\r\n    <div v-if=\"isPending\">\r\n      <div class=\"row\">\r\n        <div class=\"col proposedtitle\">\r\n          <span class=\"title\">{{ $t('customerSearch.friendshipProposalSentTitle') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col proposed-instructions\">\r\n          {{ $t('customerSearch.friendshipProposalInstructions') }}\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col buttons\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.activateButton')\"\r\n                     click-event=\"activate\"\r\n                     class=\"activate-button\"\r\n                     @activate=\"activate\"\r\n          />\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.cancelProposedButton')\"\r\n                     click-event=\"cancel\"\r\n                     class=\"cancel-button\"\r\n                     @cancel=\"cancel\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div v-if=\"isActive\">\r\n      <div class=\"row\">\r\n        <div class=\"col started\">\r\n          <span class=\"title\">{{ $t('customerSearch.friendshipStartedTitle') }}</span>\r\n          {{ startedPending }}\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row\">\r\n        <div class=\"col proposed-instructions\">\r\n          <span>{{ $t('customerSearch.friendshipActivationInstructions') }}</span>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row\">\r\n        <div class=\"col status\">\r\n          <span class=\"title\">{{ $t('customerSearch.statusTitle') }}: {{ selectedStatusText }}</span>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"canSendMessage\">\r\n        <div v-if=\"!messaging\" class=\"row\">\r\n          <div class=\"col messagelink\">\r\n            <a href=\"javascript:void(0)\" @click=\"startSendMessage\"><span class=\"title\">{{ $t('customerSearch.sendMessageTitle') }} <font-awesome-icon icon=\"chevron-right\" /></span></a>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"sendSuccess\" class=\"sendsuccess\">\r\n          {{ $t('customerSearch.messageSendSuccess') }}\r\n        </div>\r\n        <div v-if=\"messaging\" class=\"row messageform\">\r\n          <div class=\"col-12 message\">\r\n            <div class=\"subject\">\r\n              <forminput v-model=\"subject\"\r\n                         :hint=\"$t('customerSearch.messageSubject')\"\r\n                         :is-valid=\"true\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <div class=\"messagebody\">\r\n              <textareainput v-model=\"content\"\r\n                             :title=\"$t('customerSearch.messageContent')\"\r\n                             :rows=\"5\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 text-left\">\r\n            <checkboxinput v-model=\"sendAsMail\"\r\n                           :title=\"$t('customerSearch.sendAsMail')\"\r\n                           :aria-label=\"$t('customerSearch.sendAsMail')\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div v-if=\"messaging\" class=\"row\">\r\n          <div class=\"col buttons\">\r\n            <sprbutton type=\"primary\"\r\n                       :size=\"4\"\r\n                       :title=\"$t('sectionMessages.sendMessage')\"\r\n                       class=\"spr-redborder button-width\"\r\n                       click-event=\"sendMessage\"\r\n                       @sendMessage=\"sendMessage\"\r\n            />\r\n            <div class=\"cancel\">\r\n              <a href=\"javascript:void(0);\" @click=\"cancelSendMessage\">{{ $t('customerSearch.cancel') }}</a>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col buttons\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.endFriendshipButton')\"\r\n                     click-event=\"end\"\r\n                     class=\"end-button\"\r\n                     @end=\"end\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import statusindicator from '../SPRStatusIndicator.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import moment from 'moment'\r\n  import { FriendshipStandardDto, FriendshipNetDto, FriendshipState, SendFriendshipVolunteerMessage, FriendManagementDto } from '@/types/index'\r\n  import { TranslateResult } from 'vue-i18n'\r\n\r\n  export default Vue.extend({\r\n    name: 'FriendshipStatus',\r\n    components: { statusindicator, sprbutton, textareainput, forminput, checkboxinput },\r\n    props: {\r\n      friendship: {\r\n        type: Object as () => FriendshipStandardDto | FriendshipNetDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        statuses: [\r\n          { key: 0, label: '1', title: this.$t('customerSearch.customerStateNone') },\r\n          { key: 1, label: '2', title: this.$t('customerSearch.customerStatePending') },\r\n          { key: 2, label: '3', title: this.$t('customerSearch.customerStateActive') }\r\n        ],\r\n        messaging: false,\r\n        subject: '',\r\n        content: '',\r\n        sendAsMail: false,\r\n        sendSuccess: false\r\n      }\r\n    },\r\n    computed: {\r\n      selectedStatus (): FriendshipState {\r\n        return this.friendship.friendshipState\r\n      },\r\n      selectedStatusText (): string | TranslateResult {\r\n        var self = this\r\n        var status = _.find(this.statuses, function (s) {\r\n          return s.key === self.selectedStatus\r\n        })\r\n\r\n        if (status) return status.title\r\n\r\n        return ''\r\n      },\r\n      isPending (): boolean {\r\n        return this.friendship.friendshipState === FriendshipState.PendingApproval\r\n      },\r\n      isActive (): boolean {\r\n        return this.friendship.friendshipState === FriendshipState.Active\r\n      },\r\n      isTerminated (): boolean {\r\n        return this.friendship.friendshipState === FriendshipState.Terminated\r\n      },\r\n      startedPending (): string {\r\n        return moment(this.friendship.started).format('DD.MM.YYYY HH:mm')\r\n      },\r\n      canSendMessage (): boolean {\r\n        return this.friendship.volunteer && !this.friendship.volunteer.isNonIdent\r\n      }\r\n    },\r\n    methods: {\r\n      cancel (): void {\r\n        var self = this\r\n        //todo: change to this.friendship\r\n        this.$emit('cancelpending', this.friendship)\r\n      },\r\n      activate (): void {\r\n        var self = this\r\n        this.$emit('activate', this.friendship)\r\n      },\r\n      end (): void {\r\n        var self = this\r\n        this.$emit('terminate', this.friendship)\r\n      },\r\n      isStandardGroup (friendship: FriendshipStandardDto | FriendshipNetDto): boolean {\r\n        return (friendship as FriendshipStandardDto).customerProfileStandardId !== undefined\r\n      },\r\n      sendMessage (): void {\r\n        var self = this\r\n        var url = this.group.netFriendship\r\n          ? `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.sendnetfriendshipvolunteermessage[0]}`\r\n          : `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.sendstandardfriendshipvolunteermessage[0]}`\r\n        var messageDto = {\r\n          subject: this.subject,\r\n          content: this.content,\r\n          senderProfileId: this.$store.state.profile.profileId,\r\n          sendAsEmail: this.sendAsMail,\r\n          volunteerId: this.friendship.volunteer.volunteerId,\r\n          friendManagementGroupId: this.group.id\r\n        } as SendFriendshipVolunteerMessage\r\n        this.$http.post(url, messageDto).then((resp) => {\r\n          this.messaging = false\r\n          this.sendSuccess = true\r\n          this.subject = ''\r\n          this.content = ''\r\n        })\r\n      },\r\n      cancelSendMessage (): void {\r\n        this.messaging = false\r\n      },\r\n      startSendMessage (): void {\r\n        this.messaging = true\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .friendshipstatus {\r\n    text-align: center;\r\n\r\n    .title {\r\n      text-transform: uppercase;\r\n      color:$brand-red;\r\n      font-weight: bold;\r\n      display:block;\r\n    }\r\n\r\n    .sendsuccess {\r\n      color: $brand-success;\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .maintitle {\r\n      margin: 30px 0;\r\n    }\r\n\r\n    .rule {\r\n      margin-top: 20px;\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .started {\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .status {\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .messagelink {\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .messageform {\r\n      text-align: left;\r\n    }\r\n\r\n    .proposedtitle {\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .proposed-instructions {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .buttons {\r\n      margin-bottom: 30px;\r\n      button {\r\n        margin-bottom:5px;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipStatus.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipStatus.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FriendshipStatus.vue?vue&type=template&id=0efcbdaa\"\nimport script from \"./FriendshipStatus.vue?vue&type=script&lang=ts\"\nexport * from \"./FriendshipStatus.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FriendshipStatus.vue?vue&type=style&index=0&id=0efcbdaa&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"row customermatchsummarystandard\">\r\n    <div class=\"col-md-6 mb-3 mb-md-0 maincolumn\">\r\n      <VolunteerCardStandard\r\n        v-model=\"volunteer\"\r\n        :group=\"group\"\r\n        :show-matches=\"false\"\r\n        :friendship-state-override=\"friendshipState\"\r\n      />\r\n    </div>\r\n    <div class=\"col-md-6 sidecolumn\">\r\n      <div class=\"row\">\r\n        <div class=\"col\">\r\n          <div class=\"controls\">\r\n            <div class=\"back\">\r\n              <a href=\"javascript:void(0)\" @click=\"close\">{{ $t('customerSearch.close') }}</a>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div>\r\n        <FriendshipStatus\r\n          v-if=\"selectedFriendship\"\r\n          :friendship=\"selectedFriendship\"\r\n          :group=\"group\"\r\n          @cancelpending=\"onCancelPending\"\r\n          @activate=\"onActivate\"\r\n          @terminate=\"onTerminate\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import FriendshipStatus from './FriendshipStatus.vue'\r\n  import VolunteerCardStandard from './VolunteerCardStandard.vue'\r\n  import { FriendManagementDto, FriendCustomerStandardDto, FriendProfileDto, FriendshipStandardDto, FriendshipState } from '@/types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerMatchSummaryStandard',\r\n    components: { FriendshipStatus, VolunteerCardStandard },\r\n    mixins: [datehelper],\r\n    props: {\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto,\r\n        required: true\r\n      },\r\n      volunteer: {\r\n        type: Object as () => FriendProfileDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      selectedFriendship (): FriendshipStandardDto | undefined {\r\n        return this.volunteer.friendInfo.standardProfile.friendships.find((x: FriendshipStandardDto) => {\r\n          return x.customer.id === this.customer.id\r\n        })\r\n      },\r\n      friendshipState (): FriendshipState | undefined {\r\n        return this.selectedFriendship?.friendshipState\r\n      }\r\n    },\r\n    methods: {\r\n      close (): void {\r\n        this.$emit('close')\r\n      },\r\n      onCancelPending (friendship: FriendshipStandardDto): void {\r\n        this.$emit('cancelpending', friendship)\r\n      },\r\n      onActivate (friendship: FriendshipStandardDto): void {\r\n        this.$emit('activate', friendship)\r\n      },\r\n      onTerminate (friendship: FriendshipStandardDto): void {\r\n        this.$emit('terminate', friendship)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customermatchsummarystandard {\r\n    height: 100%;\r\n    .maincolumn {\r\n      background-color: $brand-white;\r\n      border-left: solid 5px $volunteer-color-strong;\r\n      padding-bottom: 15px;\r\n      padding-top: 30px;\r\n\r\n      @media (min-width: $media-md) {\r\n        border-right: solid 1px $brand-grey3;\r\n      }\r\n    }\r\n\r\n    .sidecolumn {\r\n      background-color: $brand-white;\r\n      .controls {\r\n        a {\r\n          color:$brand-red;\r\n          cursor: pointer;\r\n        }\r\n        .back {\r\n          position: absolute;\r\n          right:20px;\r\n          top: 15px;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchSummaryStandard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchSummaryStandard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerMatchSummaryStandard.vue?vue&type=template&id=bfcbd044\"\nimport script from \"./CustomerMatchSummaryStandard.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerMatchSummaryStandard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerMatchSummaryStandard.vue?vue&type=style&index=0&id=bfcbd044&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"volunteer\" class=\"customerstandardmatchvolunteer\">\r\n    <div class=\"row content\">\r\n      <div class=\"col-lg-4 col-xl-3 mb-3 mb-lg-0 customer-area\">\r\n        <CustomerCardStandard\r\n          v-model=\"customer\"\r\n          :group=\"group\"\r\n          :show-actions=\"false\"\r\n        />\r\n      </div>\r\n\r\n      <div class=\"col-lg-8 col-xl-9 volunteer-area\">\r\n        <div class=\"row d-lg-none\">\r\n          <h4>{{ $t('customerSearch.customerMatchDetails') }}</h4>\r\n        </div>\r\n        <div class=\"row ml-lg-1 volunteer-summary\">\r\n          <div v-if=\"hasFriendship\" class=\"col\">\r\n            <CustomerMatchSummaryStandard\r\n              :group=\"group\"\r\n              :volunteer=\"volunteer\"\r\n              :customer=\"customer\"\r\n              @close=\"onClose\"\r\n              @cancelpending=\"onCancelPending\"\r\n              @activate=\"onActivate\"\r\n              @terminate=\"onTerminate\"\r\n            />\r\n          </div>\r\n          <div v-else class=\"volunteer-not-found\">\r\n            <font-awesome-icon icon=\"exclamation-triangle\" />{{ $t('customerSearch.matchNoLongerExists') }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import CustomerCardStandard from './CustomerCardStandard.vue'\r\n  import CustomerMatchSummaryStandard from './CustomerMatchSummaryStandard.vue'\r\n  import { FriendManagementDto, FriendCustomerStandardDto, FriendProfileDto, FriendshipStandardDto, FriendshipStandardCommandCriteria, FriendshipNetDto } from '@/types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerStandardMatchVolunteer',\r\n    components: { CustomerCardStandard, CustomerMatchSummaryStandard },\r\n    props: {\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto,\r\n        required: true\r\n      },\r\n      volunteer: {\r\n        type: Object as () => FriendProfileDto,\r\n        required: true\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        score: 0,\r\n        isLoading: false,\r\n        isSending: false\r\n      }\r\n    },\r\n    computed: {\r\n      hasFriendship (): boolean {\r\n        return this.customer.friendships != null && this.customer.friendships.length > 0\r\n      }\r\n    },\r\n    mounted () {\r\n      window.scrollTo(0, 0)\r\n    },\r\n    methods: {\r\n      onClose () {\r\n        // go back to the matches of the customer\r\n        this.$router.push(`/friend/customerpreview/${this.group.id}/${this.customer.id}`)\r\n      },\r\n      onCancelPending (friendship: FriendshipStandardDto) {\r\n        var data: FriendshipStandardCommandCriteria = this.getStandardFriendshipCommandCriteria(friendship)\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipcancelstandard[0]}`\r\n        this.$http.post(url, data).then(resp => {\r\n          this.$emit('oncancelpending')\r\n        })\r\n      },\r\n      onActivate (friendship: FriendshipStandardDto) {\r\n        var self = this\r\n        var data: FriendshipStandardCommandCriteria = this.getStandardFriendshipCommandCriteria(friendship)\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipactivatestandard[0]}`\r\n        this.$http.post(url, data).then(resp => {\r\n          this.$emit('onactivate')\r\n        })\r\n      },\r\n      onTerminate (friendship: FriendshipStandardDto) {\r\n        var data: FriendshipStandardCommandCriteria = this.getStandardFriendshipCommandCriteria(friendship)\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipterminatestandard[0]}`\r\n        this.$http.post(url, data).then(resp => {\r\n          this.$emit('onterminate')\r\n        })\r\n      },\r\n      getStandardFriendshipCommandCriteria (friendship: FriendshipStandardDto) {\r\n        return {\r\n          groupId: this.group?.id,\r\n          customerProfileStandardId: friendship.customerProfileStandardId,\r\n          volunteerStandardProfileId: friendship.friendVolunteerProfileStandardId\r\n        } as FriendshipStandardCommandCriteria\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customerstandardmatchvolunteer {\r\n    .header {\r\n      margin-top: 10px;\r\n      .nav-header {\r\n        border-bottom: 0;\r\n      }\r\n      h4 {\r\n        padding-left: 10px;\r\n      }\r\n    }\r\n    .content {\r\n\r\n      .customer-area {\r\n        padding-top: 30px;\r\n        background-color: $brand-white;\r\n        border-left: solid 5px $customer-color-strong;\r\n      }\r\n\r\n      .volunteer-area {\r\n        h4 {\r\n          padding-left: 10px;\r\n        }\r\n        .volunteer-summary {\r\n          @media (min-width: $media-lg) {\r\n            height: 100%;\r\n          }\r\n        }\r\n        .volunteer-not-found {\r\n          height: 100%;\r\n          text-align: center;\r\n          margin-top: 50px;\r\n          font-weight: bold;\r\n          .fa {\r\n            color: $brand-red;\r\n            margin-right: 5px;\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerStandardMatchVolunteer.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerStandardMatchVolunteer.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerStandardMatchVolunteer.vue?vue&type=template&id=73bd42ee\"\nimport script from \"./CustomerStandardMatchVolunteer.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerStandardMatchVolunteer.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerStandardMatchVolunteer.vue?vue&type=style&index=0&id=73bd42ee&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.volunteer)?_c('div',{staticClass:\"customernetmatchvolunteer\"},[_c('div',{staticClass:\"row content\"},[_c('div',{staticClass:\"col-lg-4 col-xl-3 mb-3 mb-lg-0 customer-area\"},[_c('CustomerCardNet',{attrs:{\"group\":_vm.group,\"show-actions\":false},model:{value:(_vm.customer),callback:function ($$v) {_vm.customer=$$v},expression:\"customer\"}})],1),_c('div',{staticClass:\"col-lg-8 col-xl-9 volunteer-area\"},[_c('div',{staticClass:\"row d-lg-none\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.customerMatchDetails')))])]),_c('div',{staticClass:\"row ml-lg-1 volunteer-summary\"},[(_vm.hasFriendship)?_c('div',{staticClass:\"col\"},[_c('CustomerMatchSummaryNet',{attrs:{\"group\":_vm.group,\"volunteer\":_vm.volunteer,\"customer\":_vm.customer},on:{\"close\":_vm.onClose,\"cancelpending\":_vm.onCancelPending,\"activate\":_vm.onActivate,\"terminate\":_vm.onTerminate}})],1):_c('div',{staticClass:\"volunteer-not-found\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(_vm._s(_vm.$t('customerSearch.matchNoLongerExists'))+\" \")],1)])])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row customermatchsummarynet\"},[_c('div',{staticClass:\"col-md-6 mb-3 mb-md-0 maincolumn\"},[_c('VolunteerCardNet',{attrs:{\"group\":_vm.group,\"show-matches\":false,\"friendship-state-override\":_vm.friendshipState},model:{value:(_vm.volunteer),callback:function ($$v) {_vm.volunteer=$$v},expression:\"volunteer\"}})],1),_c('div',{staticClass:\"col-md-6 sidecolumn\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"controls\"},[_c('div',{staticClass:\"back\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$t('customerSearch.close')))])])])])]),_c('div',[(_vm.selectedFriendship)?_c('FriendshipStatus',{attrs:{\"friendship\":_vm.selectedFriendship,\"group\":_vm.group},on:{\"cancelpending\":_vm.onCancelPending,\"activate\":_vm.onActivate,\"terminate\":_vm.onTerminate}}):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row customermatchsummarynet\">\r\n    <div class=\"col-md-6 mb-3 mb-md-0 maincolumn\">\r\n      <VolunteerCardNet\r\n        v-model=\"volunteer\"\r\n        :group=\"group\"\r\n        :show-matches=\"false\"\r\n        :friendship-state-override=\"friendshipState\"\r\n      />\r\n    </div>\r\n    <div class=\"col-md-6 sidecolumn\">\r\n      <div class=\"row\">\r\n        <div class=\"col\">\r\n          <div class=\"controls\">\r\n            <div class=\"back\">\r\n              <a href=\"javascript:void(0)\" @click=\"close\">{{ $t('customerSearch.close') }}</a>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div>\r\n        <FriendshipStatus\r\n          v-if=\"selectedFriendship\"\r\n          :friendship=\"selectedFriendship\"\r\n          :group=\"group\"\r\n          @cancelpending=\"onCancelPending\"\r\n          @activate=\"onActivate\"\r\n          @terminate=\"onTerminate\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import FriendshipStatus from './FriendshipStatus.vue'\r\n  import VolunteerCardNet from './VolunteerCardNet.vue'\r\n  import { FriendManagementDto, FriendCustomerNetDto, FriendProfileDto, FriendshipNetDto, FriendshipState } from '@/types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerMatchSummaryStandard',\r\n    components: { FriendshipStatus, VolunteerCardNet },\r\n    mixins: [datehelper],\r\n    props: {\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      customer: {\r\n        type: Object as () => FriendCustomerNetDto,\r\n        required: true\r\n      },\r\n      volunteer: {\r\n        type: Object as () => FriendProfileDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      selectedFriendship (): FriendshipNetDto | undefined {\r\n        return this.volunteer.friendInfo.netProfile.friendships.find((x: FriendshipNetDto) => {\r\n          return x.customer.id === this.customer.id\r\n        })\r\n      },\r\n      friendshipState (): FriendshipState | undefined {\r\n        return this.selectedFriendship?.friendshipState\r\n      }\r\n    },\r\n    methods: {\r\n      close (): void {\r\n        this.$emit('close')\r\n      },\r\n      onCancelPending (friendship: FriendshipNetDto): void {\r\n        this.$emit('cancelpending', friendship)\r\n      },\r\n      onActivate (friendship: FriendshipNetDto): void {\r\n        this.$emit('activate', friendship)\r\n      },\r\n      onTerminate (friendship: FriendshipNetDto): void {\r\n        this.$emit('terminate', friendship)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customermatchsummarynet {\r\n    height: 100%;\r\n    .maincolumn {\r\n      background-color: $brand-white;\r\n      border-left: solid 5px $customer-color-strong;\r\n      padding-bottom: 15px;\r\n      padding-top: 30px;\r\n\r\n      @media (min-width: $media-md) {\r\n        border-right: solid 1px $brand-grey3;\r\n      }\r\n    }\r\n\r\n    .sidecolumn {\r\n      background-color: $brand-white;\r\n      .controls {\r\n        a {\r\n          color:$brand-red;\r\n          cursor: pointer;\r\n        }\r\n        .back {\r\n          position: absolute;\r\n          right:20px;\r\n          top: 15px;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchSummaryNet.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchSummaryNet.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerMatchSummaryNet.vue?vue&type=template&id=81ee1d90\"\nimport script from \"./CustomerMatchSummaryNet.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerMatchSummaryNet.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerMatchSummaryNet.vue?vue&type=style&index=0&id=81ee1d90&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"volunteer\" class=\"customernetmatchvolunteer\">\r\n    <div class=\"row content\">\r\n      <div class=\"col-lg-4 col-xl-3 mb-3 mb-lg-0 customer-area\">\r\n        <CustomerCardNet\r\n          v-model=\"customer\"\r\n          :group=\"group\"\r\n          :show-actions=\"false\"\r\n        />\r\n      </div>\r\n\r\n      <div class=\"col-lg-8 col-xl-9 volunteer-area\">\r\n        <div class=\"row d-lg-none\">\r\n          <h4>{{ $t('customerSearch.customerMatchDetails') }}</h4>\r\n        </div>\r\n        <div class=\"row ml-lg-1 volunteer-summary\">\r\n          <div v-if=\"hasFriendship\" class=\"col\">\r\n            <CustomerMatchSummaryNet\r\n              :group=\"group\"\r\n              :volunteer=\"volunteer\"\r\n              :customer=\"customer\"\r\n              @close=\"onClose\"\r\n              @cancelpending=\"onCancelPending\"\r\n              @activate=\"onActivate\"\r\n              @terminate=\"onTerminate\"\r\n            />\r\n          </div>\r\n          <div v-else class=\"volunteer-not-found\">\r\n            <font-awesome-icon icon=\"exclamation-triangle\" />{{ $t('customerSearch.matchNoLongerExists') }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import CustomerCardNet from './CustomerCardNet.vue'\r\n  import CustomerMatchSummaryNet from './CustomerMatchSummaryNet.vue'\r\n  import { FriendManagementDto, FriendCustomerNetDto, FriendProfileDto, FriendshipStandardDto, FriendshipNetDto, FriendshipStandardCommandCriteria, FriendshipNetCommandCriteria } from '@/types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerNetMatchVolunteer',\r\n    components: { CustomerCardNet, CustomerMatchSummaryNet },\r\n    props: {\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      customer: {\r\n        type: Object as () => FriendCustomerNetDto,\r\n        required: true\r\n      },\r\n      volunteer: {\r\n        type: Object as () => FriendProfileDto,\r\n        required: true\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        score: 0,\r\n        isLoading: false,\r\n        isSending: false\r\n      }\r\n    },\r\n    computed: {\r\n      hasFriendship (): boolean {\r\n        return this.customer.friendships != null && this.customer.friendships.length > 0\r\n      }\r\n    },\r\n    mounted () {\r\n      window.scrollTo(0, 0)\r\n    },\r\n    methods: {\r\n      onClose () {\r\n        // go back to the matches of the customer\r\n        this.$router.push(`/friend/customerpreview/${this.group.id}/${this.customer.id}`)\r\n      },\r\n      onCancelPending (friendship: FriendshipNetDto) {\r\n        var data: FriendshipNetCommandCriteria = this.getNetFriendshipCommandCriteria(friendship)\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipcancelnet[0]}`\r\n        this.$http.post(url, data).then(resp => {\r\n          this.$emit('oncancelpending')\r\n        })\r\n      },\r\n      onActivate (friendship: FriendshipNetDto) {\r\n        var self = this\r\n        var data: FriendshipNetCommandCriteria = this.getNetFriendshipCommandCriteria(friendship)\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipactivatenet[0]}`\r\n        this.$http.post(url, data).then(resp => {\r\n          this.$emit('onactivate')\r\n        })\r\n      },\r\n      onTerminate (friendship: FriendshipNetDto) {\r\n        var data: FriendshipNetCommandCriteria = this.getNetFriendshipCommandCriteria(friendship)\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipterminatenet[0]}`\r\n        this.$http.post(url, data).then(resp => {\r\n          this.$emit('onterminate')\r\n        })\r\n      },\r\n      getNetFriendshipCommandCriteria (friendship: FriendshipNetDto) {\r\n        return {\r\n          groupId: this.group?.id,\r\n          customerProfileNetId: friendship.customerProfileNetId,\r\n          volunteerNetProfileId: friendship.friendVolunteerProfileNetId\r\n        } as FriendshipNetCommandCriteria\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customernetmatchvolunteer {\r\n    .header {\r\n      margin-top: 10px;\r\n      .nav-header {\r\n        border-bottom: 0;\r\n      }\r\n      h4 {\r\n        padding-left: 10px;\r\n      }\r\n    }\r\n    .content {\r\n\r\n      .customer-area {\r\n        padding-top: 30px;\r\n        background-color: $brand-white;\r\n        border-left: solid 5px $customer-color-strong;\r\n      }\r\n\r\n      .volunteer-area {\r\n        h4 {\r\n          padding-left: 10px;\r\n        }\r\n        .volunteer-summary {\r\n          @media (min-width: $media-lg) {\r\n            height: 100%;\r\n          }\r\n        }\r\n        .volunteer-not-found {\r\n          height: 100%;\r\n          text-align: center;\r\n          margin-top: 50px;\r\n          font-weight: bold;\r\n          .fa {\r\n            color: $brand-red;\r\n            margin-right: 5px;\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerNetMatchVolunteer.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerNetMatchVolunteer.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerNetMatchVolunteer.vue?vue&type=template&id=ddc0dc14\"\nimport script from \"./CustomerNetMatchVolunteer.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerNetMatchVolunteer.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerNetMatchVolunteer.vue?vue&type=style&index=0&id=ddc0dc14&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"isAuthorized && customer\" class=\"container customermatchvolunteerdetails\">\r\n    <div class=\"row header\">\r\n      <div class=\"col-lg-4 col-xl-4\">\r\n        <HomeButton\r\n          v-if=\"group\"\r\n          :group-id=\"group.id\"\r\n        />\r\n        <BackButton />\r\n      </div>\r\n      <div class=\"col-lg-8 col-xl-9 d-none d-lg-block\">\r\n        <h4>{{ $t('customerSearch.volunteerMatchDetails') }}</h4>\r\n      </div>\r\n    </div>\r\n\r\n    <CustomerNetMatchVolunteer\r\n      v-if=\"group.netFriendship\"\r\n      :group=\"group\"\r\n      :customer=\"customer\"\r\n      :volunteer=\"volunteer\"\r\n      @onactivate=\"onActivate\"\r\n      @oncancelpending=\"onCancelPending\"\r\n      @onterminate=\"onTerminate\"\r\n    />\r\n    <CustomerStandardMatchVolunteer\r\n      v-else\r\n      :group=\"group\"\r\n      :customer=\"customer\"\r\n      :volunteer=\"volunteer\"\r\n      @onactivate=\"onActivate\"\r\n      @oncancelpending=\"onCancelPending\"\r\n      @onterminate=\"onTerminate\"\r\n    />\r\n    <div v-show=\"isLoading\" class=\"loading\">\r\n      <div class=\"spinner\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import CustomerStandardMatchVolunteer from './CustomerStandardMatchVolunteer.vue'\r\n  import CustomerNetMatchVolunteer from './CustomerNetMatchVolunteer.vue'\r\n  import BackButton from '../BackButton.vue'\r\n  import HomeButton from '../HomeButton.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { FriendCustomerStandardDto, FriendCustomerNetDto, FriendManagementDto, FriendProfileDto, FriendshipStandardDto, FriendshipNetDto, GetFriendProfileByFriendVolunteerIdCriteria } from '@/types'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    customer: undefined | FriendCustomerStandardDto | FriendCustomerNetDto,\r\n    volunteer: undefined | FriendProfileDto,\r\n    group: undefined | FriendManagementDto,\r\n    isLoading: boolean,\r\n    isAuthorized: boolean,\r\n    friendshipExists: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerMatchVolunteerDetails',\r\n    components: { CustomerStandardMatchVolunteer, CustomerNetMatchVolunteer, BackButton, HomeButton, loading },\r\n    props: {\r\n      groupid: {\r\n        type: Number,\r\n        required: true\r\n      },\r\n      customerid: {\r\n        type: Number,\r\n        required: true\r\n      },\r\n      volunteerid: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        customer: undefined,\r\n        volunteer: undefined,\r\n        group: undefined,\r\n        isLoading: false,\r\n        isAuthorized: false,\r\n        friendshipExists: true\r\n      }\r\n    },\r\n    created (): void {\r\n      // @ts-ignore\r\n      if (!this.hasBrokerRole(this.groupid) && !this.hasNetBrokerRole(this.groupid)) {\r\n        // @ts-ignore\r\n        this.showAlertPermissionDenied().then(() => this.$router.push('/profile'))\r\n      } else {\r\n        this.isAuthorized = true\r\n        this.load()\r\n      }\r\n    },\r\n    mounted (): void {\r\n      window.scrollTo(0, 0)\r\n    },\r\n    methods: {\r\n      load (): void {\r\n        this.isLoading = false\r\n        this.getGroup().then(resp => {\r\n          this.group = resp.data\r\n          var promises = [] as Array<PromiseLike<HttpResponse>>\r\n\r\n          promises.push(this.getCustomer())\r\n          promises.push(this.getVolunteer())\r\n\r\n          Promise.all(promises).then(resp => {\r\n            this.customer = resp[0].data\r\n            this.volunteer = resp[1].data\r\n\r\n            if (!this.checkFriendshipExists()) {\r\n              // @ts-ignore\r\n              this.showAlertError(this.$t('common.permissionDenied'))\r\n              this.customer = undefined\r\n              this.volunteer = undefined\r\n            }\r\n          })\r\n        })\r\n      },\r\n      checkFriendshipExists (): boolean {\r\n        // confirm this customer is a friend with this volunteer\r\n        var friendships = this.customer?.friendships\r\n        return Boolean(_.find(friendships, (friendship: FriendshipNetDto | FriendshipStandardDto) => {\r\n          return friendship.volunteer.volunteerId === this.volunteerid\r\n        }))\r\n      },\r\n      onClose (): void {\r\n        // go back to the matches of the customer\r\n        this.$router.push(`/friend/customerpreview/${this.groupid}/${this.customerid}`)\r\n      },\r\n      getGroup (): PromiseLike<HttpResponse> {\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationById[0].replace('{0}', this.groupid)\r\n        return this.$http.get(url)\r\n      },\r\n      getCustomer () {\r\n        var getCustomerUrl = this.group?.netFriendship\r\n            ? `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customergetnetbyid[0]}`.replace('{customerid}', this.customerid.toString()).replace('{groupid}', this.groupid.toString())\r\n            : `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customergetstandardbyid[0]}`.replace('{customerid}', this.customerid.toString()).replace('{groupid}', this.groupid.toString())\r\n        return this.$http.get(getCustomerUrl)\r\n      },\r\n      getVolunteer () {\r\n        // get the updated volunteer with new status from the back end (returns promise)\r\n        var criteria: GetFriendProfileByFriendVolunteerIdCriteria = {\r\n          friendManagementGroupId: this.groupid,\r\n          friendVolunteerId: this.volunteerid,\r\n          includeFriendships: true,\r\n          includeFriendPools: true\r\n        }\r\n        var getVolunteerUrl = this.group?.netFriendship\r\n          ? `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteergetnetprofilebyid[0]}`\r\n          : `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteergetstandardprofilebyid[0]}`\r\n        return this.$http.post(getVolunteerUrl, criteria)\r\n      },\r\n      onActivate () {\r\n        this.load()\r\n      },\r\n      onCancelPending () {\r\n        this.$router.push(`/friend/customerpreview/${this.groupid}/${this.customerid}`)\r\n      },\r\n      onTerminate () {\r\n        this.$router.push(`/friend/customerpreview/${this.groupid}/${this.customerid}`)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customermatchvolunteerdetails {\r\n    .header {\r\n      margin-top: 10px;\r\n      margin-bottom: 15px;\r\n      .nav-header {\r\n        border-bottom: 0;\r\n      }\r\n      h4 {\r\n        padding-left: 10px;\r\n      }\r\n    }\r\n    .content {\r\n\r\n      .customer-area {\r\n        padding-top: 30px;\r\n        background-color: $brand-white;\r\n        border-left: solid 5px $customer-color-strong;\r\n      }\r\n\r\n      .volunteer-area {\r\n        h4 {\r\n          padding-left: 10px;\r\n        }\r\n        .volunteer-summary {\r\n          @media (min-width: $media-lg) {\r\n            height: 100%;\r\n          }\r\n        }\r\n        .volunteer-not-found {\r\n          height: 100%;\r\n          text-align: center;\r\n          margin-top: 50px;\r\n          font-weight: bold;\r\n          .fa {\r\n            color: $brand-red;\r\n            margin-right: 5px;\r\n          }\r\n        }\r\n      }\r\n\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchVolunteerDetails.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerMatchVolunteerDetails.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerMatchVolunteerDetails.vue?vue&type=template&id=29e12e62\"\nimport script from \"./CustomerMatchVolunteerDetails.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerMatchVolunteerDetails.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerMatchVolunteerDetails.vue?vue&type=style&index=0&id=29e12e62&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localCustomer)?_c('div',{staticClass:\"summary\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row headertitle\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.summaryTitle')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.netPersonalInformation')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(\" \"+_vm._s(_vm.localCustomer.firstName)+\" \"+_vm._s(_vm.localCustomer.lastName)+\" \")]),_c('dd',[_c('div',[_vm._v(_vm._s(_vm.localCustomer.streetAddress))]),_c('div',[_vm._v(_vm._s(_vm.localCustomer.zipCode)+\" \"+_vm._s(_vm.localCustomer.city))])]),_c('dd',[_c('div',[_vm._v(_vm._s(_vm.localCustomer.homePhone))]),_c('div',[_vm._v(_vm._s(_vm.localCustomer.email))])])])]),(_vm.localCustomer.contactFirstName || _vm.localCustomer.contactLastName)?_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(\" \"+_vm._s(_vm.localCustomer.contactFirstName)+\" \"+_vm._s(_vm.localCustomer.contactLastName)+\" \")]),_c('dd',[_c('div',[_vm._v(_vm._s(_vm.localCustomer.contactPhoneNumber))])])])]):_vm._e()]),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('div',{staticClass:\"inputcontent\"},[(_vm.birthdateString)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.birthDate')))]),_c('dd',[_vm._v(_vm._s(_vm.birthdateString))])]):_vm._e(),_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.gender')))]),_c('dd',[_vm._v(_vm._s(_vm.genderString))])])])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.netLanguageInformation')))]),_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.nativeLanguage')))]),_c('dd',[_vm._v(_vm._s(_vm.languageString))])]),_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.otherLanguages')))]),_vm._l((_vm.customerOtherLanguages),function(lang){return _c('dd',{key:lang},[_vm._v(\" \"+_vm._s(lang)+\" \")])}),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.otherLanguages))])],2)])]),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.myInterests')))]),_c('div',{staticClass:\"inputcontent\"},[_vm._v(\" \"+_vm._s(_vm.interestsString)+\" \")]),(_vm.localCustomer.interestOther)?_c('div',{staticClass:\"inputcontent\"},[_vm._v(\" \"+_vm._s(_vm.localCustomer.interestOther)+\" \")]):_vm._e()])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.friendWish')))]),_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.genderPreferences')))]),_c('dd',[_vm._v(_vm._s(_vm.preferredGenders))]),_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.desiredAge')))]),_c('dd',[_vm._v(_vm._s(_vm.preferredAges))])])])]),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.netFriendTitle')))]),_c('div',{staticClass:\"inputcontent\"},[(_vm.localCustomer.econtactEmail)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.email')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactEmail))])]):_vm._e(),(_vm.localCustomer.econtactTelegram)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.telegram')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactTelegram))])]):_vm._e(),(_vm.localCustomer.econtactKik)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.kik')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactKik))])]):_vm._e(),(_vm.localCustomer.econtactInstagram)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.instagram')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactInstagram))])]):_vm._e(),(_vm.localCustomer.econtactSkype)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.skype')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactSkype))])]):_vm._e(),(_vm.localCustomer.econtactDiscord)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.discord')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactDiscord))])]):_vm._e(),(_vm.localCustomer.econtactFreetext)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.freetext')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactFreetext))])]):_vm._e()])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-8 inputcontent\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.netDescriptionTitle')))]),_c('dd',[_vm._v(_vm._s(_vm.netDescription))])])])]),(_vm.localCustomer.customerTypeOtherInfo)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-8\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.netAnythingElse')))]),(_vm.localCustomer.customerTypeOtherInfo)?_c('div',{staticClass:\"inputcontent\"},[_vm._v(\" \"+_vm._s(_vm.localCustomer.customerTypeOtherInfo)+\" \")]):_vm._e()])]):_vm._e()])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"localCustomer\" class=\"summary\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <!-- summary section-->\r\n        <div class=\"row headertitle\">\r\n          <div class=\"col-12\">\r\n            <h3>{{ $t('customerForm.summaryTitle') }}</h3>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.netPersonalInformation') }}</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-sm-6\">\r\n            <div class=\"inputcontent\">\r\n              <dl>\r\n                <dt>\r\n                  {{ localCustomer.firstName }} {{ localCustomer.lastName }}\r\n                </dt>\r\n                <dd>\r\n                  <div>{{ localCustomer.streetAddress }}</div>\r\n                  <div>{{ localCustomer.zipCode }} {{ localCustomer.city }}</div>\r\n                </dd>\r\n                <dd>\r\n                  <div>{{ localCustomer.homePhone }}</div>\r\n                  <div>{{ localCustomer.email }}</div>\r\n                </dd>\r\n              </dl>\r\n            </div>\r\n            <div v-if=\"localCustomer.contactFirstName || localCustomer.contactLastName\" class=\"inputcontent\">\r\n              <dl>\r\n                <dt>\r\n                  {{ localCustomer.contactFirstName }} {{ localCustomer.contactLastName }}\r\n                </dt>\r\n                <dd>\r\n                  <div>{{ localCustomer.contactPhoneNumber }}</div>\r\n                </dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 col-sm-6\">\r\n            <div class=\"inputcontent\">\r\n              <dl v-if=\"birthdateString\">\r\n                <dt>{{ $t('customerForm.birthDate') }}</dt>\r\n                <dd>{{ birthdateString }}</dd>\r\n              </dl>\r\n              <dl>\r\n                <dt>{{ $t('customerForm.gender') }}</dt>\r\n                <dd>{{ genderString }}</dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-sm-6\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.netLanguageInformation') }}</span>\r\n            <div class=\"inputcontent\">\r\n              <dl>\r\n                <dt>{{ $t('customerForm.nativeLanguage') }}</dt>\r\n                <dd>{{ languageString }}</dd>\r\n              </dl>\r\n              <dl>\r\n                <dt>{{ $t('customerForm.otherLanguages') }}</dt>\r\n                <dd v-for=\"lang in customerOtherLanguages\" :key=\"lang\">\r\n                  {{ lang }}\r\n                </dd>\r\n                <dd>{{ localCustomer.otherLanguages }}</dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 col-sm-6\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.myInterests') }}</span>\r\n            <div class=\"inputcontent\">\r\n              {{ interestsString }}\r\n            </div>\r\n            <div v-if=\"localCustomer.interestOther\" class=\"inputcontent\">\r\n              {{ localCustomer.interestOther }}\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-sm-6\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.friendWish') }}</span>\r\n            <div class=\"inputcontent\">\r\n              <dl>\r\n                <dt>{{ $t('customerForm.genderPreferences') }}</dt>\r\n                <dd>{{ preferredGenders }}</dd>\r\n                <dt>{{ $t('customerForm.desiredAge') }}</dt>\r\n                <dd>{{ preferredAges }}</dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 col-sm-6\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.netFriendTitle') }}</span>\r\n            <div class=\"inputcontent\">\r\n              <dl v-if=\"localCustomer.econtactEmail\">\r\n                <dt>{{ $t('connectivity.email') }}</dt>\r\n                <dd>{{ localCustomer.econtactEmail }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactTelegram\">\r\n                <dt>{{ $t('connectivity.telegram') }}</dt>\r\n                <dd>{{ localCustomer.econtactTelegram }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactKik\">\r\n                <dt>{{ $t('connectivity.kik') }}</dt>\r\n                <dd>{{ localCustomer.econtactKik }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactInstagram\">\r\n                <dt>{{ $t('connectivity.instagram') }}</dt>\r\n                <dd>{{ localCustomer.econtactInstagram }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactSkype\">\r\n                <dt>{{ $t('connectivity.skype') }}</dt>\r\n                <dd>{{ localCustomer.econtactSkype }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactDiscord\">\r\n                <dt>{{ $t('connectivity.discord') }}</dt>\r\n                <dd>{{ localCustomer.econtactDiscord }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactFreetext\">\r\n                <dt>{{ $t('connectivity.freetext') }}</dt>\r\n                <dd>{{ localCustomer.econtactFreetext }}</dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-md-8 inputcontent\">\r\n            <dl>\r\n              <dt>{{ $t('customerForm.netDescriptionTitle') }}</dt>\r\n              <dd>{{ netDescription }}</dd>\r\n            </dl>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"localCustomer.customerTypeOtherInfo\" class=\"row\">\r\n          <div class=\"col-12 col-md-8\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.netAnythingElse') }}</span>\r\n            <div v-if=\"localCustomer.customerTypeOtherInfo\" class=\"inputcontent\">\r\n              {{ localCustomer.customerTypeOtherInfo }}\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import enums from '@/mixins/enums.js'\r\n  import { FriendCustomerNetDto, LanguageDto } from '@/types/index'\r\n  import { TranslateResult } from 'vue-i18n'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localCustomer: FriendCustomerNetDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'NetCustomerSummary',\r\n    mixins: [enums],\r\n    data () {\r\n      return {\r\n        localCustomer: undefined as FriendCustomerNetDto | undefined\r\n      }\r\n    },\r\n    computed: {\r\n      birthdateString (): string {\r\n        if (!this.localCustomer) return ''\r\n        var d = new Date(this.localCustomer.birthdate)\r\n        return d ? d.toLocaleDateString('fi-FI') : ''\r\n      },\r\n      genderString (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getGenderTranslation(this.localCustomer.gender)\r\n      },\r\n      languageString (): string | TranslateResult {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        var isoCode = this.getLanguage(this.localCustomer?.nativeLanguage)?.isoCode\r\n        var translateString = `languages.${isoCode}`\r\n        return this.$t(translateString)\r\n      },\r\n      netDescription (): string {\r\n        if (this.localCustomer && this.localCustomer.description) { return this.localCustomer.description }\r\n\r\n        return '-'\r\n      },\r\n      interestsString (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getInterestsMaskTranslation(this.localCustomer?.interests)\r\n      },\r\n      preferredGenders (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getGenderPreferencesMaskTranslation(this.localCustomer?.preferredGenders)\r\n      },\r\n      preferredAges (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getAgePreferencesMaskTranslation(this.localCustomer?.preferredAges)\r\n      },\r\n      customerOtherLanguages (): Array<string> | undefined {\r\n        return this.localCustomer?.customerLanguages\r\n          .filter((x: LanguageDto) => x.isoCode !== 'other')\r\n          .map((x: LanguageDto) => {\r\n          return this.$t('languages.' + x.isoCode).toString()\r\n        })\r\n      }\r\n\r\n    },\r\n    mounted (): void {\r\n      const key = this.$route.params.key\r\n      const self = this\r\n      const url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customergetnetsummarybykey[0]}`.replace('{key}', key)\r\n      this.$http.get(url).then(resp => {\r\n        // @ts-ignore\r\n        this.localCustomer = resp.body\r\n      }, f => {\r\n        // @ts-ignore cannot find mixins\r\n        this.showAlertError(this.$t('common.fetchFailed'))\r\n      })\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .summary {\r\n    background-color: $brand-white;\r\n    padding: 15px;\r\n    padding-top: 30px;\r\n\r\n    .headertitle {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .cap-label {\r\n      color: $brand-red;\r\n    }\r\n\r\n    .name {\r\n      font-weight: bold;\r\n    }\r\n\r\n    .inputcontent {\r\n      margin-top: 15px;\r\n      margin-bottom: 15px;\r\n    }\r\n\r\n    .buttons {\r\n      padding-top: 30px;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerSummaryNetLink.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerSummaryNetLink.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerSummaryNetLink.vue?vue&type=template&id=44141fad\"\nimport script from \"./CustomerSummaryNetLink.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerSummaryNetLink.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerSummaryNetLink.vue?vue&type=style&index=0&id=44141fad&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localCustomer)?_c('div',{staticClass:\"summary\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row headertitle\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('customerForm.summaryTitle')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.netPersonalInformation')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(\" \"+_vm._s(_vm.localCustomer.firstName)+\" \"+_vm._s(_vm.localCustomer.lastName)+\" \")]),_c('dd',[_c('div',[_vm._v(_vm._s(_vm.localCustomer.streetAddress))]),_c('div',[_vm._v(_vm._s(_vm.localCustomer.zipCode)+\" \"+_vm._s(_vm.localCustomer.city))])]),_c('dd',[_c('div',[_vm._v(_vm._s(_vm.localCustomer.homePhone))]),_c('div',[_vm._v(_vm._s(_vm.localCustomer.email))])])])]),(_vm.localCustomer.contactFirstName || _vm.localCustomer.contactLastName)?_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(\" \"+_vm._s(_vm.localCustomer.contactFirstName)+\" \"+_vm._s(_vm.localCustomer.contactLastName)+\" \")]),_c('dd',[_c('div',[_vm._v(_vm._s(_vm.localCustomer.contactPhoneNumber))])])])]):_vm._e()]),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('div',{staticClass:\"inputcontent\"},[(_vm.birthdateString)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.birthDate')))]),_c('dd',[_vm._v(_vm._s(_vm.birthdateString))])]):_vm._e(),_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.gender')))]),_c('dd',[_vm._v(_vm._s(_vm.genderString))])])])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.netLanguageInformation')))]),_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.nativeLanguage')))]),_c('dd',[_vm._v(_vm._s(_vm.languageString))])]),_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.otherLanguages')))]),_vm._l((_vm.customerOtherLanguages),function(lang){return _c('dd',{key:lang},[_vm._v(\" \"+_vm._s(lang)+\" \")])}),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.otherLanguages))])],2)])]),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.myInterests')))]),_c('div',{staticClass:\"inputcontent\"},[_vm._v(\" \"+_vm._s(_vm.interestsString)+\" \")]),(_vm.localCustomer.interestOther)?_c('div',{staticClass:\"inputcontent\"},[_vm._v(\" \"+_vm._s(_vm.localCustomer.interestOther)+\" \")]):_vm._e()])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.friendWish')))]),_c('div',{staticClass:\"inputcontent\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.genderPreferences')))]),_c('dd',[_vm._v(_vm._s(_vm.preferredGenders))]),_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.desiredAge')))]),_c('dd',[_vm._v(_vm._s(_vm.preferredAges))])])])]),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.netFriendTitle')))]),_c('div',{staticClass:\"inputcontent\"},[(_vm.localCustomer.econtactEmail)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.email')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactEmail))])]):_vm._e(),(_vm.localCustomer.econtactTelegram)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.telegram')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactTelegram))])]):_vm._e(),(_vm.localCustomer.econtactKik)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.kik')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactKik))])]):_vm._e(),(_vm.localCustomer.econtactInstagram)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.instagram')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactInstagram))])]):_vm._e(),(_vm.localCustomer.econtactSkype)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.skype')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactSkype))])]):_vm._e(),(_vm.localCustomer.econtactDiscord)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.discord')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactDiscord))])]):_vm._e(),(_vm.localCustomer.econtactFreetext)?_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('connectivity.freetext')))]),_c('dd',[_vm._v(_vm._s(_vm.localCustomer.econtactFreetext))])]):_vm._e()])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-8 inputcontent\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('customerForm.netDescriptionTitle')))]),_c('dd',[_vm._v(_vm._s(_vm.netDescription))])])])]),(_vm.localCustomer.customerTypeOtherInfo)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-8\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('customerForm.netAnythingElse')))]),(_vm.localCustomer.customerTypeOtherInfo)?_c('div',{staticClass:\"inputcontent\"},[_vm._v(\" \"+_vm._s(_vm.localCustomer.customerTypeOtherInfo)+\" \")]):_vm._e()])]):_vm._e()])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","x<template>\r\n  <div v-if=\"localCustomer\" class=\"summary\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <!-- summary section-->\r\n        <div class=\"row headertitle\">\r\n          <div class=\"col-12\">\r\n            <h3>{{ $t('customerForm.summaryTitle') }}</h3>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.netPersonalInformation') }}</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-sm-6\">\r\n            <div class=\"inputcontent\">\r\n              <dl>\r\n                <dt>\r\n                  {{ localCustomer.firstName }} {{ localCustomer.lastName }}\r\n                </dt>\r\n                <dd>\r\n                  <div>{{ localCustomer.streetAddress }}</div>\r\n                  <div>{{ localCustomer.zipCode }} {{ localCustomer.city }}</div>\r\n                </dd>\r\n                <dd>\r\n                  <div>{{ localCustomer.homePhone }}</div>\r\n                  <div>{{ localCustomer.email }}</div>\r\n                </dd>\r\n              </dl>\r\n            </div>\r\n            <div v-if=\"localCustomer.contactFirstName || localCustomer.contactLastName\" class=\"inputcontent\">\r\n              <dl>\r\n                <dt>\r\n                  {{ localCustomer.contactFirstName }} {{ localCustomer.contactLastName }}\r\n                </dt>\r\n                <dd>\r\n                  <div>{{ localCustomer.contactPhoneNumber }}</div>\r\n                </dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 col-sm-6\">\r\n            <div class=\"inputcontent\">\r\n              <dl v-if=\"birthdateString\">\r\n                <dt>{{ $t('customerForm.birthDate') }}</dt>\r\n                <dd>{{ birthdateString }}</dd>\r\n              </dl>\r\n              <dl>\r\n                <dt>{{ $t('customerForm.gender') }}</dt>\r\n                <dd>{{ genderString }}</dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-sm-6\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.netLanguageInformation') }}</span>\r\n            <div class=\"inputcontent\">\r\n              <dl>\r\n                <dt>{{ $t('customerForm.nativeLanguage') }}</dt>\r\n                <dd>{{ languageString }}</dd>\r\n              </dl>\r\n              <dl>\r\n                <dt>{{ $t('customerForm.otherLanguages') }}</dt>\r\n                <dd v-for=\"lang in customerOtherLanguages\" :key=\"lang\">\r\n                  {{ lang }}\r\n                </dd>\r\n                <dd>{{ localCustomer.otherLanguages }}</dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 col-sm-6\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.myInterests') }}</span>\r\n            <div class=\"inputcontent\">\r\n              {{ interestsString }}\r\n            </div>\r\n            <div v-if=\"localCustomer.interestOther\" class=\"inputcontent\">\r\n              {{ localCustomer.interestOther }}\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-sm-6\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.friendWish') }}</span>\r\n            <div class=\"inputcontent\">\r\n              <dl>\r\n                <dt>{{ $t('customerForm.genderPreferences') }}</dt>\r\n                <dd>{{ preferredGenders }}</dd>\r\n                <dt>{{ $t('customerForm.desiredAge') }}</dt>\r\n                <dd>{{ preferredAges }}</dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 col-sm-6\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.netFriendTitle') }}</span>\r\n            <div class=\"inputcontent\">\r\n              <dl v-if=\"localCustomer.econtactEmail\">\r\n                <dt>{{ $t('connectivity.email') }}</dt>\r\n                <dd>{{ localCustomer.econtactEmail }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactTelegram\">\r\n                <dt>{{ $t('connectivity.telegram') }}</dt>\r\n                <dd>{{ localCustomer.econtactTelegram }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactKik\">\r\n                <dt>{{ $t('connectivity.kik') }}</dt>\r\n                <dd>{{ localCustomer.econtactKik }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactInstagram\">\r\n                <dt>{{ $t('connectivity.instagram') }}</dt>\r\n                <dd>{{ localCustomer.econtactInstagram }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactSkype\">\r\n                <dt>{{ $t('connectivity.skype') }}</dt>\r\n                <dd>{{ localCustomer.econtactSkype }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactDiscord\">\r\n                <dt>{{ $t('connectivity.discord') }}</dt>\r\n                <dd>{{ localCustomer.econtactDiscord }}</dd>\r\n              </dl>\r\n              <dl v-if=\"localCustomer.econtactFreetext\">\r\n                <dt>{{ $t('connectivity.freetext') }}</dt>\r\n                <dd>{{ localCustomer.econtactFreetext }}</dd>\r\n              </dl>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 col-md-8 inputcontent\">\r\n            <dl>\r\n              <dt>{{ $t('customerForm.netDescriptionTitle') }}</dt>\r\n              <dd>{{ netDescription }}</dd>\r\n            </dl>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"localCustomer.customerTypeOtherInfo\" class=\"row\">\r\n          <div class=\"col-12 col-md-8\">\r\n            <span class=\"cap-label\">{{ $t('customerForm.netAnythingElse') }}</span>\r\n            <div v-if=\"localCustomer.customerTypeOtherInfo\" class=\"inputcontent\">\r\n              {{ localCustomer.customerTypeOtherInfo }}\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import enums from '@/mixins/enums.js'\r\n  import { FriendCustomerStandardDto, LanguageDto } from '@/types/index'\r\n  import { TranslateResult } from 'vue-i18n'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    localCustomer: FriendCustomerStandardDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'StandardCustomerSummary',\r\n    mixins: [enums],\r\n    data () {\r\n      return {\r\n        localCustomer: undefined as FriendCustomerStandardDto | undefined\r\n      }\r\n    },\r\n    computed: {\r\n      birthdateString (): string {\r\n        if (!this.localCustomer) return ''\r\n        var d = new Date(this.localCustomer.birthdate)\r\n        return d ? d.toLocaleDateString('fi-FI') : ''\r\n      },\r\n      genderString (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getGenderTranslation(this.localCustomer.gender)\r\n      },\r\n      languageString (): string | TranslateResult {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        var isoCode = this.getLanguage(this.localCustomer?.nativeLanguage)?.isoCode\r\n        var translateString = `languages.${isoCode}`\r\n        return this.$t(translateString)\r\n      },\r\n      netDescription (): string {\r\n        if (this.localCustomer && this.localCustomer.description) { return this.localCustomer.description }\r\n\r\n        return '-'\r\n      },\r\n      interestsString (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getInterestsMaskTranslation(this.localCustomer?.interests)\r\n      },\r\n      preferredGenders (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getGenderPreferencesMaskTranslation(this.localCustomer?.preferredGenders)\r\n      },\r\n      preferredAges (): string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getAgePreferencesMaskTranslation(this.localCustomer?.preferredAges)\r\n      },\r\n      customerOtherLanguages (): Array<string> | undefined {\r\n        return this.localCustomer?.customerLanguages\r\n          .filter((x: LanguageDto) => x.isoCode !== 'other')\r\n          .map((x: LanguageDto) => {\r\n          return this.$t('languages.' + x.isoCode).toString()\r\n        })\r\n      }\r\n\r\n    },\r\n    mounted (): void {\r\n      const key = this.$route.params.key\r\n      const self = this\r\n      const url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customergetstandardsummarybykey[0]}`.replace('{key}', key)\r\n      this.$http.get(url).then(resp => {\r\n        // @ts-ignore\r\n        this.localCustomer = resp.body\r\n      }, f => {\r\n        // @ts-ignore cannot find mixins\r\n        this.showAlertError(this.$t('common.fetchFailed'))\r\n      })\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .summary {\r\n    background-color: $brand-white;\r\n    padding: 15px;\r\n    padding-top: 30px;\r\n\r\n    .headertitle {\r\n      margin-bottom: 30px;\r\n    }\r\n\r\n    .cap-label {\r\n      color: $brand-red;\r\n    }\r\n\r\n    .name {\r\n      font-weight: bold;\r\n    }\r\n\r\n    .inputcontent {\r\n      margin-top: 15px;\r\n      margin-bottom: 15px;\r\n    }\r\n\r\n    .buttons {\r\n      padding-top: 30px;\r\n    }\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerSummaryStandardLink.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerSummaryStandardLink.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerSummaryStandardLink.vue?vue&type=template&id=33a8cd8d\"\nimport script from \"./CustomerSummaryStandardLink.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerSummaryStandardLink.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerSummaryStandardLink.vue?vue&type=style&index=0&id=33a8cd8d&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container volunteerpreview\"},[_c('div',{staticClass:\"row header\"},[_c('div',{staticClass:\"col\"},[_c('HomeButton',{attrs:{\"group-id\":_vm.groupIdNumber}}),_c('BackButton',{attrs:{\"back-url\":_vm.backUrl}})],1)]),(_vm.showModal)?_c('div',{staticClass:\"modal\"},[_c('div',{staticClass:\"modal-content\"},[_c('VolunteerMoveForm',{attrs:{\"target-id\":_vm.id,\"current-group\":_vm.currentGroup,\"friend-management-groups\":_vm.friendManagementGroups},on:{\"save\":_vm.moveVolunteerToFmg,\"cancel\":_vm.cancelMove}})],1)]):_vm._e(),_c('div',{staticClass:\"row content\"},[(_vm.loaded && !_vm.group.netFriendship)?_c('div',{staticClass:\"col-lg-4 mb-3 mb-lg-0 volunteer-area\"},[_c('VolunteerCardStandard',{attrs:{\"group\":_vm.group,\"show-actions\":true},on:{\"refresh\":_vm.refresh,\"moveVolunteer\":_vm.moveVolunteer},model:{value:(_vm.volunteer),callback:function ($$v) {_vm.volunteer=$$v},expression:\"volunteer\"}})],1):_vm._e(),(_vm.loaded && _vm.group.netFriendship)?_c('div',{staticClass:\"col-lg-4 mb-3 mb-lg-0 volunteer-area\"},[_c('VolunteerCardNet',{attrs:{\"group\":_vm.group,\"show-actions\":true},on:{\"refresh\":_vm.refresh},model:{value:(_vm.volunteer),callback:function ($$v) {_vm.volunteer=$$v},expression:\"volunteer\"}})],1):_vm._e(),_c('div',{staticClass:\"col-lg-8 customer-area\"},[(_vm.inactiveText)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},[_vm._v(\" \"+_vm._s(_vm.inactiveText)+\" \")])]):_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.friendshipsTitle'))+\" \")])])]),_c('div',{staticClass:\"volunteeractions\"},[(_vm.group && _vm.volunteer)?_c('volunteermatchstatus',{attrs:{\"volunteer\":_vm.volunteer,\"group\":_vm.group,\"highlightedvustomerid\":_vm.customerid},on:{\"addNewMatch\":_vm.onAddNewMatch,\"customerMatchSelected\":_vm.onCustomerMatchSelected}}):_vm._e()],1),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.poolsTitle'))+\" \")])])]),(_vm.loaded)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[(_vm.group.netFriendship)?_c('VolunteerPoolsNet',{attrs:{\"volunteer\":_vm.volunteer,\"group\":_vm.group,\"is-active\":_vm.isActive},on:{\"poolsupdated\":_vm.onPoolsUpdated}}):_c('VolunteerPoolsStandard',{attrs:{\"volunteer\":_vm.volunteer,\"group\":_vm.group,\"is-active\":_vm.isActive},on:{\"poolsupdated\":_vm.onPoolsUpdated}})],1)]):_vm._e()])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row volunteermatchstatus\"},[(_vm.canAddNewMatch)?_c('div',{staticClass:\"col-12 addnew text-center\"},[_c('sprbutton',{attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('customerSearch.newCustomerMatch'),\"click-event\":\"new\",\"disabled\":!_vm.isActive},on:{\"new\":_vm.onNewMatch}})],1):_vm._e(),(_vm.inactiveText)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"inactive\"},[_c('div',[_vm._v(_vm._s(_vm.inactiveText))])])]):_vm._e(),(!_vm.hasVolunteer)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"no-customers\"},[_c('div',[_vm._v(_vm._s(_vm.$t('customerSearch.noCustomerMatches')))])])]):_c('div',{staticClass:\"col-12\"},[_c('ul',{staticClass:\"volunteer-list\"},_vm._l((_vm.friendships),function(item){return _c('li',{key:item.id,class:{ 'starthidden fadein': _vm.isHighlightedItem(item.customerId) }},[_c('volunteermatchdetail',{attrs:{\"friendship\":item,\"group\":_vm.group},on:{\"selectFriendship\":_vm.onSelectFriendship}})],1)}),0)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row volunteermatchdetail\"},[_c('div',{staticClass:\"col-6\"},[_c('div',{staticClass:\"img\"},[_c('friendshipicon',{attrs:{\"friendname\":_vm.friendship.customer.firstName,\"state\":_vm.friendship.friendshipState}})],1),_c('div',{staticClass:\"summary\"},[_c('div',{staticClass:\"customername\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.selectCustomer}},[_vm._v(_vm._s(_vm.friendship.customer.firstName)+\" \"+_vm._s(_vm.friendship.customer.lastName))]),(_vm.isNetFriendship)?_c('span',{staticClass:\"netfriendship\",attrs:{\"title\":_vm.$t('customerSearch.netFriendship')}},[_c('font-awesome-icon',{attrs:{\"icon\":\"tv\"}})],1):_c('span',{staticClass:\"netfriendship\",attrs:{\"title\":_vm.$t('friendshipTypes.oneToOne')}},[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'handshake']}})],1)]),_c('span',{},[_vm._v(_vm._s(_vm.genderAgeText))]),_c('div',{},[_vm._v(\" \"+_vm._s(_vm.zipCityText)+\" \")])])]),_c('div',{staticClass:\"col-6\"},[_c('div',{staticClass:\"contact\"},[_c('div',{},[_vm._v(\" \"+_vm._s(_vm.customerState)+\" \")]),_c('div',{},[_vm._v(\" \"+_vm._s(_vm.startedDate)+\" \")])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row volunteermatchdetail\">\r\n    <div class=\"col-6\">\r\n      <div class=\"img\">\r\n        <friendshipicon :friendname=\"friendship.customer.firstName\" :state=\"friendship.friendshipState\" />\r\n      </div>\r\n      <div class=\"summary\">\r\n        <div class=\"customername\">\r\n          <a href=\"javascript:void(0)\" @click=\"selectCustomer\">{{ friendship.customer.firstName }} {{ friendship.customer.lastName }}</a>\r\n          <span v-if=\"isNetFriendship\" class=\"netfriendship\" :title=\"$t('customerSearch.netFriendship')\">\r\n            <font-awesome-icon icon=\"tv\" />\r\n          </span>\r\n          <span v-else class=\"netfriendship\" :title=\"$t('friendshipTypes.oneToOne')\">\r\n            <font-awesome-icon :icon=\"['far', 'handshake']\" />\r\n          </span>\r\n        </div>\r\n        <span class=\"\">{{ genderAgeText }}</span>\r\n        <div class=\"\">\r\n          {{ zipCityText }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"col-6\">\r\n      <div class=\"contact\">\r\n        <div class=\"\">\r\n          {{ customerState }}\r\n        </div>\r\n        <div class=\"\">\r\n          {{ startedDate }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import friendshipicon from './FriendshipIcon.vue'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import locationhelper from '../../mixins/locationutils.js'\r\n  import moment from 'moment'\r\n  import addresshelper from '@/helpers/addresshelper'\r\n  import datehelper from '@/helpers/datehelper'\r\n  import { FriendshipStandardDto, FriendshipNetDto, FriendManagementDto } from '@/types'\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerMatchDetail',\r\n    components: { friendshipicon },\r\n    mixins: [enumhelper, locationhelper],\r\n    props: {\r\n      friendship: {\r\n        type: Object as () => FriendshipNetDto | FriendshipStandardDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      computedGender (): LocaleMessage | string {\r\n        // @ts-ignore Cannot find mixins\r\n        return this.getGenderTranslation(this.friendship.customer.gender)\r\n      },\r\n      computedAge (): number {\r\n        return datehelper.calculateAge(this.friendship.customer.birthDate)\r\n      },\r\n      genderAgeText (): LocaleMessage | string {\r\n        return [this.computedGender, this.computedAge ? `${this.computedAge} ${this.$t('customerSearch.years')}` : ''].filter(Boolean).join(', ')\r\n      },\r\n      zipCityText (): string {\r\n        return addresshelper.formatAddress(null, this.friendship.customer.zipCode, this.friendship.customer.city)\r\n      },\r\n      isNetFriendship (): boolean {\r\n        return Boolean(this.group.netFriendship)\r\n      },\r\n      customerState (): LocaleMessage | string {\r\n        // @ts-ignore Cannot find mixins\r\n        return this.getCustomerStatesTranslation(this.friendship.customer.state)\r\n      },\r\n      startedDate (): string {\r\n        return moment(this.friendship.started).format('d.M.YYYY')\r\n      }\r\n    },\r\n    methods: {\r\n      selectCustomer (): void {\r\n        this.$emit('selectFriendship', this.friendship)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .volunteermatchdetail {\r\n    display: flex;\r\n    align-items: center;\r\n    background-color: $brand-white;\r\n    border-left: solid 5px $customer-color-strong;\r\n    padding: 10px 0;\r\n    .img {\r\n      margin-right:5px;\r\n      display: inline-block;\r\n      vertical-align: top;\r\n      margin-top: 5px;\r\n    }\r\n    .summary {\r\n      font-size: 13px;\r\n      display: inline-block;\r\n\r\n      .customername {\r\n        font-weight: bold;\r\n        text-transform: uppercase;\r\n        svg {\r\n          margin-left: 5px;\r\n        }\r\n      }\r\n\r\n      .netfriendship {\r\n        color: $brand-red;\r\n      }\r\n    }\r\n\r\n    .contact {\r\n      font-size: 13px;\r\n      display: inline-block;\r\n      text-align: right;\r\n      width: 100%;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchDetail.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchDetail.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerMatchDetail.vue?vue&type=template&id=6740bfde\"\nimport script from \"./VolunteerMatchDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerMatchDetail.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerMatchDetail.vue?vue&type=style&index=0&id=6740bfde&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"row volunteermatchstatus\">\r\n    <div\r\n      v-if=\"canAddNewMatch\"\r\n      class=\"col-12 addnew text-center\"\r\n    >\r\n      <sprbutton type=\"primary\"\r\n                 :size=\"4\"\r\n                 :title=\"$t('customerSearch.newCustomerMatch')\"\r\n                 click-event=\"new\"\r\n                 :disabled=\"!isActive\"\r\n                 @new=\"onNewMatch\"\r\n      />\r\n    </div>\r\n    <div v-if=\"inactiveText\" class=\"col-12\">\r\n      <div class=\"inactive\">\r\n        <div>{{ inactiveText }}</div>\r\n      </div>\r\n    </div>\r\n    <div v-if=\"!hasVolunteer\" class=\"col-12\">\r\n      <div class=\"no-customers\">\r\n        <div>{{ $t('customerSearch.noCustomerMatches') }}</div>\r\n      </div>\r\n    </div>\r\n    <div v-else class=\"col-12\">\r\n      <ul class=\"volunteer-list\">\r\n        <li v-for=\"item in friendships\" :key=\"item.id\" :class=\"{ 'starthidden fadein': isHighlightedItem(item.customerId) }\">\r\n          <volunteermatchdetail :friendship=\"item\" :group=\"group\" @selectFriendship=\"onSelectFriendship\" />\r\n        </li>\r\n      </ul>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import volunteermatchdetail from './VolunteerMatchDetail.vue'\r\n  import { FriendManagementDto, UserProfileDto, CustomerState, FriendshipStandardDto, FriendshipNetDto } from '@/types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerMatchStatus',\r\n    components: { sprbutton, volunteermatchdetail },\r\n    props: {\r\n      volunteer: {\r\n        type: Object as () => UserProfileDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      highlightedcustomerid: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    computed: {\r\n      hasVolunteer (): boolean {\r\n        return Boolean(this.friendships?.length)\r\n      },\r\n      canAddNewMatch (): boolean {\r\n        return !this.hasVolunteer ||\r\n          Boolean(this.group.netFriendship\r\n            ? this.volunteer.friendInfo?.netProfile.multipleCustomers\r\n            : this.volunteer.friendInfo?.standardProfile.multipleCustomers)\r\n      },\r\n      friendships (): Array<FriendshipNetDto | FriendshipStandardDto> {\r\n        return this.group.netFriendship\r\n          ? this.volunteer.friendInfo?.netProfile?.friendships\r\n          : this.volunteer.friendInfo?.standardProfile?.friendships\r\n      },\r\n      isActive (): boolean {\r\n        var activeStates = [\r\n          CustomerState.Active,\r\n          CustomerState.PendingFriend,\r\n          CustomerState.ActiveFriendship\r\n        ]\r\n        return this.group.netFriendship\r\n          ? Boolean(_.includes(activeStates, this.volunteer.friendInfo?.netProfile?.state))\r\n          : Boolean(_.includes(activeStates, this.volunteer.friendInfo?.standardProfile?.state))\r\n      },\r\n      inactiveText (): string | LocaleMessage {\r\n        if (this.volunteer.friendInfo) {\r\n          var switcher = this.group.netFriendship\r\n            ? this.volunteer.friendInfo.netProfile.state\r\n            : this.volunteer.friendInfo.standardProfile.state\r\n\r\n          switch (switcher) {\r\n          case CustomerState.PendingApproval:\r\n            return this.$t('customerSearch.noMatchingNotInterviewed')\r\n          case CustomerState.NonActive:\r\n            return this.$t('customerSearch.noMatchingRemoved')\r\n          case CustomerState.OnHold:\r\n            return this.$t('customerSearch.noMatchingOnHold')\r\n          }\r\n        }\r\n        return ''\r\n      }\r\n    },\r\n    methods: {\r\n      onNewMatch (): void {\r\n        this.$emit('addNewMatch')\r\n      },\r\n      onSelectFriendship (friendship): void {\r\n        this.$emit('customerMatchSelected', friendship)\r\n      },\r\n      isHighlightedItem (id): boolean {\r\n        return Boolean(this.highlightedcustomerid && Number(this.highlightedcustomerid) === Number(id))\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .volunteermatchstatus {\r\n    margin-bottom: 30px;\r\n    .addnew {\r\n      margin-bottom: 20px;\r\n    }\r\n    .inactive {\r\n      text-align: center;\r\n      padding: 15px 5px 30px 5px;\r\n    }\r\n    .no-customers {\r\n      text-align: center;\r\n    }\r\n\r\n    .volunteer-list {\r\n      list-style-type: none;\r\n      padding: 15px;\r\n\r\n      li {\r\n        padding: 10px 0 0 0;\r\n\r\n        &.fadein {\r\n          -webkit-animation: fadein 2s; /* Safari, Chrome and Opera > 12.1 */\r\n          -moz-animation: fadein 2s; /* Firefox < 16 */\r\n          -ms-animation: fadein 2s; /* Internet Explorer */\r\n          -o-animation: fadein 2s; /* Opera < 12.1 */\r\n          animation: fadein 2s;\r\n        }\r\n\r\n        @keyframes fadein {\r\n            from { opacity: 0; }\r\n            to   { opacity: 1; }\r\n        }\r\n\r\n        /* Firefox < 16 */\r\n        @-moz-keyframes fadein {\r\n            from { opacity: 0; }\r\n            to   { opacity: 1; }\r\n        }\r\n\r\n        /* Safari, Chrome and Opera > 12.1 */\r\n        @-webkit-keyframes fadein {\r\n            from { opacity: 0; }\r\n            to   { opacity: 1; }\r\n        }\r\n\r\n        /* Internet Explorer */\r\n        @-ms-keyframes fadein {\r\n            from { opacity: 0; }\r\n            to   { opacity: 1; }\r\n        }\r\n\r\n        /* Opera < 12.1 */\r\n        @-o-keyframes fadein {\r\n            from { opacity: 0; }\r\n            to   { opacity: 1; }\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchStatus.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchStatus.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerMatchStatus.vue?vue&type=template&id=138b9462\"\nimport script from \"./VolunteerMatchStatus.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerMatchStatus.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerMatchStatus.vue?vue&type=style&index=0&id=138b9462&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"volunteerpoolsstandard\"},[(!_vm.showPoolChooser)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 poolbuttons\"},[_c('sprbutton',{attrs:{\"size\":4,\"disabled\":!_vm.isActive,\"title\":_vm.$t('customerSearch.addVolunteerToPool'),\"click-event\":\"add\"},on:{\"add\":_vm.onAdd}})],1)]):_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 poolbuttons\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.cancelAddToPool'),\"click-event\":\"cancelAdd\"},on:{\"cancelAdd\":_vm.onCancelAdd}})],1),_c('div',{staticClass:\"col-12\"},[_c('PoolChooserStandard',{attrs:{\"friend-management-group\":_vm.group,\"selected-pools\":_vm.pools},on:{\"poolchosen\":_vm.onPoolChosen}})],1)]),_c('div',{staticClass:\"row\"},[(_vm.pools && _vm.pools.length)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('customerSearch.existingPools')))])])]),_vm._l((_vm.pools),function(pool){return _c('poolview',{key:pool.id,attrs:{\"pool\":pool,\"groupid\":_vm.group.id,\"action-view\":\"remove\"},on:{\"remove\":_vm.onRemove}})})],2):_vm._e(),((!_vm.pools || !_vm.pools.length) && !_vm.showPoolChooser)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"text-center nopools\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.volunteerNoPools'))+\" \")])]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"volunteerpoolsstandard\">\r\n    <div v-if=\"!showPoolChooser\" class=\"row\">\r\n      <div class=\"col-12 poolbuttons\">\r\n        <sprbutton :size=\"4\"\r\n                   :disabled=\"!isActive\"\r\n                   :title=\"$t('customerSearch.addVolunteerToPool')\"\r\n                   click-event=\"add\"\r\n                   @add=\"onAdd\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-else class=\"row\">\r\n      <div class=\"col-12 poolbuttons\">\r\n        <sprbutton :size=\"4\"\r\n                   :title=\"$t('customerSearch.cancelAddToPool')\"\r\n                   click-event=\"cancelAdd\"\r\n                   @cancelAdd=\"onCancelAdd\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <PoolChooserStandard\r\n          :friend-management-group=\"group\"\r\n          :selected-pools=\"pools\"\r\n          @poolchosen=\"onPoolChosen\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div v-if=\"pools && pools.length\" class=\"col-12\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <h5>{{ $t('customerSearch.existingPools') }}</h5>\r\n          </div>\r\n        </div>\r\n        <poolview\r\n          v-for=\"pool in pools\"\r\n          :key=\"pool.id\"\r\n          :pool=\"pool\"\r\n          :groupid=\"group.id\"\r\n          action-view=\"remove\"\r\n          @remove=\"onRemove\"\r\n        />\r\n      </div>\r\n      <div v-if=\"(!pools || !pools.length) && !showPoolChooser\" class=\"col-12\">\r\n        <div class=\"text-center nopools\">\r\n          {{ $t('customerSearch.volunteerNoPools') }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import poolview from './PoolView.vue'\r\n  import PoolChooserStandard from './PoolChooserStandard.vue'\r\n  import { UserProfileDto, FriendManagementDto, FriendPoolFindStandardDto } from '@/types'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    showPoolChooser: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerPoolsStandard',\r\n    components: { sprbutton, poolview, PoolChooserStandard },\r\n    props: {\r\n      volunteer: {\r\n        type: Object as () => UserProfileDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      isActive: {\r\n        type: Boolean,\r\n        default: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        showPoolChooser: false\r\n      }\r\n    },\r\n    computed: {\r\n      pools (): Array<FriendPoolFindStandardDto> {\r\n        return this.volunteer.friendInfo.standardProfile.friendPools ?? []\r\n      }\r\n    },\r\n    methods: {\r\n      onPoolChosen (pool): void {\r\n        const url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.addvolunteertopoolstandard[0].replace('{poolid}', pool.id).replace('{volunteerid}', this.volunteer.friendInfo.id)\r\n        this.$http.post(url).then(resp => {\r\n          this.showPoolChooser = false\r\n          this.$emit('poolsupdated', pool)\r\n        }, err => this.displayError(err))\r\n      },\r\n      onAdd (): void {\r\n        this.showPoolChooser = true\r\n      },\r\n      onCancelAdd (): void {\r\n        this.showPoolChooser = false\r\n      },\r\n      onRemove (pool): void {\r\n        const url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.removevolunteerfrompoolstandard[0].replace('{poolid}', pool.id).replace('{volunteerid}', this.volunteer.friendInfo.id)\r\n        var self = this\r\n        this.$http.delete(url).then(resp => {\r\n          this.$emit('poolsupdated', pool)\r\n        }, err => this.displayError(err))\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteerpoolsstandard {\r\n    .poolbuttons {\r\n      text-align: center;\r\n      margin-top: 10px;\r\n      margin-bottom: 20px;\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerPoolsStandard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerPoolsStandard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerPoolsStandard.vue?vue&type=template&id=4784464b\"\nimport script from \"./VolunteerPoolsStandard.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerPoolsStandard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerPoolsStandard.vue?vue&type=style&index=0&id=4784464b&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"volunteerpoolsnet\"},[(!_vm.showPoolChooser)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 poolbuttons\"},[_c('sprbutton',{attrs:{\"size\":4,\"disabled\":!_vm.isActive,\"title\":_vm.$t('customerSearch.addVolunteerToPool'),\"click-event\":\"add\"},on:{\"add\":_vm.onAdd}})],1)]):_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 poolbuttons\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.cancelAddToPool'),\"click-event\":\"cancelAdd\"},on:{\"cancelAdd\":_vm.onCancelAdd}})],1),_c('div',{staticClass:\"col-12\"},[_c('PoolChooserNet',{attrs:{\"friend-management-group\":_vm.group,\"selected-pools\":_vm.pools},on:{\"poolchosen\":_vm.onPoolChosen}})],1)]),_c('div',{staticClass:\"row\"},[(_vm.pools && _vm.pools.length)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('customerSearch.existingPools')))])])]),_vm._l((_vm.pools),function(pool){return _c('poolview',{key:pool.id,attrs:{\"pool\":pool,\"groupid\":_vm.group.id,\"action-view\":\"remove\"},on:{\"remove\":_vm.onRemove}})})],2):_vm._e(),((!_vm.pools || !_vm.pools.length) && !_vm.showPoolChooser)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"text-center nopools\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.volunteerNoPools'))+\" \")])]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"volunteerpoolsnet\">\r\n    <div v-if=\"!showPoolChooser\" class=\"row\">\r\n      <div class=\"col-12 poolbuttons\">\r\n        <sprbutton :size=\"4\"\r\n                   :disabled=\"!isActive\"\r\n                   :title=\"$t('customerSearch.addVolunteerToPool')\"\r\n                   click-event=\"add\"\r\n                   @add=\"onAdd\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-else class=\"row\">\r\n      <div class=\"col-12 poolbuttons\">\r\n        <sprbutton :size=\"4\"\r\n                   :title=\"$t('customerSearch.cancelAddToPool')\"\r\n                   click-event=\"cancelAdd\"\r\n                   @cancelAdd=\"onCancelAdd\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <PoolChooserNet\r\n          :friend-management-group=\"group\"\r\n          :selected-pools=\"pools\"\r\n          @poolchosen=\"onPoolChosen\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div v-if=\"pools && pools.length\" class=\"col-12\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <h5>{{ $t('customerSearch.existingPools') }}</h5>\r\n          </div>\r\n        </div>\r\n        <poolview\r\n          v-for=\"pool in pools\"\r\n          :key=\"pool.id\"\r\n          :pool=\"pool\"\r\n          :groupid=\"group.id\"\r\n          action-view=\"remove\"\r\n          @remove=\"onRemove\"\r\n        />\r\n      </div>\r\n      <div v-if=\"(!pools || !pools.length) && !showPoolChooser\" class=\"col-12\">\r\n        <div class=\"text-center nopools\">\r\n          {{ $t('customerSearch.volunteerNoPools') }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import poolview from './PoolView.vue'\r\n  import PoolChooserNet from './PoolChooserNet.vue'\r\n  import { UserProfileDto, FriendManagementDto, FriendPoolFindNetDto } from '@/types'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    showPoolChooser: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerPoolsNet',\r\n    components: { sprbutton, poolview, PoolChooserNet },\r\n    props: {\r\n      volunteer: {\r\n        type: Object as () => UserProfileDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      isActive: {\r\n        type: Boolean,\r\n        default: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        showPoolChooser: false\r\n      }\r\n    },\r\n    computed: {\r\n      pools (): Array<FriendPoolFindNetDto> {\r\n        return this.volunteer.friendInfo.netProfile.friendPools ?? []\r\n      }\r\n    },\r\n    methods: {\r\n      onPoolChosen (pool): void {\r\n        const url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.addvolunteertopoolnet[0].replace('{poolid}', pool.id).replace('{volunteerid}', this.volunteer.friendInfo.id)\r\n        this.$http.post(url).then(resp => {\r\n          this.showPoolChooser = false\r\n          this.$emit('poolsupdated', pool)\r\n        }, err => this.displayError(err))\r\n      },\r\n      onAdd (): void {\r\n        this.showPoolChooser = true\r\n      },\r\n      onCancelAdd (): void {\r\n        this.showPoolChooser = false\r\n      },\r\n      onRemove (pool): void {\r\n        const url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.removevolunteerfrompoolnet[0].replace('{poolid}', pool.id).replace('{volunteerid}', this.volunteer.friendInfo.id)\r\n        var self = this\r\n        this.$http.delete(url).then(resp => {\r\n          this.$emit('poolsupdated', pool)\r\n        }, err => this.displayError(err))\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteerpoolsnet {\r\n    .poolbuttons {\r\n      text-align: center;\r\n      margin-top: 10px;\r\n      margin-bottom: 20px;\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerPoolsNet.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerPoolsNet.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerPoolsNet.vue?vue&type=template&id=0a0255c7\"\nimport script from \"./VolunteerPoolsNet.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerPoolsNet.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerPoolsNet.vue?vue&type=style&index=0&id=0a0255c7&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"container volunteerpreview\">\r\n    <div class=\"row header\">\r\n      <div class=\"col\">\r\n        <HomeButton\r\n          :group-id=\"groupIdNumber\"\r\n        />\r\n        <BackButton :back-url=\"backUrl\" />\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"showModal\" class=\"modal\">\r\n      <div class=\"modal-content\">\r\n        <!-- Removed the close button (cross) -->\r\n        <VolunteerMoveForm :target-id=\"id\" :current-group=\"currentGroup\" :friend-management-groups=\"friendManagementGroups\" @save=\"moveVolunteerToFmg\" @cancel=\"cancelMove\" />\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row content\">\r\n      <div\r\n        v-if=\"loaded && !group.netFriendship\"\r\n        class=\"col-lg-4 mb-3 mb-lg-0 volunteer-area\"\r\n      >\r\n        <VolunteerCardStandard\r\n          v-model=\"volunteer\"\r\n          :group=\"group\"\r\n          :show-actions=\"true\"\r\n          @refresh=\"refresh\"\r\n          @moveVolunteer=\"moveVolunteer\"\r\n        />\r\n      </div>\r\n      <div\r\n        v-if=\"loaded && group.netFriendship\"\r\n        class=\"col-lg-4 mb-3 mb-lg-0 volunteer-area\"\r\n      >\r\n        <VolunteerCardNet\r\n          v-model=\"volunteer\"\r\n          :group=\"group\"\r\n          :show-actions=\"true\"\r\n          @refresh=\"refresh\"\r\n        />\r\n      </div>\r\n      <div class=\"col-lg-8 customer-area\">\r\n        <div v-if=\"inactiveText\" class=\"row\">\r\n          <div class=\"col-12 text-center\">\r\n            {{ inactiveText }}\r\n          </div>\r\n        </div>\r\n        <div v-else>\r\n          <div class=\"row\">\r\n            <div class=\"col-12\">\r\n              <h3 class=\"title\">\r\n                {{ $t('customerSearch.friendshipsTitle') }}\r\n              </h3>\r\n            </div>\r\n          </div>\r\n          <div class=\"volunteeractions\">\r\n            <volunteermatchstatus\r\n              v-if=\"group && volunteer\"\r\n              :volunteer=\"volunteer\"\r\n              :group=\"group\"\r\n              :highlightedvustomerid=\"customerid\"\r\n              @addNewMatch=\"onAddNewMatch\"\r\n              @customerMatchSelected=\"onCustomerMatchSelected\"\r\n            />\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12\">\r\n              <h3 class=\"title\">\r\n                {{ $t('customerSearch.poolsTitle') }}\r\n              </h3>\r\n            </div>\r\n          </div>\r\n          <div v-if=\"loaded\" class=\"row\">\r\n            <div class=\"col-12\">\r\n              <VolunteerPoolsNet\r\n                v-if=\"group.netFriendship\"\r\n                :volunteer=\"volunteer\"\r\n                :group=\"group\"\r\n                :is-active=\"isActive\"\r\n                @poolsupdated=\"onPoolsUpdated\"\r\n              />\r\n              <VolunteerPoolsStandard\r\n                v-else\r\n                :volunteer=\"volunteer\"\r\n                :group=\"group\"\r\n                :is-active=\"isActive\"\r\n                @poolsupdated=\"onPoolsUpdated\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import _ from 'lodash'\r\n  import BackButton from '../BackButton.vue'\r\n  import HomeButton from '../HomeButton.vue'\r\n  import VolunteerCardStandard from './VolunteerCardStandard.vue'\r\n  import VolunteerCardNet from './VolunteerCardNet.vue'\r\n  import volunteermatchstatus from './VolunteerMatchStatus.vue'\r\n  import VolunteerPoolsStandard from './VolunteerPoolsStandard.vue'\r\n  import VolunteerPoolsNet from './VolunteerPoolsNet.vue'\r\n  import scroll from '@/mixins/scroll'\r\n  import { UserProfileDto, CustomerState, FriendManagementDto, GetFriendProfileByFriendVolunteerIdCriteria, FriendshipNetDto, FriendshipStandardDto } from '@/types/index'\r\n  import { StringKeyValuePair } from '@/types/custom'\r\n  import VolunteerMoveForm from '@/components/friends/MoveToFMGForm.vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    friendManagementGroups: Array<StringKeyValuePair>,\r\n    showModal: boolean,\r\n    volunteer: UserProfileDto | null,\r\n    group: FriendManagementDto | null,\r\n    loaded: boolean,\r\n    loading: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerPreview',\r\n    components: { VolunteerCardStandard, VolunteerCardNet, BackButton, HomeButton, volunteermatchstatus, VolunteerPoolsStandard, VolunteerPoolsNet, VolunteerMoveForm },\r\n    mixins: [scroll],\r\n    props: {\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      }, // note this is the id of either the NET or STANDARD profile, not the Volunteer Id.\r\n      groupid: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      customerid: {\r\n        type: String,\r\n        default: ''\r\n      } // optional. Used to highlight a specific match on loading\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        friendManagementGroups: [] as Array<StringKeyValuePair>,\r\n        showModal: false,\r\n        volunteer: {} as UserProfileDto,\r\n        group: {} as FriendManagementDto,\r\n        loaded: false,\r\n        loading: false\r\n      }\r\n    },\r\n    computed: {\r\n      currentGroup (): StringKeyValuePair | null {\r\n        var group = _.find(this.friendManagementGroups, { key: this.groupid })\r\n        return group\r\n      },\r\n      backUrl (): string {\r\n        return '/friend/search/' + this.groupIdNumber + '/volunteer'\r\n      },\r\n      volunteerState (): CustomerState {\r\n        if (!this.volunteer) return CustomerState.PendingApproval\r\n        var isNetGroup = this.group?.netFriendship\r\n        return isNetGroup\r\n          ? this.volunteer?.friendInfo.netProfile.state\r\n          : this.volunteer?.friendInfo.standardProfile.state\r\n      },\r\n      groupIdNumber (): number {\r\n        return Number(this.groupid)\r\n      },\r\n      isActive (): boolean {\r\n        var isNetGroup = this.group?.netFriendship\r\n        return (this.volunteer?.friendInfo && _.includes([CustomerState.Active, CustomerState.PendingFriend, CustomerState.ActiveFriendship], this.volunteerState)) || false\r\n      },\r\n      isInactive (): boolean {\r\n        return this.volunteerState === CustomerState.NonActive\r\n      },\r\n      inactiveText (): string | LocaleMessage {\r\n        if (this.volunteer?.friendInfo) {\r\n          switch (this.volunteerState) {\r\n          case 1:\r\n            return this.$t('customerSearch.noMatchingNotInterviewed')\r\n          case 5:\r\n            return this.$t('customerSearch.noMatchingRemoved')\r\n          case 6:\r\n            return this.$t('customerSearch.noMatchingOnHold')\r\n          }\r\n        }\r\n\r\n        return ''\r\n      }\r\n    },\r\n    created (): void {\r\n      var self = this\r\n\r\n      var getGroupUrl = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationById[0]}`.replace('{0}', this.groupid)\r\n      this.loaded = false\r\n      const groupPromise = this.$http.get(getGroupUrl).then(resp => {\r\n        // @ts-ignore\r\n        this.group = resp.body\r\n      })\r\n\r\n      if (this.isMoveAdmin()) {\r\n        const url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendstandardgroups[0]\r\n        const friendManagementPromise = this.$http.get(url).then((resp: any) => {\r\n          if (resp.body) {\r\n            var friendManagementGroups = [] as Array<StringKeyValuePair>\r\n            _.each(resp.body, (fmg) => {\r\n              friendManagementGroups.push({ key: `${fmg.id}`, value: `${fmg.name}` })\r\n            })\r\n\r\n            this.friendManagementGroups = _.sortBy(friendManagementGroups, 'value')\r\n          }\r\n        })\r\n        //After the update we don't always get friendManagementPromise, so we need an else statement\r\n        Promise.all([groupPromise, friendManagementPromise]).then(() => {\r\n          this.loadVolunteer()\r\n        })\r\n      } else {\r\n        // Wait for groupPromise to resolve before calling loadVolunteer\r\n        groupPromise.then(() => {\r\n          this.loadVolunteer()\r\n        })\r\n      }\r\n    },\r\n    methods: {\r\n      loadVolunteer (): void {\r\n        this.loaded = false\r\n        var criteria: GetFriendProfileByFriendVolunteerIdCriteria = {\r\n          friendManagementGroupId: Number(this.groupid),\r\n          friendVolunteerId: Number(this.id),\r\n          includeFriendships: true,\r\n          includeFriendPools: true\r\n        }\r\n        var getVolunteerUrl = this.group?.netFriendship\r\n          ? `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteergetnetprofilebyid[0]}`\r\n          : `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteergetstandardprofilebyid[0]}`\r\n        this.$http.post(getVolunteerUrl, criteria)\r\n          .then(resp => {\r\n            // @ts-ignore\r\n            this.volunteer = resp.body\r\n            this.loaded = true\r\n          })\r\n      },\r\n      isMoveAdmin (): boolean {\r\n        // @ts-ignore\r\n        const isAdmin = this.hasRole('Admin')\r\n        // @ts-ignore\r\n        const isFriendshipAdmin = this.hasRole('FriendshipAdmin')\r\n        // @ts-ignore\r\n        const isDistrictFriendshipAdmin = this.hasRole('DistrictFriendshipAdmin')\r\n        return isAdmin || isFriendshipAdmin || isDistrictFriendshipAdmin\r\n      },\r\n      moveVolunteer (): void {\r\n        this.showModal = true\r\n      },\r\n      moveVolunteerToFmg (selectedGroup): void {\r\n        if (selectedGroup === null) {\r\n          return\r\n        }\r\n        const url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteermovestandardtofmg[0]\r\n\r\n        const moveToFMGCommand = {\r\n          TargetId: this.id,\r\n          GroupId: selectedGroup.key\r\n        }\r\n\r\n        this.$http.put(url, moveToFMGCommand).then((resp: any) => {\r\n          if (resp.status === 200) {\r\n            // Handle success response\r\n            // @ts-ignore\r\n            this.showAlertInfo(this.$t('customerSearch.movingCustomer'))\r\n          } else if (resp.status === 403) {\r\n            // Handle forbidden response\r\n            this.$router.push('/profile')\r\n          } else if (resp.status === 400) {\r\n            // Handle bad request response\r\n            // @ts-ignore\r\n            this.showAlertError(this.$t('customerSearch.failedToMove'))\r\n          }\r\n\r\n          this.showModal = false\r\n        }, (error: any) => {\r\n          // Handle any other errors\r\n          console.log('Error:', error)\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('customerSearch.failedToMove'))\r\n\r\n          this.showModal = false\r\n        })\r\n      },\r\n      cancelMove (): void {\r\n        this.showModal = false\r\n      },\r\n      closeMoveVolunteer (): void {\r\n        this.showModal = false\r\n      },\r\n      onAddNewMatch (): void {\r\n        this.$router.push(`/friend/volunteermatch/${this.groupid}/${this.id}`)\r\n      },\r\n      onCustomerMatchSelected (friendship: FriendshipNetDto | FriendshipStandardDto): void {\r\n        this.$router.push(`/friend/volunteermatch/${this.groupid}/${this.id}/${friendship.customer.id}`)\r\n      },\r\n      onPoolsUpdated (): void {\r\n        this.loadVolunteer()\r\n      },\r\n      refresh (): void{\r\n        window.location.reload()\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteerpreview {\r\n    .header {\r\n      margin-top: 10px;\r\n      margin-bottom: 15px;\r\n      .nav-header {\r\n        border-bottom: 0;\r\n      }\r\n    }\r\n\r\n    .content {\r\n      .volunteer-area {\r\n        padding-top: 30px;\r\n        background-color: $brand-white;\r\n        border-left: solid 5px $volunteer-color-strong;\r\n        .button-row {\r\n          text-align: center;\r\n          .load-indicator {\r\n            width: 100%;\r\n            margin-bottom: 15px;\r\n            color: $brand-red;\r\n          }\r\n          button {\r\n            margin-bottom: 15px;\r\n            &.button-disabled {\r\n              border-color: $brand-grey4;\r\n              color: $brand-grey4;\r\n              cursor: not-allowed;\r\n              outline: none;\r\n              &:hover {\r\n                background-color:$brand-white;\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n    }\r\n  }\r\n\r\n  .modal {\r\n  display: block;\r\n  position: fixed;\r\n  z-index: 1;\r\n  left: 0;\r\n  top: 0;\r\n  width: 100%;\r\n  height: 100%;\r\n  overflow: auto;\r\n  background-color: rgb(0,0,0);\r\n  background-color: rgba(0,0,0,0.4);\r\n}\r\n\r\n  .modal-content {\r\n  background-color: #fefefe;\r\n  margin: 15% auto;\r\n  max-width: 600px;\r\n  padding: 20px;\r\n  border: 1px solid #888;\r\n  width: 80%;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerPreview.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerPreview.vue?vue&type=template&id=37e5afac&scoped=true\"\nimport script from \"./VolunteerPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerPreview.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerPreview.vue?vue&type=style&index=0&id=37e5afac&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"37e5afac\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.group)?_c('div',{staticClass:\"container volunteerfindmatch\"},[(_vm.group.netFriendship)?_c('volunteer-find-net-match',{attrs:{\"group\":_vm.group,\"volunteerid\":_vm.volunteerIdNumber}}):_c('volunteer-find-standard-match',{attrs:{\"group\":_vm.group,\"volunteerid\":_vm.volunteerIdNumber}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.volunteer)?_c('div',{staticClass:\"container volunteerfindnetmatch\"},[_c('div',{staticClass:\"row header\"},[_c('div',{staticClass:\"col-lg-4 col-xl-4\"},[(_vm.group)?_c('HomeButton',{attrs:{\"group-id\":_vm.group.id}}):_vm._e(),_c('BackButton')],1),(_vm.customerSelected)?_c('div',{staticClass:\"col-lg-8 col-xl-9 d-none d-lg-block\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.volunteerMatchTitle')))])]):_vm._e()]),(_vm.group && _vm.volunteer)?_c('div',{staticClass:\"row content\"},[_c('div',{staticClass:\"col-lg-4 col-xl-3 mb-3 mb-lg-0 volunteer-area\"},[_c('VolunteerCardNet',{attrs:{\"group\":_vm.group},on:{\"refresh\":_vm.refresh},model:{value:(_vm.volunteer),callback:function ($$v) {_vm.volunteer=$$v},expression:\"volunteer\"}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isSending),expression:\"isSending\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])],1),_c('div',{staticClass:\"col-lg-8 col-xl-9 customer-area\"},[(!_vm.customerSelected)?_c('div',{staticClass:\"row customer-selection\"},[_c('div',{staticClass:\"col-md-4 col-lg-4 order-md-2 search-filter\"},[_c('customerFilter',{attrs:{\"group\":_vm.group,\"filter-type\":'CUSTOMER',\"show-all\":false},on:{\"filterchanged\":_vm.onFilterChanged}})],1),_c('div',{staticClass:\"col-md-8 col-lg-8 order-md-1 customer-list\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.volunteerMatchTitle')))]),_c('volunteermatchresults',{attrs:{\"list\":_vm.filteredcustomers},on:{\"customerSelected\":_vm.onCustomerSelected}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)]),(!_vm.isLoading && _vm.noResults)?_c('div',{staticClass:\"noresults infocontainer\"},[_c('div',{staticClass:\"info warning\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(_vm._s(_vm.$t('customerSearch.noResults'))+\" \")],1)]):_vm._e()],1)]):_vm._e(),(_vm.customerSelected)?_c('div',{staticClass:\"row d-lg-none customer-heading\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.volunteerMatchTitle')))])]):_vm._e(),(_vm.customerSelected)?_c('div',{staticClass:\"row ml-lg-1 customer-summary\"},[_c('div',{staticClass:\"col\"},[_c('CustomerSummaryNet',{attrs:{\"volunteer\":_vm.volunteer,\"customer\":_vm.customer,\"group\":_vm.group,\"score\":_vm.score,\"is-first\":_vm.isFirst,\"is-last\":_vm.isLast,\"is-inappropriate\":_vm.isInappropriate},on:{\"prev\":_vm.onPrev,\"next\":_vm.onNext,\"close\":_vm.onClose}})],1)]):_vm._e()])]):_vm._e()]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row customersummarynet\",class:_vm.isInappropriateCss},[_c('div',{staticClass:\"col-md-6 mb-3 mb-md-0 maincolumn\"},[_c('div',{staticClass:\"topsection clearfix\"},[_c('div',{staticClass:\"controls\"},[(!_vm.isFirst)?_c('div',{staticClass:\"prev\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.prev}},[_c('font-awesome-icon',{attrs:{\"icon\":\"chevron-left\"}})],1)]):_vm._e(),(!_vm.isLast)?_c('div',{staticClass:\"next\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.next}},[_c('font-awesome-icon',{attrs:{\"icon\":\"chevron-right\"}})],1)]):_vm._e()])]),_c('CustomerCardNet',{attrs:{\"group\":_vm.group,\"show-matches\":true,\"show-actions\":false,\"show-edit-button\":true,\"matches\":_vm.matchData},on:{\"refresh\":_vm.refresh},model:{value:(_vm.customer),callback:function ($$v) {_vm.customer=$$v},expression:\"customer\"}})],1),_c('div',{staticClass:\"col-md-6 sidecolumn\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col controls\"},[_c('div',{staticClass:\"back\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$t('customerSearch.close')))])])])]),_c('volunteermatchnetconfirm',{attrs:{\"volunteer\":_vm.volunteer,\"customer\":_vm.customer,\"is-inappropriate\":_vm.isInappropriate,\"score\":_vm.score}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"volunteermatchnetconfirm\"},[(_vm.isInappropriate)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col maintitle\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('customerSearch.inappropriate')))])])]),_c('div',{staticClass:\"row instructions\"},[_c('div',{staticClass:\"col instructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.inappropriateInstructions'))+\" \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col buttons\"},[_c('sprbutton',{staticClass:\"end-inappropriate-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.endInappropriate'),\"click-event\":\"endinappropriate\"},on:{\"endinappropriate\":_vm.onEndInappropriate}})],1)])]):_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col maintitle\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('customerSearch.matchConfirmTitle')))])])]),_c('div',{staticClass:\"row starscore\"},[_c('div',{staticClass:\"col-12\"},[_c('stars',{attrs:{\"score\":_vm.score,\"is-net\":true}})],1)]),_c('div',{staticClass:\"row instructions\"},[_c('div',{staticClass:\"col instructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.createMatchInstructions'))+\" \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col buttons\"},[_c('sprbutton',{staticClass:\"suggest-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.suggestButton'),\"click-event\":\"suggest\",\"disabled\":!_vm.isActive},on:{\"suggest\":_vm.suggest}})],1)]),(!_vm.showInappropriate)?_c('div',{staticClass:\"row inappropriate\"},[_c('div',{staticClass:\"col-12\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.markInappropriate}},[_vm._v(_vm._s(_vm.$t('customerSearch.markInnapropriateButton')))])])]):_vm._e(),(_vm.showInappropriate)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"inappropriate-instructions\"},[_vm._v(_vm._s(_vm.$t('customerSearch.markInapproprateInstructions')))])]),_c('div',{staticClass:\"col-6\"},[_c('a',{staticClass:\"cancel-inappropriate\",attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.cancelInappropriate}},[_vm._v(_vm._s(_vm.$t('customerSearch.cancelInappropriateButton')))])]),_c('div',{staticClass:\"col-6\"},[_c('sprbutton',{staticClass:\"confirm-inappropriate-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.confirmInappropriateButton'),\"click-event\":\"confirmInappropriate\"},on:{\"confirmInappropriate\":_vm.confirmInappropriate}})],1)]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"volunteermatchnetconfirm\">\r\n    <div v-if=\"isInappropriate\">\r\n      <div class=\"row\">\r\n        <div class=\"col maintitle\">\r\n          <span class=\"title\">{{ $t('customerSearch.inappropriate') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row instructions\">\r\n        <div class=\"col instructions\">\r\n          {{ $t('customerSearch.inappropriateInstructions') }}\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col buttons\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.endInappropriate')\"\r\n                     click-event=\"endinappropriate\"\r\n                     class=\"end-inappropriate-button\"\r\n                     @endinappropriate=\"onEndInappropriate\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <!-- Not inappropriate match -->\r\n    <div v-else>\r\n      <div class=\"row\">\r\n        <div class=\"col maintitle\">\r\n          <span class=\"title\">{{ $t('customerSearch.matchConfirmTitle') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row starscore\">\r\n        <div class=\"col-12\">\r\n          <stars :score=\"score\" :is-net=\"true\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row instructions\">\r\n        <div class=\"col instructions\">\r\n          {{ $t('customerSearch.createMatchInstructions') }}\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col buttons\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.suggestButton')\"\r\n                     click-event=\"suggest\"\r\n                     class=\"suggest-button\"\r\n                     :disabled=\"!isActive\"\r\n                     @suggest=\"suggest\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"!showInappropriate\" class=\"row inappropriate\">\r\n        <div class=\"col-12\">\r\n          <a href=\"javascript:void(0)\" @click=\"markInappropriate\">{{ $t('customerSearch.markInnapropriateButton') }}</a>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"showInappropriate\" class=\"row\">\r\n        <div class=\"col-12\">\r\n          <span class=\"inappropriate-instructions\">{{ $t('customerSearch.markInapproprateInstructions') }}</span>\r\n        </div>\r\n        <div class=\"col-6\">\r\n          <a href=\"javascript:void(0)\" class=\"cancel-inappropriate\" @click=\"cancelInappropriate\">{{ $t('customerSearch.cancelInappropriateButton') }}</a>\r\n        </div>\r\n        <div class=\"col-6\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.confirmInappropriateButton')\"\r\n                     click-event=\"confirmInappropriate\"\r\n                     class=\"confirm-inappropriate-button\"\r\n                     @confirmInappropriate=\"confirmInappropriate\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import stars from '../SPRStars.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import { UserProfileDto, FriendCustomerNetDto, CustomerState } from '@/types/index'\r\n  import { NetMatchPair } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    suggestionMessage: string | LocaleMessage,\r\n    showInappropriate: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerMatchNetConfirm',\r\n    components: { stars, sprbutton },\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerNetDto,\r\n        required: true\r\n      },\r\n      volunteer: {\r\n        type: Object as () => UserProfileDto,\r\n        required: true\r\n      },\r\n      score: {\r\n        type: Number,\r\n        required: true\r\n      },\r\n      isInappropriate: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        suggestionMessage: this.$t('customerSearch.suggestionMessage'),\r\n        showInappropriate: false\r\n      }\r\n    },\r\n    computed: {\r\n      isActive (): boolean {\r\n        return (this.volunteer.friendInfo && _.includes([CustomerState.Active, CustomerState.PendingFriend, CustomerState.ActiveFriendship], this.volunteer.friendInfo.netProfile.state)) &&\r\n          (_.includes([CustomerState.Active, CustomerState.PendingFriend, CustomerState.ActiveFriendship], this.customer.state))\r\n      }\r\n    },\r\n    methods: {\r\n      suggest (): void {\r\n        this.$bus.$emit('initiate-friendship', { volunteer: this.volunteer, customer: this.customer, message: this.suggestionMessage } as NetMatchPair)\r\n      },\r\n      markInappropriate (): void {\r\n        this.showInappropriate = true\r\n      },\r\n      confirmInappropriate (): void {\r\n        this.$bus.$emit('inappropriate-friendship', { volunteer: this.volunteer, customer: this.customer } as NetMatchPair)\r\n      },\r\n      cancelInappropriate (): void {\r\n        this.showInappropriate = false\r\n      },\r\n      onEndInappropriate (): void {\r\n        this.$bus.$emit('end-inappropriate-friendship', { volunteer: this.volunteer, customer: this.customer } as NetMatchPair)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .volunteermatchnetconfirm {\r\n    text-align: center;\r\n\r\n    .maintitle {\r\n      margin: 30px 0 20px 0;\r\n    }\r\n\r\n    .title {\r\n      text-transform: uppercase;\r\n      color:$brand-red;\r\n      font-weight: bold;\r\n      display:block;\r\n    }\r\n\r\n    .starscore {\r\n      margin-top:50px;\r\n      margin-bottom: 50px;\r\n    }\r\n\r\n    .instructions {\r\n      margin-bottom: 20px;\r\n      font-size: 13px;\r\n    }\r\n\r\n    .buttons {\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .inappropriate,\r\n    .cancel {\r\n      margin-bottom: 50px;\r\n      a {\r\n        color:$brand-red;\r\n      }\r\n    }\r\n\r\n    .cancel-inappropriate {\r\n      display: flex;\r\n      height: 100%;\r\n      align-items: center;\r\n    }\r\n\r\n    .inappropriate-instructions {\r\n      margin-bottom:30px;\r\n      display:block;\r\n      font-size: 13px;\r\n    }\r\n\r\n    .message {\r\n      width: 100%;\r\n      margin-bottom:30px;\r\n\r\n      textarea {\r\n        width: 100%;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchNetConfirm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchNetConfirm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerMatchNetConfirm.vue?vue&type=template&id=533f0a46\"\nimport script from \"./VolunteerMatchNetConfirm.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerMatchNetConfirm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerMatchNetConfirm.vue?vue&type=style&index=0&id=533f0a46&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"row customersummarynet\" :class=\"isInappropriateCss\">\r\n    <div class=\"col-md-6 mb-3 mb-md-0 maincolumn\">\r\n      <div class=\"topsection clearfix\">\r\n        <div class=\"controls\">\r\n          <div v-if=\"!isFirst\" class=\"prev\">\r\n            <a href=\"javascript:void(0)\" @click=\"prev\"><font-awesome-icon icon=\"chevron-left\" /></a>\r\n          </div>\r\n          <div v-if=\"!isLast\" class=\"next\">\r\n            <a href=\"javascript:void(0)\" @click=\"next\"><font-awesome-icon icon=\"chevron-right\" /></a>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <CustomerCardNet\r\n        v-model=\"customer\"\r\n        :group=\"group\"\r\n        :show-matches=\"true\"\r\n        :show-actions=\"false\"\r\n        :show-edit-button=\"true\"\r\n        :matches=\"matchData\"\r\n        @refresh=\"refresh\"\r\n      />\r\n    </div>\r\n    <div class=\"col-md-6 sidecolumn\">\r\n      <div class=\"row\">\r\n        <div class=\"col controls\">\r\n          <div class=\"back\">\r\n            <a href=\"javascript:void(0)\" @click=\"close\">{{ $t('customerSearch.close') }}</a>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <volunteermatchnetconfirm :volunteer=\"volunteer\" :customer=\"customer\" :is-inappropriate=\"isInappropriate\" :score=\"score\" />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import volunteermatchnetconfirm from './VolunteerMatchNetConfirm.vue'\r\n  import CustomerCardNet from './CustomerCardNet.vue'\r\n\r\n  import datehelper from '../../mixins/dates.js'\r\n  import googlemaps from '../../mixins/googlemaps.js'\r\n  import friendMatch from '../../mixins/friendMatch'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n  import addresshelper from '@/helpers/addresshelper'\r\n  import locationhelper from '../../mixins/locationutils.js'\r\n  import { LanguageDto, UserProfileDto, FriendCustomerNetDto, FriendManagementDto, PreferredGenders, Gender, CustomerState } from '@/types/index'\r\n  import { MatchDataNet, YesNoWarning } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    unsub: undefined | Function\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerSummaryNet',\r\n    components: { volunteermatchnetconfirm, CustomerCardNet },\r\n    mixins: [datehelper,\r\n             googlemaps,\r\n             locationhelper,\r\n             friendMatch],\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerNetDto,\r\n        required: true\r\n      },\r\n      isFirst: Boolean,\r\n      isLast: Boolean,\r\n      volunteer: {\r\n        type: Object as () => UserProfileDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      isInappropriate: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      score: {\r\n        type: Number,\r\n        default: null\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        unsub: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      isInappropriateCss (): string {\r\n        return this.isInappropriate ? 'inappropriate' : ''\r\n      },\r\n      genderPreferenceMatch (): YesNoWarning {\r\n        if (this.volunteer.friendInfo.netProfile.preferredGenders === Number(PreferredGenders.Male | PreferredGenders.Female)) { // male or female\r\n          if (this.customer.gender === Gender.Other) { // other or undefined\r\n            return YesNoWarning.Warning\r\n          }\r\n        }\r\n        return YesNoWarning.Yes // back end calculates it, always return true\r\n      },\r\n      ageMatch (): boolean {\r\n        return friendMatch.methods.ageMatchFriend(this.customer.birthdate, this.volunteer.friendInfo.netProfile.preferredAges, this.volunteer.age, this.customer.preferredAges)\r\n      },\r\n      interestMatch (): boolean {\r\n        return this.interestCount > 0\r\n      },\r\n      interestCount (): number {\r\n        return _.intersection(\r\n          bitmaskhelper.bitmaskToArray(this.volunteer.friendInfo.netProfile.interests),\r\n          bitmaskhelper.bitmaskToArray(this.customer.interests)).length\r\n      },\r\n      languageMatch (): boolean {\r\n        // Combine both spoken languages and native language and check for any matches\r\n        var volunteerLanguages = this.volunteer.spokenLanguages\r\n\r\n        // if volunteerLanguages doesn't include the native language yet, add it:\r\n        if (this.volunteer.nativeLanguage !== 'none' && !_.includes(volunteerLanguages, this.volunteer.nativeLanguage)) {\r\n          volunteerLanguages.push(this.volunteer.nativeLanguage)\r\n        }\r\n\r\n        var customerLanguages = this.customer.customerLanguages.map((x: LanguageDto) => x.isoCode)\r\n\r\n        // if customerLanguages doesn't include the native language yet, add it:\r\n        if (this.customer.nativeLanguage !== 'none' && !_.includes(customerLanguages, this.customer.nativeLanguage)) {\r\n          customerLanguages.push(this.customer.nativeLanguage)\r\n        }\r\n\r\n        // Now see if any of the languages in customerLanguages exists in the vulunteerLanguages.\r\n        return volunteerLanguages.some(language => customerLanguages.includes(language))\r\n      },\r\n      customerAddress (): string {\r\n        return addresshelper.formatAddress(this.customer.streetAddress, this.customer.zipCode, this.customer.city)\r\n      },\r\n      volunteerTransportation (): number | undefined {\r\n        var self = this\r\n        var fastest = [1,\r\n                       2,\r\n                       4,\r\n                       3]\r\n        return _.find(fastest, (item) => {\r\n          return _.includes(self.volunteer.transportation, item)\r\n        })\r\n      },\r\n      matchData (): MatchDataNet {\r\n        return {\r\n          genderMatch: this.genderPreferenceMatch,\r\n          ageMatch: this.ageMatch,\r\n          languageMatch: this.languageMatch,\r\n          interestMatch: this.interestMatch\r\n        }\r\n      }\r\n    },\r\n    beforeDestroy () {\r\n      if (this.unsub) {\r\n        this.unsub()\r\n      }\r\n    },\r\n    methods: {\r\n      prev (): void {\r\n        this.$emit('prev')\r\n      },\r\n      next (): void {\r\n        this.$emit('next')\r\n      },\r\n      close (): void {\r\n        this.$emit('close')\r\n      },\r\n      refresh (): void {\r\n        window.location.reload()\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customersummarynet {\r\n    height: 100%;\r\n    .maincolumn {\r\n      background-color: $brand-white;\r\n      border-left: solid 5px $customer-color-strong;\r\n      padding-bottom: 15px;\r\n\r\n      @media (min-width: $media-md) {\r\n        border-right: solid 1px $brand-grey3;\r\n      }\r\n\r\n      .topsection {\r\n        margin-top: 30px;\r\n        .controls {\r\n          a {\r\n            color:$brand-red;\r\n            cursor: pointer;\r\n          }\r\n          .prev {\r\n            font-size:22px;\r\n            position: absolute;\r\n            top: 15px;\r\n            left: 15px;\r\n          }\r\n          .next {\r\n            font-size:22px;\r\n            position: absolute;\r\n            top: 15px;\r\n            right: 15px;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    .sidecolumn {\r\n      background-color: $brand-white;\r\n      .controls {\r\n        a {\r\n          color:$brand-red;\r\n          cursor: pointer;\r\n        }\r\n        .back {\r\n          position: absolute;\r\n          right:20px;\r\n          top: 15px;\r\n        }\r\n      }\r\n    }\r\n\r\n    &.inappropriate {\r\n      .maincolumn {\r\n        color: $brand-grey8;\r\n        background-color: $brand-grey3;\r\n\r\n        .icon, .match {\r\n          svg {\r\n            color: $brand-grey6;\r\n          }\r\n        }\r\n        .friendicon {\r\n          background-color: $brand-grey6;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerSummaryNet.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerSummaryNet.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerSummaryNet.vue?vue&type=template&id=0b08b96d\"\nimport script from \"./CustomerSummaryNet.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerSummaryNet.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerSummaryNet.vue?vue&type=style&index=0&id=0b08b96d&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"volunteermatchresults\"},[_c('div',{staticClass:\"row search\"},[_c('div',{staticClass:\"col-12\"},[_c('searchbox',{attrs:{\"placeholder\":_vm.placeholder},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1)]),_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"row results-list\"},[_c('ul',_vm._l((_vm.filteredItems),function(item){return _c('li',{key:item.id},[_c('volunteermatchview',{attrs:{\"match\":item},on:{\"customerSelected\":function($event){return _vm.onCustomerSelected(item)}}})],1)}),0)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"volunteermatchview\",class:_vm.cssClass},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-8 col-xl-5\"},[_c('div',{staticClass:\"friendcontainer\"},[_c('div',{staticClass:\"friendimage\"},[_c('friendicon',{attrs:{\"image\":_vm.match.match.contactImage,\"friendname\":_vm.match.match.firstName,\"state\":_vm.friendshipState,\"multiple-friendships\":_vm.match.match.multipleVolunteers}})],1),_c('div',{staticClass:\"friendinfo\"},[_c('div',{staticClass:\"friendname\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.onCustomerSelected}},[_vm._v(\" \"+_vm._s(_vm.match.match.firstName)+\" \"+_vm._s(_vm.match.match.lastName)+\" \")])]),_c('div',{staticClass:\"frienddetails\"},[_c('div',{staticClass:\"age\"},[_vm._v(\" \"+_vm._s(_vm.genderAgeText)+\" \")]),_c('div',{staticClass:\"area\"},[_vm._v(\" \"+_vm._s(_vm.suburbzip)+\" \")])])])])]),_c('div',{staticClass:\"d-none d-xl-block col-xl-4\"},[_c('div',{staticClass:\"description-container\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.match.match.shortDescription),expression:\"match.match.shortDescription\"}],staticClass:\"description\"},[_vm._v(\" “\"+_vm._s(_vm.match.match.shortDescription)+\"” \")])])]),_c('div',{staticClass:\"col-4 col-xl-3 starblock\"},[_c('div',{staticClass:\"volunteercontainer justify-content-right\"},[(_vm.match.isInappropriateMatch)?_c('div',{staticClass:\"inappropriatelabel\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.inappropriate'))+\" \")]):_c('stars',{attrs:{\"score\":_vm.match.score,\"is-net\":_vm.isNetItem}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 novolunteer\"},[_vm._v(\" \"+_vm._s(_vm.daysWithoutFriend(_vm.match.match.lastFriendshipEndDate))+\" \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"volunteermatchview\" :class=\"cssClass\">\r\n    <div class=\"row\">\r\n      <div class=\"col-8 col-xl-5\">\r\n        <div class=\"friendcontainer\">\r\n          <div class=\"friendimage\">\r\n            <friendicon :image=\"match.match.contactImage\" :friendname=\"match.match.firstName\" :state=\"friendshipState\" :multiple-friendships=\"match.match.multipleVolunteers\" />\r\n          </div>\r\n          <div class=\"friendinfo\">\r\n            <div class=\"friendname\">\r\n              <a href=\"javascript:void(0)\" @click=\"onCustomerSelected\">\r\n                {{ match.match.firstName }} {{ match.match.lastName }}\r\n              </a>\r\n            </div>\r\n            <div class=\"frienddetails\">\r\n              <div class=\"age\">\r\n                {{ genderAgeText }}\r\n              </div>\r\n              <div class=\"area\">\r\n                {{ suburbzip }}\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"d-none d-xl-block col-xl-4\">\r\n        <div class=\"description-container\">\r\n          <div v-show=\"match.match.shortDescription\" class=\"description\">\r\n            &#8220;{{ match.match.shortDescription }}&#8221;\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-4 col-xl-3 starblock\">\r\n        <div class=\"volunteercontainer justify-content-right\">\r\n          <div v-if=\"match.isInappropriateMatch\" class=\"inappropriatelabel\">\r\n            {{ $t('customerSearch.inappropriate') }}\r\n          </div>\r\n          <stars v-else :score=\"match.score\" :is-net=\"isNetItem\" />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 novolunteer\">\r\n        {{ daysWithoutFriend(match.match.lastFriendshipEndDate) }}\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import friendicon from './FriendIcon.vue'\r\n  import stars from '../SPRStars.vue'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import { MatchItemNetCustomerDto, MatchItemStandardCustomerDto, CustomerState } from '../../types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'Volunteermatchview',\r\n    components: { friendicon, stars },\r\n    mixins: [enumhelper, datehelper],\r\n    props: {\r\n      match: {\r\n        type: Object as () => MatchItemNetCustomerDto | MatchItemStandardCustomerDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      cssClass (): string {\r\n        return this.match.isInappropriateMatch ? 'inappropriate' : ''\r\n      },\r\n      isNetItem (): boolean {\r\n        return this.isMatchItemNetVolunteer(this.match)\r\n      },\r\n      computedGender (): string | LocaleMessage {\r\n        // @ts-ignore (Cant find mixins)\r\n        return this.getGenderTranslation(this.match.match.gender)\r\n      },\r\n      computedAge (): number {\r\n        // @ts-ignore (Cant find mixins)\r\n        return this.calculateAge(this.match.match.birthDate)\r\n      },\r\n      genderAgeText (): string {\r\n        return [this.computedGender, this.computedAge ? `${this.computedAge} ${this.$t('customerSearch.years')}` : ''].filter(Boolean).join(', ')\r\n      },\r\n      friendshipState (): CustomerState {\r\n        return this.match.match.state\r\n      },\r\n      suburbzip (): string {\r\n        return `${this.match.match.zipCode} ${this.match.match.city}`\r\n      }\r\n    },\r\n    methods: {\r\n      onCustomerSelected (): void {\r\n        this.$emit('customerSelected', this.match.match)\r\n      },\r\n      daysWithoutFriend (lastFriendshipDate): string {\r\n        if (!lastFriendshipDate) {\r\n          return `${this.$t('customerSearch.neverHadFriend')}`\r\n        }\r\n        // @ts-ignore (no mixins found)\r\n        return `${this.calculateDayDiff(lastFriendshipDate)} ${this.$t('customerSearch.daysWithoutFriend')}`\r\n      },\r\n      isMatchItemNetVolunteer (match: MatchItemNetCustomerDto | MatchItemStandardCustomerDto): match is MatchItemNetCustomerDto {\r\n        return (match as MatchItemNetCustomerDto).match.customerProfileNetId !== undefined\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteermatchview {\r\n    background-color: $brand-white;\r\n    border-left: solid 5px $customer-color-strong;\r\n    margin-bottom: 10px;\r\n    padding: 10px;\r\n\r\n    .starblock {\r\n      display: flex;\r\n      justify-content: center;\r\n      flex-direction: column;\r\n    }\r\n\r\n    .volunteercontainer {\r\n      .identuser {\r\n        position: absolute;\r\n        right: 20px;\r\n        color: $brand-red;\r\n      }\r\n      .volunteerimage {\r\n        float: right;\r\n        margin-left: 5px;\r\n      }\r\n      .summary {\r\n        font-size: 13px;\r\n        display: inline-block;\r\n        text-align: right;\r\n        .volunteername {\r\n          text-transform: uppercase;\r\n          color: $brand-red;\r\n          font-weight: bold;\r\n          display: block;\r\n        }\r\n      }\r\n\r\n    }\r\n    .novolunteer {\r\n        text-align: center;\r\n        font-size: 13px;\r\n      }\r\n    .description-container {\r\n      display: flex;\r\n      justify-content: center;\r\n      align-items: center;\r\n      height: 100%;\r\n      .description {\r\n        color: $brand-red;\r\n        font-style: italic;\r\n        font-size: 13px;\r\n        text-align: center;\r\n        align-self: center;\r\n      }\r\n    }\r\n\r\n    .friendcontainer {\r\n      display: flex;\r\n      align-items: center;\r\n      .friendinfo {\r\n        align-items: center;\r\n        font-size: 13px;\r\n        display: inline-block;\r\n        text-align: left;\r\n        .friendname {\r\n          display: block;\r\n          a {\r\n            color: $brand-red;\r\n            text-transform: uppercase;\r\n            font-weight: bold;\r\n          }\r\n        }\r\n      }\r\n      .friendimage {\r\n        align-items: center;\r\n        display: inline-block;\r\n        margin-right: 5px;\r\n      }\r\n    }\r\n\r\n    &.inappropriate {\r\n      color: $brand-grey6;\r\n      background-color: $brand-grey3;\r\n\r\n      .friendinfo {\r\n        .friendname a {\r\n          color: $brand-grey8;\r\n        }\r\n      }\r\n\r\n      .friendimage .friendicon {\r\n        background-color: $brand-grey6;\r\n      }\r\n\r\n      .inappropriatelabel {\r\n        font-size: 13px;\r\n        font-weight: bold;\r\n        text-transform: uppercase;\r\n        color: $brand-grey8;\r\n        text-align: center;\r\n      }\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchView.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchView.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerMatchView.vue?vue&type=template&id=2675776a\"\nimport script from \"./VolunteerMatchView.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerMatchView.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerMatchView.vue?vue&type=style&index=0&id=2675776a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"volunteermatchresults\">\r\n    <div class=\"row search\">\r\n      <div class=\"col-12\">\r\n        <searchbox v-model=\"search\" :placeholder=\"placeholder\" />\r\n      </div>\r\n    </div>\r\n    <div class=\"col\">\r\n      <div class=\"row results-list\">\r\n        <ul>\r\n          <li v-for=\"item in filteredItems\" :key=\"item.id\">\r\n            <volunteermatchview :match=\"item\" @customerSelected=\"onCustomerSelected(item)\" />\r\n          </li>\r\n        </ul>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import volunteermatchview from './VolunteerMatchView.vue'\r\n  import searchbox from '../SPRSearchBox.vue'\r\n  import { MatchItemNetCustomerDto, MatchItemStandardCustomerDto } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    placeholder: string | LocaleMessage,\r\n    search: string\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerMatchResults',\r\n    components: { volunteermatchview, searchbox },\r\n    props: {\r\n      list: {\r\n        type: Array as () => Array<MatchItemNetCustomerDto> | Array<MatchItemStandardCustomerDto>,\r\n        default: () => []\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        placeholder: this.$t('customerSearch.friendSearchPlaceholder'),\r\n        search: ''\r\n      }\r\n    },\r\n    computed: {\r\n      filteredItems (): Array<MatchItemNetCustomerDto> | Array<MatchItemStandardCustomerDto> {\r\n        if (this.search === '') {\r\n          return this.list\r\n        }\r\n\r\n        const searchTerms = this.search.toLowerCase().split(/[^a-z0-9åäö]/)\r\n\r\n        const textParts = _.filter(searchTerms, s => { return isNaN(Number(s)) })\r\n        const zipParts = _.filter(searchTerms, s => { return !isNaN(Number(s)) })\r\n\r\n        const result =   _.filter(this.list, (item: MatchItemStandardCustomerDto | MatchItemNetCustomerDto) => {\r\n          return (\r\n            _.every(textParts, s => {\r\n              return _.includes(item.match.firstName.toLowerCase() + ' ' + item.match.lastName.toLowerCase(), s)\r\n            }) ||\r\n            _.every(textParts, s => {\r\n              return _.includes(item.match.shortDescription.toLowerCase(), s)\r\n            })\r\n          ) && (\r\n            !zipParts.length || _.some(zipParts, z => {\r\n              return _.startsWith(item.match.zipCode, z)\r\n            })\r\n          )\r\n        }) as Array<MatchItemNetCustomerDto> | Array<MatchItemStandardCustomerDto>\r\n        return result\r\n      }\r\n    },\r\n    methods: {\r\n      onCustomerSelected (item): void {\r\n        this.$emit('customerSelected', item)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .volunteermatchresults {\r\n    ul {\r\n      width: 100%;\r\n      list-style-type: none;\r\n      margin: 0;\r\n      padding: 0;\r\n        li {\r\n          margin:0;\r\n          padding:0;\r\n        }\r\n      }\r\n    .search {\r\n      margin-bottom: 15px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchResults.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchResults.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerMatchResults.vue?vue&type=template&id=24acc8bf\"\nimport script from \"./VolunteerMatchResults.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerMatchResults.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerMatchResults.vue?vue&type=style&index=0&id=24acc8bf&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"volunteer\" class=\"container volunteerfindnetmatch\">\r\n    <div class=\"row header\">\r\n      <div class=\"col-lg-4 col-xl-4\">\r\n        <HomeButton\r\n          v-if=\"group\"\r\n          :group-id=\"group.id\"\r\n        />\r\n        <BackButton />\r\n      </div>\r\n      <div v-if=\"customerSelected\" class=\"col-lg-8 col-xl-9 d-none d-lg-block\">\r\n        <h4>{{ $t('customerSearch.volunteerMatchTitle') }}</h4>\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"group && volunteer\" class=\"row content\">\r\n      <div class=\"col-lg-4 col-xl-3 mb-3 mb-lg-0 volunteer-area\">\r\n        <VolunteerCardNet\r\n          v-model=\"volunteer\"\r\n          :group=\"group\"\r\n          @refresh=\"refresh\"\r\n        />\r\n        <div v-show=\"isSending\" class=\"loading\">\r\n          <div class=\"spinner\">\r\n            <loading />\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-lg-8 col-xl-9 customer-area\">\r\n        <div v-if=\"!customerSelected\" class=\"row customer-selection\">\r\n          <div class=\"col-md-4 col-lg-4 order-md-2 search-filter\">\r\n            <!--<matchfilter v-model=\"matchFilter\" :is-net=\"group.netFriendship\" @filterchanged=\"onFilterChanged\" />-->\r\n            <customerFilter\r\n              :group=\"group\"\r\n              :filter-type=\"'CUSTOMER'\"\r\n              :show-all=\"false\"\r\n              @filterchanged=\"onFilterChanged\"\r\n            />\r\n          </div>\r\n\r\n          <div class=\"col-md-8 col-lg-8 order-md-1 customer-list\">\r\n            <h4>{{ $t('customerSearch.volunteerMatchTitle') }}</h4>\r\n            <volunteermatchresults :list=\"filteredcustomers\" @customerSelected=\"onCustomerSelected\" />\r\n            <div v-show=\"isLoading\" class=\"loading\">\r\n              <div class=\"spinner\">\r\n                <loading />\r\n              </div>\r\n            </div>\r\n            <div v-if=\"!isLoading && noResults\" class=\"noresults infocontainer\">\r\n              <div class=\"info warning\">\r\n                <font-awesome-icon icon=\"exclamation-triangle\" />{{ $t('customerSearch.noResults') }}\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"customerSelected\" class=\"row d-lg-none customer-heading\">\r\n          <h4>{{ $t('customerSearch.volunteerMatchTitle') }}</h4>\r\n        </div>\r\n        <div v-if=\"customerSelected\" class=\"row ml-lg-1 customer-summary\">\r\n          <div class=\"col\">\r\n            <CustomerSummaryNet\r\n              :volunteer=\"volunteer\"\r\n              :customer=\"customer\"\r\n              :group=\"group\"\r\n              :score=\"score\"\r\n              :is-first=\"isFirst\"\r\n              :is-last=\"isLast\"\r\n              :is-inappropriate=\"isInappropriate\"\r\n              @prev=\"onPrev\"\r\n              @next=\"onNext\"\r\n              @close=\"onClose\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import VolunteerCardNet from './VolunteerCardNet.vue'\r\n  import CustomerSummaryNet from './CustomerSummaryNet.vue'\r\n  import volunteermatchresults from './VolunteerMatchResults.vue'\r\n  import BackButton from '../BackButton.vue'\r\n  import HomeButton from '../HomeButton.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import datehelper from '@/helpers/datehelper'\r\n  import friendMatch from '@/mixins/friendMatch'\r\n  import customerFilter from './CustomerFilter.vue'\r\n\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n\r\n  import { MatchItemNetCustomerDto, FriendCustomerNetDto, UserProfileDto, FriendManagementDto, CustomerState, GetFriendProfileByFriendVolunteerIdCriteria, FriendshipNetCommandCriteria } from '@/types/index'\r\n  import { MatchFilter, NetMatchPair } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    customerlist: Array<MatchItemNetCustomerDto>,\r\n    filteredcustomers: Array<MatchItemNetCustomerDto>,\r\n    customer: undefined | FriendCustomerNetDto,\r\n    volunteer: undefined | UserProfileDto,\r\n    score: number,\r\n    isLoading: boolean,\r\n    isSending: boolean,\r\n    matchFilter: MatchFilter\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerFindNetMatch',\r\n    components: { VolunteerCardNet, customerFilter, CustomerSummaryNet, volunteermatchresults, BackButton, HomeButton, loading },\r\n    mixins: [friendMatch],\r\n    props: {\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      volunteerid: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        customerlist: [] as Array<MatchItemNetCustomerDto>,\r\n        filteredcustomers: [] as Array<MatchItemNetCustomerDto>,\r\n        customer: undefined,\r\n        volunteer: undefined,\r\n        score: 0,\r\n        isLoading: false,\r\n        isSending: false,\r\n        matchFilter: {\r\n          customerTypes: [],\r\n          languages: [],\r\n          motherTongs: [],\r\n          ages: [],\r\n          hasGroupMembership: false,\r\n          genders: []\r\n        }\r\n      }\r\n    },\r\n    computed: {\r\n      isInactive (): boolean {\r\n        return this.group?.netFriendship\r\n          ? this.volunteer?.friendInfo.netProfile.state === CustomerState.NonActive\r\n          : this.volunteer?.friendInfo.standardProfile.state === CustomerState.NonActive\r\n      },\r\n      noResults (): boolean {\r\n        return this.customerlist === null || this.filteredcustomers.length === 0\r\n      },\r\n      isFirst (): boolean {\r\n        if (this.filteredcustomers.length <= 1) return true\r\n        return this.customer?.id === this.filteredcustomers[0].match.customerProfileNetId\r\n      },\r\n      isLast (): boolean {\r\n        if (this.filteredcustomers.length <= 1) return true\r\n        return this.customer?.id === this.filteredcustomers[this.filteredcustomers.length - 1].match.customerProfileNetId\r\n      },\r\n      isInappropriate (): boolean {\r\n        if (!this.customerSelected) return false\r\n\r\n        var selectedCustomer = this.filteredcustomers.find(x => x.match.customerProfileNetId === this.customer?.id)\r\n        return selectedCustomer ? selectedCustomer.isInappropriateMatch : false\r\n      },\r\n      hasFriendship (): boolean {\r\n        return this.volunteer?.friendInfo.netProfile?.friendships != null && this.volunteer.friendInfo.netProfile.friendships.length > 0\r\n      },\r\n      customerSelected (): boolean {\r\n        return !_.isEmpty(this.customer)\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.getVolunteer()\r\n      this.getCustomers()\r\n      window.scrollTo(0, 0)\r\n\r\n      this.$bus.$on('inappropriate-friendship', this.onInappropriateFriendship)\r\n      this.$bus.$on('end-inappropriate-friendship', this.onEndInappropriateFriendship)\r\n      this.$bus.$on('initiate-friendship', this.onInitiate)\r\n    },\r\n    beforeDestroy (): void {\r\n      this.$bus.$off('inappropriate-friendship')\r\n      this.$bus.$off('end-inappropriate-friendship')\r\n      this.$bus.$off('initiate-friendship')\r\n    },\r\n    methods: {\r\n      getVolunteer (): void {\r\n        var self = this\r\n        var criteria: GetFriendProfileByFriendVolunteerIdCriteria = {\r\n          friendManagementGroupId: this.group.id,\r\n          friendVolunteerId: this.volunteerid,\r\n          includeFriendships: true,\r\n          includeFriendPools: false\r\n        }\r\n        var volunteerUrl = `${this.$store.state.apiBases.friendservice}${this.$store.state.apiEndpoints.volunteergetnetprofilebyid[0]}`\r\n        this.$http.post(volunteerUrl, criteria).then(resp => {\r\n          self.volunteer = resp.data\r\n        })\r\n      },\r\n      getCustomer (customerId: number): void {\r\n        var self = this\r\n        var getCustomerUrl = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customergetnetbyid[0]}`.replace('{customerid}', customerId.toString()).replace('{groupid}', this.group.id.toString())\r\n        this.isLoading = true\r\n        this.$http.get(getCustomerUrl).then(resp => {\r\n          if (resp.data) {\r\n            self.customer = resp.data\r\n            self.isLoading = false\r\n          } else {\r\n            this.displayError(this.$t('common.fetchFailed'))\r\n          }\r\n        }, f => this.displayError(f))\r\n      },\r\n      getCustomers (): void {\r\n        var self = this\r\n        this.isLoading = true\r\n        var customersUrl = `${this.$store.state.apiBases.friendservice}${this.$store.state.apiEndpoints.volunteerfindnetmatch[0]}`\r\n\r\n        customersUrl = customersUrl.replace('{groupid}', this.group.id.toString()).replace('{volunteerid}', this.volunteerid.toString())\r\n        this.$http.get(customersUrl).then(resp => {\r\n          self.customerlist = _.reverse(_.sortBy(resp.data.items, ['score']))\r\n          self.filteredcustomers = self.customerlist\r\n          self.isLoading = false\r\n        })\r\n      },\r\n      onCustomerSelected (match: MatchItemNetCustomerDto): void {\r\n        window.scrollTo(0, 0)\r\n        this.getCustomer(match.match.customerProfileNetId)\r\n        this.score = match.score\r\n      },\r\n      onInitiate (activation: NetMatchPair): void {\r\n        var data: FriendshipNetCommandCriteria = {\r\n          customerProfileNetId: activation.customer.id,\r\n          volunteerNetProfileId: activation.volunteer.friendInfo.netProfile.id,\r\n          groupId: this.group.id\r\n        }\r\n        var url = `${this.$store.state.apiBases.friendservice}${this.$store.state.apiEndpoints.friendshipinitiatenet[0]}`\r\n        this.$http.post(url, data).then(resp => {\r\n          this.$router.push(`/friend/volunteermatch/${this.group.id}/${this.volunteerid}/${activation.customer.id}`)\r\n        }, f => {\r\n          this.displayError(f || this.$t('common.fetchFailed'))\r\n        })\r\n      },\r\n      onPrev (): void {\r\n        var self = this\r\n        var currentCustomer = _.findIndex(self.filteredcustomers, function (item) {\r\n          return item.match.customerProfileNetId === self.customer?.id\r\n        })\r\n\r\n        if (currentCustomer > 0) {\r\n          var id = this.filteredcustomers[currentCustomer - 1].match.customerProfileNetId\r\n          this.getCustomer(id)\r\n          self.score = self.filteredcustomers[currentCustomer - 1].score\r\n        }\r\n      },\r\n      onNext (): void {\r\n        var self = this\r\n        var currentCustomer = _.findIndex(self.filteredcustomers, function (item) {\r\n          return item.match.customerProfileNetId === self.customer?.id\r\n        })\r\n\r\n        if (currentCustomer > -1 && currentCustomer < self.filteredcustomers.length - 1) {\r\n          var id = self.filteredcustomers[currentCustomer + 1].match.customerProfileNetId\r\n          this.getCustomer(id)\r\n          self.score = self.filteredcustomers[currentCustomer + 1].score\r\n        }\r\n      },\r\n      onClose (): void {\r\n        this.customer = undefined\r\n      },\r\n      onInappropriateFriendship (friendshipInfo: NetMatchPair): void {\r\n        var data: FriendshipNetCommandCriteria = {\r\n          customerProfileNetId: friendshipInfo.customer.id,\r\n          volunteerNetProfileId: friendshipInfo.volunteer.friendInfo.netProfile.id,\r\n          groupId: this.group.id\r\n        }\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipmarkinappropriatenet[0]}`\r\n        this.$http.post(url, data).then((resp) => {\r\n          this.customer = undefined\r\n          this.getCustomers()\r\n        }, (f) => {\r\n          // @ts-ignore (Mixins not found)\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        })\r\n      },\r\n      onEndInappropriateFriendship (friendshipInfo: NetMatchPair): void {\r\n        var data: FriendshipNetCommandCriteria = {\r\n          customerProfileNetId: friendshipInfo.customer.id,\r\n          volunteerNetProfileId: friendshipInfo.volunteer.friendInfo.netProfile.id,\r\n          groupId: this.group.id\r\n        }\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipendinappropriatenet[0]}`\r\n        this.isLoading = true\r\n        this.$http.post(url, data).then((resp) => {\r\n          this.customer = undefined\r\n          this.getCustomers()\r\n        }, (f) => {\r\n          // @ts-ignore (Mixins not found)\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        })\r\n      },\r\n      onFilterChanged (val): void {\r\n        var self = this\r\n        this.matchFilter = val\r\n        this.filteredcustomers = this.customerlist.filter(function (customerObject) {\r\n          return (!self.matchFilter.customerTypes?.length || bitmaskhelper.bitmaskToArray(customerObject.match.customerTypes).some(customerType => self.matchFilter.customerTypes?.includes(customerType))) &&\r\n            (!self.matchFilter.languages?.length || customerObject.match.spokenLanguages.some(customerLanguage => self.matchFilter.languages?.includes(customerLanguage))) &&\r\n            (!self.matchFilter.motherTongs?.length || self.matchFilter.motherTongs?.includes(customerObject.match.nativeLanguage)) &&\r\n            (!self.matchFilter.ages?.length || self.matchFilter.ages?.includes(friendMatch.methods.calculateBitmaskFromAge(datehelper.calculateAge(customerObject.match.birthDate))))\r\n        })\r\n      },\r\n      refresh (): void {\r\n        window.location.reload()\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteerfindnetmatch {\r\n    .header {\r\n      margin-top: 10px;\r\n      margin-bottom: 15px;\r\n      .nav-header {\r\n        border-bottom: 0;\r\n      }\r\n      h4 {\r\n        padding-left: 10px;\r\n      }\r\n    }\r\n    .content {\r\n\r\n      .volunteer-area {\r\n        padding-top: 30px;\r\n        background-color: $brand-white;\r\n        border-left: solid 5px $volunteer-color-strong;\r\n      }\r\n\r\n      .customer-area {\r\n        .customer-selection {\r\n          height: 100%;\r\n          .search-filter {\r\n            background-color:$brand-white;\r\n            padding-top: 20px;\r\n          }\r\n          .customer-list {\r\n            h4 {\r\n              margin: 20px 0 10px 0;\r\n            }\r\n            .loading {\r\n              position: absolute;\r\n              display: flex;\r\n              top: 0;\r\n              left: 0;\r\n              bottom: 0;\r\n              right: 0;\r\n              height: 100%;\r\n              width: 100%;\r\n              background-color:rgba(255, 255, 255, 0.8);\r\n              .spinner {\r\n                margin: auto;\r\n                color:$brand-red;\r\n              }\r\n            }\r\n            .infocontainer {\r\n              height: 200px;\r\n              width: 100%;\r\n              background-color:$brand-white;\r\n              display: flex;\r\n              justify-content: center;\r\n              align-items:center;\r\n              align-content: center;\r\n              padding:50px;\r\n              .info {\r\n                margin: auto;\r\n                svg {\r\n                  margin-right: 5px;\r\n                  color:$brand-red;\r\n                  &.warning {\r\n                    color:$brand-warning;\r\n                  }\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n        .customer-heading {\r\n          h4 {\r\n            padding-left: 10px;\r\n          }\r\n        }\r\n        .customer-summary {\r\n          @media (min-width: $media-lg) {\r\n            height: 100%;\r\n          }\r\n        }\r\n      }\r\n\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerFindNetMatch.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerFindNetMatch.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerFindNetMatch.vue?vue&type=template&id=5edfb8da\"\nimport script from \"./VolunteerFindNetMatch.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerFindNetMatch.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerFindNetMatch.vue?vue&type=style&index=0&id=5edfb8da&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.volunteer)?_c('div',{staticClass:\"container volunteerfindstandardmatch\"},[_c('div',{staticClass:\"row header\"},[_c('div',{staticClass:\"col-lg-4 col-xl-4\"},[(_vm.group)?_c('HomeButton',{attrs:{\"group-id\":_vm.group.id}}):_vm._e(),_c('BackButton')],1),(_vm.customerSelected)?_c('div',{staticClass:\"col-lg-8 col-xl-9 d-none d-lg-block\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.volunteerMatchTitle')))])]):_vm._e()]),(_vm.group && _vm.volunteer)?_c('div',{staticClass:\"row content\"},[_c('div',{staticClass:\"col-lg-4 col-xl-3 mb-3 mb-lg-0 volunteer-area\"},[_c('VolunteerCardStandard',{attrs:{\"group\":_vm.group},on:{\"refresh\":_vm.refresh},model:{value:(_vm.volunteer),callback:function ($$v) {_vm.volunteer=$$v},expression:\"volunteer\"}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isSending),expression:\"isSending\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])],1),_c('div',{staticClass:\"col-lg-8 col-xl-9 customer-area\"},[(!_vm.customerSelected)?_c('div',{staticClass:\"row customer-selection\"},[_c('div',{staticClass:\"col-md-4 col-lg-4 order-md-2 search-filter\"},[_c('customerFilter',{attrs:{\"group\":_vm.group,\"filter-type\":'CUSTOMER',\"show-all\":false},on:{\"filterchanged\":_vm.onFilterChanged}})],1),_c('div',{staticClass:\"col-md-8 col-lg-8 order-md-1 customer-list\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.volunteerMatchTitle')))]),_c('volunteermatchresults',{attrs:{\"list\":_vm.filteredcustomers},on:{\"customerSelected\":_vm.onCustomerSelected}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)]),(!_vm.isLoading && _vm.noResults)?_c('div',{staticClass:\"noresults infocontainer\"},[_c('div',{staticClass:\"info warning\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(_vm._s(_vm.$t('customerSearch.noResults'))+\" \")],1)]):_vm._e()],1)]):_vm._e(),(_vm.customerSelected)?_c('div',{staticClass:\"row d-lg-none customer-heading\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.volunteerMatchTitle')))])]):_vm._e(),(_vm.customerSelected)?_c('div',{staticClass:\"row ml-lg-1 customer-summary\"},[_c('div',{staticClass:\"col\"},[_c('CustomerSummaryStandard',{attrs:{\"volunteer\":_vm.volunteer,\"customer\":_vm.customer,\"group\":_vm.group,\"score\":_vm.score,\"is-first\":_vm.isFirst,\"is-last\":_vm.isLast,\"is-inappropriate\":_vm.isInappropriate},on:{\"prev\":_vm.onPrev,\"next\":_vm.onNext,\"close\":_vm.onClose}})],1)]):_vm._e()])]):_vm._e()]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row customersummarystandard\",class:_vm.isInappropriateCss},[_c('div',{staticClass:\"col-md-6 mb-3 mb-md-0 maincolumn\"},[_c('div',{staticClass:\"topsection clearfix\"},[_c('div',{staticClass:\"controls\"},[(!_vm.isFirst)?_c('div',{staticClass:\"prev\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.prev}},[_c('font-awesome-icon',{attrs:{\"icon\":\"chevron-left\"}})],1)]):_vm._e(),(!_vm.isLast)?_c('div',{staticClass:\"next\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.next}},[_c('font-awesome-icon',{attrs:{\"icon\":\"chevron-right\"}})],1)]):_vm._e()])]),_c('CustomerCardStandard',{attrs:{\"group\":_vm.group,\"show-matches\":true,\"show-actions\":false,\"show-edit-button\":true,\"matches\":_vm.matchData},on:{\"refresh\":_vm.refresh},model:{value:(_vm.customer),callback:function ($$v) {_vm.customer=$$v},expression:\"customer\"}})],1),_c('div',{staticClass:\"col-md-6 sidecolumn\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col controls\"},[_c('div',{staticClass:\"back\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$t('customerSearch.close')))])])])]),_c('volunteermatchstandardconfirm',{attrs:{\"volunteer\":_vm.volunteer,\"customer\":_vm.customer,\"is-inappropriate\":_vm.isInappropriate,\"score\":_vm.score}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"volunteermatchstandardconfirm\"},[(_vm.isInappropriate)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col maintitle\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('customerSearch.inappropriate')))])])]),_c('div',{staticClass:\"row instructions\"},[_c('div',{staticClass:\"col instructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.inappropriateInstructions'))+\" \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col buttons\"},[_c('sprbutton',{staticClass:\"end-inappropriate-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.endInappropriate'),\"click-event\":\"endinappropriate\"},on:{\"endinappropriate\":_vm.onEndInappropriate}})],1)])]):_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col maintitle\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('customerSearch.matchConfirmTitle')))])])]),_c('div',{staticClass:\"row starscore\"},[_c('div',{staticClass:\"col-12\"},[_c('stars',{attrs:{\"score\":_vm.score}})],1)]),_c('div',{staticClass:\"row instructions\"},[_c('div',{staticClass:\"col instructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('customerSearch.createMatchInstructions'))+\" \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col buttons\"},[_c('sprbutton',{staticClass:\"suggest-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.suggestButton'),\"click-event\":\"suggest\",\"disabled\":!_vm.isActive},on:{\"suggest\":_vm.suggest}})],1)]),(!_vm.showInappropriate)?_c('div',{staticClass:\"row inappropriate\"},[_c('div',{staticClass:\"col-12\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.markInappropriate}},[_vm._v(_vm._s(_vm.$t('customerSearch.markInnapropriateButton')))])])]):_vm._e(),(_vm.showInappropriate)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"inappropriate-instructions\"},[_vm._v(_vm._s(_vm.$t('customerSearch.markInapproprateInstructions')))])]),_c('div',{staticClass:\"col-6\"},[_c('a',{staticClass:\"cancel-inappropriate\",attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.cancelInappropriate}},[_vm._v(_vm._s(_vm.$t('customerSearch.cancelInappropriateButton')))])]),_c('div',{staticClass:\"col-6\"},[_c('sprbutton',{staticClass:\"confirm-inappropriate-button\",attrs:{\"size\":4,\"title\":_vm.$t('customerSearch.confirmInappropriateButton'),\"click-event\":\"confirmInappropriate\"},on:{\"confirmInappropriate\":_vm.confirmInappropriate}})],1)]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"volunteermatchstandardconfirm\">\r\n    <div v-if=\"isInappropriate\">\r\n      <div class=\"row\">\r\n        <div class=\"col maintitle\">\r\n          <span class=\"title\">{{ $t('customerSearch.inappropriate') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row instructions\">\r\n        <div class=\"col instructions\">\r\n          {{ $t('customerSearch.inappropriateInstructions') }}\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col buttons\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.endInappropriate')\"\r\n                     click-event=\"endinappropriate\"\r\n                     class=\"end-inappropriate-button\"\r\n                     @endinappropriate=\"onEndInappropriate\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <!-- Not inappropriate match -->\r\n    <div v-else>\r\n      <div class=\"row\">\r\n        <div class=\"col maintitle\">\r\n          <span class=\"title\">{{ $t('customerSearch.matchConfirmTitle') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row starscore\">\r\n        <div class=\"col-12\">\r\n          <stars :score=\"score\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row instructions\">\r\n        <div class=\"col instructions\">\r\n          {{ $t('customerSearch.createMatchInstructions') }}\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col buttons\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.suggestButton')\"\r\n                     click-event=\"suggest\"\r\n                     class=\"suggest-button\"\r\n                     :disabled=\"!isActive\"\r\n                     @suggest=\"suggest\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"!showInappropriate\" class=\"row inappropriate\">\r\n        <div class=\"col-12\">\r\n          <a href=\"javascript:void(0)\" @click=\"markInappropriate\">{{ $t('customerSearch.markInnapropriateButton') }}</a>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"showInappropriate\" class=\"row\">\r\n        <div class=\"col-12\">\r\n          <span class=\"inappropriate-instructions\">{{ $t('customerSearch.markInapproprateInstructions') }}</span>\r\n        </div>\r\n        <div class=\"col-6\">\r\n          <a href=\"javascript:void(0)\" class=\"cancel-inappropriate\" @click=\"cancelInappropriate\">{{ $t('customerSearch.cancelInappropriateButton') }}</a>\r\n        </div>\r\n        <div class=\"col-6\">\r\n          <sprbutton :size=\"4\"\r\n                     :title=\"$t('customerSearch.confirmInappropriateButton')\"\r\n                     click-event=\"confirmInappropriate\"\r\n                     class=\"confirm-inappropriate-button\"\r\n                     @confirmInappropriate=\"confirmInappropriate\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import stars from '../SPRStars.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import { UserProfileDto, FriendCustomerStandardDto, CustomerState } from '@/types/index'\r\n  import { StandardMatchPair } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    suggestionMessage: string | LocaleMessage,\r\n    showInappropriate: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerMatchStandardConfirm',\r\n    components: { stars, sprbutton },\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto,\r\n        required: true\r\n      },\r\n      volunteer: {\r\n        type: Object as () => UserProfileDto,\r\n        required: true\r\n      },\r\n      score: {\r\n        type: Number,\r\n        required: true\r\n      },\r\n      isInappropriate: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        suggestionMessage: this.$t('customerSearch.suggestionMessage'),\r\n        showInappropriate: false\r\n      }\r\n    },\r\n    computed: {\r\n      isActive (): boolean {\r\n        return (this.volunteer.friendInfo && _.includes([CustomerState.Active, CustomerState.PendingFriend, CustomerState.ActiveFriendship], this.volunteer.friendInfo.standardProfile.state)) &&\r\n          (_.includes([CustomerState.Active, CustomerState.PendingFriend, CustomerState.ActiveFriendship], this.customer.state))\r\n      }\r\n    },\r\n    methods: {\r\n      suggest (): void {\r\n        this.$bus.$emit('initiate-friendship', { volunteer: this.volunteer, customer: this.customer, message: this.suggestionMessage } as StandardMatchPair)\r\n      },\r\n      markInappropriate (): void {\r\n        this.showInappropriate = true\r\n      },\r\n      confirmInappropriate (): void {\r\n        this.$bus.$emit('inappropriate-friendship', { volunteer: this.volunteer, customer: this.customer } as StandardMatchPair)\r\n      },\r\n      cancelInappropriate (): void {\r\n        this.showInappropriate = false\r\n      },\r\n      onEndInappropriate (): void {\r\n        this.$bus.$emit('end-inappropriate-friendship', { volunteer: this.volunteer, customer: this.customer } as StandardMatchPair)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .volunteermatchstandardconfirm {\r\n    text-align: center;\r\n\r\n    .maintitle {\r\n      margin: 30px 0 20px 0;\r\n    }\r\n\r\n    .title {\r\n      text-transform: uppercase;\r\n      color:$brand-red;\r\n      font-weight: bold;\r\n      display:block;\r\n    }\r\n\r\n    .starscore {\r\n      margin-top:50px;\r\n      margin-bottom: 50px;\r\n    }\r\n\r\n    .instructions {\r\n      margin-bottom: 20px;\r\n      font-size: 13px;\r\n    }\r\n\r\n    .buttons {\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .inappropriate,\r\n    .cancel {\r\n      margin-bottom: 50px;\r\n      a {\r\n        color:$brand-red;\r\n      }\r\n    }\r\n\r\n    .cancel-inappropriate {\r\n      display: flex;\r\n      height: 100%;\r\n      align-items: center;\r\n    }\r\n\r\n    .inappropriate-instructions {\r\n      margin-bottom:30px;\r\n      display:block;\r\n      font-size: 13px;\r\n    }\r\n\r\n    .message {\r\n      width: 100%;\r\n      margin-bottom:30px;\r\n\r\n      textarea {\r\n        width: 100%;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchStandardConfirm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchStandardConfirm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerMatchStandardConfirm.vue?vue&type=template&id=19ae3e6b\"\nimport script from \"./VolunteerMatchStandardConfirm.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerMatchStandardConfirm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerMatchStandardConfirm.vue?vue&type=style&index=0&id=19ae3e6b&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"row customersummarystandard\" :class=\"isInappropriateCss\">\r\n    <div class=\"col-md-6 mb-3 mb-md-0 maincolumn\">\r\n      <div class=\"topsection clearfix\">\r\n        <div class=\"controls\">\r\n          <div v-if=\"!isFirst\" class=\"prev\">\r\n            <a href=\"javascript:void(0)\" @click=\"prev\"><font-awesome-icon icon=\"chevron-left\" /></a>\r\n          </div>\r\n          <div v-if=\"!isLast\" class=\"next\">\r\n            <a href=\"javascript:void(0)\" @click=\"next\"><font-awesome-icon icon=\"chevron-right\" /></a>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <CustomerCardStandard\r\n        v-model=\"customer\"\r\n        :group=\"group\"\r\n        :show-matches=\"true\"\r\n        :show-actions=\"false\"\r\n        :show-edit-button=\"true\"\r\n        :matches=\"matchData\"\r\n        @refresh=\"refresh\"\r\n      />\r\n    </div>\r\n    <div class=\"col-md-6 sidecolumn\">\r\n      <div class=\"row\">\r\n        <div class=\"col controls\">\r\n          <div class=\"back\">\r\n            <a href=\"javascript:void(0)\" @click=\"close\">{{ $t('customerSearch.close') }}</a>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <volunteermatchstandardconfirm :volunteer=\"volunteer\" :customer=\"customer\" :is-inappropriate=\"isInappropriate\" :score=\"score\" />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import volunteermatchstandardconfirm from './VolunteerMatchStandardConfirm.vue'\r\n  import CustomerCardStandard from './CustomerCardStandard.vue'\r\n\r\n  import datehelper from '../../mixins/dates.js'\r\n  import googlemaps from '../../mixins/googlemaps.js'\r\n  import friendMatch from '../../mixins/friendMatch'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n  import addresshelper from '@/helpers/addresshelper'\r\n  import locationhelper from '../../mixins/locationutils.js'\r\n  import { LanguageDto, UserProfileDto, FriendCustomerStandardDto, FriendManagementDto, PreferredGenders, Gender, CustomerState } from '@/types/index'\r\n  import { TravelData, MatchData, YesNoWarning } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    unsub: undefined | Function,\r\n    travelData: TravelData\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerSummaryStandard',\r\n    components: { volunteermatchstandardconfirm, CustomerCardStandard },\r\n    mixins: [datehelper,\r\n             googlemaps,\r\n             locationhelper,\r\n             friendMatch],\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto,\r\n        required: true\r\n      },\r\n      isFirst: Boolean,\r\n      isLast: Boolean,\r\n      volunteer: {\r\n        type: Object as () => UserProfileDto,\r\n        required: true\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      isInappropriate: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      score: {\r\n        type: Number,\r\n        default: null\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        travelData: {\r\n          travelDistanceTime: this.$t('customerSearch.calculatingDistance').toString(),\r\n          isMatch: false,\r\n          isRealDistance: false\r\n        },\r\n        unsub: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      isInappropriateCss (): string {\r\n        return this.isInappropriate ? 'inappropriate' : ''\r\n      },\r\n      availabilityTimesMatch (): boolean {\r\n        return friendMatch.methods.matchAvailabilityTimes(this.volunteer.friendInfo.standardProfile.availabilityTimes, this.customer.availabilityTimes)\r\n      },\r\n      availabilityFrequencyMatch (): boolean {\r\n        return friendMatch.methods.matchAvailabilityFrequency(this.volunteer.friendInfo.standardProfile.availabilityFrequence, this.customer.availabilityFrequency)\r\n      },\r\n      genderPreferenceMatch (): YesNoWarning {\r\n        if (this.volunteer.friendInfo.standardProfile.preferredGenders === Number(PreferredGenders.Male | PreferredGenders.Female)) { // male or female\r\n          if (this.customer.gender === Gender.Other) { // other or undefined\r\n            return YesNoWarning.Warning\r\n          }\r\n        }\r\n        return YesNoWarning.Yes // back end calculates it, always return true\r\n      },\r\n      ageMatch (): boolean {\r\n        return friendMatch.methods.ageMatchFriend(this.customer.birthdate, this.volunteer.friendInfo.standardProfile.preferredAges, this.volunteer.age, this.customer.preferredAges)\r\n      },\r\n      interestMatch (): boolean {\r\n        return this.interestCount > 0\r\n      },\r\n      interestCount (): number {\r\n        return _.intersection(\r\n          bitmaskhelper.bitmaskToArray(this.volunteer.friendInfo.standardProfile.interests),\r\n          bitmaskhelper.bitmaskToArray(this.customer.interests)).length\r\n      },\r\n      languageMatch (): boolean {\r\n        // Combine both spoken languages and native language and check for any matches\r\n        var volunteerLanguages = this.volunteer.spokenLanguages\r\n\r\n        // if volunteerLanguages doesn't include the native language yet, add it:\r\n        if (this.volunteer.nativeLanguage !== 'none' && !_.includes(volunteerLanguages, this.volunteer.nativeLanguage)) {\r\n          volunteerLanguages.push(this.volunteer.nativeLanguage)\r\n        }\r\n\r\n        var customerLanguages = this.customer.customerLanguages.map((x: LanguageDto) => x.isoCode)\r\n\r\n        // if customerLanguages doesn't include the native language yet, add it:\r\n        if (this.customer.nativeLanguage !== 'none' && !_.includes(customerLanguages, this.customer.nativeLanguage)) {\r\n          customerLanguages.push(this.customer.nativeLanguage)\r\n        }\r\n\r\n        // Now see if any of the languages in customerLanguages exists in the vulunteerLanguages.\r\n        return volunteerLanguages.some(language => customerLanguages.includes(language))\r\n      },\r\n      volunteerAddress (): string {\r\n        if (this.volunteer.friendInfo.standardProfile.hasAlternativeAddress) {\r\n          return addresshelper.formatAddress(this.volunteer.friendInfo.standardProfile.alternativeStreet, this.volunteer.friendInfo.standardProfile.alternativeZipCode, this.volunteer.friendInfo.standardProfile.alternativeCity)\r\n        } else {\r\n          return addresshelper.formatAddress(this.volunteer.streetAddress, this.volunteer.zipCode, this.volunteer.city)\r\n        }\r\n      },\r\n      customerAddress (): string {\r\n        return addresshelper.formatAddress(this.customer.streetAddress, this.customer.zipCode, this.customer.city)\r\n      },\r\n      volunteerTransportation (): number | undefined {\r\n        var self = this\r\n        var fastest = [1,\r\n                       2,\r\n                       4,\r\n                       3]\r\n        return _.find(fastest, (item) => {\r\n          return _.includes(self.volunteer.transportation, item)\r\n        })\r\n      },\r\n      matchData (): MatchData {\r\n        return {\r\n          travelData: this.travelData,\r\n          availabilityTimesMatch: this.availabilityTimesMatch,\r\n          availabilityFrequencyMatch: this.availabilityFrequencyMatch,\r\n          genderMatch: this.genderPreferenceMatch,\r\n          ageMatch: this.ageMatch,\r\n          languageMatch: this.languageMatch,\r\n          interestMatch: this.interestMatch\r\n        }\r\n      }\r\n    },\r\n    watch: {\r\n      customer () {\r\n        // re-initialize travel data\r\n        this.travelData = {\r\n          travelDistanceTime: this.$t('customerSearch.calculatingDistance').toString(),\r\n          isMatch: false,\r\n          isRealDistance: false\r\n        }\r\n        this.getTravelData()\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.getTravelData()\r\n\r\n      this.unsub = this.$store.subscribe((mutation, state) => {\r\n        switch (mutation.type) {\r\n        case 'setLanguage':\r\n          this.getTravelData()\r\n          break\r\n        }\r\n      })\r\n    },\r\n    beforeDestroy () {\r\n      if (this.unsub) {\r\n        this.unsub()\r\n      }\r\n    },\r\n    methods: {\r\n      prev (): void {\r\n        this.$emit('prev')\r\n      },\r\n      next (): void {\r\n        this.$emit('next')\r\n      },\r\n      close (): void {\r\n        this.$emit('close')\r\n      },\r\n      getTravelData (): void {\r\n        var self = this\r\n        // @ts-ignore (Mixins not found)\r\n        this.getTravelDistanceTime(this.volunteerAddress, this.customerAddress, this.volunteerTransportation).then(resp => {\r\n          this.travelData = {\r\n            travelDistanceTime: `${self.$t('customerSearch.travelFromVolunteer')}: ${resp.text}`,\r\n            isMatch: resp.minutes <= parseInt(self.volunteer.travelTime),\r\n            isRealDistance: resp.isRealDistance\r\n          }\r\n        }, () => {\r\n          this.travelData = {\r\n            travelDistanceTime: self.$t('customerSearch.distanceCalculationFailed').toString(),\r\n            isMatch: false,\r\n            isRealDistance: false\r\n          }\r\n        })\r\n      },\r\n      refresh (): void {\r\n        window.location.reload()\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .customersummarystandard {\r\n    height: 100%;\r\n    .maincolumn {\r\n      background-color: $brand-white;\r\n      border-left: solid 5px $customer-color-strong;\r\n      padding-bottom: 15px;\r\n\r\n      @media (min-width: $media-md) {\r\n        border-right: solid 1px $brand-grey3;\r\n      }\r\n\r\n      .topsection {\r\n        margin-top: 30px;\r\n        .controls {\r\n          a {\r\n            color:$brand-red;\r\n            cursor: pointer;\r\n          }\r\n          .prev {\r\n            font-size:22px;\r\n            position: absolute;\r\n            top: 15px;\r\n            left: 15px;\r\n          }\r\n          .next {\r\n            font-size:22px;\r\n            position: absolute;\r\n            top: 15px;\r\n            right: 15px;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    .sidecolumn {\r\n      background-color: $brand-white;\r\n      .controls {\r\n        a {\r\n          color:$brand-red;\r\n          cursor: pointer;\r\n        }\r\n        .back {\r\n          position: absolute;\r\n          right:20px;\r\n          top: 15px;\r\n        }\r\n      }\r\n    }\r\n\r\n    &.inappropriate {\r\n      .maincolumn {\r\n        color: $brand-grey8;\r\n        background-color: $brand-grey3;\r\n\r\n        .icon, .match {\r\n          svg {\r\n            color: $brand-grey6;\r\n          }\r\n        }\r\n        .friendicon {\r\n          background-color: $brand-grey6;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerSummaryStandard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerSummaryStandard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerSummaryStandard.vue?vue&type=template&id=3ceb9a9a\"\nimport script from \"./CustomerSummaryStandard.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerSummaryStandard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerSummaryStandard.vue?vue&type=style&index=0&id=3ceb9a9a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"volunteer\" class=\"container volunteerfindstandardmatch\">\r\n    <div class=\"row header\">\r\n      <div class=\"col-lg-4 col-xl-4\">\r\n        <HomeButton\r\n          v-if=\"group\"\r\n          :group-id=\"group.id\"\r\n        />\r\n        <BackButton />\r\n      </div>\r\n      <div v-if=\"customerSelected\" class=\"col-lg-8 col-xl-9 d-none d-lg-block\">\r\n        <h4>{{ $t('customerSearch.volunteerMatchTitle') }}</h4>\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"group && volunteer\" class=\"row content\">\r\n      <div class=\"col-lg-4 col-xl-3 mb-3 mb-lg-0 volunteer-area\">\r\n        <VolunteerCardStandard\r\n          v-model=\"volunteer\"\r\n          :group=\"group\"\r\n          @refresh=\"refresh\"\r\n        />\r\n        <div v-show=\"isSending\" class=\"loading\">\r\n          <div class=\"spinner\">\r\n            <loading />\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-lg-8 col-xl-9 customer-area\">\r\n        <div v-if=\"!customerSelected\" class=\"row customer-selection\">\r\n          <div class=\"col-md-4 col-lg-4 order-md-2 search-filter\">\r\n            <!--<matchfilter v-model=\"matchFilter\" :is-net=\"group.netFriendship\" @filterchanged=\"onFilterChanged\" />-->\r\n            <customerFilter\r\n              :group=\"group\"\r\n              :filter-type=\"'CUSTOMER'\"\r\n              :show-all=\"false\"\r\n              @filterchanged=\"onFilterChanged\"\r\n            />\r\n          </div>\r\n\r\n          <div class=\"col-md-8 col-lg-8 order-md-1 customer-list\">\r\n            <h4>{{ $t('customerSearch.volunteerMatchTitle') }}</h4>\r\n            <volunteermatchresults :list=\"filteredcustomers\" @customerSelected=\"onCustomerSelected\" />\r\n            <div v-show=\"isLoading\" class=\"loading\">\r\n              <div class=\"spinner\">\r\n                <loading />\r\n              </div>\r\n            </div>\r\n            <div v-if=\"!isLoading && noResults\" class=\"noresults infocontainer\">\r\n              <div class=\"info warning\">\r\n                <font-awesome-icon icon=\"exclamation-triangle\" />{{ $t('customerSearch.noResults') }}\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"customerSelected\" class=\"row d-lg-none customer-heading\">\r\n          <h4>{{ $t('customerSearch.volunteerMatchTitle') }}</h4>\r\n        </div>\r\n        <div v-if=\"customerSelected\" class=\"row ml-lg-1 customer-summary\">\r\n          <div class=\"col\">\r\n            <CustomerSummaryStandard\r\n              :volunteer=\"volunteer\"\r\n              :customer=\"customer\"\r\n              :group=\"group\"\r\n              :score=\"score\"\r\n              :is-first=\"isFirst\"\r\n              :is-last=\"isLast\"\r\n              :is-inappropriate=\"isInappropriate\"\r\n              @prev=\"onPrev\"\r\n              @next=\"onNext\"\r\n              @close=\"onClose\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import VolunteerCardStandard from './VolunteerCardStandard.vue'\r\n  import CustomerSummaryStandard from './CustomerSummaryStandard.vue'\r\n  import volunteermatchresults from './VolunteerMatchResults.vue'\r\n  import BackButton from '../BackButton.vue'\r\n  import HomeButton from '../HomeButton.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import datehelper from '@/helpers/datehelper'\r\n  import friendMatch from '@/mixins/friendMatch'\r\n  import customerFilter from './CustomerFilter.vue'\r\n\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n\r\n  import { MatchItemStandardCustomerDto, FriendCustomerStandardDto, UserProfileDto, FriendManagementDto, CustomerState, LanguageDto, FriendshipStandardCommandCriteria, GetFriendProfileByFriendVolunteerIdCriteria } from '@/types/index'\r\n  import { MatchFilter, StandardMatchPair } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    customerlist: Array<MatchItemStandardCustomerDto>,\r\n    filteredcustomers: Array<MatchItemStandardCustomerDto>,\r\n    customer: undefined | FriendCustomerStandardDto,\r\n    volunteer: undefined | UserProfileDto,\r\n    score: number,\r\n    isLoading: boolean,\r\n    isSending: boolean,\r\n    matchFilter: MatchFilter\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerFindStandardMatch',\r\n    components: { VolunteerCardStandard, customerFilter, CustomerSummaryStandard, volunteermatchresults, BackButton, HomeButton, loading },\r\n    mixins: [friendMatch],\r\n    props: {\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      volunteerid: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        customerlist: [] as Array<MatchItemStandardCustomerDto>,\r\n        filteredcustomers: [] as Array<MatchItemStandardCustomerDto>,\r\n        customer: undefined,\r\n        volunteer: undefined,\r\n        score: 0,\r\n        isLoading: false,\r\n        isSending: false,\r\n        matchFilter: {\r\n          customerTypes: [],\r\n          languages: [],\r\n          motherTongs: [],\r\n          ages: [],\r\n          hasGroupMembership: false,\r\n          genders: []\r\n        }\r\n      }\r\n    },\r\n    computed: {\r\n      isInactive (): boolean {\r\n        return this.group?.netFriendship\r\n          ? this.volunteer?.friendInfo.netProfile.state === CustomerState.NonActive\r\n          : this.volunteer?.friendInfo.standardProfile.state === CustomerState.NonActive\r\n      },\r\n      noResults (): boolean {\r\n        return this.customerlist === null || this.filteredcustomers.length === 0\r\n      },\r\n      isFirst (): boolean {\r\n        if (this.filteredcustomers.length <= 1) return true\r\n        return this.customer?.id === this.filteredcustomers[0].match.customerProfileStandardId\r\n      },\r\n      isLast (): boolean {\r\n        if (this.filteredcustomers.length <= 1) return true\r\n        return this.customer?.id === this.filteredcustomers[this.filteredcustomers.length - 1].match.customerProfileStandardId\r\n      },\r\n      isInappropriate (): boolean {\r\n        if (!this.customerSelected) return false\r\n\r\n        var selectedCustomer = this.filteredcustomers.find(x => x.match.customerProfileStandardId === this.customer?.id)\r\n        return selectedCustomer ? selectedCustomer.isInappropriateMatch : false\r\n      },\r\n      hasFriendship (): boolean {\r\n        return this.volunteer?.friendInfo.standardProfile?.friendships != null && this.volunteer.friendInfo.standardProfile.friendships.length > 0\r\n      },\r\n      customerSelected (): boolean {\r\n        return !_.isEmpty(this.customer)\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.getVolunteer()\r\n      this.getCustomers()\r\n      window.scrollTo(0, 0)\r\n\r\n      this.$bus.$on('inappropriate-friendship', this.onInappropriateFriendship)\r\n      this.$bus.$on('end-inappropriate-friendship', this.onEndInappropriateFriendship)\r\n      this.$bus.$on('initiate-friendship', this.onInitiate)\r\n    },\r\n    beforeDestroy (): void {\r\n      this.$bus.$off('inappropriate-friendship')\r\n      this.$bus.$off('end-inappropriate-friendship')\r\n      this.$bus.$off('initiate-friendship')\r\n    },\r\n    methods: {\r\n      getVolunteer (): void {\r\n        var self = this\r\n        var criteria: GetFriendProfileByFriendVolunteerIdCriteria = {\r\n          friendManagementGroupId: this.group.id,\r\n          friendVolunteerId: this.volunteerid,\r\n          includeFriendships: true,\r\n          includeFriendPools: false\r\n        }\r\n        var volunteerUrl = `${this.$store.state.apiBases.friendservice}${this.$store.state.apiEndpoints.volunteergetstandardprofilebyid[0]}`\r\n        this.$http.post(volunteerUrl, criteria).then(resp => {\r\n          self.volunteer = resp.data\r\n        })\r\n      },\r\n      getCustomer (customerId: number): void {\r\n        var self = this\r\n        var getCustomerUrl = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customergetstandardbyid[0]}`.replace('{customerid}', customerId.toString()).replace('{groupid}', this.group.id.toString())\r\n        this.isLoading = true\r\n        this.$http.get(getCustomerUrl).then(resp => {\r\n          if (resp.data) {\r\n            self.customer = resp.data\r\n            self.isLoading = false\r\n          } else {\r\n            this.displayError(this.$t('common.fetchFailed'))\r\n          }\r\n        }, f => this.displayError(f))\r\n      },\r\n      getCustomers (): void {\r\n        var self = this\r\n        this.isLoading = true\r\n        var customersUrl = `${this.$store.state.apiBases.friendservice}${this.$store.state.apiEndpoints.volunteerfindstandardmatch[0]}`\r\n\r\n        customersUrl = customersUrl.replace('{groupid}', this.group.id.toString()).replace('{volunteerid}', this.volunteerid.toString())\r\n        this.$http.get(customersUrl).then(resp => {\r\n          self.customerlist = _.reverse(_.sortBy(resp.data.items, ['score']))\r\n          self.filteredcustomers = self.customerlist\r\n          self.isLoading = false\r\n        })\r\n      },\r\n      onCustomerSelected (match: MatchItemStandardCustomerDto): void {\r\n        window.scrollTo(0, 0)\r\n        this.getCustomer(match.match.customerProfileStandardId)\r\n        this.score = match.score\r\n      },\r\n      onInitiate (activation: StandardMatchPair): void {\r\n        var data: FriendshipStandardCommandCriteria = {\r\n          customerProfileStandardId: activation.customer.id,\r\n          volunteerStandardProfileId: activation.volunteer.friendInfo.standardProfile.id,\r\n          groupId: this.group.id\r\n        }\r\n        var url = `${this.$store.state.apiBases.friendservice}${this.$store.state.apiEndpoints.friendshipinitiatestandard[0]}`\r\n        this.$http.post(url, data).then(resp => {\r\n          this.$router.push(`/friend/volunteermatch/${this.group.id}/${this.volunteerid}/${activation.customer.id}`)\r\n        }, f => {\r\n          this.displayError(f || this.$t('common.fetchFailed'))\r\n        })\r\n      },\r\n      onPrev (): void {\r\n        var self = this\r\n        var currentCustomer = _.findIndex(self.filteredcustomers, function (item) {\r\n          return item.match.customerProfileStandardId === self.customer?.id\r\n        })\r\n\r\n        if (currentCustomer > 0) {\r\n          var id = this.filteredcustomers[currentCustomer - 1].match.customerProfileStandardId\r\n          this.getCustomer(id)\r\n          self.score = self.filteredcustomers[currentCustomer - 1].score\r\n        }\r\n      },\r\n      onNext (): void {\r\n        var self = this\r\n        var currentCustomer = _.findIndex(self.filteredcustomers, function (item) {\r\n          return item.match.customerProfileStandardId === self.customer?.id\r\n        })\r\n\r\n        if (currentCustomer > -1 && currentCustomer < self.filteredcustomers.length - 1) {\r\n          var id = self.filteredcustomers[currentCustomer + 1].match.customerProfileStandardId\r\n          this.getCustomer(id)\r\n          self.score = self.filteredcustomers[currentCustomer + 1].score\r\n        }\r\n      },\r\n      onClose (): void {\r\n        this.customer = undefined\r\n      },\r\n      onInappropriateFriendship (friendshipInfo: StandardMatchPair): void {\r\n        var data: FriendshipStandardCommandCriteria = {\r\n          customerProfileStandardId: friendshipInfo.customer.id,\r\n          volunteerStandardProfileId: friendshipInfo.volunteer.friendInfo.standardProfile.id,\r\n          groupId: this.group.id\r\n        }\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipmarkinappropriatestandard[0]}`\r\n        this.$http.post(url, data).then((resp) => {\r\n          this.customer = undefined\r\n          this.getCustomers()\r\n        }, (f) => {\r\n          // @ts-ignore (Mixins not found)\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        })\r\n      },\r\n      onEndInappropriateFriendship (friendshipInfo: StandardMatchPair): void {\r\n        var data: FriendshipStandardCommandCriteria = {\r\n          customerProfileStandardId: friendshipInfo.customer.id,\r\n          volunteerStandardProfileId: friendshipInfo.volunteer.friendInfo.standardProfile.id,\r\n          groupId: this.group.id\r\n        }\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipendinappropriatestandard[0]}`\r\n        this.isLoading = true\r\n        this.$http.post(url, data).then((resp) => {\r\n          this.customer = undefined\r\n          this.getCustomers()\r\n        }, (f) => {\r\n          // @ts-ignore (Mixins not found)\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        })\r\n      },\r\n      onFilterChanged (val): void {\r\n        var self = this\r\n        this.matchFilter = val\r\n        this.filteredcustomers = this.customerlist.filter(function (customerObject) {\r\n          return (!self.matchFilter.customerTypes?.length || bitmaskhelper.bitmaskToArray(customerObject.match.customerTypes).some(customerType => self.matchFilter.customerTypes?.includes(customerType))) &&\r\n            (!self.matchFilter.languages?.length || customerObject.match.spokenLanguages.some(customerLanguage => self.matchFilter.languages?.includes(customerLanguage))) &&\r\n            (!self.matchFilter.motherTongs?.length || self.matchFilter.motherTongs?.includes(customerObject.match.nativeLanguage)) &&\r\n            (!self.matchFilter.ages?.length || self.matchFilter.ages?.includes(friendMatch.methods.calculateBitmaskFromAge(datehelper.calculateAge(customerObject.match.birthDate))))\r\n        })\r\n      },\r\n      refresh (): void {\r\n        window.location.reload()\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteerfindstandardmatch {\r\n    .header {\r\n      margin-top: 10px;\r\n      margin-bottom: 15px;\r\n      .nav-header {\r\n        border-bottom: 0;\r\n      }\r\n      h4 {\r\n        padding-left: 10px;\r\n      }\r\n    }\r\n    .content {\r\n\r\n      .volunteer-area {\r\n        padding-top: 30px;\r\n        background-color: $brand-white;\r\n        border-left: solid 5px $volunteer-color-strong;\r\n      }\r\n\r\n      .customer-area {\r\n        .customer-selection {\r\n          height: 100%;\r\n          .search-filter {\r\n            background-color:$brand-white;\r\n            padding-top: 20px;\r\n          }\r\n          .customer-list {\r\n            h4 {\r\n              margin: 20px 0 10px 0;\r\n            }\r\n            .loading {\r\n              position: absolute;\r\n              display: flex;\r\n              top: 0;\r\n              left: 0;\r\n              bottom: 0;\r\n              right: 0;\r\n              height: 100%;\r\n              width: 100%;\r\n              background-color:rgba(255, 255, 255, 0.8);\r\n              .spinner {\r\n                margin: auto;\r\n                color:$brand-red;\r\n              }\r\n            }\r\n            .infocontainer {\r\n              height: 200px;\r\n              width: 100%;\r\n              background-color:$brand-white;\r\n              display: flex;\r\n              justify-content: center;\r\n              align-items:center;\r\n              align-content: center;\r\n              padding:50px;\r\n              .info {\r\n                margin: auto;\r\n                svg {\r\n                  margin-right: 5px;\r\n                  color:$brand-red;\r\n                  &.warning {\r\n                    color:$brand-warning;\r\n                  }\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n        .customer-heading {\r\n          h4 {\r\n            padding-left: 10px;\r\n          }\r\n        }\r\n        .customer-summary {\r\n          @media (min-width: $media-lg) {\r\n            height: 100%;\r\n          }\r\n        }\r\n      }\r\n\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerFindStandardMatch.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerFindStandardMatch.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerFindStandardMatch.vue?vue&type=template&id=5c4699ae\"\nimport script from \"./VolunteerFindStandardMatch.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerFindStandardMatch.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerFindStandardMatch.vue?vue&type=style&index=0&id=5c4699ae&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"group\" class=\"container volunteerfindmatch\">\r\n    <volunteer-find-net-match\r\n      v-if=\"group.netFriendship\"\r\n      :group=\"group\"\r\n      :volunteerid=\"volunteerIdNumber\"\r\n    />\r\n    <volunteer-find-standard-match\r\n      v-else\r\n      :group=\"group\"\r\n      :volunteerid=\"volunteerIdNumber\"\r\n    />\r\n    <div v-show=\"isLoading\" class=\"loading\">\r\n      <div class=\"spinner\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n  import loading from '../SPRLoading.vue'\r\n  import VolunteerFindNetMatch from './VolunteerFindNetMatch.vue'\r\n  import VolunteerFindStandardMatch from './VolunteerFindStandardMatch.vue'\r\n  import { UserProfileDto, FriendManagementDto } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    group: undefined | FriendManagementDto,\r\n    isLoading: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerFindMatch',\r\n    components: { VolunteerFindNetMatch, VolunteerFindStandardMatch, loading },\r\n    props: {\r\n      groupid: {\r\n        type: String,\r\n        required: true\r\n      },\r\n      volunteerid: {\r\n        type: String,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        group: undefined,\r\n        isLoading: false\r\n      }\r\n    },\r\n    computed: {\r\n      volunteerIdNumber (): number {\r\n        return Number(this.volunteerid)\r\n      }\r\n    },\r\n    created (): void {\r\n      this.isLoading = true\r\n      this.getGroup().then(response => {\r\n        this.group = response.data\r\n        this.isLoading = false\r\n      }, f => {\r\n        // @ts-ignore (cannot find mixins)\r\n        this.showAlertPermissionDenied()\r\n      })\r\n    },\r\n    methods: {\r\n      getGroup (): PromiseLike<HttpResponse> {\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationById[0].replace('{0}', this.groupid)\r\n        return this.$http.get(url)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteerfindmatch {\r\n    .loading {\r\n      position: absolute;\r\n      display: flex;\r\n      top: 0;\r\n      left: 0;\r\n      bottom: 0;\r\n      right: 0;\r\n      height: 100%;\r\n      width: 100%;\r\n      background-color:rgba(255, 255, 255, 0.8);\r\n      .spinner {\r\n        margin: auto;\r\n        color:$brand-red;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerFindMatch.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerFindMatch.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerFindMatch.vue?vue&type=template&id=5f8970c0\"\nimport script from \"./VolunteerFindMatch.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerFindMatch.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerFindMatch.vue?vue&type=style&index=0&id=5f8970c0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.volunteer)?_c('div',{staticClass:\"container volunteermatchcustomerdetails\"},[_c('div',{staticClass:\"row header\"},[_c('div',{staticClass:\"col-lg-4 col-xl-4\"},[(_vm.group)?_c('HomeButton',{attrs:{\"group-id\":_vm.group.id}}):_vm._e(),_c('BackButton')],1),_c('div',{staticClass:\"col-lg-8 col-xl-9 d-none d-lg-block\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.customerMatchDetails')))])])]),(_vm.group.netFriendship)?_c('VolunteerNetMatchCustomer',{attrs:{\"group\":_vm.group,\"customer\":_vm.customer,\"volunteer\":_vm.volunteer},on:{\"onactivate\":_vm.onActivate,\"oncancelpending\":_vm.onCancelPending,\"onterminate\":_vm.onTerminate}}):_c('VolunteerStandardMatchCustomer',{attrs:{\"group\":_vm.group,\"customer\":_vm.customer,\"volunteer\":_vm.volunteer},on:{\"onactivate\":_vm.onActivate,\"oncancelpending\":_vm.onCancelPending,\"onterminate\":_vm.onTerminate}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.volunteer)?_c('div',{staticClass:\"volunteerstandardmatch\"},[_c('div',{staticClass:\"row content\"},[_c('div',{staticClass:\"col-lg-4 col-xl-3 mb-3 mb-lg-0 volunteer-area\"},[_c('VolunteerCardStandard',{attrs:{\"group\":_vm.group,\"show-actions\":false},model:{value:(_vm.volunteer),callback:function ($$v) {_vm.volunteer=$$v},expression:\"volunteer\"}})],1),_c('div',{staticClass:\"col-lg-8 col-xl-9 customer-area\"},[_c('div',{staticClass:\"row d-lg-none\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.customerMatchDetails')))])]),_c('div',{staticClass:\"row ml-lg-1 customer-summary\"},[(_vm.hasFriendship)?_c('div',{staticClass:\"col\"},[_c('VolunteerMatchSummaryStandard',{attrs:{\"group\":_vm.group,\"volunteer\":_vm.volunteer,\"customer\":_vm.customer},on:{\"close\":_vm.onClose,\"cancelpending\":_vm.onCancelPending,\"activate\":_vm.onActivate,\"terminate\":_vm.onTerminate}})],1):_c('div',{staticClass:\"customer-not-found\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(_vm._s(_vm.$t('customerSearch.matchVolunteerNoLongerExists'))+\" \")],1)])])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row volunteermatchsummarystandard\"},[_c('div',{staticClass:\"col-md-6 mb-3 mb-md-0 maincolumn\"},[_c('CustomerCardStandard',{attrs:{\"group\":_vm.group,\"show-matches\":false,\"friendship-state-override\":_vm.friendshipState},model:{value:(_vm.customer),callback:function ($$v) {_vm.customer=$$v},expression:\"customer\"}})],1),_c('div',{staticClass:\"col-md-6 sidecolumn\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"controls\"},[_c('div',{staticClass:\"back\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$t('customerSearch.close')))])])])])]),_c('div',[(_vm.selectedFriendship)?_c('FriendshipStatus',{attrs:{\"friendship\":_vm.selectedFriendship,\"group\":_vm.group},on:{\"cancelpending\":_vm.onCancelPending,\"activate\":_vm.onActivate,\"terminate\":_vm.onTerminate}}):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row volunteermatchsummarystandard\">\r\n    <div class=\"col-md-6 mb-3 mb-md-0 maincolumn\">\r\n      <CustomerCardStandard\r\n        v-model=\"customer\"\r\n        :group=\"group\"\r\n        :show-matches=\"false\"\r\n        :friendship-state-override=\"friendshipState\"\r\n      />\r\n    </div>\r\n    <div class=\"col-md-6 sidecolumn\">\r\n      <div class=\"row\">\r\n        <div class=\"col\">\r\n          <div class=\"controls\">\r\n            <div class=\"back\">\r\n              <a href=\"javascript:void(0)\" @click=\"close\">{{ $t('customerSearch.close') }}</a>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div>\r\n        <FriendshipStatus\r\n          v-if=\"selectedFriendship\"\r\n          :friendship=\"selectedFriendship\"\r\n          :group=\"group\"\r\n          @cancelpending=\"onCancelPending\"\r\n          @activate=\"onActivate\"\r\n          @terminate=\"onTerminate\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import FriendshipStatus from './FriendshipStatus.vue'\r\n  import CustomerCardStandard from './CustomerCardStandard.vue'\r\n  import { FriendManagementDto, FriendCustomerStandardDto, FriendProfileDto, FriendshipStandardDto, FriendshipState } from '@/types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerMatchSummaryStandard',\r\n    components: { FriendshipStatus, CustomerCardStandard },\r\n    mixins: [datehelper],\r\n    props: {\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto,\r\n        required: true\r\n      },\r\n      volunteer: {\r\n        type: Object as () => FriendProfileDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      selectedFriendship (): FriendshipStandardDto | undefined {\r\n        return this.volunteer.friendInfo.standardProfile.friendships.find((x: FriendshipStandardDto) => {\r\n          return x.customerProfileStandardId === this.customer.id\r\n        })\r\n      },\r\n      friendshipState (): FriendshipState | undefined {\r\n        return this.selectedFriendship?.friendshipState\r\n      }\r\n    },\r\n    methods: {\r\n      close (): void {\r\n        this.$emit('close')\r\n      },\r\n      onCancelPending (friendship: FriendshipStandardDto): void {\r\n        this.$emit('cancelpending', friendship)\r\n      },\r\n      onActivate (friendship: FriendshipStandardDto): void {\r\n        this.$emit('activate', friendship)\r\n      },\r\n      onTerminate (friendship: FriendshipStandardDto): void {\r\n        this.$emit('terminate', friendship)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteermatchsummarystandard {\r\n    height: 100%;\r\n    .maincolumn {\r\n      background-color: $brand-white;\r\n      border-left: solid 5px $customer-color-strong;\r\n      padding-bottom: 15px;\r\n      padding-top: 30px;\r\n\r\n      @media (min-width: $media-md) {\r\n        border-right: solid 1px $brand-grey3;\r\n      }\r\n    }\r\n\r\n    .sidecolumn {\r\n      background-color: $brand-white;\r\n      .controls {\r\n        a {\r\n          color:$brand-red;\r\n          cursor: pointer;\r\n        }\r\n        .back {\r\n          position: absolute;\r\n          right:20px;\r\n          top: 15px;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchSummaryStandard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchSummaryStandard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerMatchSummaryStandard.vue?vue&type=template&id=77cf9794\"\nimport script from \"./VolunteerMatchSummaryStandard.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerMatchSummaryStandard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerMatchSummaryStandard.vue?vue&type=style&index=0&id=77cf9794&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"volunteer\" class=\"volunteerstandardmatch\">\r\n    <div class=\"row content\">\r\n      <div class=\"col-lg-4 col-xl-3 mb-3 mb-lg-0 volunteer-area\">\r\n        <VolunteerCardStandard\r\n          v-model=\"volunteer\"\r\n          :group=\"group\"\r\n          :show-actions=\"false\"\r\n        />\r\n      </div>\r\n\r\n      <div class=\"col-lg-8 col-xl-9 customer-area\">\r\n        <div class=\"row d-lg-none\">\r\n          <h4>{{ $t('customerSearch.customerMatchDetails') }}</h4>\r\n        </div>\r\n        <div class=\"row ml-lg-1 customer-summary\">\r\n          <div v-if=\"hasFriendship\" class=\"col\">\r\n            <VolunteerMatchSummaryStandard\r\n              :group=\"group\"\r\n              :volunteer=\"volunteer\"\r\n              :customer=\"customer\"\r\n              @close=\"onClose\"\r\n              @cancelpending=\"onCancelPending\"\r\n              @activate=\"onActivate\"\r\n              @terminate=\"onTerminate\"\r\n            />\r\n          </div>\r\n          <div v-else class=\"customer-not-found\">\r\n            <font-awesome-icon icon=\"exclamation-triangle\" />{{ $t('customerSearch.matchVolunteerNoLongerExists') }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import VolunteerCardStandard from './VolunteerCardStandard.vue'\r\n  import VolunteerMatchSummaryStandard from './VolunteerMatchSummaryStandard.vue'\r\n  import { FriendManagementDto, FriendCustomerStandardDto, FriendProfileDto, FriendshipStandardDto, FriendshipStandardCommandCriteria } from '@/types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerStandardMatchCustomer',\r\n    components: { VolunteerCardStandard, VolunteerMatchSummaryStandard },\r\n    props: {\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      customer: {\r\n        type: Object as () => FriendCustomerStandardDto,\r\n        required: true\r\n      },\r\n      volunteer: {\r\n        type: Object as () => FriendProfileDto,\r\n        required: true\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        score: 0,\r\n        isLoading: false,\r\n        isSending: false\r\n      }\r\n    },\r\n    computed: {\r\n      hasFriendship (): boolean {\r\n        return this.volunteer.friendInfo.standardProfile.friendships != null && this.volunteer.friendInfo.standardProfile.friendships.length > 0\r\n      }\r\n    },\r\n    mounted () {\r\n      window.scrollTo(0, 0)\r\n    },\r\n    methods: {\r\n      onClose () {\r\n        // go back to the matches of the volunteer\r\n        this.$router.push(`/friend/volunteerpreview/${this.group.id}/${this.volunteer.id}`)\r\n      },\r\n      onCancelPending (friendship: FriendshipStandardDto) {\r\n        var data: FriendshipStandardCommandCriteria = this.getStandardFriendshipCommandCriteria(friendship)\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipcancelstandard[0]}`\r\n        this.$http.post(url, data).then(resp => {\r\n          this.$emit('oncancelpending')\r\n        })\r\n      },\r\n      onActivate (friendship: FriendshipStandardDto) {\r\n        var self = this\r\n        var data: FriendshipStandardCommandCriteria = this.getStandardFriendshipCommandCriteria(friendship)\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipactivatestandard[0]}`\r\n        this.$http.post(url, data).then(resp => {\r\n          this.$emit('onactivate')\r\n        })\r\n      },\r\n      onTerminate (friendship: FriendshipStandardDto) {\r\n        var data: FriendshipStandardCommandCriteria = this.getStandardFriendshipCommandCriteria(friendship)\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipterminatestandard[0]}`\r\n        this.$http.post(url, data).then(resp => {\r\n          this.$emit('onterminate')\r\n        })\r\n      },\r\n      getStandardFriendshipCommandCriteria (friendship: FriendshipStandardDto) {\r\n        return {\r\n          groupId: this.group?.id,\r\n          customerProfileStandardId: friendship.customerProfileStandardId,\r\n          volunteerStandardProfileId: friendship.friendVolunteerProfileStandardId\r\n        } as FriendshipStandardCommandCriteria\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteerstandardmatch {\r\n    .header {\r\n      margin-top: 10px;\r\n      .nav-header {\r\n        border-bottom: 0;\r\n      }\r\n      h4 {\r\n        padding-left: 10px;\r\n      }\r\n    }\r\n    .content {\r\n\r\n      .volunteer-area {\r\n        padding-top: 30px;\r\n        background-color: $brand-white;\r\n        border-left: solid 5px $volunteer-color-strong;\r\n      }\r\n\r\n      .customer-area {\r\n        h4 {\r\n          padding-left: 10px;\r\n        }\r\n        .customer-summary {\r\n          @media (min-width: $media-lg) {\r\n            height: 100%;\r\n          }\r\n        }\r\n        .customer-not-found {\r\n          height: 100%;\r\n          text-align: center;\r\n          margin-top: 50px;\r\n          font-weight: bold;\r\n          .fa {\r\n            color: $brand-red;\r\n            margin-right: 5px;\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerStandardMatchCustomer.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerStandardMatchCustomer.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerStandardMatchCustomer.vue?vue&type=template&id=0d4a38bb\"\nimport script from \"./VolunteerStandardMatchCustomer.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerStandardMatchCustomer.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerStandardMatchCustomer.vue?vue&type=style&index=0&id=0d4a38bb&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.volunteer)?_c('div',{staticClass:\"volunteernetmatch\"},[_c('div',{staticClass:\"row content\"},[_c('div',{staticClass:\"col-lg-4 col-xl-3 mb-3 mb-lg-0 volunteer-area\"},[_c('VolunteerCardNet',{attrs:{\"group\":_vm.group,\"show-actions\":false},model:{value:(_vm.volunteer),callback:function ($$v) {_vm.volunteer=$$v},expression:\"volunteer\"}})],1),_c('div',{staticClass:\"col-lg-8 col-xl-9 customer-area\"},[_c('div',{staticClass:\"row d-lg-none\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.customerMatchDetails')))])]),_c('div',{staticClass:\"row ml-lg-1 customer-summary\"},[(_vm.customerSelected)?_c('div',{staticClass:\"col\"},[_c('VolunteerMatchSummaryNet',{attrs:{\"group\":_vm.group,\"volunteer\":_vm.volunteer,\"customer\":_vm.customer},on:{\"close\":_vm.onClose,\"cancelpending\":_vm.onCancelPending,\"activate\":_vm.onActivate,\"terminate\":_vm.onTerminate}})],1):_c('div',{staticClass:\"customer-not-found\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(_vm._s(_vm.$t('customerSearch.matchVolunteerNoLongerExists'))+\" \")],1)])])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row volunteermatchsummarynet\"},[_c('div',{staticClass:\"col-md-6 mb-3 mb-md-0 maincolumn\"},[_c('CustomerCardNet',{attrs:{\"group\":_vm.group,\"show-matches\":false,\"friendship-state-override\":_vm.friendshipState},model:{value:(_vm.customer),callback:function ($$v) {_vm.customer=$$v},expression:\"customer\"}})],1),_c('div',{staticClass:\"col-md-6 sidecolumn\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"controls\"},[_c('div',{staticClass:\"back\"},[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$t('customerSearch.close')))])])])])]),_c('div',[(_vm.selectedFriendship)?_c('FriendshipStatus',{attrs:{\"friendship\":_vm.selectedFriendship,\"group\":_vm.group},on:{\"cancelpending\":_vm.onCancelPending,\"activate\":_vm.onActivate,\"terminate\":_vm.onTerminate}}):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row volunteermatchsummarynet\">\r\n    <div class=\"col-md-6 mb-3 mb-md-0 maincolumn\">\r\n      <CustomerCardNet\r\n        v-model=\"customer\"\r\n        :group=\"group\"\r\n        :show-matches=\"false\"\r\n        :friendship-state-override=\"friendshipState\"\r\n      />\r\n    </div>\r\n    <div class=\"col-md-6 sidecolumn\">\r\n      <div class=\"row\">\r\n        <div class=\"col\">\r\n          <div class=\"controls\">\r\n            <div class=\"back\">\r\n              <a href=\"javascript:void(0)\" @click=\"close\">{{ $t('customerSearch.close') }}</a>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div>\r\n        <FriendshipStatus\r\n          v-if=\"selectedFriendship\"\r\n          :friendship=\"selectedFriendship\"\r\n          :group=\"group\"\r\n          @cancelpending=\"onCancelPending\"\r\n          @activate=\"onActivate\"\r\n          @terminate=\"onTerminate\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import FriendshipStatus from './FriendshipStatus.vue'\r\n  import CustomerCardNet from './CustomerCardNet.vue'\r\n  import { FriendManagementDto, FriendCustomerNetDto, FriendProfileDto, FriendshipNetDto, FriendshipState } from '@/types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerNetMatchSummaryNet',\r\n    components: { FriendshipStatus, CustomerCardNet },\r\n    mixins: [datehelper],\r\n    props: {\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      customer: {\r\n        type: Object as () => FriendCustomerNetDto,\r\n        required: true\r\n      },\r\n      volunteer: {\r\n        type: Object as () => FriendProfileDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      selectedFriendship (): FriendshipNetDto | undefined {\r\n        return this.volunteer.friendInfo.netProfile.friendships.find((x: FriendshipNetDto) => {\r\n          return x.customerProfileNetId === this.customer.id\r\n        })\r\n      },\r\n      friendshipState (): FriendshipState | undefined {\r\n        return this.selectedFriendship?.friendshipState\r\n      }\r\n    },\r\n    methods: {\r\n      close (): void {\r\n        this.$emit('close')\r\n      },\r\n      onCancelPending (friendship: FriendshipNetDto): void {\r\n        this.$emit('cancelpending', friendship)\r\n      },\r\n      onActivate (friendship: FriendshipNetDto): void {\r\n        this.$emit('activate', friendship)\r\n      },\r\n      onTerminate (friendship: FriendshipNetDto): void {\r\n        this.$emit('terminate', friendship)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteermatchsummarynet {\r\n    height: 100%;\r\n    .maincolumn {\r\n      background-color: $brand-white;\r\n      border-left: solid 5px $customer-color-strong;\r\n      padding-bottom: 15px;\r\n      padding-top: 30px;\r\n\r\n      @media (min-width: $media-md) {\r\n        border-right: solid 1px $brand-grey3;\r\n      }\r\n    }\r\n\r\n    .sidecolumn {\r\n      background-color: $brand-white;\r\n      .controls {\r\n        a {\r\n          color:$brand-red;\r\n          cursor: pointer;\r\n        }\r\n        .back {\r\n          position: absolute;\r\n          right:20px;\r\n          top: 15px;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchSummaryNet.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchSummaryNet.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerMatchSummaryNet.vue?vue&type=template&id=5982279e\"\nimport script from \"./VolunteerMatchSummaryNet.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerMatchSummaryNet.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerMatchSummaryNet.vue?vue&type=style&index=0&id=5982279e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"volunteer\" class=\"volunteernetmatch\">\r\n    <div class=\"row content\">\r\n      <div class=\"col-lg-4 col-xl-3 mb-3 mb-lg-0 volunteer-area\">\r\n        <VolunteerCardNet\r\n          v-model=\"volunteer\"\r\n          :group=\"group\"\r\n          :show-actions=\"false\"\r\n        />\r\n      </div>\r\n\r\n      <div class=\"col-lg-8 col-xl-9 customer-area\">\r\n        <div class=\"row d-lg-none\">\r\n          <h4>{{ $t('customerSearch.customerMatchDetails') }}</h4>\r\n        </div>\r\n        <div class=\"row ml-lg-1 customer-summary\">\r\n          <div v-if=\"customerSelected\" class=\"col\">\r\n            <VolunteerMatchSummaryNet\r\n              :group=\"group\"\r\n              :volunteer=\"volunteer\"\r\n              :customer=\"customer\"\r\n              @close=\"onClose\"\r\n              @cancelpending=\"onCancelPending\"\r\n              @activate=\"onActivate\"\r\n              @terminate=\"onTerminate\"\r\n            />\r\n          </div>\r\n          <div v-else class=\"customer-not-found\">\r\n            <font-awesome-icon icon=\"exclamation-triangle\" />{{ $t('customerSearch.matchVolunteerNoLongerExists') }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import VolunteerCardNet from './VolunteerCardNet.vue'\r\n  import VolunteerMatchSummaryNet from './VolunteerMatchSummaryNet.vue'\r\n  import { FriendManagementDto, FriendCustomerNetDto, FriendProfileDto, FriendshipNetDto, FriendshipNetCommandCriteria } from '@/types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerNetMatchCustomer',\r\n    components: { VolunteerCardNet, VolunteerMatchSummaryNet },\r\n    props: {\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      },\r\n      customer: {\r\n        type: Object as () => FriendCustomerNetDto,\r\n        required: true\r\n      },\r\n      volunteer: {\r\n        type: Object as () => FriendProfileDto,\r\n        required: true\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        score: 0,\r\n        isLoading: false,\r\n        isSending: false\r\n      }\r\n    },\r\n    computed: {\r\n      customerSelected (): boolean {\r\n        return !_.isEmpty(this.customer)\r\n      }\r\n    },\r\n    mounted (): void {\r\n      window.scrollTo(0, 0)\r\n    },\r\n    methods: {\r\n      onClose (): void {\r\n        // go back to the matches of the volunteer\r\n        var goto = `/friend/volunteerpreview/${this.group.id}/${this.volunteer.friendInfo.id}`\r\n        this.$router.push(goto)\r\n      },\r\n      onCancelPending (friendship: FriendshipNetDto) {\r\n        var data: FriendshipNetCommandCriteria = this.getNetFriendshipCommandCriteria(friendship)\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipcancelnet[0]}`\r\n        this.$http.post(url, data).then(resp => {\r\n          this.$emit('oncancelpending')\r\n        })\r\n      },\r\n      onActivate (friendship: FriendshipNetDto) {\r\n        var self = this\r\n        var data: FriendshipNetCommandCriteria = this.getNetFriendshipCommandCriteria(friendship)\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipactivatenet[0]}`\r\n        this.$http.post(url, data).then(resp => {\r\n          this.$emit('onactivate')\r\n        })\r\n      },\r\n      onTerminate (friendship: FriendshipNetDto) {\r\n        var data: FriendshipNetCommandCriteria = this.getNetFriendshipCommandCriteria(friendship)\r\n        var url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendshipterminatenet[0]}`\r\n        this.$http.post(url, data).then(resp => {\r\n          this.$emit('onterminate')\r\n        })\r\n      },\r\n      getNetFriendshipCommandCriteria (friendship: FriendshipNetDto) {\r\n        return {\r\n          groupId: this.group?.id,\r\n          customerProfileNetId: friendship.customerProfileNetId,\r\n          volunteerNetProfileId: friendship.friendVolunteerProfileNetId\r\n        } as FriendshipNetCommandCriteria\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteernetmatch {\r\n    .header {\r\n      margin-top: 10px;\r\n      .nav-header {\r\n        border-bottom: 0;\r\n      }\r\n      h4 {\r\n        padding-left: 10px;\r\n      }\r\n    }\r\n    .content {\r\n\r\n      .volunteer-area {\r\n        padding-top: 30px;\r\n        background-color: $brand-white;\r\n        border-left: solid 5px $volunteer-color-strong;\r\n      }\r\n\r\n      .customer-area {\r\n        h4 {\r\n          padding-left: 10px;\r\n        }\r\n        .customer-summary {\r\n          @media (min-width: $media-lg) {\r\n            height: 100%;\r\n          }\r\n        }\r\n        .customer-not-found {\r\n          height: 100%;\r\n          text-align: center;\r\n          margin-top: 50px;\r\n          font-weight: bold;\r\n          .fa {\r\n            color: $brand-red;\r\n            margin-right: 5px;\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerNetMatchCustomer.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerNetMatchCustomer.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerNetMatchCustomer.vue?vue&type=template&id=e8e71048\"\nimport script from \"./VolunteerNetMatchCustomer.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerNetMatchCustomer.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerNetMatchCustomer.vue?vue&type=style&index=0&id=e8e71048&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"volunteer\" class=\"container volunteermatchcustomerdetails\">\r\n    <div class=\"row header\">\r\n      <div class=\"col-lg-4 col-xl-4\">\r\n        <HomeButton\r\n          v-if=\"group\"\r\n          :group-id=\"group.id\"\r\n        />\r\n        <BackButton />\r\n      </div>\r\n      <div class=\"col-lg-8 col-xl-9 d-none d-lg-block\">\r\n        <h4>{{ $t('customerSearch.customerMatchDetails') }}</h4>\r\n      </div>\r\n    </div>\r\n    <VolunteerNetMatchCustomer\r\n      v-if=\"group.netFriendship\"\r\n      :group=\"group\"\r\n      :customer=\"customer\"\r\n      :volunteer=\"volunteer\"\r\n      @onactivate=\"onActivate\"\r\n      @oncancelpending=\"onCancelPending\"\r\n      @onterminate=\"onTerminate\"\r\n    />\r\n    <VolunteerStandardMatchCustomer\r\n      v-else\r\n      :group=\"group\"\r\n      :customer=\"customer\"\r\n      :volunteer=\"volunteer\"\r\n      @onactivate=\"onActivate\"\r\n      @oncancelpending=\"onCancelPending\"\r\n      @onterminate=\"onTerminate\"\r\n    />\r\n    <div v-show=\"isLoading\" class=\"loading\">\r\n      <div class=\"spinner\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import VolunteerStandardMatchCustomer from './VolunteerStandardMatchCustomer.vue'\r\n  import VolunteerNetMatchCustomer from './VolunteerNetMatchCustomer.vue'\r\n  import BackButton from '../BackButton.vue'\r\n  import HomeButton from '../HomeButton.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { FriendCustomerStandardDto, FriendCustomerNetDto, FriendManagementDto, FriendProfileDto, FriendshipNetDto, FriendshipStandardDto, GetFriendProfileByFriendVolunteerIdCriteria } from '@/types'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    customer: undefined | FriendCustomerStandardDto | FriendCustomerNetDto,\r\n    volunteer: undefined | FriendProfileDto,\r\n    group: undefined | FriendManagementDto,\r\n    isLoading: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'VolunteerMatchCustomerDetails',\r\n    components: { VolunteerStandardMatchCustomer, VolunteerNetMatchCustomer, BackButton, HomeButton, loading },\r\n    props: {\r\n      groupid: {\r\n        type: Number,\r\n        required: true\r\n      },\r\n      customerid: {\r\n        type: Number,\r\n        required: true\r\n      },\r\n      volunteerid: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        customer: undefined,\r\n        volunteer: undefined,\r\n        group: undefined,\r\n        isLoading: false\r\n      }\r\n    },\r\n    created () {\r\n      this.load()\r\n    },\r\n    methods: {\r\n      load (): void {\r\n        this.isLoading = false\r\n        this.getGroup().then(resp => {\r\n          this.group = resp.data\r\n          var promises = [] as Array<PromiseLike<HttpResponse>>\r\n\r\n          promises.push(this.getCustomer())\r\n          promises.push(this.getVolunteer())\r\n\r\n          Promise.all(promises).then(resp => {\r\n            this.customer = resp[0].data\r\n            this.volunteer = resp[1].data\r\n\r\n            if (!this.checkFriendshipExists()) {\r\n              // @ts-ignore\r\n              this.showAlertError(this.$t('common.permissionDenied'))\r\n              this.customer = undefined\r\n              this.volunteer = undefined\r\n            }\r\n          })\r\n        })\r\n      },\r\n      checkFriendshipExists (): boolean {\r\n        // confirm this customer is a friend with this volunteer\r\n        var friendships = this.group?.netFriendship\r\n          ? this.volunteer?.friendInfo.netProfile.friendships\r\n          : this.volunteer?.friendInfo.standardProfile.friendships\r\n\r\n        if (this.group?.netFriendship) {\r\n          return Boolean(_.find(friendships, (friendship: FriendshipNetDto) => {\r\n            return friendship.customerProfileNetId === this.customerid\r\n          }))\r\n        } else {\r\n          return Boolean(_.find(friendships, (friendship: FriendshipStandardDto) => {\r\n            return friendship.customerProfileStandardId === this.customerid\r\n          }))\r\n        }\r\n      },\r\n      getGroup (): PromiseLike<HttpResponse> {\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationById[0].replace('{0}', this.groupid)\r\n        return this.$http.get(url)\r\n      },\r\n      getVolunteer (): PromiseLike<HttpResponse> {\r\n        // get the updated volunteer with new status from the back end (returns promise)\r\n        var criteria: GetFriendProfileByFriendVolunteerIdCriteria = {\r\n          friendManagementGroupId: this.groupid,\r\n          friendVolunteerId: this.volunteerid,\r\n          includeFriendships: true,\r\n          includeFriendPools: true\r\n        }\r\n        var getVolunteerUrl = this.group?.netFriendship\r\n          ? `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteergetnetprofilebyid[0]}`\r\n          : `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteergetstandardprofilebyid[0]}`\r\n        return this.$http.post(getVolunteerUrl, criteria)\r\n      },\r\n      getCustomer (): PromiseLike<HttpResponse> {\r\n        var getCustomerUrl = this.group?.netFriendship\r\n            ? `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customergetnetbyid[0]}`.replace('{customerid}', this.customerid.toString()).replace('{groupid}', this.groupid.toString())\r\n            : `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customergetstandardbyid[0]}`.replace('{customerid}', this.customerid.toString()).replace('{groupid}', this.groupid.toString())\r\n        return this.$http.get(getCustomerUrl)\r\n      },\r\n      onActivate () {\r\n        this.load()\r\n      },\r\n      onCancelPending () {\r\n        this.$router.push(`/friend/volunteerpreview/${this.groupid}/${this.volunteerid}`)\r\n      },\r\n      onTerminate () {\r\n        this.$router.push(`/friend/volunteerpreview/${this.groupid}/${this.volunteerid}`)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .volunteermatchcustomerdetails {\r\n    .header {\r\n      margin-top: 10px;\r\n      margin-bottom: 15px;\r\n      .nav-header {\r\n        border-bottom: 0;\r\n      }\r\n      h4 {\r\n        padding-left: 10px;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchCustomerDetails.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerMatchCustomerDetails.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VolunteerMatchCustomerDetails.vue?vue&type=template&id=64d1f138\"\nimport script from \"./VolunteerMatchCustomerDetails.vue?vue&type=script&lang=ts\"\nexport * from \"./VolunteerMatchCustomerDetails.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VolunteerMatchCustomerDetails.vue?vue&type=style&index=0&id=64d1f138&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"pooladd container\"},[_c('backbar',{attrs:{\"title\":_vm.formTitle}}),(_vm.group)?_c('div',[(_vm.group.netFriendship)?_c('PoolAddEditNetForm',{attrs:{\"group\":_vm.group}}):_c('PoolAddEditStandardForm',{attrs:{\"group\":_vm.group}})],1):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"pooladdeditstandardform\"},[_c('div',{staticClass:\"container indicator-stripe\"},[_c('div',{staticClass:\"form-container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center py-2\"},[_c('sprvalidation',{attrs:{\"id\":'validationTarget' + _vm._uid,\"validation-errors\":_vm.validationErrors}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6 sectionheader\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('poolForm.basicInformation')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.nameValidator),expression:\"nameValidator\"}],attrs:{\"hint\":_vm.$t('poolForm.name'),\"is-valid\":!_vm.errors.has('poolForm.name'),\"name\":\"poolForm.name\",\"required\":true},model:{value:(_vm.localPool.name),callback:function ($$v) {_vm.$set(_vm.localPool, \"name\", $$v)},expression:\"localPool.name\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('poolForm.shortDescription'),\"maxlength\":100,\"is-valid\":true},model:{value:(_vm.localPool.shortDescription),callback:function ($$v) {_vm.$set(_vm.localPool, \"shortDescription\", $$v)},expression:\"localPool.shortDescription\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('poolForm.address'),\"is-valid\":true},model:{value:(_vm.localPool.address),callback:function ($$v) {_vm.$set(_vm.localPool, \"address\", $$v)},expression:\"localPool.address\"}})],1),_c('div',{staticClass:\"col-12 col-sm-4 col-md-3\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('poolForm.postalCode'),\"is-valid\":true},model:{value:(_vm.localPool.postalCode),callback:function ($$v) {_vm.$set(_vm.localPool, \"postalCode\", $$v)},expression:\"localPool.postalCode\"}})],1),_c('div',{staticClass:\"col-12 col-sm-8 col-md-9\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('poolForm.city'),\"is-valid\":true},model:{value:(_vm.localPool.city),callback:function ($$v) {_vm.$set(_vm.localPool, \"city\", $$v)},expression:\"localPool.city\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('poolForm.contactInfo'),\"maxlength\":100,\"is-valid\":true},model:{value:(_vm.localPool.contactInfo),callback:function ($$v) {_vm.$set(_vm.localPool, \"contactInfo\", $$v)},expression:\"localPool.contactInfo\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('poolForm.assemblyTimes'),\"maxlength\":100,\"is-valid\":true},model:{value:(_vm.localPool.assemblyTimes),callback:function ($$v) {_vm.$set(_vm.localPool, \"assemblyTimes\", $$v)},expression:\"localPool.assemblyTimes\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('poolForm.description'),\"rows\":4},model:{value:(_vm.localPool.description),callback:function ($$v) {_vm.$set(_vm.localPool, \"description\", $$v)},expression:\"localPool.description\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('poolForm.notes'),\"rows\":4},model:{value:(_vm.localPool.notes),callback:function ($$v) {_vm.$set(_vm.localPool, \"notes\", $$v)},expression:\"localPool.notes\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"d-flex justify-content-end\"},[_c('sprbutton',{staticClass:\"next-button\",attrs:{\"size\":1,\"title\":_vm.$t('poolForm.save'),\"click-event\":\"save\",\"icon\":\"chevron-right\"},on:{\"save\":_vm.save}})],1)])])])]),_vm._m(0)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"bottomspacer\"})])])\n}]\n\nexport { render, staticRenderFns }","import Vue from 'vue'\r\nimport VueResource from 'vue-resource'\r\nimport store from '../store/index.js'\r\n\r\nVue.use(VueResource)\r\n\r\nconst validatorUniquePoolName = {\r\n  getMessage (field, args) {\r\n    return 'Another pool with this name already exists'\r\n  },\r\n  validate (value, args) {\r\n    return new Promise((resolve, reject) => {\r\n      var url = args[2] === 'STANDARD'\r\n        ? `${store.state.apiBases.friendservice}${store.state.apiEndpoints.getfriendmanagementpoolsstandard[0]}`.replace('{fmgid}', args[1])\r\n        : `${store.state.apiBases.friendservice}${store.state.apiEndpoints.getfriendmanagementpoolsnet[0]}`.replace('{fmgid}', args[1])\r\n      Vue.http.get(url).then((resp) => {\r\n        if (resp.ok) {\r\n          var foundSameName = _.find(resp.body, (pool) => {\r\n            return pool.name.toLowerCase().trim() === value.toLowerCase().trim() && args[0] && Number(pool.id) !== Number(args[0]) // name is not the same as any others. Do not count yourself!\r\n          })\r\n\r\n          if (foundSameName) {\r\n            resolve({\r\n              valid: false // found a pool with this name\r\n            })\r\n          }\r\n          resolve({\r\n            valid: true // should NOT exist\r\n          })\r\n        } else {\r\n          reject(new Error({\r\n            valid: false,\r\n            data: {\r\n              message: 'Unable to get response from the server'\r\n            }\r\n          }))\r\n        }\r\n      })\r\n    })\r\n  }\r\n}\r\n\r\nexport default validatorUniquePoolName\r\n","<template>\r\n  <div class=\"pooladdeditstandardform\">\r\n    <div class=\"container indicator-stripe\">\r\n      <div class=\"form-container\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12 text-center py-2\">\r\n            <sprvalidation :id=\"'validationTarget' + _uid\"\r\n                           :validation-errors=\"validationErrors\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <!-- Basic Info -->\r\n        <div class=\"row\">\r\n          <div class=\"col-sm-6 sectionheader\">\r\n            <h3>{{ $t('poolForm.basicInformation') }}</h3>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <forminput\r\n              v-model=\"localPool.name\"\r\n              v-validate=\"nameValidator\"\r\n              :hint=\"$t('poolForm.name')\"\r\n              :is-valid=\"!errors.has('poolForm.name')\"\r\n              name=\"poolForm.name\"\r\n              :required=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <forminput\r\n              v-model=\"localPool.shortDescription\"\r\n              :hint=\"$t('poolForm.shortDescription')\"\r\n              :maxlength=\"100\"\r\n              :is-valid=\"true\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <!-- Address -->\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <forminput\r\n              v-model=\"localPool.address\"\r\n              :hint=\"$t('poolForm.address')\"\r\n              :is-valid=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-12 col-sm-4 col-md-3\">\r\n            <forminput\r\n              v-model=\"localPool.postalCode\"\r\n              :hint=\"$t('poolForm.postalCode')\"\r\n              :is-valid=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-12 col-sm-8 col-md-9\">\r\n            <forminput\r\n              v-model=\"localPool.city\"\r\n              :hint=\"$t('poolForm.city')\"\r\n              :is-valid=\"true\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <forminput\r\n              v-model=\"localPool.contactInfo\"\r\n              :hint=\"$t('poolForm.contactInfo')\"\r\n              :maxlength=\"100\"\r\n              :is-valid=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <forminput\r\n              v-model=\"localPool.assemblyTimes\"\r\n              :hint=\"$t('poolForm.assemblyTimes')\"\r\n              :maxlength=\"100\"\r\n              :is-valid=\"true\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <textareainput\r\n              v-model=\"localPool.description\"\r\n              :title=\"$t('poolForm.description')\"\r\n              :rows=\"4\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <textareainput\r\n              v-model=\"localPool.notes\"\r\n              :title=\"$t('poolForm.notes')\"\r\n              :rows=\"4\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <div class=\"d-flex justify-content-end\">\r\n              <sprbutton :size=\"1\"\r\n                         :title=\"$t('poolForm.save')\"\r\n                         click-event=\"save\"\r\n                         class=\"next-button\"\r\n                         icon=\"chevron-right\"\r\n                         @save=\"save\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"bottomspacer\" />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import enums from '../../mixins/enums.js'\r\n  import scroll from '../../mixins/scroll.js'\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n  import { Validator } from 'vee-validate'\r\n  import { FriendPoolStandardDto, FriendManagementDto, FriendPoolStatus } from '@/types/index'\r\n\r\n  import validatorUniquePoolName from '../../mixins/validator-uniquepoolname'\r\n\r\n  Validator.extend('uniquepoolname', validatorUniquePoolName)\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    isAdd: boolean,\r\n    localPool: FriendPoolStandardDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'PoolAddEditStandardForm',\r\n    components: {\r\n      sprbutton,\r\n      forminput,\r\n      textareainput,\r\n      sprvalidation\r\n    },\r\n    mixins: [enums, scroll],\r\n    props: {\r\n      pool: {\r\n        type: Object as () => FriendPoolStandardDto,\r\n        required: false,\r\n        default: undefined\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        isAdd: true,\r\n        localPool: {\r\n          address: '',\r\n          assemblyTimes: '',\r\n          city: '',\r\n          contactInfo: '',\r\n          description: '',\r\n          friendManagementGroupId: this.group.id,\r\n          id: 0,\r\n          name: '',\r\n          notes: '',\r\n          postalCode: '',\r\n          shortDescription: '',\r\n          status: FriendPoolStatus.Active\r\n        } as FriendPoolStandardDto\r\n      }\r\n    },\r\n    computed: {\r\n      formTitle (): LocaleMessage | string {\r\n        return this.isAdd ? this.$t('poolForm.addTitle') : this.$t('poolForm.editTitle')\r\n      },\r\n      nameValidator (): string {\r\n        var poolId = this.pool ? this.pool.id : ''\r\n        return `required|uniquepoolname:${poolId},${this.group.id},STANDARD`\r\n      },\r\n      validationErrors (): Array<any> {\r\n        return _.map(this.errors.items, function (value, index) {\r\n          return [value.field, String(value.rule), String(value.msg)]\r\n        })\r\n      }\r\n    },\r\n    mounted (): void {\r\n      if (!this.pool) {\r\n        this.isAdd = true\r\n      } else {\r\n        this.isAdd = false\r\n        this.localPool = this.pool\r\n      }\r\n    },\r\n    methods: {\r\n      save (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            var promise: PromiseLike<HttpResponse>\r\n            if (this.isAdd) {\r\n              promise = this.add()\r\n            } else {\r\n              promise = this.update()\r\n            }\r\n\r\n            promise.then((result) => {\r\n              if (result.ok) {\r\n                let uri = ''\r\n                if (this.isAdd) {\r\n                  uri = `/friend/search/${this.group.id}/pools`\r\n                } else {\r\n                  uri = `/friend/pools/${this.group.id}/${this.pool.id}`\r\n                }\r\n                this.$router.push(uri)\r\n              } else {\r\n                this.displayError(this.$t('common.fetchFailed'))\r\n              }\r\n            }, err => this.displayError(err))\r\n          }\r\n        })\r\n      },\r\n      add (): PromiseLike<HttpResponse> {\r\n        var url = `${this.$store.state.apiBases.friendservice}${this.$store.state.apiEndpoints.addfriendpoolstandard[0]}`\r\n        return this.$http.post(url, this.localPool)\r\n      },\r\n      update (): PromiseLike<HttpResponse> {\r\n        var url = `${this.$store.state.apiBases.friendservice}${this.$store.state.apiEndpoints.updatefriendpoolstandard[0]}`\r\n        return this.$http.put(url, this.localPool)\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .pooladdeditstandardform {\r\n    background-color:$brand-white;\r\n\r\n    @media (max-width: $media-lg-max) and (min-width: $media-md) {\r\n      box-shadow: inset 30px 0 0px 0px $pools-color-strong;\r\n    }\r\n    @media (max-width: $media-sm-max) {\r\n      box-shadow: inset 15px 0 0px 0px $pools-color-strong;\r\n    }\r\n    .indicator-stripe {\r\n      @media (min-width: $media-xl) {\r\n        box-shadow: inset 50px 0 0px 0px $pools-color-strong;\r\n      }\r\n    }\r\n\r\n    .sectionheader {\r\n      margin: 15px 0;\r\n    }\r\n\r\n    .currentgroup {\r\n      font-weight: bold;\r\n      margin-bottom: 20px;\r\n      display:block;\r\n    }\r\n\r\n    .form-container {\r\n      margin: 0 auto;\r\n      max-width: 900px;\r\n    }\r\n\r\n    .spr-button {\r\n      background-color:$brand-red;\r\n      color:$brand-white;\r\n    }\r\n\r\n    .bottomspacer {\r\n      margin-bottom: 50px;\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolAddEditStandardForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolAddEditStandardForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PoolAddEditStandardForm.vue?vue&type=template&id=679c77d5\"\nimport script from \"./PoolAddEditStandardForm.vue?vue&type=script&lang=ts\"\nexport * from \"./PoolAddEditStandardForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PoolAddEditStandardForm.vue?vue&type=style&index=0&id=679c77d5&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"pooladdeditnetform\"},[_c('div',{staticClass:\"container indicator-stripe\"},[_c('div',{staticClass:\"form-container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center py-2\"},[_c('sprvalidation',{attrs:{\"id\":'validationTarget' + _vm._uid,\"validation-errors\":_vm.validationErrors}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6 sectionheader\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('poolForm.basicInformation')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.nameValidator),expression:\"nameValidator\"}],attrs:{\"hint\":_vm.$t('poolForm.name'),\"is-valid\":!_vm.errors.has('poolForm.name'),\"name\":\"poolForm.name\",\"required\":true},model:{value:(_vm.localPool.name),callback:function ($$v) {_vm.$set(_vm.localPool, \"name\", $$v)},expression:\"localPool.name\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('poolForm.shortDescription'),\"maxlength\":100,\"is-valid\":true},model:{value:(_vm.localPool.shortDescription),callback:function ($$v) {_vm.$set(_vm.localPool, \"shortDescription\", $$v)},expression:\"localPool.shortDescription\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('poolForm.address'),\"is-valid\":true},model:{value:(_vm.localPool.address),callback:function ($$v) {_vm.$set(_vm.localPool, \"address\", $$v)},expression:\"localPool.address\"}})],1),_c('div',{staticClass:\"col-12 col-sm-4 col-md-3\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('poolForm.postalCode'),\"is-valid\":true},model:{value:(_vm.localPool.postalCode),callback:function ($$v) {_vm.$set(_vm.localPool, \"postalCode\", $$v)},expression:\"localPool.postalCode\"}})],1),_c('div',{staticClass:\"col-12 col-sm-8 col-md-9\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('poolForm.city'),\"is-valid\":true},model:{value:(_vm.localPool.city),callback:function ($$v) {_vm.$set(_vm.localPool, \"city\", $$v)},expression:\"localPool.city\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('poolForm.contactInfo'),\"maxlength\":100,\"is-valid\":true},model:{value:(_vm.localPool.contactInfo),callback:function ($$v) {_vm.$set(_vm.localPool, \"contactInfo\", $$v)},expression:\"localPool.contactInfo\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('poolForm.assemblyTimes'),\"maxlength\":100,\"is-valid\":true},model:{value:(_vm.localPool.assemblyTimes),callback:function ($$v) {_vm.$set(_vm.localPool, \"assemblyTimes\", $$v)},expression:\"localPool.assemblyTimes\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('poolForm.description'),\"rows\":4},model:{value:(_vm.localPool.description),callback:function ($$v) {_vm.$set(_vm.localPool, \"description\", $$v)},expression:\"localPool.description\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('poolForm.notes'),\"rows\":4},model:{value:(_vm.localPool.notes),callback:function ($$v) {_vm.$set(_vm.localPool, \"notes\", $$v)},expression:\"localPool.notes\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"d-flex justify-content-end\"},[_c('sprbutton',{staticClass:\"next-button\",attrs:{\"size\":1,\"title\":_vm.$t('poolForm.save'),\"click-event\":\"save\",\"icon\":\"chevron-right\"},on:{\"save\":_vm.save}})],1)])])])]),_vm._m(0)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"bottomspacer\"})])])\n}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"pooladdeditnetform\">\r\n    <div class=\"container indicator-stripe\">\r\n      <div class=\"form-container\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12 text-center py-2\">\r\n            <sprvalidation :id=\"'validationTarget' + _uid\"\r\n                           :validation-errors=\"validationErrors\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <!-- Basic Info -->\r\n        <div class=\"row\">\r\n          <div class=\"col-sm-6 sectionheader\">\r\n            <h3>{{ $t('poolForm.basicInformation') }}</h3>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <forminput\r\n              v-model=\"localPool.name\"\r\n              v-validate=\"nameValidator\"\r\n              :hint=\"$t('poolForm.name')\"\r\n              :is-valid=\"!errors.has('poolForm.name')\"\r\n              name=\"poolForm.name\"\r\n              :required=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <forminput\r\n              v-model=\"localPool.shortDescription\"\r\n              :hint=\"$t('poolForm.shortDescription')\"\r\n              :maxlength=\"100\"\r\n              :is-valid=\"true\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <!-- Address -->\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <forminput\r\n              v-model=\"localPool.address\"\r\n              :hint=\"$t('poolForm.address')\"\r\n              :is-valid=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-12 col-sm-4 col-md-3\">\r\n            <forminput\r\n              v-model=\"localPool.postalCode\"\r\n              :hint=\"$t('poolForm.postalCode')\"\r\n              :is-valid=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-12 col-sm-8 col-md-9\">\r\n            <forminput\r\n              v-model=\"localPool.city\"\r\n              :hint=\"$t('poolForm.city')\"\r\n              :is-valid=\"true\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <forminput\r\n              v-model=\"localPool.contactInfo\"\r\n              :hint=\"$t('poolForm.contactInfo')\"\r\n              :maxlength=\"100\"\r\n              :is-valid=\"true\"\r\n            />\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <forminput\r\n              v-model=\"localPool.assemblyTimes\"\r\n              :hint=\"$t('poolForm.assemblyTimes')\"\r\n              :maxlength=\"100\"\r\n              :is-valid=\"true\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <textareainput\r\n              v-model=\"localPool.description\"\r\n              :title=\"$t('poolForm.description')\"\r\n              :rows=\"4\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <textareainput\r\n              v-model=\"localPool.notes\"\r\n              :title=\"$t('poolForm.notes')\"\r\n              :rows=\"4\"\r\n            />\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <div class=\"d-flex justify-content-end\">\r\n              <sprbutton :size=\"1\"\r\n                         :title=\"$t('poolForm.save')\"\r\n                         click-event=\"save\"\r\n                         class=\"next-button\"\r\n                         icon=\"chevron-right\"\r\n                         @save=\"save\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"bottomspacer\" />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import enums from '../../mixins/enums.js'\r\n  import scroll from '../../mixins/scroll.js'\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n  import { Validator } from 'vee-validate'\r\n  import { FriendPoolNetDto, FriendManagementDto, FriendPoolStatus } from '@/types/index'\r\n\r\n  import validatorUniquePoolName from '../../mixins/validator-uniquepoolname'\r\n\r\n  Validator.extend('uniquepoolname', validatorUniquePoolName)\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    isAdd: boolean,\r\n    localPool: FriendPoolNetDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'PoolAddEditNetForm',\r\n    components: {\r\n      sprbutton,\r\n      forminput,\r\n      textareainput,\r\n      sprvalidation\r\n    },\r\n    mixins: [enums, scroll],\r\n    props: {\r\n      pool: {\r\n        type: Object as () => FriendPoolNetDto,\r\n        required: false,\r\n        default: undefined\r\n      },\r\n      group: {\r\n        type: Object as () => FriendManagementDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        isAdd: true,\r\n        localPool: {\r\n          address: '',\r\n          assemblyTimes: '',\r\n          city: '',\r\n          contactInfo: '',\r\n          description: '',\r\n          friendManagementGroupId: this.group.id,\r\n          id: 0,\r\n          name: '',\r\n          notes: '',\r\n          postalCode: '',\r\n          shortDescription: '',\r\n          status: FriendPoolStatus.Active\r\n        } as FriendPoolNetDto\r\n      }\r\n    },\r\n    computed: {\r\n      formTitle (): LocaleMessage | string {\r\n        return this.isAdd ? this.$t('poolForm.addTitle') : this.$t('poolForm.editTitle')\r\n      },\r\n      nameValidator (): string {\r\n        var poolId = this.pool ? this.pool.id : ''\r\n        return `required|uniquepoolname:${poolId},${this.group.id},NET`\r\n      },\r\n      validationErrors (): Array<any> {\r\n        return _.map(this.errors.items, function (value, index) {\r\n          return [value.field, String(value.rule), String(value.msg)]\r\n        })\r\n      }\r\n    },\r\n    mounted (): void {\r\n      if (!this.pool) {\r\n        this.isAdd = true\r\n      } else {\r\n        this.isAdd = false\r\n        this.localPool = this.pool\r\n      }\r\n    },\r\n    methods: {\r\n      save (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            var promise: PromiseLike<HttpResponse>\r\n            if (this.isAdd) {\r\n              promise = this.add()\r\n            } else {\r\n              promise = this.update()\r\n            }\r\n\r\n            promise.then((result) => {\r\n              if (result.ok) {\r\n                let uri = ''\r\n                if (this.isAdd) {\r\n                  uri = `/friend/search/${this.group.id}/pools`\r\n                } else {\r\n                  uri = `/friend/pools/${this.group.id}/${this.pool.id}`\r\n                }\r\n                this.$router.push(uri)\r\n              } else {\r\n                this.displayError(this.$t('common.fetchFailed'))\r\n              }\r\n            }, err => this.displayError(err))\r\n          }\r\n        })\r\n      },\r\n      add (): PromiseLike<HttpResponse> {\r\n        var url = `${this.$store.state.apiBases.friendservice}${this.$store.state.apiEndpoints.addfriendpoolnet[0]}`\r\n        return this.$http.post(url, this.localPool)\r\n      },\r\n      update (): PromiseLike<HttpResponse> {\r\n        var url = `${this.$store.state.apiBases.friendservice}${this.$store.state.apiEndpoints.updatefriendpoolnet[0]}`\r\n        return this.$http.put(url, this.localPool)\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .pooladdeditnetform {\r\n    background-color:$brand-white;\r\n\r\n    @media (max-width: $media-lg-max) and (min-width: $media-md) {\r\n      box-shadow: inset 30px 0 0px 0px $pools-color-strong;\r\n    }\r\n    @media (max-width: $media-sm-max) {\r\n      box-shadow: inset 15px 0 0px 0px $pools-color-strong;\r\n    }\r\n    .indicator-stripe {\r\n      @media (min-width: $media-xl) {\r\n        box-shadow: inset 50px 0 0px 0px $pools-color-strong;\r\n      }\r\n    }\r\n\r\n    .sectionheader {\r\n      margin: 15px 0;\r\n    }\r\n\r\n    .currentgroup {\r\n      font-weight: bold;\r\n      margin-bottom: 20px;\r\n      display:block;\r\n    }\r\n\r\n    .form-container {\r\n      margin: 0 auto;\r\n      max-width: 900px;\r\n    }\r\n\r\n    .spr-button {\r\n      background-color:$brand-red;\r\n      color:$brand-white;\r\n    }\r\n\r\n    .bottomspacer {\r\n      margin-bottom: 50px;\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolAddEditNetForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolAddEditNetForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PoolAddEditNetForm.vue?vue&type=template&id=7f941dc7\"\nimport script from \"./PoolAddEditNetForm.vue?vue&type=script&lang=ts\"\nexport * from \"./PoolAddEditNetForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PoolAddEditNetForm.vue?vue&type=style&index=0&id=7f941dc7&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"pooladd container\">\r\n    <backbar :title=\"formTitle\" />\r\n    <div v-if=\"group\">\r\n      <PoolAddEditNetForm\r\n        v-if=\"group.netFriendship\"\r\n        :group=\"group\"\r\n      />\r\n      <PoolAddEditStandardForm\r\n        v-else\r\n        :group=\"group\"\r\n      />\r\n    </div>\r\n    <div v-show=\"isLoading\" class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"loading\">\r\n          <div class=\"spinner\">\r\n            <loading />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import loading from '../SPRLoading.vue'\r\n  import backbar from '../BackBar.vue'\r\n  import PoolAddEditStandardForm from './PoolAddEditStandardForm.vue'\r\n  import PoolAddEditNetForm from './PoolAddEditNetForm.vue'\r\n  import { FriendManagementDto } from '@/types'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    isLoading: boolean,\r\n    group: FriendManagementDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'PoolAdd',\r\n    components: {\r\n      loading,\r\n      backbar,\r\n      PoolAddEditStandardForm,\r\n      PoolAddEditNetForm\r\n    },\r\n    props: {\r\n      groupid: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        isLoading: true,\r\n        group: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      formTitle (): LocaleMessage | string {\r\n        return this.$t('poolForm.addTitle')\r\n      }\r\n    },\r\n    mounted () {\r\n      this.isLoading = true\r\n      this.loadFMG().then(x => {\r\n        this.group = x.data\r\n        this.isLoading = false\r\n      }, (err: Response | any) => {\r\n        this.displayError(err)\r\n      })\r\n    },\r\n    methods: {\r\n      loadFMG (): PromiseLike<HttpResponse> {\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationById[0].replace('{0}', this.groupid)\r\n        return this.$http.get(url)\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .pooladd {\r\n    .loading {\r\n      display: flex;\r\n      top: 0;\r\n      left: 0;\r\n      bottom: 0;\r\n      right: 0;\r\n      height: 100%;\r\n      width: 100%;\r\n      .spinner {\r\n        margin: 30px auto;\r\n        color:$brand-red;\r\n      }\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolAdd.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolAdd.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PoolAdd.vue?vue&type=template&id=6af3bae9\"\nimport script from \"./PoolAdd.vue?vue&type=script&lang=ts\"\nexport * from \"./PoolAdd.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PoolAdd.vue?vue&type=style&index=0&id=6af3bae9&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"pooledit container\"},[_c('backbar',{attrs:{\"title\":_vm.formTitle}}),(_vm.pool)?_c('div',[(_vm.group.netFriendship)?_c('PoolAddEditNetForm',{attrs:{\"pool\":_vm.pool,\"group\":_vm.group}}):_c('PoolAddEditStandardForm',{attrs:{\"pool\":_vm.pool,\"group\":_vm.group}})],1):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"pooledit container\">\r\n    <backbar :title=\"formTitle\" />\r\n    <div v-if=\"pool\">\r\n      <PoolAddEditNetForm\r\n        v-if=\"group.netFriendship\"\r\n        :pool=\"pool\"\r\n        :group=\"group\"\r\n      />\r\n      <PoolAddEditStandardForm\r\n        v-else\r\n        :pool=\"pool\"\r\n        :group=\"group\"\r\n      />\r\n    </div>\r\n    <div v-show=\"isLoading\" class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"loading\">\r\n          <div class=\"spinner\">\r\n            <loading />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import loading from '../SPRLoading.vue'\r\n  import backbar from '../BackBar.vue'\r\n  import PoolAddEditStandardForm from './PoolAddEditStandardForm.vue'\r\n  import PoolAddEditNetForm from './PoolAddEditNetForm.vue'\r\n  import { FriendManagementDto, FriendPoolNetDto, FriendPoolStandardDto, FriendPoolStatus } from '@/types'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    isLoading: boolean,\r\n    group: FriendManagementDto | undefined,\r\n    pool: FriendPoolStandardDto | FriendPoolNetDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'PoolEdit',\r\n    components: {\r\n      loading,\r\n      backbar,\r\n      PoolAddEditStandardForm,\r\n      PoolAddEditNetForm\r\n    },\r\n    props: {\r\n      poolid: {\r\n        type: Number,\r\n        required: true\r\n      },\r\n      groupid: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        isLoading: true,\r\n        group: undefined,\r\n        pool: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      formTitle (): LocaleMessage | string {\r\n        return this.$t('poolForm.editTitle')\r\n      }\r\n    },\r\n    mounted () {\r\n      this.isLoading = true\r\n      this.loadFMG().then(x => {\r\n        this.group = x.data\r\n        return this.loadPool()\r\n      }).then(poolresp => {\r\n        this.pool = poolresp.data\r\n        this.isLoading = false\r\n      }, (err: Response | any) => {\r\n        this.displayError(err)\r\n      })\r\n    },\r\n    methods: {\r\n      loadFMG (): PromiseLike<HttpResponse> {\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationById[0].replace('{0}', this.groupid)\r\n        return this.$http.get(url)\r\n      },\r\n      loadPool (): PromiseLike<HttpResponse> {\r\n        var url = this.group?.netFriendship\r\n            ? this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.getfriendpoolnet[0]\r\n            : this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.getfriendpoolstandard[0]\r\n\r\n        url = url.replace('{poolid}', this.poolid)\r\n        return this.$http.get(url)\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .pooledit {\r\n    .loading {\r\n      display: flex;\r\n      top: 0;\r\n      left: 0;\r\n      bottom: 0;\r\n      right: 0;\r\n      height: 100%;\r\n      width: 100%;\r\n      .spinner {\r\n        margin: 30px auto;\r\n        color:$brand-red;\r\n      }\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolEdit.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolEdit.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PoolEdit.vue?vue&type=template&id=3fa3acfe\"\nimport script from \"./PoolEdit.vue?vue&type=script&lang=ts\"\nexport * from \"./PoolEdit.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PoolEdit.vue?vue&type=style&index=0&id=3fa3acfe&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container pooldetail\"},[_c('div',{staticClass:\"row header\"},[_c('div',{staticClass:\"col\"},[(_vm.group)?_c('HomeButton',{attrs:{\"group-id\":_vm.group.id}}):_vm._e(),_c('BackButton')],1)]),(!_vm.isLoading)?_c('div',[(_vm.group.netFriendship)?_c('PoolPreviewNet',{attrs:{\"pool\":_vm.pool},on:{\"enable\":_vm.onEnablePool,\"disable\":_vm.onDisablePool,\"removecustomer\":_vm.onNetCustomerRemoved,\"removevolunteer\":_vm.onNetVolunteerRemoved}}):_c('PoolPreviewStandard',{attrs:{\"pool\":_vm.pool},on:{\"enable\":_vm.onEnablePool,\"disable\":_vm.onDisablePool,\"removecustomer\":_vm.onStandardCustomerRemoved,\"removevolunteer\":_vm.onStandardVolunteerRemoved}})],1):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"poolpreviewstandard\"},[_c('div',{staticClass:\"row content\"},[_c('div',{staticClass:\"col-lg-4 mb-3 mb-lg-0 pool-area\",class:{ 'removed': _vm.pool.status === _vm.$store.state.poolStatus.REMOVED }},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.pool.name)+\" \")])]),_c('div',{staticClass:\"col-12 description\"},[_vm._v(\" \"+_vm._s(_vm.pool.description)+\" \")]),_c('div',{staticClass:\"col-12 shortdescription text-center\"},[_vm._v(\" \"+_vm._s(_vm.pool.shortDescription)+\" \")])]),(_vm.address)?_c('div',{staticClass:\"row iconrow\"},[_c('div',{staticClass:\"column col-2 col-md-1 col-lg-2\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"map-marker-alt\",\"aria-hidden\":\"true\"}})],1),_c('div',{staticClass:\"column col-10 col-md-11 col-lg-10\"},[_vm._v(\" \"+_vm._s(_vm.address)+\" \")])]):_vm._e(),(_vm.pool.assemblyTimes)?_c('div',{staticClass:\"row iconrow\"},[_c('div',{staticClass:\"column col-2 col-md-1 col-lg-2\"},[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'clock'],\"aria-hidden\":\"true\"}})],1),_c('div',{staticClass:\"column col-10 col-md-11 col-lg-10\"},[_vm._v(\" \"+_vm._s(_vm.pool.assemblyTimes)+\" \")])]):_vm._e(),(_vm.pool.contactInfo)?_c('div',{staticClass:\"row iconrow\"},[_c('div',{staticClass:\"column col-2 col-md-1 col-lg-2\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"phone\",\"aria-hidden\":\"true\"}})],1),_c('div',{staticClass:\"column col-10 col-md-11 col-lg-10\"},[_vm._v(\" \"+_vm._s(_vm.pool.contactInfo)+\" \")])]):_vm._e(),(_vm.pool.notes)?_c('div',{staticClass:\"row notes\"},[_c('div',{staticClass:\"column col-12\"},[_vm._v(\" \"+_vm._s(_vm.pool.notes)+\" \")])]):_vm._e(),_c('div',{staticClass:\"row button-row\"},[_c('div',{staticClass:\"col-12 buttons text-center\"},[_c('div',{staticClass:\"edit-pool\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('poolPreview.editPoolButton'),\"click-event\":\"edit\"},on:{\"edit\":_vm.onEditPool}})],1),(_vm.pool.status === _vm.$store.state.poolStatus.ACTIVE)?_c('div',{staticClass:\"disable-pool\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('poolPreview.disablePoolButton'),\"click-event\":\"disable\"},on:{\"disable\":_vm.onDisablePool}})],1):_vm._e(),(_vm.pool.status === _vm.$store.state.poolStatus.REMOVED)?_c('div',{staticClass:\"enable-pool\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('poolPreview.enablePoolButton'),\"click-event\":\"enable\"},on:{\"enable\":_vm.onEnablePool}})],1):_vm._e()])])]),_c('div',{staticClass:\"col-lg-8\"},[_c('div',{staticClass:\"row poolmembers\"},[_c('div',{staticClass:\"col-12\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('poolPreview.customersTitle')))])]),_c('div',{staticClass:\"col-12\"},_vm._l((_vm.pool.customers),function(customer){return _c('poolmemberview',{key:customer.id,attrs:{\"member\":customer,\"type\":\"CUSTOMER\",\"disabled\":_vm.pool.status === _vm.$store.state.poolStatus.REMOVED},on:{\"remove\":_vm.onCustomerRemoved,\"memberclicked\":_vm.onCustomerClicked}})}),1),(!_vm.pool.customers || !_vm.pool.customers.length)?_c('div',{staticClass:\"col-12 text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('poolPreview.noCustomersInPool'))+\" \")]):_vm._e(),_c('div',{staticClass:\"col-12 volunteerstitle\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('poolPreview.volunteersTitle')))])]),_c('div',{staticClass:\"col-12\"},_vm._l((_vm.pool.volunteers),function(volunteer){return _c('poolmemberview',{key:volunteer.id,attrs:{\"member\":volunteer,\"type\":\"VOLUNTEER\",\"disabled\":_vm.pool.status === _vm.$store.state.poolStatus.REMOVED},on:{\"remove\":_vm.onVolunteerRemoved,\"memberclicked\":_vm.onVolunteerClicked}})}),1),(!_vm.pool.volunteers || !_vm.pool.volunteers.length)?_c('div',{staticClass:\"col-12 text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('poolPreview.noVolunteersInPool'))+\" \")]):_vm._e()])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"poolmemberview\",class:{ 'disabled': _vm.disabled, 'customer': _vm.type.toUpperCase() === 'CUSTOMER', 'volunteer': _vm.type.toUpperCase() === 'VOLUNTEER' }},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 namecol\"},[_c('span',{staticClass:\"name\",on:{\"click\":_vm.onMemberClicked}},[_vm._v(_vm._s(_vm.member.firstName)+\" \"+_vm._s(_vm.member.lastName))])]),_c('div',{staticClass:\"col-6 text-right\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('poolPreview.removeMember'),\"click-event\":\"remove\"},on:{\"remove\":_vm.onRemove}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"poolmemberview\" :class=\"{ 'disabled': disabled, 'customer': type.toUpperCase() === 'CUSTOMER', 'volunteer': type.toUpperCase() === 'VOLUNTEER' }\">\r\n    <div class=\"row\">\r\n      <div class=\"col-6 namecol\">\r\n        <span class=\"name\" @click=\"onMemberClicked\">{{ member.firstName }} {{ member.lastName }}</span>\r\n      </div>\r\n      <div class=\"col-6 text-right\">\r\n        <sprbutton :size=\"4\"\r\n                   :title=\"$t('poolPreview.removeMember')\"\r\n                   click-event=\"remove\"\r\n                   @remove=\"onRemove\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import { FriendPoolCustomerSummaryNetDto, FriendPoolCustomerSummaryStandardDto, FriendPoolVolunteerSummaryNetDto, FriendPoolVolunteerSummaryStandardDto } from '@/types'\r\n  export default Vue.extend({\r\n    name: 'PoolMemberView',\r\n    components: { sprbutton },\r\n    props: {\r\n      member: {\r\n        type: Object as () => FriendPoolCustomerSummaryNetDto | FriendPoolCustomerSummaryStandardDto | FriendPoolVolunteerSummaryNetDto | FriendPoolVolunteerSummaryStandardDto,\r\n        required: true\r\n      },\r\n      type: {\r\n        type: String,\r\n        default: 'CUSTOMER',\r\n        validator: (prop: string) => [\r\n          'CUSTOMER',\r\n          'VOLUNTEER'\r\n        ].includes(prop)\r\n      },\r\n      disabled: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    methods: {\r\n      onMemberClicked () {\r\n        this.$emit('memberclicked', this.member)\r\n      },\r\n      onRemove () {\r\n        if (this.disabled) return\r\n        this.$emit('remove', this.member)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .poolmemberview {\r\n    background-color:$brand-white;\r\n    margin: 10px 0;\r\n    padding: 20px 0;\r\n\r\n    &.customer {\r\n      border-left: solid 5px $customer-color-strong;\r\n    }\r\n\r\n    &.volunteer {\r\n      border-left: solid 5px $brand-red;\r\n    }\r\n\r\n    &.disabled {\r\n      border-left: solid 5px $brand-grey7;\r\n      background-color: $brand-grey3;\r\n\r\n      button {\r\n        border-color: $brand-grey7;\r\n        color: $brand-grey7;\r\n        cursor: not-allowed;\r\n\r\n        &:hover {\r\n          background-color:$brand-white;\r\n          color: $brand-grey7;\r\n        }\r\n      }\r\n    }\r\n\r\n    .namecol {\r\n      margin: auto;\r\n      .name {\r\n        text-transform: uppercase;\r\n        color: $brand-red;\r\n        font-weight: 700;\r\n        margin-left: 10px;\r\n        font-size: 13px;\r\n        cursor: pointer;\r\n      }\r\n    }\r\n\r\n    button {\r\n      font-size: 13px;\r\n      padding: 5px 10px;\r\n      margin-right: 10px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolMemberView.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolMemberView.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PoolMemberView.vue?vue&type=template&id=775a2992\"\nimport script from \"./PoolMemberView.vue?vue&type=script&lang=ts\"\nexport * from \"./PoolMemberView.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PoolMemberView.vue?vue&type=style&index=0&id=775a2992&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"poolpreviewstandard\">\r\n    <div class=\"row content\">\r\n      <div class=\"col-lg-4 mb-3 mb-lg-0 pool-area\" :class=\"{ 'removed': pool.status === $store.state.poolStatus.REMOVED }\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <div class=\"title\">\r\n              {{ pool.name }}\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 description\">\r\n            {{ pool.description }}\r\n          </div>\r\n          <div class=\"col-12 shortdescription text-center\">\r\n            {{ pool.shortDescription }}\r\n          </div>\r\n        </div>\r\n        <div v-if=\"address\" class=\"row iconrow\">\r\n          <div class=\"column col-2 col-md-1 col-lg-2\">\r\n            <font-awesome-icon icon=\"map-marker-alt\" aria-hidden=\"true\" />\r\n          </div>\r\n          <div class=\"column col-10 col-md-11 col-lg-10\">\r\n            {{ address }}\r\n          </div>\r\n        </div>\r\n        <div v-if=\"pool.assemblyTimes\" class=\"row iconrow\">\r\n          <div class=\"column col-2 col-md-1 col-lg-2\">\r\n            <font-awesome-icon :icon=\"['far', 'clock']\" aria-hidden=\"true\" />\r\n          </div>\r\n          <div class=\"column col-10 col-md-11 col-lg-10\">\r\n            {{ pool.assemblyTimes }}\r\n          </div>\r\n        </div>\r\n        <div v-if=\"pool.contactInfo\" class=\"row iconrow\">\r\n          <div class=\"column col-2 col-md-1 col-lg-2\">\r\n            <font-awesome-icon icon=\"phone\" aria-hidden=\"true\" />\r\n          </div>\r\n          <div class=\"column col-10 col-md-11 col-lg-10\">\r\n            {{ pool.contactInfo }}\r\n          </div>\r\n        </div>\r\n        <div v-if=\"pool.notes\" class=\"row notes\">\r\n          <div class=\"column col-12\">\r\n            {{ pool.notes }}\r\n          </div>\r\n        </div>\r\n        <div class=\"row button-row\">\r\n          <div class=\"col-12 buttons text-center\">\r\n            <div class=\"edit-pool\">\r\n              <sprbutton :size=\"4\"\r\n                         :title=\"$t('poolPreview.editPoolButton')\"\r\n                         click-event=\"edit\"\r\n                         @edit=\"onEditPool\"\r\n              />\r\n            </div>\r\n            <div v-if=\"pool.status === $store.state.poolStatus.ACTIVE\" class=\"disable-pool\">\r\n              <sprbutton :size=\"4\"\r\n                         :title=\"$t('poolPreview.disablePoolButton')\"\r\n                         click-event=\"disable\"\r\n                         @disable=\"onDisablePool\"\r\n              />\r\n            </div>\r\n            <div v-if=\"pool.status === $store.state.poolStatus.REMOVED\" class=\"enable-pool\">\r\n              <sprbutton :size=\"4\"\r\n                         :title=\"$t('poolPreview.enablePoolButton')\"\r\n                         click-event=\"enable\"\r\n                         @enable=\"onEnablePool\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-lg-8\">\r\n        <div class=\"row poolmembers\">\r\n          <div class=\"col-12\">\r\n            <h4>{{ $t('poolPreview.customersTitle') }}</h4>\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <poolmemberview\r\n              v-for=\"customer in pool.customers\"\r\n              :key=\"customer.id\"\r\n              :member=\"customer\"\r\n              type=\"CUSTOMER\"\r\n              :disabled=\"pool.status === $store.state.poolStatus.REMOVED\"\r\n              @remove=\"onCustomerRemoved\"\r\n              @memberclicked=\"onCustomerClicked\"\r\n            />\r\n          </div>\r\n          <div v-if=\"!pool.customers || !pool.customers.length\" class=\"col-12 text-center\">\r\n            {{ $t('poolPreview.noCustomersInPool') }}\r\n          </div>\r\n          <div class=\"col-12 volunteerstitle\">\r\n            <h4>{{ $t('poolPreview.volunteersTitle') }}</h4>\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <poolmemberview\r\n              v-for=\"volunteer in pool.volunteers\"\r\n              :key=\"volunteer.id\" :member=\"volunteer\"\r\n              type=\"VOLUNTEER\"\r\n              :disabled=\"pool.status === $store.state.poolStatus.REMOVED\"\r\n              @remove=\"onVolunteerRemoved\"\r\n              @memberclicked=\"onVolunteerClicked\"\r\n            />\r\n          </div>\r\n          <div v-if=\"!pool.volunteers || !pool.volunteers.length\" class=\"col-12 text-center\">\r\n            {{ $t('poolPreview.noVolunteersInPool') }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import poolmemberview from './PoolMemberView.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import locationhelper from '../../mixins/locationutils.js'\r\n  import addresshelper from '@/helpers/addresshelper'\r\n  import { FriendPoolCustomerSummaryStandardDto, FriendPoolStandardDto, FriendPoolVolunteerSummaryStandardDto } from '@/types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'PoolPreviewStandard',\r\n    components: { poolmemberview, sprbutton },\r\n    mixins: [locationhelper],\r\n    props: {\r\n      pool: {\r\n        type: Object as () => FriendPoolStandardDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      address (): string {\r\n        if (!this.pool.id) return ''\r\n        return addresshelper.formatAddress(this.pool.address, this.pool.postalCode, this.pool.city)\r\n      }\r\n    },\r\n    methods: {\r\n      onEditPool () {\r\n        const uri = `/friend/pools/${this.pool.friendManagementGroupId}/${this.pool.id}/edit`\r\n        this.$router.push(uri)\r\n      },\r\n      onEnablePool () {\r\n        this.$emit('enable')\r\n      },\r\n      onDisablePool () {\r\n        this.$emit('disable')\r\n      },\r\n      onCustomerRemoved (customer: FriendPoolCustomerSummaryStandardDto) {\r\n        this.$emit('removecustomer', customer)\r\n      },\r\n      onVolunteerRemoved (volunteer: FriendPoolVolunteerSummaryStandardDto) {\r\n        this.$emit('removevolunteer', volunteer)\r\n      },\r\n      onCustomerClicked (customer: FriendPoolCustomerSummaryStandardDto) {\r\n        this.$router.push(`/friend/customerpreview/${this.pool.friendManagementGroupId}/${customer.customerProfileStandardId}`)\r\n      },\r\n      onVolunteerClicked (volunteer: FriendPoolVolunteerSummaryStandardDto) {\r\n        this.$router.push(`/friend/volunteerpreview/${this.pool.friendManagementGroupId}/${volunteer.volunteerId}`)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .poolpreviewstandard {\r\n    .header {\r\n      margin-top: 10px;\r\n      min-height: 48px;\r\n      .nav-header {\r\n        border-bottom: 0;\r\n      }\r\n    }\r\n\r\n    .content {\r\n      .title {\r\n        text-transform: uppercase;\r\n        color: $brand-red;\r\n        font-weight: 700;\r\n        margin-bottom: 15px;\r\n      }\r\n      .description {\r\n        font-size: 0.8em;\r\n        font-weight: 700;\r\n        margin-bottom: 15px;\r\n      }\r\n      .shortdescription {\r\n        font-size: 0.8em;\r\n        text-transform: italic;\r\n        color: $brand-red;\r\n        margin-bottom: 15px;\r\n      }\r\n      .pool-area {\r\n        padding-top: 30px;\r\n        background-color: $brand-white;\r\n        border-left: solid 5px $pools-color-strong;\r\n\r\n        &.removed {\r\n          border-left: solid 5px $brand-grey7;\r\n          background-color: $brand-grey3;\r\n        }\r\n\r\n        .iconrow {\r\n          font-size: 0.8em;\r\n          padding: 5px 0;\r\n          border-bottom: solid 1px $brand-grey3;\r\n\r\n          .column {\r\n            margin: auto;\r\n            svg {\r\n              color:$brand-red;\r\n              font-size: 2em;\r\n              text-align: center;\r\n            }\r\n          }\r\n        }\r\n        .notes {\r\n          font-size: 0.8em;\r\n          padding: 15px 0;\r\n        }\r\n        .button-row {\r\n          text-align: center;\r\n          margin-top: 15px;\r\n          .load-indicator {\r\n            width: 100%;\r\n            margin-bottom: 15px;\r\n            color: $brand-red;\r\n          }\r\n          button {\r\n            margin-bottom: 15px;\r\n            &.button-disabled {\r\n              border-color: $brand-grey4;\r\n              color: $brand-grey4;\r\n              cursor: not-allowed;\r\n              outline: none;\r\n              &:hover {\r\n                background-color:$brand-white;\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n      .poolmembers {\r\n        padding: 15px;\r\n\r\n        .volunteerstitle {\r\n          margin-top: 20px;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolPreviewStandard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolPreviewStandard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PoolPreviewStandard.vue?vue&type=template&id=7f59635e\"\nimport script from \"./PoolPreviewStandard.vue?vue&type=script&lang=ts\"\nexport * from \"./PoolPreviewStandard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PoolPreviewStandard.vue?vue&type=style&index=0&id=7f59635e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"poolpreviewnet\"},[_c('div',{staticClass:\"row content\"},[_c('div',{staticClass:\"col-lg-4 mb-3 mb-lg-0 pool-area\",class:{ 'removed': _vm.pool.status === _vm.$store.state.poolStatus.REMOVED }},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.pool.name)+\" \")])]),_c('div',{staticClass:\"col-12 description\"},[_vm._v(\" \"+_vm._s(_vm.pool.description)+\" \")]),_c('div',{staticClass:\"col-12 shortdescription text-center\"},[_vm._v(\" \"+_vm._s(_vm.pool.shortDescription)+\" \")])]),(_vm.address)?_c('div',{staticClass:\"row iconrow\"},[_c('div',{staticClass:\"column col-2 col-md-1 col-lg-2\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"map-marker-alt\",\"aria-hidden\":\"true\"}})],1),_c('div',{staticClass:\"column col-10 col-md-11 col-lg-10\"},[_vm._v(\" \"+_vm._s(_vm.address)+\" \")])]):_vm._e(),(_vm.pool.assemblyTimes)?_c('div',{staticClass:\"row iconrow\"},[_c('div',{staticClass:\"column col-2 col-md-1 col-lg-2\"},[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'clock'],\"aria-hidden\":\"true\"}})],1),_c('div',{staticClass:\"column col-10 col-md-11 col-lg-10\"},[_vm._v(\" \"+_vm._s(_vm.pool.assemblyTimes)+\" \")])]):_vm._e(),(_vm.pool.contactInfo)?_c('div',{staticClass:\"row iconrow\"},[_c('div',{staticClass:\"column col-2 col-md-1 col-lg-2\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"phone\",\"aria-hidden\":\"true\"}})],1),_c('div',{staticClass:\"column col-10 col-md-11 col-lg-10\"},[_vm._v(\" \"+_vm._s(_vm.pool.contactInfo)+\" \")])]):_vm._e(),(_vm.pool.notes)?_c('div',{staticClass:\"row notes\"},[_c('div',{staticClass:\"column col-12\"},[_vm._v(\" \"+_vm._s(_vm.pool.notes)+\" \")])]):_vm._e(),_c('div',{staticClass:\"row button-row\"},[_c('div',{staticClass:\"col-12 buttons text-center\"},[_c('div',{staticClass:\"edit-pool\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('poolPreview.editPoolButton'),\"click-event\":\"edit\"},on:{\"edit\":_vm.onEditPool}})],1),(_vm.pool.status === _vm.$store.state.poolStatus.ACTIVE)?_c('div',{staticClass:\"disable-pool\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('poolPreview.disablePoolButton'),\"click-event\":\"disable\"},on:{\"disable\":_vm.onDisablePool}})],1):_vm._e(),(_vm.pool.status === _vm.$store.state.poolStatus.REMOVED)?_c('div',{staticClass:\"enable-pool\"},[_c('sprbutton',{attrs:{\"size\":4,\"title\":_vm.$t('poolPreview.enablePoolButton'),\"click-event\":\"enable\"},on:{\"enable\":_vm.onEnablePool}})],1):_vm._e()])])]),_c('div',{staticClass:\"col-lg-8\"},[_c('div',{staticClass:\"row poolmembers\"},[_c('div',{staticClass:\"col-12\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('poolPreview.customersTitle')))])]),_c('div',{staticClass:\"col-12\"},_vm._l((_vm.pool.customers),function(customer){return _c('poolmemberview',{key:customer.id,attrs:{\"member\":customer,\"type\":\"CUSTOMER\",\"disabled\":_vm.pool.status === _vm.$store.state.poolStatus.REMOVED},on:{\"remove\":_vm.onCustomerRemoved,\"memberclicked\":_vm.onCustomerClicked}})}),1),(!_vm.pool.customers || !_vm.pool.customers.length)?_c('div',{staticClass:\"col-12 text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('poolPreview.noCustomersInPool'))+\" \")]):_vm._e(),_c('div',{staticClass:\"col-12 volunteerstitle\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('poolPreview.volunteersTitle')))])]),_c('div',{staticClass:\"col-12\"},_vm._l((_vm.pool.volunteers),function(volunteer){return _c('poolmemberview',{key:volunteer.id,attrs:{\"member\":volunteer,\"type\":\"VOLUNTEER\",\"disabled\":_vm.pool.status === _vm.$store.state.poolStatus.REMOVED},on:{\"remove\":_vm.onVolunteerRemoved,\"memberclicked\":_vm.onVolunteerClicked}})}),1),(!_vm.pool.volunteers || !_vm.pool.volunteers.length)?_c('div',{staticClass:\"col-12 text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('poolPreview.noVolunteersInPool'))+\" \")]):_vm._e()])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"poolpreviewnet\">\r\n    <div class=\"row content\">\r\n      <div class=\"col-lg-4 mb-3 mb-lg-0 pool-area\" :class=\"{ 'removed': pool.status === $store.state.poolStatus.REMOVED }\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <div class=\"title\">\r\n              {{ pool.name }}\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 description\">\r\n            {{ pool.description }}\r\n          </div>\r\n          <div class=\"col-12 shortdescription text-center\">\r\n            {{ pool.shortDescription }}\r\n          </div>\r\n        </div>\r\n        <div v-if=\"address\" class=\"row iconrow\">\r\n          <div class=\"column col-2 col-md-1 col-lg-2\">\r\n            <font-awesome-icon icon=\"map-marker-alt\" aria-hidden=\"true\" />\r\n          </div>\r\n          <div class=\"column col-10 col-md-11 col-lg-10\">\r\n            {{ address }}\r\n          </div>\r\n        </div>\r\n        <div v-if=\"pool.assemblyTimes\" class=\"row iconrow\">\r\n          <div class=\"column col-2 col-md-1 col-lg-2\">\r\n            <font-awesome-icon :icon=\"['far', 'clock']\" aria-hidden=\"true\" />\r\n          </div>\r\n          <div class=\"column col-10 col-md-11 col-lg-10\">\r\n            {{ pool.assemblyTimes }}\r\n          </div>\r\n        </div>\r\n        <div v-if=\"pool.contactInfo\" class=\"row iconrow\">\r\n          <div class=\"column col-2 col-md-1 col-lg-2\">\r\n            <font-awesome-icon icon=\"phone\" aria-hidden=\"true\" />\r\n          </div>\r\n          <div class=\"column col-10 col-md-11 col-lg-10\">\r\n            {{ pool.contactInfo }}\r\n          </div>\r\n        </div>\r\n        <div v-if=\"pool.notes\" class=\"row notes\">\r\n          <div class=\"column col-12\">\r\n            {{ pool.notes }}\r\n          </div>\r\n        </div>\r\n        <div class=\"row button-row\">\r\n          <div class=\"col-12 buttons text-center\">\r\n            <div class=\"edit-pool\">\r\n              <sprbutton :size=\"4\"\r\n                         :title=\"$t('poolPreview.editPoolButton')\"\r\n                         click-event=\"edit\"\r\n                         @edit=\"onEditPool\"\r\n              />\r\n            </div>\r\n            <div v-if=\"pool.status === $store.state.poolStatus.ACTIVE\" class=\"disable-pool\">\r\n              <sprbutton :size=\"4\"\r\n                         :title=\"$t('poolPreview.disablePoolButton')\"\r\n                         click-event=\"disable\"\r\n                         @disable=\"onDisablePool\"\r\n              />\r\n            </div>\r\n            <div v-if=\"pool.status === $store.state.poolStatus.REMOVED\" class=\"enable-pool\">\r\n              <sprbutton :size=\"4\"\r\n                         :title=\"$t('poolPreview.enablePoolButton')\"\r\n                         click-event=\"enable\"\r\n                         @enable=\"onEnablePool\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-lg-8\">\r\n        <div class=\"row poolmembers\">\r\n          <div class=\"col-12\">\r\n            <h4>{{ $t('poolPreview.customersTitle') }}</h4>\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <poolmemberview\r\n              v-for=\"customer in pool.customers\"\r\n              :key=\"customer.id\"\r\n              :member=\"customer\"\r\n              type=\"CUSTOMER\"\r\n              :disabled=\"pool.status === $store.state.poolStatus.REMOVED\"\r\n              @remove=\"onCustomerRemoved\"\r\n              @memberclicked=\"onCustomerClicked\"\r\n            />\r\n          </div>\r\n          <div v-if=\"!pool.customers || !pool.customers.length\" class=\"col-12 text-center\">\r\n            {{ $t('poolPreview.noCustomersInPool') }}\r\n          </div>\r\n          <div class=\"col-12 volunteerstitle\">\r\n            <h4>{{ $t('poolPreview.volunteersTitle') }}</h4>\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <poolmemberview\r\n              v-for=\"volunteer in pool.volunteers\"\r\n              :key=\"volunteer.id\" :member=\"volunteer\"\r\n              type=\"VOLUNTEER\"\r\n              :disabled=\"pool.status === $store.state.poolStatus.REMOVED\"\r\n              @remove=\"onVolunteerRemoved\"\r\n              @memberclicked=\"onVolunteerClicked\"\r\n            />\r\n          </div>\r\n          <div v-if=\"!pool.volunteers || !pool.volunteers.length\" class=\"col-12 text-center\">\r\n            {{ $t('poolPreview.noVolunteersInPool') }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import * as _ from 'lodash'\r\n  import poolmemberview from './PoolMemberView.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import locationhelper from '../../mixins/locationutils.js'\r\n  import addresshelper from '@/helpers/addresshelper'\r\n  import { FriendPoolCustomerSummaryNetDto, FriendPoolNetDto, FriendPoolVolunteerSummaryNetDto } from '@/types/index'\r\n\r\n  export default Vue.extend({\r\n    name: 'PoolPreviewNet',\r\n    components: { poolmemberview, sprbutton },\r\n    mixins: [locationhelper],\r\n    props: {\r\n      pool: {\r\n        type: Object as () => FriendPoolNetDto,\r\n        required: true\r\n      }\r\n    },\r\n    computed: {\r\n      address (): string {\r\n        if (!this.pool.id) return ''\r\n        return addresshelper.formatAddress(this.pool.address, this.pool.postalCode, this.pool.city)\r\n      }\r\n    },\r\n    methods: {\r\n      onEditPool () {\r\n        const uri = `/friend/pools/${this.pool.friendManagementGroupId}/${this.pool.id}/edit`\r\n        this.$router.push(uri)\r\n      },\r\n      onEnablePool () {\r\n        this.$emit('enable')\r\n      },\r\n      onDisablePool () {\r\n        this.$emit('disable')\r\n      },\r\n      onCustomerRemoved (customer: FriendPoolCustomerSummaryNetDto) {\r\n        this.$emit('removecustomer', customer)\r\n      },\r\n      onVolunteerRemoved (volunteer: FriendPoolVolunteerSummaryNetDto) {\r\n        this.$emit('removevolunteer', volunteer)\r\n      },\r\n      onCustomerClicked (customer: FriendPoolCustomerSummaryNetDto) {\r\n        this.$router.push(`/friend/customerpreview/${this.pool.friendManagementGroupId}/${customer.customerProfileNetId}`)\r\n      },\r\n      onVolunteerClicked (volunteer: FriendPoolVolunteerSummaryNetDto) {\r\n        this.$router.push(`/friend/volunteerpreview/${this.pool.friendManagementGroupId}/${volunteer.volunteerId}`)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .poolpreviewnet {\r\n    .header {\r\n      margin-top: 10px;\r\n      min-height: 48px;\r\n      .nav-header {\r\n        border-bottom: 0;\r\n      }\r\n    }\r\n\r\n    .content {\r\n      .title {\r\n        text-transform: uppercase;\r\n        color: $brand-red;\r\n        font-weight: 700;\r\n        margin-bottom: 15px;\r\n      }\r\n      .description {\r\n        font-size: 0.8em;\r\n        font-weight: 700;\r\n        margin-bottom: 15px;\r\n      }\r\n      .shortdescription {\r\n        font-size: 0.8em;\r\n        text-transform: italic;\r\n        color: $brand-red;\r\n        margin-bottom: 15px;\r\n      }\r\n      .pool-area {\r\n        padding-top: 30px;\r\n        background-color: $brand-white;\r\n        border-left: solid 5px $pools-color-strong;\r\n\r\n        &.removed {\r\n          border-left: solid 5px $brand-grey7;\r\n          background-color: $brand-grey3;\r\n        }\r\n\r\n        .iconrow {\r\n          font-size: 0.8em;\r\n          padding: 5px 0;\r\n          border-bottom: solid 1px $brand-grey3;\r\n\r\n          .column {\r\n            margin: auto;\r\n            svg {\r\n              color:$brand-red;\r\n              font-size: 2em;\r\n              text-align: center;\r\n            }\r\n          }\r\n        }\r\n        .notes {\r\n          font-size: 0.8em;\r\n          padding: 15px 0;\r\n        }\r\n        .button-row {\r\n          text-align: center;\r\n          margin-top: 15px;\r\n          .load-indicator {\r\n            width: 100%;\r\n            margin-bottom: 15px;\r\n            color: $brand-red;\r\n          }\r\n          button {\r\n            margin-bottom: 15px;\r\n            &.button-disabled {\r\n              border-color: $brand-grey4;\r\n              color: $brand-grey4;\r\n              cursor: not-allowed;\r\n              outline: none;\r\n              &:hover {\r\n                background-color:$brand-white;\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n      .poolmembers {\r\n        padding: 15px;\r\n\r\n        .volunteerstitle {\r\n          margin-top: 20px;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolPreviewNet.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolPreviewNet.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PoolPreviewNet.vue?vue&type=template&id=462cbc66\"\nimport script from \"./PoolPreviewNet.vue?vue&type=script&lang=ts\"\nexport * from \"./PoolPreviewNet.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PoolPreviewNet.vue?vue&type=style&index=0&id=462cbc66&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"container pooldetail\">\r\n    <div class=\"row header\">\r\n      <div class=\"col\">\r\n        <HomeButton\r\n          v-if=\"group\"\r\n          :group-id=\"group.id\"\r\n        />\r\n        <BackButton />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"!isLoading\">\r\n      <PoolPreviewNet\r\n        v-if=\"group.netFriendship\"\r\n        :pool=\"pool\"\r\n        @enable=\"onEnablePool\"\r\n        @disable=\"onDisablePool\"\r\n        @removecustomer=\"onNetCustomerRemoved\"\r\n        @removevolunteer=\"onNetVolunteerRemoved\"\r\n      />\r\n      <PoolPreviewStandard\r\n        v-else\r\n        :pool=\"pool\"\r\n        @enable=\"onEnablePool\"\r\n        @disable=\"onDisablePool\"\r\n        @removecustomer=\"onStandardCustomerRemoved\"\r\n        @removevolunteer=\"onStandardVolunteerRemoved\"\r\n      />\r\n    </div>\r\n    <div v-show=\"isLoading\" class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"loading\">\r\n          <div class=\"spinner\">\r\n            <loading />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n  import loading from '../SPRLoading.vue'\r\n  import BackButton from '../BackButton.vue'\r\n  import HomeButton from '../HomeButton.vue'\r\n  import PoolPreviewStandard from './PoolPreviewStandard.vue'\r\n  import PoolPreviewNet from './PoolPreviewNet.vue'\r\n  import { FriendManagementDto, FriendPoolNetDto, FriendPoolStandardDto, FriendPoolCustomerSummaryStandardDto, FriendPoolCustomerSummaryNetDto, FriendPoolVolunteerSummaryStandardDto, FriendPoolVolunteerSummaryNetDto, FriendPoolStatus } from '@/types'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    isLoading: boolean,\r\n    group: FriendManagementDto | undefined,\r\n    pool: FriendPoolStandardDto | FriendPoolNetDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'PoolDetail',\r\n    components: { loading, BackButton, HomeButton, PoolPreviewStandard, PoolPreviewNet },\r\n    props: {\r\n      groupid: {\r\n        type: Number,\r\n        required: true\r\n      },\r\n      poolid: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        isLoading: true,\r\n        group: undefined,\r\n        pool: undefined\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.isLoading = true\r\n      this.loadFMG().then(x => {\r\n        this.group = x.data\r\n        return this.loadPool()\r\n      }).then(poolresp => {\r\n        this.pool = poolresp.data\r\n        this.isLoading = false\r\n      }, (err: Response | any) => {\r\n        this.displayError(err)\r\n      })\r\n    },\r\n    methods: {\r\n      loadFMG (): PromiseLike<HttpResponse> {\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationById[0].replace('{0}', this.groupid)\r\n        return this.$http.get(url)\r\n      },\r\n      loadPool (): PromiseLike<HttpResponse> {\r\n        var url = this.group?.netFriendship\r\n            ? this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.getfriendpoolnet[0]\r\n            : this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.getfriendpoolstandard[0]\r\n\r\n        url = url.replace('{poolid}', this.poolid)\r\n        return this.$http.get(url)\r\n      },\r\n      onEnablePool (): void {\r\n        this.setPoolStatus(FriendPoolStatus.Active)\r\n      },\r\n      onDisablePool (): void {\r\n        this.setPoolStatus(FriendPoolStatus.Removed)\r\n      },\r\n      setPoolStatus (status: FriendPoolStatus): void {\r\n        this.isLoading = true\r\n        var url = this.group?.netFriendship\r\n          ? this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.setfriendpoolstatusnet[0]\r\n          : this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.setfriendpoolstatusstandard[0]\r\n\r\n        url = url.replace('{poolid}', this.pool?.id).replace('{status}', status)\r\n        this.$http.put(url).then((result) => {\r\n          if (this.pool) {\r\n            this.pool.status = status\r\n            this.isLoading = false\r\n          }\r\n        }, (err: Response | any) => {\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      onStandardCustomerRemoved (customer: FriendPoolCustomerSummaryStandardDto): void {\r\n        if (!this.pool) return\r\n        const url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.removecustomerfrompoolstandard[0].replace('{poolid}', this.pool?.id).replace('{customerid}', customer.customerProfileStandardId)}`\r\n        this.$http.delete(url).then((result) => {\r\n          const pc = this.pool?.customers as FriendPoolCustomerSummaryStandardDto[]\r\n          var cIndex = _.findIndex(pc, (c) => {\r\n            return c.customerProfileStandardId === customer.customerProfileStandardId\r\n          })\r\n          if (cIndex > -1) {\r\n            if (this.pool) {\r\n              this.pool.customers.splice(cIndex, 1)\r\n            }\r\n          }\r\n        }, (err: Response | any) => {\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      onStandardVolunteerRemoved (volunteer: FriendPoolVolunteerSummaryStandardDto): void {\r\n        if (!this.pool) return\r\n        const url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.removevolunteerfrompoolstandard[0].replace('{poolid}', this.pool?.id).replace('{volunteerid}', volunteer.volunteerId)}`\r\n        this.$http.delete(url).then((result) => {\r\n          const pv = this.pool?.volunteers as FriendPoolVolunteerSummaryStandardDto[]\r\n          var cIndex = _.findIndex(pv, (v) => {\r\n            return v.friendVolunteerProfileStandardId === volunteer.friendVolunteerProfileStandardId\r\n          })\r\n          if (cIndex > -1) {\r\n            if (this.pool) {\r\n              this.pool.volunteers.splice(cIndex, 1)\r\n            }\r\n          }\r\n        }, (err: Response | any) => {\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      onNetCustomerRemoved (customer: FriendPoolCustomerSummaryNetDto): void {\r\n        if (!this.pool) return\r\n        const url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.removecustomerfrompoolnet[0].replace('{poolid}', this.pool?.id).replace('{customerid}', customer.customerProfileNetId)}`\r\n        const pc = (this.pool?.customers as any) as FriendPoolCustomerSummaryNetDto[]\r\n        this.$http.delete(url).then((result) => {\r\n          var cIndex: number = _.findIndex(pc, (c: FriendPoolCustomerSummaryNetDto) => {\r\n            return c.customerProfileNetId === customer.customerProfileNetId\r\n          })\r\n          if (cIndex > -1) {\r\n            if (this.pool) {\r\n              this.pool.customers.splice(cIndex, 1)\r\n            }\r\n          }\r\n        }, (err: Response | any) => {\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      onNetVolunteerRemoved (volunteer: FriendPoolVolunteerSummaryNetDto): void {\r\n        if (!this.pool) return\r\n        const url = `${this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.removevolunteerfrompoolnet[0].replace('{poolid}', this.pool?.id).replace('{volunteerid}', volunteer.volunteerId)}`\r\n        this.$http.delete(url).then((result) => {\r\n          var pv = this.pool?.volunteers as FriendPoolVolunteerSummaryNetDto[]\r\n          var cIndex: number = _.findIndex(pv, (v: FriendPoolVolunteerSummaryNetDto) => {\r\n            return v.friendVolunteerProfileNetId === volunteer.friendVolunteerProfileNetId\r\n          })\r\n          if (cIndex > -1) {\r\n            if (this.pool) {\r\n              this.pool.volunteers.splice(cIndex, 1)\r\n            }\r\n          }\r\n        }, (err: Response | any) => {\r\n          this.displayError(err)\r\n        })\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .pooldetail {\r\n    .header {\r\n      margin-top: 10px;\r\n      margin-bottom: 15px;\r\n    }\r\n    .loading {\r\n      display: flex;\r\n      top: 0;\r\n      left: 0;\r\n      bottom: 0;\r\n      right: 0;\r\n      height: 100%;\r\n      width: 100%;\r\n      .spinner {\r\n        margin: 30px auto;\r\n        color:$brand-red;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolDetail.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolDetail.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PoolDetail.vue?vue&type=template&id=db54a1ba\"\nimport script from \"./PoolDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PoolDetail.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PoolDetail.vue?vue&type=style&index=0&id=db54a1ba&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.transformed)?_c('div',{staticClass:\"translations container\"},[_c('div',{staticClass:\"row\"},_vm._l((_vm.transformed),function(lang,index){return _c('div',{key:index,staticClass:\"col-12 col-md-4\",attrs:{\"id\":lang.lang}},[_c('h2',[_vm._v(_vm._s(lang.lang))]),_vm._l((lang.cats),function(cat,catindex){return _c('div',{key:catindex,attrs:{\"id\":lang.lang + '_' + cat.cat}},_vm._l((cat.keys),function(key,catkey){return _c('div',{key:catkey},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 my-2\"},[_c('font-awesome-icon',{staticClass:\"brand-red edit-icon\",attrs:{\"icon\":\"edit\",\"title\":\"cms.editorHover\"},on:{\"click\":function($event){return _vm.editTranslation(key.value, lang.lang, cat.cat, key.key)}}}),_c('span',{staticClass:\"translation-key\"},[_vm._v(_vm._s(lang.lang)+\".\"+_vm._s(cat.cat)+\".\"+_vm._s(key.key))]),_c('br'),_c('span',{directives:[{name:\"linkified\",rawName:\"v-linkified:options\",value:({ nl2br: true }),expression:\"{ nl2br: true }\",arg:\"options\"}],domProps:{\"innerHTML\":_vm._s(key.value)}})],1)])])}),0)})],2)}),0),_c('b-modal',{attrs:{\"title\":_vm.editing ? `${_vm.editing.lang}.${_vm.editing.cat}.${_vm.editing.key}` : ''},model:{value:(_vm.editorOpen),callback:function ($$v) {_vm.editorOpen=$$v},expression:\"editorOpen\"}},[(_vm.saving)?_c('div',{staticClass:\"col-12 text-center brand-red\"},[_c('loading')],1):_vm._e(),(!_vm.saving && _vm.editing)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model.lazy\",value:(_vm.editing.value),expression:\"editing.value\",modifiers:{\"lazy\":true}}],staticStyle:{\"width\":\"100%\"},attrs:{\"placeholder\":_vm.$t('cms.newTranslation'),\"is-valid\":true,\"name\":\"cms.translationFor\",\"required\":false,\"rows\":\"10\"},domProps:{\"value\":(_vm.editing.value)},on:{\"change\":function($event){return _vm.$set(_vm.editing, \"value\", $event.target.value)}}})])]):_vm._e(),_c('div',{staticClass:\"container-fluid\",attrs:{\"slot\":\"modal-footer\"},slot:\"modal-footer\"},[_c('div',{staticClass:\"row\"},[(!_vm.saving)?_c('div',{staticClass:\"col-12 text-right\"},[_c('sprbutton',{staticClass:\"spr-redborder d-block mx-auto my-1\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('cms.save'),\"click-event\":\"sav\"},on:{\"sav\":_vm.saveTranslation}}),_c('sprbutton',{staticClass:\"spr-redborder d-block mx-auto my-1\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('cms.cancel'),\"click-event\":\"can\"},on:{\"can\":function($event){_vm.editorOpen = false}}})],1):_vm._e()])])])],1):_c('div',[_vm._v(\" cms.loading \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"transformed\" class=\"translations container\">\r\n    <div class=\"row\">\r\n      <div v-for=\"(lang, index) in transformed\" :id=\"lang.lang\" :key=\"index\" class=\"col-12 col-md-4\">\r\n        <h2>{{ lang.lang }}</h2>\r\n        <div v-for=\"(cat, catindex) in lang.cats\" :id=\"lang.lang + '_' + cat.cat\" :key=\"catindex\">\r\n          <div v-for=\"(key, catkey) in cat.keys\" :key=\"catkey\">\r\n            <div class=\"row\">\r\n              <div class=\"col-12 my-2\">\r\n                <font-awesome-icon\r\n                  icon=\"edit\"\r\n                  class=\"brand-red edit-icon\"\r\n                  title=\"cms.editorHover\"\r\n                  @click=\"editTranslation(key.value, lang.lang, cat.cat, key.key)\"\r\n                />\r\n                <span class=\"translation-key\">{{ lang.lang }}.{{ cat.cat }}.{{ key.key }}</span>\r\n                <br>\r\n                <!-- eslint-disable-next-line vue/no-v-html -->\r\n                <span v-linkified:options=\"{ nl2br: true }\" v-html=\"key.value\" />\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Dialog -->\r\n    <b-modal v-model=\"editorOpen\" :title=\"editing ? `${editing.lang}.${editing.cat}.${editing.key}` : ''\">\r\n      <div v-if=\"saving\" class=\"col-12 text-center brand-red\">\r\n        <loading />\r\n      </div>\r\n      <div v-if=\"!saving && editing\" class=\"row\">\r\n        <div class=\"col-12\">\r\n          <textarea v-model.lazy=\"editing.value\"\r\n          :placeholder=\"$t('cms.newTranslation')\"\r\n          :is-valid=\"true\"\r\n          name=\"cms.translationFor\"\r\n          :required=\"false\"\r\n          style=\"width: 100%;\"\r\n          rows=\"10\">\r\n        </textarea>        \r\n      </div>\r\n      </div>\r\n      <div slot=\"modal-footer\" class=\"container-fluid\">\r\n        <div class=\"row\">\r\n          <div v-if=\"!saving\" class=\"col-12 text-right\">\r\n            <sprbutton type=\"primary\"\r\n                       :size=\"1\"\r\n                       :title=\"$t('cms.save')\"\r\n                       class=\"spr-redborder d-block mx-auto my-1\"\r\n                       click-event=\"sav\"\r\n                       @sav=\"saveTranslation\"\r\n            />\r\n            <sprbutton type=\"primary\"\r\n                       :size=\"1\"\r\n                       :title=\"$t('cms.cancel')\"\r\n                       class=\"spr-redborder d-block mx-auto my-1\"\r\n                       click-event=\"can\"\r\n                       @can=\"editorOpen = false\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </b-modal>\r\n  </div>\r\n  <div v-else>\r\n    cms.loading\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n  import loading from '../SPRLoading.vue'\r\n\r\n  export default {\r\n    name: 'Translations',\r\n    components: {\r\n      sprbutton, loading\r\n    },\r\n    data: function () {\r\n      return {\r\n        translation: {},\r\n        transformed: null,\r\n        editing: null,\r\n        editorOpen: false,\r\n        saving: false\r\n      }\r\n    },\r\n    computed: {\r\n      schema: function () {\r\n        return this.translation.schema\r\n      }\r\n    },\r\n    mounted: function () {\r\n      this.getTranslations()\r\n    },\r\n    methods: {\r\n      editTranslation: function (val, lang, cat, key) {\r\n        this.editorOpen = true\r\n        this.editing = {\r\n          original: val.slice(0),\r\n          value: val.slice(0),\r\n          lang: lang.slice(0),\r\n          cat: cat.slice(0),\r\n          key: key.slice(0)\r\n        }\r\n      },\r\n      getTranslations: function (callBack) {\r\n        const uri = this.$store.state.apiBases.contentservice + this.$store.state.apiEndpoints.translationsadmin[0]\r\n        const self = this\r\n        this.$http.get(uri).then(s => {\r\n          self.translation = s.body\r\n          self.transformed = self.languages()\r\n          if (callBack) { \r\n            callBack()\r\n          }\r\n        })\r\n      },\r\n      languages: function () {\r\n        var rv = []\r\n\r\n        const keys = Object.keys(this.translation)\r\n        for (var i = 0; i < keys.length; i++) {\r\n          const langKey = keys[i]\r\n          var langObj = {\r\n            lang: langKey,\r\n            cats: []\r\n          }\r\n\r\n          var catKeys = Object.keys(this.translation[langKey])\r\n          for (var j = 0; j < catKeys.length; j++) {\r\n            const catKey = catKeys[j]\r\n            var catObj = {\r\n              cat: catKey,\r\n              keys: []\r\n            }\r\n\r\n            const keyKeys = Object.keys(this.translation[langKey][catKey])\r\n            for (var k = 0; k < keyKeys.length; k++) {\r\n              const finalKey = keyKeys[k]\r\n              catObj.keys.push({\r\n                key: finalKey,\r\n                value: this.translation[langKey][catKey][finalKey]\r\n              })\r\n            }\r\n\r\n            langObj.cats.push(catObj)\r\n          }\r\n\r\n          rv.push(langObj)\r\n        }\r\n\r\n        return rv\r\n      },\r\n      saveTranslation: function (del) {\r\n        this.saving = true\r\n        const uri = this.$store.state.apiBases.contentservice + this.$store.state.apiEndpoints.translations[0]\r\n        // Can send multiple 'actions' in same array if making batched saving in future\r\n        const request = [{\r\n          language: this.editing.lang,\r\n          category: this.editing.cat,\r\n          key: this.editing.key,\r\n          value: this.editing.value,\r\n          delete: !!del\r\n        }]\r\n\r\n        const self = this\r\n        this.$http.post(uri, request).then(s => {\r\n          self.getTranslations(() => {\r\n            self.editorOpen = false\r\n            self.editing = null\r\n            self.saving = false\r\n          })\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import \"../../assets/scss/_variables.scss\";\r\n  .translations {\r\n    .edit-icon {\r\n      cursor: pointer;\r\n    }\r\n\r\n  .translation-key {\r\n    font-weight: bold;\r\n  }\r\n\r\n  .mx-auto {\r\n    min-width: 400px;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Translations.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Translations.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Translations.vue?vue&type=template&id=4a5f58fb\"\nimport script from \"./Translations.vue?vue&type=script&lang=js\"\nexport * from \"./Translations.vue?vue&type=script&lang=js\"\nimport style0 from \"./Translations.vue?vue&type=style&index=0&id=4a5f58fb&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"testcors\"},[_c('h1',[_vm._v(\"Test CORS\")]),_c('div',[_c('h4',[_vm._v(\"Login to test endpoints\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.username),expression:\"username\"}],attrs:{\"type\":\"text\",\"placeholder\":\"username\"},domProps:{\"value\":(_vm.username)},on:{\"input\":function($event){if($event.target.composing)return;_vm.username=$event.target.value}}}),_c('br'),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"type\":\"password\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.password=$event.target.value}}}),_c('br'),_c('button',{attrs:{\"tabindex\":\"0\",\"value\":\"Login\",\"name\":\"Login\"},on:{\"click\":_vm.onLogin}},[_vm._v(\" Login \")])]),_c('div',_vm._l((_vm.results),function(result,index){return _c('div',{key:index},[_vm._v(\" Url: \"),_c('strong',[_vm._v(_vm._s(result.url))]),_c('br'),_vm._v(\" HTTP Status: \"),_c('span',{staticClass:\"httpstatus\",class:{ success: result.status }},[_vm._v(_vm._s(result.status))]),_c('br'),_vm._v(\" Server Status: \"+_vm._s(result.body.status)),_c('br')])}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"testcors\">\r\n    <h1>Test CORS</h1>\r\n    <div>\r\n      <h4>Login to test endpoints</h4>\r\n      <input v-model=\"username\" type=\"text\" placeholder=\"username\"><br>\r\n      <input v-model=\"password\" type=\"password\"><br>\r\n      <button tabindex=\"0\" value=\"Login\" name=\"Login\"\r\n              @click=\"onLogin\"\r\n      >\r\n        Login\r\n      </button>\r\n    </div>\r\n    <div>\r\n      <div v-for=\"(result, index) in results\" :key=\"index\">\r\n        Url: <strong>{{ result.url }}</strong><br>\r\n        HTTP Status: <span class=\"httpstatus\" :class=\"{ success: result.status }\">{{ result.status }}</span><br>\r\n        Server Status: {{ result.body.status }}<br>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'Testcors',\r\n    data () {\r\n      return {\r\n        username: '',\r\n        password: '',\r\n        loginUrl: 'https://spr-vati-oma-webapi.azurewebsites.net/api/users/accounts/GetLoginToken',\r\n        //loginUrl: 'http://localhost:3758/api/users/accounts/GetLoginToken',\r\n        endpoints: [\r\n          'https://spr-vati-oma-webapi.azurewebsites.net/api/content/areasofinterest',\r\n          'https://spr-vati-oma-webapi.azurewebsites.net/api/content/availabilitytimes',\r\n          'https://spr-vati-oma-webapi.azurewebsites.net/api/content/languages',\r\n          'https://spr-vati-oma-webapi.azurewebsites.net/api/content/personalskills',\r\n          'https://spr-vati-oma-webapi.azurewebsites.net/api/content/transportation',\r\n          'https://spr-vati-oma-webapi.azurewebsites.net/api/content/translations',\r\n          'https://spr-vati-oma-webapi.azurewebsites.net/api/users/user',\r\n          'https://spr-vati-oma-webapi.azurewebsites.net/api/users/user/11e5d4a3-0836-4a60-b445-eb8df9d6d8e4',\r\n          'https://spr-vati-oma-webapi.azurewebsites.net/api/users/accounts/GetCurrentUsername',\r\n          'https://spr-vati-oma-webapi.azurewebsites.net/api/users/accounts/GetCurrentUsername'\r\n        ],\r\n        results: []\r\n      }\r\n    },\r\n    methods: {\r\n      onLogin: function () {\r\n        var loginObj = { Email: this.username, Password: this.password }\r\n        this.$http.post(this.loginUrl, loginObj).then(success => {\r\n          if (success.ok) {\r\n            for (var i = 0; i < this.endpoints.length; i++) {\r\n              this.$http.get(this.endpoints[i], { headers: { Authorization: 'bearer ' + success.body.token } }).then(resp => {\r\n                this.results.push(resp)\r\n              })\r\n            }\r\n          } else {\r\n            this.results.push('login failed')\r\n          }\r\n        }, error => {\r\n          console.log(error)\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n  .testcors {\r\n    margin:15px;\r\n  }\r\n\r\n  .httpstatus {\r\n    color:red;\r\n  }\r\n\r\n  .success {\r\n    color: green;\r\n    font-weight:bold;\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TestCors.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TestCors.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TestCors.vue?vue&type=template&id=161df080&scoped=true\"\nimport script from \"./TestCors.vue?vue&type=script&lang=js\"\nexport * from \"./TestCors.vue?vue&type=script&lang=js\"\nimport style0 from \"./TestCors.vue?vue&type=style&index=0&id=161df080&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"161df080\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"testenums\"},[_c('h1',[_vm._v(\"Test Enums\")]),_c('div',{staticClass:\"title\"},[_vm._v(\" Genders \")]),_vm._l((_vm.getGenders),function(item){return _c('div',{key:item},[_vm._v(\" \"+_vm._s(item)+\" \")])}),_c('div',{staticClass:\"title\"},[_vm._v(\" Gender Preferences \")]),_vm._l((_vm.getGenderPreferences),function(item){return _c('div',{key:item},[_vm._v(\" \"+_vm._s(item)+\" \")])}),_c('div',{staticClass:\"title\"},[_vm._v(\" Preferred Age \")]),_vm._l((_vm.getPreferredAge),function(item){return _c('div',{key:item},[_vm._v(\" \"+_vm._s(item)+\" \")])}),_c('div',{staticClass:\"title\"},[_vm._v(\" Availability Frequency \")]),_vm._l((_vm.getAvailabilityFrequency),function(item){return _c('div',{key:item},[_vm._v(\" \"+_vm._s(item)+\" \")])}),_c('div',{staticClass:\"title\"},[_vm._v(\" Availability Times \")]),_vm._l((_vm.getAvailabilityTimes),function(item){return _c('div',{key:item},[_vm._v(\" \"+_vm._s(item)+\" \")])}),_c('div',{staticClass:\"title\"},[_vm._v(\" Customer Types \")]),_vm._l((_vm.getCustomerTypes),function(item){return _c('div',{key:item},[_vm._v(\" \"+_vm._s(item)+\" \")])}),_c('div',{staticClass:\"title\"},[_vm._v(\" Friendship Types \")]),_vm._l((_vm.getFriendshipTypes),function(item){return _c('div',{key:item},[_vm._v(\" \"+_vm._s(item)+\" \")])}),_c('div',{staticClass:\"title\"},[_vm._v(\" Interests \")]),_vm._l((_vm.getInterests),function(item){return _c('div',{key:item},[_vm._v(\" \"+_vm._s(item)+\" \")])}),_c('div',{staticClass:\"title\"},[_vm._v(\" Customer States \")]),_vm._l((_vm.getCustomerStates),function(item){return _c('div',{key:item},[_vm._v(\" \"+_vm._s(item)+\" \")])}),_c('div',{staticClass:\"title\"},[_vm._v(\" First items in collections \")]),_c('div',[_vm._v(_vm._s(_vm.getGenderPreference))]),_c('div',[_vm._v(_vm._s(_vm.getAge))]),_c('div',[_vm._v(_vm._s(_vm.getAvailabilityFreq))]),_c('div',[_vm._v(_vm._s(_vm.getAvailabilityTime))]),_c('div',[_vm._v(_vm._s(_vm.getCustomerType))]),_c('div',[_vm._v(_vm._s(_vm.getFriendshipType))]),_c('div',[_vm._v(_vm._s(_vm.getInterest))]),_c('div',[_vm._v(_vm._s(_vm.getCustomerState))])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"testenums\">\r\n    <h1>Test Enums</h1>\r\n    <div class=\"title\">\r\n      Genders\r\n    </div>\r\n    <div v-for=\"item in getGenders\" :key=\"item\">\r\n      {{ item }}\r\n    </div>\r\n    <div class=\"title\">\r\n      Gender Preferences\r\n    </div>\r\n    <div v-for=\"item in getGenderPreferences\" :key=\"item\">\r\n      {{ item }}\r\n    </div>\r\n    <div class=\"title\">\r\n      Preferred Age\r\n    </div>\r\n    <div v-for=\"item in getPreferredAge\" :key=\"item\">\r\n      {{ item }}\r\n    </div>\r\n    <div class=\"title\">\r\n      Availability Frequency\r\n    </div>\r\n    <div v-for=\"item in getAvailabilityFrequency\" :key=\"item\">\r\n      {{ item }}\r\n    </div>\r\n    <div class=\"title\">\r\n      Availability Times\r\n    </div>\r\n    <div v-for=\"item in getAvailabilityTimes\" :key=\"item\">\r\n      {{ item }}\r\n    </div>\r\n    <div class=\"title\">\r\n      Customer Types\r\n    </div>\r\n    <div v-for=\"item in getCustomerTypes\" :key=\"item\">\r\n      {{ item }}\r\n    </div>\r\n    <div class=\"title\">\r\n      Friendship Types\r\n    </div>\r\n    <div v-for=\"item in getFriendshipTypes\" :key=\"item\">\r\n      {{ item }}\r\n    </div>\r\n    <div class=\"title\">\r\n      Interests\r\n    </div>\r\n    <div v-for=\"item in getInterests\" :key=\"item\">\r\n      {{ item }}\r\n    </div>\r\n    <div class=\"title\">\r\n      Customer States\r\n    </div>\r\n    <div v-for=\"item in getCustomerStates\" :key=\"item\">\r\n      {{ item }}\r\n    </div>\r\n    <div class=\"title\">\r\n      First items in collections\r\n    </div>\r\n    <div>{{ getGenderPreference }}</div>\r\n    <div>{{ getAge }}</div>\r\n    <div>{{ getAvailabilityFreq }}</div>\r\n    <div>{{ getAvailabilityTime }}</div>\r\n    <div>{{ getCustomerType }}</div>\r\n    <div>{{ getFriendshipType }}</div>\r\n    <div>{{ getInterest }}</div>\r\n    <div>{{ getCustomerState }}</div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import enumhelper from '../../mixins/enums.js'\r\n  export default {\r\n    name: 'TestCors',\r\n    mixins: [enumhelper],\r\n    computed: {\r\n      gender () {\r\n        return this.getGenderTranslation(1)\r\n      },\r\n      getGenderPreference () {\r\n        return this.getGenderPreferencesMaskTranslation(1)\r\n      },\r\n      getAge () {\r\n        return this.getPreferredAgeTranslation(1)\r\n      },\r\n      getAvailabilityFreq () {\r\n        return this.getAvailabilityFrequencyTranslation(1)\r\n      },\r\n      getAvailabilityTime () {\r\n        return this.getAvailabilityTimesTranslation(1)\r\n      },\r\n      getCustomerType () {\r\n        return this.getCustomerTypesTranslation(1)\r\n      },\r\n      getFriendshipType () {\r\n        return this.getFriendshipTypesTranslation(1)\r\n      },\r\n      getInterest () {\r\n        return this.getInterestsTranslation(1)\r\n      },\r\n      getCustomerState () {\r\n        return this.getCustomerStatesTranslation(1)\r\n      },\r\n\r\n      getGenders () {\r\n        return this.getGendersTranslations()\r\n      },\r\n      getGenderPreferences () {\r\n        return this.getGenderPreferencesMaskTranslations()\r\n      },\r\n      getPreferredAge () {\r\n        return this.getAgePreferencesMaskTranslations()\r\n      },\r\n      getAvailabilityFrequency () {\r\n        return this.getAvailabilityFrequencyTranslations()\r\n      },\r\n      getAvailabilityTimes () {\r\n        return this.getAvailabilityTimesTranslations()\r\n      },\r\n      getCustomerTypes () {\r\n        return this.getCustomerTypesTranslations()\r\n      },\r\n      getFriendshipTypes () {\r\n        return this.getFriendshipTypesTranslations()\r\n      },\r\n      getInterests () {\r\n        return this.getInterestsTranslations()\r\n      },\r\n      getCustomerStates () {\r\n        return this.getCustomerStatesTranslations()\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\">\r\n  .testenums {\r\n    margin:15px;\r\n    .title {\r\n      font-weight: bold;\r\n      margin-top:20px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TestEnums.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TestEnums.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TestEnums.vue?vue&type=template&id=1ce86250\"\nimport script from \"./TestEnums.vue?vue&type=script&lang=js\"\nexport * from \"./TestEnums.vue?vue&type=script&lang=js\"\nimport style0 from \"./TestEnums.vue?vue&type=style&index=0&id=1ce86250&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"useradmin\"},[_vm._m(0),_c('div',{staticClass:\"useradmin-tabs main\"},[_c('div',{staticClass:\"container\"},[_c('h4',[_c('a',{class:{ 'selected' : _vm.mainSearchType == 'volunteerRelated' },attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":function($event){return _vm.showMainSearchType('volunteerRelated')}}},[_vm._v(_vm._s(_vm.$t('userAdmin.administerVolunteerInfo')))])]),_c('h4',[_c('a',{class:{ 'selected' : _vm.mainSearchType == 'departmentRelated' },attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":function($event){return _vm.showMainSearchType('departmentRelated')}}},[_vm._v(_vm._s(_vm.$t('userAdmin.administerDepartmentInfo')))])])])]),_c('div',{staticClass:\"container\"},[(_vm.mainSearchType === 'volunteerRelated')?_c('div',{staticClass:\"tab-content main\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-md-6 col-12\"},[_c('span',{staticClass:\"h4 brand-black volunteeradmin-header\",attrs:{\"role\":\"heading\",\"aria-level\":\"3\"}},[_vm._v(_vm._s(_vm.$t('userAdmin.manageVolunteers')))])]),_c('div',{staticClass:\"col col-md-6 col-12 align-right\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('userAdmin.addVolunteer'),\"icon\":\"plus\",\"click-event\":\"createVolunteer\"},on:{\"createVolunteer\":_vm.createVolunteerButton}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-4 col-sm-12\"},[_c('searchbox',{attrs:{\"placeholder\":_vm.placeholder},model:{value:(_vm.searchText),callback:function ($$v) {_vm.searchText=$$v},expression:\"searchText\"}})],1)]),_c('div',{staticClass:\"useradmin-list-new\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12\"},[_c('span',{staticClass:\"h5 brand-black\",attrs:{\"role\":\"heading\",\"aria-level\":\"4\"}},[_vm._v(_vm._s(_vm.$t('userAdmin.newVolunteers')))]),_c('useradminvolunteerslist',{attrs:{\"list\":_vm.newvolunteers}})],1)])]),_c('div',{staticClass:\"useradmin-list\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12\"},[_c('div',{staticClass:\"useradmin-tabs\"},[_c('h4',[_c('a',{class:{ 'volunteertab' : true, 'selected' : _vm.volunteerSearchType == 'ALL' },attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":function($event){return _vm.showVolunteerSearchType('ALL')}}},[_vm._v(_vm._s(_vm.$t('userAdmin.myDepartmentVolunteers')))])]),_c('h4',[_c('a',{class:{ 'volunteertab' : true, 'selected' : _vm.volunteerSearchType == 'KEY' },attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":function($event){return _vm.showVolunteerSearchType('KEY')}}},[_vm._v(_vm._s(_vm.$t('userAdmin.keyVolunteers')))])])]),(_vm.volunteerSearchType === 'ALL')?_c('div',{staticClass:\"all-colunteers\"},[_c('useradminvolunteerslist',{attrs:{\"list\":_vm.allvolunteers}})],1):_vm._e(),(_vm.volunteerSearchType === 'KEY')?_c('div',{staticClass:\"key-colunteers\"},[_c('useradminvolunteerslist',{attrs:{\"list\":_vm.keyvolunteers}})],1):_vm._e()])])]),_c('div',{staticClass:\"useradmin-messages\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12\"},[_c('span',{staticClass:\"h4 brand-black\",attrs:{\"role\":\"heading\",\"aria-level\":\"3\"}},[_vm._v(_vm._s(_vm.$t('userAdmin.messages')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('userAdmin.sendMessage'),\"click-event\":\"sendMessage\"},on:{\"sendMessage\":_vm.sendMessageButton}}),_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('userAdmin.sendLeaderMessage'),\"click-event\":\"sendLeaderMessage\"},on:{\"sendLeaderMessage\":_vm.sendLeaderMessageButton}})],1)])]),_c('div',{staticClass:\"useradmin-groups\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12\"},[_c('span',{staticClass:\"h4 brand-black\",attrs:{\"role\":\"heading\",\"aria-level\":\"3\"}},[_vm._v(_vm._s(_vm.$t('userAdmin.groups')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-4 col-sm-12\"},[_c('searchbox',{attrs:{\"placeholder\":_vm.placeholdergroups},model:{value:(_vm.searchText),callback:function ($$v) {_vm.searchText=$$v},expression:\"searchText\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12\"},[_c('div',{staticClass:\"white-block groups\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-md-6 col-12\"},[_c('span',{staticClass:\"h5 brand-black\",attrs:{\"role\":\"heading\",\"aria-level\":\"4\"}},[_vm._v(_vm._s(_vm.$t('userAdmin.actionGroups')))])]),_c('div',{staticClass:\"col col-md-6 col-12 align-right\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('userAdmin.createActionGroup'),\"icon\":\"plus\",\"click-event\":\"createActionGroup\"},on:{\"createActionGroup\":_vm.createActionGroupButton}})],1)]),_c('useradmingrouplist',{attrs:{\"list\":_vm.grouplist}}),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12\"},[_c('span',{staticClass:\"h5 brand-black\",attrs:{\"role\":\"heading\",\"aria-level\":\"4\"}},[_vm._v(_vm._s(_vm.$t('userAdmin.otherGroups')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12\"},[_c('useradmingrouplist',{attrs:{\"list\":_vm.grouplist}})],1)])],1)])])]),_c('div',{staticClass:\"useradmin-events\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12\"},[_c('span',{staticClass:\"h4 brand-black\",attrs:{\"role\":\"heading\",\"aria-level\":\"3\"}},[_vm._v(_vm._s(_vm.$t('userAdmin.events')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-4 col-sm-12\"},[_c('searchbox',{attrs:{\"placeholder\":_vm.placeholderevents},model:{value:(_vm.searchText),callback:function ($$v) {_vm.searchText=$$v},expression:\"searchText\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12 col-12\"},[_c('div',{staticClass:\"useradmin-tabs\"},[_c('h4',[_c('a',{class:{'selected' : _vm.eventSearchType == 'UPCOMING' },attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":function($event){return _vm.showEventSearchType('UPCOMING')}}},[_vm._v(_vm._s(_vm.$t('userAdmin.upcomingEvents')))])]),_c('h4',[_c('a',{class:{'selected' : _vm.eventSearchType == 'PAST' },attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":function($event){return _vm.showEventSearchType('PAST')}}},[_vm._v(_vm._s(_vm.$t('userAdmin.pastEvents')))])])]),(_vm.eventSearchType === 'UPCOMING')?_c('div',{staticClass:\"tab-content\"},[_c('div',{staticClass:\"white-block\"},[_c('useradmineventlist',{attrs:{\"list\":_vm.upcomingEventsList}})],1)]):_vm._e(),(_vm.eventSearchType === 'PAST')?_c('div',{staticClass:\"tab-content\"},[_c('div',{staticClass:\"white-block\"},[_c('useradmineventlist',{attrs:{\"list\":_vm.pastEventsList}})],1)]):_vm._e()])])])]):_vm._e(),(_vm.mainSearchType === 'departmentRelated')?_c('div',{staticClass:\"tab-content main\"},[_vm._m(1),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-4 col-sm-12\"},[_c('searchbox',{attrs:{\"placeholder\":_vm.placeholderdepartment},model:{value:(_vm.searchText),callback:function ($$v) {_vm.searchText=$$v},expression:\"searchText\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"white-block departments\"},[_c('div',{staticClass:\"list-group\"},_vm._l((_vm.departmentList),function(department){return _c('useradmindepartment',{key:department.id,attrs:{\"department\":department,\"click-event\":\"departmentPage\"},on:{\"departmentPage\":_vm.departmentPageLink}})}),1)])])])]):_vm._e()])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h1',[_vm._v(\"Hallintasivu\")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('p',[_vm._v(\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut ac ipsum sed est blandit efficitur. Quisque quis tincidunt nunc. Integer facilisis diam risus. Aliquam nibh quam, viverra a lacus consequat, finibus mattis erat. Nulla nisi metus, tempus nec vestibulum ac.\")])])])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-md-6 col-12\"},[_c('span',{staticClass:\"h4 brand-black\",attrs:{\"role\":\"heading\",\"aria-level\":\"3\"}},[_vm._v(\"Hae osastoja\")])])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"group-listing\"},[_c('div',{staticClass:\"row p-2\"},[_c('div',{staticClass:\"col col-sm-12\"},[_c('div',{staticClass:\"list-group\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6 d-sm-none d-md-block cap-label table-header\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.groupName'))+\" \")]),_c('div',{staticClass:\"col-6 d-sm-none d-md-block cap-label table-header\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.groupLeader'))+\" \")])]),_vm._l((_vm.list),function(item){return _c('div',{key:item.id,staticClass:\"group-row\"},[_c('useradmingroupview',{attrs:{\"group\":item}})],1)})],2)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row useradmingroupview\"},[_c('div',{staticClass:\"column col-md-6 col-sm-12 group-name\"},[(_vm.group.isAllLocations)?_c('span',{staticClass:\"isall\",attrs:{\"title\":_vm.$t('groups.allLocations')}},[_c('font-awesome-icon',{attrs:{\"icon\":\"globe\"}})],1):_vm._e(),(_vm.groupLink)?_c('router-link',{attrs:{\"to\":_vm.groupLink}},[_c('span',{class:{'disabled':!_vm.group.isActive},attrs:{\"title\":_vm.groupActive}},[_vm._v(_vm._s(_vm.group.name))])]):_c('span',{attrs:{\"title\":_vm.$t('groups.disabledToNonAdmins')}},[_c('span',{staticClass:\"disabled noclick\"},[_vm._v(_vm._s(_vm.group.name))])]),_vm._v(\" (\"+_vm._s(_vm.group.totalMembers)+\") \"),_c('div',[_vm._v(_vm._s(_vm.category))]),_c('div',{staticClass:\"smalltext\"},[_vm._v(\" \"+_vm._s(_vm.languages)+\" \")])],1),_c('div',{staticClass:\"column col-md-6 col-sm-12 group-leader\"},[_vm._v(\" \"+_vm._s(_vm.groupAdmins)+\" \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .useradmingroupview {\r\n    .isall {\r\n      display:inline-block;\r\n      margin-right: 5px;\r\n    }\r\n    .group-leader {\r\n      margin-bottom: 10px;\r\n    }\r\n\r\n    .group-name {\r\n      .disabled {\r\n        color:$brand-grey4;\r\n      }\r\n    }\r\n\r\n    .noclick {\r\n      cursor: not-allowed;\r\n    }\r\n  }\r\n</style>\r\n<template>\r\n  <div class=\"row useradmingroupview\">\r\n    <div class=\"column col-md-6 col-sm-12 group-name\">\r\n      <span v-if=\"group.isAllLocations\" class=\"isall\" :title=\"$t('groups.allLocations')\"><font-awesome-icon icon=\"globe\" /></span>\r\n      <router-link v-if=\"groupLink\" :to=\"groupLink\">\r\n        <span :class=\"{'disabled':!group.isActive}\" :title=\"groupActive\">{{ group.name }}</span>\r\n      </router-link>\r\n      <span v-else :title=\"$t('groups.disabledToNonAdmins')\">\r\n        <span class=\"disabled noclick\">{{ group.name }}</span>\r\n      </span> ({{ group.totalMembers }})\r\n      <div>{{ category }}</div>\r\n      <div class=\"smalltext\">\r\n        {{ languages }}\r\n      </div>\r\n    </div>\r\n    <div class=\"column col-md-6 col-sm-12 group-leader\">\r\n      {{ groupAdmins }}\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import enumhelper from '../../mixins/enums.js'\r\n\r\n  export default {\r\n    name: 'Useradmingroupview',\r\n    components: { },\r\n    mixins: [enumhelper],\r\n    props: {\r\n      group: {\r\n        type: Object,\r\n        default: null\r\n      }\r\n    },\r\n    computed: {\r\n      languages () {\r\n        return this.getLanguagesMaskTranslation(this.group.languages)\r\n      },\r\n      category () {\r\n        return this.getEventCategoriesTranslation(this.group.category)\r\n      },\r\n      groupActive: function () {\r\n        return (this.group && this.group.isActive) ? this.$t('userAdmin.groupStatusActive') : this.$t('userAdmin.groupStatusInactive')\r\n      },\r\n      groupAdmins () {\r\n        var adminStr = ''\r\n        _.each(this.group.members, (val) => {\r\n          adminStr += val.isAdmin ? `${val.firstName} ${val.lastName}, ` : ''\r\n        })\r\n\r\n        return adminStr.length > 0 ? adminStr.substring(0, adminStr.length - 2) : ''\r\n      },\r\n      groupLink: function () {\r\n        if (this.group.isActive || this.hasRole('Admin') || this.hasRole('NationalAdmin') || this.hasRole('NationalEmployee')) {\r\n          return '/admin/group/' + this.group.id\r\n        }\r\n        return null\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupView.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./GroupView.vue?vue&type=template&id=ea98f9f8\"\nimport script from \"./GroupView.vue?vue&type=script&lang=js\"\nexport * from \"./GroupView.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupView.vue?vue&type=style&index=0&id=ea98f9f8&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"group-listing\">\r\n    <div class=\"row p-2\">\r\n      <div class=\"col col-sm-12\">\r\n        <div class=\"list-group\">\r\n          <div class=\"row\">\r\n            <div class=\"col-md-6 d-sm-none d-md-block cap-label table-header\">\r\n              {{ $t('userAdmin.groupName') }}\r\n            </div>\r\n            <div class=\"col-6 d-sm-none d-md-block cap-label table-header\">\r\n              {{ $t('userAdmin.groupLeader') }}\r\n            </div>\r\n          </div>\r\n          <div v-for=\"(item) in list\" :key=\"item.id\" class=\"group-row\">\r\n            <useradmingroupview :group=\"item\" />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import useradmingroupview from './GroupView.vue'\r\n\r\n  export default {\r\n    name: 'Useradmingrouplist',\r\n    components: { useradmingroupview },\r\n    props: {\r\n      list: {\r\n        type: Array,\r\n        default: () => []\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./GroupList.vue?vue&type=template&id=c7e490be\"\nimport script from \"./GroupList.vue?vue&type=script&lang=js\"\nexport * from \"./GroupList.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"list-group\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-md-2 col-sm-12 cap-label table-header\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.eventName'))+\" \")]),_c('div',{staticClass:\"col col-md-2 col-sm-12 cap-label table-header\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.eventTime'))+\" \")]),_c('div',{staticClass:\"col col-md-2 col-sm-12 cap-label table-header\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.eventPlace'))+\" \")]),_c('div',{staticClass:\"col col-md-2 col-sm-12 cap-label table-header\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.eventCategory'))+\" \")]),_c('div',{staticClass:\"col col-md-2 col-sm-12 cap-label table-header\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.eventType'))+\" \")]),_c('div',{staticClass:\"col col-md-2 col-sm-12 cap-label table-header\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.eventOrganizer'))+\" \")])]),_vm._l((_vm.list),function(item){return _c('div',{key:item.id,staticClass:\"group-row\"},[_c('useradmineventview',{attrs:{\"sprevent\":item}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"list-group\">\r\n    <div class=\"row\">\r\n      <div class=\"col col-md-2 col-sm-12 cap-label table-header\">\r\n        {{ $t('userAdmin.eventName') }}\r\n      </div>\r\n      <div class=\"col col-md-2 col-sm-12 cap-label table-header\">\r\n        {{ $t('userAdmin.eventTime') }}\r\n      </div>\r\n      <div class=\"col col-md-2 col-sm-12 cap-label table-header\">\r\n        {{ $t('userAdmin.eventPlace') }}\r\n      </div>\r\n      <div class=\"col col-md-2 col-sm-12 cap-label table-header\">\r\n        {{ $t('userAdmin.eventCategory') }}\r\n      </div>\r\n      <div class=\"col col-md-2 col-sm-12 cap-label table-header\">\r\n        {{ $t('userAdmin.eventType') }}\r\n      </div>\r\n      <div class=\"col col-md-2 col-sm-12 cap-label table-header\">\r\n        {{ $t('userAdmin.eventOrganizer') }}\r\n      </div>\r\n    </div>\r\n\r\n    <div v-for=\"(item) in list\" :key=\"item.id\" class=\"group-row\">\r\n      <useradmineventview :sprevent=\"item\" />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import useradmineventview from './EventView.vue'\r\n\r\n  export default {\r\n    name: 'Useradmingrouplist',\r\n    components: { useradmineventview },\r\n    props: {\r\n      list: {\r\n        type: Array,\r\n        default: () => []\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./EventList.vue?vue&type=template&id=68eeba44\"\nimport script from \"./EventList.vue?vue&type=script&lang=js\"\nexport * from \"./EventList.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"list-group\"},_vm._l((_vm.list),function(item){return _c('div',{key:item.id,staticClass:\"user-row\"},[_c('useradminvolunteerview',{attrs:{\"volunteer\":item}})],1)}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-5 col-sm-12 user\"},[_c('div',{staticClass:\"user-img\"},[_c('sprportrait',{staticClass:\"portrait-size\",style:(_vm.portraitStyle)})],1),_c('div',{staticClass:\"user-name\"},[_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(_vm._s(_vm.volunteer.name))]),_c('span',{},[_vm._v(_vm._s(_vm.$t('userAdmin.member')))])])]),_c('div',{staticClass:\"col-md-4 col-sm-12 interests\"},[_c('strong',[_vm._v(_vm._s(_vm.$t('userAdmin.areasOfInterest')))]),_c('br'),_vm._v(\" \"+_vm._s(_vm.volunteer.interests)+\" \"),_c('p',{staticClass:\"user-groups\"},[_vm._v(\" \"+_vm._s(_vm.volunteer.group)+\" \")])]),_c('div',{staticClass:\"col-md-3 col-sm-12 actions\"},[_c('sprsimpledropdown',{attrs:{\"title\":_vm.$t('userAdmin.addRole'),\"items\":_vm.volunteerRoles},model:{value:(_vm.volunteer.roles),callback:function ($$v) {_vm.$set(_vm.volunteer, \"roles\", $$v)},expression:\"volunteer.roles\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row\">\r\n    <div class=\"col-md-5 col-sm-12 user\">\r\n      <div class=\"user-img\">\r\n        <sprportrait :style=\"portraitStyle\"\r\n                     class=\"portrait-size\"\r\n        />\r\n      </div>\r\n      <div class=\"user-name\">\r\n        <a href=\"#\">{{ volunteer.name }}</a>\r\n        <span class=\"\">{{ $t('userAdmin.member') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"col-md-4 col-sm-12 interests\">\r\n      <strong>{{ $t('userAdmin.areasOfInterest') }}</strong><br>\r\n      {{ volunteer.interests }}\r\n\r\n      <p class=\"user-groups\">\r\n        {{ volunteer.group }}\r\n      </p>\r\n    </div>\r\n    <div class=\"col-md-3 col-sm-12 actions\">\r\n      <sprsimpledropdown v-model=\"volunteer.roles\"\r\n                         :title=\"$t('userAdmin.addRole')\"\r\n                         :items=\"volunteerRoles\"\r\n      />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprsimpledropdown from '../SPRSimpleDropdown.vue'\r\n  import sprportrait from '../SPRPortrait.vue'\r\n  import anonPortrait from '../../assets/img/anon-portrait.png'\r\n\r\n  export default {\r\n    name: 'Useradminvolunteer',\r\n    components: { sprsimpledropdown, sprportrait },\r\n    props: {\r\n      volunteer: {\r\n        type: Object,\r\n        default: null\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        volunteerRoles: [\r\n          { value: 0, text: this.$t('userAdmin.roleChairman') },\r\n          { value: 1, text: this.$t('userAdmin.roleViceChairman') },\r\n          { value: 2, text: this.$t('userAdmin.roleSecretary') },\r\n          { value: 3, text: this.$t('userAdmin.roleFundManager') },\r\n          { value: 4, text: this.$t('userAdmin.roleExecutiveManager') },\r\n          { value: 5, text: this.$t('userAdmin.roleHeadOfMembers') },\r\n          { value: 6, text: this.$t('userAdmin.roleCollectionDirector') },\r\n          { value: 7, text: this.$t('userAdmin.roleHomeContact') },\r\n          { value: 8, text: this.$t('userAdmin.roleEAContact') },\r\n          { value: 9, text: this.$t('userAdmin.roleSchoolContact') },\r\n          { value: 10, text: this.$t('userAdmin.roleYouthContact') },\r\n          { value: 11, text: this.$t('userAdmin.rolePublicist') },\r\n          { value: 12, text: this.$t('userAdmin.roleStandbyContact') },\r\n          { value: 13, text: this.$t('userAdmin.roleFriendContact') },\r\n          { value: 14, text: this.$t('userAdmin.roleEADutyContact') },\r\n          { value: 15, text: this.$t('userAdmin.roleHumanitaryRightsContact') },\r\n          { value: 16, text: this.$t('userAdmin.roleMulticultureContact') },\r\n          { value: 17, text: this.$t('userAdmin.roleHealthContact') },\r\n          { value: 18, text: this.$t('userAdmin.roleFundraisingContact') }\r\n        ]\r\n      }\r\n    },\r\n    computed: {\r\n      portraitStyle: function () {\r\n        var port = (this.$store.state.profile && this.$store.state.profile.portrait) ? this.$store.state.profile.portrait : anonPortrait\r\n        return 'background: url(' + port + '); background-size: cover; background-position: center center;'\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteersView.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteersView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VolunteersView.vue?vue&type=template&id=5d11358a\"\nimport script from \"./VolunteersView.vue?vue&type=script&lang=js\"\nexport * from \"./VolunteersView.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"list-group\">\r\n    <div v-for=\"(item) in list\" :key=\"item.id\" class=\"user-row\">\r\n      <useradminvolunteerview :volunteer=\"item\" />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import useradminvolunteerview from './VolunteersView.vue'\r\n\r\n  export default {\r\n    name: 'AdminVolunteersList',\r\n    components: { useradminvolunteerview },\r\n    props: {\r\n      list: {\r\n        type: Array,\r\n        default: () => []\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AdminVolunteersList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AdminVolunteersList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AdminVolunteersList.vue?vue&type=template&id=5ed2bc03\"\nimport script from \"./AdminVolunteersList.vue?vue&type=script&lang=js\"\nexport * from \"./AdminVolunteersList.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"list-row\"},[_c('span',{staticClass:\"name\",on:{\"click\":_vm.handleLink}},[_vm._v(_vm._s(_vm.department.name))]),_c('span',{staticClass:\"district\"},[_vm._v(_vm._s(_vm.department.district))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"list-row\">\r\n    <span class=\"name\" @click=\"handleLink\">{{ department.name }}</span>\r\n    <span class=\"district\">{{ department.district }}</span>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'Useradmindepartment',\r\n    props: {\r\n      department: {\r\n        type: Object,\r\n        default: () => { return {} }\r\n      },\r\n      link: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DepartmentView.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DepartmentView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DepartmentView.vue?vue&type=template&id=6909651c\"\nimport script from \"./DepartmentView.vue?vue&type=script&lang=js\"\nexport * from \"./DepartmentView.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .useradmin {\r\n    padding-top: 50px;\r\n    width: 100%;\r\n\r\n    .h4 {\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n  .useradmin-list, .useradmin-messages, .useradmin-groups, .useradmin-events {\r\n    margin-bottom: 50px;\r\n  }\r\n\r\n  .volunteeradmin-header {\r\n    margin-bottom: 30px;\r\n  }\r\n\r\n  .spr-simple-dropdown.pb-3 {\r\n    padding-bottom: 0 !important;\r\n  }\r\n\r\n  .spr-button {\r\n    box-shadow: none;\r\n    &.spr-redborder {\r\n      border: 2px solid $brand-red;\r\n    }\r\n    &.button-small {\r\n      font-size: 12px;\r\n    }\r\n   }\r\n\r\n  .align-right {\r\n    text-align: right;\r\n  }\r\n\r\n  .useradmin-list-new {\r\n    margin-bottom: 30px;\r\n    span.h5\r\n      {\r\n        color: #000;\r\n        display: inline-block;\r\n        padding: 10px 20px 10px 15px;\r\n        margin: 0;\r\n        cursor: pointer;\r\n      }\r\n  }\r\n\r\n  .tab-content {\r\n    &.main {\r\n     padding: 15px;\r\n    }\r\n  }\r\n\r\n   .user-row {\r\n    background: $brand-white;\r\n    width: 100%;\r\n    margin: 0 0 5px 0;\r\n    padding: 10px 0;\r\n    font-size:13px;\r\n    align-items: center;\r\n    justify-content: center;\r\n    > .row\r\n    {\r\n      align-items: center;\r\n      justify-content: center;\r\n    }\r\n\r\n    strong {\r\n      font-weight: bold;\r\n    }\r\n\r\n    .column\r\n      {\r\n        padding: 15px 10px;\r\n      }\r\n      .user-groups {\r\n        margin: 10px 0 0 0;\r\n        font-size:13px;\r\n      }\r\n      .user-role {\r\n        text-align: right;\r\n        font-size: 14px;\r\n        font-weight: bold;\r\n        display: block;\r\n        position: relative;\r\n        padding-right: 20px;\r\n        span{\r\n              display: inline-block;\r\n            }\r\n        svg {\r\n            color: $brand-red;\r\n            cursor: pointer;\r\n            padding-left: 10px;\r\n            font-size: 16px!important;\r\n            position: absolute;\r\n            right: 0;\r\n            top: 2px;\r\n             }\r\n      }\r\n      .user-img {\r\n        float: left;\r\n        margin-right: 20px;\r\n      }\r\n      .portrait-size {\r\n        width: 50px;\r\n        height: 50px;\r\n      }\r\n      .user {\r\n        font-size:13px;\r\n        a {\r\n          color: $brand-red;\r\n          font-size: 13px;\r\n          font-family:$font-light;\r\n          font-weight:bold;\r\n          display: block;\r\n          text-transform: uppercase;\r\n        }\r\n      }\r\n\r\n      .actions {\r\n        .form-group {\r\n          margin-bottom: 0;\r\n        }\r\n      }\r\n    }\r\n  .useradmin-tabs {\r\n    border-bottom: 1px solid #C8C8C8;\r\n    margin-bottom: 10px;\r\n    h4 {\r\n      display: inline-block;\r\n      margin-bottom: -1px;\r\n      font-size: 20px;\r\n      a {\r\n        font-family: $font-bold;\r\n        color: $brand-grey8;\r\n        padding: 10px 15px;\r\n        display: block;\r\n        &.selected {\r\n          color: $brand-red;\r\n          border-bottom: 3px solid $brand-red;\r\n          padding: 10px 15px;\r\n        }\r\n        &:hover {\r\n          text-decoration: none;\r\n        }\r\n      }\r\n    }\r\n  &.main {\r\n    border-bottom: 1px solid $brand-grey4;\r\n    margin-bottom: 20px;\r\n    h4 {\r\n      display: inline-block;\r\n      margin-bottom: -1px;\r\n      font-size: 28px;\r\n    }\r\n  }\r\n }\r\n .groups,\r\n .departments {\r\n   margin-top:10px;\r\n }\r\n\r\n .white-block {\r\n   background: $brand-white;\r\n   padding: 15px;\r\n  }\r\n .useradmin-messages {\r\n   margin-bottom: 40px;\r\n  }\r\n  .useradmin-groups {\r\n    margin-bottom: 40px;\r\n  }\r\n\r\n  .list-group {\r\n    .row {\r\n       margin: 0;\r\n    }\r\n  .table-header {\r\n    padding: 10px;\r\n\r\n  }\r\n\r\n  .list-row {\r\n    padding: 10px 15px;\r\n    .name {\r\n      color: $brand-red;\r\n      cursor: pointer;\r\n      &:hover {\r\n        text-decoration: underline;\r\n      }\r\n    }\r\n    .district {\r\n      float: right;\r\n    }\r\n  }\r\n\r\n  .group-row, .list-row {\r\n    button {\r\n      min-height: 45px!important;\r\n      padding: 0 20px!important;\r\n     }\r\n    .column\r\n  {\r\n    padding: 15px 10px 15px 10px;\r\n    &.group-activate {\r\n      padding: 5px 10px;\r\n                     }\r\n  }\r\n  &:nth-of-type(even) {\r\n    background: rgba(0,0,0,0.03);\r\n  }\r\n  }\r\n\r\n  .event-row {\r\n    .column {\r\n      padding: 15px 10px 15px 10px;\r\n    }\r\n    .time {\r\n      display: block;\r\n    }\r\n    &:nth-of-type(even) {\r\n      background: rgba(0,0,0,0.03);\r\n    }\r\n  }\r\n }\r\n\r\n  @media (max-width: $container-sm) {\r\n    .useradmin-events {\r\n      .table-header {\r\n          display: none;\r\n       }\r\n      .event-row {\r\n         padding: 15px 0;\r\n\r\n        .column {\r\n          width: 100% !important;\r\n          float: none;\r\n          display: block;\r\n          max-width: 100%;\r\n          flex: 0 0 100%;\r\n          padding: 0 15px;\r\n          a{\r\n             font-size: 18px;\r\n           }\r\n           &.event-time {\r\n             opacity: 0.8;\r\n             font-size: 14px;\r\n             margin-top: -5px;\r\n           }\r\n        }\r\n        .time {\r\n          display: inline;\r\n        }\r\n      }\r\n     }\r\n  }\r\n\r\n  @media (max-width: $media-sm-max) {\r\n\r\n    .useradmin-tabs.main {\r\n      h4 {\r\n           display: block;\r\n           text-align:center;\r\n           a{\r\n               display: inline-block;\r\n              font-size: 24px;\r\n            }\r\n         }\r\n    }\r\n\r\n    .list-group {\r\n      .table-header {\r\n        display: none;\r\n      }\r\n      .group-row {\r\n        padding-top: 15px;\r\n        padding-bottom: 15px;\r\n        .group-name {\r\n          a{\r\n             font-size: 18px;\r\n           }\r\n        }\r\n      }\r\n      .column {\r\n        padding: 3px 10px!important;\r\n        &.group-activate {\r\n          padding-top: 12px!important;\r\n                         }\r\n      }\r\n      .align-right {\r\n        text-align: center;\r\n      }\r\n    }\r\n\r\n  .user-row {\r\n    .interests {\r\n      padding-top: 15px;\r\n      padding-bottom: 15px;\r\n    }\r\n  }\r\n\r\n  .useradmin-messages {\r\n    button {\r\n        width: 100%;\r\n        margin-bottom: 15px;\r\n      }\r\n    }\r\n\r\n  }\r\n\r\n}\r\n\r\n</style>\r\n\r\n<template>\r\n  <div class=\"useradmin\">\r\n    <div class=\"container\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <h1>Hallintasivu</h1>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut ac ipsum sed est blandit efficitur. Quisque quis tincidunt nunc. Integer facilisis diam risus. Aliquam nibh quam, viverra a lacus consequat, finibus mattis erat. Nulla nisi metus, tempus nec vestibulum ac.</p>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"useradmin-tabs main\">\r\n      <div class=\"container\">\r\n        <h4><a :class=\"{ 'selected' : mainSearchType == 'volunteerRelated' }\" href=\"javascript:void(0)\" @click=\"showMainSearchType('volunteerRelated')\">{{ $t('userAdmin.administerVolunteerInfo') }}</a></h4>\r\n        <h4><a :class=\"{ 'selected' : mainSearchType == 'departmentRelated' }\" href=\"javascript:void(0)\" @click=\"showMainSearchType('departmentRelated')\">{{ $t('userAdmin.administerDepartmentInfo') }}</a></h4>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"container\">\r\n      <div v-if=\"mainSearchType === 'volunteerRelated'\" class=\"tab-content main\">\r\n        <div class=\"row\">\r\n          <div class=\"col col-md-6 col-12\">\r\n            <span role=\"heading\" aria-level=\"3\" class=\"h4 brand-black volunteeradmin-header\">{{ $t('userAdmin.manageVolunteers') }}</span>\r\n          </div>\r\n          <div class=\"col col-md-6 col-12 align-right\">\r\n            <sprbutton type=\"primary\"\r\n                       :size=\"1\"\r\n                       :title=\"$t('userAdmin.addVolunteer')\"\r\n                       class=\"spr-redborder button-width\"\r\n                       icon=\"plus\"\r\n                       click-event=\"createVolunteer\"\r\n                       @createVolunteer=\"createVolunteerButton\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-md-4 col-sm-12\">\r\n            <searchbox v-model=\"searchText\" :placeholder=\"placeholder\" />\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"useradmin-list-new\">\r\n          <div class=\"row\">\r\n            <div class=\"col col-12\">\r\n              <span role=\"heading\" aria-level=\"4\" class=\"h5 brand-black\">{{ $t('userAdmin.newVolunteers') }}</span>\r\n\r\n              <useradminvolunteerslist :list=\"newvolunteers\" />\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"useradmin-list\">\r\n          <div class=\"row\">\r\n            <div class=\"col col-12\">\r\n              <div class=\"useradmin-tabs\">\r\n                <h4><a :class=\"{ 'volunteertab' : true, 'selected' : volunteerSearchType == 'ALL' }\" href=\"javascript:void(0)\" @click=\"showVolunteerSearchType('ALL')\">{{ $t('userAdmin.myDepartmentVolunteers') }}</a></h4>\r\n                <h4><a :class=\"{ 'volunteertab' : true, 'selected' : volunteerSearchType == 'KEY' }\" href=\"javascript:void(0)\" @click=\"showVolunteerSearchType('KEY')\">{{ $t('userAdmin.keyVolunteers') }}</a></h4>\r\n              </div>\r\n\r\n              <div v-if=\"volunteerSearchType === 'ALL'\" class=\"all-colunteers\">\r\n                <useradminvolunteerslist :list=\"allvolunteers\" />\r\n              </div>\r\n              <div v-if=\"volunteerSearchType === 'KEY'\" class=\"key-colunteers\">\r\n                <useradminvolunteerslist :list=\"keyvolunteers\" />\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"useradmin-messages\">\r\n          <div class=\"row\">\r\n            <div class=\"col col-12\">\r\n              <span role=\"heading\" aria-level=\"3\" class=\"h4 brand-black\">{{ $t('userAdmin.messages') }}</span>\r\n            </div>\r\n          </div>\r\n\r\n          <div class=\"row\">\r\n            <div class=\"col col-12\">\r\n              <sprbutton type=\"primary\"\r\n                         :size=\"1\"\r\n                         :title=\"$t('userAdmin.sendMessage')\"\r\n                         class=\"spr-redborder button-width\"\r\n                         click-event=\"sendMessage\"\r\n                         @sendMessage=\"sendMessageButton\"\r\n              />\r\n              <sprbutton type=\"primary\"\r\n                         :size=\"1\"\r\n                         :title=\"$t('userAdmin.sendLeaderMessage')\"\r\n                         class=\"spr-redborder button-width\"\r\n                         click-event=\"sendLeaderMessage\"\r\n                         @sendLeaderMessage=\"sendLeaderMessageButton\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"useradmin-groups\">\r\n          <div class=\"row\">\r\n            <div class=\"col col-12\">\r\n              <span role=\"heading\" aria-level=\"3\" class=\"h4 brand-black\">{{ $t('userAdmin.groups') }}</span>\r\n            </div>\r\n          </div>\r\n\r\n          <div class=\"row\">\r\n            <div class=\"col-md-4 col-sm-12\">\r\n              <searchbox v-model=\"searchText\" :placeholder=\"placeholdergroups\" />\r\n            </div>\r\n          </div>\r\n\r\n          <div class=\"row\">\r\n            <div class=\"col col-12\">\r\n              <div class=\"white-block groups\">\r\n                <div class=\"row\">\r\n                  <div class=\"col col-md-6 col-12\">\r\n                    <span role=\"heading\" aria-level=\"4\" class=\"h5 brand-black\">{{ $t('userAdmin.actionGroups') }}</span>\r\n                  </div>\r\n                  <div class=\"col col-md-6 col-12 align-right\">\r\n                    <sprbutton type=\"primary\"\r\n                               :size=\"1\"\r\n                               :title=\"$t('userAdmin.createActionGroup')\"\r\n                               class=\"spr-redborder button-width\"\r\n                               icon=\"plus\"\r\n                               click-event=\"createActionGroup\"\r\n                               @createActionGroup=\"createActionGroupButton\"\r\n                    />\r\n                  </div>\r\n                </div>\r\n\r\n                <useradmingrouplist :list=\"grouplist\" />\r\n\r\n                <div class=\"row\">\r\n                  <div class=\"col col-12\">\r\n                    <span role=\"heading\" aria-level=\"4\" class=\"h5 brand-black\">{{ $t('userAdmin.otherGroups') }}</span>\r\n                  </div>\r\n                </div>\r\n\r\n                <div class=\"row\">\r\n                  <div class=\"col col-12\">\r\n                    <useradmingrouplist :list=\"grouplist\" />\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"useradmin-events\">\r\n          <div class=\"row\">\r\n            <div class=\"col col-12\">\r\n              <span role=\"heading\" aria-level=\"3\" class=\"h4 brand-black\">{{ $t('userAdmin.events') }}</span>\r\n            </div>\r\n          </div>\r\n\r\n          <div class=\"row\">\r\n            <div class=\"col-md-4 col-sm-12\">\r\n              <searchbox v-model=\"searchText\" :placeholder=\"placeholderevents\" />\r\n            </div>\r\n          </div>\r\n\r\n          <div class=\"row\">\r\n            <div class=\"col col-12 col-12\">\r\n              <div class=\"useradmin-tabs\">\r\n                <h4><a :class=\"{'selected' : eventSearchType == 'UPCOMING' }\" href=\"javascript:void(0)\" @click=\"showEventSearchType('UPCOMING')\">{{ $t('userAdmin.upcomingEvents') }}</a></h4>\r\n                <h4><a :class=\"{'selected' : eventSearchType == 'PAST' }\" href=\"javascript:void(0)\" @click=\"showEventSearchType('PAST')\">{{ $t('userAdmin.pastEvents') }}</a></h4>\r\n              </div>\r\n\r\n              <div v-if=\"eventSearchType === 'UPCOMING'\" class=\"tab-content\">\r\n                <div class=\"white-block\">\r\n                  <useradmineventlist :list=\"upcomingEventsList\" />\r\n                </div>\r\n              </div>\r\n\r\n              <div v-if=\"eventSearchType === 'PAST'\" class=\"tab-content\">\r\n                <div class=\"white-block\">\r\n                  <useradmineventlist :list=\"pastEventsList\" />\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div v-if=\"mainSearchType === 'departmentRelated'\" class=\"tab-content main\">\r\n        <div class=\"row\">\r\n          <div class=\"col col-md-6 col-12\">\r\n            <span role=\"heading\" aria-level=\"3\" class=\"h4 brand-black\">Hae osastoja</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-md-4 col-sm-12\">\r\n            <searchbox v-model=\"searchText\" :placeholder=\"placeholderdepartment\" />\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <div class=\"white-block departments\">\r\n              <div class=\"list-group\">\r\n                <useradmindepartment v-for=\"(department) in departmentList\"\r\n                                     :key=\"department.id\"\r\n                                     :department=\"department\"\r\n                                     click-event=\"departmentPage\"\r\n                                     @departmentPage=\"departmentPageLink\"\r\n                />\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n  import searchbox from '../SPRSearchBox.vue'\r\n  import useradmingrouplist from './GroupList.vue'\r\n  import useradmineventlist from './EventList.vue'\r\n  import useradminvolunteerslist from './AdminVolunteersList.vue'\r\n  import useradmindepartment from './DepartmentView.vue'\r\n\r\n  export default {\r\n    name: 'Useradmin',\r\n    components: { sprbutton, searchbox, useradmingrouplist, useradmineventlist, useradminvolunteerslist, useradmindepartment },\r\n    data () {\r\n      return {\r\n        volunteer: {\r\n          roles: '0'\r\n        },\r\n        mainSearchType: 'volunteerRelated',\r\n        volunteerSearchType: 'ALL',\r\n        eventSearchType: 'UPCOMING',\r\n        searchText: '',\r\n        placeholder: this.$t('customerSearch.searchPlaceholder'),\r\n        placeholdergroups: this.$t('userAdmin.groupSearchPlaceholder'),\r\n        placeholderevents: this.$t('userAdmin.eventSearchPlaceholder'),\r\n        placeholderdepartment: this.$t('userAdmin.departmentSearchPlaceholder'),\r\n        grouplist: [\r\n          {\r\n            id: 1,\r\n            title: 'Varainkeruun toimintaryhmä',\r\n            leader: 'Anna Auttaja'\r\n          },\r\n          {\r\n            id: 2,\r\n            title: 'Toimintaryhmä 2',\r\n            leader: 'Ville välittäjä'\r\n          },\r\n          {\r\n            id: 3,\r\n            title: 'Toimintaryhmä XYZ',\r\n            leader: 'Ville välittäjä'\r\n          }\r\n        ],\r\n        upcomingEventsList: [\r\n          {\r\n            id: 1,\r\n            title: 'Varainkeruun toimintaryhmä',\r\n            date: '12.10.2017',\r\n            time: '11:00',\r\n            location: 'Tapiola',\r\n            category: 'Kategoria',\r\n            type: 'Kurssit ja koulutus',\r\n            organizer: 'Ville Vapaaehtoinen'\r\n          },\r\n          {\r\n            id: 2,\r\n            title: 'Varainkeruun toimintaryhmä',\r\n            date: '12.10.2017',\r\n            time: '11:00',\r\n            location: 'Tapiola',\r\n            category: 'Kategoria',\r\n            type: 'Kurssit ja koulutus',\r\n            organizer: 'Ville Vapaaehtoinen'\r\n          },\r\n          {\r\n            id: 3,\r\n            title: 'Varainkeruun toimintaryhmä',\r\n            date: '12.10.2017',\r\n            time: '11:00',\r\n            location: 'Tapiola',\r\n            category: 'Kategoria',\r\n            type: 'Kurssit ja koulutus',\r\n            organizer: 'Ville Vapaaehtoinen'\r\n          }\r\n        ],\r\n        pastEventsList: [\r\n          {\r\n            id: 1,\r\n            title: 'Eventti',\r\n            date: '12.10.2017',\r\n            time: '11:00',\r\n            location: 'Tapiola',\r\n            category: 'Kategoria',\r\n            type: 'Kurssit ja koulutus',\r\n            organizer: 'Ville Vapaaehtoinen'\r\n          },\r\n          {\r\n            id: 2,\r\n            title: 'Eventti 2',\r\n            date: '12.10.2017',\r\n            time: '11:00',\r\n            location: 'Tapiola',\r\n            category: 'Kategoria',\r\n            type: 'Kurssit ja koulutus',\r\n            organizer: 'Ville Vapaaehtoinen'\r\n          },\r\n          {\r\n            id: 3,\r\n            title: 'Varainkeruun toimintaryhmä',\r\n            date: '12.10.2017',\r\n            time: '11:00',\r\n            location: 'Tapiola',\r\n            category: 'Kategoria',\r\n            type: 'Kurssit ja koulutus',\r\n            organizer: 'Ville Vapaaehtoinen'\r\n          }\r\n        ],\r\n        newvolunteers: [\r\n          {\r\n            id: 1,\r\n            name: 'Ville Välittäjä',\r\n            interests: 'musiikki',\r\n            group: 'Ryhmä ABC'\r\n          },\r\n          {\r\n            id: 2,\r\n            name: 'Anna Auttaja',\r\n            interests: 'lorem ipsum',\r\n            group: 'Ryhmä ABC, Toimintaryhmä B'\r\n          }\r\n        ],\r\n        keyvolunteers: [\r\n          {\r\n            id: 1,\r\n            name: 'Ville Välittäjä',\r\n            interests: 'musiikki',\r\n            group: 'Ryhmä ABC'\r\n          },\r\n          {\r\n            id: 2,\r\n            name: 'Anna Auttaja',\r\n            interests: 'lorem ipsum',\r\n            group: 'Ryhmä ABC, Toimintaryhmä B'\r\n          }\r\n        ],\r\n        allvolunteers: [\r\n          {\r\n            id: 1,\r\n            name: 'Ville Välittäjä',\r\n            interests: 'musiikki',\r\n            group: 'Ryhmä ABC'\r\n          },\r\n          {\r\n            id: 2,\r\n            name: 'Anna Auttaja',\r\n            interests: 'lorem ipsum',\r\n            group: 'Ryhmä ABC, Toimintaryhmä B'\r\n          }\r\n        ],\r\n        departmentList: [\r\n          {\r\n            id: 1,\r\n            name: 'Kokkola',\r\n            district: 'Länsi-Suomen piiri',\r\n            link: '/front'\r\n          },\r\n          {\r\n            id: 2,\r\n            name: 'Lohtaja',\r\n            district: 'Länsi-Suomen piiri',\r\n            link: '/front'\r\n          },\r\n          {\r\n            id: 3,\r\n            name: 'Petäjävesi',\r\n            district: 'Länsi-Suomen piiri',\r\n            link: '/front'\r\n          },\r\n          {\r\n            id: 4,\r\n            name: 'Seinäjoki',\r\n            district: 'Länsi-Suomen piiri',\r\n            link: '/front'\r\n          }\r\n        ]\r\n      }\r\n    },\r\n    methods: {\r\n      createVolunteer: function () {\r\n        console.log('createVolunteer clicked')\r\n      },\r\n      sendMessageButton: function () {\r\n        console.log('sendMessage clicked')\r\n      },\r\n      sendLeaderMessageButton: function () {\r\n        console.log('sendLeaderMessage clicked')\r\n      },\r\n      activateGroupButton: function () {\r\n        console.log('activateGroup clicked')\r\n      },\r\n      createActionGroupButton: function () {\r\n        console.log('createActionGroup clicked')\r\n      },\r\n      showMainSearchType (type) {\r\n        this.mainSearchType = type\r\n      },\r\n      showVolunteerSearchType (type) {\r\n        this.volunteerSearchType = type\r\n      },\r\n      showEventSearchType (type) {\r\n        this.eventSearchType = type\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserAdmin.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserAdmin.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UserAdmin.vue?vue&type=template&id=68474fe7\"\nimport script from \"./UserAdmin.vue?vue&type=script&lang=js\"\nexport * from \"./UserAdmin.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserAdmin.vue?vue&type=style&index=0&id=68474fe7&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comp-admin-page col-12\"},[_c('backbar',{attrs:{\"title\":_vm.$t('userAdmin.adminHeader')}}),_c('div',{staticClass:\"container\"},_vm._l((_vm.state.el),function(s){return _c('div',{key:s.id,staticClass:\"row\"},[_c(s,{tag:\"div\",staticClass:\"col-12\",attrs:{\"id\":_vm.id,\"primary\":_vm.primary,\"filter\":_vm.filter ? _vm.filter : 'all',\"purpose\":_vm.purpose}})],1)}),0)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"comp-user-search\"},[(_vm.primary === 'training')?_c('h3',[_vm._v(\" \"+_vm._s(_vm.$t('friendTraining.trainingHeader'))+\" \")]):_vm._e(),(_vm.primary === 'clients' || _vm.primary === 'volunteers')?_c('div',[_c('checkboxlist',{attrs:{\"list\":_vm.clientFilters,\"rows\":2},model:{value:(_vm.activeClientFilters),callback:function ($$v) {_vm.activeClientFilters=$$v},expression:\"activeClientFilters\"}})],1):_vm._e(),(_vm.primary === 'brokers' && _vm.purpose === 5)?_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.existingBrokerRightsTitle'))+\" \")]):_vm._e(),_c('div',{staticClass:\"search-section\"},[_c('div',{staticClass:\"search\"},[_c('div',{staticClass:\"searchbox\"},[_c('searchbox',{model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.canExport),expression:\"canExport\"}],staticClass:\"export-button\"},[_c('sprbutton',{staticClass:\"export-button\",attrs:{\"primary\":false,\"title\":_vm.$t('userAdmin.exportVolunteerButton'),\"size\":5,\"aria-label\":_vm.$t('userAdmin.exportVolunteerButton'),\"click-event\":\"exportVolunteers\"},on:{\"exportVolunteers\":_vm.exportVolunteers}})],1),(_vm.includeAdvancedSearch)?_c('div',{staticClass:\"advanced-search-select\",on:{\"click\":_vm.toggleAdvancedSearch}},[_c('span',{staticClass:\"advanced-search\"},[_vm._v(_vm._s(_vm.$t('searchCriteria.sCAdvancedSearchTitle')))]),(_vm.advancedSearchVisible)?_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-down\",\"aria-hidden\":\"true\"}}):_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-up\",\"aria-hidden\":\"true\"}})],1):_vm._e()]),(_vm.includeAdvancedSearch && _vm.advancedSearchVisible)?_c('div',{staticClass:\"advanced-search\"},[_c('usersearchcriteria',{attrs:{\"v-if\":_vm.advancedSearchVisible},on:{\"change\":_vm.onChangedSearchCriteria,\"clear\":_vm.onClearSearchCriteria}})],1):_vm._e()]),(_vm.primary === 'user' || _vm.primary === 'employee')?_c('div',{staticClass:\"row\"},[(_vm.results.results && !_vm.loading)?_c('div',{staticClass:\"col-12\"},[_c('pager-heading',{attrs:{\"pagesizervisible\":\"\",\"total\":_vm.total,\"skip\":_vm.skip,\"take\":_vm.take},on:{\"pagesizechanged\":_vm.onPageSizeChanged}}),_vm._l((_vm.results.results),function(r,i){return _c('result',{key:'resultset_' + _vm._uid + '_' + i + '_' + r.profileId,attrs:{\"volunteer\":r}})}),(_vm.results.total === 0)?_c('div',{staticClass:\"text-center my-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.emptySet'))+\" \")]):_vm._e()],2):_c('div',{staticClass:\"spinner my-4 col-12\"},[_c('loading')],1)]):_vm._e(),(_vm.primary === 'roles')?_c('div',{staticClass:\"row\"},[(_vm.results.results && !_vm.loading)?_c('div',{staticClass:\"col-12\"},[_vm._l((_vm.results.results),function(r,i){return _c('rresult',{key:'resultset_' + _vm._uid + '_' + i + '_' + r.profileId,attrs:{\"profile\":r}})}),(_vm.results.total === 0)?_c('div',{staticClass:\"text-center my-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.emptySet'))+\" \")]):_vm._e()],2):_c('div',{staticClass:\"spinner my-4 col-12\"},[_c('loading')],1)]):_vm._e(),(_vm.primary === 'training')?_c('div',[_c('div',{staticClass:\"filter-links\"},_vm._l((_vm.trainingFilters),function(f,i){return _c('router-link',{key:'filter_' + _vm._uid + '_' + i,staticClass:\"d-inline-block m-2\",attrs:{\"to\":_vm.trainLink(f.value)}},[_vm._v(\" \"+_vm._s(f.text)+\" \")])}),1),(!_vm.loading)?_c('div',[_vm._l((_vm.results.results),function(r,i){return _c('fresult',{key:'resultsetf_' + _vm._uid + '_' + i + '_' + r.profileId,attrs:{\"volunteer\":r,\"mode\":_vm.id}})}),(_vm.results.total === 0)?_c('div',{staticClass:\"text-center my-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.emptySet'))+\" \")]):_vm._e()],2):_c('div',{staticClass:\"spinner my-4 col-12\"},[_c('loading')],1)]):_vm._e(),(_vm.primary === 'clients')?_c('div',[(_vm.results && _vm.results.items && !_vm.loading)?_c('div',_vm._l((_vm.results.items),function(r,i){return _c('cresult',{key:'resultsetc_' + _vm._uid + '_' + i + '_' + r.profileId,attrs:{\"customer\":r}})}),1):_c('div',{staticClass:\"spinner my-4 col-12\"},[_c('loading')],1)]):_vm._e(),(_vm.primary === 'volunteers')?_c('div',[(_vm.results && _vm.results.items && !_vm.loading)?_c('div',_vm._l((_vm.results.items),function(r,i){return _c('volunteerresult',{key:'resultsetv_' + _vm._uid + '_' + i + '_' + r.profileId,attrs:{\"volunteer\":r,\"is-net-profile\":_vm.isNetProfile,\"group-id\":_vm.id,\"typed-profile-id\":_vm.getTypedProfileId(r)}})}),1):_c('div',{staticClass:\"spinner my-4 col-12\"},[_c('loading')],1)]):_vm._e(),(_vm.primary === 'brokers')?_c('div',[(_vm.results && _vm.results.results && !_vm.loading)?_c('div',_vm._l((_vm.results.results),function(r,i){return _c('brokerresult',{key:'resultsetv_' + _vm._uid + '_' + i + '_' + r.profileId,attrs:{\"volunteer\":r,\"friend-management-group\":_vm.group.id,\"is-net-profile\":_vm.isNetProfile}})}),1):_c('div',{staticClass:\"spinner my-4 col-12\"},[_c('loading')],1)]):_vm._e(),(!_vm.loading)?_c('pager',{attrs:{\"take\":_vm.take,\"skip\":_vm.skip,\"total\":_vm.total,\"max-display\":_vm.maxDisplay,\"of-text\":\"/\",\"statisticsvisible\":!_vm.pagerheadingvisible},on:{\"pagerchanged\":_vm.pagerClick,\"pagerprevious\":_vm.pagerPrevious,\"pagernext\":_vm.pagerNext}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"pager-heading\"},[_c('div',{staticClass:\"page-state\"},[_c('pagerstats',{attrs:{\"total\":_vm.total,\"skip\":_vm.skip,\"take\":_vm.take}})],1),(_vm.pagesizervisible)?_c('div',{staticClass:\"page-sizer\"},[_c('pagesizeselector',{attrs:{\"take\":_vm.take},on:{\"pagesizechanged\":_vm.onPageSizeChanged}})],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"pagesize-wrapper\"},[_c('div',{staticClass:\"pagesize-title\"},[_vm._v(\" \"+_vm._s(_vm.$t('listingPager.profilePageSize'))+\": \")]),_c('div',{staticClass:\"pagesizecontainer\"},_vm._l((_vm.pageSizes),function(pageSize){return _c('div',{key:pageSize.value},[(_vm.isSelected(pageSize.value))?_c('div',{staticClass:\"pagesize\",class:{'selected': _vm.isSelected(pageSize.value)}},[_c('a',{attrs:{\"href\":\"javascript:void(0);\"},on:{\"click\":function($event){return _vm.pageSizeChanged(pageSize.value)}}},[_vm._v(\" \"+_vm._s(pageSize.value)+\" \")])]):_c('div',{staticClass:\"pagesize\",class:{'selected': pageSize.selected}},[_c('a',{attrs:{\"href\":\"javascript:void(0);\"},on:{\"click\":function($event){return _vm.pageSizeChanged(pageSize.value)}}},[_vm._v(\" \"+_vm._s(pageSize.value)+\" \")])])])}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"pagesize-wrapper\">\r\n    <div class=\"pagesize-title\">\r\n      {{ $t('listingPager.profilePageSize') }}:\r\n    </div>\r\n    <div class=\"pagesizecontainer\">\r\n      <div v-for=\"pageSize in pageSizes\" :key=\"pageSize.value\">\r\n        <div v-if=\"isSelected(pageSize.value)\" class=\"pagesize\" :class=\"{'selected': isSelected(pageSize.value)}\">\r\n          <a href=\"javascript:void(0);\" @click=\"pageSizeChanged(pageSize.value)\">\r\n            {{ pageSize.value }}\r\n          </a>\r\n        </div>\r\n        <div v-else class=\"pagesize\" :class=\"{'selected': pageSize.selected}\">\r\n          <a href=\"javascript:void(0);\" @click=\"pageSizeChanged(pageSize.value)\">\r\n            {{ pageSize.value }}\r\n          </a>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'PageSizeSelector',\r\n    components: { },\r\n    props: {\r\n      take: {\r\n        type: Number,\r\n        default: 5\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        actualDisplayed: 0,\r\n        pageSizes: [{ value: 5 }, { value: 20 }, { value: 50 }, { value: 100 }, { value: 150 }],\r\n        currentPageSize: 5\r\n      }\r\n    },\r\n    mounted () {\r\n      if (this.pageSizes.find((p) => p.value === this.take) === undefined) { this.pageSizes.push({ value: this.take }) }\r\n      this.pageSizes.sort((a, b) => a.value - b.value)\r\n      this.currentPageSize = this.take\r\n    },\r\n    methods: {\r\n      isSelected (value): boolean {\r\n        return this.currentPageSize === value\r\n      },\r\n      pageSizeChanged (pageSize): void {\r\n        this.currentPageSize = pageSize\r\n        this.$emit('pagesizechanged', pageSize)\r\n      },\r\n      checkIsVisible (page): boolean {\r\n        // check for view rights of this user.\r\n        // The rights should be: superadmin, DA, J1 or J2 & employees\r\n        return true\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\">\r\n    @import \"../assets/scss/_variables.scss\";\r\n\r\n    .pagesize-wrapper {\r\n      display: flex;\r\n      font-size: 14px;\r\n    }\r\n    .pagesizecontainer {\r\n      display: flex;\r\n      height: 30px;\r\n      align-self: center;\r\n      background: $brand-grey1;\r\n      border-radius: 50px;\r\n    }\r\n\r\n    .pagesize-title{\r\n      align-self: center;\r\n      color: $brand-grey13;\r\n      margin-right: 5px;\r\n    }\r\n\r\n    .pagesize {\r\n      background-color: $brand-grey1;\r\n      color: $brand-grey13;\r\n      border: solid 2px $brand-grey1;\r\n      border-radius: 50px;\r\n      width: 45px;\r\n      height: 30px;\r\n      display: inline-block;\r\n\r\n      &:hover {\r\n        background-color:$brand-red;\r\n        a {\r\n          text-decoration: none;\r\n          color:$brand-white;\r\n        }\r\n      }\r\n\r\n      a {\r\n        display:block;\r\n        text-align:center;\r\n        color:$brand-grey13;\r\n        margin-top:2px;\r\n      }\r\n\r\n      &.selected {\r\n        background-color:$brand-white;\r\n\r\n        a {\r\n          color: $brand-red;\r\n          font-weight: 600;\r\n        }\r\n      }\r\n    }\r\n\r\n</style>","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPageSizeSelector.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPageSizeSelector.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRPageSizeSelector.vue?vue&type=template&id=1447760f\"\nimport script from \"./SPRPageSizeSelector.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRPageSizeSelector.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRPageSizeSelector.vue?vue&type=style&index=0&id=1447760f&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"pager-heading\">\r\n    <div class=\"page-state\">\r\n      <pagerstats :total=\"total\" :skip=\"skip\" :take=\"take\"></pagerstats>\r\n    </div>\r\n    <div v-if=\"pagesizervisible\" class=\"page-sizer\">\r\n      <pagesizeselector :take=\"take\" @pagesizechanged=\"onPageSizeChanged\" />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import pagesizeselector from './SPRPageSizeSelector.vue'\r\n  import pagerstats from './SPRPagerStats.vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'PagerHeading',\r\n    components: { pagesizeselector, pagerstats },\r\n    props: {\r\n      total: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      take: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      skip: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      pagesizervisible: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    methods: {\r\n      onPageSizeChanged (pageSize): void {\r\n        this.$emit('pagesizechanged', pageSize)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" >\r\n  @import \"../assets/scss/_variables.scss\";\r\n  .pager-heading {\r\n    display: flex;\r\n    flex: 1 0 0;\r\n    font-family: Verdana, sans-serif; // Because Signa-Light numbers jump all over the place!\r\n    margin-top: 10px;\r\n    margin-right: -15px;\r\n    margin-left: -15px;\r\n    background: $brand-white;\r\n    align-content: center;\r\n    height: 3rem;\r\n    padding-left: 15px;\r\n    padding-right: 15px;\r\n    border-top-right-radius: 5px;\r\n    border-top-left-radius: 5px;\r\n  }\r\n  .page-sizer {\r\n    justify-self: flex-end;\r\n    align-self: center;\r\n    flex: 0 0 auto;\r\n  }\r\n  .page-state {\r\n    justify-self: flex-start;\r\n    align-self: center;\r\n    width: 100%;\r\n  }\r\n  @media (max-width: $media-md) {\r\n    .pager-heading {\r\n      flex-direction: column;\r\n      height: 4.5rem !important;\r\n    }\r\n    .page-state {\r\n      padding-top: 7px;\r\n    }\r\n    .page-sizer {\r\n      align-self: flex-start;\r\n      padding-top: 7px;\r\n    }\r\n  }\r\n  @media (max-width: $media-xs) {\r\n    .pager-heading {\r\n      height: 5rem !important;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPagerHeading.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRPagerHeading.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRPagerHeading.vue?vue&type=template&id=79a17dfa\"\nimport script from \"./SPRPagerHeading.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRPagerHeading.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRPagerHeading.vue?vue&type=style&index=0&id=79a17dfa&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row comp-search-result my-2\"},[_c('div',{staticClass:\"col-12 grid-row\",on:{\"click\":_vm.clicked}},[_c('div',{staticClass:\"grid-img\"},[_c('sprportrait',{staticClass:\"portrait-size\",style:(_vm.portraitStyle)})],1),_c('div',{staticClass:\"grid-name\"},[(_vm.open)?_c('font-awesome-icon',{staticClass:\"brand-red smallView\",attrs:{\"icon\":\"chevron-down\",\"aria-hidden\":\"true\"}}):_c('font-awesome-icon',{staticClass:\"brand-red smallView\",attrs:{\"icon\":\"chevron-up\",\"aria-hidden\":\"true\"}}),_vm._v(\" \"+_vm._s(_vm.volunteer.lastName)+_vm._s(_vm.volunteer.firstName ? ', ' + _vm.volunteer.firstName : '')+\" \")],1),_c('div',{staticClass:\"grid-contacted\"},[(_vm.showContacted && _vm.volunteer.contactedDate)?_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'check-circle']}}),_c('span',{staticClass:\"contactedtext\"},[_vm._v(_vm._s(_vm.$t('profile.contacted')))])],1):_vm._e()]),_c('div',{staticClass:\"grid-createddate\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"calendar\"}}),_vm._v(\" \"+_vm._s(_vm.createDateFormat(_vm.volunteer.created))+\" \")],1),_c('div',{staticClass:\"grid-zip\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"map-marker-alt\"}}),_vm._v(\" \"+_vm._s(_vm.volunteer.workingZipCode)+\" \"),(_vm.open)?_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-down\",\"aria-hidden\":\"true\"}}):_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-up\",\"aria-hidden\":\"true\"}})],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.open),expression:\"open\"}],staticClass:\"col-12 info\"},[(_vm.profileLoadState === 1)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('loading')],1)]):_vm._e(),(_vm.profile && _vm.profileLoadState === 2)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6 col-12\"},[_c('dl',[_c('dd',[_vm._v(_vm._s(_vm.profileState))]),_c('dt',[_vm._v(_vm._s(_vm.$t('wizard.preferredContactMethod')))]),_c('dd',[_vm._v(_vm._s(_vm.profilePreferredContactMethods))]),_c('dt',[_vm._v(_vm._s(_vm.$t('wizard.alreadyInvolved')))]),_c('dd',[_vm._v(_vm._s(_vm.profileInvolvedEventCategories))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.email')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.email))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.phoneNumber')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.phoneNumber))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.address')))]),_c('dd',[_vm._v(\" \"+_vm._s(_vm.profile.streetAddress)+\", \"+_vm._s(_vm.profile.zipCode)+\" \"+_vm._s(_vm.profile.city)+\" \")]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.dateOfBirth')))]),_c('dd',[_vm._v(_vm._s(_vm.formatDate(_vm.profile.age)))])])]),_c('div',{staticClass:\"col-sm-6 col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('adminUserEditor.workingZipCode')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.workingZipCode))]),_c('dt',[_vm._v(_vm._s(_vm.$t('adminUserEditor.userCreated')))]),_c('dd',[_vm._v(_vm._s(_vm.createDateFormat(_vm.volunteer.created)))]),_c('dt',[_vm._v(_vm._s(_vm.$t('adminUserEditor.volunteerOnline')))]),_c('dd',[_vm._v(_vm._s(_vm.formatBoolean(_vm.profile.volunteerOnline)))]),_c('dt',[_vm._v(_vm._s(_vm.$t('customerSearch.myTimes')))]),_c('dd',[_vm._v(_vm._s(_vm.availabilityTimes))]),_c('dt',[_vm._v(_vm._s(_vm.$t('transportation.title')))]),_c('dd',[_vm._v(_vm._s(_vm.transportation))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.travelTime')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.travelTime)+\" min\")])])])]):_vm._e(),(_vm.profile && _vm.profileLoadState === 2)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('profile.nativeLanguage')))]),_c('dd',[_vm._v(_vm._s(_vm.normalizeTranslation(_vm.profile.nativeLanguage)))]),_c('dt',[_vm._v(_vm._s(_vm.$t('nonIdentProfileForm.languageSpoken')))]),_c('dd',[_vm._v(_vm._s(_vm.spokenLanguages))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.interestEditorHeader')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteerInterests))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.skillEditorHeader')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteerSkills))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.motto')))]),_c('dd',[_vm._v(_vm._s(_vm.motto))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.story')))]),_c('dd',[_vm._v(_vm._s(_vm.story))]),_c('dt',[_vm._v(_vm._s(_vm.$t('groups.actionGroupsTitle')))]),_c('dd',[_vm._v(_vm._s(_vm.actionGroups))]),_c('dt',[_vm._v(_vm._s(_vm.$t('groups.standardGroupsTitle')))]),_c('dd',[_vm._v(_vm._s(_vm.standardGroups))])])]),_c('div',{staticClass:\"col-12 col-sm-6\"},[(_vm.roleLoadState < 2)?_c('div',{staticClass:\"text-center\"},[_c('loading')],1):_vm._e(),(_vm.roleLoadState >= 2)?_c('div',[_c('h6',[_vm._v(\"Punaisen Ristin jäsenyystiedot\")]),(_vm.member)?_c('dl',[_c('MembershipData',{attrs:{\"member\":_vm.member}}),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.roles')))]),_c('dd',[_vm._v(_vm._s(_vm.userRoles))])],1):_vm._e(),_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('profile.rcCourses')))]),(_vm.trainText)?_c('dd',[_vm._v(\" \"+_vm._s(_vm.trainText)+\" \")]):_c('dd',[_vm._v(\" - \")])])]):_vm._e()]),_c('div',{staticClass:\"col-12 text-center\"},[_c('sprbutton',{staticClass:\"d-inline-block my-2\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('userAdmin.editUser'),\"click-event\":\"edit\"},on:{\"edit\":_vm.editClick}}),(_vm.showContacted && !_vm.profile.contactedDate)?_c('sprbutton',{staticClass:\"d-inline-block my-2\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('userAdmin.markContacted'),\"click-event\":\"markContacted\"},on:{\"markContacted\":_vm.markContactedClick}}):_vm._e(),(_vm.showContacted && _vm.profile.contactedDate)?_c('sprbutton',{staticClass:\"d-inline-block my-2\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('userAdmin.markUnContacted'),\"click-event\":\"markUnContacted\"},on:{\"markUnContacted\":_vm.markUnContactedClick}}):_vm._e()],1)]):_vm._e(),(_vm.profileLoadState === 3)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('div',{staticClass:\"warning\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.profileLoadFailed'))+\" \")])])]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row comp-search-result my-2\">\r\n    <div class=\"col-12 grid-row\" @click=\"clicked\">\r\n      <div class=\"grid-img\">\r\n        <sprportrait :style=\"portraitStyle\"\r\n                     class=\"portrait-size\"\r\n        />\r\n      </div>\r\n      <div class=\"grid-name\">\r\n        <font-awesome-icon v-if=\"open\" icon=\"chevron-down\" class=\"brand-red smallView\" aria-hidden=\"true\" />\r\n        <font-awesome-icon v-else icon=\"chevron-up\" class=\"brand-red smallView\" aria-hidden=\"true\" />\r\n        {{ volunteer.lastName }}{{ volunteer.firstName ? ', ' + volunteer.firstName : '' }}\r\n      </div>\r\n      <div class=\"grid-contacted\">\r\n        <span v-if=\"showContacted && volunteer.contactedDate\">\r\n          <font-awesome-icon :icon=\"['far', 'check-circle']\" />\r\n          <span class=\"contactedtext\">{{ $t('profile.contacted') }}</span>\r\n        </span>\r\n      </div>\r\n      <div class=\"grid-createddate\">\r\n        <font-awesome-icon icon=\"calendar\" />\r\n        {{ createDateFormat(volunteer.created) }}\r\n      </div>\r\n      <div class=\"grid-zip\">\r\n        <font-awesome-icon icon=\"map-marker-alt\" />\r\n        {{ volunteer.workingZipCode }}\r\n        <font-awesome-icon v-if=\"open\" icon=\"chevron-down\" class=\"brand-red\" aria-hidden=\"true\" />\r\n        <font-awesome-icon v-else icon=\"chevron-up\" class=\"brand-red\" aria-hidden=\"true\" />\r\n      </div>\r\n    </div>\r\n    <div v-show=\"open\" class=\"col-12 info\">\r\n      <div v-if=\"profileLoadState === 1\" class=\"row\">\r\n        <div class=\"col-12 text-center\">\r\n          <loading />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"profile && profileLoadState === 2\" class=\"row\">\r\n        <div class=\"col-sm-6 col-12\">\r\n          <dl>\r\n            <dd>{{ profileState }}</dd>\r\n            <dt>{{ $t('wizard.preferredContactMethod') }}</dt>\r\n            <dd>{{ profilePreferredContactMethods }}</dd>\r\n            <!-- Profile.InvolvedEventCategories -->\r\n            <dt>{{ $t('wizard.alreadyInvolved') }}</dt>\r\n            <dd>{{ profileInvolvedEventCategories }}</dd>\r\n            <dt>{{ $t('profile.email') }}</dt>\r\n            <dd>{{ profile.email }}</dd>\r\n            <dt>{{ $t('profile.phoneNumber') }}</dt>\r\n            <dd>{{ profile.phoneNumber }}</dd>\r\n            <dt>{{ $t('profile.address') }}</dt>\r\n            <dd>\r\n              {{ profile.streetAddress }},\r\n              {{ profile.zipCode }}\r\n              {{ profile.city }}\r\n            </dd>\r\n            <dt>{{ $t('profile.dateOfBirth') }}</dt>\r\n            <dd>{{ formatDate(profile.age) }}</dd>\r\n          </dl>\r\n        </div>\r\n        <div class=\"col-sm-6 col-12\">\r\n          <dl>\r\n            <dt>{{ $t('adminUserEditor.workingZipCode') }}</dt>\r\n            <dd>{{ profile.workingZipCode }}</dd>\r\n            <dt>{{ $t('adminUserEditor.userCreated') }}</dt>\r\n            <dd>{{ createDateFormat(volunteer.created) }}</dd>\r\n            <dt>{{ $t('adminUserEditor.volunteerOnline') }}</dt>\r\n            <dd>{{ formatBoolean(profile.volunteerOnline) }}</dd>\r\n            <dt>{{ $t('customerSearch.myTimes') }}</dt>\r\n            <dd>{{ availabilityTimes }}</dd>\r\n            <dt>{{ $t('transportation.title') }}</dt>\r\n            <dd>{{ transportation }}</dd>\r\n            <dt>{{ $t('profile.travelTime') }}</dt>\r\n            <dd>{{ profile.travelTime }} min</dd>\r\n          </dl>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"profile && profileLoadState === 2\" class=\"row\">\r\n        <div class=\"col-12 col-sm-6\">\r\n          <dl>\r\n            <dt>{{ $t('profile.nativeLanguage') }}</dt>\r\n            <dd>{{ normalizeTranslation(profile.nativeLanguage) }}</dd>\r\n            <dt>{{ $t('nonIdentProfileForm.languageSpoken') }}</dt>\r\n            <dd>{{ spokenLanguages }}</dd>\r\n            <dt>{{ $t('profile.interestEditorHeader') }}</dt>\r\n            <dd>{{ volunteerInterests }}</dd>\r\n            <dt>{{ $t('profile.skillEditorHeader') }}</dt>\r\n            <dd>{{ volunteerSkills }}</dd>\r\n            <dt>{{ $t('profile.motto') }}</dt>\r\n            <dd>{{ motto }}</dd>\r\n            <dt>{{ $t('profile.story') }}</dt>\r\n            <dd>{{ story }}</dd>\r\n            <dt>{{ $t('groups.actionGroupsTitle') }}</dt>\r\n            <dd>{{ actionGroups }}</dd>\r\n            <dt>{{ $t('groups.standardGroupsTitle') }}</dt>\r\n            <dd>{{ standardGroups }}</dd>\r\n          </dl>\r\n        </div>\r\n        <div class=\"col-12 col-sm-6\">\r\n          <div v-if=\"roleLoadState < 2\" class=\"text-center\">\r\n            <loading />\r\n          </div>\r\n          <div v-if=\"roleLoadState >= 2\">\r\n            <h6>Punaisen Ristin jäsenyystiedot</h6>\r\n            <dl v-if=\"member\">\r\n              <MembershipData :member=\"member\"></MembershipData>\r\n              <dt>{{ $t('profile.roles') }}</dt>\r\n              <dd>{{ userRoles }}</dd>\r\n            </dl>\r\n            <dl>\r\n              <dt>{{ $t('profile.rcCourses') }}</dt>\r\n              <dd v-if=\"trainText\">\r\n                {{ trainText }}\r\n              </dd>\r\n              <dd v-else>\r\n                -\r\n              </dd>\r\n            </dl>\r\n          </div>\r\n        </div>\r\n        <div class=\"col-12 text-center\">\r\n          <sprbutton type=\"primary\" :size=\"1\" :title=\"$t('userAdmin.editUser')\"\r\n                     class=\"d-inline-block my-2\" click-event=\"edit\" @edit=\"editClick\"\r\n          />\r\n          <sprbutton v-if=\"showContacted && !profile.contactedDate\" type=\"primary\" :size=\"1\" :title=\"$t('userAdmin.markContacted')\"\r\n                     class=\"d-inline-block my-2\" click-event=\"markContacted\" @markContacted=\"markContactedClick\"\r\n          />\r\n          <sprbutton v-if=\"showContacted && profile.contactedDate\" type=\"primary\" :size=\"1\" :title=\"$t('userAdmin.markUnContacted')\"\r\n                     class=\"d-inline-block my-2\" click-event=\"markUnContacted\" @markUnContacted=\"markUnContactedClick\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"profileLoadState === 3\" class=\"row\">\r\n        <div class=\"col-12 text-center\">\r\n          <div class=\"warning\">\r\n            {{ $t('userAdmin.profileLoadFailed') }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import sprportrait from '../SPRPortrait.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import cache from '../../mixins/cache.js'\r\n  import inpututils from '../../mixins/inpututils.js'\r\n  import moment from 'moment'\r\n  import MembershipData from '../MembershipData.vue'\r\n  import { CrmDataDto, SimpleUserProfileDto, UserProfileDto } from '@/types/index'\r\n  import { TranslateResult } from 'vue-i18n'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    open: boolean,\r\n    roleLoadState: number,\r\n    profileLoadState: number,\r\n    profile: UserProfileDto | undefined,\r\n    roles: Array<string> | undefined,\r\n    member: CrmDataDto | undefined,\r\n    train: Array<string> | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'UserSimpleSearchResult',\r\n    components: { sprbutton, sprportrait, loading, MembershipData },\r\n    mixins: [cache, enumhelper, inpututils],\r\n    props: {\r\n      volunteer: {\r\n        type: Object as () => SimpleUserProfileDto,\r\n        default: null\r\n      },\r\n      showContacted: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        open: false,\r\n        roleLoadState: 0,\r\n        profileLoadState: 0,\r\n        roles: [] as Array<string>,\r\n        profile: undefined,\r\n        member: undefined,\r\n        train: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      trainText (): string | null {\r\n        // @ts-ignore\r\n        return this.parseArray(this.train) || null\r\n      },\r\n      userRoles (): string {\r\n        if (this.roles && this.roles.length) {\r\n          const self = this\r\n          const mapped = _.map(this.roles, function (x) {\r\n            // @ts-ignore cannot find mixins\r\n            return self.$t('roles.' + self.lcFirst(x))\r\n          })\r\n          return mapped.join(', ')\r\n        }\r\n        return '-'\r\n      },\r\n      portraitStyle (): string {\r\n        const portrait = this.volunteer && this.volunteer.portrait ? this.volunteer.portrait : require('../../assets/img/anon-portrait.png')\r\n        return 'background: url(' + portrait + '); background-size: cover; background-position: center center;'\r\n      },\r\n      volunteerInterests (): string {\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(this.volunteer.areasOfInterest, this.$store.state.profileAreasOfInterest, 'interest') || '-'\r\n      },\r\n      volunteerSkills (): string {\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(this.volunteer.personalSkills, this.$store.state.profilePersonalSkills, 'skills') || '-'\r\n      },\r\n      profileInvolvedEventCategories (): TranslateResult | string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getProfileInvolvedEventCategoriesMaskTranslation(this.profile?.involvedEventCategories)\r\n      },\r\n      profilePreferredContactMethods (): TranslateResult | string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getProfilePreferredContactMethodsMaskTranslation(this.profile?.preferredContactMethods)\r\n      },\r\n      profileState (): TranslateResult | string {\r\n        // this.volunteer.profileState\r\n        // profile.activeNoContact\r\n        // profile.activeNoNew\r\n        // profile.activeOpen\r\n        // profile.inactive\r\n        switch (this.profile?.profileState) {\r\n        case 1:\r\n          return this.$t('profile.activeOpen')\r\n        case 2:\r\n          return this.$t('profile.activeNoContact')\r\n        case 3:\r\n          return this.$t('profile.activeNoNew')\r\n        case 4:\r\n          return this.$t('profile.inactive')\r\n        }\r\n\r\n        return ''\r\n      },\r\n      motto (): string {\r\n        return this.profile?.motto || '-'\r\n      },\r\n      story (): string {\r\n        return this.profile?.story || '-'\r\n      },\r\n      spokenLanguages (): string {\r\n        if (this.profile?.spokenLanguages && this.profile.spokenLanguages.length) {\r\n          const self = this\r\n          const langs = []\r\n          this.profile.spokenLanguages.forEach(function (l) {\r\n            // @ts-ignore cannot find mixins\r\n            langs.push(self.normalizeTranslation(l))\r\n          })\r\n          return langs.join(', ')\r\n        }\r\n        return '-'\r\n      },\r\n      transportation (): string {\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(this.profile.transportation, this.$store.state.transportation, 'transportation') || '-'\r\n      },\r\n      availabilityTimes (): string {\r\n        const bmArr = bitmaskhelper.bitmaskToArray(bitmaskhelper.translateEnumsToBitmask(this.profile?.availabilityTimes!))\r\n        // @ts-ignore cannot find mixins\r\n        //return this.parseArray(this.profile.availabilityTimes, this.$store.state.availabilityTimes, 'availabilityTimes') || '-'\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(bmArr, this.$store.state.availabilityTimes, 'availabilityTimes') || '-'\r\n      },\r\n      actionGroups (): string {\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(this.profile.actionGroups) || '-'\r\n      },\r\n      standardGroups (): string {\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(this.profile.standardGroups) || '-'\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.$bus.$on('clicked-search-result', this.handleClicked)\r\n    },\r\n    beforeDestroy (): void {\r\n      this.$bus.$off('clicked-search-result')\r\n    },\r\n    methods: {\r\n      formatBoolean (val): string {\r\n        if (this.profile?.volunteerOnline != null) {\r\n          // @ts-ignore cannot find mixins\r\n          return this.tBool(val)\r\n        }\r\n        return '-'\r\n      },\r\n      createDateFormat (val): string {\r\n        return moment(val).format('DD.MM.YYYY')\r\n      },\r\n      fetchRoles (): void {\r\n        this.roleLoadState = 1\r\n        const self = this\r\n        var url = (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.roles[0]).replace('{0}', this.volunteer.profileId)\r\n        this.$http.get(url).then(s => {\r\n          self.roleLoadState = 2\r\n          self.roles = s.data\r\n        }, f => {\r\n          self.roleLoadState = 3\r\n        })\r\n\r\n        const url2 = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.membership[0].replace('{0}', this.volunteer.profileId)\r\n        // @ts-ignore cannot find mixins\r\n        this.fetchItem(url2, this.expSeconds(3600), function (x) {\r\n          self.member = x\r\n        })\r\n\r\n        const url3 = this.$store.state.apiBases.eventservice + this.$store.state.apiEndpoints.trainings[0].replace('{0}', this.volunteer.profileId)\r\n        // @ts-ignore cannot find mixins\r\n        this.fetchItem(url3, this.expSeconds(300), function (x) {\r\n          self.train = x\r\n        })\r\n      },\r\n      loadProfileDetailed (): void {\r\n        this.profileLoadState = 1\r\n        const self = this\r\n        var url = (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.userbyprofileid[0]).replace('{0}', this.volunteer.profileId)\r\n        this.$http.get(url).then(s => {\r\n          self.profileLoadState = 2\r\n          self.profile = s.data\r\n        }, f => {\r\n          self.profileLoadState = 3\r\n        })\r\n      },\r\n      clicked: function () {\r\n        // fired on just this item clicked\r\n        const prevOpen = this.open\r\n        // @ts-ignore yeah shouldnt use this._uid, ts is right.\r\n        this.$bus.$emit('clicked-search-result', this._uid)\r\n        this.open = !prevOpen // open this accordion if it was previously closed, and vice versa\r\n        if (this.roleLoadState === 0) {\r\n          this.fetchRoles()\r\n        }\r\n        if (this.profileLoadState === 0) {\r\n          this.loadProfileDetailed()\r\n        }\r\n      },\r\n      handleClicked (uid): void {\r\n        // fired on all clicks, for all accordions on the page. Close all the accordions\r\n        this.open = false\r\n      },\r\n      editClick (event): void {\r\n        this.$router.push('/admin/user/' + this.volunteer.profileId)\r\n      },\r\n      markContactedClick (): void {\r\n        this.$bus.$emit('volunteer-mark-contacted', this.volunteer.profileId)\r\n      },\r\n      markUnContactedClick (): void {\r\n        this.$bus.$emit('volunteer-mark-uncontacted', this.volunteer.profileId)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '~@/assets/scss/_variables.scss';\r\n  .comp-search-result {\r\n    background: $brand-white;\r\n    cursor: pointer;\r\n    border: 2px solid $brand-white;\r\n\r\n    &:hover {\r\n      border: 2px solid $brand-red;\r\n    }\r\n\r\n    .smallView {\r\n      display:none;\r\n    }\r\n\r\n    .portrait-size {\r\n      height: 40px;\r\n      width: 40px;\r\n      margin: 10px;\r\n    }\r\n\r\n    .grid-row {\r\n      display: grid;\r\n      display: -ms-grid;\r\n      grid-template-rows: 60px;\r\n      -ms-grid-rows: 60px;\r\n      grid-template-columns: 60px 3fr 1fr 110px 90px;\r\n      -ms-grid-columns: 60px 3fr 1fr 120px 90px;\r\n\r\n      svg {\r\n        color:$brand-red;\r\n      }\r\n\r\n    }\r\n    .grid-img {\r\n      grid-column: 1;\r\n      -ms-grid-column: 1;\r\n      line-height: 60px;\r\n    }\r\n\r\n    .grid-name {\r\n      grid-column: 2;\r\n      -ms-grid-column: 2;\r\n      line-height: 60px;\r\n\r\n      font-size: 13px;\r\n      letter-spacing: 0.3px;\r\n      font-weight: 700;\r\n      color: $brand-red;\r\n      text-transform: uppercase;\r\n      font-family: \"Signa-Light\", Sans-Serif;\r\n\r\n      overflow: hidden;\r\n      white-space: nowrap;\r\n      text-overflow: ellipsis;\r\n      max-width: 100%;\r\n    }\r\n\r\n    .grid-contacted {\r\n      grid-column: 3;\r\n      -ms-grid-column: 3;\r\n      line-height: 60px;\r\n      text-align: right;\r\n      color:$brand-success;\r\n      padding-right:5px;\r\n\r\n      svg {\r\n        color:$brand-success;\r\n        padding-right:5px;\r\n      }\r\n\r\n      @media (max-width: $media-md-max) {\r\n        .contactedtext {\r\n          display:none;\r\n        }\r\n      }\r\n\r\n    }\r\n\r\n    .grid-createddate {\r\n      grid-column: 4;\r\n      -ms-grid-column: 4;\r\n      line-height: 60px;\r\n      text-align: left;\r\n    }\r\n\r\n    .grid-zip {\r\n      grid-column: 5;\r\n      -ms-grid-column: 5;\r\n      line-height: 60px;\r\n      text-align: right;\r\n    }\r\n\r\n    @media (max-width: 520px) {\r\n        .grid-row {\r\n          grid-template-columns: 60px 3fr;\r\n        }\r\n        .grid-createddate {\r\n          display:none;\r\n        }\r\n        .grid-zip {\r\n          display:none;\r\n        }\r\n        .grid-contacted {\r\n          display:none;\r\n        }\r\n        .smallView {\r\n          display:inline;\r\n        }\r\n     }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserSimpleSearchResult.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserSimpleSearchResult.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserSimpleSearchResult.vue?vue&type=template&id=1f787872&scoped=true\"\nimport script from \"./UserSimpleSearchResult.vue?vue&type=script&lang=ts\"\nexport * from \"./UserSimpleSearchResult.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserSimpleSearchResult.vue?vue&type=style&index=0&id=1f787872&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1f787872\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.done)?_c('div',{staticClass:\"row comp-search-result my-2\"},[_c('div',{staticClass:\"col-12 grid-row\"},[_c('div',{staticClass:\"grid-img style-img\"},[_c('sprportrait',{staticClass:\"portrait-size\",style:(_vm.portraitStyle)})],1),_c('div',{staticClass:\"grid-name style-name\"},[_c('span',[_vm._v(_vm._s(_vm.volunteer.firstName)+\" \"+_vm._s(_vm.volunteer.lastName))]),_c('br'),_c('span',{staticClass:\"more-info\"},[_vm._v(_vm._s(_vm.volunteer.email))]),_c('br'),_c('span',{staticClass:\"more-info\"},[_vm._v(_vm._s(_vm.zipCode))]),(_vm.section)?_c('span',{staticClass:\"more-info\"},[_vm._v(\" (\"+_vm._s(_vm.section.name)+\")\")]):_vm._e()]),(!_vm.pending)?_c('div',{staticClass:\"grid-zip style-zip\"},[(!_vm.selected)?_c('span',[(_vm.actionText)?_c('span',{staticClass:\"action-link\",attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.handleClick(_vm.volunteer.id)}}},[_vm._v(\" \"+_vm._s(_vm.actionText)+\" \")]):_vm._e()]):_c('span',[_c('span',{staticClass:\"action-link\",attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.handleClick(_vm.volunteer.id, 0)}}},[_vm._v(\" \"+_vm._s(_vm.$t('friendTraining.undoFriendOperation'))+\" \")])])]):_c('div',{staticClass:\"griz-zip style-zip text-right\"},[_c('span',{staticClass:\"mt-1\"},[_c('loading')],1)])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"!done\" class=\"row comp-search-result my-2\">\r\n    <div class=\"col-12 grid-row\">\r\n      <div class=\"grid-img style-img\">\r\n        <sprportrait :style=\"portraitStyle\"\r\n                     class=\"portrait-size\"\r\n        />\r\n      </div>\r\n      <div class=\"grid-name style-name\">\r\n        <span>{{ volunteer.firstName }} {{ volunteer.lastName }}</span><br>\r\n        <span class=\"more-info\">{{ volunteer.email }}</span><br>\r\n        <span class=\"more-info\">{{ zipCode }}</span>\r\n        <span v-if=\"section\" class=\"more-info\"> ({{ section.name }})</span>\r\n      </div>\r\n      <div v-if=\"!pending\" class=\"grid-zip style-zip\">\r\n        <span v-if=\"!selected\">\r\n          <span v-if=\"actionText\" class=\"action-link\" tabindex=\"0\" @click=\"handleClick(volunteer.id)\">\r\n            {{ actionText }}\r\n          </span>\r\n        </span>\r\n        <span v-else>\r\n          <span class=\"action-link\" tabindex=\"0\" @click=\"handleClick(volunteer.id, 0)\">\r\n            {{ $t('friendTraining.undoFriendOperation') }}\r\n          </span>\r\n        </span>\r\n      </div>\r\n      <div v-else class=\"griz-zip style-zip text-right\">\r\n        <span class=\"mt-1\"><loading /></span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprportrait from '../SPRPortrait.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import anonPortrait from '../../assets/img/anon-portrait.png'\r\n\r\n  export default {\r\n    name: 'FriendSearchResult',\r\n    components: { sprportrait, loading },\r\n    props: {\r\n      volunteer: {\r\n        type: Object,\r\n        default: null\r\n      },\r\n      mode: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data: function () {\r\n      return {\r\n        selected: false,\r\n        pending: false,\r\n        done: false\r\n      }\r\n    },\r\n    computed: {\r\n      portraitStyle: function () {\r\n        var port = this.volunteer && this.volunteer.Portrait ? this.volunteer.Portrait : anonPortrait\r\n        return 'background: url(' + port + '); background-size: cover; background-position: center center;'\r\n      },\r\n      actionText: function () {\r\n        if (this.hasRole('Admin') || this.hasRole('FriendshipTrainer') || this.hasRole('FriendshipAdmin') || this.hasRole('DistrictAdmin') || this.hasRole('NationalAdmin') || this.hasRole('DistrictFriendshipAdmin') || this.hasRole('FriendshipGroupManager')) {\r\n          if (this.mode === '1') {\r\n            return this.$t('friendTraining.grantFriendTraining')\r\n          } else if (this.mode === '2') {\r\n            return this.$t('friendTraining.revokeFriendStatus')\r\n          }\r\n        }\r\n        return ''\r\n      },\r\n      zipCode: function () {\r\n        return (this.volunteer.zipCode + '').padStart(5, '0')\r\n      },\r\n      section: function () {\r\n        if (this.volunteer) {\r\n          const self = this\r\n          return _.find(self.$store.state.sections, function (s) {\r\n            return s.id === self.volunteer.sectionId\r\n          })\r\n        }\r\n\r\n        return null\r\n      }\r\n    },\r\n    methods: {\r\n      handleClick: function (id) {\r\n        if (this.mode === '1') {\r\n          this.makeRequest(id, 2)\r\n        } else if (this.mode === '2') {\r\n          this.makeRequest(id, 1)\r\n        }\r\n      },\r\n      makeRequest: function (id, newState) {\r\n        if (this.pending || newState < 1 || newState > 3) {\r\n          return\r\n        }\r\n        this.pending = true\r\n\r\n        var body = {}\r\n        body.payload1 = Number(id)\r\n        body.payload2 = Number(newState)\r\n        var uri = (this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.setFriendTraining[0])\r\n\r\n        var self = this\r\n        this.$http.post(uri, body).then(s => {\r\n          self.pending = false\r\n          self.selected = !self.selected\r\n          self.done = true\r\n        }, f => {\r\n          self.pending = false\r\n          self.done = true\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '~@/assets/scss/_variables.scss';\r\n  .comp-search-result {\r\n    background: $brand-white;\r\n    border: 2px solid $brand-white;\r\n\r\n    &:hover {\r\n      border: 2px solid $brand-red;\r\n    }\r\n\r\n    .portrait-size {\r\n      height: 40px;\r\n      width: 40px;\r\n      margin: 10px;\r\n    }\r\n\r\n    .grid-row {\r\n      display: grid;\r\n      display: -ms-grid;\r\n      grid-template-rows: 60px;\r\n      -ms-grid-rows: 60px;\r\n      grid-template-columns: 60px 1fr 200px;\r\n      -ms-grid-columns: 60px 1fr 200px;\r\n      padding-right: 5px;\r\n      padding-left: 5px;\r\n    }\r\n    .grid-img {\r\n      grid-row: 1;\r\n      -ms-grid-row: 1;\r\n      grid-column: 1;\r\n      -ms-grid-column: 1;\r\n    }\r\n\r\n    .more-info {\r\n      color: $brand-grey10;\r\n      text-transform: none;\r\n    }\r\n\r\n    .grid-name {\r\n      grid-row: 1;\r\n      -ms-grid-row: 1;\r\n      grid-column: 2;\r\n      -ms-grid-column: 2;\r\n    }\r\n\r\n    .grid-zip {\r\n      grid-row: 1;\r\n      -ms-grid-row: 1;\r\n      grid-column: 3;\r\n      -ms-grid-column: 3;\r\n    }\r\n\r\n    .style-zip {\r\n      line-height: 60px;\r\n      text-align: right;\r\n\r\n      span {\r\n        line-height: 17px;\r\n        overflow-wrap: break-word;\r\n        display: inline-block;\r\n        vertical-align: middle;\r\n        max-width: 100%;\r\n      }\r\n    }\r\n\r\n    @media (max-width: $media-sm-max) {\r\n      .grid-name {\r\n        grid-row: 2;\r\n        -ms-grid-row: 2;\r\n        grid-column-start: 1;\r\n        grid-column-end: 4;\r\n        -ms-grid-column-span: 3;\r\n      }\r\n    }\r\n\r\n    .style-name {\r\n      font-size: 13px;\r\n      letter-spacing: 0.3px;\r\n      font-weight: 700;\r\n      color: $brand-red;\r\n      text-transform: uppercase;\r\n      font-family: \"Signa-Light\", Sans-Serif;\r\n      overflow: hidden;\r\n      white-space: nowrap;\r\n      text-overflow: ellipsis;\r\n      max-width: 100%;\r\n    }\r\n\r\n    .style-img {\r\n      line-height: 60px;\r\n    }\r\n\r\n    .action-link {\r\n      cursor: pointer;\r\n\r\n      &:hover {\r\n        text-decoration: underline;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendSearchResult.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendSearchResult.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FriendSearchResult.vue?vue&type=template&id=0806ac32&scoped=true\"\nimport script from \"./FriendSearchResult.vue?vue&type=script&lang=js\"\nexport * from \"./FriendSearchResult.vue?vue&type=script&lang=js\"\nimport style0 from \"./FriendSearchResult.vue?vue&type=style&index=0&id=0806ac32&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"0806ac32\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row comp-search-result my-2\"},[_c('div',{staticClass:\"col-12 grid-row\"},[_c('div',{staticClass:\"grid-name\"},[_vm._v(\" \"+_vm._s(_vm.customer.firstName)+\" \"+_vm._s(_vm.customer.lastName)+\" \")]),(!_vm.pending)?_c('div',{staticClass:\"grid-zip\"},[(_vm.isDeleteable)?_c('span',[_c('span',{staticClass:\"action-link\",attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.deleteCustomer}},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.deleteCustomer'))+\" \")])]):_vm._e()]):_c('div',{staticClass:\"griz-zip text-right\"},[_c('span',{staticClass:\"mt-1\"},[_c('loading')],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row comp-search-result my-2\">\r\n    <div class=\"col-12 grid-row\">\r\n      <div class=\"grid-name\">\r\n        {{ customer.firstName }} {{ customer.lastName }}\r\n      </div>\r\n      <div v-if=\"!pending\" class=\"grid-zip\">\r\n        <span v-if=\"isDeleteable\">\r\n          <span class=\"action-link\" tabindex=\"0\" @click=\"deleteCustomer\">\r\n            {{ $t('userAdmin.deleteCustomer') }}\r\n          </span>\r\n        </span>\r\n      </div>\r\n      <div v-else class=\"griz-zip text-right\">\r\n        <span class=\"mt-1\"><loading /></span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { CustomerState, FriendCustomerFindDto, FriendManagementDto } from '@/types'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    selected: boolean,\r\n    pending: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'CustomerSearchResult',\r\n    components: { loading },\r\n    props: {\r\n      customer: {\r\n        type: Object as () => FriendCustomerFindDto,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        selected: false,\r\n        pending: false\r\n      }\r\n    },\r\n    computed: {\r\n      isDeleteable (): boolean {\r\n        return this.customer.state === CustomerState.NonActive\r\n      }\r\n    },\r\n    methods: {\r\n      deleteCustomer (): void {\r\n        if (confirm(this.$t('userAdmin.confirmCustomerDelete').toString())) {\r\n          this.getGroup(this.customer.friendManagementGroupId).then((gp: FriendManagementDto) => {\r\n            var uri = gp.netFriendship\r\n              ? this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customerdeletenet[0]\r\n              : this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customerdeletestandard[0]\r\n\r\n            uri = uri\r\n              .replace('{customerid}', this.customer.id)\r\n              .replace('{groupid}', this.customer.friendManagementGroupId)\r\n\r\n            this.$http.delete(uri).then(s => {\r\n              this.$bus.$emit('user-search-research')\r\n            })\r\n          }, f => {\r\n            // @ts-ignore Doesnt pick up mixins\r\n            this.showAlertError(this.$t('common.fetchFailed'))\r\n          })\r\n        }\r\n      },\r\n      getGroup (groupid: number): PromiseLike<FriendManagementDto> {\r\n        return new Promise((resolve, reject) => {\r\n          var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationById[0].replace('{0}', groupid)\r\n          this.$http.get(url).then((x: HttpResponse) => {\r\n            resolve(x.data)\r\n          }, () => reject(new Error('Failed to get group')))\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '~@/assets/scss/_variables.scss';\r\n  .comp-search-result {\r\n    background: $brand-white;\r\n    border: 2px solid $brand-white;\r\n\r\n    &:hover {\r\n      border: 2px solid $brand-red;\r\n    }\r\n\r\n    .portrait-size {\r\n      height: 40px;\r\n      width: 40px;\r\n      margin: 10px;\r\n    }\r\n\r\n    .grid-row {\r\n      display: grid;\r\n      display: -ms-grid;\r\n      grid-template-rows: 60px;\r\n      -ms-grid-rows: 60px;\r\n      grid-template-columns:1fr 120px;\r\n      -ms-grid-columns: 1fr 120px;\r\n    }\r\n\r\n    .grid-name {\r\n      grid-column: 1;\r\n      -ms-grid-column: 1;\r\n      line-height: 60px;\r\n\r\n      font-size: 13px;\r\n      letter-spacing: 0.3px;\r\n      font-weight: 700;\r\n      color: $brand-red;\r\n      text-transform: uppercase;\r\n      font-family: \"Signa-Light\", Sans-Serif;\r\n\r\n      overflow: hidden;\r\n      white-space: nowrap;\r\n      text-overflow: ellipsis;\r\n      max-width: 100%;\r\n    }\r\n\r\n    .grid-zip {\r\n      grid-column: 3;\r\n      -ms-grid-column: 3;\r\n      text-align: right;\r\n      line-height: 60px;\r\n\r\n      span {\r\n        line-height: 17px;\r\n        overflow-wrap: break-word;\r\n        display: inline-block;\r\n        vertical-align: middle;\r\n        max-width: 100%;\r\n      }\r\n    }\r\n\r\n    .action-link {\r\n      cursor: pointer;\r\n\r\n      &:hover {\r\n        text-decoration: underline;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerSearchResult.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerSearchResult.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomerSearchResult.vue?vue&type=template&id=0fe48516&scoped=true\"\nimport script from \"./CustomerSearchResult.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomerSearchResult.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomerSearchResult.vue?vue&type=style&index=0&id=0fe48516&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"0fe48516\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row comp-search-result my-2\"},[_c('div',{staticClass:\"col-12 grid-row\"},[_c('div',{staticClass:\"grid-name\"},[_vm._v(\" \"+_vm._s(_vm.volunteer.firstName)+\" \"+_vm._s(_vm.volunteer.lastName)+\" \")]),(!_vm.pending)?_c('div',{staticClass:\"grid-zip\"},[(_vm.canDelete)?_c('span',[_c('span',{staticClass:\"action-link\",attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.deleteVolunteer}},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.deleteCustomer'))+\" \")])]):_vm._e()]):_c('div',{staticClass:\"griz-zip text-right\"},[_c('span',{staticClass:\"mt-1\"},[_c('loading')],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row comp-search-result my-2\">\r\n    <div class=\"col-12 grid-row\">\r\n      <div class=\"grid-name\">\r\n        {{ volunteer.firstName }} {{ volunteer.lastName }}\r\n      </div>\r\n      <div v-if=\"!pending\" class=\"grid-zip\">\r\n        <span v-if=\"canDelete\">\r\n          <span class=\"action-link\" tabindex=\"0\" @click=\"deleteVolunteer\">\r\n            {{ $t('userAdmin.deleteCustomer') }}\r\n          </span>\r\n        </span>\r\n      </div>\r\n      <div v-else class=\"griz-zip text-right\">\r\n        <span class=\"mt-1\"><loading /></span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { CustomerState, UserProfileFindDto } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    selected: boolean,\r\n    pending: boolean\r\n  }\r\n  export default Vue.extend({\r\n    name: 'FriendVolunteerSearchResult',\r\n    components: { loading },\r\n    props: {\r\n      volunteer: {\r\n        type: Object as () => UserProfileFindDto,\r\n        required: true\r\n      },\r\n      groupId: {\r\n        type: String,\r\n        required: true\r\n      },\r\n      typedProfileId: {\r\n        type: Number,\r\n        required: true\r\n      },\r\n      isNetProfile: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        selected: false,\r\n        pending: false\r\n      }\r\n    },\r\n    computed: {\r\n      canDelete (): boolean {\r\n        return this.isNetProfile\r\n          ? this.volunteer.friendInfo.netProfile.state === CustomerState.NonActive\r\n          : this.volunteer.friendInfo.standardProfile.state === CustomerState.NonActive\r\n      },\r\n      deleteUrl (): string {\r\n        if (this.isNetProfile === true) {\r\n          return this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendvolunteerdeletenet[0].replace('{groupId}', this.groupId).replace('{friendVolunteerNetProfileId}', this.typedProfileId)\r\n        }\r\n        return this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendvolunteerdeletestandard[0].replace('{groupId}', this.groupId).replace('{friendVolunteerStandardProfileId}', this.typedProfileId)\r\n      }\r\n    },\r\n    methods: {\r\n      deleteVolunteer (): void {\r\n        if (confirm(this.$t('userAdmin.confirmCustomerDelete').toString())) {\r\n          var uri = (this.deleteUrl)\r\n          this.$http.delete(uri).then(s => {\r\n            this.$bus.$emit('user-search-research')\r\n          }, f => {\r\n            console.log(f)\r\n          })\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '~@/assets/scss/_variables.scss';\r\n  .comp-search-result {\r\n    background: $brand-white;\r\n    border: 2px solid $brand-white;\r\n\r\n    &:hover {\r\n      border: 2px solid $brand-red;\r\n    }\r\n\r\n    .portrait-size {\r\n      height: 40px;\r\n      width: 40px;\r\n      margin: 10px;\r\n    }\r\n\r\n    .grid-row {\r\n      display: grid;\r\n      display: -ms-grid;\r\n      grid-template-rows: 60px;\r\n      -ms-grid-rows: 60px;\r\n      grid-template-columns: 1fr 120px;\r\n      -ms-grid-columns: 1fr 120px;\r\n    }\r\n\r\n    .grid-name {\r\n      grid-column: 1;\r\n      -ms-grid-column: 1;\r\n      line-height: 60px;\r\n\r\n      font-size: 13px;\r\n      letter-spacing: 0.3px;\r\n      font-weight: 700;\r\n      color: $brand-red;\r\n      text-transform: uppercase;\r\n      font-family: \"Signa-Light\", Sans-Serif;\r\n\r\n      overflow: hidden;\r\n      white-space: nowrap;\r\n      text-overflow: ellipsis;\r\n      max-width: 100%;\r\n    }\r\n\r\n    .grid-zip {\r\n      grid-column: 3;\r\n      -ms-grid-column: 3;\r\n      text-align: right;\r\n      line-height: 60px;\r\n\r\n      span {\r\n        line-height: 17px;\r\n        overflow-wrap: break-word;\r\n        display: inline-block;\r\n        vertical-align: middle;\r\n        max-width: 100%;\r\n      }\r\n    }\r\n\r\n    .action-link {\r\n      cursor: pointer;\r\n\r\n      &:hover {\r\n        text-decoration: underline;\r\n      }\r\n    }\r\n\r\n    .action-link-disabled {\r\n      cursor: not-allowed;\r\n      color: $brand-grey3;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendVolunteerSearchResult.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendVolunteerSearchResult.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FriendVolunteerSearchResult.vue?vue&type=template&id=1bcaf71c&scoped=true\"\nimport script from \"./FriendVolunteerSearchResult.vue?vue&type=script&lang=ts\"\nexport * from \"./FriendVolunteerSearchResult.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FriendVolunteerSearchResult.vue?vue&type=style&index=0&id=1bcaf71c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1bcaf71c\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row comp-search-result my-2\"},[_c('div',{staticClass:\"col-md-5 col-12 grid-row\"},[_c('div',{staticClass:\"grid-name\"},[_vm._v(\" \"+_vm._s(_vm.$props.volunteer.fullName)+\" \")]),(_vm.pending)?_c('div',{staticClass:\"griz-zip text-right\"},[_c('span',{staticClass:\"mt-1\"},[_c('loading')],1)]):_vm._e()]),_c('div',{staticClass:\"col-md-7 col-12 actions text-right\"},[(!_vm.$props.volunteer.isBroker && !_vm.$props.volunteer.isGroupManager)?_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('userAdmin.addBrokerRights'),\"click-event\":\"makeBroker\"},on:{\"makeBroker\":_vm.onMakeBroker}}):_vm._e(),(_vm.$props.volunteer.isBroker && !_vm.$props.volunteer.isGroupManager)?_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('userAdmin.removeBrokerRights'),\"click-event\":\"removeBroker\"},on:{\"removeBroker\":_vm.onRemoveBroker}}):_vm._e(),(_vm.$props.volunteer.isGroupManager)?_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.groupManager'))+\" \"),_c('font-awesome-icon',{attrs:{\"icon\":\"star\"}})],1):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row comp-search-result my-2\">\r\n    <div class=\"col-md-5 col-12 grid-row\">\r\n      <div class=\"grid-name\">\r\n        {{ $props.volunteer.fullName }}\r\n      </div>\r\n      <div v-if=\"pending\" class=\"griz-zip text-right\">\r\n        <span class=\"mt-1\"><loading /></span>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"col-md-7 col-12 actions text-right\">\r\n      <sprbutton v-if=\"!$props.volunteer.isBroker && !$props.volunteer.isGroupManager\"\r\n                 type=\"primary\"\r\n                 :size=\"4\"\r\n                 :title=\"$t('userAdmin.addBrokerRights')\"\r\n                 class=\"spr-redborder button-width\"\r\n                 click-event=\"makeBroker\"\r\n                 @makeBroker=\"onMakeBroker\"\r\n      />\r\n      <sprbutton v-if=\"$props.volunteer.isBroker && !$props.volunteer.isGroupManager\"\r\n                 type=\"primary\"\r\n                 :size=\"4\"\r\n                 :title=\"$t('userAdmin.removeBrokerRights')\"\r\n                 class=\"spr-redborder button-width\"\r\n                 click-event=\"removeBroker\"\r\n                 @removeBroker=\"onRemoveBroker\"\r\n      />\r\n      <div v-if=\"$props.volunteer.isGroupManager\">\r\n        {{ $t('userAdmin.groupManager') }}\r\n        <font-awesome-icon icon=\"star\" />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue, { PropType } from 'vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { FriendBrokerDto, FriendRoleDataDto } from '@/types'\r\n\r\n  export interface FriendshipBrokerSearchData {\r\n    selected: boolean,\r\n    pending: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'FriendshipBrokerSearchResult',\r\n    components: { sprbutton, loading },\r\n    props: {\r\n      volunteer: {\r\n        type: Object as PropType<FriendBrokerDto | undefined>,\r\n        default: null\r\n      },\r\n      isNetProfile: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      friendManagementGroup: {\r\n        type: Number,\r\n        default: -1\r\n      }\r\n    },\r\n    data (): FriendshipBrokerSearchData {\r\n      return {\r\n        selected: false,\r\n        pending: false\r\n      }\r\n    },\r\n    computed: {\r\n      friendManagementGroupId (): number {\r\n        return this.friendManagementGroup\r\n      },\r\n      setBrokerRoleUrl (): string {\r\n        if (this.isNetProfile === true) {\r\n          return this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.setnetbrokerrole[0]\r\n        }\r\n        return this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.setstandardbrokerrole[0]\r\n      },\r\n      removeBrokerRoleUrl (): string {\r\n        if (this.isNetProfile === true) {\r\n          return this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.revokenetbrokerrole[0]\r\n        }\r\n        return this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.revokestandardbrokerrole[0]\r\n      },\r\n      brokerRoleData (): FriendRoleDataDto {\r\n        if (this.isNetProfile === true) {\r\n          return {\r\n            userId: this.$props.volunteer.userId,\r\n            friendManagementGroupId: this.friendManagementGroupId\r\n          }\r\n        }\r\n        return {\r\n          userId: this.$props.volunteer.userId,\r\n          friendManagementGroupId: this.friendManagementGroupId\r\n        }\r\n      }\r\n    },\r\n    methods: {\r\n      onMakeBroker (): void {\r\n        var url = this.setBrokerRoleUrl\r\n        var postData = this.brokerRoleData\r\n\r\n        this.$http.post(url, postData).then(s => {\r\n          this.$bus.$emit('user-search-research')\r\n          this.$props.volunteer.isBroker = true\r\n        }, f => {\r\n          console.log('errors', f)\r\n        })\r\n      },\r\n      onRemoveBroker (): void {\r\n        var uri = this.removeBrokerRoleUrl\r\n        var postData = this.brokerRoleData\r\n        this.$http.post(uri, postData).then(s => {\r\n          this.$bus.$emit('user-search-research')\r\n          this.$bus.$emit('broker-search-research')\r\n        }, f => {\r\n          console.log('errors', f)\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .comp-search-result {\r\n    background: $brand-white;\r\n    border: 2px solid $brand-white;\r\n    &:hover\r\n\r\n  {\r\n    border: 2px solid $brand-red;\r\n  }\r\n\r\n  .portrait-size {\r\n    height: 40px;\r\n    width: 40px;\r\n    margin: 10px;\r\n  }\r\n\r\n  .grid-row {\r\n    display: grid;\r\n    display: -ms-grid;\r\n    grid-template-rows: 60px;\r\n    -ms-grid-rows: 60px;\r\n    grid-template-columns: 1fr 120px;\r\n    -ms-grid-columns: 1fr 120px;\r\n  }\r\n\r\n  .grid-name {\r\n    grid-column: 1;\r\n    -ms-grid-column: 1;\r\n    line-height: 60px;\r\n    font-size: 13px;\r\n    letter-spacing: 0.3px;\r\n    font-weight: 700;\r\n    color: $brand-red;\r\n    text-transform: uppercase;\r\n    font-family: \"Signa-Light\", Sans-Serif;\r\n    overflow: hidden;\r\n    white-space: nowrap;\r\n    text-overflow: ellipsis;\r\n    max-width: 100%;\r\n  }\r\n\r\n  .actions {\r\n    padding-top: 7px;\r\n  }\r\n\r\n  svg {\r\n    color: $brand-red;\r\n    padding-top: 10px;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipBrokerSearchResult.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipBrokerSearchResult.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FriendshipBrokerSearchResult.vue?vue&type=template&id=97c39e30&scoped=true\"\nimport script from \"./FriendshipBrokerSearchResult.vue?vue&type=script&lang=ts\"\nexport * from \"./FriendshipBrokerSearchResult.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FriendshipBrokerSearchResult.vue?vue&type=style&index=0&id=97c39e30&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"97c39e30\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.profile)?_c('div',{staticClass:\"row comp-search-result my-2\"},[_c('div',{staticClass:\"col-4 col-sm-2 my-auto\"},[_c('sprportrait',{staticClass:\"portrait-size\",style:(_vm.portraitStyle)})],1),_c('div',{staticClass:\"col-8 col-sm-3 py-2 my-auto\"},[_vm._v(\" \"+_vm._s(_vm.profile.firstName)+\" \"+_vm._s(_vm.profile.lastName)+\" \")]),_c('div',{staticClass:\"col-12 col-sm-7 my-auto\"},[(_vm.isRoleEditingEnabled)?_c('div',[(_vm.computedRoles && _vm.computedUserId)?_c('roleEditor',{attrs:{\"id\":_vm.computedUserId,\"roles\":_vm.computedRoles}}):_vm._e()],1):_c('div',{staticClass:\"rolelist\"},[_c('pilllist',{model:{value:(_vm.computedRoles),callback:function ($$v) {_vm.computedRoles=$$v},expression:\"computedRoles\"}})],1)])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row comp-useradmin-role-editor-inline\"},[_c('div',{staticClass:\"col-12\"},[_c('sprmulti',{staticClass:\"select-style\",attrs:{\"title\":\"\",\"placeholder\":_vm.$t('customerSearch.chooseUserRole'),\"items\":_vm.possibleRoles,\"close-aria-label\":\"common.removeRoleAriaLabel\",\"has-errors\":false},on:{\"input\":_vm.mutate},model:{value:(_vm.editedRoles),callback:function ($$v) {_vm.editedRoles=$$v},expression:\"editedRoles\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"spr-multiselect-inline\"},[_c('sprdropdown',{attrs:{\"title\":_vm.title,\"items\":_vm.availableItems,\"placeholder\":_vm.placeholder,\"is-valid\":true},model:{value:(_vm.selectedItem),callback:function ($$v) {_vm.selectedItem=$$v},expression:\"selectedItem\"}}),_c('div',{staticClass:\"selecteditems\"},[_c('ul',{staticClass:\"list-inline\"},_vm._l((_vm.selectedItems),function(item){return _c('li',{key:item.value,staticClass:\"list-inline-item\",attrs:{\"value\":item.value}},[_c('span',{class:{pill:true, inactive:!item.active}},[_c('span',{staticClass:\"lbl\"},[_vm._v(_vm._s(item.text))]),(item.active && _vm.closeAriaLabel)?_c('font-awesome-icon',{attrs:{\"icon\":\"times\",\"aria-label\":_vm.$t(_vm.closeAriaLabel, {role: item.text})},on:{\"click\":function($event){return _vm.removeItem(item)}}}):_vm._e(),(item.active && !_vm.closeAriaLabel)?_c('font-awesome-icon',{attrs:{\"icon\":\"times\"},on:{\"click\":function($event){return _vm.removeItem(item)}}}):_vm._e()],1)])}),0)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .spr-multiselect-inline {\r\n    .selecteditems {\r\n      margin-top:-15px;\r\n\r\n      .pill {\r\n        background-color:$brand-white;\r\n        border: solid 2px $brand-red;\r\n        padding:5px 10px;\r\n        border-radius:20px;\r\n        position: relative;\r\n        display: inline-block;\r\n        color:$brand-red;\r\n        margin-top: 5px;\r\n        font-family: $font-light;\r\n        font-weight: bold;\r\n        font-size:12px;\r\n\r\n        &.inactive {\r\n          color: $brand-grey7;\r\n          border-color: $brand-grey7;\r\n        }\r\n\r\n        .lbl {\r\n          margin-right:10px;\r\n        }\r\n\r\n        svg {\r\n          top:14px;\r\n          right:8px;\r\n          display:inline-block;\r\n          position: absolute;\r\n          margin-top:-10px;\r\n          color:$brand-red;\r\n          cursor:pointer;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n</style>\r\n\r\n<template>\r\n  <div class=\"spr-multiselect-inline\">\r\n    <sprdropdown v-model=\"selectedItem\"\r\n                 :title=\"title\"\r\n                 :items=\"availableItems\"\r\n                 :placeholder=\"placeholder\"\r\n                 :is-valid=\"true\"\r\n    />\r\n    <div class=\"selecteditems\">\r\n      <ul class=\"list-inline\">\r\n        <li v-for=\"item in selectedItems\" :key=\"item.value\" class=\"list-inline-item\" :value=\"item.value\">\r\n          <span :class=\"{pill:true, inactive:!item.active}\">\r\n            <span class=\"lbl\">{{ item.text }}</span>\r\n            <font-awesome-icon v-if=\"item.active && closeAriaLabel\" icon=\"times\" :aria-label=\"$t(closeAriaLabel, {role: item.text})\" @click=\"removeItem(item)\" />\r\n            <font-awesome-icon v-if=\"item.active && !closeAriaLabel\" icon=\"times\" @click=\"removeItem(item)\" />\r\n          </span>\r\n        </li>\r\n      </ul>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprdropdown from './SPRSimpleDropdown.vue'\r\n  export default {\r\n    name: 'Sprmultiselectinline',\r\n    components: { sprdropdown },\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      value: {\r\n        type: Array,\r\n        default: () => []\r\n      }, // selected items\r\n      items: {\r\n        type: Array,\r\n        default: () => []\r\n      }, // all items\r\n      placeholder: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      closeAriaLabel: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        itemsLoaded: false,\r\n        selectedItem: null\r\n      }\r\n    },\r\n    computed: {\r\n      availableItems: function () {\r\n        return _.filter(_.difference(this.items, this.selectedItems), function (x) { return x.active })\r\n      },\r\n      selectedItems () {\r\n        const arr = []\r\n        const options = []\r\n        this.value.forEach(item => {\r\n          var res = _.find(this.items, function (x) {\r\n            return x.value === item\r\n          })\r\n          if (res) {\r\n            arr.push(res)\r\n            if (res.active) {\r\n              options.push(res)\r\n            }\r\n          }\r\n        })\r\n        return arr\r\n      }\r\n    },\r\n    watch: {\r\n      items: function (val) {\r\n        this.itemsLoaded = true\r\n      },\r\n      selectedItem: function (item) {\r\n        // if newly selected item does not already belong to selected items\r\n        if (item && !this.selectedItems.some(i => (i.value === item))) {\r\n          // find the item from the list of all items\r\n          var chosenItem = _.find(this.items, function (i) {\r\n            return i.value === item\r\n          })\r\n          this.$set(this.selectedItems, this.selectedItems.length, chosenItem)\r\n          this.$emit('input', this.selectedItems)\r\n        }\r\n      }\r\n    },\r\n    methods: {\r\n      removeItem (item) {\r\n        var index = (_.indexOf(this.selectedItems, item))\r\n        this.$delete(this.selectedItems, index)\r\n        this.$emit('input', this.selectedItems)\r\n        this.selectedItem = null\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRMultiSelectInline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRMultiSelectInline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRMultiSelectInline.vue?vue&type=template&id=037b20c3\"\nimport script from \"./SPRMultiSelectInline.vue?vue&type=script&lang=js\"\nexport * from \"./SPRMultiSelectInline.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRMultiSelectInline.vue?vue&type=style&index=0&id=037b20c3&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"row comp-useradmin-role-editor-inline\">\r\n    <div class=\"col-12\">\r\n      <sprmulti v-model=\"editedRoles\"\r\n                title=\"\"\r\n                :placeholder=\"$t('customerSearch.chooseUserRole')\"\r\n                :items=\"possibleRoles\"\r\n                close-aria-label=\"common.removeRoleAriaLabel\"\r\n                class=\"select-style\"\r\n                :has-errors=\"false\"\r\n                @input=\"mutate\"\r\n      />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprmulti from '../SPRMultiSelectInline.vue'\r\n\r\n  export default {\r\n    name: 'UserRoleEditorInline',\r\n    components: { sprmulti },\r\n    props: {\r\n      roles: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data: function () {\r\n      return {\r\n        editedRoles: []\r\n      }\r\n    },\r\n    computed: {\r\n      postValue: function () {\r\n        const self = this\r\n\r\n        // user cannot revoke roles they are not allowed to revoke. So there may be some roles they cannot see in the pills\r\n        // we have to make sure that these roles remain in the array for updating\r\n        // add new roles to the existing roles\r\n        const mutatedRoles = _.union(this.roles, this.editedRoles)\r\n\r\n        // remove any roles that the user is allowed to remove, and are removed in editedRoles\r\n        _.remove(mutatedRoles, function (role) {\r\n          const possibleToDeleteRole = _.find(self.possibleRoles, function (r) {\r\n            if (r === '') return false\r\n\r\n            return r.value === role\r\n          })\r\n\r\n          const editedRole = self.editedRoles[_.indexOf(self.editedRoles, role)]\r\n\r\n          return _.isUndefined(editedRole) && possibleToDeleteRole\r\n        })\r\n\r\n        return {\r\n          userId: this.id,\r\n          roles: mutatedRoles\r\n        }\r\n      },\r\n      possibleRoles: function () {\r\n        const isAdmin = this.hasRole('Admin')\r\n        const isNationalAdmin = this.hasRole('NationalAdmin')\r\n        const isNationalEmployee = this.hasRole('NationalEmployee')\r\n        const isDistrictAdmin = this.hasRole('DistrictAdmin')\r\n        const isEmployee = this.hasRole('Employee')\r\n        const isJ1 = this.hasRole('J1')\r\n        const isFriendshipAdmin = this.hasRole('FriendshipAdmin')\r\n        const isDistrictFriendshipAdmin = this.hasRole('DistrictFriendshipAdmin')\r\n        const isFriendshipGroupManager = this.hasRole('FriendshipGroupManager')\r\n\r\n        var rv = []\r\n        rv.push({ value: 'Admin', text: this.$t('roles.admin'), active: isAdmin })\r\n        rv.push({ value: 'NationalAdmin', text: this.$t('roles.nationalAdmin'), active: isAdmin })\r\n        rv.push({ value: 'NationalEmployee', text: this.$t('roles.nationalEmployee'), active: isAdmin || isNationalAdmin })\r\n        rv.push({ value: 'DistrictAdmin', text: this.$t('roles.districtAdmin'), active: isAdmin })\r\n        rv.push({ value: 'Employee', text: this.$t('roles.employee'), active: isAdmin || isDistrictAdmin || isNationalAdmin || isNationalEmployee })\r\n        rv.push({ value: 'J1', text: this.$t('roles.j1'), active: isAdmin || isDistrictAdmin || isNationalAdmin || isNationalEmployee || isEmployee })\r\n        rv.push({ value: 'J2', text: this.$t('roles.j2'), active: isAdmin || isDistrictAdmin || isNationalAdmin || isNationalEmployee || isEmployee || isJ1 })\r\n\r\n        rv.push({ value: 'FriendshipAdmin', text: this.$t('roles.friendshipAdmin'), active: isAdmin })\r\n        rv.push({ value: 'DistrictFriendshipAdmin', text: this.$t('roles.districtFriendshipAdmin'), active: isAdmin })\r\n        rv.push({ value: 'FriendshipGroupManager', text: this.$t('roles.friendshipGroupManager'), active: isAdmin || isFriendshipAdmin || isDistrictFriendshipAdmin })\r\n        rv.push({ value: 'FriendshipBroker', text: this.$t('roles.friendshipBroker'), active: isAdmin || isFriendshipAdmin || isDistrictFriendshipAdmin || isFriendshipGroupManager })\r\n        rv.push({ value: 'NetFriendshipBroker', text: this.$t('roles.netFriendshipBroker'), active: isAdmin || isFriendshipAdmin })\r\n        rv.push({ value: 'FriendshipTrainer', text: this.$t('roles.friendshipTrainer'), active: isAdmin || isDistrictAdmin || isNationalAdmin || isFriendshipAdmin || isDistrictFriendshipAdmin })\r\n\r\n        return rv\r\n      }\r\n    },\r\n    watch: {\r\n      roles: {\r\n        deep: true,\r\n        handler: function (val, old) {\r\n          this.editedRoles = val\r\n        }\r\n      }\r\n    },\r\n    mounted: function () {\r\n      this.editedRoles = this.roles\r\n    },\r\n    methods: {\r\n      mutate: function (value) {\r\n        this.editedRoles = _.map(value, function (v) { return v.value })\r\n        this.editedRoles = _.filter(this.editedRoles, function (v) { return v !== '' })\r\n        this.postEdit()\r\n      },\r\n      postEdit: function (callback) {\r\n        const self = this\r\n        var uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.setroles[0]\r\n        this.$http.post(uri, this.postValue).then(s => {\r\n          self.$bus.$emit('section-roles-changed', this.postValue)\r\n        }, f => {\r\n          if (callback) {\r\n            // todo: Switch to promise\r\n            callback('roles-error') // eslint-disable-line standard/no-callback-literal\r\n          }\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n  .comp-useradmin-role-editor-inline {\r\n\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserRoleEditorInline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserRoleEditorInline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UserRoleEditorInline.vue?vue&type=template&id=34d2947c\"\nimport script from \"./UserRoleEditorInline.vue?vue&type=script&lang=js\"\nexport * from \"./UserRoleEditorInline.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserRoleEditorInline.vue?vue&type=style&index=0&id=34d2947c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"profile\" class=\"row comp-search-result my-2\">\r\n    <div class=\"col-4 col-sm-2 my-auto\">\r\n      <sprportrait :style=\"portraitStyle\" class=\"portrait-size\" />\r\n    </div>\r\n    <div class=\"col-8 col-sm-3 py-2 my-auto\">\r\n      {{ profile.firstName }} {{ profile.lastName }}\r\n    </div>\r\n    <div class=\"col-12 col-sm-7 my-auto\">\r\n      <div v-if=\"isRoleEditingEnabled\">\r\n        <roleEditor v-if=\"computedRoles && computedUserId\" :id=\"computedUserId\" :roles=\"computedRoles\" />\r\n      </div>\r\n      <div v-else class=\"rolelist\">\r\n        <pilllist v-model=\"computedRoles\" />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import roleEditor from './UserRoleEditorInline.vue'\r\n  import sprportrait from '../SPRPortrait.vue'\r\n  import pilllist from '../SPRPillList'\r\n  import anonPortrait from '../../assets/img/anon-portrait.png'\r\n\r\n  export default {\r\n    name: 'UserRolesCurrent',\r\n    components: { sprportrait, roleEditor, pilllist },\r\n    props: {\r\n      profile: {\r\n        type: Object,\r\n        default: null\r\n      },\r\n      roles: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      userId: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data: function () {\r\n      return {}\r\n    },\r\n    computed: {\r\n      portraitStyle: function () {\r\n        var port = this.profile && this.profile.portrait ? this.profile.portrait : anonPortrait\r\n        return 'background: url(' + port + '); background-size: cover; background-position: center center;'\r\n      },\r\n      computedRoles: function () {\r\n        if (this.roles) {\r\n          return this.roles\r\n        }\r\n\r\n        const self = this\r\n        var found = _.find(this.$store.state.sectionRoles, function (x) {\r\n          return self.computedUserId === x.userId\r\n        })\r\n\r\n        if (found && found.roles) {\r\n          return found.roles\r\n        }\r\n\r\n        return []\r\n      },\r\n      computedUserId: function () {\r\n        return this.userId || this.profile.id\r\n      },\r\n      isRoleEditingEnabled: function () {\r\n        // check that the current user has greater than J2 roles\r\n        return (this.hasRole('Admin') || this.hasRole('DistrictAdmin') || this.hasRole('NationalAdmin') || this.hasRole('NationalEmployee') || this.hasRole('DistrictFriendshipAdmin') || this.hasRole('FriendshipAdmin') || this.hasRole('FriendshipGroupManager') || this.hasRole('Employee') || this.hasRole('J1'))\r\n      }\r\n    },\r\n    methods: {}\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '~@/assets/scss/_variables.scss';\r\n  .comp-search-result {\r\n    background: $brand-white;\r\n    cursor: default;\r\n    border: 2px solid $brand-white;\r\n\r\n    &:hover {\r\n      border: 2px solid $brand-red;\r\n    }\r\n\r\n    .portrait-size {\r\n      height: 40px;\r\n      width: 40px;\r\n      margin: 10px;\r\n    }\r\n\r\n    .rolelist {\r\n      text-align: right;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserRolesCurrent.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserRolesCurrent.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UserRolesCurrent.vue?vue&type=template&id=53ee172c&scoped=true\"\nimport script from \"./UserRolesCurrent.vue?vue&type=script&lang=js\"\nexport * from \"./UserRolesCurrent.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserRolesCurrent.vue?vue&type=style&index=0&id=53ee172c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"53ee172c\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('div',{staticClass:\"search-criteria-title\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c('div',{staticClass:\"search-criteria\"},[_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('searchCriteria.sCInterest'))+\" \")]),_c('multiselectinput',{attrs:{\"items\":_vm.areasOfInterest},model:{value:(_vm.searchCriteria.areasOfInterest),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"areasOfInterest\", $$v)},expression:\"searchCriteria.areasOfInterest\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('searchCriteria.sCSkill'))+\" \")]),_c('multiselectinput',{attrs:{\"items\":_vm.personalSkills},model:{value:(_vm.searchCriteria.skills),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"skills\", $$v)},expression:\"searchCriteria.skills\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('searchCriteria.sCLanguage'))+\" \")]),_c('multiselectinput',{attrs:{\"items\":_vm.spokenLanguages},model:{value:(_vm.searchCriteria.spokenLanguages),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"spokenLanguages\", $$v)},expression:\"searchCriteria.spokenLanguages\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('searchCriteria.sCOnline'))+\" \")]),_c('singleselect',{attrs:{\"items\":_vm.volunteerOnline},model:{value:(_vm.searchCriteria.volunteerOnline),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"volunteerOnline\", $$v)},expression:\"searchCriteria.volunteerOnline\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('searchCriteria.sCInvolved'))+\" \")]),_c('multiselectinput',{attrs:{\"items\":_vm.eventCategories},model:{value:(_vm.searchCriteria.involvedEventCategories),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"involvedEventCategories\", $$v)},expression:\"searchCriteria.involvedEventCategories\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('searchCriteria.sCProfileState'))+\" \")]),_c('multiselectinput',{attrs:{\"items\":_vm.profileStates},model:{value:(_vm.searchCriteria.profileStates),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"profileStates\", $$v)},expression:\"searchCriteria.profileStates\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('searchCriteria.sCPreferredContact'))+\" \")]),_c('multiselectinput',{attrs:{\"items\":_vm.preferredContactMethods},model:{value:(_vm.searchCriteria.preferredContactMethods),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"preferredContactMethods\", $$v)},expression:\"searchCriteria.preferredContactMethods\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('searchCriteria.sCContacted'))+\" \")]),_c('singleselect',{attrs:{\"items\":_vm.contacted},model:{value:(_vm.searchCriteria.contacted),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"contacted\", $$v)},expression:\"searchCriteria.contacted\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('searchCriteria.sCAvailability'))+\" \")]),_c('multiselectinput',{attrs:{\"items\":_vm.availabilityTimes},model:{value:(_vm.searchCriteria.availabilityTimes),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"availabilityTimes\", $$v)},expression:\"searchCriteria.availabilityTimes\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('searchCriteria.sCAge'))+\" \")]),_c('singleselect',{attrs:{\"items\":_vm.ageBelow30},model:{value:(_vm.searchCriteria.isAgeBelow30),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"isAgeBelow30\", $$v)},expression:\"searchCriteria.isAgeBelow30\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"searchCriteria.areaOfActivity\"))+\" \")]),_c('sprautocomplete',{attrs:{\"items\":_vm.sectionZips,\"placeholder\":_vm.$t('searchCriteria.workingZipPlaceholder')},model:{value:(_vm.searchCriteria.activityArea),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"activityArea\", $$v)},expression:\"searchCriteria.activityArea\"}})],1)]),_c('div',{staticClass:\"button-position\"},[_c('sprbutton',{staticClass:\"spr-redborder\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('searchCriteria.filter'),\"click-event\":\"search\"},on:{\"search\":_vm.onSearch}}),_c('sprbutton',{staticClass:\"spr-redborder\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('searchCriteria.clear'),\"click-event\":\"search\"},on:{\"search\":_vm.onClear}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:{ 'spr-danger': !_vm.isValid, 'spr-multiselect-dropdown': true, 'spr-roundbox-1': true, 'fixed-width': _vm.fixedWidth }},[_c('singleselect',{attrs:{\"value\":_vm.selectedItem,\"options\":_vm.items,\"placeholder\":_vm.placeholder,\"label\":\"text\",\"track-by\":\"text\",\"allow-empty\":_vm.allowempty,\"searchable\":_vm.searchable,\"multiple\":false},on:{\"input\":_vm.onChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div :class=\"{ 'spr-danger': !isValid, 'spr-multiselect-dropdown': true, 'spr-roundbox-1': true, 'fixed-width': fixedWidth }\">\r\n    <singleselect :value=\"selectedItem\"\r\n                  :options=\"items\"\r\n                  :placeholder=\"placeholder\"\r\n                  label=\"text\"\r\n                  track-by=\"text\"\r\n                  :allow-empty=\"allowempty\"\r\n                  :searchable=\"searchable\"\r\n                  :multiple=\"false\"\r\n                  @input=\"onChange\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import singleselect from 'vue-multiselect'\r\n\r\n  export default {\r\n    components: {\r\n      singleselect\r\n    },\r\n    model: {\r\n      prop: 'selectedItem',\r\n      event: 'change'\r\n    },\r\n    props: {\r\n      selectedItem: {\r\n        type: Object,\r\n        default: null\r\n      },\r\n      items: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      fixedWidth: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      isValid: {\r\n        type: Boolean,\r\n        default: true\r\n      },\r\n      placeholder: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      searchable: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      allowempty: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    methods: {\r\n      onChange (e) {\r\n        this.$emit('change', e)\r\n      }\r\n    }\r\n\r\n  }</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../../assets/scss/_variables.scss\";\r\n\r\n    .spr-danger {\r\n      .multiselect {\r\n        .multiselect__tags {\r\n          border: 2px solid $brand-red !important;\r\n        }\r\n      }\r\n    }\r\n  .fixed-width {\r\n      .multiselect {\r\n        .multiselect__tags {\r\n          width: 150px\r\n        }\r\n      }\r\n  }\r\n</style>","import mod from \"-!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SingleSelectDropdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SingleSelectDropdown.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SingleSelectDropdown.vue?vue&type=template&id=cc3042e0\"\nimport script from \"./SingleSelectDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./SingleSelectDropdown.vue?vue&type=script&lang=js\"\nimport style0 from \"./SingleSelectDropdown.vue?vue&type=style&index=0&id=cc3042e0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:{ '.spr-multiselect-dropdown': true, 'spr-roundbox-1': true },attrs:{\"id\":\"test\"},on:{\"click\":_vm.onClick}},[_c('multiselect',{ref:\"list\",attrs:{\"value\":_vm.selectedItems,\"hide-selected\":true,\"close-on-select\":false,\"placeholder\":\"\",\"label\":\"text\",\"track-by\":\"text\",\"options\":_vm.items,\"searchable\":false,\"multiple\":true},on:{\"input\":_vm.onChange,\"open\":_vm.onOpen,\"close\":_vm.onClose}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div id=\"test\" :class=\"{ '.spr-multiselect-dropdown': true, 'spr-roundbox-1': true }\" @click=\"onClick\">\r\n    <multiselect ref=\"list\"\r\n                 :value=\"selectedItems\"\r\n                 :hide-selected=\"true\"\r\n                 :close-on-select=\"false\"\r\n                 placeholder=\"\"\r\n                 label=\"text\"\r\n                 track-by=\"text\"\r\n                 :options=\"items\"\r\n                 :searchable=\"false\"\r\n                 :multiple=\"true\"\r\n                 @input=\"onChange\"\r\n                 @open=\"onOpen\"\r\n                 @close=\"onClose\"\r\n    ></multiselect>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import Multiselect from 'vue-multiselect'\r\n\r\n  export default {\r\n    components: {\r\n      Multiselect\r\n    },\r\n    model: {\r\n      prop: 'selectedItems',\r\n      event: 'change'\r\n    },\r\n    props: {\r\n      selectedItems: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      items: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      placeholder: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        isClosing: false,\r\n        isOpening: false\r\n      }\r\n    },\r\n    methods: {\r\n      onOpen () {\r\n        this.isOpening = true\r\n      },\r\n      onClose () {\r\n        this.isClosing = true\r\n      },\r\n      onClick () {\r\n        if (!this.isClosing && !this.isOpening) {\r\n          this.$refs.list.isOpen = !this.$refs.list.isOpen\r\n        }\r\n        this.isClosing = false\r\n        this.isOpening = false\r\n      },\r\n      onChange (e) {\r\n        this.$emit('change', e)\r\n      }\r\n    }\r\n  }</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"~@/assets/scss/_variables.scss\";\r\n\r\n  .multiselect {\r\n    margin-top: 10px;\r\n    margin-bottom: 10px;\r\n    box-sizing: content-box;\r\n    display: block;\r\n    position: relative;\r\n    width: 100%;\r\n    min-width: 240px;\r\n    min-height: 40px;\r\n    text-align: left;\r\n    color: #35495e;\r\n    outline: none;\r\n    &:focus .multiselect__tags{\r\n      color: #495057;\r\n      border: solid 2px $brand-grey5;\r\n      outline: 0;\r\n      box-shadow: 0 0 0 0.2rem $brand-grey3;\r\n      transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n    }\r\n  }\r\n\r\n  .multiselect__content{\r\n    display: inline-block;\r\n    background: white;\r\n    list-style-type: none;\r\n    cursor: pointer;\r\n    width: 100%;\r\n  }\r\n  .multiselect__content-wrapper{\r\n    background: $brand-white;\r\n    overflow-y: overlay;\r\n    width: 100%;\r\n    border: solid 1px black;\r\n    position: absolute;\r\n    z-index: 10;\r\n    ul {\r\n      padding-inline-start: unset;\r\n      margin-bottom: 0;\r\n    }\r\n  }\r\n  .multiselect__option {\r\n    display: block;\r\n  }\r\n  .multiselect__element {\r\n    font-family: \"Signa-Light\", Sans-Serif;\r\n    font-size: 16px;\r\n    line-height: 20px;\r\n    letter-spacing: 0.3px;\r\n    font-weight: normal;\r\n    display: block;\r\n    white-space: nowrap;\r\n    min-height: 1.2em;\r\n    padding: 0px 2px 1px 14px;\r\n    writing-mode: horizontal-tb !important;\r\n    text-rendering: auto;\r\n    color: -internal-light-dark(black, white);\r\n    word-spacing: normal;\r\n    text-transform: none;\r\n    text-indent: 0px;\r\n    text-shadow: none;\r\n    text-align: start;\r\n    appearance: auto;\r\n    box-sizing: border-box;\r\n    align-items: center;\r\n    cursor: default;\r\n    &:hover {\r\n      background: $brand-grey2;\r\n    }\r\n  }\r\n\r\n  .multiselect__select {\r\n    position: absolute;\r\n    width: 40px;\r\n    height: 38px;\r\n    right: 1px;\r\n    top: 1px;\r\n    padding: 4px 8px;\r\n    text-align: center;\r\n    transition: transform .2s ease;\r\n  }\r\n  .multiselect__select:before {\r\n      border-width: 5px 5px 0;\r\n      border-style: solid;\r\n      position: relative;\r\n      margin-top: 4px;\r\n      border-color: rgba(0, 0, 0, 0) !important;\r\n      background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAQklEQVQImWNkYGBYx8DA4MLAwPCNAQK4GBgY9oAY/gwMDP/RMEgMDPYjSYDYcOCAJAFio4AXUAwGLEhSJXAWAwMDAHqfD4znzHk9AAAAAElFTkSuQmCC);\r\n      background-repeat: no-repeat;\r\n      top: 13px !important;\r\n      content: \"\";\r\n  }\r\n  .multiselect__tags{\r\n    overflow-wrap: anywhere;\r\n    min-height: 40px;\r\n    display: block;\r\n    border-radius: 2rem;\r\n    padding: 8px 40px 0 8px;\r\n    border: solid 2px $brand-grey5;\r\n    background: #fff;\r\n    font-size: 14px;\r\n  }\r\n\r\n  .multiselect__tag{\r\n    border-radius: 2rem;\r\n    white-space: pre;\r\n    color: white;\r\n    background-color: #CC0000;\r\n    padding: 2px;\r\n    margin-right: .25rem;\r\n    border-spacing: 1em;\r\n    position: relative;\r\n    display: inline-block;\r\n    padding: 4px 15px 4px 10px;\r\n    margin-right: 10px;\r\n    white-space: nowrap;\r\n    overflow: hidden;\r\n    max-width: 100%;\r\n    text-overflow: ellipsis;\r\n    span {\r\n      padding: 9px;\r\n    }\r\n    i {\r\n      padding: 9px;\r\n    }\r\n}\r\n  .multiselect__tag-icon:after {\r\n    content: \"\\D7\";\r\n    font-size: 14px;\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MultiSelectDropdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MultiSelectDropdown.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MultiSelectDropdown.vue?vue&type=template&id=3427a265\"\nimport script from \"./MultiSelectDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./MultiSelectDropdown.vue?vue&type=script&lang=js\"\nimport style0 from \"./MultiSelectDropdown.vue?vue&type=style&index=0&id=3427a265&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"spr-autocomplete-dropdown\"},[_c('div',{staticClass:\"single-select-wrapper\"},[_c('div',{staticClass:\"relative inline-block w-full\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchValue),expression:\"searchValue\"}],staticClass:\"search-input\",attrs:{\"type\":\"text\",\"placeholder\":_vm.placeholder},domProps:{\"value\":(_vm.searchValue)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.searchValue=$event.target.value},_vm.handleInput],\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.selectSingleOption.apply(null, arguments)},function($event){return _vm.handleKeyDown($event)}],\"keypress\":function($event){return _vm.validateInput($event)},\"blur\":_vm.hideDropdown}}),(_vm.showDropdown)?_c('ul',{staticClass:\"dropdown\"},_vm._l((_vm.filteredList),function(item){return _c('li',{key:item,class:{ highlighted: item === _vm.hoveredItem },on:{\"mouseenter\":function($event){_vm.hoveredItem = item},\"mouseleave\":function($event){_vm.hoveredItem = null},\"click\":function($event){return _vm.selectItem(item)}}},[_vm._v(\" \"+_vm._s(item)+\" \")])}),0):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"spr-autocomplete-dropdown\">\r\n    <div class=\"single-select-wrapper\">\r\n      <div class=\"relative inline-block w-full\">\r\n        <input v-model=\"searchValue\" type=\"text\" class=\"search-input\" :placeholder=\"placeholder\" @input=\"handleInput\" @keydown.enter=\"selectSingleOption\" @keydown=\"handleKeyDown($event)\" @keypress=\"validateInput($event)\" @blur=\"hideDropdown\" />\r\n        <ul v-if=\"showDropdown\" class=\"dropdown\">\r\n          <li\r\n            v-for=\"item in filteredList\"\r\n            :key=\"item\"\r\n            :class=\"{ highlighted: item === hoveredItem }\"\r\n            @mouseenter=\"hoveredItem = item\"\r\n            @mouseleave=\"hoveredItem = null\"\r\n            @click=\"selectItem(item)\"\r\n          >\r\n            {{ item }}\r\n          </li>\r\n        </ul>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n  searchValue: string,\r\n  showDropdown: boolean,\r\n  filteredList: Array<any>,\r\n  hoveredItem: any\r\n}\r\n\r\n  export default Vue.extend({\r\n    name: 'SimpleAutoCompleteDropdown',\r\n    props: {\r\n      items: {\r\n        type: Array,\r\n        required: true\r\n      },\r\n      value: {\r\n        type: String,\r\n        required: true\r\n      },\r\n      placeholder: {\r\n        type: String,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        searchValue: this.value,\r\n        showDropdown: false,\r\n        filteredList: [],\r\n        hoveredItem: null\r\n      }\r\n    },\r\n    watch: {\r\n      value (newValue, oldValue) {\r\n        this.searchValue = newValue\r\n      }\r\n    },\r\n    methods: {\r\n      selectItem (item) {\r\n        this.searchValue = item\r\n        this.showDropdown = false\r\n        this.$emit('input', item)\r\n      },\r\n      selectSingleOption () {\r\n        if (this.filteredList.length === 1) {\r\n          this.selectItem(this.filteredList[0])\r\n        }\r\n      },\r\n      handleInput () {\r\n        this.showDropdown = true\r\n        this.filteredList = this.items.filter((item: any) =>\r\n          item.toLowerCase().includes(this.searchValue.toLowerCase())\r\n        )\r\n        if (this.filteredList.length === 1) {\r\n          this.selectItem(this.filteredList[0])\r\n        }\r\n      },\r\n      handleKeyDown (event) {\r\n        if (event.key === 'Backspace' && this.searchValue === '') {\r\n          event.preventDefault()\r\n        }\r\n      },\r\n      validateInput (event) {\r\n        const charCode = event.which ? event.which : event.keyCode\r\n        if (charCode > 31 && (charCode < 48 || charCode > 57)) {\r\n          event.preventDefault()\r\n        }\r\n      },\r\n      hideDropdown () {\r\n        setTimeout(() => {\r\n          this.showDropdown = false // Hide dropdown when input loses focus\r\n          if (!this.items.includes(this.searchValue)) {\r\n            this.searchValue = ''\r\n          }\r\n        }, 300)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import \"@/assets/scss/variables.scss\";\r\n\r\n.spr-autocomplete-dropdown {\r\n  list-style-type: none;\r\n  padding: 0;\r\n  position: absolute;\r\n  z-index: 5;\r\n  li {\r\n    cursor: pointer;\r\n  }\r\n  ul {\r\n    list-style-type: none;\r\n    padding: 0;\r\n    position: absolute;\r\n    z-index: 10;\r\n    max-height: 100px; /* Set maximum height */\r\n    overflow-y: auto; /* Add scrollbar if content exceeds max height */\r\n    width: 100%; /* Set width to 100% */\r\n  }\r\n\r\n  li.highlighted {\r\n    background-color: #f0f0f0;\r\n  }\r\n\r\n  .dropdown {\r\n    -webkit-box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.12), 0 2px 4px 0 rgba(0, 0, 0, 0.08);\r\n    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.12), 0 2px 4px 0 rgba(0, 0, 0, 0.08);\r\n    background-color: #fff;\r\n    color: #606f7b;\r\n    border-radius: 0.25em;\r\n    line-height: 1.25;\r\n    text-align: left;\r\n  }\r\n\r\n  .dropdown > li {\r\n    padding: 0.5em 0.75em;\r\n  }\r\n}\r\n\r\n.spr-autocomplete-dropdown{\r\n  .search-input {\r\n      display: block;\r\n      width: 100%;\r\n      padding: 6px 20px;\r\n      font-size: 1em;\r\n      color: $brand-font;\r\n      background-color: #fff;\r\n      background-clip: padding-box;\r\n      border: 2px solid $brand-grey3;\r\n      transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n      box-sizing: border-box;\r\n      border-radius: 60px;\r\n      outline: none;\r\n\r\n      &.clearclose {\r\n          &::-ms-clear {\r\n              display: none !important;\r\n              width: 0;\r\n              height: 0;\r\n          }\r\n      }\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleAutocompleteDropdown.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleAutocompleteDropdown.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRSimpleAutocompleteDropdown.vue?vue&type=template&id=4fd0dbce&scoped=true\"\nimport script from \"./SPRSimpleAutocompleteDropdown.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRSimpleAutocompleteDropdown.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRSimpleAutocompleteDropdown.vue?vue&type=style&index=0&id=4fd0dbce&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4fd0dbce\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div>\r\n    <div class=\"search-criteria-title\">\r\n      {{ title }}\r\n    </div>\r\n    <div class=\"search-criteria\">\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('searchCriteria.sCInterest') }}\r\n        </div>\r\n        <multiselectinput\r\n          v-model=\"searchCriteria.areasOfInterest\"\r\n          :items=\"areasOfInterest\"\r\n        />\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('searchCriteria.sCSkill') }}\r\n        </div>\r\n        <multiselectinput\r\n          v-model=\"searchCriteria.skills\"\r\n          :items=\"personalSkills\"\r\n        />\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('searchCriteria.sCLanguage') }}\r\n        </div>\r\n        <multiselectinput\r\n          v-model=\"searchCriteria.spokenLanguages\"\r\n          :items=\"spokenLanguages\"\r\n        />\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('searchCriteria.sCOnline') }}\r\n        </div>\r\n        <singleselect\r\n          v-model=\"searchCriteria.volunteerOnline\"\r\n          :items=\"volunteerOnline\"\r\n        />\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('searchCriteria.sCInvolved') }}\r\n        </div>\r\n        <multiselectinput\r\n          v-model=\"searchCriteria.involvedEventCategories\"\r\n          :items=\"eventCategories\"\r\n        />\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('searchCriteria.sCProfileState') }}\r\n        </div>\r\n        <multiselectinput\r\n          v-model=\"searchCriteria.profileStates\"\r\n          :items=\"profileStates\"\r\n        />\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('searchCriteria.sCPreferredContact') }}\r\n        </div>\r\n        <multiselectinput\r\n          v-model=\"searchCriteria.preferredContactMethods\"\r\n          :items=\"preferredContactMethods\"\r\n        />\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('searchCriteria.sCContacted') }}\r\n        </div>\r\n        <singleselect\r\n          v-model=\"searchCriteria.contacted\"\r\n          :items=\"contacted\"\r\n        />\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('searchCriteria.sCAvailability') }}\r\n        </div>\r\n        <multiselectinput\r\n          v-model=\"searchCriteria.availabilityTimes\"\r\n          :items=\"availabilityTimes\"\r\n        />\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('searchCriteria.sCAge') }}\r\n        </div>\r\n        <singleselect\r\n          v-model=\"searchCriteria.isAgeBelow30\"\r\n          :items=\"ageBelow30\"\r\n        />\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t(\"searchCriteria.areaOfActivity\") }}\r\n        </div>\r\n        <sprautocomplete\r\n          v-model=\"searchCriteria.activityArea\"\r\n          :items=\"sectionZips\"\r\n          :placeholder=\"$t('searchCriteria.workingZipPlaceholder')\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"button-position\">\r\n      <sprbutton type=\"primary\"\r\n                 :size=\"1\"\r\n                 :title=\"$t('searchCriteria.filter')\"\r\n                 class=\"spr-redborder\"\r\n                 click-event=\"search\"\r\n                 @search=\"onSearch\"\r\n      />\r\n      <sprbutton type=\"primary\"\r\n                 :size=\"1\"\r\n                 :title=\"$t('searchCriteria.clear')\"\r\n                 class=\"spr-redborder\"\r\n                 click-event=\"search\"\r\n                 @search=\"onClear\"\r\n      />\r\n    </div>\r\n  </div>\r\n</template>\r\n<script lang='ts'>\r\n  import Vue from 'vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import singleselect from '../common/Dropdown/SingleSelectDropdown.vue'\r\n  import multiselectinput from '../common/Dropdown/MultiSelectDropdown.vue'\r\n  import cache from '../../mixins/cache.js'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import inpututils from '../../mixins/inpututils'\r\n  import sprautocomplete from '../SPRSimpleAutocompleteDropdown.vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    disabled: boolean,\r\n    searchCriteria: Record<string, any>,\r\n    isvalid: boolean,\r\n    required: boolean,\r\n    searchtext: string,\r\n    isSearching: boolean,\r\n    eventCategories: Array<any>,\r\n    profileStates: Array<any>,\r\n    personalSkills: Array<any>,\r\n    spokenLanguages: Array<any>,\r\n    ageBelow30: Array<any>,\r\n    areasOfInterest: Array<any>,\r\n    availabilityTimes: Array<any>,\r\n    preferredContactMethods: Array<any>,\r\n    contacted: Array<any>,\r\n    volunteerOnline: Array<any>,\r\n    sectionZips: Array<any>\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'UserSearchCriteria',\r\n    components: { multiselectinput, singleselect, sprbutton, sprautocomplete },\r\n    mixins: [cache, enumhelper, inpututils],\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        disabled: false,\r\n        searchCriteria: {\r\n        involvedEventCategories: [],\r\n        profileStates: [],\r\n        skills: [],\r\n        spokenLanguages: [],\r\n        isAgeBelow30: { id: 0, text: '-' },\r\n        contacted: { id: 0, text: '-' },\r\n        volunteerOnline: { id: 0, text: '-' },\r\n        areasOfInterest: [],\r\n        availabilityTimes: [],\r\n        preferredContactMethods: [],\r\n        activityArea: ''\r\n      } as Record<string, any>,\r\n        isvalid: true,\r\n        required: true,\r\n        searchtext: '',\r\n        isSearching: false,\r\n        eventCategories: [],\r\n        profileStates: [],\r\n        personalSkills: [],\r\n        spokenLanguages: [],\r\n        ageBelow30: [],\r\n        areasOfInterest: [],\r\n        availabilityTimes: [],\r\n        preferredContactMethods: [],\r\n        contacted: [],\r\n        volunteerOnline: [],\r\n        sectionZips: []\r\n      }\r\n    },\r\n    mounted () {\r\n      this.eventCategories = this.$store.state.involvedEventCategories.map((v) => { return { id: v.id, text: this.$t('eventCategory.' + v.text) } })\r\n      this.profileStates = this.$store.state.profileState.map((v) => { return { id: v.id, text: this.$t('profile.' + v.text) } })\r\n      this.personalSkills = this.$store.state.profilePersonalSkills.map((v) => { return { id: v.id, text: this.$t('skills.' + v.text) } })\r\n      this.spokenLanguages = this.$store.state.customerLanguages.map((v) => { return { id: v.id, text: this.$t('languages.' + v.isoCode), isoCode: v.isoCode } })\r\n      this.ageBelow30 = this.$store.state.optionalBooleanValues.map((v) => { return { id: v.id, text: this.$t('boolean.' + v.text) } })\r\n      this.areasOfInterest = this.$store.state.profileAreasOfInterest.map((v) => { return { id: v.id, text: this.$t('interest.' + v.text) } })\r\n      this.availabilityTimes = this.$store.state.availabilityTimes.map((v) => { return { id: v.id, text: this.$t('availabilityTimes.' + v.text) } }).filter((v) => v.id !== 0)\r\n      this.preferredContactMethods = this.$store.state.preferredContactMethods.map((v) => { return { id: v.id, text: this.$t('preferredContactMethods.' + v.text) } }).filter((v) => v.id !== 0)\r\n      this.contacted = this.$store.state.optionalBooleanValues.map((v) => { return { id: v.id, text: this.$t('boolean.' + v.text) } })\r\n      this.volunteerOnline = this.$store.state.optionalBooleanValues.map((v) => { return { id: v.id, text: this.$t('boolean.' + v.text) } })\r\n    },\r\n    created () {\r\n      this.sectionZips = [] as Array<string>\r\n\r\n      const uniqueZipCodes = this.$store.state.sections.reduce((acc, section) => {\r\n        section.zipCodes.forEach((zipCode) => acc.add(zipCode))\r\n        return acc\r\n      }, new Set())\r\n\r\n      this.sectionZips = Array.from(uniqueZipCodes).sort()\r\n    },\r\n    methods: {\r\n      zipFilterFunction (option) {\r\n        return option\r\n          .toString()\r\n          .toLowerCase()\r\n          //@ts-ignore\r\n          .includes(this.searchText.toString().toLowerCase())\r\n      },\r\n      onSearch () {\r\n        const involvedEventCategories = this.searchCriteria.involvedEventCategories.reduce((c, v) => c + v.id, 0)\r\n        const preferredContactMethods = this.searchCriteria.preferredContactMethods.reduce((c, v) => c + v.id, 0)\r\n\r\n        const searchCriteria = {\r\n          areasOfInterest: this.searchCriteria.areasOfInterest.map(v => v.id),\r\n          skills: this.searchCriteria.skills.map(v => v.id),\r\n          spokenLanguages: this.searchCriteria.spokenLanguages.map(v => v.isoCode),\r\n          profileStates: this.searchCriteria.profileStates.map(v => v.id),\r\n          involvedEventCategories: involvedEventCategories,\r\n          preferredContactMethods: preferredContactMethods,\r\n          availabilityTimes: this.searchCriteria.availabilityTimes.map(v => v.id),\r\n          isAgeBelow30: this.convertBoolean(this.searchCriteria.isAgeBelow30),\r\n          contacted: this.convertBoolean(this.searchCriteria.contacted),\r\n          volunteerOnline: this.convertBoolean(this.searchCriteria.volunteerOnline),\r\n          activityArea: this.searchCriteria.activityArea\r\n        }\r\n\r\n        this.$emit('change', searchCriteria)\r\n      },\r\n      onClear () {\r\n        this.searchCriteria = {\r\n          involvedEventCategories: [],\r\n          profileStates: [],\r\n          skills: [],\r\n          spokenLanguages: [],\r\n          areasOfInterest: [],\r\n          availabilityTimes: [],\r\n          preferredContactMethods: [],\r\n          isAgeBelow30: { id: 0, text: '-' },\r\n          contacted: { id: 0, text: '-' },\r\n          volunteerOnline: { id: 0, text: '-' },\r\n          activityArea: ''\r\n        }\r\n        this.$emit('clear')\r\n      },\r\n      convertBoolean (value) {\r\n        return value.id === 0 ? undefined : value.id < 2\r\n      },\r\n      // @ts-ignore - ts intellisense not finding mixins\r\n      activeProfileInvolvedEventCategories (): TranslateResult[] | string[] {\r\n        var involvedEventCategories = this.$store.state.profile.involvedEventCategories\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        var activeItems = this.getProfileInvolvedEventCategoriesMaskItems(involvedEventCategories)\r\n        return activeItems\r\n      },\r\n      // @ts-ignore - ts intellisense not finding mixins\r\n      profileInvolvedEventCategories (): TranslateResult | string {\r\n        var involvedEventCategories = this.$store.state.profile.involvedEventCategories\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getProfileInvolvedEventCategoriesMaskTranslation(involvedEventCategories)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .search-criteria {\r\n    display: flex;\r\n    flex: 1 0 auto;\r\n    align-content: center;\r\n    justify-content: flex-start;\r\n    flex-wrap: wrap;\r\n  }\r\n\r\n  .cap-label {\r\n    color:$brand-red;\r\n    padding:0 20px;\r\n  }\r\n\r\n  .search-item {\r\n    flex: 1 0 auto;\r\n    max-width: 100%;\r\n    margin-top: 10px;\r\n    margin-left: 20px;\r\n    margin-right: 20px;\r\n  }\r\n\r\n  .button-position {\r\n      float: right;\r\n  }\r\n\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserSearchCriteria.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserSearchCriteria.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserSearchCriteria.vue?vue&type=template&id=22d80c72\"\nimport script from \"./UserSearchCriteria.vue?vue&type=script&lang=ts\"\nexport * from \"./UserSearchCriteria.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserSearchCriteria.vue?vue&type=style&index=0&id=22d80c72&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"comp-user-search\">\r\n    <h3 v-if=\"primary === 'training'\">\r\n      {{ $t('friendTraining.trainingHeader') }}\r\n    </h3>\r\n    <div v-if=\"primary === 'clients' || primary === 'volunteers'\">\r\n      <checkboxlist v-model=\"activeClientFilters\"\r\n                    :list=\"clientFilters\"\r\n                    :rows=\"2\"\r\n      />\r\n    </div>\r\n    <p v-if=\"primary === 'brokers' && purpose === 5\">\r\n      {{ $t('userAdmin.existingBrokerRightsTitle') }}\r\n    </p>\r\n    <div class=\"search-section\">\r\n      <div class=\"search\">\r\n        <div class=\"searchbox\">\r\n          <searchbox v-model=\"search\" />\r\n        </div>\r\n        <div v-show=\"canExport\" class=\"export-button\">\r\n          <sprbutton class=\"export-button\"\r\n                     :primary=\"false\"\r\n                     :title=\"$t('userAdmin.exportVolunteerButton')\"\r\n                     :size=\"5\"\r\n                     :aria-label=\"$t('userAdmin.exportVolunteerButton')\"\r\n                     click-event=\"exportVolunteers\"\r\n                     @exportVolunteers=\"exportVolunteers\"\r\n          />\r\n        </div>\r\n        <div v-if=\"includeAdvancedSearch\" class=\"advanced-search-select\" @click=\"toggleAdvancedSearch\">\r\n          <span class=\"advanced-search\">{{ $t('searchCriteria.sCAdvancedSearchTitle') }}</span>\r\n          <font-awesome-icon v-if=\"advancedSearchVisible\" icon=\"chevron-down\" class=\"brand-red\" aria-hidden=\"true\" />\r\n          <font-awesome-icon v-else icon=\"chevron-up\" class=\"brand-red\" aria-hidden=\"true\" />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"includeAdvancedSearch && advancedSearchVisible\" class=\"advanced-search\">\r\n        <usersearchcriteria :v-if=\"advancedSearchVisible\" @change=\"onChangedSearchCriteria\" @clear=\"onClearSearchCriteria\" />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"primary === 'user' || primary === 'employee'\" class=\"row\">\r\n      <div v-if=\"results.results && !loading\" class=\"col-12\">\r\n        <pager-heading pagesizervisible\r\n                       :total=\"total\" :skip=\"skip\" :take=\"take\"\r\n                       @pagesizechanged=\"onPageSizeChanged\"\r\n        ></pager-heading>\r\n        <result v-for=\"(r, i) in results.results\"\r\n                :key=\"'resultset_' + _uid + '_' + i + '_' + r.profileId\"\r\n                :volunteer=\"r\"\r\n        />\r\n        <div v-if=\"results.total === 0\" class=\"text-center my-4\">\r\n          {{ $t('userAdmin.emptySet') }}\r\n        </div>\r\n      </div>\r\n      <div v-else class=\"spinner my-4 col-12\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"primary === 'roles'\" class=\"row\">\r\n      <div v-if=\"results.results && !loading\" class=\"col-12\">\r\n        <rresult v-for=\"(r, i) in results.results\"\r\n                 :key=\"'resultset_' + _uid + '_' + i + '_' + r.profileId\"\r\n                 :profile=\"r\"\r\n        />\r\n        <div v-if=\"results.total === 0\" class=\"text-center my-4\">\r\n          {{ $t('userAdmin.emptySet') }}\r\n        </div>\r\n      </div>\r\n      <div v-else class=\"spinner my-4 col-12\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"primary === 'training'\">\r\n      <div class=\"filter-links\">\r\n        <router-link v-for=\"(f, i) in trainingFilters\"\r\n                     :key=\"'filter_' + _uid + '_' + i\"\r\n                     :to=\"trainLink(f.value)\"\r\n                     class=\"d-inline-block m-2\"\r\n        >\r\n          {{ f.text }}\r\n        </router-link>\r\n      </div>\r\n      <div v-if=\"!loading\">\r\n        <fresult v-for=\"(r, i) in results.results\"\r\n                 :key=\"'resultsetf_' + _uid + '_' + i + '_' + r.profileId\"\r\n                 :volunteer=\"r\"\r\n                 :mode=\"id\"\r\n        />\r\n        <div v-if=\"results.total === 0\" class=\"text-center my-4\">\r\n          {{ $t('userAdmin.emptySet') }}\r\n        </div>\r\n      </div>\r\n      <div v-else class=\"spinner my-4 col-12\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n\r\n    <!--Client search -->\r\n    <div v-if=\"primary === 'clients'\">\r\n      <div v-if=\"results && results.items && !loading\">\r\n        <cresult v-for=\"(r, i) in results.items\"\r\n                 :key=\"'resultsetc_' + _uid + '_' + i + '_' + r.profileId\"\r\n                 :customer=\"r\"\r\n        />\r\n      </div>\r\n      <div v-else class=\"spinner my-4 col-12\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Friend volunteer search -->\r\n    <div v-if=\"primary === 'volunteers'\">\r\n      <div v-if=\"results && results.items && !loading\">\r\n        <volunteerresult v-for=\"(r, i) in results.items\"\r\n                         :key=\"'resultsetv_' + _uid + '_' + i + '_' + r.profileId\"\r\n                         :volunteer=\"r\"\r\n                         :is-net-profile=\"isNetProfile\"\r\n                         :group-id=\"id\"\r\n                         :typed-profile-id=\"getTypedProfileId(r)\"\r\n        />\r\n      </div>\r\n      <div v-else class=\"spinner my-4 col-12\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Friendship broker search -->\r\n    <div v-if=\"primary === 'brokers'\">\r\n      <div v-if=\"results && results.results && !loading\">\r\n        <brokerresult v-for=\"(r, i) in results.results\"\r\n                      :key=\"'resultsetv_' + _uid + '_' + i + '_' + r.profileId\"\r\n                      :volunteer=\"r\"\r\n                      :friend-management-group=\"group.id\"\r\n                      :is-net-profile=\"isNetProfile\"\r\n        />\r\n      </div>\r\n      <div v-else class=\"spinner my-4 col-12\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n\r\n    <pager v-if=\"!loading\"\r\n           :take=\"take\"\r\n           :skip=\"skip\"\r\n           :total=\"total\"\r\n           :max-display=\"maxDisplay\"\r\n           of-text=\"/\"\r\n           :statisticsvisible=\"!pagerheadingvisible\"\r\n           @pagerchanged=\"pagerClick\"\r\n           @pagerprevious=\"pagerPrevious\"\r\n           @pagernext=\"pagerNext\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import searchbox from '../SPRSearchBox.vue'\r\n  import pagerHeading from '../SPRPagerHeading.vue'\r\n  import pager from '../SPRPager.vue'\r\n  import result from './UserSimpleSearchResult.vue'\r\n  import fresult from './FriendSearchResult.vue'\r\n  import cresult from './CustomerSearchResult.vue'\r\n  import volunteerresult from './FriendVolunteerSearchResult.vue'\r\n  import brokerresult from './FriendshipBrokerSearchResult.vue'\r\n  import rresult from './UserRolesCurrent.vue'\r\n  import checkboxlist from '../SPRSimpleCheckboxList.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { GetSectionVolunteersCriteria, ProfileState, AvailabilityTimesEnum, GetVolunteersCriteria,\r\n           InvolvedEventCategories, FriendManagementDto, FindFriendManagementGroupVolunteersResult,\r\n           FindFriendManagementGroupCustomersResult, FindNetFriendManagementGroupContentCriteria,\r\n           FindStandardFriendManagementGroupContentCriteria, CustomerTypes,\r\n           PreferredAges, FriendshipTypes, PersonalSkills, AreaOfInterest, PreferredContactMethods, SimpleUserProfileDto, PreferredGenders, TimeWithoutFriends, \r\n           OrderByFriendType} from '@/types'\r\n  import { SprCheckboxValue, FilterItem } from '@/types/custom'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n  import usersearchcriteria from '../sections/UserSearchCriteria.vue'\r\n  import cache from '../../mixins/cache.js'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import inpututils from '../../mixins/inpututils'\r\n  import ExcelJS from 'exceljs'\r\n  import stringhelper from '@/helpers/stringhelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    searchCriteria: GetSectionVolunteersCriteria | GetVolunteersCriteria,\r\n    group: undefined | FriendManagementDto,\r\n    search: string,\r\n    take: number,\r\n    skip: number,\r\n    total: number,\r\n    maxDisplay: number,\r\n    pagerheadingvisible: boolean,\r\n    results: FindFriendManagementGroupVolunteersResult | FindFriendManagementGroupCustomersResult | any, // todo: This should be updated for the new return types (see #3618, #3619)\r\n    loading: boolean,\r\n    trainingFilters: Array<SprCheckboxValue>,\r\n    activeClientFilters: Array<number>,\r\n    advancedSearchVisible: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'UserSearch',\r\n    components: { sprbutton, searchbox, pager, pagerHeading, result, fresult, cresult, checkboxlist, volunteerresult, brokerresult, rresult, loading, usersearchcriteria },\r\n    mixins: [cache, enumhelper, inpututils],\r\n    props: {\r\n      filter: {\r\n        default: 'all',\r\n        type: String\r\n      },\r\n      id: {\r\n        default: '0',\r\n        type: String\r\n      },\r\n      purpose: {\r\n        default: 1,\r\n        type: Number\r\n      },\r\n      primary: {\r\n        default: 'user',\r\n        type: String\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        searchCriteria: {\r\n          involvedEventCategories: InvolvedEventCategories.NotDefined as InvolvedEventCategories,\r\n          profileStates: [] as ProfileState[],\r\n          skills: [] as PersonalSkills[],\r\n          spokenLanguages: [] as string[],\r\n          isAgeBelow30: undefined,\r\n          areasOfInterest: [] as AreaOfInterest[],\r\n          availabilityTimes: [] as AvailabilityTimesEnum[],\r\n          preferredContactMethods: 0,\r\n          contacted: undefined,\r\n          volunteerOnline: undefined\r\n        } as GetSectionVolunteersCriteria,\r\n        group: undefined,\r\n        search: '',\r\n        take: 5,\r\n        skip: 0,\r\n        total: 0,\r\n        maxDisplay: 5,\r\n        results: {},\r\n        loading: false,\r\n        pagerheadingvisible: false,\r\n        advancedSearchVisible: false,\r\n        trainingFilters: [{ text: this.$t('friendTraining.noCert').toString(), value: 1 }, { text: this.$t('friendTraining.hasCert').toString(), value: 2 }],\r\n        activeClientFilters: []\r\n      }\r\n    },\r\n    computed: {\r\n      canExport (): boolean {\r\n        //@ts-ignore\r\n        return this.primary === 'volunteers' && (this.hasRole('Admin') || this.hasRole('FriendshipGroupManager'))\r\n      },\r\n      includeAdvancedSearch (): boolean {\r\n        if (this.id && this.filter === 'section' && (this.primary === 'user' || this.primary === 'employee')) {\r\n          return true\r\n        }\r\n\r\n        return false\r\n      },\r\n      clientFilters (): Array<SprCheckboxValue> {\r\n        const self = this\r\n        return _.map(this.$store.state.customerStates, function (val, key) {\r\n          return { value: val.id, text: self.$t('customerStates.' + val.text), selected: false } as SprCheckboxValue\r\n        })\r\n      },\r\n      isNetProfile (): boolean {\r\n        return Boolean(this.group?.netFriendship)\r\n      }\r\n    },\r\n    watch: {\r\n      searchCriteria () {\r\n        this.performSearch()\r\n      },\r\n      search: function (val) {\r\n        this.skip = 0\r\n        this.performSearch()\r\n      },\r\n      activeClientFilters: {\r\n        handler: function (val) {\r\n          this.skip = 0\r\n          this.performSearch()\r\n        },\r\n        deep: true\r\n      }\r\n    },\r\n    created () {\r\n      this.pagerheadingvisible = this.primary === 'user' || this.primary === 'employee'\r\n    },\r\n    mounted (): void {\r\n      if (this.filter === 'friendship') {\r\n        this.getGroup()\r\n          .then((result: HttpResponse) => {\r\n            this.group = result.data\r\n            this.$bus.$on('user-search-research', this.performSearch)\r\n            this.performSearch()\r\n          })\r\n          .catch((err: any) => {\r\n            // @ts-ignore\r\n            console.log(err)\r\n            // @ts-ignore\r\n            this.showAlertError(this.$t('common.fetchFailed'))\r\n          })\r\n      } else {\r\n        this.performSearch()\r\n      }\r\n    },\r\n    beforeDestroy: function () {\r\n      this.$bus.$off('user-search-research')\r\n    },\r\n    methods: {\r\n      exportVolunteers (): void {\r\n        this.loading = true\r\n        const self = this\r\n\r\n        if (this.skip < 0) this.skip = 0\r\n\r\n        if (this.primary === 'volunteers') {\r\n          const params = {\r\n            skip: 0,\r\n            take: 0,\r\n            searchString: this.search,\r\n            orderByFriendType: OrderByFriendType.OldestFirst,\r\n            ages: PreferredAges.NotDefined,\r\n            timeWithoutFriends: TimeWithoutFriends.NotDefined,\r\n            customerTypes: CustomerTypes.NotDefined,\r\n            friendshipTypes: FriendshipTypes.NotDefined,\r\n            customerStates: this.activeClientFilters,\r\n            languages: [],\r\n            groupMembership: false,\r\n            genders: [],\r\n            natives: [],\r\n            includeFriendPools: false,\r\n            includeFriendships: false,\r\n            groupId: Number(this.id)\r\n          } as FindStandardFriendManagementGroupContentCriteria\r\n\r\n          const url = this.group?.netFriendship\r\n            ? this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteerexportnet[0]\r\n            : this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteerexportstandard[0]\r\n\r\n          this.$http.post(url, params).then((response: any) => {\r\n            const workbook = new ExcelJS.Workbook()\r\n\r\n            // Add a worksheet to the workbook\r\n            const worksheet = workbook.addWorksheet('Volunteers')\r\n\r\n            // Define the column headers\r\n            worksheet.columns = [{ header: 'Etunimi', key: 'firstName', width: 30 },\r\n                                 { header: 'Sukunimi', key: 'lastName', width: 30 },\r\n                                 { header: 'Sähköposti', key: 'email', width: 30 },\r\n                                 { header: 'Puhelin', key: 'phone', width: 30 },\r\n                                 { header: 'Tila', key: 'state', width: 30 }]\r\n\r\n            // Apply bold font to the header row\r\n            const headerRow = worksheet.getRow(1)\r\n            headerRow.font = { bold: true }\r\n\r\n            // Add member data to the worksheet\r\n            response.body.forEach(function (member: any) {\r\n              //@ts-ignore\r\n              worksheet.addRow({ firstName: member.firstName, lastName: member.lastName, email: member.email, phone: member.phoneNumber, state: self.$t('customerStates.' + stringhelper.toCamelCase(member.state), 'fi') })\r\n            })\r\n\r\n            // Set filters on the header row\r\n            headerRow.eachCell(function (cell) {\r\n              cell.alignment = { vertical: 'middle', horizontal: 'center' }\r\n            })\r\n            worksheet.autoFilter = 'A1:E1' // Apply filters to all columns\r\n\r\n            // Generate the Excel file as a binary buffer\r\n            return workbook.xlsx.writeBuffer()\r\n          })\r\n            .then(function (buffer) {\r\n              if (buffer === null) return\r\n              // Create a Blob object with the Excel file buffer\r\n              const link = document.createElement('a')\r\n              link.href = URL.createObjectURL(new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }))\r\n              const dateAsTimestamp = new Date().toISOString().substr(0, 19).replace(/:/g, '-').replace('T', '-')\r\n              //@ts-ignore\r\n              link.download = `VolunteerExport-${this.group.id}-${dateAsTimestamp}.xlsx`\r\n\r\n              // Append the link to the document body or any other parent element\r\n              document.body.appendChild(link)\r\n\r\n              // Trigger the click event to start the download\r\n              link.click()\r\n              link.remove()\r\n            }, (err: Error) => {\r\n              // eslint-disable-next-line no-console\r\n              console.log(err)\r\n              this.loading = false\r\n              this.$store.dispatch('alert/error', { message: this.$t('report.failed') })\r\n            })\r\n        }\r\n      },\r\n      onClearSearchCriteria (): void {\r\n        this.search = ''\r\n      },\r\n      onChangedSearchCriteria (searchCriteria): void {\r\n        if (JSON.stringify(this.searchCriteria) !== JSON.stringify(searchCriteria)) {\r\n          this.searchCriteria = searchCriteria\r\n          this.skip = 0\r\n        }\r\n      },\r\n      toggleAdvancedSearch (): void {\r\n        this.advancedSearchVisible = !this.advancedSearchVisible\r\n      },\r\n      onPageSizeChanged (pageSize): void {\r\n        this.take = pageSize\r\n        this.skip = 0\r\n        this.performSearch()\r\n      },\r\n      getTypedProfileId (volunteer): string {\r\n        if (this.isNetProfile === true) {\r\n          return volunteer.friendInfo.netProfile.id\r\n        }\r\n        return volunteer.friendInfo.standardProfile.id\r\n      },\r\n      trainLink (newState): string {\r\n        return '/admin/training/' + newState\r\n      },\r\n      pagerClick (val): void {\r\n        this.skip = val.skip\r\n        this.performSearch()\r\n      },\r\n      pagerPrevious (): void {\r\n        this.skip -= this.take\r\n        this.performSearch()\r\n      },\r\n      pagerNext (): void {\r\n        this.skip += this.take\r\n        this.performSearch()\r\n      },\r\n      getGroup (): Promise<HttpResponse> {\r\n        const url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationById[0].replace('{0}', this.id)\r\n        return this.$http.get(url) as Promise<HttpResponse>\r\n      },\r\n      performSearch (): void {\r\n        this.loading = true\r\n        if (this.skip < 0) this.skip = 0\r\n\r\n        if (this.primary === 'training' || this.primary === 'user' || this.primary === 'employee' || this.primary === 'roles') {\r\n          // check if section is defined, if it is, use advanced search to collect the volunteers\r\n          if (this.id && this.filter === 'section' && this.primary === 'user') {\r\n            const params = {\r\n            skip: this.skip,\r\n            take: this.take,\r\n            areasOfInterest: this.searchCriteria.areasOfInterest, // areasOfInterest: AreaOfInterest[];\r\n            availabilityTimes: this.searchCriteria.availabilityTimes, // availabilityTimes: AvailabilityTimesEnum[];\r\n            contacted: this.searchCriteria.contacted,\r\n            involvedEventCategories: this.searchCriteria.involvedEventCategories, // involvedEventCategories: InvolvedEventCategories;\r\n            isAgeBelow30: this.searchCriteria.isAgeBelow30,\r\n            preferredContactMethods: this.searchCriteria.preferredContactMethods,\r\n            profileStates: this.searchCriteria.profileStates, // profileStates: ProfileState[];\r\n            searchWord: this.search, //searchWord: string;\r\n            sectionId: Number(this.id), // sectionId: number;\r\n            skills: this.searchCriteria.skills, // skills: PersonalSkills[];\r\n            spokenLanguages: this.searchCriteria.spokenLanguages, // spokenLanguages: string[];\r\n            volunteerOnline: this.searchCriteria.volunteerOnline\r\n          } as GetSectionVolunteersCriteria\r\n            const url = this.url()\r\n            this.$http.post(url, params).then(s => {\r\n              this.results = s.data\r\n              this.total = this.results.total\r\n              this.loading = false\r\n            })\r\n          } else if (this.primary === 'employee') {\r\n            const params = {\r\n            skip: this.skip,\r\n            take: this.take,\r\n            areasOfInterest: this.searchCriteria.areasOfInterest, // areasOfInterest: AreaOfInterest[];\r\n            availabilityTimes: this.searchCriteria.availabilityTimes, // availabilityTimes: AvailabilityTimesEnum[];\r\n            contacted: this.searchCriteria.contacted,\r\n            involvedEventCategories: this.searchCriteria.involvedEventCategories, // involvedEventCategories: InvolvedEventCategories;\r\n            isAgeBelow30: this.searchCriteria.isAgeBelow30,\r\n            preferredContactMethods: this.searchCriteria.preferredContactMethods,\r\n            profileStates: this.searchCriteria.profileStates, // profileStates: ProfileState[];\r\n            searchWord: this.search, //searchWord: string;\r\n            skills: this.searchCriteria.skills, // skills: PersonalSkills[];\r\n            spokenLanguages: this.searchCriteria.spokenLanguages, // spokenLanguages: string[];\r\n            volunteerOnline: this.searchCriteria.volunteerOnline\r\n          } as GetVolunteersCriteria\r\n            const url = this.url()\r\n\r\n            this.$http.get(url).then(s => {\r\n              this.results = s.data\r\n              this.total = this.results.total\r\n              this.loading = false\r\n            })\r\n          } else {\r\n            const url = this.url()\r\n\r\n            this.$http.get(url).then(s => {\r\n              this.results = s.data\r\n              this.total = this.results.total\r\n              this.loading = false\r\n            })\r\n          }\r\n        } else if (this.primary === 'brokers') {\r\n          const url = this.group?.netFriendship\r\n            ? this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationFindNetBrokers[0]\r\n            : this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationFindStandardBrokers[0]\r\n\r\n          const dto = {\r\n            search: this.search,\r\n            friendManagementGroupId: Number(this.id),\r\n            potentialBrokersOnly: false,\r\n            skip: this.skip,\r\n            take: this.take\r\n          }\r\n\r\n          this.$http.post(url, dto).then(s => {\r\n            this.results = s.data\r\n            this.total = this.results.total\r\n            this.loading = false\r\n          })\r\n        } else if (this.primary === 'volunteers') {\r\n          const params = {\r\n            skip: this.skip,\r\n            take: this.take,\r\n            searchString: this.search,\r\n            orderByFriendType: OrderByFriendType.OldestFirst,\r\n            ages: PreferredAges.NotDefined,\r\n            timeWithoutFriends: TimeWithoutFriends.NotDefined,\r\n            customerTypes: CustomerTypes.NotDefined,\r\n            friendshipTypes: FriendshipTypes.NotDefined,\r\n            customerStates: this.activeClientFilters,\r\n            languages: [],\r\n            natives: [],\r\n            groupMembership: false,\r\n            genders: [],\r\n            includeFriendPools: false,\r\n            includeFriendships: false,\r\n            groupId: Number(this.id)\r\n          } as FindStandardFriendManagementGroupContentCriteria\r\n\r\n          const url = this.group?.netFriendship\r\n            ? this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteersearchnet[0]\r\n            : this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteersearchstandard[0]\r\n\r\n          this.$http.post(url, params).then(s => {\r\n            this.results = s.data as FindFriendManagementGroupVolunteersResult\r\n            this.total = this.results.total\r\n            this.loading = false\r\n          })\r\n        } else if (this.primary === 'clients') {\r\n          const clientdto = {} as FindNetFriendManagementGroupContentCriteria | FindStandardFriendManagementGroupContentCriteria\r\n          clientdto.skip = this.skip\r\n          clientdto.take = this.take\r\n          clientdto.searchString = this.search\r\n          clientdto.customerStates = this.activeClientFilters\r\n          clientdto.groupId = Number(this.id)\r\n          clientdto.includeFriendPools = false\r\n          clientdto.includeFriendships = false\r\n\r\n          const uri = this.group?.netFriendship\r\n            ? this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customersearchnet[0]\r\n            : this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customersearchstandard[0]\r\n\r\n          this.$http.post(uri, clientdto).then(s => {\r\n            this.results = s.data as FindFriendManagementGroupCustomersResult\r\n            this.total = this.results.total\r\n            this.loading = false\r\n          })\r\n        }\r\n      },\r\n      url: function () {\r\n        if (this.primary === 'training') {\r\n          return (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.findbyfriendship[0]) // returns SearchResult<PublicProfileDto>\r\n            .replace('{state}', this.id)\r\n            .replace('{skip}', this.skip)\r\n            .replace('{take}', this.take)\r\n            .replace('{search}', this.search)\r\n        } else if (this.primary === 'clients') {\r\n          // return (this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customersimplesearch[0]) // to be updated - update the TemplateComponentData (data) typescript type for results to new one)\r\n        } else if (this.primary === 'volunteers') {\r\n          // return (this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteersimplesearch[0]) // to be updated - update the TemplateComponentData (data) typescript type for results to new one)\r\n        } else if (this.primary === 'user') {\r\n          if (this.id) {\r\n            return (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.findsectionvolunteers[0])\r\n          } else {\r\n            return (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.findSimpleIdentOnly[0]) // Returns SearchResult<SimpleUserProfileDto> to be updated - update the TemplateComponentData (data) typescript type for results to new one)\r\n              .replace('{from}', this.filter)\r\n              .replace('{id}', Number(this.id))\r\n              .replace('{skip}', this.skip)\r\n              .replace('{take}', this.take)\r\n              .replace('{search}', this.search)\r\n          }\r\n        } else if (this.primary === 'employee') {\r\n          return (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.findEmployees[0]) // Returns SearchResult<SimpleUserProfileDto>\r\n            .replace('{skip}', this.skip)\r\n            .replace('{take}', this.take)\r\n            .replace('{search}', this.search)\r\n        }\r\n\r\n        return (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.findIdentOnly[0]) // This does not seem to be used. I cannot replicate this.\r\n          .replace('{from}', this.filter)\r\n          .replace('{id}', this.id)\r\n          .replace('{purpose}', this.purpose)\r\n          .replace('{skip}', this.skip)\r\n          .replace('{take}', this.take)\r\n          .replace('{search}', this.search)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .export-button {\r\n      font-size: 13px;\r\n      line-height: 20px;\r\n      margin-right: -15px;\r\n    }\r\n\r\n  .advanced-search{\r\n    font-family: \"Signa-Light\", Sans-Serif;\r\n    font-size: 16px;\r\n    line-height: 20px;\r\n    letter-spacing: 0.3px;\r\n    margin-right: 20px;\r\n  }\r\n\r\n  .search-section {\r\n    display: flex;\r\n    flex: 1 0 auto;\r\n    flex-direction: column;\r\n  }\r\n  .search {\r\n  display: flex;\r\n  flex-direction: row;\r\n}\r\n\r\n.searchbox {\r\n  flex-grow: 1; /* Take up remaining space */\r\n  flex-shrink: 0; /* Do not shrink */\r\n  flex-basis: 0; /* Allow content to dictate size */\r\n}\r\n\r\n.export-button {\r\n  flex-shrink: 1; /* Allow shrinking */\r\n  flex-basis: auto; /* Let content dictate initial size */\r\n  /* Add any other styles you need for your button */\r\n}\r\n  .advanced-search {\r\n    display: inline-block;\r\n    padding: 10px;\r\n    font-size: 18px;\r\n    text-decoration: none;\r\n    font-family: \"Signa\", Sans-Serif;\r\n    color: #747473;\r\n    transition: color 0.33s;\r\n  }\r\n  .advanced-search-select{\r\n    flex: 0 0 auto;\r\n    align-self: center;\r\n    margin-left: 20px;\r\n    cursor: pointer;\r\n\r\n    :hover {\r\n      color: #000000;\r\n      transition: color 0.33s;\r\n    }\r\n  }\r\n  .comp-user-search {\r\n    p {\r\n      font-family: $font-bold;\r\n    }\r\n    .filter-links {\r\n      a {\r\n        text-transform: uppercase;\r\n        font-weight: bold;\r\n        color: $brand-grey7 !important;\r\n\r\n        &.router-link-active {\r\n          color: $brand-red !important;\r\n        }\r\n      }\r\n    }\r\n\r\n    .spinner {\r\n      color: $brand-red;\r\n      text-align: center;\r\n    }\r\n\r\n    .actions {\r\n      padding-top: 7px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserSearch.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserSearch.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserSearch.vue?vue&type=template&id=39b176c8\"\nimport script from \"./UserSearch.vue?vue&type=script&lang=ts\"\nexport * from \"./UserSearch.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserSearch.vue?vue&type=style&index=0&id=39b176c8&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"comp-user-search\"},[(_vm.primary === 'training')?_c('h3',[_vm._v(\" \"+_vm._s(_vm.$t('friendTraining.trainingHeader'))+\" \")]):_vm._e(),(_vm.primary === 'clients' || _vm.primary === 'volunteers')?_c('div',[_c('checkboxlist',{attrs:{\"list\":_vm.clientFilters,\"rows\":2},model:{value:(_vm.activeClientFilters),callback:function ($$v) {_vm.activeClientFilters=$$v},expression:\"activeClientFilters\"}})],1):_vm._e(),(_vm.primary === 'brokers' && _vm.purpose === 5)?_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.existingBrokerRightsTitle'))+\" \")]):_vm._e(),_c('div',{staticClass:\"search-section\"},[_c('div',{staticClass:\"search\"},[_c('div',{staticClass:\"searchbox\"},[_c('searchbox',{model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),(_vm.includeAdvancedSearch || _vm.includeAdminSearch)?_c('div',{staticClass:\"advanced-search-select\",on:{\"click\":_vm.toggleAdvancedSearch}},[_c('span',{staticClass:\"advanced-search\"},[_vm._v(_vm._s(_vm.$t('searchCriteria.sCAdvancedSearchTitle')))]),(_vm.advancedSearchVisible)?_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-down\",\"aria-hidden\":\"true\"}}):_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-up\",\"aria-hidden\":\"true\"}})],1):_vm._e()]),((_vm.includeAdvancedSearch || _vm.includeAdminSearch) && _vm.advancedSearchVisible)?_c('div',{staticClass:\"advanced-search\"},[_c('usersearchcriteria',{attrs:{\"v-if\":_vm.advancedSearchVisible},on:{\"change\":_vm.onChangedSearchCriteria,\"clear\":_vm.onClearSearchCriteria}})],1):_vm._e()]),(_vm.primary === 'user')?_c('div',{staticClass:\"row\"},[(_vm.results.results && !_vm.loading)?_c('div',{staticClass:\"col-12\"},[_c('pager-heading',{attrs:{\"pagesizervisible\":\"\",\"total\":_vm.total,\"skip\":_vm.skip,\"take\":_vm.take},on:{\"pagesizechanged\":_vm.onPageSizeChanged}}),(_vm.messageEnabled)?_c('div',{staticClass:\"select-all\"},[_c('div',{staticClass:\"checkbox-all\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('userAdmin.selectAll')},on:{\"input\":_vm.onSelectAll},model:{value:(_vm.selectedAll),callback:function ($$v) {_vm.selectedAll=$$v},expression:\"selectedAll\"}})],1),_c('div',{staticClass:\"clear-all\"},[_c('label',{staticClass:\"selected-count\"},[_vm._v(_vm._s(_vm.selectedCount))]),(_vm.hasSelectedVolunteers)?_c('sprbutton',{staticClass:\"spr-redborder button-width selected-button\",attrs:{\"type\":\"primary\",\"size\":5,\"title\":_vm.$t('userAdmin.sendVolunteerMessage'),\"click-event\":\"navigateToSendMessage\"},on:{\"navigateToSendMessage\":function($event){return _vm.navigateToSendMessage()}}}):_vm._e(),_c('sprbutton',{staticClass:\"spr-redborder button-width selected-button\",attrs:{\"type\":\"primary\",\"size\":5,\"title\":_vm.$t('userAdmin.clear'),\"click-event\":\"clearSelected\"},on:{\"clearSelected\":function($event){return _vm.clearSelected()}}})],1)]):_vm._e(),_vm._l((_vm.results.results),function(r,i){return _c('resultCheck',{key:'resultset_' + _vm._uid + '_' + i + '_' + r.profileId,attrs:{\"volunteer\":r,\"show-checkbox\":_vm.messageEnabled},on:{\"selectedContact\":_vm.onSelectedClick}})}),(_vm.results.total === 0)?_c('div',{staticClass:\"text-center my-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.emptySet'))+\" \")]):_vm._e()],2):_c('div',{staticClass:\"spinner my-4 col-12\"},[_c('loading')],1)]):_vm._e(),(_vm.primary === 'roles')?_c('div',{staticClass:\"row\"},[(_vm.results.results && !_vm.loading)?_c('div',{staticClass:\"col-12\"},[_vm._l((_vm.results.results),function(r,i){return _c('rresult',{key:'resultset_' + _vm._uid + '_' + i + '_' + r.profileId,attrs:{\"profile\":r}})}),(_vm.results.total === 0)?_c('div',{staticClass:\"text-center my-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.emptySet'))+\" \")]):_vm._e()],2):_c('div',{staticClass:\"spinner my-4 col-12\"},[_c('loading')],1)]):_vm._e(),(_vm.primary === 'training')?_c('div',[_c('div',{staticClass:\"filter-links\"},_vm._l((_vm.filters),function(f,i){return _c('router-link',{key:'filter_' + _vm._uid + '_' + i,staticClass:\"d-inline-block m-2\",attrs:{\"to\":_vm.trainLink(f.value)}},[_vm._v(\" \"+_vm._s(f.text)+\" \")])}),1),(!_vm.loading)?_c('div',[_vm._l((_vm.results.results),function(r,i){return _c('fresult',{key:'resultsetf_' + _vm._uid + '_' + i + '_' + r.profileId,attrs:{\"volunteer\":r,\"mode\":_vm.id}})}),(_vm.results.total === 0)?_c('div',{staticClass:\"text-center my-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.emptySet'))+\" \")]):_vm._e()],2):_c('div',{staticClass:\"spinner my-4 col-12\"},[_c('loading')],1)]):_vm._e(),(_vm.primary === 'clients')?_c('div',[(_vm.results && _vm.results.items && !_vm.loading)?_c('div',_vm._l((_vm.results.items),function(r,i){return _c('cresult',{key:'resultsetc_' + _vm._uid + '_' + i + '_' + r.profileId,attrs:{\"customer\":r}})}),1):_c('div',{staticClass:\"spinner my-4 col-12\"},[_c('loading')],1)]):_vm._e(),(_vm.primary === 'volunteers')?_c('div',[(_vm.results && _vm.results.items && !_vm.loading)?_c('div',_vm._l((_vm.results.items),function(r,i){return _c('vresult',{key:'resultsetv_' + _vm._uid + '_' + i + '_' + r.profileId,attrs:{\"volunteer\":r,\"is-net-profile\":_vm.isNetProfile,\"group-id\":_vm.id,\"typed-profile-id\":_vm.getTypedProfileId(r)}})}),1):_c('div',{staticClass:\"spinner my-4 col-12\"},[_c('loading')],1)]):_vm._e(),(_vm.primary === 'brokers')?_c('div',[(_vm.results && _vm.results.results && !_vm.loading)?_c('div',_vm._l((_vm.results.results),function(r,i){return _c('bresult',{key:'resultsetv_' + _vm._uid + '_' + i + '_' + r.profileId,attrs:{\"volunteer\":r}})}),1):_c('div',{staticClass:\"spinner my-4 col-12\"},[_c('loading')],1)]):_vm._e(),(!_vm.loading)?_c('pager',{attrs:{\"take\":_vm.take,\"skip\":_vm.skip,\"total\":_vm.total,\"max-display\":_vm.maxDisplay,\"of-text\":\"/\",\"statisticsvisible\":!_vm.pagerheadingvisible},on:{\"pagerchanged\":_vm.pagerClick,\"pagerprevious\":_vm.pagerPrevious,\"pagernext\":_vm.pagerNext}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row comp-search-result my-2\"},[_c('div',{staticClass:\"col-12 grid-row\",on:{\"click\":_vm.clicked}},[(_vm.showCheckbox)?_c('div',{staticClass:\"grid-selected\"},[_c('checkboxinput',{on:{\"input\":_vm.onSelected},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}})],1):_vm._e(),_c('div',{staticClass:\"grid-img\"},[_c('sprportrait',{staticClass:\"portrait-size\",style:(_vm.portraitStyle)})],1),_c('div',{staticClass:\"grid-name\"},[(_vm.open)?_c('font-awesome-icon',{staticClass:\"brand-red smallView\",attrs:{\"icon\":\"chevron-down\",\"aria-hidden\":\"true\"}}):_c('font-awesome-icon',{staticClass:\"brand-red smallView\",attrs:{\"icon\":\"chevron-up\",\"aria-hidden\":\"true\"}}),_vm._v(\" \"+_vm._s(_vm.volunteer.lastName)+_vm._s(_vm.volunteer.firstName ? ', ' + _vm.volunteer.firstName : '')+\" \")],1),_c('div',{staticClass:\"grid-contacted\"},[(_vm.showContacted && _vm.volunteer.contactedDate)?_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'check-circle']}}),_c('span',{staticClass:\"contactedtext\"},[_vm._v(_vm._s(_vm.$t('profile.contacted')))])],1):_vm._e()]),_c('div',{staticClass:\"grid-createddate\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"calendar\"}}),_vm._v(\" \"+_vm._s(_vm.createDateFormat(_vm.volunteer.created))+\" \")],1),_c('div',{staticClass:\"grid-zip\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"map-marker-alt\"}}),_vm._v(\" \"+_vm._s(_vm.volunteer.workingZipCode)+\" \"),(_vm.open)?_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-down\",\"aria-hidden\":\"true\"}}):_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-up\",\"aria-hidden\":\"true\"}})],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.open),expression:\"open\"}],staticClass:\"col-12 info\"},[(_vm.profileLoadState === 1)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('loading')],1)]):_vm._e(),(_vm.profile && _vm.profileLoadState === 2)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6 col-12\"},[_c('dl',[_c('dd',[_vm._v(_vm._s(_vm.profileState))]),_c('dt',[_vm._v(_vm._s(_vm.$t('wizard.preferredContactMethod')))]),_c('dd',[_vm._v(_vm._s(_vm.profilePreferredContactMethods))]),_c('dt',[_vm._v(_vm._s(_vm.$t('wizard.alreadyInvolved')))]),_c('dd',[_vm._v(_vm._s(_vm.profileInvolvedEventCategories))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.email')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.email))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.phoneNumber')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.phoneNumber))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.address')))]),_c('dd',[_vm._v(\" \"+_vm._s(_vm.profile.streetAddress)+\", \"+_vm._s(_vm.profile.zipCode)+\" \"+_vm._s(_vm.profile.city)+\" \")]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.dateOfBirth')))]),_c('dd',[_vm._v(_vm._s(_vm.formatDate(_vm.profile.age)))])])]),_c('div',{staticClass:\"col-sm-6 col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('adminUserEditor.workingZipCode')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.workingZipCode))]),_c('dt',[_vm._v(_vm._s(_vm.$t('adminUserEditor.userCreated')))]),_c('dd',[_vm._v(_vm._s(_vm.createDateFormat(_vm.volunteer.created)))]),_c('dt',[_vm._v(_vm._s(_vm.$t('adminUserEditor.volunteerOnline')))]),_c('dd',[_vm._v(_vm._s(_vm.formatBoolean(_vm.profile.volunteerOnline)))]),_c('dt',[_vm._v(_vm._s(_vm.$t('customerSearch.myTimes')))]),_c('dd',[_vm._v(_vm._s(_vm.availabilityTimes))]),_c('dt',[_vm._v(_vm._s(_vm.$t('transportation.title')))]),_c('dd',[_vm._v(_vm._s(_vm.transportation))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.travelTime')))]),_c('dd',[_vm._v(_vm._s(_vm.profile.travelTime)+\" min\")])])])]):_vm._e(),(_vm.profile && _vm.profileLoadState === 2)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('profile.nativeLanguage')))]),_c('dd',[_vm._v(_vm._s(_vm.normalizeTranslation(_vm.profile.nativeLanguage)))]),_c('dt',[_vm._v(_vm._s(_vm.$t('nonIdentProfileForm.languageSpoken')))]),_c('dd',[_vm._v(_vm._s(_vm.spokenLanguages))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.interestEditorHeader')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteerInterests))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.skillEditorHeader')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteerSkills))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.motto')))]),_c('dd',[_vm._v(_vm._s(_vm.motto))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.story')))]),_c('dd',[_vm._v(_vm._s(_vm.story))]),_c('dt',[_vm._v(_vm._s(_vm.$t('groups.actionGroupsTitle')))]),_c('dd',[_vm._v(_vm._s(_vm.actionGroups))]),_c('dt',[_vm._v(_vm._s(_vm.$t('groups.standardGroupsTitle')))]),_c('dd',[_vm._v(_vm._s(_vm.standardGroups))])])]),_c('div',{staticClass:\"col-12 col-sm-6\"},[(_vm.roleLoadState < 2)?_c('div',{staticClass:\"text-center\"},[_c('loading')],1):_vm._e(),(_vm.roleLoadState >= 2)?_c('div',[_c('h6',[_vm._v(\"Punaisen Ristin jäsenyystiedot\")]),(_vm.member)?_c('dl',[_c('MembershipData',{attrs:{\"member\":_vm.member}}),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.roles')))]),_c('dd',[_vm._v(_vm._s(_vm.userRoles))])],1):_vm._e(),_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('profile.rcCourses')))]),(_vm.trainText)?_c('dd',[_vm._v(\" \"+_vm._s(_vm.trainText)+\" \")]):_c('dd',[_vm._v(\" - \")])])]):_vm._e()]),_c('div',{staticClass:\"col-12 text-center\"},[_c('sprbutton',{staticClass:\"d-inline-block my-2\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('userAdmin.editUser'),\"click-event\":\"edit\"},on:{\"edit\":_vm.editClick}}),(_vm.showContacted && !_vm.profile.contactedDate)?_c('sprbutton',{staticClass:\"d-inline-block my-2\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('userAdmin.markContacted'),\"click-event\":\"markContacted\"},on:{\"markContacted\":_vm.markContactedClick}}):_vm._e(),(_vm.showContacted && _vm.profile.contactedDate)?_c('sprbutton',{staticClass:\"d-inline-block my-2\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('userAdmin.markUnContacted'),\"click-event\":\"markUnContacted\"},on:{\"markUnContacted\":_vm.markUnContactedClick}}):_vm._e()],1)]):_vm._e(),(_vm.profileLoadState === 3)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('div',{staticClass:\"warning\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.profileLoadFailed'))+\" \")])])]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row comp-search-result my-2\">\r\n    <div class=\"col-12 grid-row\" @click=\"clicked\">\r\n      <div v-if=\"showCheckbox\" class=\"grid-selected\">\r\n        <checkboxinput\r\n          v-model=\"selected\"\r\n          @input=\"onSelected\"\r\n        />\r\n      </div>\r\n      <div class=\"grid-img\">\r\n        <sprportrait :style=\"portraitStyle\"\r\n                     class=\"portrait-size\"\r\n        />\r\n      </div>\r\n      <div class=\"grid-name\">\r\n        <font-awesome-icon v-if=\"open\" icon=\"chevron-down\" class=\"brand-red smallView\" aria-hidden=\"true\" />\r\n        <font-awesome-icon v-else icon=\"chevron-up\" class=\"brand-red smallView\" aria-hidden=\"true\" />\r\n        {{ volunteer.lastName }}{{ volunteer.firstName ? ', ' + volunteer.firstName : '' }}\r\n      </div>\r\n      <div class=\"grid-contacted\">\r\n        <span v-if=\"showContacted && volunteer.contactedDate\">\r\n          <font-awesome-icon :icon=\"['far', 'check-circle']\" />\r\n          <span class=\"contactedtext\">{{ $t('profile.contacted') }}</span>\r\n        </span>\r\n      </div>\r\n      <div class=\"grid-createddate\">\r\n        <font-awesome-icon icon=\"calendar\" />\r\n        {{ createDateFormat(volunteer.created) }}\r\n      </div>\r\n      <div class=\"grid-zip\">\r\n        <font-awesome-icon icon=\"map-marker-alt\" />\r\n        {{ volunteer.workingZipCode }}\r\n        <font-awesome-icon v-if=\"open\" icon=\"chevron-down\" class=\"brand-red\" aria-hidden=\"true\" />\r\n        <font-awesome-icon v-else icon=\"chevron-up\" class=\"brand-red\" aria-hidden=\"true\" />\r\n      </div>\r\n    </div>\r\n    <div v-show=\"open\" class=\"col-12 info\">\r\n      <div v-if=\"profileLoadState === 1\" class=\"row\">\r\n        <div class=\"col-12 text-center\">\r\n          <loading />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"profile && profileLoadState === 2\" class=\"row\">\r\n        <div class=\"col-sm-6 col-12\">\r\n          <dl>\r\n            <dd>{{ profileState }}</dd>\r\n            <dt>{{ $t('wizard.preferredContactMethod') }}</dt>\r\n            <dd>{{ profilePreferredContactMethods }}</dd>\r\n            <!-- Profile.InvolvedEventCategories -->\r\n            <dt>{{ $t('wizard.alreadyInvolved') }}</dt>\r\n            <dd>{{ profileInvolvedEventCategories }}</dd>\r\n            <dt>{{ $t('profile.email') }}</dt>\r\n            <dd>{{ profile.email }}</dd>\r\n            <dt>{{ $t('profile.phoneNumber') }}</dt>\r\n            <dd>{{ profile.phoneNumber }}</dd>\r\n            <dt>{{ $t('profile.address') }}</dt>\r\n            <dd>\r\n              {{ profile.streetAddress }},\r\n              {{ profile.zipCode }}\r\n              {{ profile.city }}\r\n            </dd>\r\n            <dt>{{ $t('profile.dateOfBirth') }}</dt>\r\n            <dd>{{ formatDate(profile.age) }}</dd>\r\n          </dl>\r\n        </div>\r\n        <div class=\"col-sm-6 col-12\">\r\n          <dl>\r\n            <dt>{{ $t('adminUserEditor.workingZipCode') }}</dt>\r\n            <dd>{{ profile.workingZipCode }}</dd>\r\n            <dt>{{ $t('adminUserEditor.userCreated') }}</dt>\r\n            <dd>{{ createDateFormat(volunteer.created) }}</dd>\r\n            <dt>{{ $t('adminUserEditor.volunteerOnline') }}</dt>\r\n            <dd>{{ formatBoolean(profile.volunteerOnline) }}</dd>\r\n            <dt>{{ $t('customerSearch.myTimes') }}</dt>\r\n            <dd>{{ availabilityTimes }}</dd>\r\n            <dt>{{ $t('transportation.title') }}</dt>\r\n            <dd>{{ transportation }}</dd>\r\n            <dt>{{ $t('profile.travelTime') }}</dt>\r\n            <dd>{{ profile.travelTime }} min</dd>\r\n          </dl>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"profile && profileLoadState === 2\" class=\"row\">\r\n        <div class=\"col-12 col-sm-6\">\r\n          <dl>\r\n            <dt>{{ $t('profile.nativeLanguage') }}</dt>\r\n            <dd>{{ normalizeTranslation(profile.nativeLanguage) }}</dd>\r\n            <dt>{{ $t('nonIdentProfileForm.languageSpoken') }}</dt>\r\n            <dd>{{ spokenLanguages }}</dd>\r\n            <dt>{{ $t('profile.interestEditorHeader') }}</dt>\r\n            <dd>{{ volunteerInterests }}</dd>\r\n            <dt>{{ $t('profile.skillEditorHeader') }}</dt>\r\n            <dd>{{ volunteerSkills }}</dd>\r\n            <dt>{{ $t('profile.motto') }}</dt>\r\n            <dd>{{ motto }}</dd>\r\n            <dt>{{ $t('profile.story') }}</dt>\r\n            <dd>{{ story }}</dd>\r\n            <dt>{{ $t('groups.actionGroupsTitle') }}</dt>\r\n            <dd>{{ actionGroups }}</dd>\r\n            <dt>{{ $t('groups.standardGroupsTitle') }}</dt>\r\n            <dd>{{ standardGroups }}</dd>\r\n          </dl>\r\n        </div>\r\n        <div class=\"col-12 col-sm-6\">\r\n          <div v-if=\"roleLoadState < 2\" class=\"text-center\">\r\n            <loading />\r\n          </div>\r\n          <div v-if=\"roleLoadState >= 2\">\r\n            <h6>Punaisen Ristin jäsenyystiedot</h6>\r\n            <dl v-if=\"member\">\r\n              <MembershipData :member=\"member\"></MembershipData>\r\n              <dt>{{ $t('profile.roles') }}</dt>\r\n              <dd>{{ userRoles }}</dd>\r\n            </dl>\r\n            <dl>\r\n              <dt>{{ $t('profile.rcCourses') }}</dt>\r\n              <dd v-if=\"trainText\">\r\n                {{ trainText }}\r\n              </dd>\r\n              <dd v-else>\r\n                -\r\n              </dd>\r\n            </dl>\r\n          </div>\r\n        </div>\r\n        <div class=\"col-12 text-center\">\r\n          <sprbutton type=\"primary\" :size=\"1\" :title=\"$t('userAdmin.editUser')\"\r\n                     class=\"d-inline-block my-2\" click-event=\"edit\" @edit=\"editClick\"\r\n          />\r\n          <sprbutton v-if=\"showContacted && !profile.contactedDate\" type=\"primary\" :size=\"1\" :title=\"$t('userAdmin.markContacted')\"\r\n                     class=\"d-inline-block my-2\" click-event=\"markContacted\" @markContacted=\"markContactedClick\"\r\n          />\r\n          <sprbutton v-if=\"showContacted && profile.contactedDate\" type=\"primary\" :size=\"1\" :title=\"$t('userAdmin.markUnContacted')\"\r\n                     class=\"d-inline-block my-2\" click-event=\"markUnContacted\" @markUnContacted=\"markUnContactedClick\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"profileLoadState === 3\" class=\"row\">\r\n        <div class=\"col-12 text-center\">\r\n          <div class=\"warning\">\r\n            {{ $t('userAdmin.profileLoadFailed') }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import sprportrait from '../SPRPortrait.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import cache from '../../mixins/cache.js'\r\n  import inpututils from '../../mixins/inpututils.js'\r\n  import moment from 'moment'\r\n  import { CrmDataDto, SimpleUserProfileDto, UserProfileDto } from '@/types/index'\r\n  import { TranslateResult } from 'vue-i18n'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import MembershipData from '../MembershipData.vue'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    selected: boolean,\r\n    open: boolean,\r\n    roleLoadState: number,\r\n    profileLoadState: number,\r\n    profile: UserProfileDto | undefined,\r\n    roles: Array<string> | undefined,\r\n    member: CrmDataDto | undefined,\r\n    train: Array<string> | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'UserSimpleSearchResultCheckBox',\r\n    components: { sprbutton, sprportrait, loading, checkboxinput, MembershipData },\r\n    mixins: [cache, enumhelper, inpututils],\r\n    props: {\r\n      volunteer: {\r\n        type: Object as () => SimpleUserProfileDto,\r\n        default: null\r\n      },\r\n      showContacted: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      showCheckbox: {\r\n        type: Boolean,\r\n        default: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        selected: false,\r\n        open: false,\r\n        roleLoadState: 0,\r\n        profileLoadState: 0,\r\n        roles: [] as Array<string>,\r\n        profile: undefined,\r\n        member: undefined,\r\n        train: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      trainText (): string | null {\r\n        // @ts-ignore\r\n        return this.parseArray(this.train) || null\r\n      },\r\n      userRoles (): string {\r\n        if (this.roles && this.roles.length) {\r\n          const self = this\r\n          const mapped = _.map(this.roles, function (x) {\r\n            // @ts-ignore cannot find mixins\r\n            return self.$t('roles.' + self.lcFirst(x))\r\n          })\r\n          return mapped.join(', ')\r\n        }\r\n        return '-'\r\n      },\r\n      portraitStyle (): string {\r\n        this.isOnStoreSelected()\r\n        if (this.profileLoadState === 0) {\r\n          this.loadProfileDetailed()\r\n        }\r\n        const portrait = this.volunteer && this.volunteer.portrait ? this.volunteer.portrait : require('../../assets/img/anon-portrait.png')\r\n        return 'background: url(' + portrait + '); background-size: cover; background-position: center center;'\r\n      },\r\n      volunteerInterests (): string {\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(this.volunteer.areasOfInterest, this.$store.state.profileAreasOfInterest, 'interest') || '-'\r\n      },\r\n      volunteerSkills (): string {\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(this.volunteer.personalSkills, this.$store.state.profilePersonalSkills, 'skills') || '-'\r\n      },\r\n      profileInvolvedEventCategories (): TranslateResult | string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getProfileInvolvedEventCategoriesMaskTranslation(this.profile?.involvedEventCategories)\r\n      },\r\n      profilePreferredContactMethods (): TranslateResult | string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getProfilePreferredContactMethodsMaskTranslation(this.profile?.preferredContactMethods)\r\n      },\r\n      profileState (): TranslateResult | string {\r\n        // this.volunteer.profileState\r\n        // profile.activeNoContact\r\n        // profile.activeNoNew\r\n        // profile.activeOpen\r\n        // profile.inactive\r\n        switch (this.profile?.profileState) {\r\n        case 1:\r\n          return this.$t('profile.activeOpen')\r\n        case 2:\r\n          return this.$t('profile.activeNoContact')\r\n        case 3:\r\n          return this.$t('profile.activeNoNew')\r\n        case 4:\r\n          return this.$t('profile.inactive')\r\n        }\r\n\r\n        return ''\r\n      },\r\n      motto (): string {\r\n        return this.profile?.motto || '-'\r\n      },\r\n      story (): string {\r\n        return this.profile?.story || '-'\r\n      },\r\n      spokenLanguages (): string {\r\n        if (this.profile?.spokenLanguages && this.profile.spokenLanguages.length) {\r\n          const self = this\r\n          const langs = []\r\n          this.profile.spokenLanguages.forEach(function (l) {\r\n            // @ts-ignore cannot find mixins\r\n            langs.push(self.normalizeTranslation(l))\r\n          })\r\n          return langs.join(', ')\r\n        }\r\n        return '-'\r\n      },\r\n      transportation (): string {\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(this.profile.transportation, this.$store.state.transportation, 'transportation') || '-'\r\n      },\r\n      availabilityTimes (): string {\r\n        const bmArr = bitmaskhelper.bitmaskToArray(bitmaskhelper.translateEnumsToBitmask(this.profile?.availabilityTimes!))\r\n\r\n        // @ts-ignore cannot find mixins\r\n        //return this.parseArray(this.profile.availabilityTimes, this.$store.state.availabilityTimes, 'availabilityTimes') || '-'\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(bmArr, this.$store.state.availabilityTimes, 'availabilityTimes') || '-'\r\n      },\r\n      actionGroups (): string {\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(this.profile.actionGroups) || '-'\r\n      },\r\n      standardGroups (): string {\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(this.profile.standardGroups) || '-'\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.$bus.$on('clicked-search-result', this.handleClicked)\r\n    },\r\n    beforeDestroy (): void {\r\n      this.$bus.$off('clicked-search-result')\r\n    },\r\n    methods: {\r\n      isOnStoreSelected () {\r\n        this.selected = this.$store.state.selectedContact.includes(this.profile?.email)\r\n      },\r\n      onSelected () {\r\n        this.$emit('selectedContact', this.profile?.email.toString())\r\n      },\r\n      formatBoolean (val): string {\r\n        if (this.profile?.volunteerOnline != null) {\r\n          // @ts-ignore cannot find mixins\r\n          return this.tBool(val)\r\n        }\r\n        return '-'\r\n      },\r\n      createDateFormat (val): string {\r\n        return moment(val).format('DD.MM.YYYY')\r\n      },\r\n      fetchRoles (): void {\r\n        this.roleLoadState = 1\r\n        const self = this\r\n        var url = (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.roles[0]).replace('{0}', this.volunteer.profileId)\r\n        this.$http.get(url).then(s => {\r\n          self.roleLoadState = 2\r\n          self.roles = s.data\r\n        }, f => {\r\n          self.roleLoadState = 3\r\n        })\r\n\r\n        const url2 = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.membership[0].replace('{0}', this.volunteer.profileId)\r\n        // @ts-ignore cannot find mixins\r\n        this.fetchItem(url2, this.expSeconds(3600), function (x) {\r\n          self.member = x\r\n        })\r\n\r\n        const url3 = this.$store.state.apiBases.eventservice + this.$store.state.apiEndpoints.trainings[0].replace('{0}', this.volunteer.profileId)\r\n        // @ts-ignore cannot find mixins\r\n        this.fetchItem(url3, this.expSeconds(300), function (x) {\r\n          self.train = x\r\n        })\r\n      },\r\n      loadProfileDetailed (): void {\r\n        this.profileLoadState = 1\r\n        const self = this\r\n        var url = (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.userbyprofileid[0]).replace('{0}', this.volunteer.profileId)\r\n        this.$http.get(url).then(s => {\r\n          self.profileLoadState = 2\r\n          self.profile = s.data\r\n        }, f => {\r\n          self.profileLoadState = 3\r\n        })\r\n      },\r\n      clicked: function () {\r\n        // fired on just this item clicked\r\n        const prevOpen = this.open\r\n        // @ts-ignore yeah shouldnt use this._uid, ts is right.\r\n        this.$bus.$emit('clicked-search-result', this._uid)\r\n        this.open = !prevOpen // open this accordion if it was previously closed, and vice versa\r\n        if (this.roleLoadState === 0) {\r\n          this.fetchRoles()\r\n        }\r\n        if (this.profileLoadState === 0) {\r\n          this.loadProfileDetailed()\r\n        }\r\n      },\r\n      handleClicked (uid): void {\r\n        // fired on all clicks, for all accordions on the page. Close all the accordions\r\n        this.open = false\r\n      },\r\n      editClick (event): void {\r\n        this.$router.push('/admin/user/' + this.volunteer.profileId)\r\n      },\r\n      markContactedClick (): void {\r\n        this.$bus.$emit('volunteer-mark-contacted', this.volunteer.profileId)\r\n      },\r\n      markUnContactedClick (): void {\r\n        this.$bus.$emit('volunteer-mark-uncontacted', this.volunteer.profileId)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '~@/assets/scss/_variables.scss';\r\n  .comp-search-result {\r\n    background: $brand-white;\r\n    cursor: pointer;\r\n    border: 2px solid $brand-white;\r\n\r\n    &:hover {\r\n      border: 2px solid $brand-red;\r\n    }\r\n\r\n    .smallView {\r\n      display:none;\r\n    }\r\n\r\n    .portrait-size {\r\n      height: 40px;\r\n      width: 40px;\r\n      margin: 10px;\r\n    }\r\n\r\n    .grid-row {\r\n      display: grid;\r\n      display: -ms-grid;\r\n      grid-template-rows: 60px;\r\n      -ms-grid-rows: 60px;\r\n      grid-template-columns: 30px 60px 3fr 1fr 110px 90px;\r\n      -ms-grid-columns: 30px 60px 3fr 1fr 120px 90px;\r\n\r\n      svg {\r\n        color:$brand-red;\r\n      }\r\n\r\n    }\r\n    .grid-img {\r\n      grid-column: 2;\r\n      -ms-grid-column: 2;\r\n      line-height: 60px;\r\n    }\r\n\r\n    .grid-selected {\r\n      grid-column: 1;\r\n      -ms-grid-column: 1;\r\n      line-height: 30px;\r\n      margin-top: 17px;\r\n    }\r\n\r\n    .grid-name {\r\n      grid-column: 3;\r\n      -ms-grid-column: 3;\r\n      line-height: 60px;\r\n\r\n      font-size: 13px;\r\n      letter-spacing: 0.3px;\r\n      font-weight: 700;\r\n      color: $brand-red;\r\n      text-transform: uppercase;\r\n      font-family: \"Signa-Light\", Sans-Serif;\r\n\r\n      overflow: hidden;\r\n      white-space: nowrap;\r\n      text-overflow: ellipsis;\r\n      max-width: 100%;\r\n    }\r\n\r\n    .grid-contacted {\r\n      grid-column: 4;\r\n      -ms-grid-column: 4;\r\n      line-height: 60px;\r\n      text-align: right;\r\n      color:$brand-success;\r\n      padding-right:5px;\r\n\r\n      svg {\r\n        color:$brand-success;\r\n        padding-right:5px;\r\n      }\r\n\r\n      @media (max-width: $media-md-max) {\r\n        .contactedtext {\r\n          display:none;\r\n        }\r\n      }\r\n\r\n    }\r\n\r\n    .grid-createddate {\r\n      grid-column: 5;\r\n      -ms-grid-column: 5;\r\n      line-height: 60px;\r\n      text-align: left;\r\n    }\r\n\r\n    .grid-zip {\r\n      grid-column: 6;\r\n      -ms-grid-column: 6;\r\n      line-height: 60px;\r\n      text-align: right;\r\n    }\r\n\r\n    @media (max-width: 520px) {\r\n        .grid-row {\r\n          grid-template-columns: 30px 60px 3fr;\r\n        }\r\n        .grid-createddate {\r\n          display:none;\r\n        }\r\n        .grid-zip {\r\n          display:none;\r\n        }\r\n        .grid-contacted {\r\n          display:none;\r\n        }\r\n        .smallView {\r\n          display:inline;\r\n        }\r\n     }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserSimpleSearchResultCheckBox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserSimpleSearchResultCheckBox.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserSimpleSearchResultCheckBox.vue?vue&type=template&id=5d1ed926&scoped=true\"\nimport script from \"./UserSimpleSearchResultCheckBox.vue?vue&type=script&lang=ts\"\nexport * from \"./UserSimpleSearchResultCheckBox.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserSimpleSearchResultCheckBox.vue?vue&type=style&index=0&id=5d1ed926&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"5d1ed926\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"comp-user-search\">\r\n    <h3 v-if=\"primary === 'training'\">\r\n      {{ $t('friendTraining.trainingHeader') }}\r\n    </h3>\r\n    <div v-if=\"primary === 'clients' || primary === 'volunteers'\">\r\n      <checkboxlist v-model=\"activeClientFilters\"\r\n                    :list=\"clientFilters\"\r\n                    :rows=\"2\"\r\n      />\r\n    </div>\r\n    <p v-if=\"primary === 'brokers' && purpose === 5\">\r\n      {{ $t('userAdmin.existingBrokerRightsTitle') }}\r\n    </p>\r\n    <div class=\"search-section\">\r\n      <div class=\"search\">\r\n        <div class=\"searchbox\">\r\n          <searchbox v-model=\"search\" />\r\n        </div>\r\n        <div v-if=\"includeAdvancedSearch || includeAdminSearch\" class=\"advanced-search-select\" @click=\"toggleAdvancedSearch\">\r\n          <span class=\"advanced-search\">{{ $t('searchCriteria.sCAdvancedSearchTitle') }}</span>\r\n          <font-awesome-icon v-if=\"advancedSearchVisible\" icon=\"chevron-down\" class=\"brand-red\" aria-hidden=\"true\" />\r\n          <font-awesome-icon v-else icon=\"chevron-up\" class=\"brand-red\" aria-hidden=\"true\" />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"(includeAdvancedSearch || includeAdminSearch) && advancedSearchVisible\" class=\"advanced-search\">\r\n        <usersearchcriteria :v-if=\"advancedSearchVisible\" @change=\"onChangedSearchCriteria\" @clear=\"onClearSearchCriteria\" />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"primary === 'user'\" class=\"row\">\r\n      <div v-if=\"results.results && !loading\" class=\"col-12\">\r\n        <pager-heading pagesizervisible\r\n                       :total=\"total\" :skip=\"skip\" :take=\"take\"\r\n                       @pagesizechanged=\"onPageSizeChanged\"\r\n        ></pager-heading>\r\n        <div v-if=\"messageEnabled\" class=\"select-all\">\r\n          <div class=\"checkbox-all\">\r\n            <checkboxinput\r\n              v-model=\"selectedAll\"\r\n              :title=\"$t('userAdmin.selectAll')\"\r\n              @input=\"onSelectAll\"\r\n            />\r\n          </div>\r\n          <div class=\"clear-all\">\r\n            <label class=\"selected-count\">{{ selectedCount }}</label>\r\n            <sprbutton v-if=\"hasSelectedVolunteers\" type=\"primary\"\r\n                       :size=\"5\"\r\n                       :title=\"$t('userAdmin.sendVolunteerMessage')\"\r\n                       class=\"spr-redborder button-width selected-button\"\r\n                       click-event=\"navigateToSendMessage\"\r\n                       @navigateToSendMessage=\"navigateToSendMessage()\"\r\n            />\r\n            <sprbutton type=\"primary\"\r\n                       :size=\"5\"\r\n                       :title=\"$t('userAdmin.clear')\"\r\n                       class=\"spr-redborder button-width selected-button\"\r\n                       click-event=\"clearSelected\"\r\n                       @clearSelected=\"clearSelected()\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <resultCheck v-for=\"(r, i) in results.results\"\r\n                     :key=\"'resultset_' + _uid + '_' + i + '_' + r.profileId\"\r\n                     :volunteer=\"r\"\r\n                     :show-checkbox=\"messageEnabled\"\r\n                     @selectedContact=\"onSelectedClick\"\r\n        />\r\n        <div v-if=\"results.total === 0\" class=\"text-center my-4\">\r\n          {{ $t('userAdmin.emptySet') }}\r\n        </div>\r\n      </div>\r\n      <div v-else class=\"spinner my-4 col-12\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"primary === 'roles'\" class=\"row\">\r\n      <div v-if=\"results.results && !loading\" class=\"col-12\">\r\n        <rresult v-for=\"(r, i) in results.results\"\r\n                 :key=\"'resultset_' + _uid + '_' + i + '_' + r.profileId\"\r\n                 :profile=\"r\"\r\n        />\r\n        <div v-if=\"results.total === 0\" class=\"text-center my-4\">\r\n          {{ $t('userAdmin.emptySet') }}\r\n        </div>\r\n      </div>\r\n      <div v-else class=\"spinner my-4 col-12\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"primary === 'training'\">\r\n      <div class=\"filter-links\">\r\n        <router-link v-for=\"(f, i) in filters\"\r\n                     :key=\"'filter_' + _uid + '_' + i\"\r\n                     :to=\"trainLink(f.value)\"\r\n                     class=\"d-inline-block m-2\"\r\n        >\r\n          {{ f.text }}\r\n        </router-link>\r\n      </div>\r\n      <div v-if=\"!loading\">\r\n        <fresult v-for=\"(r, i) in results.results\"\r\n                 :key=\"'resultsetf_' + _uid + '_' + i + '_' + r.profileId\"\r\n                 :volunteer=\"r\"\r\n                 :mode=\"id\"\r\n        />\r\n        <div v-if=\"results.total === 0\" class=\"text-center my-4\">\r\n          {{ $t('userAdmin.emptySet') }}\r\n        </div>\r\n      </div>\r\n      <div v-else class=\"spinner my-4 col-12\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n\r\n    <!--Client search -->\r\n    <div v-if=\"primary === 'clients'\">\r\n      <div v-if=\"results && results.items && !loading\">\r\n        <cresult v-for=\"(r, i) in results.items\"\r\n                 :key=\"'resultsetc_' + _uid + '_' + i + '_' + r.profileId\"\r\n                 :customer=\"r\"\r\n        />\r\n      </div>\r\n      <div v-else class=\"spinner my-4 col-12\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Friend volunteer search -->\r\n    <div v-if=\"primary === 'volunteers'\">\r\n      <div v-if=\"results && results.items && !loading\">\r\n        <vresult v-for=\"(r, i) in results.items\"\r\n                 :key=\"'resultsetv_' + _uid + '_' + i + '_' + r.profileId\"\r\n                 :volunteer=\"r\"\r\n                 :is-net-profile=\"isNetProfile\"\r\n                 :group-id=\"id\"\r\n                 :typed-profile-id=\"getTypedProfileId(r)\"\r\n        />\r\n      </div>\r\n      <div v-else class=\"spinner my-4 col-12\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Friendship broker search -->\r\n    <div v-if=\"primary === 'brokers'\">\r\n      <div v-if=\"results && results.results && !loading\">\r\n        <bresult v-for=\"(r, i) in results.results\"\r\n                 :key=\"'resultsetv_' + _uid + '_' + i + '_' + r.profileId\"\r\n                 :volunteer=\"r\"\r\n        />\r\n      </div>\r\n      <div v-else class=\"spinner my-4 col-12\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n\r\n    <pager v-if=\"!loading\"\r\n           :take=\"take\"\r\n           :skip=\"skip\"\r\n           :total=\"total\"\r\n           :max-display=\"maxDisplay\"\r\n           of-text=\"/\"\r\n           :statisticsvisible=\"!pagerheadingvisible\"\r\n           @pagerchanged=\"pagerClick\"\r\n           @pagerprevious=\"pagerPrevious\"\r\n           @pagernext=\"pagerNext\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import searchbox from '../SPRSearchBox.vue'\r\n  import pagerHeading from '../SPRPagerHeading.vue'\r\n  import pager from '../SPRPager.vue'\r\n  import resultCheck from './UserSimpleSearchResultCheckBox.vue'\r\n  import fresult from './FriendSearchResult.vue'\r\n  import cresult from './CustomerSearchResult.vue'\r\n  import vresult from './FriendVolunteerSearchResult.vue'\r\n  import bresult from './FriendshipBrokerSearchResult.vue'\r\n  import rresult from './UserRolesCurrent.vue'\r\n  import checkboxlist from '../SPRSimpleCheckboxList.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { GetSectionVolunteersCriteria, ProfileState, AvailabilityTimesEnum,\r\n           InvolvedEventCategories, FriendManagementDto, FindFriendManagementGroupVolunteersResult,\r\n           FindFriendManagementGroupCustomersResult, FindNetFriendManagementGroupContentCriteria,\r\n           FindStandardFriendManagementGroupContentCriteria, CustomerTypes,\r\n           PreferredAges, FriendshipTypes, PersonalSkills, AreaOfInterest, TimeWithoutFriends,\r\n          OrderByFriendType } from '@/types'\r\n  import { SprCheckboxValue, FilterItem } from '@/types/custom'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import usersearchcriteria from '../sections/UserSearchCriteria.vue'\r\n  import cache from '../../mixins/cache.js'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import inpututils from '../../mixins/inpututils'\r\n  import sprbutton from '../SPRButton.vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    searchCriteria: GetSectionVolunteersCriteria,\r\n    group: undefined | FriendManagementDto,\r\n    search: string,\r\n    take: number,\r\n    skip: number,\r\n    total: number,\r\n    maxDisplay: number,\r\n    pagerheadingvisible: boolean,\r\n    results: FindFriendManagementGroupVolunteersResult | FindFriendManagementGroupCustomersResult | any, // todo: This should be updated for the new return types (see #3618, #3619)\r\n    resultsAll: FindFriendManagementGroupVolunteersResult | FindFriendManagementGroupCustomersResult | any,\r\n    totalAll: number,\r\n    loading: boolean,\r\n    filters: Array<SprCheckboxValue>,\r\n    activeClientFilters: Array<number>,\r\n    selectedAll: boolean,\r\n    advancedSearchVisible: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'UserSearchCheckBox',\r\n    components: { searchbox, pager, pagerHeading, resultCheck, fresult, cresult, checkboxlist, vresult, bresult, rresult, loading, usersearchcriteria, checkboxinput, sprbutton },\r\n    mixins: [cache, enumhelper, inpututils],\r\n    props: {\r\n      filter: {\r\n        default: 'all',\r\n        type: String\r\n      },\r\n      id: {\r\n        default: '0',\r\n        type: String\r\n      },\r\n      purpose: {\r\n        default: 1,\r\n        type: Number\r\n      },\r\n      primary: {\r\n        default: 'user',\r\n        type: String\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        searchCriteria: {\r\n          involvedEventCategories: InvolvedEventCategories.NotDefined as InvolvedEventCategories,\r\n          profileStates: [] as ProfileState[],\r\n          skills: [] as PersonalSkills[],\r\n          spokenLanguages: [] as string[],\r\n          isAgeBelow30: undefined,\r\n          areasOfInterest: [] as AreaOfInterest[],\r\n          availabilityTimes: [] as AvailabilityTimesEnum[],\r\n          preferredContactMethods: 0,\r\n          contacted: undefined,\r\n          volunteerOnline: undefined,\r\n          activityArea: ''\r\n        } as GetSectionVolunteersCriteria,\r\n        group: undefined,\r\n        search: '',\r\n        take: 5,\r\n        skip: 0,\r\n        total: 0,\r\n        maxDisplay: 5,\r\n        results: {},\r\n        resultsAll: {},\r\n        totalAll: 0,\r\n        loading: false,\r\n        pagerheadingvisible: false,\r\n        advancedSearchVisible: false,\r\n        filters: [{ text: this.$t('friendTraining.noCert').toString(), value: 1 }, { text: this.$t('friendTraining.hasCert').toString(), value: 2 }],\r\n        activeClientFilters: [],\r\n        selectedAll: false\r\n      }\r\n    },\r\n    computed: {\r\n      messageEnabled (): boolean {\r\n        return this.filter === 'section' || this.filter === 'district'\r\n      },\r\n      selectedCount (): string {\r\n        return this.$t('userAdmin.selected') + ': ' + this.$store.state.selectedContact.length.toString()\r\n      },\r\n      includeAdvancedSearch (): boolean {\r\n        if (this.id && this.filter === 'section' && this.primary === 'user') { return true }\r\n        return false\r\n      },\r\n      includeAdminSearch (): boolean {\r\n        if (this.id && this.filter === 'district' && this.primary === 'user') { return true }\r\n        return false\r\n      },\r\n      clientFilters (): Array<SprCheckboxValue> {\r\n        const self = this\r\n        return _.map(this.$store.state.customerStates, function (val, key) {\r\n          return { value: val.id, text: self.$t('customerStates.' + val.text), selected: false } as SprCheckboxValue\r\n        })\r\n      },\r\n      isNetProfile (): boolean {\r\n        return Boolean(this.group?.netFriendship)\r\n      },\r\n      hasSelectedVolunteers (): boolean {\r\n        return this.$store.state.selectedContact.length > 0\r\n      }\r\n    },\r\n    watch: {\r\n      searchCriteria () {\r\n        this.performSearch()\r\n      },\r\n      search: function (val) {\r\n        this.skip = 0\r\n        this.performSearch()\r\n      },\r\n      activeClientFilters: {\r\n        handler: function (val) {\r\n          this.skip = 0\r\n          this.performSearch()\r\n        },\r\n        deep: true\r\n      }\r\n    },\r\n    created () {\r\n      this.pagerheadingvisible = this.primary === 'user'\r\n    },\r\n    mounted (): void {\r\n      if (this.filter === 'friendship') {\r\n        this.getGroup()\r\n          .then((result: HttpResponse) => {\r\n            this.group = result.data\r\n            this.$bus.$on('user-search-research', this.performSearch)\r\n            this.performSearch()\r\n          })\r\n          .catch((err: any) => {\r\n            // @ts-ignore\r\n            console.log(err)\r\n            // @ts-ignore\r\n            this.showAlertError(this.$t('common.fetchFailed'))\r\n          })\r\n      } else {\r\n        this.performSearch()\r\n      }\r\n    },\r\n    beforeDestroy: function () {\r\n      this.$bus.$off('user-search-research')\r\n    },\r\n    methods: {\r\n      onClearSearchCriteria (): void {\r\n        this.search = ''\r\n        this.onChangedSearchCriteria({\r\n          involvedEventCategories: InvolvedEventCategories.NotDefined as InvolvedEventCategories,\r\n          profileStates: [] as ProfileState[],\r\n          skills: [] as PersonalSkills[],\r\n          spokenLanguages: [] as string[],\r\n          isAgeBelow30: undefined,\r\n          areasOfInterest: [] as AreaOfInterest[],\r\n          availabilityTimes: [] as AvailabilityTimesEnum[],\r\n          preferredContactMethods: 0,\r\n          contacted: undefined,\r\n          volunteerOnline: undefined,\r\n          activityArea: ''\r\n\r\n        })\r\n      },\r\n      navigateToSendMessage () {\r\n        this.$router.push(`/admin/${this.filter}/${this.id}/messages`)\r\n      },\r\n      clearSelected () {\r\n        this.loading = true\r\n        this.selectedAll = false\r\n        this.$store.state.selectedContact = []\r\n        this.$store.state.selectedVolunteers = []\r\n        const params = {\r\n           skip: this.skip,\r\n           take: this.take,\r\n           areasOfInterest: [], // areasOfInterest: AreaOfInterest[];\r\n           availabilityTimes: [], // availabilityTimes: AvailabilityTimesEnum[];\r\n           contacted: undefined,\r\n           involvedEventCategories: 0, // involvedEventCategories: InvolvedEventCategories;\r\n           isAgeBelow30: undefined,\r\n           preferredContactMethods: undefined,\r\n           profileStates: [], // profileStates: ProfileState[];\r\n           searchWord: '', //searchWord: string;\r\n           sectionId: Number(this.id), // sectionId: number;\r\n           districtId: Number(this.id),\r\n           skills: [], // skills: PersonalSkills[];\r\n           spokenLanguages: [], // spokenLanguages: string[];\r\n           volunteerOnline: undefined,\r\n           activityArea: ''\r\n         } as GetSectionVolunteersCriteria\r\n\r\n        const url = this.url()\r\n        if (this.filter === 'district' || this.filter === 'section') {\r\n          this.$http.post(url, params).then(s => {\r\n            this.results = s.data\r\n            this.total = this.results.total\r\n            this.loading = false\r\n          })\r\n        } else {\r\n          this.$http.get(url, params).then(s => {\r\n            this.results = s.data\r\n            this.total = this.results.total\r\n            this.loading = false\r\n          })\r\n        }\r\n      },\r\n      onSelectAll () {\r\n        if (this.selectedAll === true) {\r\n          this.loading = true\r\n          const params = {\r\n            skip: 0,\r\n            take: 10000,\r\n            areasOfInterest: this.searchCriteria.areasOfInterest, // areasOfInterest: AreaOfInterest[];\r\n            availabilityTimes: this.searchCriteria.availabilityTimes, // availabilityTimes: AvailabilityTimesEnum[];\r\n            contacted: this.searchCriteria.contacted,\r\n            involvedEventCategories: this.searchCriteria.involvedEventCategories, // involvedEventCategories: InvolvedEventCategories;\r\n            isAgeBelow30: this.searchCriteria.isAgeBelow30,\r\n            preferredContactMethods: this.searchCriteria.preferredContactMethods,\r\n            profileStates: this.searchCriteria.profileStates, // profileStates: ProfileState[];\r\n            searchWord: this.search, //searchWord: string;\r\n            sectionId: Number(this.id), // sectionId: number;\r\n            districtId: Number(this.id),\r\n            skills: this.searchCriteria.skills, // skills: PersonalSkills[];\r\n            spokenLanguages: this.searchCriteria.spokenLanguages, // spokenLanguages: string[];\r\n            volunteerOnline: this.searchCriteria.volunteerOnline,\r\n            activityArea: this.searchCriteria.activityArea\r\n          } as GetSectionVolunteersCriteria\r\n\r\n          const url = this.url()\r\n          if (this.primary === 'user' && this.id && (this.filter === 'section' || this.filter === 'district')) {\r\n            this.$http.post(url, params).then(s => {\r\n              this.resultsAll = s.data\r\n              this.totalAll = this.resultsAll.total\r\n              this.$store.state.selectedVolunteers = this.resultsAll.results\r\n              for (var result of this.resultsAll.results) {\r\n                if (!this.$store.state.selectedContact.includes(result.email)) {\r\n                  this.$store.state.selectedContact.push(result.email)\r\n                }\r\n              }\r\n            })\r\n          } else {\r\n            this.$http.get(url, params).then(s => {\r\n              this.resultsAll = s.data\r\n              this.totalAll = this.resultsAll.total\r\n\r\n              this.$store.state.selectedVolunteers = this.resultsAll.results\r\n              for (var result of this.resultsAll.results) {\r\n                if (!this.$store.state.selectedContact.includes(result.email)) {\r\n                  this.$store.state.selectedContact.push(result.email)\r\n                }\r\n              }\r\n            })\r\n          }\r\n          this.loading = false\r\n        } else {\r\n          this.$store.state.selectedContact = []\r\n          this.$store.state.selectedVolunteers = []\r\n        }\r\n      },\r\n      onChangedSearchCriteria (searchCriteria): void {\r\n        if (JSON.stringify(this.searchCriteria) !== JSON.stringify(searchCriteria)) {\r\n          this.searchCriteria = searchCriteria\r\n          this.skip = 0\r\n        }\r\n      },\r\n      onSelectedClick (val) {\r\n        if (this.$store.state.selectedContact.includes(val)) {\r\n          this.$store.state.selectedContact = this.$store.state.selectedContact.filter(item => item !== val)\r\n          this.$store.state.selectedVolunteers = this.$store.state.selectedVolunteers.filter(item => item.email !== val)\r\n        } else {\r\n          const volunteer = this.results.results.find((t) => {\r\n            return t.email === val\r\n          })\r\n          this.$store.state.selectedVolunteers.push(volunteer)\r\n          this.$store.state.selectedContact.push(val)\r\n        }\r\n      },\r\n      toggleAdvancedSearch (): void {\r\n        this.advancedSearchVisible = !this.advancedSearchVisible\r\n      },\r\n      onPageSizeChanged (pageSize): void {\r\n        this.take = pageSize\r\n        this.skip = 0\r\n        this.performSearch()\r\n      },\r\n      getTypedProfileId (volunteer): string {\r\n        if (this.isNetProfile === true) {\r\n          return volunteer.friendInfo.netProfile.id\r\n        }\r\n        return volunteer.friendInfo.standardProfile.id\r\n      },\r\n      trainLink (newState): string {\r\n        return '/admin/training/' + newState\r\n      },\r\n      pagerClick (val): void {\r\n        this.skip = val.skip\r\n        this.performSearch()\r\n      },\r\n      pagerPrevious (): void {\r\n        this.skip -= this.take\r\n        this.performSearch()\r\n      },\r\n      pagerNext (): void {\r\n        this.skip += this.take\r\n        this.performSearch()\r\n      },\r\n      getGroup (): Promise<HttpResponse> {\r\n        const url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationById[0].replace('{0}', this.id)\r\n        return this.$http.get(url) as Promise<HttpResponse>\r\n      },\r\n      performSearch (): void {\r\n        this.loading = true\r\n        if (this.skip < 0) this.skip = 0\r\n\r\n        if (this.primary === 'training' || this.primary === 'user' || this.primary === 'roles') {\r\n          // check if section is defined, if it is, use advanced search to collect the volunteers\r\n          if (this.id && (this.filter === 'section' || this.filter === 'district') && this.primary === 'user') {\r\n            const params = {\r\n            skip: this.skip,\r\n            take: this.take,\r\n            areasOfInterest: this.searchCriteria.areasOfInterest, // areasOfInterest: AreaOfInterest[];\r\n            availabilityTimes: this.searchCriteria.availabilityTimes, // availabilityTimes: AvailabilityTimesEnum[];\r\n            contacted: this.searchCriteria.contacted,\r\n            involvedEventCategories: this.searchCriteria.involvedEventCategories, // involvedEventCategories: InvolvedEventCategories;\r\n            isAgeBelow30: this.searchCriteria.isAgeBelow30,\r\n            preferredContactMethods: this.searchCriteria.preferredContactMethods,\r\n            profileStates: this.searchCriteria.profileStates, // profileStates: ProfileState[];\r\n            searchWord: this.search, //searchWord: string;\r\n            sectionId: Number(this.id), // sectionId: number;\r\n            districtId: Number(this.id),\r\n            skills: this.searchCriteria.skills, // skills: PersonalSkills[];\r\n            spokenLanguages: this.searchCriteria.spokenLanguages, // spokenLanguages: string[];\r\n            volunteerOnline: this.searchCriteria.volunteerOnline,\r\n            activityArea: this.searchCriteria.activityArea\r\n          } as GetSectionVolunteersCriteria\r\n            const url = this.url()\r\n            this.$http.post(url, params).then(s => {\r\n              this.results = s.data\r\n              this.total = this.results.total\r\n              this.loading = false\r\n            })\r\n          } else {\r\n            const url = this.url()\r\n            this.$http.get(url).then(s => {\r\n              this.results = s.data\r\n              this.total = this.results.total\r\n              this.loading = false\r\n            })\r\n          }\r\n        } else if (this.primary === 'brokers') {\r\n          const url = this.group?.netFriendship\r\n            ? this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationFindNetBrokers[0]\r\n            : this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationFindStandardBrokers[0]\r\n\r\n          const dto = {\r\n            search: this.search,\r\n            friendManagementGroupId: Number(this.id),\r\n            potentialBrokersOnly: false,\r\n            skip: this.skip,\r\n            take: this.take\r\n          }\r\n          this.$http.post(url, dto).then(s => {\r\n            this.results = s.data\r\n            this.total = this.results.total\r\n            this.loading = false\r\n          })\r\n        } else if (this.primary === 'volunteers') {\r\n          const params = {\r\n            skip: this.skip,\r\n            take: this.take,\r\n            searchString: this.search,\r\n            orderByFriendType: OrderByFriendType.OldestFirst,\r\n            ages: PreferredAges.NotDefined,\r\n            timeWithoutFriends: TimeWithoutFriends.NotDefined,\r\n            customerTypes: CustomerTypes.NotDefined,\r\n            friendshipTypes: FriendshipTypes.NotDefined,\r\n            customerStates: this.activeClientFilters,\r\n            groupMembership: false,\r\n            genders: [],\r\n            languages: [],\r\n            natives: [],\r\n            includeFriendPools: false,\r\n            includeFriendships: false,\r\n            groupId: Number(this.id)\r\n          } as FindStandardFriendManagementGroupContentCriteria\r\n\r\n          const url = this.group?.netFriendship\r\n            ? this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteersearchnet[0]\r\n            : this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteersearchstandard[0]\r\n\r\n          this.$http.post(url, params).then(s => {\r\n            this.results = s.data as FindFriendManagementGroupVolunteersResult\r\n            this.total = this.results.total\r\n            this.loading = false\r\n          })\r\n        } else if (this.primary === 'clients') {\r\n          const clientdto = {} as FindNetFriendManagementGroupContentCriteria | FindStandardFriendManagementGroupContentCriteria\r\n          clientdto.skip = this.skip\r\n          clientdto.take = this.take\r\n          clientdto.searchString = this.search\r\n          clientdto.customerStates = this.activeClientFilters\r\n          clientdto.groupId = Number(this.id)\r\n          clientdto.includeFriendPools = false\r\n          clientdto.includeFriendships = false\r\n\r\n          const uri = this.group?.netFriendship\r\n            ? this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customersearchnet[0]\r\n            : this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customersearchstandard[0]\r\n\r\n          this.$http.post(uri, clientdto).then(s => {\r\n            this.results = s.data as FindFriendManagementGroupCustomersResult\r\n            this.total = this.results.total\r\n            this.loading = false\r\n          })\r\n        }\r\n      },\r\n      url: function () {\r\n        if (this.primary === 'training') {\r\n          return (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.findbyfriendship[0]) // returns SearchResult<PublicProfileDto>\r\n            .replace('{state}', this.id)\r\n            .replace('{skip}', this.skip)\r\n            .replace('{take}', this.take)\r\n            .replace('{search}', this.search)\r\n        } else if (this.primary === 'clients') {\r\n          // return (this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.customersimplesearch[0]) // to be updated - update the TemplateComponentData (data) typescript type for results to new one)\r\n        } else if (this.primary === 'volunteers') {\r\n          // return (this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.volunteersimplesearch[0]) // to be updated - update the TemplateComponentData (data) typescript type for results to new one)\r\n        } else if (this.primary === 'user') {\r\n          if (this.id && (this.filter === 'section')) {\r\n            return (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.findsectionvolunteers[0])\r\n          } else if (this.id && this.filter === 'district') {\r\n            return (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.finddistrictvolunteers[0])\r\n          } else {\r\n            return (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.findSimpleIdentOnly[0]) // Returns SearchResult<SimpleUserProfileDto> to be updated - update the TemplateComponentData (data) typescript type for results to new one)\r\n              .replace('{from}', this.filter)\r\n              .replace('{id}', Number(this.id))\r\n              .replace('{skip}', this.skip)\r\n              .replace('{take}', this.take)\r\n              .replace('{search}', this.search)\r\n          }\r\n        }\r\n\r\n        return (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.findIdentOnly[0]) // This does not seem to be used. I cannot replicate this.\r\n          .replace('{from}', this.filter)\r\n          .replace('{id}', this.id)\r\n          .replace('{purpose}', this.purpose)\r\n          .replace('{skip}', this.skip)\r\n          .replace('{take}', this.take)\r\n          .replace('{search}', this.search)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .selected-button {\r\n    margin-top: 5px;\r\n  }\r\n  .selected-count {\r\n    margin-right: 9px;\r\n  }\r\n  .clear-all {\r\n    margin-left: auto;\r\n  }\r\n  .advanced-search{\r\n    font-family: \"Signa-Light\", Sans-Serif;\r\n    font-size: 16px;\r\n    line-height: 20px;\r\n    letter-spacing: 0.3px;\r\n    margin-right: 20px;\r\n  }\r\n\r\n  .search-section {\r\n    display: flex;\r\n    flex: 1 0 auto;\r\n    flex-direction: column;\r\n  }\r\n  .search {\r\n    display: flex;\r\n    flex: 1 0 auto;\r\n    flex-direction: row;\r\n  }\r\n  .searchbox {\r\n        flex: 1 0 auto;\r\n  }\r\n  .advanced-search {\r\n    display: inline-block;\r\n    padding: 10px;\r\n    font-size: 18px;\r\n    text-decoration: none;\r\n    font-family: \"Signa\", Sans-Serif;\r\n    color: #747473;\r\n    transition: color 0.33s;\r\n  }\r\n  .advanced-search-select{\r\n    flex: 0 0 auto;\r\n    align-self: center;\r\n    margin-left: 20px;\r\n     cursor: pointer;\r\n\r\n    :hover {\r\n      color: #000000;\r\n      transition: color 0.33s;\r\n    }\r\n  }\r\n  .comp-user-search {\r\n    p {\r\n      font-family: $font-bold;\r\n    }\r\n    .filter-links {\r\n      a {\r\n        text-transform: uppercase;\r\n        font-weight: bold;\r\n        color: $brand-grey7 !important;\r\n\r\n        &.router-link-active {\r\n          color: $brand-red !important;\r\n        }\r\n      }\r\n    }\r\n\r\n    .spinner {\r\n      color: $brand-red;\r\n      text-align: center;\r\n    }\r\n\r\n    .actions {\r\n      padding-top: 7px;\r\n    }\r\n  }\r\n\r\n  .checkbox-all {\r\n      margin-top: 12px;\r\n  }\r\n\r\n  .select-all {\r\n    display: flex;\r\n    flex: 1 0 0;\r\n    font-family: Verdana, sans-serif; // Because Signa-Light numbers jump all over the place!\r\n    margin-top: 10px;\r\n    margin-right: -15px;\r\n    margin-left: -15px;\r\n    background: $brand-white;\r\n    align-content: center;\r\n    height: 3rem;\r\n    padding-left: 15px;\r\n    padding-right: 15px;\r\n    border-top-right-radius: 5px;\r\n    border-top-left-radius: 5px;\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserSearchCheckBox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserSearchCheckBox.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserSearchCheckBox.vue?vue&type=template&id=946f055a\"\nimport script from \"./UserSearchCheckBox.vue?vue&type=script&lang=ts\"\nexport * from \"./UserSearchCheckBox.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserSearchCheckBox.vue?vue&type=style&index=0&id=946f055a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"broker-volunteers mt-3\"},[_c('hr'),_c('p',[_vm._v(_vm._s(_vm.$t('userAdmin.brokerRightsTitle')))]),_c('searchbox',{model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}}),(_vm.brokerVolunteers && _vm.brokerVolunteers.results && !_vm.loading)?_c('div',_vm._l((_vm.brokerVolunteers.results),function(r,i){return _c('friendshipBrokerSearchResult',{key:'resultsetv_' + _vm._uid + '_' + i + '_' + r.profileId,attrs:{\"volunteer\":r,\"friend-management-group\":_vm.groupId,\"is-net-profile\":_vm.isNetProfile}})}),1):_c('div',{staticClass:\"spinner my-4 col-12\"},[_c('loading')],1),(!_vm.loading)?_c('pager',{attrs:{\"take\":_vm.take,\"skip\":_vm.skip,\"total\":_vm.total,\"max-display\":_vm.maxDisplay,\"of-text\":\"/\"},on:{\"pagesizechanged\":_vm.onPageSizeChanged,\"pagerchanged\":_vm.pagerClick,\"pagerprevious\":_vm.pagerPrevious,\"pagernext\":_vm.pagerNext}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"broker-volunteers mt-3\">\r\n    <hr>\r\n    <p>{{ $t('userAdmin.brokerRightsTitle') }}</p>\r\n\r\n    <searchbox v-model=\"search\" />\r\n\r\n    <!-- Friendship broker search -->\r\n    <div v-if=\"brokerVolunteers && brokerVolunteers.results && !loading\">\r\n      <friendshipBrokerSearchResult v-for=\"(r, i) in brokerVolunteers.results\"\r\n                                    :key=\"'resultsetv_' + _uid + '_' + i + '_' + r.profileId\"\r\n                                    :volunteer=\"r\"\r\n                                    :friend-management-group=\"groupId\"\r\n                                    :is-net-profile=\"isNetProfile\"\r\n      />\r\n    </div>\r\n    <div v-else class=\"spinner my-4 col-12\">\r\n      <loading />\r\n    </div>\r\n\r\n    <pager v-if=\"!loading\"\r\n           :take=\"take\"\r\n           :skip=\"skip\"\r\n           :total=\"total\"\r\n           :max-display=\"maxDisplay\"\r\n           of-text=\"/\"\r\n           @pagesizechanged=\"onPageSizeChanged\"\r\n           @pagerchanged=\"pagerClick\"\r\n           @pagerprevious=\"pagerPrevious\"\r\n           @pagernext=\"pagerNext\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import searchbox from '../SPRSearchBox.vue'\r\n  import pager from '../SPRPager.vue'\r\n  import friendshipBrokerSearchResult from './FriendshipBrokerSearchResult.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { FriendManagementDto, SearchResult, FriendBrokerDto } from '@/types'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    search: string,\r\n    take: number,\r\n    skip: number,\r\n    total: number,\r\n    maxDisplay: number,\r\n    brokerVolunteers: SearchResult<FriendBrokerDto> | undefined,\r\n    loading: boolean,\r\n    group: FriendManagementDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'BrokerVolunteers',\r\n    components: { searchbox, pager, friendshipBrokerSearchResult, loading },\r\n    props: {\r\n      id: {\r\n        default: '-1',\r\n        type: String\r\n      },\r\n      friendshipGroup: {\r\n        default: null,\r\n        type: Number\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        search: '',\r\n        take: 5,\r\n        skip: 0,\r\n        total: 0,\r\n        maxDisplay: 5,\r\n        brokerVolunteers: undefined,\r\n        loading: false,\r\n        group: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      isNetProfile (): boolean {\r\n        return Boolean(this.group?.netFriendship)\r\n      },\r\n      groupId (): number {\r\n        return Number(this.id)\r\n      }\r\n    },\r\n    watch: {\r\n      search (val): void {\r\n        this.skip = 0\r\n        this.performSearch()\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.getGroup()\r\n        .then((result: HttpResponse) => {\r\n          this.group = result.data\r\n          this.performSearch()\r\n          this.$bus.$on('broker-search-research', this.performSearch)\r\n        })\r\n        .catch((err: any) => {\r\n          // @ts-ignore\r\n          console.log(err)\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        })\r\n    },\r\n    beforeDestroy (): void {\r\n      this.$bus.$off('broker-search-research')\r\n    },\r\n    methods: {\r\n      onPageSizeChanged (pageSize) {\r\n        this.take = pageSize\r\n        this.performSearch()\r\n      },\r\n      trainLink (newState): string {\r\n        return '/admin/training/' + newState\r\n      },\r\n      pagerClick (val): void {\r\n        this.skip = val.skip\r\n        this.performSearch()\r\n      },\r\n      pagerPrevious (): void {\r\n        this.skip -= this.take\r\n        this.performSearch()\r\n      },\r\n      pagerNext (): void {\r\n        this.skip += this.take\r\n        this.performSearch()\r\n      },\r\n      getGroup (): Promise<HttpResponse> {\r\n        const url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationById[0].replace('{0}', this.id)\r\n        return this.$http.get(url) as Promise<HttpResponse>\r\n      },\r\n      performSearch (): void {\r\n        this.loading = true\r\n        if (this.skip < 0) this.skip = 0\r\n\r\n        var url = this.group?.netFriendship\r\n          ? this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationFindNetBrokers[0]\r\n          : this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationFindStandardBrokers[0]\r\n\r\n        var dto = {\r\n          search: this.search,\r\n          friendManagementGroupId: Number(this.id),\r\n          potentialBrokersOnly: true,\r\n          skip: this.skip,\r\n          take: this.take\r\n        }\r\n        this.$http.post(url, dto).then(s => {\r\n          this.brokerVolunteers = s.data\r\n          this.total = this.brokerVolunteers?.total ?? 0\r\n\r\n          this.loading = false\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .broker-volunteers {\r\n    p {\r\n      font-family: $font-bold;\r\n      margin-top: 30px;\r\n    }\r\n    .filter-links {\r\n      a {\r\n        text-transform: uppercase;\r\n        font-weight: bold;\r\n        color: $brand-grey7 !important;\r\n\r\n        &.router-link-active {\r\n          color: $brand-red !important;\r\n        }\r\n      }\r\n    }\r\n\r\n    .spinner {\r\n      color: $brand-red;\r\n      text-align: center;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BrokerVolunteers.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BrokerVolunteers.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./BrokerVolunteers.vue?vue&type=template&id=9125a256\"\nimport script from \"./BrokerVolunteers.vue?vue&type=script&lang=ts\"\nexport * from \"./BrokerVolunteers.vue?vue&type=script&lang=ts\"\nimport style0 from \"./BrokerVolunteers.vue?vue&type=style&index=0&id=9125a256&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container messages\"},[(!_vm.sendMessageShown)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"text-center col-4\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('sectionMessages.sendSectionMessage'),\"click-event\":\"sendMessage\"},on:{\"sendMessage\":function($event){return _vm.showSendMessage(2)}}})],1),_c('div',{staticClass:\"text-center col-4\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('sectionMessages.sendToGroupManagers'),\"click-event\":\"sendMessage\"},on:{\"sendMessage\":function($event){return _vm.showSendMessage(1)}}})],1),_c('div',{staticClass:\"text-center col-4\"},[(_vm.hasSelectedVolunteers)?_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('sectionMessages.sendToSelectedContact'),\"click-event\":\"sendMessage\"},on:{\"sendMessage\":function($event){return _vm.showSendMessage(3)}}}):_vm._e()],1),(_vm.sendSuccess)?_c('div',{staticClass:\"sendsuccess text-center col-12 my-3\"},[_vm._v(\" \"+_vm._s(_vm.$t('sectionMessages.messageSendSuccess'))+\" \")]):_vm._e(),(_vm.removeSuccess)?_c('div',{staticClass:\"sendsuccess text-center col-12 my-3\"},[_vm._v(\" \"+_vm._s(_vm.$t('sectionMessages.messageRemoveSuccess'))+\" \")]):_vm._e()]):_vm._e(),(this.type == 3)?_c('div',{staticClass:\"row mb-2 new-volunteers\"},[_c('selectedlisting',{attrs:{\"users\":this.$store.state.selectedVolunteers}})],1):_vm._e(),(_vm.sendMessageShown)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.messageHeader))])]),_c('div',{staticClass:\"sendMessage col-12\"},[_c('div',{staticClass:\"subject\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('sectionMessages.messageSubject'),\"is-valid\":true},model:{value:(_vm.subject),callback:function ($$v) {_vm.subject=$$v},expression:\"subject\"}})],1),_c('div',{staticClass:\"messagebody\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('sectionMessages.messageContent'),\"rows\":5},model:{value:(_vm.content),callback:function ($$v) {_vm.content=$$v},expression:\"content\"}})],1)]),_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('sectionMessages.sendAsMail'),\"aria-label\":_vm.$t('sectionMessages.sendAsMail')},model:{value:(_vm.sendAsMail),callback:function ($$v) {_vm.sendAsMail=$$v},expression:\"sendAsMail\"}})],1),_c('div',{staticClass:\"col-12 align-bottom sendButtons\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('sectionMessages.sendMessage'),\"click-event\":\"sendMessage\"},on:{\"sendMessage\":_vm.sendMessage}}),_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('sectionMessages.cancel'),\"click-event\":\"sendMessage\"},on:{\"sendMessage\":_vm.cancelSendMessage}})],1)]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 all-messages\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('sectionMessages.title')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"messagelist\"},[(_vm.messages && !_vm.messagesLoading)?_c('div',_vm._l((_vm.messages),function(message,index){return _c('message',{key:_vm._uid + '_message_' + index,attrs:{\"message\":message}})}),1):_vm._e(),(!_vm.messages && !_vm.messagesLoading)?_c('div',{staticClass:\"nomessages\"},[_c('span',[_vm._v(_vm._s(_vm.$t('sectionMessages.noMessages')))])]):_vm._e(),(_vm.messagesLoading)?_c('div',{staticClass:\"brand-red\"},[_c('loading')],1):_vm._e()])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sprmessage\"},[_c('div',{staticClass:\"row\",on:{\"click\":_vm.clicked}},[_c('div',{staticClass:\"col-1\"},[(_vm.open)?_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-down\",\"aria-hidden\":\"true\"}}):_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-up\",\"aria-hidden\":\"true\"}})],1),_c('div',{staticClass:\"col-4\"},[_c('div',{staticClass:\"sender\"},[_c('div',{staticClass:\"state\",class:_vm.stateClass}),_c('span',{staticClass:\"sentby cap-label\"},[_vm._v(_vm._s(_vm.message.sender))]),_c('div',{staticClass:\"date\"},[_vm._v(\" \"+_vm._s(_vm.sentDate)+\" \")])])]),_c('div',{staticClass:\"col-6\"},[_c('div',{staticClass:\"subject\"},[_vm._v(\" \"+_vm._s(_vm.message.subject)+\" \")])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.open),expression:\"open\"}],staticClass:\"row justify-content-center content\"},[_c('div',{directives:[{name:\"linkified\",rawName:\"v-linkified:options\",value:({ nl2br: true }),expression:\"{ nl2br: true }\",arg:\"options\"}],staticClass:\"col-10\",on:{\"click\":_vm.clicked}},[_vm._v(\" \"+_vm._s(_vm.message.content)+\" \")]),(_vm.showRemoveButton)?_c('div',{staticClass:\"col-2 text-right\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('eventPage.remove'),\"click-event\":\"removeMessage\"},on:{\"removeMessage\":_vm.remove}})],1):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\" scoped>\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .sprmessage {\r\n    padding: 5px;\r\n\r\n    &:nth-child(odd) {\r\n      background: rgba(0,0,0,0.03);\r\n    }\r\n\r\n    .sender {\r\n      .state {\r\n        width: 10px;\r\n        height: 10px;\r\n        border-radius: 100%;\r\n        display: none;\r\n        margin-right: 5px;\r\n\r\n        &.new {\r\n          display: inline-block;\r\n          background-color: $brand-success;\r\n          border-color: $brand-success;\r\n        }\r\n      }\r\n\r\n      .sentby {\r\n        color: $brand-red;\r\n        &:hover {\r\n          background-color: auto;\r\n        }\r\n      }\r\n    }\r\n\r\n    .subject {\r\n      width: 100%;\r\n      white-space: nowrap;\r\n      overflow: hidden;\r\n      text-overflow: ellipsis;\r\n    }\r\n\r\n    .content {\r\n      padding-top: 10px;\r\n    }\r\n  }\r\n</style>\r\n\r\n<template>\r\n  <div class=\"sprmessage\">\r\n    <div class=\"row\" @click=\"clicked\">\r\n      <div class=\"col-1\">\r\n        <font-awesome-icon v-if=\"open\" icon=\"chevron-down\" class=\"brand-red\" aria-hidden=\"true\" />\r\n        <font-awesome-icon v-else icon=\"chevron-up\" class=\"brand-red\" aria-hidden=\"true\" />\r\n      </div>\r\n      <div class=\"col-4\">\r\n        <div class=\"sender\">\r\n          <div class=\"state\" :class=\"stateClass\" />\r\n          <span class=\"sentby cap-label\">{{ message.sender }}</span>\r\n          <div class=\"date\">\r\n            {{ sentDate }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-6\">\r\n        <div class=\"subject\">\r\n          {{ message.subject }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div v-show=\"open\" class=\"row justify-content-center content\">\r\n      <!-- eslint-disable-next-line vue/no-v-html -->\r\n      <div v-linkified:options=\"{ nl2br: true }\" class=\"col-10\" @click=\"clicked\">\r\n        {{ message.content }}\r\n      </div>\r\n      <div v-if=\"showRemoveButton\" class=\"col-2 text-right\">\r\n        <sprbutton type=\"primary\"\r\n                   :size=\"4\"\r\n                   :title=\"$t('eventPage.remove')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"removeMessage\"\r\n                   @removeMessage=\"remove\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import moment from 'moment'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import messages from '../../mixins/messages.js'\r\n  export default {\r\n    name: 'SprMessage',\r\n    components: { sprbutton },\r\n    mixins: [messages],\r\n    props: {\r\n      message: {\r\n        type: Object,\r\n        required: true\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        sender: {},\r\n        open: false\r\n      }\r\n    },\r\n    computed: {\r\n      sentDate () {\r\n        return moment(this.message.sent).format('DD.MM.YYYY H:mm')\r\n      },\r\n      stateClass () {\r\n        switch (this.message.messageStatus) {\r\n        case 1:\r\n          return 'new'\r\n\r\n        case 2:\r\n          return 'marked-as-read'\r\n\r\n        case 3:\r\n          return 'hidden'\r\n\r\n        case 4:\r\n          return 'deleted'\r\n\r\n        default:\r\n          return 'unknown'\r\n        }\r\n      },\r\n      showRemoveButton () {\r\n        if (this.hasRole('Admin') || this.hasRole('J1') || this.hasRole('J2') || this.hasRole('Emplyee')) {\r\n          return true\r\n        }\r\n        return false\r\n      }\r\n    },\r\n    methods: {\r\n      remove: function () {\r\n        const self = this\r\n        const url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.removenotification[0]}/${self.message.id}`\r\n        this.$http.post(url).then(function () {\r\n                                    self.$bus.$emit('reload-section-messages')\r\n                                  },\r\n                                  function (y) {\r\n                                    console.log('error removing notification!')\r\n                                  })\r\n      },\r\n      clicked: function () {\r\n        this.open = !this.open\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AdminMessageView.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AdminMessageView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AdminMessageView.vue?vue&type=template&id=c9df2c06&scoped=true\"\nimport script from \"./AdminMessageView.vue?vue&type=script&lang=js\"\nexport * from \"./AdminMessageView.vue?vue&type=script&lang=js\"\nimport style0 from \"./AdminMessageView.vue?vue&type=style&index=0&id=c9df2c06&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"c9df2c06\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"collapse-select-container\",on:{\"click\":_vm.toggleAdvancedSearch}},[_c('span',{staticClass:\"collapse-select\"},[_vm._v(_vm._s(_vm.showCollapsed ? _vm.$t('sectionMessages.collapseRecipients') : _vm.$t('sectionMessages.showRecipients')))]),(_vm.showCollapsed)?_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-down\",\"aria-hidden\":\"true\"}}):_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-up\",\"aria-hidden\":\"true\"}})],1)]),(_vm.results && _vm.showCollapsed)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"selected-result\"},_vm._l((_vm.results),function(r,i){return _c('result',{key:'resultset_' + _vm._uid + '_' + i + '_' + r.profileId,attrs:{\"volunteer\":r}})}),1),(_vm.hasSelectedVolunteers)?_c('sprbutton',{staticClass:\"clear-list-button\",attrs:{\"type\":\"primary\",\"disabled\":!_vm.hasConsent,\"size\":4,\"title\":_vm.$t('userAdmin.clearList'),\"click-event\":\"clearVolunteerList\"},on:{\"clearVolunteerList\":_vm.onClearVolunteerList}}):_vm._e(),_c('checkboxinput',{staticClass:\"consent-clear\",attrs:{\"title\":_vm.$t('userAdmin.consentClear'),\"aria-label\":_vm.$t('userAdmin.consentClear')},model:{value:(_vm.hasConsent),callback:function ($$v) {_vm.hasConsent=$$v},expression:\"hasConsent\"}})],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row comp-search-result my-2 selected-column\"},[_c('div',{staticClass:\"col-12 grid-row\"},[_c('div',{staticClass:\"grid-name\"},[_vm._v(\" \"+_vm._s(_vm.volunteer.lastName)+\", \"+_vm._s(_vm.volunteer.firstName)+\" \")]),_c('a',{staticClass:\"action-icon remove-icon\",attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.removeVolunteer}},[_c('font-awesome-icon',{staticClass:\"removeIcon\",attrs:{\"icon\":\"times\",\"aria-hidden\":\"true\"}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row comp-search-result my-2 selected-column\">\r\n    <div class=\"col-12 grid-row\">\r\n      <div class=\"grid-name\">\r\n        {{ volunteer.lastName }}, {{ volunteer.firstName }}\r\n      </div>\r\n      <a class=\"action-icon remove-icon\" tabindex=\"0\" @click=\"removeVolunteer\">\r\n        <font-awesome-icon icon=\"times\" aria-hidden=\"true\" class=\"removeIcon\" />\r\n      </a>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprportrait from '../SPRPortrait.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import cache from '../../mixins/cache.js'\r\n  import inpututils from '../../mixins/inpututils.js'\r\n  import moment from 'moment'\r\n  import { CrmDataDto, UserProfileDto } from '@/types/index'\r\n  import { TranslateResult } from 'vue-i18n'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    open: boolean,\r\n    roleLoadState: number,\r\n    roles: Array<string> | undefined,\r\n    member: CrmDataDto | undefined,\r\n    train: Array<string> | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'SelectedVolunteerResult',\r\n    components: { sprbutton, sprportrait, loading },\r\n    mixins: [cache, enumhelper, inpututils],\r\n    props: {\r\n      volunteer: {\r\n        type: Object as () => UserProfileDto,\r\n        default: null\r\n      },\r\n      showContacted: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        open: false,\r\n        roleLoadState: 0,\r\n        roles: [] as Array<string>,\r\n        member: undefined,\r\n        train: undefined\r\n      }\r\n    },\r\n    computed: {\r\n    },\r\n    methods: {\r\n      removeVolunteer () {\r\n        this.$store.state.selectedContact = this.$store.state.selectedContact.filter(item => item !== this.volunteer.email)\r\n        this.$store.state.selectedVolunteers = this.$store.state.selectedVolunteers.filter(item => item.email !== this.volunteer.email)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '~@/assets/scss/_variables.scss';\r\n .removeIcon {\r\n    float: right;\r\n    margin-top: 22px;\r\n }\r\n  .remove-icon {\r\n    grid-column: 2;\r\n    -ms-grid-column: 2;\r\n    line-height: 60px;\r\n  }\r\n  .selected-column {\r\n    display: flex;\r\n    flex-direction: column;\r\n    flex-basis: 100%;\r\n    flex: 1;\r\n    margin-right: 3px !important;\r\n    margin-left: 3px !important;\r\n    border-radius: 13px;\r\n    max-width: 25%;\r\n  }\r\n  .comp-search-result {\r\n    background: $brand-white;\r\n    cursor: pointer;\r\n    border: 2px solid $brand-white;\r\n\r\n    &:hover {\r\n      border: 2px solid $brand-red;\r\n    }\r\n\r\n    .grid-row {\r\n      display: grid;\r\n      display: -ms-grid;\r\n      grid-template-rows: 60px;\r\n      -ms-grid-rows: 60px;\r\n      grid-template-columns: 187px;\r\n    }\r\n    .grid-name {\r\n      width: 100%;\r\n      grid-column: 1;\r\n      -ms-grid-column: 1;\r\n      line-height: 60px;\r\n\r\n      font-size: 13px;\r\n      letter-spacing: 0.3px;\r\n      font-weight: 700;\r\n      color: $brand-red;\r\n      text-transform: uppercase;\r\n      font-family: \"Signa-Light\", Sans-Serif;\r\n\r\n      overflow: hidden;\r\n      white-space: nowrap;\r\n      text-overflow: ellipsis;\r\n      max-width: 100%;\r\n    }\r\n    @media (max-width: $media-md-max) {\r\n        .grid-row {\r\n          display: flex;\r\n        }\r\n    }\r\n  }\r\n  @media (max-width: $media-sm-max) {\r\n    .selected-column {\r\n      max-width: 100% !important;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelectedVolunteerResult.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelectedVolunteerResult.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SelectedVolunteerResult.vue?vue&type=template&id=63c57fda&scoped=true\"\nimport script from \"./SelectedVolunteerResult.vue?vue&type=script&lang=ts\"\nexport * from \"./SelectedVolunteerResult.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SelectedVolunteerResult.vue?vue&type=style&index=0&id=63c57fda&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"63c57fda\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"container-fluid\">\r\n    <div class=\"row\">\r\n      <div class=\"collapse-select-container\" @click=\"toggleAdvancedSearch\">\r\n        <span class=\"collapse-select\">{{ showCollapsed ? $t('sectionMessages.collapseRecipients') : $t('sectionMessages.showRecipients') }}</span>\r\n        <font-awesome-icon v-if=\"showCollapsed\" icon=\"chevron-down\" class=\"brand-red\" aria-hidden=\"true\" />\r\n        <font-awesome-icon v-else icon=\"chevron-up\" class=\"brand-red\" aria-hidden=\"true\" />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"results && showCollapsed\" class=\"row\">\r\n      <div class=\"selected-result\">\r\n        <result v-for=\"(r, i) in results\"\r\n                :key=\"'resultset_' + _uid + '_' + i + '_' + r.profileId\"\r\n                :volunteer=\"r\"\r\n        />\r\n      </div>\r\n      <sprbutton v-if=\"hasSelectedVolunteers\"\r\n                 type=\"primary\"\r\n                 :disabled=\"!hasConsent\"\r\n                 :size=\"4\"\r\n                 :title=\"$t('userAdmin.clearList')\"\r\n                 class=\"clear-list-button\"\r\n                 click-event=\"clearVolunteerList\"\r\n                 @clearVolunteerList=\"onClearVolunteerList\"\r\n      />\r\n      <checkboxinput\r\n        v-model=\"hasConsent\"\r\n        class=\"consent-clear\"\r\n        :title=\"$t('userAdmin.consentClear')\"\r\n        :aria-label=\"$t('userAdmin.consentClear')\"\r\n      />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import result from './SelectedVolunteerResult.vue'\r\n  export default {\r\n    name: 'SelectedVolunteerListing',\r\n    components: { result, sprbutton, checkboxinput },\r\n    props: {\r\n      users: {\r\n        type: Array,\r\n        default: () => []\r\n      }\r\n    },\r\n    data: function () {\r\n      return {\r\n        showCollapsed: true,\r\n        hasConsent: false\r\n      }\r\n    },\r\n    computed: {\r\n      results: function () {\r\n        return this.$store.state.selectedVolunteers\r\n      },\r\n      hasSelectedVolunteers () {\r\n        return this.$store.state.selectedContact.length > 0\r\n      }\r\n    },\r\n    methods: {\r\n      toggleAdvancedSearch () {\r\n        this.showCollapsed = !this.showCollapsed\r\n      },\r\n      onClearVolunteerList () {\r\n        this.$store.state.selectedContact = []\r\n        this.$store.state.selectedVolunteers = []\r\n        this.$parent.cancelSendMessage()\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .consent-clear {\r\n    margin-top: 11px;\r\n    margin-left: 14px;\r\n  }\r\n  .collapse-select {\r\n    display: inline-block;\r\n    padding: 10px;\r\n    font-size: 18px;\r\n    text-decoration: none;\r\n    font-family: \"Signa\", Sans-Serif;\r\n    color: #747473;\r\n    transition: color 0.33s;\r\n  }\r\n  .collapse-select-container{\r\n    flex: 0 0 auto;\r\n    align-self: center;\r\n    margin-left: 20px;\r\n     cursor: pointer;\r\n\r\n    :hover {\r\n      color: #000000;\r\n      transition: color 0.33s;\r\n    }\r\n  }\r\n\r\n  .selected-result {\r\n    display: flex;\r\n    flex-direction: row;\r\n    flex-wrap: wrap;\r\n    width: 100%;\r\n  }\r\n  .comp-user-search {\r\n    .filter-links {\r\n      a {\r\n        text-transform: uppercase;\r\n        font-weight: bold;\r\n        color: $brand-grey7 !important;\r\n\r\n        &.router-link-active {\r\n          color: $brand-red !important;\r\n        }\r\n      }\r\n    }\r\n\r\n    .spinner {\r\n      color: $brand-red;\r\n      text-align: center;\r\n    }\r\n  }\r\n\r\n   @media (max-width: $media-sm-max) {\r\n        .selected-result {\r\n          display: unset;\r\n        }\r\n    }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelectedVolunteerList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelectedVolunteerList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SelectedVolunteerList.vue?vue&type=template&id=08fa34f4&scoped=true\"\nimport script from \"./SelectedVolunteerList.vue?vue&type=script&lang=js\"\nexport * from \"./SelectedVolunteerList.vue?vue&type=script&lang=js\"\nimport style0 from \"./SelectedVolunteerList.vue?vue&type=style&index=0&id=08fa34f4&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"08fa34f4\",\n  null\n  \n)\n\nexport default component.exports","<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .selectedVolunteers  {\r\n    margin-bottom: 14px;\r\n  }\r\n  .messages {\r\n    margin-top: 20px;\r\n    .messagelist {\r\n      background-color:$brand-white;\r\n    }\r\n  }\r\n\r\n  .all-messages {\r\n    margin-top: 20px;\r\n  }\r\n\r\n  .sendMessage {\r\n    textarea {\r\n      min-width: 100%;\r\n    }\r\n\r\n  input[type=text] {\r\n    min-width: 100%;\r\n  }\r\n  }\r\n\r\n  .sendButtons {\r\n    margin-top: 25px;\r\n  }\r\n  .sendsuccess {\r\n    color: $brand-success;\r\n  }\r\n\r\n</style>\r\n\r\n<template>\r\n  <div class=\"container messages\">\r\n    <div v-if=\"!sendMessageShown\" class=\"row\">\r\n      <div class=\"text-center col-4\">\r\n        <sprbutton type=\"primary\"\r\n                   :size=\"4\"\r\n                   :title=\"$t('sectionMessages.sendSectionMessage')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"sendMessage\"\r\n                   @sendMessage=\"showSendMessage(2)\"\r\n        />\r\n      </div>\r\n      <div class=\"text-center col-4\">\r\n        <sprbutton type=\"primary\"\r\n                   :size=\"4\"\r\n                   :title=\"$t('sectionMessages.sendToGroupManagers')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"sendMessage\"\r\n                   @sendMessage=\"showSendMessage(1)\"\r\n        />\r\n      </div>\r\n      <div class=\"text-center col-4\">\r\n        <sprbutton v-if=\"hasSelectedVolunteers\" type=\"primary\"\r\n                   :size=\"4\"\r\n                   :title=\"$t('sectionMessages.sendToSelectedContact')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"sendMessage\"\r\n                   @sendMessage=\"showSendMessage(3)\"\r\n        />\r\n      </div>\r\n      <div v-if=\"sendSuccess\" class=\"sendsuccess text-center col-12 my-3\">\r\n        {{ $t('sectionMessages.messageSendSuccess') }}\r\n      </div>\r\n      <div v-if=\"removeSuccess\" class=\"sendsuccess text-center col-12 my-3\">\r\n        {{ $t('sectionMessages.messageRemoveSuccess') }}\r\n      </div>\r\n    </div>\r\n    <div v-if=\"this.type == 3\" class=\"row mb-2 new-volunteers\">\r\n      <selectedlisting :users=\"this.$store.state.selectedVolunteers\" />\r\n    </div>\r\n    <div v-if=\"sendMessageShown\" class=\"row\">\r\n      <div class=\"col-12\">\r\n        <h5>{{ messageHeader }}</h5>\r\n      </div>\r\n      <div class=\"sendMessage col-12\">\r\n        <div class=\"subject\">\r\n          <forminput v-model=\"subject\"\r\n                     :hint=\"$t('sectionMessages.messageSubject')\"\r\n                     :is-valid=\"true\"\r\n          />\r\n        </div>\r\n        <div class=\"messagebody\">\r\n          <textareainput v-model=\"content\"\r\n                         :title=\"$t('sectionMessages.messageContent')\"\r\n                         :rows=\"5\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <checkboxinput v-model=\"sendAsMail\"\r\n                       :title=\"$t('sectionMessages.sendAsMail')\"\r\n                       :aria-label=\"$t('sectionMessages.sendAsMail')\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12 align-bottom sendButtons\">\r\n        <sprbutton type=\"primary\"\r\n                   :size=\"4\"\r\n                   :title=\"$t('sectionMessages.sendMessage')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"sendMessage\"\r\n                   @sendMessage=\"sendMessage\"\r\n        />\r\n        <sprbutton type=\"primary\"\r\n                   :size=\"4\"\r\n                   :title=\"$t('sectionMessages.cancel')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"sendMessage\"\r\n                   @sendMessage=\"cancelSendMessage\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 all-messages\">\r\n        <h3>{{ $t('sectionMessages.title') }}</h3>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"messagelist\">\r\n          <div v-if=\"messages && !messagesLoading\">\r\n            <message v-for=\"(message, index) in messages\" :key=\"_uid + '_message_' + index\" :message=\"message\" />\r\n          </div>\r\n          <div v-if=\"!messages && !messagesLoading\" class=\"nomessages\">\r\n            <span>{{ $t('sectionMessages.noMessages') }}</span>\r\n          </div>\r\n          <div v-if=\"messagesLoading\" class=\"brand-red\">\r\n            <loading />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import message from './AdminMessageView.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import moment from 'moment'\r\n  import selectedlisting from './SelectedVolunteerList.vue'\r\n  export default {\r\n    name: 'Sectionmessages',\r\n    components: { message, sprbutton, textareainput, forminput, checkboxinput, loading, selectedlisting },\r\n    data () {\r\n      return {\r\n        messages: [],\r\n        messagesLoading: false,\r\n        subject: '',\r\n        content: '',\r\n        sendMessageShown: false,\r\n        sendSuccess: false,\r\n        removeSuccess: false,\r\n        type: 0,\r\n        sendAsMail: false\r\n      }\r\n    },\r\n    computed: {\r\n      messageHeader: function () {\r\n        if (this.type === 2) {\r\n          return this.$t('sectionMessages.sectionMessageHeader')\r\n        }\r\n        if (this.type === 1) {\r\n          return this.$t('sectionMessages.sectionGroupLeadersHeader')\r\n        }\r\n        if (this.type === 3) {\r\n          const header = this.$t('sectionMessages.sectionSendSelectedHeader') + this.$store.state.selectedContact.length.toString()\r\n          return header\r\n        }\r\n\r\n        return ''\r\n      },\r\n      hasSelectedVolunteers () {\r\n        return this.$store.state.selectedContact.length > 0\r\n      }\r\n    },\r\n    mounted () {\r\n      this.getMessages()\r\n      this.$bus.$on('reload-section-messages', this.removeMessage)\r\n    },\r\n    beforeDestroy () {\r\n      this.$bus.$off('reload-section-messages')\r\n    },\r\n    methods: {\r\n      getMessages () {\r\n        var self = this\r\n        self.messagesLoading = true\r\n        var url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.getmessagesbysectionid[0]}${this.$route.params.id}`\r\n        this.$http.get(url).then(resp => {\r\n          self.messages = _.sortBy(resp.body, function (message) {\r\n            return moment(message.sent)\r\n          }).reverse()\r\n          self.messagesLoading = false\r\n        })\r\n      },\r\n      showSendMessage (type) {\r\n        this.sendSuccess = false\r\n        this.sendMessageShown = true\r\n        this.type = type\r\n      },\r\n      cancelSendMessage () {\r\n        this.sendMessageShown = false\r\n        this.subject = ''\r\n        this.content = ''\r\n        this.type = 0\r\n      },\r\n      sendMessage () {\r\n        this.sendSuccess = false\r\n        var url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.sendgroupmessage[0]}`\r\n        if (this.type === 1) {\r\n          url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.sendtosectiongroupmanagers[0]}`\r\n        } else if (this.type === 3) {\r\n          url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.sendtoselectedcontact[0]}`\r\n        }\r\n        var messageDto = {}\r\n        if (this.type === 3) {\r\n          messageDto.subject = this.subject\r\n          messageDto.content = this.content\r\n          messageDto.sectionId = this.$route.params.id\r\n          messageDto.senderProfileId = this.$store.state.profile.profileId\r\n          messageDto.sendAsEmail = this.sendAsMail\r\n          messageDto.contactList = this.$store.state.selectedContact\r\n        } else {\r\n          messageDto.subject = this.subject\r\n          messageDto.content = this.content\r\n          messageDto.sectionId = this.$route.params.id\r\n          messageDto.senderProfileId = this.$store.state.profile.profileId\r\n          messageDto.sendAsEmail = this.sendAsMail\r\n        }\r\n        this.$http.post(url, messageDto).then((resp) => {\r\n          this.sendMessageShown = false\r\n          this.sendSuccess = true\r\n          this.subject = ''\r\n          this.content = ''\r\n          this.getMessages()\r\n          this.$store.state.selectedContact = []\r\n          this.$store.state.selectedVolunteers = []\r\n        })\r\n      },\r\n      removeMessage () {\r\n        this.sendSuccess = false\r\n        this.removeSuccess = true\r\n        this.getMessages()\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionMessages.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionMessages.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SectionMessages.vue?vue&type=template&id=4c4973e2\"\nimport script from \"./SectionMessages.vue?vue&type=script&lang=js\"\nexport * from \"./SectionMessages.vue?vue&type=script&lang=js\"\nimport style0 from \"./SectionMessages.vue?vue&type=style&index=0&id=4c4973e2&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container messages\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"text-center col-4\"},[(false)?_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('districtMessages.sendToSelectedContact'),\"click-event\":\"sendMessage\"},on:{\"sendMessage\":function($event){return _vm.showSendMessage(3)}}}):_vm._e()],1),(_vm.sendSuccess)?_c('div',{staticClass:\"sendsuccess text-center col-12 my-3\"},[_vm._v(\" \"+_vm._s(_vm.$t('districtMessages.messageSendSuccess'))+\" \")]):_vm._e(),(_vm.removeSuccess)?_c('div',{staticClass:\"sendsuccess text-center col-12 my-3\"},[_vm._v(\" \"+_vm._s(_vm.$t('districtMessages.messageRemoveSuccess'))+\" \"+_vm._s(this.$store.state.selectedContact.length)+\" \")]):_vm._e()]),(_vm.hasSelectedVolunteers)?_c('div',{staticClass:\"row mb-2 new-volunteers\"},[_c('selectedlisting',{attrs:{\"users\":this.$store.state.selectedVolunteers}})],1):_vm._e(),(_vm.hasSelectedVolunteers)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.messageHeader))])]),_c('div',{staticClass:\"sendMessage col-12\"},[_c('div',{staticClass:\"subject\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('districtMessages.messageSubject'),\"is-valid\":true},model:{value:(_vm.subject),callback:function ($$v) {_vm.subject=$$v},expression:\"subject\"}})],1),_c('div',{staticClass:\"messagebody\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('districtMessages.messageContent'),\"rows\":5},model:{value:(_vm.content),callback:function ($$v) {_vm.content=$$v},expression:\"content\"}})],1)]),_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('districtMessages.sendAsMail'),\"aria-label\":_vm.$t('districtMessages.sendAsMail')},model:{value:(_vm.sendAsMail),callback:function ($$v) {_vm.sendAsMail=$$v},expression:\"sendAsMail\"}})],1),_c('div',{staticClass:\"col-12 align-bottom sendButtons\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('districtMessages.sendMessage'),\"click-event\":\"sendMessage\"},on:{\"sendMessage\":_vm.sendMessage}}),_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('districtMessages.cancel'),\"click-event\":\"sendMessage\"},on:{\"sendMessage\":_vm.cancelSendMessage}})],1)]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 all-messages\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('districtMessages.title')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"messagelist\"},[(_vm.messages && !_vm.messagesLoading)?_c('div',_vm._l((_vm.messages),function(message,index){return _c('message',{key:_vm._uid + '_message_' + index,attrs:{\"message\":message}})}),1):_vm._e(),(!_vm.messages && !_vm.messagesLoading)?_c('div',{staticClass:\"nomessages\"},[_c('span',[_vm._v(_vm._s(_vm.$t('districtMessages.noMessages')))])]):_vm._e(),(_vm.messagesLoading)?_c('div',{staticClass:\"brand-red\"},[_c('loading')],1):_vm._e()])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .selectedVolunteers  {\r\n    margin-bottom: 14px;\r\n  }\r\n  .messages {\r\n    margin-top: 20px;\r\n    .messagelist {\r\n      background-color:$brand-white;\r\n    }\r\n  }\r\n\r\n  .all-messages {\r\n    margin-top: 20px;\r\n  }\r\n\r\n  .sendMessage {\r\n    textarea {\r\n      min-width: 100%;\r\n    }\r\n\r\n  input[type=text] {\r\n    min-width: 100%;\r\n  }\r\n  }\r\n\r\n  .sendButtons {\r\n    margin-top: 25px;\r\n  }\r\n  .sendsuccess {\r\n    color: $brand-success;\r\n  }\r\n\r\n</style>\r\n\r\n<template>\r\n  <div class=\"container messages\">\r\n    <div class=\"row\">\r\n      <div class=\"text-center col-4\">\r\n        <sprbutton v-if=\"false\" type=\"primary\"\r\n                   :size=\"4\"\r\n                   :title=\"$t('districtMessages.sendToSelectedContact')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"sendMessage\"\r\n                   @sendMessage=\"showSendMessage(3)\"\r\n        />\r\n      </div>\r\n      <div v-if=\"sendSuccess\" class=\"sendsuccess text-center col-12 my-3\">\r\n        {{ $t('districtMessages.messageSendSuccess') }}\r\n      </div>\r\n      <div v-if=\"removeSuccess\" class=\"sendsuccess text-center col-12 my-3\">\r\n        {{ $t('districtMessages.messageRemoveSuccess') }}\r\n        {{ this.$store.state.selectedContact.length }}\r\n      </div>\r\n    </div>\r\n    <div v-if=\"hasSelectedVolunteers\" class=\"row mb-2 new-volunteers\">\r\n      <selectedlisting :users=\"this.$store.state.selectedVolunteers\" />\r\n    </div>\r\n    <div v-if=\"hasSelectedVolunteers\" class=\"row\">\r\n      <div class=\"col-12\">\r\n        <h5>{{ messageHeader }}</h5>\r\n      </div>\r\n      <div class=\"sendMessage col-12\">\r\n        <div class=\"subject\">\r\n          <forminput v-model=\"subject\"\r\n                     :hint=\"$t('districtMessages.messageSubject')\"\r\n                     :is-valid=\"true\"\r\n          />\r\n        </div>\r\n        <div class=\"messagebody\">\r\n          <textareainput v-model=\"content\"\r\n                         :title=\"$t('districtMessages.messageContent')\"\r\n                         :rows=\"5\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <checkboxinput v-model=\"sendAsMail\"\r\n                       :title=\"$t('districtMessages.sendAsMail')\"\r\n                       :aria-label=\"$t('districtMessages.sendAsMail')\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12 align-bottom sendButtons\">\r\n        <sprbutton type=\"primary\"\r\n                   :size=\"4\"\r\n                   :title=\"$t('districtMessages.sendMessage')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"sendMessage\"\r\n                   @sendMessage=\"sendMessage\"\r\n        />\r\n        <sprbutton type=\"primary\"\r\n                   :size=\"4\"\r\n                   :title=\"$t('districtMessages.cancel')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"sendMessage\"\r\n                   @sendMessage=\"cancelSendMessage\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 all-messages\">\r\n        <h3>{{ $t('districtMessages.title') }}</h3>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"messagelist\">\r\n          <div v-if=\"messages && !messagesLoading\">\r\n            <message v-for=\"(message, index) in messages\" :key=\"_uid + '_message_' + index\" :message=\"message\" />\r\n          </div>\r\n          <div v-if=\"!messages && !messagesLoading\" class=\"nomessages\">\r\n            <span>{{ $t('districtMessages.noMessages') }}</span>\r\n          </div>\r\n          <div v-if=\"messagesLoading\" class=\"brand-red\">\r\n            <loading />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import message from './AdminMessageView.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import moment from 'moment'\r\n  import selectedlisting from './SelectedVolunteerList.vue'\r\n  export default {\r\n    name: 'Districtmessages',\r\n    components: { message, sprbutton, textareainput, forminput, checkboxinput, loading, selectedlisting },\r\n    data () {\r\n      return {\r\n        messages: [],\r\n        messagesLoading: false,\r\n        subject: '',\r\n        content: '',\r\n        sendMessageShown: false,\r\n        sendSuccess: false,\r\n        removeSuccess: false,\r\n        type: 0,\r\n        sendAsMail: false\r\n      }\r\n    },\r\n    computed: {\r\n      messageHeader: function () {\r\n        if (this.type === 2) {\r\n          return this.$t('districtMessages.districtMessageHeader')\r\n        }\r\n        if (this.type === 1) {\r\n          return this.$t('districtMessages.districtGroupLeadersHeader')\r\n        }\r\n        if (this.type === 3) {\r\n          const header = this.$t('districtMessages.districtSendSelectedHeader') + this.$store.state.selectedContact.length.toString()\r\n          return header\r\n        }\r\n\r\n        return ''\r\n      },\r\n      hasSelectedVolunteers () {\r\n        return this.$store.state.selectedVolunteers.length > 0\r\n      }\r\n    },\r\n    mounted () {\r\n      this.getMessages()\r\n      this.$bus.$on('reload-section-messages', this.removeMessage)\r\n    },\r\n    beforeDestroy () {\r\n      this.$store.state.selectedVolunteers = []\r\n      this.$bus.$off('reload-section-messages')\r\n    },\r\n    methods: {\r\n      getMessages () {\r\n        var self = this\r\n        self.messagesLoading = true\r\n        var url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.getmessagesbydistrictid[0]}${this.$route.params.id}`\r\n        this.$http.get(url).then(resp => {\r\n          self.messages = _.sortBy(resp.body, function (message) {\r\n            return moment(message.sent)\r\n          }).reverse()\r\n          self.messagesLoading = false\r\n        })\r\n      },\r\n      showSendMessage (type) {\r\n        this.sendSuccess = false\r\n        this.sendMessageShown = true\r\n        this.type = type\r\n      },\r\n      cancelSendMessage () {\r\n        this.sendMessageShown = false\r\n        this.subject = ''\r\n        this.content = ''\r\n        this.type = 0\r\n      },\r\n      sendMessage () {\r\n        this.sendSuccess = false\r\n        var url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.sendtoselectedcontact[0]}`\r\n\r\n        var messageDto = {}\r\n        if (this.type === 3) {\r\n          messageDto.subject = this.subject\r\n          messageDto.content = this.content\r\n          messageDto.districtId = this.$route.params.id\r\n          messageDto.senderProfileId = this.$store.state.profile.profileId\r\n          messageDto.sendAsEmail = this.sendAsMail\r\n          messageDto.contactList = this.$store.state.selectedContact\r\n        } else {\r\n          messageDto.subject = this.subject\r\n          messageDto.content = this.content\r\n          messageDto.districtId = this.$route.params.id\r\n          messageDto.contactList = this.$store.state.selectedContact\r\n          messageDto.senderProfileId = this.$store.state.profile.profileId\r\n          messageDto.sendAsEmail = this.sendAsMail\r\n        }\r\n        this.$http.post(url, messageDto).then((resp) => {\r\n          this.sendMessageShown = false\r\n          this.sendSuccess = true\r\n          this.subject = ''\r\n          this.content = ''\r\n          this.getMessages()\r\n          this.$store.state.selectedContact = []\r\n          this.$store.state.selectedVolunteers = []\r\n        })\r\n      },\r\n      removeMessage () {\r\n        this.sendSuccess = false\r\n        this.removeSuccess = true\r\n        this.getMessages()\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DistrictMessages.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DistrictMessages.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DistrictMessages.vue?vue&type=template&id=d489ffda\"\nimport script from \"./DistrictMessages.vue?vue&type=script&lang=js\"\nexport * from \"./DistrictMessages.vue?vue&type=script&lang=js\"\nimport style0 from \"./DistrictMessages.vue?vue&type=style&index=0&id=d489ffda&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"comp-useradmin-editor my-2\"},[(_vm.showProfileDeleteOrAnonymize)?_c('div',{staticClass:\"container\"},[_c('anonymizeUserProfile',{attrs:{\"title\":\"Delete or Anonymize the User Profile\",\"data\":_vm.profileUsageReportData,\"user-id\":_vm.userId},on:{\"cancel-delete-user\":_vm.cancelUserDeletion,\"delete-user\":_vm.deleteUser}})],1):_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('backbar')],1)]),(_vm.hasLoaded && (_vm.user && !_vm.user.isNonIdent))?_c('div',[_c('div',{staticClass:\"row admin-section\"},[_c('div',{staticClass:\"col col-9\"},[_c('div',{staticClass:\"user-title\"},[_c('span',{staticClass:\"user-name\"},[_vm._v(_vm._s(_vm.user.firstName)+\" \"),_c('span',{staticClass:\"last-name\"},[_vm._v(_vm._s(_vm.user.lastName))])])])]),_c('div',{staticClass:\"col col-3 text-right edit-user\"},[_c('spredittool',{attrs:{\"is-editing\":_vm.isUserEditing},on:{\"editing\":_vm.toggleUserEdit,\"revert\":_vm.revertUserEdit}})],1)]),(_vm.isUserEditing)?_c('div',{staticClass:\"row admin-section\"},[_c('div',{staticClass:\"col-12\"},[_c('usereditform',{attrs:{\"id\":_vm.userId,\"user\":_vm.user,\"original-section-id\":_vm.originalSectionId},on:{\"input\":_vm.updateUser}})],1),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row buttons\"},[_c('div',{staticClass:\"col-12 col-sm-7\"},[_c('sprbutton',{attrs:{\"type\":\"primary\",\"primary\":true,\"title\":_vm.$t('userAdmin.editSave'),\"size\":1,\"click-event\":\"save\"},on:{\"save\":_vm.saveUser}})],1),_c('div',{staticClass:\"col-12 col-sm-5 delete-user-button\"},[_c('deleteUser',{attrs:{\"id\":_vm.userId,\"user\":_vm.user},on:{\"initiate-delete-or-anonymize\":_vm.initiateDeleteOrAnonymize}})],1)])])]):_c('div',{staticClass:\"row admin-section\"},[_c('div',{staticClass:\"col-4 text-center\"},[_c('div',{staticClass:\"portrait\"},[_c('sprportrait',{staticClass:\"portrait-size\",style:(_vm.portraitStyle),attrs:{\"completion\":100}})],1)]),_c('div',{staticClass:\"col-8\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('profile.email')))]),_c('dd',[_vm._v(_vm._s(_vm.user.email))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.phoneNumber')))]),_c('dd',[_vm._v(_vm._s(_vm.user.phoneNumber))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.address')))]),_c('dd',[_vm._v(\" \"+_vm._s(_vm.user.streetAddress)+\", \"+_vm._s(_vm.user.zipCode)+\" \"+_vm._s(_vm.user.city)+\" \")]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.dateOfBirth')))]),_c('dd',[_vm._v(_vm._s(_vm.formattedBirthDate))])])])])]):_vm._e(),(_vm.hasLoaded && _vm.showRolesEditor)?_c('div',{staticClass:\"roles-section\"},[_c('div',{staticClass:\"row admin-section\"},[_c('div',{staticClass:\"col col-9\"},[_c('div',{staticClass:\"user-roles\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('profile.roles')))])])]),_c('div',{staticClass:\"col col-3 text-right edit-roles\"},[_c('spredittool',{attrs:{\"is-editing\":_vm.isRolesEditing},on:{\"editing\":_vm.toggleRolesEdit,\"revert\":_vm.revertRolesEdit}})],1)]),(_vm.isRolesEditing)?_c('div',{staticClass:\"row admin-section\"},[_c('div',{staticClass:\"col-12\"},[_c('roleseditor',{attrs:{\"id\":_vm.userId,\"roles\":_vm.roles},on:{\"input\":_vm.updateRoles}})],1),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row buttons\"},[_c('div',{staticClass:\"col-12\"},[_c('sprbutton',{staticClass:\"my-2 mx-1\",attrs:{\"type\":\"primary\",\"primary\":true,\"title\":_vm.$t('userAdmin.editSave'),\"size\":1,\"click-event\":\"save\"},on:{\"save\":_vm.saveRoles}})],1)])])]):_c('div',{staticClass:\"row admin-section\"},[_c('div',{staticClass:\"col-12 assigned-roles\"},[_vm._v(\" \"+_vm._s(_vm.formattedRoles)+\" \")])])]):_vm._e(),(_vm.hasLoaded && _vm.showPasswordEditor)?_c('div',{staticClass:\"password-section\"},[_c('div',{staticClass:\"row admin-section\"},[_c('div',{staticClass:\"col col-9\"},[_c('div',{staticClass:\"user-roles\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('adminUserEditor.password')))])])]),_c('div',{staticClass:\"col col-3 text-right edit-password\"},[_c('spredittool',{attrs:{\"is-editing\":_vm.isPasswordEditing},on:{\"editing\":_vm.togglePasswordEdit,\"revert\":_vm.revertPasswordEdit}})],1)]),(_vm.isPasswordEditing)?_c('div',{staticClass:\"row admin-section\"},[_c('div',{staticClass:\"col-12\"},[_c('passwordeditor',{attrs:{\"id\":_vm.userId,\"user\":_vm.user},on:{\"input\":_vm.updatePassword}})],1)]):_c('div',{staticClass:\"row admin-section\"},[_c('div',{staticClass:\"col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('profile.password')))]),_c('dd',[_vm._v(\"********\")]),_c('dt',[_vm._v(_vm._s(_vm.$t('adminUserEditor.loginName')))]),_c('dd',[_vm._v(_vm._s(_vm.user.email))])])])])]):_vm._e()]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hasLoaded),expression:\"!hasLoaded\"}],staticClass:\"col-12 text-center brand-red my-4\"},[_c('loading')],1),(_vm.user && _vm.user.isNonIdent)?_c('div',{staticClass:\"col-12 text-center my-4\"},[_c('p',[_vm._v(_vm._s(_vm.$t('adminUserEditor.nonIdentNoEdit')))]),_c('p',[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.back}},[_vm._v(_vm._s(_vm.$t('adminUserEditor.backLink')))])])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"col-12 anonymize-user-profile\"},[_c('div',{staticClass:\"row buttons-top\"},[_c('div',{staticClass:\"col-12\"},[_c('sprbutton',{staticClass:\"my-2 mx-1\",attrs:{\"type\":\"primary\",\"title\":_vm.$t('adminUserEditor.removeUser'),\"size\":1,\"click-event\":\"delete\"},on:{\"delete\":_vm.deleteUser}}),_c('sprbutton',{staticClass:\"my-2 mx-1\",attrs:{\"type\":\"primary\",\"title\":_vm.$t('userAdmin.editCancel'),\"size\":1,\"click-event\":\"cancel\"},on:{\"cancel\":_vm.cancelUserDeletion}})],1)]),_c('div',{staticClass:\"separator-line\"}),_c('div',{staticClass:\"profile-usage\"},[_c('profileUsage',{attrs:{\"title\":_vm.title,\"data\":_vm.data,\"user-id\":_vm.userId}})],1),_c('div',{staticClass:\"separator-line\"}),_c('div',{staticClass:\"row buttons-bottom\"},[_c('div',{staticClass:\"col-12\"},[_c('sprbutton',{staticClass:\"my-2 mx-1\",attrs:{\"type\":\"primary\",\"title\":_vm.$t('adminUserEditor.removeUser'),\"size\":1,\"click-event\":\"delete\"},on:{\"delete\":_vm.deleteUser}}),_c('sprbutton',{staticClass:\"my-2 mx-1\",attrs:{\"type\":\"primary\",\"title\":_vm.$t('userAdmin.editCancel'),\"size\":1,\"click-event\":\"cancel\"},on:{\"cancel\":_vm.cancelUserDeletion}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"col-12 user-profile-usage\"},[_c('div',{staticClass:\"title\"},[_c('h3',[_vm._v(_vm._s(_vm.title))])]),_c('div',{staticClass:\"grid-name profile-full-name\"},[_vm._v(\" \"+_vm._s(_vm.data.identity.firstName)+\" \"+_vm._s(_vm.data.identity.lastName)+\" \")]),_c('div',{staticClass:\"table can\"},[_c('table',{staticClass:\"table-header\"},[_vm._v(\" Can \"),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.can.canBeAnonymized}`},[_vm._v(\" CanBeAnonymized \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.can.canBeAnonymized}`},[_vm._v(\" \"+_vm._s(_vm.data.can.canBeAnonymized)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.can.canBeDeleted}`},[_vm._v(\" CanBeDeleted \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.can.canBeDeleted}`},[_vm._v(\" \"+_vm._s(_vm.data.can.canBeDeleted)+\" \")])])])]),_c('div',{staticClass:\"detail\"},[_c('div',{staticClass:\"header\"},[_vm._v(\" Identity (\"+_vm._s(_vm.data.identity.profileId)+\") \")]),_c('div',{staticClass:\"label\"},[_vm._v(\" Email \")]),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.data.identity.email)+\" \")]),_c('div',{staticClass:\"label\"},[_vm._v(\" Section \")]),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.data.identity.sectionName)+\" (\"+_vm._s(_vm.data.identity.sectionId)+\") \")]),_c('div',{staticClass:\"label\"},[_vm._v(\" Address \")]),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.data.identity.address.streetAddress)+\" \")]),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.data.identity.address.zipCode)+\" \"+_vm._s(_vm.data.identity.address.city)+\" \")]),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.data.identity.address.country)+\" \")]),(_vm.data.has.hasFriendVolunteerProfile)?_c('div',{staticClass:\"label\"},[_vm._v(\" FriendManagementProfile \")]):_vm._e(),(_vm.data.has.hasFriendVolunteerProfile)?_c('div',{staticClass:\"content\"},[_vm._v(\" friendVolunteerId: \"+_vm._s(_vm.data.identity.friendVolunteerId)+\" \")]):_vm._e(),(_vm.data.has.hasFriendVolunteerNetProfile)?_c('div',{staticClass:\"content\"},[_vm._v(\" friendVolunteerProfileNetId: \"+_vm._s(_vm.data.identity.friendVolunteerProfileNetId)+\" \")]):_vm._e(),(_vm.data.has.hasFriendVolunteerStandardProfile)?_c('div',{staticClass:\"content\"},[_vm._v(\" friendVolunteerProfileStandardId: \"+_vm._s(_vm.data.identity.friendVolunteerProfileStandardId)+\" \")]):_vm._e()]),_c('div',{staticClass:\"table has\"},[_c('table',{staticClass:\"table-header\"},[_vm._v(\" Has \"),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasBeenAnonymized}`},[_vm._v(\" hasBeenAnonymized \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasBeenAnonymized}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasBeenAnonymized)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasUserLogin}`},[_vm._v(\" hasUserLogin \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasUserLogin}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasUserLogin)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasUserRoles}`},[_vm._v(\" hasUserRoles \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasUserRoles}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasUserRoles)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasCreatedEvents}`},[_vm._v(\" hasCreatedEvents \")]),_c('td',{staticClass:\"value\",class:`value-${_vm.data.has.hasCreatedEvents}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasCreatedEvents)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasParticipatedInEvents}`},[_vm._v(\" hasParticipatedInEvents \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasParticipatedInEvents}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasParticipatedInEvents)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasLightProfiles}`},[_vm._v(\" hasLightProfiles \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasLightProfiles}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasLightProfiles)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasGroupMemberships}`},[_vm._v(\" hasGroupMemberships \")]),_c('td',{staticClass:\"value\",class:`value-${_vm.data.has.hasGroupMemberships}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasGroupMemberships)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasPendingGroupMemberships}`},[_vm._v(\" hasPendingGroupMemberships \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasPendingGroupMemberships}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasPendingGroupMemberships)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasMessages}`},[_vm._v(\" hasMessages \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasMessages}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasMessages)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasNotifications}`},[_vm._v(\" hasNotifications \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasNotifications}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasNotifications)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasFriendVolunteerProfile}`},[_vm._v(\" hasFriendVolunteerProfile \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasFriendVolunteerProfile}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasFriendVolunteerProfile)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasFriendVolunteerNetProfile}`},[_vm._v(\" hasFriendVolunteerNetProfile \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasFriendVolunteerNetProfile}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasFriendVolunteerNetProfile)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasFriendVolunteerStandardProfile}`},[_vm._v(\" hasFriendVolunteerStandardProfile \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasFriendVolunteerStandardProfile}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasFriendVolunteerStandardProfile)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasFriendVolunteerGroups}`},[_vm._v(\" hasFriendVolunteerGroups \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasFriendVolunteerGroups}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasFriendVolunteerGroups)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasFriendships}`},[_vm._v(\" hasFriendships *) \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasFriendships}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasFriendships)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasFriendshipsNet}`},[_vm._v(\" hasFriendshipsNet \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasFriendshipsNet}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasFriendshipsNet)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasFriendshipsStandard}`},[_vm._v(\" hasFriendshipsStandard \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasFriendshipsStandard}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasFriendshipsStandard)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasFriendPools}`},[_vm._v(\" hasFriendPools *) \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasFriendPools}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasFriendPools)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasFriendPoolsNet}`},[_vm._v(\" hasFriendPoolsNet \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasFriendPoolsNet}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasFriendPoolsNet)+\" \")])]),_c('tr',{staticClass:\"row\"},[_c('td',{staticClass:\"row-label\",class:`row-label-value-${_vm.data.has.hasFriendPoolsStandard}`},[_vm._v(\" hasFriendPoolsStandard \")]),_c('td',{staticClass:\"row-value\",class:`value-${_vm.data.has.hasFriendPoolsStandard}`},[_vm._v(\" \"+_vm._s(_vm.data.has.hasFriendPoolsStandard)+\" \")])]),_c('div',{staticClass:\"info\"},[_vm._v(\" *) Friend Management v1 \")])])]),_c('div',{staticClass:\"detail\"},[_c('div',{staticClass:\"header\"},[_vm._v(\" Memberships \")]),_c('div',{staticClass:\"label\"},[_vm._v(\" Roles \")]),_c('div',{staticClass:\"content\"},_vm._l((_vm.data.roles),function(role){return _c('li',{key:role.id},[_vm._v(\" \"+_vm._s(role)+\" \")])}),0),_c('div',{staticClass:\"label\"},[_vm._v(\" Groups \")]),_c('div',{staticClass:\"content\"},_vm._l((_vm.data.groups),function(group){return _c('li',{key:group.id},[_vm._v(\" \"+_vm._s(group)+\" \")])}),0),_c('div',{staticClass:\"label\"},[_vm._v(\" GroupsPending \")]),_c('div',{staticClass:\"content\"},_vm._l((_vm.data.groupsPending),function(groupPending){return _c('li',{key:groupPending.id},[_vm._v(\" \"+_vm._s(groupPending)+\" \")])}),0),_c('div',{staticClass:\"label\"},[_vm._v(\" FriendManagementGroups \")]),_c('div',{staticClass:\"content\"},_vm._l((_vm.data.friendManagementGroups),function(friendManagementGroup,index){return _c('li',{key:index},[_vm._v(\" \"+_vm._s(friendManagementGroup)+\" \")])}),0),_c('div',{staticClass:\"label\"},[_vm._v(\" FriendPools \")]),_c('div',{staticClass:\"content\"},_vm._l((_vm.data.friendPools),function(friendPool){return _c('li',{key:friendPool.id},[_vm._v(\" \"+_vm._s(friendPool)+\" \")])}),0)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"col-12 user-profile-usage\">\r\n    <div class=\"title\">\r\n      <h3>{{ title }}</h3>\r\n    </div>\r\n    <div class=\"grid-name profile-full-name\">\r\n      {{ data.identity.firstName }} {{ data.identity.lastName }}\r\n    </div>\r\n    <!-- Can -->\r\n    <div class=\"table can\">\r\n      <table class=\"table-header\">\r\n        Can\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.can.canBeAnonymized}`\">\r\n            CanBeAnonymized\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.can.canBeAnonymized}`\">\r\n            {{ data.can.canBeAnonymized }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.can.canBeDeleted}`\">\r\n            CanBeDeleted\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.can.canBeDeleted}`\">\r\n            {{ data.can.canBeDeleted }}\r\n          </td>\r\n        </tr>\r\n      </table>\r\n    </div>\r\n    <!-- Identity -->\r\n    <div class=\"detail\">\r\n      <div class=\"header\">\r\n        Identity ({{ data.identity.profileId }})\r\n      </div>\r\n      <div class=\"label\">\r\n        Email\r\n      </div>\r\n      <div class=\"content\">\r\n        {{ data.identity.email }}\r\n      </div>\r\n      <div class=\"label\">\r\n        Section\r\n      </div>\r\n      <div class=\"content\">\r\n        {{ data.identity.sectionName }} ({{ data.identity.sectionId }})\r\n      </div>\r\n      <div class=\"label\">\r\n        Address\r\n      </div>\r\n      <div class=\"content\">\r\n        {{ data.identity.address.streetAddress }}\r\n      </div>\r\n      <div class=\"content\">\r\n        {{ data.identity.address.zipCode }} {{ data.identity.address.city }}\r\n      </div>\r\n      <div class=\"content\">\r\n        {{ data.identity.address.country }}\r\n      </div>\r\n      <div v-if=\"data.has.hasFriendVolunteerProfile\" class=\"label\">\r\n        FriendManagementProfile\r\n      </div>\r\n      <div v-if=\"data.has.hasFriendVolunteerProfile\" class=\"content\">\r\n        friendVolunteerId: {{ data.identity.friendVolunteerId }}\r\n      </div>\r\n      <div v-if=\"data.has.hasFriendVolunteerNetProfile\" class=\"content\">\r\n        friendVolunteerProfileNetId: {{ data.identity.friendVolunteerProfileNetId }}\r\n      </div>\r\n      <div v-if=\"data.has.hasFriendVolunteerStandardProfile\" class=\"content\">\r\n        friendVolunteerProfileStandardId: {{ data.identity.friendVolunteerProfileStandardId }}\r\n      </div>\r\n    </div>\r\n    <!-- Has -->\r\n    <div class=\"table has\">\r\n      <table class=\"table-header\">\r\n        Has\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasBeenAnonymized}`\">\r\n            hasBeenAnonymized\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasBeenAnonymized}`\">\r\n            {{ data.has.hasBeenAnonymized }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasUserLogin}`\">\r\n            hasUserLogin\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasUserLogin}`\">\r\n            {{ data.has.hasUserLogin }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasUserRoles}`\">\r\n            hasUserRoles\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasUserRoles}`\">\r\n            {{ data.has.hasUserRoles }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasCreatedEvents}`\">\r\n            hasCreatedEvents\r\n          </td>\r\n          <td class=\"value\" :class=\"`value-${data.has.hasCreatedEvents}`\">\r\n            {{ data.has.hasCreatedEvents }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasParticipatedInEvents}`\">\r\n            hasParticipatedInEvents\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasParticipatedInEvents}`\">\r\n            {{ data.has.hasParticipatedInEvents }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasLightProfiles}`\">\r\n            hasLightProfiles\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasLightProfiles}`\">\r\n            {{ data.has.hasLightProfiles }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasGroupMemberships}`\">\r\n            hasGroupMemberships\r\n          </td>\r\n          <td class=\"value\" :class=\"`value-${data.has.hasGroupMemberships}`\">\r\n            {{ data.has.hasGroupMemberships }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasPendingGroupMemberships}`\">\r\n            hasPendingGroupMemberships\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasPendingGroupMemberships}`\">\r\n            {{ data.has.hasPendingGroupMemberships }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasMessages}`\">\r\n            hasMessages\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasMessages}`\">\r\n            {{ data.has.hasMessages }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasNotifications}`\">\r\n            hasNotifications\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasNotifications}`\">\r\n            {{ data.has.hasNotifications }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasFriendVolunteerProfile}`\">\r\n            hasFriendVolunteerProfile\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasFriendVolunteerProfile}`\">\r\n            {{ data.has.hasFriendVolunteerProfile }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasFriendVolunteerNetProfile}`\">\r\n            hasFriendVolunteerNetProfile\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasFriendVolunteerNetProfile}`\">\r\n            {{ data.has.hasFriendVolunteerNetProfile }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasFriendVolunteerStandardProfile}`\">\r\n            hasFriendVolunteerStandardProfile\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasFriendVolunteerStandardProfile}`\">\r\n            {{ data.has.hasFriendVolunteerStandardProfile }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasFriendVolunteerGroups}`\">\r\n            hasFriendVolunteerGroups\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasFriendVolunteerGroups}`\">\r\n            {{ data.has.hasFriendVolunteerGroups }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasFriendships}`\">\r\n            hasFriendships *)\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasFriendships}`\">\r\n            {{ data.has.hasFriendships }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasFriendshipsNet}`\">\r\n            hasFriendshipsNet\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasFriendshipsNet}`\">\r\n            {{ data.has.hasFriendshipsNet }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasFriendshipsStandard}`\">\r\n            hasFriendshipsStandard\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasFriendshipsStandard}`\">\r\n            {{ data.has.hasFriendshipsStandard }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasFriendPools}`\">\r\n            hasFriendPools *)\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasFriendPools}`\">\r\n            {{ data.has.hasFriendPools }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasFriendPoolsNet}`\">\r\n            hasFriendPoolsNet\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasFriendPoolsNet}`\">\r\n            {{ data.has.hasFriendPoolsNet }}\r\n          </td>\r\n        </tr>\r\n        <tr class=\"row\">\r\n          <td class=\"row-label\" :class=\"`row-label-value-${data.has.hasFriendPoolsStandard}`\">\r\n            hasFriendPoolsStandard\r\n          </td>\r\n          <td class=\"row-value\" :class=\"`value-${data.has.hasFriendPoolsStandard}`\">\r\n            {{ data.has.hasFriendPoolsStandard }}\r\n          </td>\r\n        </tr>\r\n        <div class=\"info\">\r\n          *) Friend Management v1\r\n        </div>\r\n      </table>\r\n    </div>\r\n    <!-- Lists -->\r\n    <div class=\"detail\">\r\n      <div class=\"header\">\r\n        Memberships\r\n      </div>\r\n      <div class=\"label\">\r\n        Roles\r\n      </div>\r\n      <div class=\"content\">\r\n        <li v-for=\"role in data.roles\" :key=\"role.id\">\r\n          {{ role }}\r\n        </li>\r\n      </div>\r\n      <div class=\"label\">\r\n        Groups\r\n      </div>\r\n      <div class=\"content\">\r\n        <li v-for=\"group in data.groups\" :key=\"group.id\">\r\n          {{ group }}\r\n        </li>\r\n      </div>\r\n      <div class=\"label\">\r\n        GroupsPending\r\n      </div>\r\n      <div class=\"content\">\r\n        <li v-for=\"groupPending in data.groupsPending\" :key=\"groupPending.id\">\r\n          {{ groupPending }}\r\n        </li>\r\n      </div>\r\n      <div class=\"label\">\r\n        FriendManagementGroups\r\n      </div>\r\n      <div class=\"content\">\r\n        <li v-for=\"(friendManagementGroup, index) in data.friendManagementGroups\" :key=\"index\">\r\n          {{ friendManagementGroup }}\r\n        </li>\r\n      </div>\r\n      <div class=\"label\">\r\n        FriendPools\r\n      </div>\r\n      <div class=\"content\">\r\n        <li v-for=\"friendPool in data.friendPools\" :key=\"friendPool.id\">\r\n          {{ friendPool }}\r\n        </li>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n\r\n  export default {\r\n    name: 'UserProfileUsageReport',\r\n    components: {},\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        required: true\r\n      },\r\n      data: {\r\n        type: Object,\r\n        required: true\r\n      },\r\n      userId: {\r\n        type: String,\r\n        required: true\r\n      }\r\n    },\r\n    methods: {\r\n      getBooleanClass (value) {\r\n        if (this.data.value === true) {\r\n          return 'active faCheck fa-checkbox-marked'\r\n        }\r\n        return 'not-active fa-checkbox-unmarked'\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n  .user-profile-usage {\r\n    .grid-name {\r\n      grid-column: 2;\r\n      -ms-grid-column: 2;\r\n      line-height: 60px;\r\n\r\n      font-size: 20px;\r\n      letter-spacing: 1.5px;\r\n      font-weight: 700;\r\n      color: $brand-red;\r\n      text-transform: uppercase;\r\n      font-family: \"Signa-Light\", Sans-Serif;\r\n\r\n      overflow: hidden;\r\n      white-space: nowrap;\r\n      text-overflow: ellipsis;\r\n      max-width: 100%;\r\n    }\r\n\r\n    .table {\r\n      padding: 0rem;\r\n\r\n      .info {\r\n        font-size: 12px;\r\n        color: grey;\r\n        padding: 10px 15px 0px ;\r\n      }\r\n\r\n      td, tr {\r\n      padding: 0rem;\r\n      }\r\n\r\n      .row {\r\n        margin: 0 5px 0 5px;\r\n        padding: 0rem;\r\n\r\n        .row-label {\r\n          font-size: 16px;\r\n          //margin: 5px 0 5px 5px;\r\n          color: black;\r\n          min-width: 350px;\r\n        }\r\n\r\n        .row-label-value-true {\r\n          color: green;\r\n          font-weight: bold;\r\n        }\r\n\r\n        .row-label-value-false {\r\n          color: grey;\r\n        }\r\n\r\n        .value-true {\r\n          color: green;\r\n          font-weight: bold;\r\n        }\r\n\r\n        .value-false {\r\n          color: grey;\r\n        }\r\n      }\r\n\r\n      .table-header {\r\n        font-size: 20px;\r\n        font-weight: bold;\r\n        letter-spacing: 1.5px;\r\n        margin: 10px 0 10px 0;\r\n        color:$brand-red;\r\n      }\r\n\r\n    }\r\n\r\n    .detail {\r\n      margin: 10px 0 10px 0;\r\n\r\n      .content {\r\n        margin: 0 20px 0 20px;\r\n\r\n        .value-true {\r\n          color: green;\r\n          font-weight: bold;\r\n        }\r\n\r\n        .value-false {\r\n          color: grey;\r\n        }\r\n      }\r\n\r\n      .header {\r\n        font-size: 20px;\r\n        font-weight: bold;\r\n        letter-spacing: 1.5px;\r\n        margin: 10px 0 10px 0;\r\n        color:$brand-red;\r\n      }\r\n\r\n      .label {\r\n        margin: 10px 0 10px 10px;\r\n        color:$brand-red;\r\n      }\r\n    }\r\n\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserProfileUsageReport.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserProfileUsageReport.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UserProfileUsageReport.vue?vue&type=template&id=1d0d790d\"\nimport script from \"./UserProfileUsageReport.vue?vue&type=script&lang=js\"\nexport * from \"./UserProfileUsageReport.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserProfileUsageReport.vue?vue&type=style&index=0&id=1d0d790d&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"col-12 anonymize-user-profile\">\r\n    <!-- roles save/cancel buttons -->\r\n    <div class=\"row buttons-top\">\r\n      <div class=\"col-12\">\r\n        <sprbutton type=\"primary\" :title=\"$t('adminUserEditor.removeUser')\"\r\n                   class=\"my-2 mx-1\" :size=\"1\" click-event=\"delete\" @delete=\"deleteUser\"\r\n        />\r\n        <sprbutton type=\"primary\" :title=\"$t('userAdmin.editCancel')\"\r\n                   class=\"my-2 mx-1\" :size=\"1\" click-event=\"cancel\" @cancel=\"cancelUserDeletion\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <!-- Separator line -->\r\n    <div class=\"separator-line\" />\r\n    <!-- Profile Usage Report -->\r\n    <div class=\"profile-usage\">\r\n      <profileUsage\r\n        :title=\"title\"\r\n        :data=\"data\"\r\n        :user-id=\"userId\"\r\n      />\r\n    </div>\r\n    <!-- Separator line -->\r\n    <div class=\"separator-line\" />\r\n    <!-- roles save/cancel buttons -->\r\n    <div class=\"row buttons-bottom\">\r\n      <div class=\"col-12\">\r\n        <sprbutton type=\"primary\" :title=\"$t('adminUserEditor.removeUser')\"\r\n                   class=\"my-2 mx-1\" :size=\"1\" click-event=\"delete\" @delete=\"deleteUser\"\r\n        />\r\n        <sprbutton type=\"primary\" :title=\"$t('userAdmin.editCancel')\"\r\n                   class=\"my-2 mx-1\" :size=\"1\" click-event=\"cancel\" @cancel=\"cancelUserDeletion\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import profileUsage from './UserProfileUsageReport.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n\r\n  export default {\r\n    name: 'AnonymizeUserProfile',\r\n    components: { profileUsage, sprbutton },\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: 'Delete or Anonymize the User Profile'\r\n      },\r\n      data: {\r\n        type: Object,\r\n        default: () => { return {} }\r\n      },\r\n      userId: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    methods: {\r\n      cancelUserDeletion: function () {\r\n        this.$emit('cancel-delete-user')\r\n      },\r\n      deleteUser: function () {\r\n        this.$emit('delete-user')\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n  .anonymize-user-profile {\r\n      .buttons-top {\r\n        margin-bottom: 20px;\r\n      }\r\n\r\n      .buttons-bottom {\r\n        margin-top: 40px;\r\n      }\r\n\r\n      .separator-line {\r\n        margin-bottom: 20px;\r\n        border-top: 1px solid red;\r\n      }\r\n\r\n      .title {\r\n        font-family: \"Signa-Light\", Sans-Serif;\r\n      }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AnonymizeUserProfile.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AnonymizeUserProfile.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AnonymizeUserProfile.vue?vue&type=template&id=7aef06f3\"\nimport script from \"./AnonymizeUserProfile.vue?vue&type=script&lang=js\"\nexport * from \"./AnonymizeUserProfile.vue?vue&type=script&lang=js\"\nimport style0 from \"./AnonymizeUserProfile.vue?vue&type=style&index=0&id=7aef06f3&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row comp-useradmin-delete-or-anomize\"},[_c('div',{staticClass:\"col-12 cl-md-6\"},[_c('sprbutton',{attrs:{\"type\":\"primary\",\"title\":_vm.$t('adminUserEditor.removeUser'),\"size\":1,\"click-event\":\"deleteOrAnomize\"},on:{\"deleteOrAnomize\":_vm.initiateDeleteOrAnonymize}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row comp-useradmin-delete-or-anomize\">\r\n    <div class=\"col-12 cl-md-6\">\r\n      <sprbutton type=\"primary\"\r\n                 :title=\"$t('adminUserEditor.removeUser')\"\r\n                 :size=\"1\"\r\n                 click-event=\"deleteOrAnomize\"\r\n                 @deleteOrAnomize=\"initiateDeleteOrAnonymize\"\r\n      />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n\r\n  export default {\r\n    name: 'DeleteUser',\r\n    components: { sprbutton },\r\n    methods: {\r\n      initiateDeleteOrAnonymize: function () {\r\n        this.$emit('initiate-delete-or-anonymize')\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteUser.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteUser.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DeleteUser.vue?vue&type=template&id=60413592\"\nimport script from \"./DeleteUser.vue?vue&type=script&lang=js\"\nexport * from \"./DeleteUser.vue?vue&type=script&lang=js\"\nimport style0 from \"./DeleteUser.vue?vue&type=style&index=0&id=60413592&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"spr-edit-tool\"},[(!_vm.localIsEditing)?_c('sprbutton',{attrs:{\"click-event\":\"edit\",\"title\":_vm.$t('userAdmin.editUser'),\"primary\":true,\"size\":5,\"aria-label\":_vm.$t('userAdmin.editUser'),\"preicon\":\"pencil-alt\"},on:{\"edit\":_vm.toggleEdit}}):_c('sprbutton',{attrs:{\"click-event\":\"revert\",\"title\":_vm.$t('userAdmin.editCancel'),\"primary\":false,\"size\":5,\"aria-label\":_vm.$t('userAdmin.editCancel'),\"preicon\":\"times\"},on:{\"revert\":_vm.revertChanges}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"spr-edit-tool\">\r\n    <sprbutton\r\n      v-if=\"!localIsEditing\"\r\n      click-event=\"edit\"\r\n      :title=\"$t('userAdmin.editUser')\"\r\n      :primary=\"true\"\r\n      :size=\"5\"\r\n      :aria-label=\"$t('userAdmin.editUser')\"\r\n      preicon=\"pencil-alt\"\r\n      @edit=\"toggleEdit\"\r\n    />\r\n    <sprbutton\r\n      v-else\r\n      click-event=\"revert\"\r\n      :title=\"$t('userAdmin.editCancel')\"\r\n      :primary=\"false\"\r\n      :size=\"5\"\r\n      :aria-label=\"$t('userAdmin.editCancel')\"\r\n      preicon=\"times\"\r\n      @revert=\"revertChanges\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import sprbutton from './SPRButton.vue'\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n      localIsEditing: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'SPREditTool',\r\n    components: {\r\n      sprbutton\r\n    },\r\n    props: {\r\n      isEditing: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        localIsEditing: false\r\n      }\r\n    },\r\n    watch: {\r\n      isEditing (newVal: boolean) {\r\n        this.localIsEditing = newVal\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.localIsEditing = this.isEditing\r\n    },\r\n    methods: {\r\n      toggleEdit (): void {\r\n        this.localIsEditing = !this.localIsEditing\r\n        this.$emit('editing', this.localIsEditing)\r\n      },\r\n      revertChanges (): void {\r\n        this.localIsEditing = false\r\n        this.$emit('revert')\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n    .spr-edit-tool {\r\n        display: inline-block;\r\n        button {\r\n          border-color: $brand-red;\r\n          outline: none;\r\n        }\r\n    }\r\n</style>","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPREditTool.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPREditTool.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPREditTool.vue?vue&type=template&id=c01a2742\"\nimport script from \"./SPREditTool.vue?vue&type=script&lang=ts\"\nexport * from \"./SPREditTool.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPREditTool.vue?vue&type=style&index=0&id=c01a2742&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row comp-useradmin-role-editor my-2\"},[_c('div',{staticClass:\"col-12\"},[_c('sprmulti',{staticClass:\"select-style\",attrs:{\"value\":_vm.editedRoles,\"title\":_vm.$t('roles.rolesDropdown'),\"items\":_vm.possibleRoles,\"placeholder\":_vm.$t('roles.addRole'),\"has-errors\":false},on:{\"input\":_vm.mutate}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"spr-multiselect\"},[_c('sprdropdown',{attrs:{\"value\":_vm.selectedItem,\"title\":_vm.title,\"items\":_vm.filteredItems,\"placeholder\":_vm.placeholder,\"is-valid\":true,\"disabled\":_vm.filteredItems.length == 0},on:{\"input\":_vm.onSelect}}),_c('div',{staticClass:\"selecteditems mt-3\"},[_c('ul',{staticClass:\"list-inline\"},_vm._l((_vm.selectedItems),function(item){return _c('li',{key:item.value,staticClass:\"list-inline-item\",attrs:{\"value\":item.value}},[_c('span',{staticClass:\"pill\",class:{'disabled': item.disabled}},[_c('span',{staticClass:\"lbl\"},[_vm._v(_vm._s(item.text))]),(!item.disabled)?_c('font-awesome-icon',{attrs:{\"icon\":\"times\"},on:{\"click\":function($event){return _vm.removeItem(item)}}}):_vm._e()],1)])}),0)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .spr-multiselect {\r\n    .selecteditems {\r\n      margin-top:-25px;\r\n\r\n      .pill {\r\n        background-color:$brand-white;\r\n        border: solid 2px $brand-red;\r\n        padding:5px 10px;\r\n        border-radius:20px;\r\n        position: relative;\r\n        display: inline-block;\r\n        color:$brand-red;\r\n        margin-top: 5px;\r\n        font-family: $font-light;\r\n        font-weight: bold;\r\n        font-size:12px;\r\n\r\n        .lbl {\r\n          margin-right:10px;\r\n        }\r\n\r\n        svg {\r\n          top:14px;\r\n          right:8px;\r\n          display:inline-block;\r\n          position: absolute;\r\n          margin-top:-10px;\r\n          color:$brand-red;\r\n          cursor:pointer;\r\n        }\r\n        &.disabled {\r\n          color:$brand-grey3;\r\n          border: solid 2px $brand-grey3;\r\n          .lbl {\r\n            margin-right: 0;\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n</style>\r\n\r\n<template>\r\n  <div class=\"spr-multiselect\">\r\n    <sprdropdown :value=\"selectedItem\"\r\n                 :title=\"title\"\r\n                 :items=\"filteredItems\"\r\n                 :placeholder=\"placeholder\"\r\n                 :is-valid=\"true\"\r\n                 :disabled=\"filteredItems.length == 0\"\r\n                 @input=\"onSelect\"\r\n    />\r\n    <div class=\"selecteditems mt-3\">\r\n      <ul class=\"list-inline\">\r\n        <li v-for=\"item in selectedItems\" :key=\"item.value\" class=\"list-inline-item\" :value=\"item.value\">\r\n          <span class=\"pill\" :class=\"{'disabled': item.disabled}\">\r\n            <span class=\"lbl\">{{ item.text }}</span>\r\n            <font-awesome-icon v-if=\"!item.disabled\" icon=\"times\" @click=\"removeItem(item)\" />\r\n          </span>\r\n        </li>\r\n      </ul>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprdropdown from './SPRSimpleDropdown.vue'\r\n  export default {\r\n    name: 'Sprmultiselect',\r\n    components: { sprdropdown },\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      value: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      items: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      placeholder: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        selectedItem: null,\r\n        selectedItems: []\r\n      }\r\n    },\r\n    computed: {\r\n      // only display items that have not already been selected\r\n      filteredItems: function () {\r\n        const self = this\r\n        return _.filter(this.items, function (item) {\r\n          return !_.includes(self.value, item.value) && !item.disabled\r\n        })\r\n      }\r\n    },\r\n    watch: {\r\n      value: function (val) {\r\n        var arr = []\r\n        this.value.forEach(item => {\r\n          var res = _.find(this.items, function (x) {\r\n            return x.value === item\r\n          })\r\n          if (res) {\r\n            arr.push(res)\r\n          }\r\n        })\r\n        this.selectedItems = arr\r\n      }\r\n    },\r\n    methods: {\r\n      removeItem (item) {\r\n        var index = (_.indexOf(this.selectedItems, item))\r\n        this.$delete(this.selectedItems, index)\r\n        this.$emit('input', this.selectedItems)\r\n        this.selectedItem = null // reset to default\r\n      },\r\n      onSelect (item) {\r\n        if (!item) return // stop looping when reset\r\n        var found = (_.find(this.selectedItems, function (o) {\r\n          return o.value === item\r\n        }))\r\n        if (found === undefined) {\r\n          // find the item from the list of items\r\n          var chosenItem = _.find(this.items, function (i) {\r\n            return i.value === item\r\n          })\r\n          this.$set(this.selectedItems, this.selectedItems.length, chosenItem)\r\n          this.$emit('input', this.selectedItems)\r\n        }\r\n        this.selectedItem = null // reset to default\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRMultiSelect.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRMultiSelect.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRMultiSelect.vue?vue&type=template&id=4bf95f18\"\nimport script from \"./SPRMultiSelect.vue?vue&type=script&lang=js\"\nexport * from \"./SPRMultiSelect.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRMultiSelect.vue?vue&type=style&index=0&id=4bf95f18&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"row comp-useradmin-role-editor my-2\">\r\n    <div class=\"col-12\">\r\n      <sprmulti :value=\"editedRoles\"\r\n                :title=\"$t('roles.rolesDropdown')\"\r\n                :items=\"possibleRoles\"\r\n                :placeholder=\"$t('roles.addRole')\"\r\n                class=\"select-style\"\r\n                :has-errors=\"false\"\r\n                @input=\"mutate\"\r\n      />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprmulti from '../SPRMultiSelect.vue'\r\n\r\n  export default {\r\n    name: 'UserRoleEditor',\r\n    components: { sprmulti },\r\n    props: {\r\n      roles: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data: function () {\r\n      return {\r\n        editedRoles: []\r\n      }\r\n    },\r\n    computed: {\r\n      postValue: function () {\r\n        const self = this\r\n\r\n        // user cannot revoke roles they are not allowed to revoke. So there may be some roles they cannot see in the pills\r\n        // we have to make sure that these roles remain in the array for updating\r\n        // add new roles to the existing roles\r\n        const mutatedRoles = _.union(this.roles, this.editedRoles)\r\n\r\n        // remove any roles that the user is allowed to remove, and are removed in editedRoles\r\n        _.remove(mutatedRoles, function (role) {\r\n          const possibleToDeleteRole = _.find(self.possibleRoles, function (r) {\r\n            if (r === '') return false\r\n\r\n            return r.value === role\r\n          })\r\n\r\n          const editedRole = self.editedRoles[_.indexOf(self.editedRoles, role)]\r\n\r\n          return _.isUndefined(editedRole) && possibleToDeleteRole\r\n        })\r\n\r\n        return {\r\n          userId: this.id,\r\n          roles: mutatedRoles\r\n        }\r\n      },\r\n      possibleRoles: function () {\r\n        var rv = []\r\n\r\n        rv.push({ value: 'Admin', text: this.$t('roles.admin'), disabled: !this.hasRole('Admin') })\r\n        rv.push({ value: 'NationalAdmin', text: this.$t('roles.nationalAdmin'), disabled: !this.hasRole('Admin') })\r\n        //rv.push({ value: 'NationalEmployee', text: this.$t('roles.nationalEmployee'), disabled: !this.hasRole('Admin') })\r\n        rv.push({ value: 'NationalEmployee', text: this.$t('roles.nationalEmployee'), disabled: !this.hasRole('Admin') && !this.hasRole('NationalAdmin') })\r\n        rv.push({ value: 'DistrictAdmin', text: this.$t('roles.districtAdmin'), disabled: !this.hasRole('Admin') })\r\n        rv.push({ value: 'Employee', text: this.$t('roles.employee'), disabled: !this.hasRole('Admin') && !this.hasRole('DistrictAdmin') && !this.hasRole('NationalAdmin') && !this.hasRole('NationalEmployee') })\r\n        rv.push({ value: 'J1', text: this.$t('roles.j1'), disabled: !this.hasRole('Admin') && !this.hasRole('Employee') && !this.hasRole('DistrictAdmin') && !this.hasRole('NationalAdmin') && !this.hasRole('NationalEmployee') })\r\n        rv.push({ value: 'J2', text: this.$t('roles.j2'), disabled: !this.hasRole('Admin') && !this.hasRole('Employee') && !this.hasRole('J1') && !this.hasRole('DistrictAdmin') && !this.hasRole('NationalAdmin') && !this.hasRole('NationalEmployee') })\r\n        rv.push({ value: 'FriendshipAdmin', text: this.$t('roles.friendshipAdmin'), disabled: !this.hasRole('Admin') })\r\n        rv.push({ value: 'DistrictFriendshipAdmin', text: this.$t('roles.districtFriendshipAdmin'), disabled: !this.hasRole('Admin') })\r\n        rv.push({ value: 'FriendshipGroupManager', text: this.$t('roles.friendshipGroupManager'), disabled: !this.hasRole('Admin') && !this.hasRole('FriendshipAdmin') && !this.hasRole('DistrictFriendshipAdmin') })\r\n        rv.push({ value: 'FriendshipTrainer', text: this.$t('roles.friendshipTrainer'), disabled: !this.hasRole('Admin') && !this.hasRole('FriendshipAdmin') })\r\n        rv.push({ value: 'FriendshipBroker', text: this.$t('roles.friendshipBroker'), disabled: !this.hasRole('Admin') && !this.hasRole('FriendshipGroupManager') && !this.hasRole('FriendshipAdmin') && !this.hasRole('DistrictFriendshipAdmin') })\r\n        rv.push({ value: 'NetFriendshipBroker', text: this.$t('roles.netFriendshipBroker'), disabled: !this.hasRole('Admin') && !this.hasRole('FriendshipAdmin') })\r\n\r\n        return rv\r\n      }\r\n    },\r\n    mounted: function () {\r\n      this.editedRoles = this.roles\r\n    },\r\n    methods: {\r\n      mutate: function (value) {\r\n        this.editedRoles = _.map(value, function (v) { return v.value })\r\n        this.editedRoles = _.filter(this.editedRoles, function (v) { return v !== '' })\r\n        this.$emit('input', this.editedRoles)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n  .comp-useradmin-role-editor {\r\n    .select-style {\r\n      width: 100%;\r\n\r\n      .spr-simple-dropdown {\r\n        max-width: 300px;\r\n      }\r\n\r\n      .spr-roundbox-1 { border: none !important; }\r\n      select { border: 2px solid $brand-grey3 !important; }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserRoleEditor.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserRoleEditor.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UserRoleEditor.vue?vue&type=template&id=762d3d5c\"\nimport script from \"./UserRoleEditor.vue?vue&type=script&lang=js\"\nexport * from \"./UserRoleEditor.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserRoleEditor.vue?vue&type=style&index=0&id=762d3d5c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row comp-useradmin-role-editor my-2\"},[_c('label',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('profile.headerState')))]),_c('br'),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12\"},[_c('div',{staticClass:\"profile-state\"},[_c('SPRRadioList',{attrs:{\"value\":_vm.editedUser.profileState,\"options\":_vm.profileStatusOptions},on:{\"input\":_vm.updateProfileState}})],1)])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('adminUserEditor.firstName'),\"name\":\"firstName\",\"is-valid\":!_vm.errors.has('firstName')},on:{\"input\":_vm.saveChanges},model:{value:(_vm.editedUser.firstName),callback:function ($$v) {_vm.$set(_vm.editedUser, \"firstName\", $$v)},expression:\"editedUser.firstName\"}})],1),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('adminUserEditor.lastName'),\"name\":\"lastName\",\"is-valid\":!_vm.errors.has('lastName')},on:{\"input\":_vm.saveChanges},model:{value:(_vm.editedUser.lastName),callback:function ($$v) {_vm.$set(_vm.editedUser, \"lastName\", $$v)},expression:\"editedUser.lastName\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('adminUserEditor.streetAddress'),\"is-valid\":true},on:{\"input\":_vm.saveChanges},model:{value:(_vm.editedUser.streetAddress),callback:function ($$v) {_vm.$set(_vm.editedUser, \"streetAddress\", $$v)},expression:\"editedUser.streetAddress\"}})],1),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('adminUserEditor.zipCode'),\"is-valid\":true},on:{\"input\":_vm.saveChanges},model:{value:(_vm.editedUser.zipCode),callback:function ($$v) {_vm.$set(_vm.editedUser, \"zipCode\", $$v)},expression:\"editedUser.zipCode\"}})],1),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('adminUserEditor.city'),\"is-valid\":true},on:{\"input\":_vm.saveChanges},model:{value:(_vm.editedUser.city),callback:function ($$v) {_vm.$set(_vm.editedUser, \"city\", $$v)},expression:\"editedUser.city\"}})],1),_c('div',{staticClass:\"col-12 col-md-6 lang-drop\"},[_c('dropinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"title\":_vm.$t('adminUserEditor.native'),\"items\":_vm.userLanguages,\"name\":\"nativelanguage\",\"is-valid\":!_vm.errors.has('nativelanguage'),\"required\":true},on:{\"input\":_vm.saveChanges},model:{value:(_vm.editedUser.nativeLanguage),callback:function ($$v) {_vm.$set(_vm.editedUser, \"nativeLanguage\", $$v)},expression:\"editedUser.nativeLanguage\"}})],1),_c('div',{staticClass:\"col-12 col-md-6 date-pick\"},[_c('datepicker',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.birthdateValidation),expression:\"birthdateValidation\"}],key:_vm.componentKey,attrs:{\"value\":_vm.formattedAge,\"title\":_vm.$t('adminUserEditor.birthDate'),\"placeholder\":_vm.$t('adminUserEditor.chooseDate'),\"has-error\":_vm.errors.has('adminUserEditor.birthDate'),\"name\":\"adminUserEditor.birthDate\",\"initial\":_vm.userAge,\"required\":true,\"options\":_vm.datepickerOptions},on:{\"input\":_vm.onAgeChanged}})],1),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"subheader\",staticStyle:{\"padding\":\"left 15px\"}},[_vm._v(_vm._s(_vm.$t('profile.languageEditorHeader')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 multi-options\"},[_c('simplecheckboxlist',{attrs:{\"list\":_vm.checkboxLanguages(_vm.editedUser.spokenLanguages, _vm.$store.state.friendCustomerLanguages),\"rows\":3},on:{\"input\":_vm.updateSpokenLanguages},model:{value:(_vm.editedUser.spokenLanguages),callback:function ($$v) {_vm.$set(_vm.editedUser, \"spokenLanguages\", $$v)},expression:\"editedUser.spokenLanguages\"}})],1)]),_c('div',{staticClass:\"col-12 col-md-6\"},[(_vm.canChangeSection)?_c('div',{staticClass:\"admin-working-zip\",attrs:{\"id\":\"zipParent\"}},[_c('label',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('adminUserEditor.workingZipCode')))]),_c('sprautocomplete',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"options\":_vm.adminSectionZips,\"option-label\":\"value\",\"placeholder\":\"\",\"required\":true,\"name\":\"zipCodeField\",\"is-valid\":!_vm.errors.has('zipCodeField'),\"max-results\":200,\"show-arrow\":false,\"show-default-options\":false},on:{\"input\":_vm.saveChanges},model:{value:(_vm.adminSectionZip),callback:function ($$v) {_vm.adminSectionZip=$$v},expression:\"adminSectionZip\"}}),(_vm.showSectionChangeWarning)?_c('div',{staticClass:\"section-change-warning\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(_vm._s(_vm.$t('adminUserEditor.changeSectionWarning'))+\" \")],1):_vm._e()],1):_c('dropinput',{attrs:{\"title\":_vm.$t('adminUserEditor.workingZipCode'),\"items\":_vm.sectionZips,\"is-valid\":true,\"required\":true},on:{\"input\":_vm.saveChanges},model:{value:(_vm.editedUser.workingZipCode),callback:function ($$v) {_vm.$set(_vm.editedUser, \"workingZipCode\", $$v)},expression:\"editedUser.workingZipCode\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('adminUserEditor.volunteerOnline'),\"aria-label\":_vm.$t('adminUserEditor.volunteerOnline')},on:{\"input\":_vm.saveChanges},model:{value:(_vm.editedUser.volunteerOnline),callback:function ($$v) {_vm.$set(_vm.editedUser, \"volunteerOnline\", $$v)},expression:\"editedUser.volunteerOnline\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('adminUserEditor.phone'),\"is-valid\":true},on:{\"input\":_vm.saveChanges},model:{value:(_vm.editedUser.phoneNumber),callback:function ($$v) {_vm.$set(_vm.editedUser, \"phoneNumber\", $$v)},expression:\"editedUser.phoneNumber\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-6\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('adminUserEditor.motto')},on:{\"input\":_vm.saveChanges},model:{value:(_vm.editedUser.motto),callback:function ($$v) {_vm.$set(_vm.editedUser, \"motto\", $$v)},expression:\"editedUser.motto\"}})],1),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('adminUserEditor.story')},on:{\"input\":_vm.saveChanges},model:{value:(_vm.editedUser.story),callback:function ($$v) {_vm.$set(_vm.editedUser, \"story\", $$v)},expression:\"editedUser.story\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-left\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('wizard.preferredContactMethod')))])]),_c('div',{staticClass:\"col-12 multi-options\"},[_c('checkboxlist',{attrs:{\"list\":_vm.preferredContactMethodOptions,\"rows\":1},model:{value:(_vm.editedUser.preferredContactMethods),callback:function ($$v) {_vm.$set(_vm.editedUser, \"preferredContactMethods\", $$v)},expression:\"editedUser.preferredContactMethods\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-left\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('wizard.alreadyInvolved')))])]),_c('div',{staticClass:\"col-12 multi-options\"},[_c('checkboxlist',{attrs:{\"list\":_vm.involvedEventCategoriesOptions,\"rows\":3},model:{value:(_vm.editedUser.involvedEventCategories),callback:function ($$v) {_vm.$set(_vm.editedUser, \"involvedEventCategories\", $$v)},expression:\"editedUser.involvedEventCategories\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-left\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('volunteerForm.interests')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 multi-options\"},[_c('simplecheckboxlist',{attrs:{\"list\":_vm.areasOfInterest,\"rows\":3},on:{\"input\":_vm.updateProfileInterests},model:{value:(_vm.editedUser.areasOfInterest),callback:function ($$v) {_vm.$set(_vm.editedUser, \"areasOfInterest\", $$v)},expression:\"editedUser.areasOfInterest\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-left\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('profile.skillEditorHeader')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 multi-options\"},[_c('simplecheckboxlist',{attrs:{\"list\":_vm.personalSkills,\"rows\":3},on:{\"input\":_vm.updatePersonalSkills},model:{value:(_vm.editedUser.personalSkills),callback:function ($$v) {_vm.$set(_vm.editedUser, \"personalSkills\", $$v)},expression:\"editedUser.personalSkills\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-left\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('profile.availabilityTimes')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 multi-options\"},[_c('simplecheckboxlist',{attrs:{\"list\":_vm.availabilityTimes,\"rows\":3},on:{\"input\":_vm.updateAvailabilityTimes},model:{value:(_vm.selectedAvailabilityTimes),callback:function ($$v) {_vm.selectedAvailabilityTimes=$$v},expression:\"selectedAvailabilityTimes\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-left\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('profile.travelOptions')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 multi-options\"},[_c('simplecheckboxlist',{attrs:{\"list\":_vm.transportations,\"rows\":3},on:{\"input\":_vm.updateTransportation},model:{value:(_vm.editedUser.transportation),callback:function ($$v) {_vm.$set(_vm.editedUser, \"transportation\", $$v)},expression:\"editedUser.transportation\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-6\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('adminUserEditor.travelTime'),\"is-valid\":true},on:{\"input\":_vm.saveChanges},model:{value:(_vm.editedUser.travelTime),callback:function ($$v) {_vm.$set(_vm.editedUser, \"travelTime\", $$v)},expression:\"editedUser.travelTime\"}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row comp-useradmin-role-editor my-2\">\r\n    <!-- profile status -->\r\n    <label class=\"cap-label\">{{ $t('profile.headerState') }}</label>\r\n    <br>\r\n    <div class=\"row\">\r\n      <div class=\"col col-12\">\r\n        <div class=\"profile-state\">\r\n          <SPRRadioList\r\n            :value=\"editedUser.profileState\"\r\n            :options=\"profileStatusOptions\"\r\n            @input=\"updateProfileState\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"col-12\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12 col-md-6\">\r\n          <forminput v-model=\"editedUser.firstName\"\r\n                     v-validate=\"'required'\"\r\n                     :hint=\"$t('adminUserEditor.firstName')\"\r\n                     name=\"firstName\"\r\n                     :is-valid=\"!errors.has('firstName')\"\r\n                     @input=\"saveChanges\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 col-md-6\">\r\n          <forminput v-model=\"editedUser.lastName\"\r\n                     v-validate=\"'required'\"\r\n                     :hint=\"$t('adminUserEditor.lastName')\"\r\n                     name=\"lastName\"\r\n                     :is-valid=\"!errors.has('lastName')\"\r\n                     @input=\"saveChanges\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <forminput v-model=\"editedUser.streetAddress\"\r\n                     :hint=\"$t('adminUserEditor.streetAddress')\"\r\n                     :is-valid=\"true\"\r\n                     @input=\"saveChanges\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 col-md-6\">\r\n          <forminput v-model=\"editedUser.zipCode\"\r\n                     :hint=\"$t('adminUserEditor.zipCode')\"\r\n                     :is-valid=\"true\"\r\n                     @input=\"saveChanges\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 col-md-6\">\r\n          <forminput v-model=\"editedUser.city\"\r\n                     :hint=\"$t('adminUserEditor.city')\"\r\n                     :is-valid=\"true\"\r\n                     @input=\"saveChanges\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 col-md-6 lang-drop\">\r\n          <dropinput v-model=\"editedUser.nativeLanguage\"\r\n                     v-validate=\"'required'\"\r\n                     :title=\"$t('adminUserEditor.native')\"\r\n                     :items=\"userLanguages\"\r\n                     name=\"nativelanguage\"\r\n                     :is-valid=\"!errors.has('nativelanguage')\"\r\n                     :required=\"true\"\r\n                     @input=\"saveChanges\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 col-md-6 date-pick\">\r\n          <datepicker :key=\"componentKey\"\r\n                      v-validate=\"birthdateValidation\"\r\n                      :value=\"formattedAge\"\r\n                      :title=\"$t('adminUserEditor.birthDate')\"\r\n                      :placeholder=\"$t('adminUserEditor.chooseDate')\"\r\n                      :has-error=\"errors.has('adminUserEditor.birthDate')\"\r\n                      name=\"adminUserEditor.birthDate\"\r\n                      :initial=\"userAge\"\r\n                      :required=\"true\"\r\n                      :options=\"datepickerOptions\"\r\n                      @input=\"onAgeChanged\"\r\n          />\r\n        </div>\r\n        <!-- languages -->\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <span style=\"padding:left 15px;\" class=\"subheader\">{{ $t('profile.languageEditorHeader') }}</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12 multi-options\">\r\n            <simplecheckboxlist v-model=\"editedUser.spokenLanguages\"\r\n                                :list=\"checkboxLanguages(editedUser.spokenLanguages, $store.state.friendCustomerLanguages)\"\r\n                                :rows=\"3\"\r\n                                @input=\"updateSpokenLanguages\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div class=\"col-12 col-md-6\">\r\n          <div v-if=\"canChangeSection\" id=\"zipParent\" class=\"admin-working-zip\">\r\n            <label class=\"cap-label\">{{ $t('adminUserEditor.workingZipCode') }}</label>\r\n            <!-- This is for users to choose a zip code outside of their section, if allowed -->\r\n            <sprautocomplete\r\n              v-model=\"adminSectionZip\"\r\n              v-validate=\"'required'\"\r\n              :options=\"adminSectionZips\"\r\n              option-label=\"value\"\r\n              placeholder=\"\"\r\n              :required=\"true\"\r\n              name=\"zipCodeField\"\r\n              :is-valid=\"!errors.has('zipCodeField')\"\r\n              :max-results=\"200\"\r\n              :show-arrow=\"false\"\r\n              :show-default-options=\"false\"\r\n              @input=\"saveChanges\"\r\n            />\r\n            <div v-if=\"showSectionChangeWarning\" class=\"section-change-warning\">\r\n              <font-awesome-icon icon=\"exclamation-triangle\" />{{ $t('adminUserEditor.changeSectionWarning') }}\r\n            </div>\r\n          </div>\r\n          <!-- This is for users to choose a zip code inside their section, but cannot choose one outside -->\r\n          <dropinput v-else v-model=\"editedUser.workingZipCode\"\r\n                     :title=\"$t('adminUserEditor.workingZipCode')\"\r\n                     :items=\"sectionZips\"\r\n                     :is-valid=\"true\"\r\n                     :required=\"true\"\r\n                     @input=\"saveChanges\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <checkboxinput\r\n            v-model=\"editedUser.volunteerOnline\"\r\n            :title=\"$t('adminUserEditor.volunteerOnline')\"\r\n            :aria-label=\"$t('adminUserEditor.volunteerOnline')\"\r\n            @input=\"saveChanges\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 col-md-6\">\r\n          <forminput v-model=\"editedUser.phoneNumber\"\r\n                     :hint=\"$t('adminUserEditor.phone')\"\r\n                     :is-valid=\"true\"\r\n                     @input=\"saveChanges\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 col-md-6\">\r\n          <textareainput v-model=\"editedUser.motto\"\r\n                         :title=\"$t('adminUserEditor.motto')\"\r\n                         @input=\"saveChanges\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 col-md-6\">\r\n          <textareainput v-model=\"editedUser.story\"\r\n                         :title=\"$t('adminUserEditor.story')\"\r\n                         @input=\"saveChanges\"\r\n          />\r\n        </div>\r\n      </div>\r\n\r\n      <!-- PreferredContactMethod -->\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-left\">\r\n          <span class=\"subheader\">{{ $t('wizard.preferredContactMethod') }}</span>\r\n        </div>\r\n        <div class=\"col-12 multi-options\">\r\n          <checkboxlist v-model=\"editedUser.preferredContactMethods\"\r\n                        :list=\"preferredContactMethodOptions\"\r\n                        :rows=\"1\"\r\n          />\r\n        </div>\r\n      </div>\r\n\r\n      <!-- InvolvedEventCategories -->\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-left\">\r\n          <span class=\"subheader\">{{ $t('wizard.alreadyInvolved') }}</span>\r\n        </div>\r\n        <div class=\"col-12 multi-options\">\r\n          <checkboxlist v-model=\"editedUser.involvedEventCategories\"\r\n                        :list=\"involvedEventCategoriesOptions\"\r\n                        :rows=\"3\"\r\n          />\r\n        </div>\r\n      </div>\r\n\r\n      <!-- interests -->\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-left\">\r\n          <span class=\"subheader\">{{ $t('volunteerForm.interests') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 multi-options\">\r\n          <simplecheckboxlist v-model=\"editedUser.areasOfInterest\"\r\n                              :list=\"areasOfInterest\"\r\n                              :rows=\"3\"\r\n                              @input=\"updateProfileInterests\"\r\n          />\r\n        </div>\r\n      </div>\r\n\r\n      <!-- skills -->\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-left\">\r\n          <span class=\"subheader\">{{ $t('profile.skillEditorHeader') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 multi-options\">\r\n          <simplecheckboxlist v-model=\"editedUser.personalSkills\"\r\n                              :list=\"personalSkills\"\r\n                              :rows=\"3\"\r\n                              @input=\"updatePersonalSkills\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <!-- availability times -->\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-left\">\r\n          <span class=\"subheader\">{{ $t('profile.availabilityTimes') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 multi-options\">\r\n          <simplecheckboxlist v-model=\"selectedAvailabilityTimes\"\r\n                              :list=\"availabilityTimes\"\r\n                              :rows=\"3\"\r\n                              @input=\"updateAvailabilityTimes\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <!-- transportation -->\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-left\">\r\n          <span class=\"subheader\">{{ $t('profile.travelOptions') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 multi-options\">\r\n          <simplecheckboxlist v-model=\"editedUser.transportation\"\r\n                              :list=\"transportations\"\r\n                              :rows=\"3\"\r\n                              @input=\"updateTransportation\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 col-md-6\">\r\n          <forminput v-model=\"editedUser.travelTime\"\r\n                     :hint=\"$t('adminUserEditor.travelTime')\"\r\n                     :is-valid=\"true\"\r\n                     @input=\"saveChanges\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import moment from 'moment'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import dropinput from '../SPRSimpleDropdown.vue'\r\n  import datepicker from '../SPRDatepicker.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import checkboxlist from '../SPRSimpleCheckboxBitmaskList.vue'\r\n  import simplecheckboxlist from '../SPRSimpleCheckboxList.vue'\r\n  import sprautocomplete from '../SPRAutocompleteDropdown.vue'\r\n  import locationutils from '../../mixins/locationutils.js'\r\n  import inpututils from '../../mixins/inpututils.js'\r\n  import alerts from '../../mixins/alerts'\r\n  import SPRRadioList from '../SPRRadioList.vue'\r\n  import { SectionDto, UserProfileDto } from '@/types'\r\n  import { SprCheckboxValue, SprRadioPillOption, YesNoWarning, SprCheckboxBitmaskValue, SprDropDownValue, StringKeyValuePair } from '@/types/custom'\r\n\r\n  import datetwoyears from '../../helpers/datehelper'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n  import SPRDropdownNumberKeyVue from '../SPRDropdownNumberKey.vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    editedUser: UserProfileDto,\r\n    datepickerOptions: {\r\n      inputStyle: Record<string, any>\r\n    },\r\n    sectionZips: Array<SprDropDownValue>,\r\n    adminSectionZips: Array<StringKeyValuePair> | undefined,\r\n    adminSectionZip: StringKeyValuePair | undefined,\r\n    backupSectionZip: StringKeyValuePair | undefined,\r\n    //originalSection: SectionDto | undefined,\r\n    componentKey: number\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'UserEditorForm',\r\n    components: {\r\n      forminput,\r\n      dropinput,\r\n      datepicker,\r\n      textareainput,\r\n      checkboxinput,\r\n      checkboxlist,\r\n      simplecheckboxlist,\r\n      SPRRadioList,\r\n      sprautocomplete\r\n    },\r\n    mixins: [locationutils, alerts, inpututils],\r\n    inject: ['parentValidator'],\r\n    props: {\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      user: {\r\n        type: Object as () => UserProfileDto,\r\n        required: true\r\n      },\r\n      originalSectionId: {\r\n        type: Number,\r\n        default: 0\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        editedUser: Object.assign({}, this.user),\r\n        datepickerOptions: {\r\n          inputStyle: {\r\n            display: 'inline-block',\r\n            padding: '10px 20px',\r\n            'line-height': '22px',\r\n            'font-size': '16px',\r\n            border: '2px solid #DDDDDD',\r\n            'box-shadow': 'none',\r\n            'border-radius': '24px',\r\n            color: '#5F5F5F',\r\n            width: '100%'\r\n          }\r\n        },\r\n        sectionZips: [],\r\n        adminSectionZips: [],\r\n        adminSectionZip: undefined,\r\n        backupSectionZip: undefined,\r\n        //originalSection: undefined,\r\n        componentKey: 0 // forces reactive update of datepicker when language changes\r\n      }\r\n    },\r\n    computed: {\r\n      userAge (): string {\r\n        return moment(this.editedUser.age).format('DD.MM.YYYY')\r\n      },\r\n      birthdateValidation (): any {\r\n        return datetwoyears.birthdateValidation()\r\n      },\r\n      preferredContactMethodOptions (): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        var validItems = _.filter(this.$store.state.preferredContactMethods, (x) => x.id !== 0)\r\n\r\n        return _.map(validItems, function (val, key) {\r\n          return { value: val.id, text: self.$t('wizard.preferredContactMethodOption' + val.id) } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      profileStatusOptions (): Array<SprRadioPillOption> {\r\n        return this.$store.state.profileState.map((status: any) => {\r\n          return {\r\n            value: status.id,\r\n            text: this.$t(`profile.${status.text}`)\r\n          }\r\n        })\r\n      },\r\n      selectedAvailabilityTimes: {\r\n        get (): any {\r\n          return this.editedUser.availabilityTimes.map(time => {\r\n            return Math.pow(2, time - 1) // Convert regular integer to bitmask\r\n          })\r\n        },\r\n        set (value: number[]) {\r\n          this.editedUser.availabilityTimes = value.map((bitmask: number) => {\r\n            return Math.log2(bitmask) + 1 // Convert bitmask to regular integer\r\n          })\r\n        }\r\n      },\r\n      involvedEventCategoriesOptions (): Array<SprCheckboxBitmaskValue> {\r\n        var self = this\r\n        var validItems = _.filter(this.$store.state.involvedEventCategories, (x) => x.id !== 0)\r\n\r\n        return _.map(validItems, function (val, key) {\r\n          return { value: val.id, text: self.$t('involvedEventCategories.' + val.text).toString() } as SprCheckboxBitmaskValue\r\n        })\r\n      },\r\n      areasOfInterest (): Array<SprDropDownValue> {\r\n        var self = this\r\n        var validItems = _.filter(this.$store.state.profileAreasOfInterest, (x) => x.id !== 0)\r\n\r\n        return _.map(validItems, function (val, key) {\r\n          return { value: val.id, text: self.$t('interest.' + val.text).toString(), selected: self.editedUser.areasOfInterest.indexOf(val.id) >= 0 } as SprCheckboxValue\r\n        })\r\n      },\r\n      personalSkills (): Array<SprDropDownValue> {\r\n        var self = this\r\n        var validItems = _.filter(this.$store.state.profilePersonalSkills, (x) => x.id !== 0)\r\n\r\n        return _.map(validItems, function (val, key) {\r\n          return { value: val.id, text: self.$t('skills.' + val.text).toString(), selected: self.editedUser.personalSkills.indexOf(val.id) >= 0 } as SprCheckboxValue\r\n        })\r\n      },\r\n      spokenLanguages (): Array<SprDropDownValue> {\r\n        var self = this\r\n        var validItems = _.filter(this.$store.state.spokenLanguages, (x) => x.id !== 0)\r\n\r\n        return _.map(validItems, function (val, key) {\r\n          return { value: val.id, text: self.$t('skills.' + val.text).toString(), selected: self.editedUser.personalSkills.indexOf(val.id) >= 0 } as SprCheckboxValue\r\n        })\r\n      },\r\n      availabilityTimes (): Array<SprDropDownValue> {\r\n        var self = this\r\n        var validItems = _.filter(this.$store.state.availabilityTimes, (x) => x.id !== 0)\r\n        var userAvailsAsBitmasks = bitmaskhelper.convertIntegerToBitmask(self.editedUser.availabilityTimes)\r\n        return _.map(validItems, function (val, key) {\r\n          return { value: val.id, text: self.$t('availabilityTimes.' + val.text).toString(), selected: userAvailsAsBitmasks.indexOf(val.id) >= 0 } as SprCheckboxValue\r\n        })\r\n      },\r\n      transportations (): Array<SprDropDownValue> {\r\n        var self = this\r\n        var validItems = _.filter(this.$store.state.transportation, (x) => x.id !== 0)\r\n        //var userAvailsAsBitmasks = bitmaskhelper.convertIntegerToBitmask(self.editedUser.availabilityTimes)\r\n        return _.map(validItems, function (val, key) {\r\n          return { value: val.id, text: self.$t('transportation.' + val.text).toString(), selected: self.editedUser.transportation.indexOf(val.id) >= 0 } as SprCheckboxValue\r\n        })\r\n      },\r\n      clientFilters (): Array<SprCheckboxValue> {\r\n        const self = this\r\n        return _.map(this.$store.state.customerStates, function (val, key) {\r\n          return { value: val.id, text: self.$t('customerStates.' + val.text), selected: false } as SprCheckboxValue\r\n        })\r\n      },\r\n      userLanguages (): Array<SprDropDownValue> {\r\n        return _.map(this.$store.state.allLanguages, function (val, key) {\r\n          return { value: val.isoCode, text: val.displayName } as SprDropDownValue\r\n        })\r\n      },\r\n      formattedAge (): string {\r\n        return moment(this.editedUser.age).format('DD.MM.YYYY')\r\n      },\r\n      zipCode (): string {\r\n        return this.editedUser.zipCode\r\n      },\r\n      canChangeSection (): boolean {\r\n        // @ts-ignore mixins not found\r\n        if (this.hasRole('Admin') || this.hasRole('Employee') || this.hasRole('J1') || this.hasRole('J2') || this.hasRole('DistrictAdmin') || this.hasRole('NationalAdmin') || this.hasRole('NationalEmployee')) {\r\n          // these roles can change someone elses section to anything\r\n          return true\r\n        }\r\n        return false\r\n      },\r\n      showSectionChangeWarning (): boolean {\r\n        return this.originalSectionId !== Number(this.editedUser.sectionId)\r\n      }\r\n    },\r\n    watch: {\r\n      zipCode (val): void {\r\n        if (val.length === 5) {\r\n          var self = this\r\n          // @ts-ignore mixins not found\r\n          this.cityFromZip(val, this, response => {\r\n            self.editedUser.city = self.$store.state.language === 'se' ? response.body.citySe : response.body.cityFi\r\n          })\r\n        }\r\n      },\r\n      adminSectionZip (newVal): void {\r\n        if (newVal && newVal.key.indexOf('-')) {\r\n          var key = newVal.key.split('-')\r\n\r\n          this.editedUser.workingZipCode = key[0]\r\n          this.editedUser.sectionId = Number(key[1])\r\n        }\r\n      }\r\n    },\r\n    created (): void {\r\n      // @ts-ignore parentvalidator is added via provide()\r\n      this.$validator = this.parentValidator\r\n    },\r\n    beforeMount (): void {\r\n    },\r\n    mounted (): void {\r\n      this.editedUser.email = this.editedUser.email ? this.editedUser.email : 'thin@innofactortestaa.com'\r\n      this.editedUser.id = this.id\r\n\r\n      this.setOriginalSection()\r\n      // Admins, Distict Admin, Employee (#2511) have the ability to change sections. Display an autocomplete with sections as well as postcodes\r\n      if (this.canChangeSection) {\r\n        var adminSections = [] as Array<StringKeyValuePair>\r\n        _.each(this.$store.state.sections, (section) => {\r\n          _.each(section.zipCodes, (zip) => {\r\n            adminSections.push({ key: `${zip}-${section.id}`, value: `${zip} - ${section.name}` })\r\n          })\r\n        })\r\n\r\n        var zip\r\n        // Fill the autocomplete with a list of potential zips with sections\r\n        this.adminSectionZips = _.sortBy(adminSections, 'value')\r\n        // Select the actual one they have assigned at the moment\r\n        var zipPossibles = _.filter(this.adminSectionZips, (zip: StringKeyValuePair) => {\r\n          var zipArr = zip.key?.split('-')\r\n          return zipArr[0] === this.editedUser.workingZipCode // && Number(zipArr[1]) === Number(this.editedUser.sectionId)\r\n        })\r\n        if (!zipPossibles) {\r\n          // could be more than one as a working zip code could fit into 2 sections if the lang is different\r\n          // @ts-ignore mixins not found\r\n          this.showAlertError(this.$t('userEditor.invalidWorkingZipCode'))\r\n          return\r\n        }\r\n\r\n        if (zipPossibles.length === 1) {\r\n          zip = zipPossibles[0]\r\n        } else {\r\n          zip = _.find(zipPossibles, (zip: StringKeyValuePair) => {\r\n            var zipArr = zip.key?.split('-')\r\n            return Number(zipArr[1]) === Number(this.editedUser.sectionId)\r\n          })\r\n          if (!zip) {\r\n            // rare case, but someones section could have been set previously outside of their working zip code\r\n            zip = zipPossibles[0]\r\n          }\r\n        }\r\n\r\n        this.adminSectionZip = zip || {} as StringKeyValuePair\r\n        this.backupSectionZip = Object.assign({}, this.adminSectionZip)\r\n        window.addEventListener('click', this.handleClick, true)\r\n      }\r\n      // Force the date component to re-render on language change\r\n      this.$store.subscribe((mutation, state) => {\r\n        if (mutation.type === 'setLanguage') {\r\n          this.componentKey += 1\r\n        }\r\n      })\r\n    },\r\n    beforeDestroy (): void {\r\n      window.removeEventListener('click', this.handleClick)\r\n    },\r\n    methods: {\r\n      onAgeChanged (newAge): void {\r\n        // convert from dd.mm.yyyy to date format\r\n        this.editedUser.age = new Date(moment(newAge, ['DD.MM.YYYY']).format('YYYY-MM-DD'))\r\n        this.saveChanges()\r\n      },\r\n      setOriginalSection (): void {\r\n        var originalUsersSection = _.find(this.$store.state.sections, section => {\r\n          return section.id === Number(this.editedUser.sectionId)\r\n        })\r\n\r\n        if (originalUsersSection) {\r\n          this.sectionZips = originalUsersSection.zipCodes.map(zip => {\r\n            return { text: zip, value: zip } as SprDropDownValue\r\n          })\r\n        }\r\n      },\r\n      updateProfileState (newVal): void {\r\n        this.editedUser.profileState = newVal\r\n        //this.$store.commit('profileEdit', this.editedUser)\r\n        this.saveChanges()\r\n      },\r\n      updateProfileInterests (newVal): void {\r\n        this.editedUser.areasOfInterest = newVal\r\n        //this.$store.commit('profileEdit', this.editedUser)\r\n        this.saveChanges()\r\n      },\r\n      updatePersonalSkills (newVal): void {\r\n        this.editedUser.personalSkills = newVal\r\n        //this.$store.commit('profileEdit', this.editedUser)\r\n        this.saveChanges()\r\n      },\r\n      updateTransportation (newVal): void {\r\n        this.editedUser.transportation = newVal\r\n        //this.$store.commit('profileEdit', this.editedUser)\r\n        this.saveChanges()\r\n      },\r\n      updateAvailabilityTimes (newVal): void {\r\n        var updated = bitmaskhelper.convertBitmaskToInteger(newVal)\r\n        this.editedUser.availabilityTimes = updated\r\n        //this.$store.commit('profileEdit', this.editedUser)\r\n        this.saveChanges()\r\n      },\r\n      updateSpokenLanguages (newVal): void {\r\n        this.editedUser.spokenLanguages = newVal\r\n        //this.$store.commit('profileEdit', this.editedUser)\r\n        this.saveChanges()\r\n      },\r\n      saveChanges (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            this.$emit('input', this.editedUser)\r\n            //this.setOriginalSection()\r\n            this.backupSectionZip = Object.assign({}, this.adminSectionZip)\r\n          }\r\n        })\r\n      },\r\n      handleClick (event): void {\r\n        // If the user has clicked outside of the section chooser, but has not got a section selected, set it back to the original one.\r\n        if (event.target) {\r\n          //@ts-ignore\r\n          if (this.hasSpecifiedParentId(event.target, 'zipParent')) {\r\n            if (!this.adminSectionZip) {\r\n              this.adminSectionZip = this.backupSectionZip\r\n            }\r\n          }\r\n        }\r\n      },\r\n      hasSpecifiedParentId (el, parentId, parentSelector? /* optional */): boolean {\r\n        // If no parentSelector defined will bubble up all the way to *document*\r\n        if (parentSelector === undefined) {\r\n          parentSelector = document\r\n        }\r\n\r\n        var p = el.parentNode\r\n        while (p && p !== parentSelector) {\r\n          var o = p\r\n          if (o.id === parentId) {\r\n            return true\r\n          }\r\n          p = o.parentNode\r\n        }\r\n\r\n        return false\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n  .comp-useradmin-role-editor {\r\n    .lang-drop {\r\n      .spr-roundbox-1 {\r\n        border: none !important;\r\n      }\r\n      select {\r\n        border: 2px $brand-grey3 solid !important;\r\n      }\r\n    }\r\n  .profile-state {\r\n    margin-bottom: 30px;\r\n  }\r\n    .admin-working-zip {\r\n      label {\r\n        color: $brand-red;\r\n        padding: 0 20px;\r\n      }\r\n      input {\r\n        padding: 10px 20px;\r\n        border: solid 2px $brand-grey3;\r\n      }\r\n      .section-change-warning {\r\n        svg {\r\n          margin-right: 7px;\r\n        }\r\n        background-color: $brand-warning;\r\n        color:$brand-white;\r\n        font-size: 0.8em;\r\n        padding: 10px;\r\n      }\r\n    }\r\n\r\n    .subheader {\r\n      color:$brand-red;\r\n      text-transform: uppercase;\r\n      font-family: $font-bold;\r\n      margin: 0px 0 20px 0;\r\n      display:block;\r\n      font-size: 14px;\r\n      padding: 0 20px;\r\n    }\r\n\r\n    .multi-options {\r\n      padding: 0 35px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserEditorForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserEditorForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserEditorForm.vue?vue&type=template&id=35f8def6\"\nimport script from \"./UserEditorForm.vue?vue&type=script&lang=ts\"\nexport * from \"./UserEditorForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserEditorForm.vue?vue&type=style&index=0&id=35f8def6&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row comp-useradmin-password-editor my-2\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprvalidation',{staticClass:\"mb-5\",attrs:{\"validation-errors\":_vm.validationErrors}})],1)]),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('forminput',{staticClass:\"new-password\",attrs:{\"hint\":_vm.$t('adminUserEditor.password'),\"is-valid\":true},model:{value:(_vm.loginData.password),callback:function ($$v) {_vm.$set(_vm.loginData, \"password\", $$v)},expression:\"loginData.password\"}})],1),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('div',{staticClass:\"d-flex h-100 container\"},[_c('div',{staticClass:\"row align-self-center\"},[(_vm.loginData.password !== '')?_c('span',{staticClass:\"pw-alert\"},[(_vm.loginData.password.length >= 6)?_c('span',[_vm._v(_vm._s(_vm.$t('adminUserEditor.passwordChangeAlert')))]):_c('span',[_vm._v(_vm._s(_vm.$t('adminUserEditor.passwordLength')))])]):_c('span',{staticClass:\"pw-no\"},[_vm._v(_vm._s(_vm.$t('adminUserEditor.passwordNoChange')))])])])]),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('forminput',{staticClass:\"new-email\",attrs:{\"hint\":_vm.$t('adminUserEditor.loginName'),\"is-valid\":true},model:{value:(_vm.loginData.email),callback:function ($$v) {_vm.$set(_vm.loginData, \"email\", $$v)},expression:\"loginData.email\"}})],1),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('div',{staticClass:\"d-flex h-100 container\"},[_c('div',{staticClass:\"row align-self-center\"},[(_vm.loginData.email !== _vm.user.email)?_c('span',{staticClass:\"pw-alert\"},[(_vm.loginData.password.length < 6)?_c('span',[_vm._v(_vm._s(_vm.$t('adminUserEditor.mustSetNewPasswordOnEmailChange')))]):_c('span',[_vm._v(_vm._s(_vm.$t('adminUserEditor.emailChangeAlert')))])]):_vm._e()])])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"buttons\"},[_c('div',{staticClass:\"col-12\"},[_c('sprbutton',{staticClass:\"my-2 mx-1\",attrs:{\"type\":\"primary\",\"primary\":true,\"title\":_vm.$t('userAdmin.editSave'),\"size\":1,\"click-event\":\"save\"},on:{\"save\":_vm.savePassword}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row comp-useradmin-password-editor my-2\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <sprvalidation :validation-errors=\"validationErrors\" class=\"mb-5\" />\r\n      </div>\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <forminput v-model=\"loginData.password\"\r\n                 :hint=\"$t('adminUserEditor.password')\"\r\n                 :is-valid=\"true\"\r\n                 class=\"new-password\"\r\n      />\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <div class=\"d-flex h-100 container\">\r\n        <div class=\"row align-self-center\">\r\n          <span v-if=\"loginData.password !== ''\" class=\"pw-alert\">\r\n            <span v-if=\"loginData.password.length >= 6\">{{ $t('adminUserEditor.passwordChangeAlert') }}</span>\r\n            <span v-else>{{ $t('adminUserEditor.passwordLength') }}</span>\r\n          </span>\r\n          <span v-else class=\"pw-no\">{{ $t('adminUserEditor.passwordNoChange') }}</span>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <forminput v-model=\"loginData.email\"\r\n                 :hint=\"$t('adminUserEditor.loginName')\"\r\n                 :is-valid=\"true\"\r\n                 class=\"new-email\"\r\n      />\r\n    </div>\r\n    <div class=\"col-12 col-md-6\">\r\n      <div class=\"d-flex h-100 container\">\r\n        <div class=\"row align-self-center\">\r\n          <span v-if=\"loginData.email !== user.email\" class=\"pw-alert\">\r\n            <span v-if=\"loginData.password.length < 6\">{{ $t('adminUserEditor.mustSetNewPasswordOnEmailChange') }}</span>\r\n            <span v-else>{{ $t('adminUserEditor.emailChangeAlert') }}</span>\r\n          </span>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"col-12\">\r\n      <!-- password save/cancel buttons -->\r\n      <div class=\"buttons\">\r\n        <div class=\"col-12\">\r\n          <sprbutton type=\"primary\"\r\n                     :primary=\"true\"\r\n                     :title=\"$t('userAdmin.editSave')\"\r\n                     class=\"my-2 mx-1\"\r\n                     :size=\"1\"\r\n                     click-event=\"save\"\r\n                     @save=\"savePassword\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import { LoginDataDto } from '@/types'\r\n  import Vue from 'vue'\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    loginData: LoginDataDto,\r\n    currentPasswordFailure: any,\r\n    validatedFields: Array<string>\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'UserPasswordEditor',\r\n    components: { forminput, sprbutton, sprvalidation },\r\n    props: {\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      user: {\r\n        type: Object,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        loginData: {\r\n          password: '',\r\n          email: this.user.email\r\n        } as LoginDataDto,\r\n        currentPasswordFailure: null,\r\n        validatedFields: ['password', 'retypePassword']\r\n      }\r\n    },\r\n    computed: {\r\n      validationErrors (): Array<any> {\r\n        var arr = [] as Array<any>\r\n        var self = this\r\n\r\n        if (self.currentPasswordFailure) {\r\n          arr.push(['login.attempt', 'currentPasswordFailed', ''])\r\n          self.currentPasswordFailure.forEach(err => {\r\n            //@ts-ignore\r\n            if (err.code) { arr.push(['', 'error.' + this.toLowerCamelCase(err.code), '']) }\r\n          })\r\n        }\r\n\r\n        if (!this.validatedFields) {\r\n          return arr\r\n        }\r\n\r\n        this.validatedFields.forEach(function (fieldName) {\r\n          //@ts-ignore\r\n          var err = _.find(self.errors.items, function (item) {\r\n            return item.field === fieldName\r\n          })\r\n\r\n          if (err != null) {\r\n            arr.push(['profile.' + err.field, String(err.rule), String(err.msg)])\r\n          }\r\n        })\r\n        return arr\r\n      }\r\n    },\r\n    methods: {\r\n      savePassword (): void {\r\n        if (!this.user) return\r\n        var uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.adminupdate[0].replace('{email}', this.user.email)\r\n        this.$http.post(uri, this.loginData).then(\r\n          (s): any => {\r\n            if (this.user && this.loginData) {\r\n              this.user.email = this.loginData.email\r\n            }\r\n            //this.loginData = undefined\r\n            // @ts-ignore Cannot find mixins\r\n            this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n            this.$emit('input', this.loginData)\r\n          }, (f): any => {\r\n            // @ts-ignore Cannot find mixins\r\n            this.showAlertError(this.$t('common.saveFailed'))\r\n            if (f.body?.error?.errors) { this.currentPasswordFailure = f.body.error.errors }\r\n          })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n.buttons {\r\n      justify-content: center;\r\n      button {\r\n        padding: 5px 15px;\r\n      }\r\n\r\n      .delete-user-button {\r\n        text-align: right;\r\n      }\r\n      @media (max-width: $media-xs-max) {\r\n        .delete-user-button {\r\n          text-align: left;\r\n          margin-top: 30px;\r\n        }\r\n      }\r\n    }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserPasswordEditor.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserPasswordEditor.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserPasswordEditor.vue?vue&type=template&id=0ee22474\"\nimport script from \"./UserPasswordEditor.vue?vue&type=script&lang=ts\"\nexport * from \"./UserPasswordEditor.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserPasswordEditor.vue?vue&type=style&index=0&id=0ee22474&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"comp-useradmin-editor my-2\">\r\n    <div v-if=\"showProfileDeleteOrAnonymize\" class=\"container\">\r\n      <anonymizeUserProfile\r\n        title=\"Delete or Anonymize the User Profile\"\r\n        :data=\"profileUsageReportData\"\r\n        :user-id=\"userId\"\r\n        @cancel-delete-user=\"cancelUserDeletion\"\r\n        @delete-user=\"deleteUser\"\r\n      />\r\n    </div>\r\n    <div v-else class=\"container\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <backbar />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"hasLoaded && (user && !user.isNonIdent)\">\r\n        <!-- User data editor -->\r\n        <div class=\"row admin-section\">\r\n          <div class=\"col col-9\">\r\n            <div class=\"user-title\">\r\n              <span class=\"user-name\">{{ user.firstName }} <span class=\"last-name\">{{ user.lastName }}</span></span>\r\n            </div>\r\n          </div>\r\n          <div class=\"col col-3 text-right edit-user\">\r\n            <spredittool :is-editing=\"isUserEditing\" @editing=\"toggleUserEdit\" @revert=\"revertUserEdit\" />\r\n          </div>\r\n        </div>\r\n        <div v-if=\"isUserEditing\" class=\"row admin-section\">\r\n          <div class=\"col-12\">\r\n            <usereditform :id=\"userId\" :user=\"user\" :original-section-id=\"originalSectionId\" @input=\"updateUser\" />\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <!-- user save/cancel buttons -->\r\n            <div class=\"row buttons\">\r\n              <div class=\"col-12 col-sm-7\">\r\n                <sprbutton type=\"primary\" :primary=\"true\" :title=\"$t('userAdmin.editSave')\"\r\n                           :size=\"1\" click-event=\"save\" @save=\"saveUser\"\r\n                />\r\n              </div>\r\n              <!-- Initiate User Anonomization or Deletion -->\r\n              <div class=\"col-12 col-sm-5 delete-user-button\">\r\n                <deleteUser\r\n                  :id=\"userId\"\r\n                  :user=\"user\"\r\n                  @initiate-delete-or-anonymize=\"initiateDeleteOrAnonymize\"\r\n                />\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div v-else class=\"row admin-section\">\r\n          <div class=\"col-4 text-center\">\r\n            <div class=\"portrait\">\r\n              <sprportrait\r\n                :style=\"portraitStyle\"\r\n                :completion=\"100\"\r\n                class=\"portrait-size\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"col-8\">\r\n            <dl>\r\n              <dt>{{ $t('profile.email') }}</dt>\r\n              <dd>{{ user.email }}</dd>\r\n              <dt>{{ $t('profile.phoneNumber') }}</dt>\r\n              <dd>{{ user.phoneNumber }}</dd>\r\n              <dt>{{ $t('profile.address') }}</dt>\r\n              <dd>\r\n                {{ user.streetAddress }},\r\n                {{ user.zipCode }}\r\n                {{ user.city }}\r\n              </dd>\r\n              <dt>{{ $t('profile.dateOfBirth') }}</dt>\r\n              <dd>{{ formattedBirthDate }}</dd>\r\n            </dl>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <!-- Roles editor -->\r\n      <div v-if=\"hasLoaded && showRolesEditor\" class=\"roles-section\">\r\n        <div class=\"row admin-section\">\r\n          <div class=\"col col-9\">\r\n            <div class=\"user-roles\">\r\n              <h5>{{ $t('profile.roles') }}</h5>\r\n            </div>\r\n          </div>\r\n          <div class=\"col col-3 text-right edit-roles\">\r\n            <spredittool :is-editing=\"isRolesEditing\" @editing=\"toggleRolesEdit\" @revert=\"revertRolesEdit\" />\r\n          </div>\r\n        </div>\r\n        <div v-if=\"isRolesEditing\" class=\"row admin-section\">\r\n          <div class=\"col-12\">\r\n            <roleseditor :id=\"userId\" :roles=\"roles\" @input=\"updateRoles\" />\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <!-- roles save/cancel buttons -->\r\n            <div class=\"row buttons\">\r\n              <div class=\"col-12\">\r\n                <sprbutton type=\"primary\" :primary=\"true\" :title=\"$t('userAdmin.editSave')\"\r\n                           class=\"my-2 mx-1\" :size=\"1\" click-event=\"save\" @save=\"saveRoles\"\r\n                />\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div v-else class=\"row admin-section\">\r\n          <div class=\"col-12 assigned-roles\">\r\n            {{ formattedRoles }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <!-- Password editor -->\r\n      <div v-if=\"hasLoaded && showPasswordEditor\" class=\"password-section\">\r\n        <div class=\"row admin-section\">\r\n          <div class=\"col col-9\">\r\n            <div class=\"user-roles\">\r\n              <h5>{{ $t('adminUserEditor.password') }}</h5>\r\n            </div>\r\n          </div>\r\n          <div class=\"col col-3 text-right edit-password\">\r\n            <spredittool :is-editing=\"isPasswordEditing\" @editing=\"togglePasswordEdit\" @revert=\"revertPasswordEdit\" />\r\n          </div>\r\n        </div>\r\n        <div v-if=\"isPasswordEditing\" class=\"row admin-section\">\r\n          <div class=\"col-12\">\r\n            <passwordeditor\r\n              :id=\"userId\"\r\n              :user=\"user\"\r\n              @input=\"updatePassword\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div v-else class=\"row admin-section\">\r\n          <div class=\"col-12\">\r\n            <dl>\r\n              <dt>{{ $t('profile.password') }}</dt>\r\n              <dd>********</dd>\r\n              <dt>{{ $t('adminUserEditor.loginName') }}</dt>\r\n              <dd>{{ user.email }}</dd>\r\n            </dl>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <!-- loading indicator -->\r\n    <div v-show=\"!hasLoaded\" class=\"col-12 text-center brand-red my-4\">\r\n      <loading />\r\n    </div>\r\n\r\n    <!-- non-ident user, no editing capabilities -->\r\n    <div v-if=\"user && user.isNonIdent\" class=\"col-12 text-center my-4\">\r\n      <p>{{ $t('adminUserEditor.nonIdentNoEdit') }}</p>\r\n      <p><a href=\"javascript:void(0)\" @click=\"back\">{{ $t('adminUserEditor.backLink') }}</a></p>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import backbar from '../BackBar.vue'\r\n  import anonymizeUserProfile from './AnonymizeUserProfile.vue'\r\n  import deleteUser from './DeleteUser.vue'\r\n  import spredittool from '../SPREditTool.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import roleseditor from './UserRoleEditor.vue'\r\n  import usereditform from './UserEditorForm.vue'\r\n  import passwordeditor from './UserPasswordEditor.vue'\r\n  import sprportrait from '../SPRPortrait.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import anonPortrait from '../../assets/img/anon-portrait.png'\r\n  import { ProfileUsageDto, UserProfileDto, RoleDataBatchDto, LoginDataDto } from '@/types'\r\n  import { TranslateResult } from 'vue-i18n'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    user: undefined | UserProfileDto,\r\n    roles: undefined | Array<string>,\r\n    userId: string,\r\n    showProfileDeleteOrAnonymize: boolean,\r\n    profileUsageReportData: undefined | ProfileUsageDto,\r\n    isUserEditing: boolean,\r\n    isRolesEditing: boolean,\r\n    isPasswordEditing: boolean,\r\n    loginData: undefined | LoginDataDto,\r\n    originalSectionId: undefined | number\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'UserEditor',\r\n    components: {\r\n      anonymizeUserProfile,\r\n      deleteUser,\r\n      spredittool,\r\n      sprbutton,\r\n      roleseditor,\r\n      usereditform,\r\n      passwordeditor,\r\n      sprportrait,\r\n      loading,\r\n      backbar\r\n    },\r\n    props: {\r\n      id: {\r\n        type: String,\r\n        required: true\r\n      },\r\n      returnPath: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        user: undefined,\r\n        roles: undefined,\r\n        userId: '',\r\n        showProfileDeleteOrAnonymize: false,\r\n        profileUsageReportData: undefined,\r\n        isUserEditing: false,\r\n        isRolesEditing: false,\r\n        isPasswordEditing: false,\r\n        loginData: undefined,\r\n        originalSectionId: undefined\r\n      }\r\n    },\r\n    provide (): Record<string, any> {\r\n      return { parentValidator: this.$validator }\r\n    },\r\n    computed: {\r\n      showRolesEditor (): boolean {\r\n        // @ts-ignore Cannot find mixins\r\n        return this.hasRole('Admin') || this.hasRole('Employee') || this.hasRole('DistrictAdmin') || this.hasRole('NationalAdmin') || this.hasRole('NationalEmployee') || this.hasRole('J1') || this.hasRole('J2')\r\n      },\r\n      showPasswordEditor (): boolean {\r\n        // @ts-ignore Cannot find mixins\r\n        return this.hasRole('Admin') || this.hasRole('DistrictAdmin')\r\n      },\r\n      showDelete (): boolean {\r\n        // @ts-ignore Cannot find mixins\r\n        return this.hasRole('Admin') || this.hasRole('DistrictAdmin') || this.hasRole('NationalAdmin') || this.hasRole('NationalEmployee')\r\n      },\r\n      formattedRoles (): string | TranslateResult {\r\n        if (this.roles && this.roles.length) {\r\n          return this.roles\r\n            .map(x => this.$t(`roles.${this.lowerCaseFirstLetter(x)}`))\r\n            .join(', ')\r\n        }\r\n        return this.$t('roles.addRole')\r\n      },\r\n      formattedBirthDate (): string {\r\n        if (!this.user) {\r\n          return ''\r\n        }\r\n        var d = new Date(this.user?.age)\r\n        if (d instanceof Date && !isNaN(d.valueOf())) {\r\n          return `${d.getDate()}.${d.getMonth() + 1}.${d.getFullYear()}`\r\n        }\r\n        return '-'\r\n      },\r\n      portraitStyle (): string {\r\n        var port = this.user?.portrait || anonPortrait\r\n        return 'background: url(' + port + '); background-size: cover; background-position: center center;'\r\n      },\r\n      hasLoaded (): boolean {\r\n        return Boolean(this.user && (this.user.isNonIdent || this.roles))\r\n      },\r\n      isEditingOwnProfile (): boolean {\r\n        // @ts-ignore Cannot find mixins\r\n        return this.jwtToken.ProfileId === Number(this.id)\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.loadUserProfile()\r\n      this.loadRoles()\r\n    },\r\n    methods: {\r\n      loadUserProfile (): void {\r\n        var uriProfile = (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.userbyprofileid[0]).replace('{0}', this.id)\r\n        this.$http.get(uriProfile).then(s => {\r\n          this.user = s.data\r\n          this.originalSectionId = this.user?.sectionId\r\n        }, f => {\r\n          console.log(f)\r\n          // @ts-ignore Cannot find mixins\r\n          this.showAlertPermissionDenied().then(() => {\r\n            this.$router.push('/profile')\r\n          })\r\n        })\r\n      },\r\n      loadRoles (): void {\r\n        var uriRoles = (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.profileroles[0]).replace('{0}', this.id)\r\n        this.$http.get(uriRoles).then(s => {\r\n          this.roles = s.data.roles\r\n          this.userId = s.data.userId\r\n        }, f => {\r\n          console.log(f)\r\n          // @ts-ignore Cannot find mixins\r\n          this.showAlertPermissionDenied().then(() => {\r\n            this.$router.push('/profile')\r\n          })\r\n        })\r\n      },\r\n      toggleUserEdit (): void {\r\n        this.isPasswordEditing = false\r\n        this.isRolesEditing = false\r\n        this.isUserEditing = !this.isUserEditing\r\n      },\r\n      revertUserEdit (): void {\r\n        this.isPasswordEditing = false\r\n        this.isRolesEditing = false\r\n        this.isUserEditing = false\r\n      },\r\n      toggleRolesEdit (): void {\r\n        this.isPasswordEditing = false\r\n        this.isUserEditing = false\r\n        this.isRolesEditing = !this.isRolesEditing\r\n      },\r\n      revertRolesEdit (): void {\r\n        this.isPasswordEditing = false\r\n        this.isUserEditing = false\r\n        this.isRolesEditing = false\r\n      },\r\n      togglePasswordEdit (): void {\r\n        this.isRolesEditing = false\r\n        this.isUserEditing = false\r\n        this.isPasswordEditing = !this.isPasswordEditing\r\n      },\r\n      revertPasswordEdit (): void {\r\n        this.isRolesEditing = false\r\n        this.isUserEditing = false\r\n        this.isPasswordEditing = false\r\n      },\r\n      updateUser (user: UserProfileDto): void {\r\n        this.user = user\r\n      },\r\n      updateRoles (roles: Array<string>): void {\r\n        this.roles = roles\r\n      },\r\n      updatePassword (data: LoginDataDto): void {\r\n        this.loginData = data\r\n        this.isPasswordEditing = false\r\n      },\r\n      saveUser (): void {\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            var uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.updateidentuser[0].replace('{0}', this.userId)\r\n            this.$http.put(uri, this.user).then(\r\n              s => {\r\n                this.isUserEditing = false\r\n                this.originalSectionId = this.user?.sectionId\r\n                // need to reload roles, as sometimes changing section will remove roles.\r\n                return this.loadRoles()\r\n              }, f => {\r\n                this.isUserEditing = false\r\n                // @ts-ignore Cannot find mixins\r\n                this.showAlertError(this.$t('common.saveFailed'))\r\n                return Promise.reject(new Error(f))\r\n              })\r\n              .then(() => {\r\n                // @ts-ignore Cannot find mixins\r\n                this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n              })\r\n          }\r\n        })\r\n      },\r\n      saveRoles (): void {\r\n        var uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.setroles[0]\r\n        var data: RoleDataBatchDto = {\r\n          userId: this.userId,\r\n          roles: this.roles || []\r\n        }\r\n        this.$http.post(uri, data).then(r => {\r\n          this.isRolesEditing = false\r\n          // @ts-ignore Cannot find mixins\r\n          this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n        }, f => {\r\n          // @ts-ignore Cannot find mixins\r\n          this.showAlertError(this.$t('common.saveFailed'))\r\n        })\r\n      },\r\n      cancelUserDeletion (): void {\r\n        this.showAnonymizeUser(null)\r\n      },\r\n      deleteUser (): void {\r\n        var confirmation = prompt(this.$t('adminUserEditor.deleteConfirmPrompt') + ': ' + this.user?.email)\r\n        if (confirmation === this.user?.email) {\r\n          var uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.deleteuser[0] + '/' + this.userId\r\n          this.$http.delete(uri).then(succ => {\r\n            this.$bus.$emit('request-admin-back-after-delete')\r\n          }, fail => {\r\n            console.log(fail)\r\n          })\r\n        }\r\n        this.showAnonymizeUser(null)\r\n      },\r\n      initiateDeleteOrAnonymize (): void {\r\n        var uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.userprofileusagebyid[0] + this.userId\r\n\r\n        var self = this\r\n        this.$http.get(uri).then(succ => {\r\n          if (succ.data) {\r\n            self.showAnonymizeUser(succ.data)\r\n          }\r\n        }, fail => {\r\n          console.log(fail)\r\n        })\r\n      },\r\n      showAnonymizeUser (data): void {\r\n        if (data) {\r\n          this.showProfileDeleteOrAnonymize = true\r\n          this.profileUsageReportData = data\r\n        } else {\r\n          this.showProfileDeleteOrAnonymize = false\r\n          this.profileUsageReportData = undefined\r\n        }\r\n      },\r\n      lowerCaseFirstLetter (str: string): string {\r\n        return str.charAt(0).toLowerCase() + str.slice(1)\r\n      },\r\n      back (): void {\r\n        this.$router.go(-1)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n  .comp-useradmin-editor {\r\n    .admin-section {\r\n      background-color: $brand-white;\r\n      padding-top: 15px;\r\n      padding-bottom: 15px;\r\n\r\n      &.additional-section {\r\n        margin-top: 15px;\r\n      }\r\n    }\r\n    .roles-section,\r\n    .password-section,\r\n    .delete-section {\r\n      margin-top: 30px;\r\n    }\r\n\r\n    .delete-section {\r\n      button {\r\n        padding: 5px 15px;\r\n      }\r\n    }\r\n\r\n    .portrait {\r\n      width: 150px;\r\n      height: 150px;\r\n      margin: 0 auto;\r\n      .portrait-size {\r\n        width: 100%;\r\n        height: 100%;\r\n      }\r\n    }\r\n\r\n    .user-title {\r\n      margin-top: 10px;\r\n      margin-bottom: 15px;\r\n      .user-name {\r\n        font-weight: bold;\r\n        font-size: 24px;\r\n        .last-name {\r\n          font-weight: bold;\r\n          text-transform: uppercase;\r\n        }\r\n      }\r\n    }\r\n    .spr-edit-tool {\r\n      margin-left: 10px;\r\n      margin-top:10px;\r\n      font-size: 18px;\r\n      color: $brand-red;\r\n\r\n      a {\r\n        color: $brand-red;\r\n      }\r\n    }\r\n    .buttons {\r\n      justify-content: center;\r\n      button {\r\n        padding: 5px 15px;\r\n      }\r\n\r\n      .delete-user-button {\r\n        text-align: right;\r\n      }\r\n      @media (max-width: $media-xs-max) {\r\n        .delete-user-button {\r\n          text-align: left;\r\n          margin-top: 30px;\r\n        }\r\n      }\r\n    }\r\n\r\n    .fail {\r\n      color: red;\r\n    }\r\n\r\n    .success {\r\n      color: green;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserEditor.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserEditor.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserEditor.vue?vue&type=template&id=13865194\"\nimport script from \"./UserEditor.vue?vue&type=script&lang=ts\"\nexport * from \"./UserEditor.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserEditor.vue?vue&type=style&index=0&id=13865194&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comp-district-list\"},[(_vm.districts)?_c('div',{staticClass:\"listing\"},_vm._l((_vm.districts),function(d,i){return _c('div',{key:i,staticClass:\"listing-row\"},[_c('router-link',{attrs:{\"to\":'/admin/district/' + d.id + '/section'}},[_vm._v(\" \"+_vm._s(d.name)+\" \")])],1)}),0):_c('div',{staticClass:\"loading text-center brand-red\"},[_c('div',{staticClass:\"my-2\"},[_c('loading')],1),_c('div',{staticClass:\"my-3\"},[_c('p',[_vm._v(_vm._s(_vm.$t('userAdmin.loading')))])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-district-list\">\r\n    <div v-if=\"districts\" class=\"listing\">\r\n      <div v-for=\"(d, i) in districts\" :key=\"i\" class=\"listing-row\">\r\n        <router-link :to=\"'/admin/district/' + d.id + '/section'\">\r\n          {{ d.name }}\r\n        </router-link>\r\n      </div>\r\n    </div>\r\n    <div v-else class=\"loading text-center brand-red\">\r\n      <div class=\"my-2\">\r\n        <loading />\r\n      </div>\r\n      <div class=\"my-3\">\r\n        <p>{{ $t('userAdmin.loading') }}</p>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import loading from '../SPRLoading.vue'\r\n  export default {\r\n    name: 'AdminDistrictList',\r\n    components: { loading },\r\n    data: function () {\r\n      return {\r\n        districts: null\r\n      }\r\n    },\r\n    mounted: function () {\r\n      if (!this.hasAdmin() && !this.hasRole('NationalAdmin') && !this.hasRole('NationalEmployee')) {\r\n        this.showAlertPermissionDenied().then(() => this.$router.push('/profile'))\r\n      } else {\r\n        this.$http.get(this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.districts[0]).then(success => {\r\n          this.districts = success.body\r\n        }, f => {\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .comp-district-list {\r\n    background: $brand-white;\r\n    padding: 15px;\r\n\r\n    .listing {\r\n      display: flex;\r\n      display: -ms-flexbox;\r\n      flex-direction: column;\r\n      -ms-flex-direction: column;\r\n\r\n      .listing-row {\r\n        padding: 10px 15px;\r\n        color: $brand-red;\r\n\r\n        &:nth-child(even) {\r\n          background: rgba(0,0,0,0.03);\r\n        }\r\n\r\n        a {\r\n          color: $brand-red;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DistrictList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DistrictList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DistrictList.vue?vue&type=template&id=7a98ee77\"\nimport script from \"./DistrictList.vue?vue&type=script&lang=js\"\nexport * from \"./DistrictList.vue?vue&type=script&lang=js\"\nimport style0 from \"./DistrictList.vue?vue&type=style&index=0&id=7a98ee77&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"comp-delete-profile-list\"},[(_vm.profiledeletionrequests)?_c('div',{staticClass:\"listing\"},_vm._l((_vm.profiledeletionrequests),function(d,i){return _c('div',{key:i,staticClass:\"row listing-row\"},[_c('div',{staticClass:\"col-11\"},[(d.origin === 2)?_c('router-link',{attrs:{\"to\":'/admin/user/' + d.profileId}},[_vm._v(\" \"+_vm._s(d.firstName)+\" \"+_vm._s(d.lastName)+\" (\"+_vm._s(_vm.toFinnishDate(d.created))+\") \"+_vm._s(_vm.$t('profileDeleteRequest.origin' + _vm.getProfileDeleteRequestOriginText(d.origin)) + '. ' + _vm.$t('profile.membershipStatus') + \": \" + _vm.getMembershipStatusText(d.membershipStatus))+\" \")]):_c('router-link',{attrs:{\"to\":'/admin/user/' + d.profileId}},[_vm._v(\" \"+_vm._s(d.firstName)+\" \"+_vm._s(d.lastName)+\" (\"+_vm._s(_vm.toFinnishDate(d.created))+\") \"+_vm._s(_vm.$t('profileDeleteRequest.origin' + _vm.getProfileDeleteRequestOriginText(d.origin)))+\" \")])],1),_c('div',{staticClass:\"col-1\"},[_c('div',[_c('font-awesome-icon',{staticClass:\"clickable-icon\",attrs:{\"icon\":\"trash-alt\"},on:{\"click\":function($event){return _vm.handleDelete(d.id)}}})],1)])])}),0):_c('div',{staticClass:\"loading text-center brand-red\"},[_c('div',{staticClass:\"my-2\"},[_c('loading')],1),_c('div',{staticClass:\"my-3\"},[_c('p',[_vm._v(_vm._s(_vm.$t('userAdmin.loading')))])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-delete-profile-list\">\r\n    <div v-if=\"profiledeletionrequests\" class=\"listing\">\r\n      <div v-for=\"(d, i) in profiledeletionrequests\" :key=\"i\" class=\"row listing-row\">\r\n        <div class=\"col-11\">\r\n          <router-link v-if=\"d.origin === 2\" :to=\"'/admin/user/' + d.profileId\">\r\n            {{ d.firstName }} {{ d.lastName }} ({{ toFinnishDate(d.created) }}) {{ $t('profileDeleteRequest.origin' + getProfileDeleteRequestOriginText(d.origin)) + '. ' + $t('profile.membershipStatus') + \": \" + getMembershipStatusText(d.membershipStatus) }}\r\n          </router-link>\r\n          <router-link v-else :to=\"'/admin/user/' + d.profileId\">\r\n            {{ d.firstName }} {{ d.lastName }} ({{ toFinnishDate(d.created) }}) {{ $t('profileDeleteRequest.origin' + getProfileDeleteRequestOriginText(d.origin)) }}\r\n          </router-link>\r\n        </div>\r\n        <div class=\"col-1\">\r\n          <div>\r\n            <font-awesome-icon icon=\"trash-alt\" class=\"clickable-icon\" @click=\"handleDelete(d.id)\" />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div v-else class=\"loading text-center brand-red\">\r\n      <div class=\"my-2\">\r\n        <loading />\r\n      </div>\r\n      <div class=\"my-3\">\r\n        <p>{{ $t('userAdmin.loading') }}</p>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n\r\n  import loading from '../SPRLoading.vue'\r\n  import moment from 'moment'\r\n  import { ProfileDeleteRequestDto } from '@/types'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    profiledeletionrequests: Array<ProfileDeleteRequestDto> | undefined\r\n}\r\n  export default Vue.extend({\r\n    name: 'DeleteProfileList',\r\n    components: { loading },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        profiledeletionrequests: undefined\r\n      }\r\n    },\r\n    mounted (): void {\r\n      //@ts-ignore\r\n      if (!this.hasAdmin()) {\r\n        // @ts-ignore (cannot find mixins)\r\n        this.showAlertPermissionDenied().then(() => this.$router.push('/profile'))\r\n      } else {\r\n        this.fetchProfileDeletionRequests()\r\n      }\r\n    },\r\n    methods: {\r\n      fetchProfileDeletionRequests (): void {\r\n        const url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.profiledeleterequests[0]\r\n        this.$http.get(url).then(success => {\r\n          this.profiledeletionrequests = success.data as Array<ProfileDeleteRequestDto>\r\n        }, f => {\r\n          // @ts-ignore (cannot find mixins)\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        })\r\n      },\r\n      toFinnishDate (date): string {\r\n        if (date) {\r\n          return moment.utc(date).local().format('D.M.YYYY H.mm')\r\n        }\r\n        return ''\r\n      },\r\n      handleDelete (id): void {\r\n        if (!confirm(this.$t('profileDeleteRequest.confirmText').toString())) return\r\n\r\n        const url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.deleteprofiledeleterequest[0]\r\n\r\n        this.$http.delete(url + '/' + id).then(success => {\r\n          this.fetchProfileDeletionRequests()\r\n        }, f => {\r\n          // @ts-ignore (cannot find mixins)\r\n          this.showAlertError(this.$t('common.deleteFailed'))\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .comp-delete-profile-list {\r\n    background: $brand-white;\r\n    padding: 15px;\r\n\r\n    .listing {\r\n      display: flex;\r\n      display: -ms-flexbox;\r\n      flex-direction: column;\r\n      -ms-flex-direction: column;\r\n\r\n      .listing-row {\r\n        padding: 10px 15px;\r\n        color: $brand-red;\r\n\r\n        &:nth-child(even) {\r\n          background: rgba(0,0,0,0.03);\r\n        }\r\n\r\n        a {\r\n          color: $brand-red;\r\n        }\r\n      }\r\n    }\r\n    .clickable-icon {\r\n      cursor: pointer;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteProfileList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteProfileList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeleteProfileList.vue?vue&type=template&id=69690d82&scoped=true\"\nimport script from \"./DeleteProfileList.vue?vue&type=script&lang=ts\"\nexport * from \"./DeleteProfileList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DeleteProfileList.vue?vue&type=style&index=0&id=69690d82&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"69690d82\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"col-12 comp-admin-organization-level my-3\"},[_c('adminnavigation',{attrs:{\"options\":_vm.options}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"comp-horizontal-navigation mb-3\"},_vm._l((_vm.options),function(o,k){return _c('router-link',{key:'nav_' + o.text + '_option_' + k + '_' + _vm._uid,staticClass:\"opt\",attrs:{\"to\":o.uri}},[_vm._v(\" \"+_vm._s(o.text)+\" \")])}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-horizontal-navigation mb-3\">\r\n    <router-link v-for=\"(o, k) in options\"\r\n                 :key=\"'nav_' + o.text + '_option_' + k + '_' + _uid\"\r\n                 class=\"opt\"\r\n                 :to=\"o.uri\"\r\n    >\r\n      {{ o.text }}\r\n    </router-link>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'AdminHorizontalNavigation',\r\n    props: {\r\n      options: {\r\n        type: Array,\r\n        default: () => []\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n.comp-horizontal-navigation {\r\n  .opt {\r\n    display: inline-block;\r\n    padding: 10px;\r\n\r\n    font-size: 18px;\r\n    text-decoration: none;\r\n\r\n    font-family: \"Signa-Bold\", Sans-Serif;\r\n\r\n    color: $brand-grey10;\r\n\r\n    transition: color 0.33s;\r\n\r\n    &:hover {\r\n      color: $brand-black;\r\n      transition: color 0.33s;\r\n    }\r\n  }\r\n\r\n  .router-link-active {\r\n    color: $brand-red !important;\r\n    border-bottom: 2px solid $brand-red;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AdminHorizontalNavigation.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AdminHorizontalNavigation.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AdminHorizontalNavigation.vue?vue&type=template&id=75f50c01\"\nimport script from \"./AdminHorizontalNavigation.vue?vue&type=script&lang=ts\"\nexport * from \"./AdminHorizontalNavigation.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AdminHorizontalNavigation.vue?vue&type=style&index=0&id=75f50c01&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"col-12 comp-admin-organization-level my-3\">\r\n    <adminnavigation :options=\"options\" />\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import adminnavigation from './AdminHorizontalNavigation.vue'\r\n  export default {\r\n    name: 'AdminOrganizationLevel',\r\n    components: {\r\n      adminnavigation\r\n    },\r\n    props: {\r\n      primary: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      filter: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        optionsConstant: []\r\n      }\r\n    },\r\n    computed: {\r\n      options: function () {\r\n        var rv = this.optionsConstant.concat()\r\n\r\n        rv.push({ uri: '/admin/district', text: this.$t('userAdmin.districts'), primary: 'district' })\r\n        rv.push({ uri: '/admin/section', text: this.$t('userAdmin.sections'), primary: 'section' })\r\n        rv.push({ uri: '/admin/user', text: this.$t('userAdmin.users'), primary: 'user' })\r\n        rv.push({ uri: '/admin/employee', text: this.$t('userAdmin.employees'), primary: 'employee' })\r\n        rv.push({ uri: '/admin/group', text: this.$t('userAdmin.groups'), primary: 'group' })\r\n        rv.push({ uri: '/admin/deleteprofile', text: this.$t('userAdmin.deleteProfile'), primary: 'deleteprofile' })\r\n        rv.push({ uri: '/admin/friendship', text: this.$t('userAdmin.friendshipManagement'), primary: 'friendship' })\r\n        rv.push({ uri: '/admin/training/1', text: this.$t('userAdmin.training'), primary: 'training' })\r\n        rv.push({ uri: '/admin/products', text: 'Jäsenmaksutuotteet', primary: 'products' })\r\n        rv.push({ uri: '/admin/externalforms', text: this.$t('userAdmin.externalForms'), primary: 'externalforms' })\r\n        rv.push({ uri: '/admin/settings/eventbackgroundimages', text: this.$t('userAdmin.settingsHeader'), primary: 'settings' })\r\n        return rv\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrganizationAdmin.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrganizationAdmin.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./OrganizationAdmin.vue?vue&type=template&id=6c08bb7c\"\nimport script from \"./OrganizationAdmin.vue?vue&type=script&lang=js\"\nexport * from \"./OrganizationAdmin.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"col-12 comp-admin-organization-level my-3\"},[_c('adminnavigation',{attrs:{\"options\":_vm.options}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"col-12 comp-admin-organization-level my-3\">\r\n    <adminnavigation :options=\"options\" />\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import adminnavigation from './AdminHorizontalNavigation.vue'\r\n  export default {\r\n    name: 'AdminNationLevel',\r\n    components: {\r\n      adminnavigation\r\n    },\r\n    props: {\r\n      primary: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      filter: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        optionsConstant: []\r\n      }\r\n    },\r\n    computed: {\r\n      options: function () {\r\n        var rv = this.optionsConstant.concat()\r\n\r\n        rv.push({ uri: '/admin/district', text: this.$t('userAdmin.districts'), primary: 'district' })\r\n        rv.push({ uri: '/admin/section', text: this.$t('userAdmin.sections'), primary: 'section' })\r\n        rv.push({ uri: '/admin/user', text: this.$t('userAdmin.users'), primary: 'user' })\r\n        rv.push({ uri: '/admin/group', text: this.$t('userAdmin.groups'), primary: 'group' })\r\n        rv.push({ uri: '/admin/training/1', text: this.$t('userAdmin.training'), primary: 'training' })\r\n\r\n        return rv\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NationalAdmin.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NationalAdmin.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./NationalAdmin.vue?vue&type=template&id=7fe33444\"\nimport script from \"./NationalAdmin.vue?vue&type=script&lang=js\"\nexport * from \"./NationalAdmin.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"col-12 comp-admin-organization-level my-3\"},[_c('adminnavigation',{attrs:{\"options\":_vm.options}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"col-12 comp-admin-organization-level my-3\">\r\n    <adminnavigation :options=\"options\" />\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import adminnavigation from './AdminHorizontalNavigation.vue'\r\n  export default {\r\n    name: 'EmployeeNationLevel',\r\n    components: {\r\n      adminnavigation\r\n    },\r\n    props: {\r\n      primary: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      filter: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        optionsConstant: []\r\n      }\r\n    },\r\n    computed: {\r\n      options: function () {\r\n        var rv = this.optionsConstant.concat()\r\n\r\n        rv.push({ uri: '/admin/district', text: this.$t('userAdmin.districts'), primary: 'district' })\r\n        rv.push({ uri: '/admin/section', text: this.$t('userAdmin.sections'), primary: 'section' })\r\n        rv.push({ uri: '/admin/user', text: this.$t('userAdmin.users'), primary: 'user' })\r\n        rv.push({ uri: '/admin/group', text: this.$t('userAdmin.groups'), primary: 'group' })\r\n\r\n        return rv\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NationalEmployee.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NationalEmployee.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./NationalEmployee.vue?vue&type=template&id=eeeca1a0\"\nimport script from \"./NationalEmployee.vue?vue&type=script&lang=js\"\nexport * from \"./NationalEmployee.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row admin-district-level\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.district.name))])]),_c('div',{staticClass:\"col-12\"},[_c('adminnavigation',{attrs:{\"options\":_vm.options}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row admin-district-level\">\r\n    <div class=\"col-12\">\r\n      <h3>{{ district.name }}</h3>\r\n    </div>\r\n    <div class=\"col-12\">\r\n      <adminnavigation :options=\"options\" />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n\r\n  import adminnavigation from './AdminHorizontalNavigation.vue'\r\n\r\n  export interface TemplateComponentData {\r\n    optionsConstant: any,\r\n    loaded: any,\r\n    district: any\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'AdminDistrictLevel',\r\n    components: {\r\n      adminnavigation\r\n    },\r\n    props: {\r\n      primary: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      filter: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        optionsConstant: [\r\n          { uri: '/admin/district/' + this.id + '/section', text: this.$t('userAdmin.sections'), primary: 'section' },\r\n          { uri: '/admin/district/' + this.id + '/user', text: this.$t('userAdmin.users'), primary: 'user' },\r\n          { uri: '/admin/district/' + this.id + '/messages', text: this.$t('userAdmin.messages'), primary: 'user' },\r\n          { uri: '/admin/district/' + this.id + '/group', text: this.$t('userAdmin.groups'), primary: 'group' }\r\n        ],\r\n        loaded: 0,\r\n        district: { name: '' }\r\n      }\r\n    },\r\n    computed: {\r\n      options (): any {\r\n        var rv = this.optionsConstant.concat()\r\n\r\n        rv.push({ uri: '/admin/training/1', text: this.$t('userAdmin.training'), primary: 'training' })\r\n\r\n        return rv\r\n      }\r\n    },\r\n    mounted: function () {\r\n      this.triggerFetch()\r\n    },\r\n    methods: {\r\n      fetchDistrict: function (uri, retry) {\r\n        this.$http.get(uri).then((s: any) => {\r\n          this.loaded = 1\r\n          this.district = s.body\r\n        }, f => {\r\n          if (retry > 0) {\r\n            this.fetchDistrict(uri, retry - 1)\r\n          } else {\r\n            this.loaded = -1\r\n          }\r\n        })\r\n      },\r\n      triggerFetch: function () {\r\n        this.loaded = 0\r\n        var url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.district[0].replace('{0}', this.id)\r\n        this.fetchDistrict(url, 3)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DistrictAdmin.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DistrictAdmin.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DistrictAdmin.vue?vue&type=template&id=5afc8e49\"\nimport script from \"./DistrictAdmin.vue?vue&type=script&lang=ts\"\nexport * from \"./DistrictAdmin.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"admin-section-level\"},[_c('h3',[_vm._v(_vm._s(_vm.section.name))]),(_vm.loaded === 1)?_c('div',{staticClass:\"row section-editor mb-2\"},[_c('div',{staticClass:\"col-12\"},[_c('descriptioneditor',{staticClass:\"section-desc-editor my-2\",attrs:{\"title\":_vm.$t('userAdmin.sectionDescription'),\"save-event\":\"on-save\",\"is-valid\":!_vm.errors.has('description'),\"name\":\"description\"},on:{\"on-save\":_vm.updateDescription},model:{value:(_vm.section.description),callback:function ($$v) {_vm.$set(_vm.section, \"description\", $$v)},expression:\"section.description\"}})],1),_c('div',{staticClass:\"col-sm-6 col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('userAdmin.districtName')))]),_c('dd',[_vm._v(_vm._s(_vm.section.districtName))]),_c('dt',[_vm._v(_vm._s(_vm.$t('userAdmin.sectionLanguage')))]),_c('dd',[_vm._v(_vm._s(_vm.sectionLanguage))])])]),_c('div',{staticClass:\"col-sm-6 col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('userAdmin.sectionZipCodes')))]),_c('dd',[_vm._v(_vm._s(_vm.sectionZipCodes))])])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"section-block reportcontact\"},[_c('div',{staticClass:\"section-block-container\"},[(_vm.loaded === 1)?_c('sectioncontacts',{staticClass:\"section-report-definition-editor my-2\",attrs:{\"section-id\":_vm.section.id,\"title\":_vm.$t('userAdmin.sectionReportTitle'),\"contacts\":_vm.section.contacts,\"report-frequency\":_vm.reportFrequency},on:{\"commitChanges\":_vm.updateContacts}}):_vm._e()],1)])])]):_vm._e(),_c('h5',[_vm._v(_vm._s(_vm.$t('userAdmin.newVolunteers')))]),(_vm.loaded === 1)?_c('div',{staticClass:\"row mb-2 new-volunteers\"},[_c('userlisting',{attrs:{\"users\":_vm.section.volunteers}})],1):_vm._e(),(_vm.loaded === 0)?_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-12 brand-red text-center\"},[_c('loading')],1)]):_vm._e(),(_vm.loaded === -1)?_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-12 brand-red text-center\"},[_c('span',{staticClass:\"cap-label d-block mb-2\"},[_vm._v(_vm._s(_vm.$t('userAdmin.sectionLoadFailed')))]),_c('a',{staticClass:\"d-block retry-area\",attrs:{\"href\":\"javascript:void(0)\",\"tabindex\":\"0\"},on:{\"click\":_vm.triggerFetch}},[_c('font-awesome-icon',{attrs:{\"icon\":\"redo\",\"size\":\"2x\",\"fixed-width\":\"\",\"aria-hidden\":\"true\"}}),_c('br'),_c('span',{staticClass:\"cap-label brand-red\"},[_vm._v(_vm._s(_vm.$t('userAdmin.retryLoad')))])],1)])]):_vm._e(),_c('adminnavigation',{attrs:{\"options\":_vm.options}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container-fluid\"},[_c('div',[(_vm.results)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_vm._l((_vm.results),function(r,i){return _c('result',{key:'resultset_' + _vm._uid + '_' + i + '_' + r.profileId,attrs:{\"volunteer\":r,\"show-contacted\":true}})}),(_vm.total === 0)?_c('div',{staticClass:\"text-center my-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.emptySet'))+\" \")]):_vm._e()],2)]):_vm._e()]),_c('pager',{attrs:{\"take\":_vm.take,\"skip\":_vm.skip,\"total\":_vm.total,\"max-display\":_vm.maxDisplay,\"of-text\":\"/\"},on:{\"pagesizechanged\":_vm.onPageSizeChanged,\"pagerchanged\":_vm.pagerClick,\"pagerprevious\":function($event){return _vm.pagerPage(-1)},\"pagernext\":function($event){return _vm.pagerPage(1)}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row comp-search-result my-2\"},[_c('div',{staticClass:\"col-12 grid-row\",on:{\"click\":_vm.clicked}},[_c('div',{staticClass:\"grid-img\"},[_c('sprportrait',{staticClass:\"portrait-size\",style:(_vm.portraitStyle)})],1),_c('div',{staticClass:\"grid-name\"},[(_vm.open)?_c('font-awesome-icon',{staticClass:\"brand-red smallView\",attrs:{\"icon\":\"chevron-down\",\"aria-hidden\":\"true\"}}):_c('font-awesome-icon',{staticClass:\"brand-red smallView\",attrs:{\"icon\":\"chevron-up\",\"aria-hidden\":\"true\"}}),_vm._v(\" \"+_vm._s(_vm.volunteer.lastName)+_vm._s(_vm.volunteer.firstName ? ', ' + _vm.volunteer.firstName : '')+\" \")],1),_c('div',{staticClass:\"grid-contacted\"},[(_vm.showContacted && _vm.volunteer.contactedDate)?_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":\"check-circle\"}}),_c('span',{staticClass:\"contactedtext\"},[_vm._v(_vm._s(_vm.$t('profile.contacted')))])],1):_vm._e()]),_c('div',{staticClass:\"grid-createddate\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"calendar\"}}),_vm._v(\" \"+_vm._s(_vm.createDateFormat(_vm.volunteer.created))+\" \")],1),_c('div',{staticClass:\"grid-zip\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"map-marker-alt\"}}),_vm._v(\" \"+_vm._s(_vm.volunteer.workingZipCode)+\" \"),(_vm.open)?_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-down\",\"aria-hidden\":\"true\"}}):_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-up\",\"aria-hidden\":\"true\"}})],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.open),expression:\"open\"}],staticClass:\"col-12 info\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6 col-12\"},[_c('dl',[_c('dd',[_vm._v(_vm._s(_vm.profileState))]),_c('dt',[_vm._v(_vm._s(_vm.$t('wizard.preferredContactMethod')))]),_c('dd',[_vm._v(_vm._s(_vm.profilePreferredContactMethods))]),_c('dt',[_vm._v(_vm._s(_vm.$t('wizard.alreadyInvolved')))]),_c('dd',[_vm._v(_vm._s(_vm.profileInvolvedEventCategories))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.email')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteer.email))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.phoneNumber')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteer.phoneNumber))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.address')))]),_c('dd',[_vm._v(\" \"+_vm._s(_vm.volunteer.streetAddress)+\", \"+_vm._s(_vm.volunteer.zipCode)+\" \"+_vm._s(_vm.volunteer.city)+\" \")]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.dateOfBirth')))]),_c('dd',[_vm._v(_vm._s(_vm.formatDate(_vm.volunteer.age)))])])]),_c('div',{staticClass:\"col-sm-6 col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('adminUserEditor.workingZipCode')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteer.workingZipCode))]),_c('dt',[_vm._v(_vm._s(_vm.$t('adminUserEditor.userCreated')))]),_c('dd',[_vm._v(_vm._s(_vm.createDateFormat(_vm.volunteer.created)))]),_c('dt',[_vm._v(_vm._s(_vm.$t('adminUserEditor.volunteerOnline')))]),_c('dd',[_vm._v(_vm._s(_vm.formatBoolean(_vm.volunteer.volunteerOnline)))]),_c('dt',[_vm._v(_vm._s(_vm.$t('customerSearch.myTimes')))]),_c('dd',[_vm._v(_vm._s(_vm.availabilityTimes))]),_c('dt',[_vm._v(_vm._s(_vm.$t('transportation.title')))]),_c('dd',[_vm._v(_vm._s(_vm.transportation))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.travelTime')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteer.travelTime)+\" min\")])])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('profile.nativeLanguage')))]),_c('dd',[_vm._v(_vm._s(_vm.normalizeTranslation(_vm.volunteer.nativeLanguage)))]),_c('dt',[_vm._v(_vm._s(_vm.$t('nonIdentProfileForm.languageSpoken')))]),_c('dd',[_vm._v(_vm._s(_vm.spokenLanguages))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.interestEditorHeader')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteerInterests))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.skillEditorHeader')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteerSkills))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.motto')))]),_c('dd',[_vm._v(_vm._s(_vm.motto))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.story')))]),_c('dd',[_vm._v(_vm._s(_vm.story))]),_c('dt',[_vm._v(_vm._s(_vm.$t('groups.actionGroupsTitle')))]),_c('dd',[_vm._v(_vm._s(_vm.actionGroups))]),_c('dt',[_vm._v(_vm._s(_vm.$t('groups.standardGroupsTitle')))]),_c('dd',[_vm._v(_vm._s(_vm.standardGroups))])])]),_c('div',{staticClass:\"col-12 col-sm-6\"},[(_vm.roleLoadState < 2)?_c('div',{staticClass:\"text-center\"},[_c('loading')],1):_vm._e(),(_vm.roleLoadState >= 2)?_c('div',[_c('h6',[_vm._v(\"Punaisen Ristin jäsenyystiedot\")]),(_vm.member)?_c('dl',[_c('MembershipData',{attrs:{\"member\":_vm.member}}),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.roles')))]),_c('dd',[_vm._v(_vm._s(_vm.userRoles))])],1):_vm._e(),_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('profile.rcCourses')))]),(_vm.trainText)?_c('dd',[_vm._v(\" \"+_vm._s(_vm.trainText)+\" \")]):_c('dd',[_vm._v(\" - \")])])]):_vm._e()])]),_c('div',{staticClass:\"col-12 text-center\"},[_c('sprbutton',{staticClass:\"d-inline-block my-2\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('userAdmin.editUser'),\"click-event\":\"edit\"},on:{\"edit\":_vm.editClick}}),(_vm.showContacted && !_vm.volunteer.contactedDate)?_c('sprbutton',{staticClass:\"d-inline-block my-2\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('userAdmin.markContacted'),\"click-event\":\"markContacted\"},on:{\"markContacted\":_vm.markContactedClick}}):_vm._e(),(_vm.showContacted && _vm.volunteer.contactedDate)?_c('sprbutton',{staticClass:\"d-inline-block my-2\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('userAdmin.markUnContacted'),\"click-event\":\"markUnContacted\"},on:{\"markUnContacted\":_vm.markUnContactedClick}}):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row comp-search-result my-2\">\r\n    <div class=\"col-12 grid-row\" @click=\"clicked\">\r\n      <div class=\"grid-img\">\r\n        <sprportrait :style=\"portraitStyle\"\r\n                     class=\"portrait-size\"\r\n        />\r\n      </div>\r\n      <div class=\"grid-name\">\r\n        <font-awesome-icon v-if=\"open\" icon=\"chevron-down\" class=\"brand-red smallView\" aria-hidden=\"true\" />\r\n        <font-awesome-icon v-else icon=\"chevron-up\" class=\"brand-red smallView\" aria-hidden=\"true\" />\r\n        {{ volunteer.lastName }}{{ volunteer.firstName ? ', ' + volunteer.firstName : '' }}\r\n      </div>\r\n      <div class=\"grid-contacted\">\r\n        <span v-if=\"showContacted && volunteer.contactedDate\"><font-awesome-icon icon=\"check-circle\" /><span class=\"contactedtext\">{{ $t('profile.contacted') }}</span></span>\r\n      </div>\r\n      <div class=\"grid-createddate\">\r\n        <font-awesome-icon icon=\"calendar\" />\r\n        {{ createDateFormat(volunteer.created) }}\r\n      </div>\r\n      <div class=\"grid-zip\">\r\n        <font-awesome-icon icon=\"map-marker-alt\" />\r\n        {{ volunteer.workingZipCode }}\r\n        <font-awesome-icon v-if=\"open\" icon=\"chevron-down\" class=\"brand-red\" aria-hidden=\"true\" />\r\n        <font-awesome-icon v-else icon=\"chevron-up\" class=\"brand-red\" aria-hidden=\"true\" />\r\n      </div>\r\n    </div>\r\n    <div v-show=\"open\" class=\"col-12 info\">\r\n      <div class=\"row\">\r\n        <div class=\"col-sm-6 col-12\">\r\n          <dl>\r\n            <dd>{{ profileState }}</dd>\r\n            <dt>{{ $t('wizard.preferredContactMethod') }}</dt>\r\n            <dd>{{ profilePreferredContactMethods }}</dd>\r\n            <!-- Profile.InvolvedEventCategories -->\r\n            <dt>{{ $t('wizard.alreadyInvolved') }}</dt>\r\n            <dd>{{ profileInvolvedEventCategories }}</dd>\r\n            <dt>{{ $t('profile.email') }}</dt>\r\n            <dd>{{ volunteer.email }}</dd>\r\n            <dt>{{ $t('profile.phoneNumber') }}</dt>\r\n            <dd>{{ volunteer.phoneNumber }}</dd>\r\n            <dt>{{ $t('profile.address') }}</dt>\r\n            <dd>\r\n              {{ volunteer.streetAddress }},\r\n              {{ volunteer.zipCode }}\r\n              {{ volunteer.city }}\r\n            </dd>\r\n            <dt>{{ $t('profile.dateOfBirth') }}</dt>\r\n            <dd>{{ formatDate(volunteer.age) }}</dd>\r\n          </dl>\r\n        </div>\r\n        <div class=\"col-sm-6 col-12\">\r\n          <dl>\r\n            <dt>{{ $t('adminUserEditor.workingZipCode') }}</dt>\r\n            <dd>{{ volunteer.workingZipCode }}</dd>\r\n            <dt>{{ $t('adminUserEditor.userCreated') }}</dt>\r\n            <dd>{{ createDateFormat(volunteer.created) }}</dd>\r\n            <dt>{{ $t('adminUserEditor.volunteerOnline') }}</dt>\r\n            <dd>{{ formatBoolean(volunteer.volunteerOnline) }}</dd>\r\n            <dt>{{ $t('customerSearch.myTimes') }}</dt>\r\n            <dd>{{ availabilityTimes }}</dd>\r\n            <dt>{{ $t('transportation.title') }}</dt>\r\n            <dd>{{ transportation }}</dd>\r\n            <dt>{{ $t('profile.travelTime') }}</dt>\r\n            <dd>{{ volunteer.travelTime }} min</dd>\r\n          </dl>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 col-sm-6\">\r\n          <dl>\r\n            <dt>{{ $t('profile.nativeLanguage') }}</dt>\r\n            <dd>{{ normalizeTranslation(volunteer.nativeLanguage) }}</dd>\r\n            <dt>{{ $t('nonIdentProfileForm.languageSpoken') }}</dt>\r\n            <dd>{{ spokenLanguages }}</dd>\r\n            <dt>{{ $t('profile.interestEditorHeader') }}</dt>\r\n            <dd>{{ volunteerInterests }}</dd>\r\n            <dt>{{ $t('profile.skillEditorHeader') }}</dt>\r\n            <dd>{{ volunteerSkills }}</dd>\r\n            <dt>{{ $t('profile.motto') }}</dt>\r\n            <dd>{{ motto }}</dd>\r\n            <dt>{{ $t('profile.story') }}</dt>\r\n            <dd>{{ story }}</dd>\r\n            <dt>{{ $t('groups.actionGroupsTitle') }}</dt>\r\n            <dd>{{ actionGroups }}</dd>\r\n            <dt>{{ $t('groups.standardGroupsTitle') }}</dt>\r\n            <dd>{{ standardGroups }}</dd>\r\n          </dl>\r\n        </div>\r\n        <div class=\"col-12 col-sm-6\">\r\n          <div v-if=\"roleLoadState < 2\" class=\"text-center\">\r\n            <loading />\r\n          </div>\r\n          <div v-if=\"roleLoadState >= 2\">\r\n            <h6>Punaisen Ristin jäsenyystiedot</h6>\r\n            <dl v-if=\"member\">\r\n              <MembershipData :member=\"member\"></MembershipData>\r\n              <dt>{{ $t('profile.roles') }}</dt>\r\n              <dd>{{ userRoles }}</dd>\r\n            </dl>\r\n            <dl>\r\n              <dt>{{ $t('profile.rcCourses') }}</dt>\r\n              <dd v-if=\"trainText\">\r\n                {{ trainText }}\r\n              </dd>\r\n              <dd v-else>\r\n                -\r\n              </dd>\r\n            </dl>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12 text-center\">\r\n        <sprbutton type=\"primary\" :size=\"1\" :title=\"$t('userAdmin.editUser')\"\r\n                   class=\"d-inline-block my-2\" click-event=\"edit\" @edit=\"editClick\"\r\n        />\r\n        <sprbutton v-if=\"showContacted && !volunteer.contactedDate\" type=\"primary\" :size=\"1\" :title=\"$t('userAdmin.markContacted')\"\r\n                   class=\"d-inline-block my-2\" click-event=\"markContacted\" @markContacted=\"markContactedClick\"\r\n        />\r\n        <sprbutton v-if=\"showContacted && volunteer.contactedDate\" type=\"primary\" :size=\"1\" :title=\"$t('userAdmin.markUnContacted')\"\r\n                   class=\"d-inline-block my-2\" click-event=\"markUnContacted\" @markUnContacted=\"markUnContactedClick\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprportrait from '../SPRPortrait.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import cache from '../../mixins/cache.js'\r\n  import inpututils from '../../mixins/inpututils.js'\r\n  import moment from 'moment'\r\n  import MembershipData from '../MembershipData.vue'\r\n  import { CrmDataDto, UserProfileDto } from '@/types/index'\r\n  import { TranslateResult } from 'vue-i18n'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    open: boolean,\r\n    roleLoadState: number,\r\n    roles: Array<string> | undefined,\r\n    member: CrmDataDto | undefined,\r\n    train: Array<string> | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'UserSearchResult',\r\n    components: { sprbutton, sprportrait, loading, MembershipData },\r\n    mixins: [cache, enumhelper, inpututils],\r\n    props: {\r\n      volunteer: {\r\n        type: Object as () => UserProfileDto,\r\n        default: null\r\n      },\r\n      showContacted: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        open: false,\r\n        roleLoadState: 0,\r\n        roles: [] as Array<string>,\r\n        member: undefined,\r\n        train: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      profileInvolvedEventCategories (): TranslateResult | string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getProfileInvolvedEventCategoriesMaskTranslation(this.volunteer?.involvedEventCategories)\r\n      },\r\n      profilePreferredContactMethods (): TranslateResult | string {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getProfilePreferredContactMethodsMaskTranslation(this.volunteer?.preferredContactMethods)\r\n      },\r\n      trainText (): string | null {\r\n        // @ts-ignore\r\n        return this.parseArray(this.train) || null\r\n      },\r\n      userRoles (): string {\r\n        if (this.roles && this.roles.length) {\r\n          const self = this\r\n          const mapped = _.map(this.roles, function (x) {\r\n            // @ts-ignore cannot find mixins\r\n            return self.$t('roles.' + self.lcFirst(x))\r\n          })\r\n          return mapped.join(', ')\r\n        }\r\n        return '-'\r\n      },\r\n      portraitStyle (): string {\r\n        const portrait = this.volunteer && this.volunteer.portrait ? this.volunteer.portrait : require('../../assets/img/anon-portrait.png')\r\n        return 'background: url(' + portrait + '); background-size: cover; background-position: center center;'\r\n      },\r\n      volunteerInterests (): string {\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(this.volunteer.areasOfInterest, this.$store.state.profileAreasOfInterest, 'interest') || '-'\r\n      },\r\n      volunteerSkills (): string {\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(this.volunteer.personalSkills, this.$store.state.profilePersonalSkills, 'skills') || '-'\r\n      },\r\n      profileState (): TranslateResult | string | null {\r\n        // this.volunteer.profileState\r\n        // profile.activeNoContact\r\n        // profile.activeNoNew\r\n        // profile.activeOpen\r\n        // profile.inactive\r\n        switch (this.volunteer.profileState) {\r\n        case 1:\r\n          return this.$t('profile.activeOpen')\r\n        case 2:\r\n          return this.$t('profile.activeNoContact')\r\n        case 3:\r\n          return this.$t('profile.activeNoNew')\r\n        case 4:\r\n          return this.$t('profile.inactive')\r\n        }\r\n        return null\r\n      },\r\n      motto (): string {\r\n        return this.volunteer.motto || '-'\r\n      },\r\n      story (): string {\r\n        return this.volunteer.story || '-'\r\n      },\r\n      spokenLanguages (): string {\r\n        if (this.volunteer.spokenLanguages && this.volunteer.spokenLanguages.length) {\r\n          const self = this\r\n          const langs = []\r\n          this.volunteer.spokenLanguages.forEach(function (l) {\r\n            // @ts-ignore cannot find mixins\r\n            langs.push(self.normalizeTranslation(l))\r\n          })\r\n          return langs.join(', ')\r\n        }\r\n        return '-'\r\n      },\r\n      transportation (): string {\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(this.volunteer.transportation, this.$store.state.transportation, 'transportation') || '-'\r\n      },\r\n      availabilityTimes (): string {\r\n        const bmArr = bitmaskhelper.bitmaskToArray(bitmaskhelper.translateEnumsToBitmask(this.volunteer.availabilityTimes!))\r\n        // @ts-ignore cannot find mixins\r\n        //return this.parseArray(this.volunteer.availabilityTimes, this.$store.state.availabilityTimes, 'availabilityTimes') || '-'\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(bmArr, this.$store.state.availabilityTimes, 'availabilityTimes') || '-'\r\n      },\r\n      actionGroups (): string {\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(this.volunteer.actionGroups) || '-'\r\n      },\r\n      standardGroups (): string {\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(this.volunteer.standardGroups) || '-'\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.$bus.$on('clicked-search-result', this.handleClicked)\r\n    },\r\n    beforeDestroy (): void {\r\n      this.$bus.$off('clicked-search-result')\r\n    },\r\n    methods: {\r\n      formatBoolean (val): string {\r\n        if (val != null) {\r\n          // @ts-ignore cannot find mixins\r\n          return this.tBool(val)\r\n        }\r\n        return '-'\r\n      },\r\n      createDateFormat (val): string {\r\n        return moment(val).format('DD.MM.YYYY')\r\n      },\r\n      fetchRoles (): void {\r\n        this.roleLoadState = 1\r\n        const self = this\r\n        var url = (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.roles[0]).replace('{0}', this.volunteer.profileId)\r\n        this.$http.get(url).then(s => {\r\n          self.roleLoadState = 2\r\n          self.roles = s.data\r\n        }, f => {\r\n          self.roleLoadState = 3\r\n        })\r\n\r\n        const url2 = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.membership[0].replace('{0}', this.volunteer.profileId)\r\n\r\n        // @ts-ignore cannot find mixins\r\n        this.fetchItem(url2, this.expSeconds(3600), function (x) {\r\n          self.member = x\r\n        })\r\n\r\n        const url3 = this.$store.state.apiBases.eventservice + this.$store.state.apiEndpoints.trainings[0].replace('{0}', this.volunteer.profileId)\r\n        // @ts-ignore cannot find mixins\r\n        this.fetchItem(url3, this.expSeconds(300), function (x) {\r\n          self.train = x\r\n        })\r\n      },\r\n      clicked (): void {\r\n        // fired on just this item clicked\r\n        const prevOpen = this.open\r\n        // @ts-ignore yeah shouldnt use this._uid, ts is right.\r\n        this.$bus.$emit('clicked-search-result', this._uid)\r\n        this.open = !prevOpen // open this accordion if it was previously closed, and vice versa\r\n        if (this.roleLoadState === 0) {\r\n          this.fetchRoles()\r\n        }\r\n      },\r\n      handleClicked (uid): void {\r\n        // fired on all clicks, for all accordions on the page. Close all the accordions\r\n        this.open = false\r\n      },\r\n      editClick (event): void {\r\n        this.$router.push('/admin/user/' + this.volunteer.profileId)\r\n      },\r\n      markContactedClick (): void {\r\n        this.$bus.$emit('volunteer-mark-contacted', this.volunteer.profileId)\r\n      },\r\n      markUnContactedClick (): void {\r\n        this.$bus.$emit('volunteer-mark-uncontacted', this.volunteer.profileId)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '~@/assets/scss/_variables.scss';\r\n  .comp-search-result {\r\n    background: $brand-white;\r\n    cursor: pointer;\r\n    border: 2px solid $brand-white;\r\n\r\n    &:hover {\r\n      border: 2px solid $brand-red;\r\n    }\r\n\r\n    .portrait-size {\r\n      height: 40px;\r\n      width: 40px;\r\n      margin: 10px;\r\n    }\r\n\r\n    .smallView {\r\n      display:none;\r\n    }\r\n\r\n    .grid-row {\r\n      display: grid;\r\n      display: -ms-grid;\r\n      grid-template-rows: 60px;\r\n      -ms-grid-rows: 60px;\r\n      grid-template-columns: 60px 3fr 1fr 110px 90px;\r\n      -ms-grid-columns: 60px 3fr 1fr 120px 90px;\r\n\r\n      svg {\r\n        color:$brand-red;\r\n      }\r\n\r\n    }\r\n    .grid-img {\r\n      grid-column: 1;\r\n      -ms-grid-column: 1;\r\n      line-height: 60px;\r\n    }\r\n\r\n    .grid-name {\r\n      grid-column: 2;\r\n      -ms-grid-column: 2;\r\n      line-height: 60px;\r\n\r\n      font-size: 13px;\r\n      letter-spacing: 0.3px;\r\n      font-weight: 700;\r\n      color: $brand-red;\r\n      text-transform: uppercase;\r\n      font-family: \"Signa-Light\", Sans-Serif;\r\n\r\n      overflow: hidden;\r\n      white-space: nowrap;\r\n      text-overflow: ellipsis;\r\n      max-width: 100%;\r\n    }\r\n\r\n    .grid-contacted {\r\n      grid-column: 3;\r\n      -ms-grid-column: 3;\r\n      line-height: 60px;\r\n      text-align: right;\r\n      color:$brand-success;\r\n      padding-right:5px;\r\n\r\n      svg {\r\n        color:$brand-success;\r\n        padding-right:5px;\r\n      }\r\n\r\n      @media (max-width: $media-md-max) {\r\n        .contactedtext {\r\n          display:none;\r\n        }\r\n      }\r\n\r\n    }\r\n\r\n    .grid-createddate {\r\n      grid-column: 4;\r\n      -ms-grid-column: 4;\r\n      line-height: 60px;\r\n      text-align: left;\r\n    }\r\n\r\n    .grid-zip {\r\n      grid-column: 5;\r\n      -ms-grid-column: 5;\r\n      line-height: 60px;\r\n      text-align: right;\r\n    }\r\n\r\n    @media (max-width: 520px) {\r\n        .grid-row {\r\n          grid-template-columns: 60px 3fr;\r\n        }\r\n        .grid-createddate {\r\n          display:none;\r\n        }\r\n        .grid-zip {\r\n          display:none;\r\n        }\r\n        .grid-contacted {\r\n          display:none;\r\n        }\r\n        .smallView {\r\n          display:inline;\r\n        }\r\n     }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserSearchResult.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserSearchResult.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserSearchResult.vue?vue&type=template&id=3665ea1e&scoped=true\"\nimport script from \"./UserSearchResult.vue?vue&type=script&lang=ts\"\nexport * from \"./UserSearchResult.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserSearchResult.vue?vue&type=style&index=0&id=3665ea1e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"3665ea1e\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"container-fluid\">\r\n    <div>\r\n      <div v-if=\"results\" class=\"row\">\r\n        <div class=\"col-12\">\r\n          <result v-for=\"(r, i) in results\"\r\n                  :key=\"'resultset_' + _uid + '_' + i + '_' + r.profileId\"\r\n                  :volunteer=\"r\"\r\n                  :show-contacted=\"true\"\r\n          />\r\n          <div v-if=\"total === 0\" class=\"text-center my-4\">\r\n            {{ $t('userAdmin.emptySet') }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <pager :take=\"take\"\r\n           :skip=\"skip\"\r\n           :total=\"total\"\r\n           :max-display=\"maxDisplay\"\r\n           of-text=\"/\"\r\n           @pagesizechanged=\"onPageSizeChanged\"\r\n           @pagerchanged=\"pagerClick\"\r\n           @pagerprevious=\"pagerPage(-1)\"\r\n           @pagernext=\"pagerPage(1)\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import pager from '../SPRPager.vue'\r\n  import result from './UserSearchResult.vue'\r\n  export default {\r\n    name: 'UserListing',\r\n    components: { pager, result },\r\n    props: {\r\n      users: {\r\n        type: Array,\r\n        default: () => []\r\n      }\r\n    },\r\n    data: function () {\r\n      return {\r\n        search: '',\r\n        take: 3,\r\n        skip: 0,\r\n        total: 0,\r\n        maxDisplay: 5\r\n      }\r\n    },\r\n    computed: {\r\n      results: function () {\r\n        return this.users.slice(this.skip, this.skip + this.take)\r\n      }\r\n    },\r\n    mounted: function () {\r\n      this.performSearch(0)\r\n      this.$bus.$on('user-search-research', this.performSearch)\r\n      this.$bus.$on('volunteer-mark-contacted', this.markContacted)\r\n      this.$bus.$on('volunteer-mark-uncontacted', this.markUnContacted)\r\n    },\r\n    beforeDestroy: function () {\r\n      this.$bus.$off('volunteer-mark-contacted')\r\n      this.$bus.$off('volunteer-mark-uncontacted')\r\n    },\r\n    methods: {\r\n      onPageSizeChanged (pageSize) {\r\n        this.take = pageSize\r\n        this.performSearch()\r\n      },\r\n      trainLink: function (newState) {\r\n        return '/admin/training/' + newState\r\n      },\r\n      pagerClick: function (val) {\r\n        this.performSearch(val.skip)\r\n      },\r\n      pagerPage: function (val) {\r\n        if (val < 0) {\r\n          if (this.skip > 0) {\r\n            this.performSearch(Math.max(0, this.skip - this.take))\r\n          }\r\n        } else {\r\n          if (this.take + this.skip < this.total) {\r\n            this.performSearch(Math.min(this.skip + this.take, this.total - 1))\r\n          }\r\n        }\r\n      },\r\n      performSearch: function (newSkip) {\r\n        this.skip = newSkip\r\n        this.total = this.users.length\r\n      },\r\n      markContacted (profileId) {\r\n        var url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.markcontacted[0].replace('{0}', profileId)\r\n\r\n        this.$http.get(url).then(\r\n          s => {\r\n            const user = _.find(this.users, function (u) {\r\n              return u.profileId === profileId\r\n            })\r\n\r\n            if (user) {\r\n              // not the actual value in the db, but they don't want the item to disappear, which it will on reload, so we just need to give it a val for now.\r\n              user.contactedDate = new Date()\r\n            }\r\n          },\r\n          f => {\r\n            console.log('failed', f)\r\n          }\r\n        )\r\n      },\r\n      markUnContacted (profileId) {\r\n        var url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.markuncontacted[0].replace('{0}', profileId)\r\n\r\n        this.$http.get(url).then(\r\n          s => {\r\n            const user = _.find(this.users, function (u) {\r\n              return u.profileId === profileId\r\n            })\r\n\r\n            if (user) {\r\n              // not the actual value in the db, but they don't want the item to disappear, which it will on reload, so we just need to give it a val for now.\r\n              user.contactedDate = null\r\n            }\r\n          },\r\n          f => {\r\n            console.log('failed', f)\r\n          }\r\n        )\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .comp-user-search {\r\n    .filter-links {\r\n      a {\r\n        text-transform: uppercase;\r\n        font-weight: bold;\r\n        color: $brand-grey7 !important;\r\n\r\n        &.router-link-active {\r\n          color: $brand-red !important;\r\n        }\r\n      }\r\n    }\r\n\r\n    .spinner {\r\n      color: $brand-red;\r\n      text-align: center;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserListing.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UserListing.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UserListing.vue?vue&type=template&id=94eff006\"\nimport script from \"./UserListing.vue?vue&type=script&lang=js\"\nexport * from \"./UserListing.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserListing.vue?vue&type=style&index=0&id=94eff006&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sectioncontacts\",attrs:{\"id\":`sectioncontacts${_vm._uid}`}},[_c('div',{staticClass:\"editor-header\"},[_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isEditMode),expression:\"!isEditMode\"}],staticClass:\"cap-label\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.toggleEdit}},[_vm._v(\" \"+_vm._s(_vm.title)+\" \"),_c('font-awesome-icon',{attrs:{\"icon\":\"pencil-alt\",\"aria-hidden\":\"true\"}})],1),_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isEditMode),expression:\"isEditMode\"}],staticClass:\"cap-label action-icon\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.toggleEdit}},[_vm._v(\" \"+_vm._s(_vm.title)+\" \"),_c('font-awesome-icon',{staticClass:\"saveChanges\",attrs:{\"icon\":\"check\",\"aria-hidden\":\"true\"}})],1),_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isEditMode),expression:\"isEditMode\"}],staticClass:\"cap-label\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.cancelChanges}},[_c('font-awesome-icon',{attrs:{\"icon\":\"times\",\"aria-hidden\":\"true\"}})],1)]),(_vm.isEditMode)?_c('div',{staticClass:\"row-1 row pt-3 editor-area\"},[_c('div',{staticClass:\"col-12\"},[(_vm.hasDefinition || _vm.isEditMode)?_c('label',{staticClass:\"cap-label\",class:{ 'is-edit': _vm.isEditMode }},[_vm._v(_vm._s(_vm.$t(\"userAdmin.sectionReportContact\")))]):_vm._e()])]):_vm._e(),(_vm.isEditMode)?_c('div',{staticClass:\"row editor-area\"},[_c('div',{staticClass:\"col-9 col-md-6\"},[_c('div',{staticClass:\"emailinput\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('email'),expression:\"'email'\"}],attrs:{\"input-type\":\"email\",\"placeholder\":_vm.placeholdertext,\"name\":\"sectioncontacts.contactemail\",\"required\":false,\"is-valid\":!_vm.errors.has('sectioncontacts.contactemail')},model:{value:(_vm.inputEmail),callback:function ($$v) {_vm.inputEmail=$$v},expression:\"inputEmail\"}})],1)]),_c('div',{staticClass:\"col-3 col-md-6\"},[_c('sprbutton',{staticClass:\"add-button\",attrs:{\"size\":5,\"title\":_vm.$t('userAdmin.sectionReportContactAdd'),\"click-event\":\"addContact\"},on:{\"addContact\":_vm.onAddContact}})],1)]):_vm._e(),_c('div',{staticClass:\"row\"},[(_vm.contacts)?_c('div',{staticClass:\"col-12\"},[(_vm.isEditMode)?_c('div',{staticClass:\"col-12 editor-area\"},[(_vm.isEditMode)?_c('span',_vm._l((_vm.sectionContacts),function(contact){return _c('pill',{key:contact,attrs:{\"value\":contact,\"show-delete\":true},on:{\"remove\":function($event){return _vm.onRemoveContact(contact)}}})}),1):_vm._e()]):_c('div',{staticClass:\"onlyContactsInfo\"},[_c('div',[_vm._v(_vm._s(_vm.contactsReadOnly))])])]):_vm._e()]),_c('div',{staticClass:\"row pt-3\"},[(_vm.contacts)?_c('div',{staticClass:\"col-12 col-sm-9 col-md-6\"},[(_vm.isEditMode)?_c('div',{staticClass:\"editor-area\"},[(_vm.isEditMode)?_c('span',{staticClass:\"frequencySelector editor-area\"},[_c('div',{staticClass:\"frequency\"},[_vm._v(_vm._s(_vm.$t(\"userAdmin.sectionReportFrequency\")))]),_c('sprradiogroupkey',{ref:\"frequency\",attrs:{\"radio-group-color\":\"basic\",\"options\":_vm.reportFrequencies},model:{value:(_vm.frequency),callback:function ($$v) {_vm.frequency=$$v},expression:\"frequency\"}})],1):_vm._e()]):_c('div',{staticClass:\"onlyFrequencyDefinition\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t(\"userAdmin.sectionReportFrequency\")))]),_c('dd',[_vm._v(_vm._s(_vm.frequencyDefinition))])])])]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comp-radio-group-key\"},_vm._l((_vm.options),function(element,index){return _c('sprradio',{key:element.value,attrs:{\"id\":`radiogp_${_vm._uid}_${index}`,\"value\":element.value,\"title\":element.text,\"model-value\":_vm.value,\"is-valid\":true,\"name\":_vm.groupName},on:{\"input\":_vm.handleSelection}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-radio-group-key\">\r\n    <sprradio v-for=\"(element, index) in options\"\r\n              :id=\"`radiogp_${_uid}_${index}`\"\r\n              :key=\"element.value\"\r\n              :value=\"element.value\"\r\n              :title=\"element.text\"\r\n              :model-value=\"value\"\r\n              :is-valid=\"true\"\r\n              :name=\"groupName\"\r\n              @input=\"handleSelection\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprradio from './SPRSimpleRadio.vue'\r\n\r\n  export default {\r\n    name: 'SprRadioGroupKey',\r\n    components: { sprradio },\r\n    props: {\r\n      value: {\r\n        type: Number,\r\n        required: true\r\n      },\r\n      options: {\r\n        type: Array,\r\n        default () {\r\n          return []\r\n        }\r\n      },\r\n      translationKey: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      radioGroupColor: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      changeEvent: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        initialized: false\r\n      }\r\n    },\r\n    computed: {\r\n      groupName () {\r\n        return `group_${this._uid}`\r\n      }\r\n    },\r\n    methods: {\r\n      handleSelection: function (value) {\r\n        this.$emit('input', value)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRRadioGroupKey.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRRadioGroupKey.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRRadioGroupKey.vue?vue&type=template&id=67463877\"\nimport script from \"./SPRRadioGroupKey.vue?vue&type=script&lang=js\"\nexport * from \"./SPRRadioGroupKey.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div :id=\"`sectioncontacts${_uid}`\" class=\"sectioncontacts\">\r\n    <div class=\"editor-header\">\r\n      <!-- This is intentionally <a> element. This is the proper way to\r\n      enable keyboard navigation for the element, believe it or not. -->\r\n      <a\r\n        v-show=\"!isEditMode\"\r\n        class=\"cap-label\"\r\n        tabindex=\"0\"\r\n        href=\"javascript:void(0);\"\r\n        @click=\"toggleEdit\"\r\n      >\r\n        {{ title }}\r\n        <font-awesome-icon icon=\"pencil-alt\" aria-hidden=\"true\" />\r\n      </a>\r\n      <a\r\n        v-show=\"isEditMode\"\r\n        class=\"cap-label action-icon\"\r\n        tabindex=\"0\"\r\n        href=\"javascript:void(0);\"\r\n        @click=\"toggleEdit\"\r\n      >\r\n        {{ title }}\r\n        <font-awesome-icon icon=\"check\" class=\"saveChanges\" aria-hidden=\"true\" />\r\n      </a>\r\n      <a\r\n        v-show=\"isEditMode\"\r\n        class=\"cap-label\"\r\n        tabindex=\"0\"\r\n        href=\"javascript:void(0);\"\r\n        @click=\"cancelChanges\"\r\n      ><font-awesome-icon icon=\"times\" aria-hidden=\"true\" /></a>\r\n    </div>\r\n    <div v-if=\"isEditMode\" class=\"row-1 row pt-3 editor-area\">\r\n      <div class=\"col-12\">\r\n        <label\r\n          v-if=\"hasDefinition || isEditMode\"\r\n          class=\"cap-label\"\r\n          :class=\"{ 'is-edit': isEditMode }\"\r\n        >{{ $t(\"userAdmin.sectionReportContact\") }}</label>\r\n      </div>\r\n    </div>\r\n    <div v-if=\"isEditMode\" class=\"row editor-area\">\r\n      <div class=\"col-9 col-md-6\">\r\n        <div class=\"emailinput\">\r\n          <sprinput\r\n            v-model=\"inputEmail\"\r\n            v-validate=\"'email'\"\r\n            input-type=\"email\"\r\n            :placeholder=\"placeholdertext\"\r\n            name=\"sectioncontacts.contactemail\"\r\n            :required=\"false\"\r\n            :is-valid=\"!errors.has('sectioncontacts.contactemail')\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"col-3 col-md-6\">\r\n        <sprbutton\r\n          :size=\"5\"\r\n          :title=\"$t('userAdmin.sectionReportContactAdd')\"\r\n          click-event=\"addContact\"\r\n          class=\"add-button\"\r\n          @addContact=\"onAddContact\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div v-if=\"contacts\" class=\"col-12\">\r\n        <div v-if=\"isEditMode\" class=\"col-12 editor-area\">\r\n          <span v-if=\"isEditMode\">\r\n            <pill\r\n              v-for=\"contact in sectionContacts\"\r\n              :key=\"contact\"\r\n              :value=\"contact\"\r\n              :show-delete=\"true\"\r\n              @remove=\"onRemoveContact(contact)\"\r\n            />\r\n          </span>\r\n        </div>\r\n        <div v-else class=\"onlyContactsInfo\">\r\n          <div>{{ contactsReadOnly }}</div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row pt-3\">\r\n      <div v-if=\"contacts\" class=\"col-12 col-sm-9 col-md-6\">\r\n        <div v-if=\"isEditMode\" class=\"editor-area\">\r\n          <span v-if=\"isEditMode\" class=\"frequencySelector editor-area\">\r\n            <div class=\"frequency\">{{ $t(\"userAdmin.sectionReportFrequency\") }}</div>\r\n            <sprradiogroupkey\r\n              ref=\"frequency\"\r\n              v-model=\"frequency\"\r\n              radio-group-color=\"basic\"\r\n              :options=\"reportFrequencies\"\r\n            />\r\n          </span>\r\n        </div>\r\n        <div v-else class=\"onlyFrequencyDefinition\">\r\n          <dl>\r\n            <dt>{{ $t(\"userAdmin.sectionReportFrequency\") }}</dt>\r\n            <dd>{{ frequencyDefinition }}</dd>\r\n          </dl>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprinput from '../SPRSimpleText.vue'\r\n  import sprradiogroupkey from '../SPRRadioGroupKey.vue'\r\n  import pill from '../SPRPill.vue'\r\n\r\n  export default {\r\n    name: 'SectionContacts',\r\n    components: {\r\n      sprbutton,\r\n      sprinput,\r\n      sprradiogroupkey,\r\n      pill\r\n    },\r\n    props: {\r\n      sectionId: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      contacts: {\r\n        type: Array,\r\n        default () {\r\n          return []\r\n        }\r\n      },\r\n      reportFrequency: {\r\n        type: Number,\r\n        default: 0\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        isEditMode: false,\r\n        inputEmail: null,\r\n        initialEmails: [],\r\n        sectionContacts: [],\r\n        frequency: 7, // Weekly\r\n        sectionReportDto: null\r\n      }\r\n    },\r\n    computed: {\r\n      isValid () {\r\n        if (this.sectionContacts.length > 0) {\r\n          if (this.frequency === 0) {\r\n            return false\r\n          }\r\n        }\r\n\r\n        return true\r\n      },\r\n      hasDefinition () {\r\n        return this.contacts.length > 0 || this.sectionContacts.length > 0\r\n      },\r\n      hasChanges () {\r\n        const initial = JSON.stringify(this.initialDefinition)\r\n        const current = JSON.stringify(this.currentDefinition)\r\n\r\n        return initial !== current\r\n      },\r\n      initialDefinition () {\r\n        let sectionReportDto = {\r\n          id: this.sectionId,\r\n          contacts: [],\r\n          reportFrequency: this.reportFrequency\r\n        }\r\n\r\n        const sectionContacts = this.initialEmails.map(this.toContact)\r\n        sectionReportDto = {\r\n          id: this.sectionId,\r\n          contacts: sectionContacts,\r\n          reportFrequency: this.reportFrequency\r\n        }\r\n\r\n        return sectionReportDto\r\n      },\r\n      currentDefinition () {\r\n        if (this.frequency === null) {\r\n          this.setDefaultFrequency()\r\n        }\r\n\r\n        let sectionReportDto = {\r\n          id: this.sectionId,\r\n          contacts: [],\r\n          reportFrequency: this.frequency\r\n        }\r\n\r\n        const sectionContacts = this.sectionContacts.map(this.toContact)\r\n        sectionReportDto = {\r\n          id: this.sectionId,\r\n          contacts: sectionContacts,\r\n          reportFrequency: this.frequency\r\n        }\r\n\r\n        // todo: this should not be in a computed prop!\r\n        this.sectionReportDto = sectionReportDto // eslint-disable-line vue/no-side-effects-in-computed-properties\r\n\r\n        return sectionReportDto\r\n      },\r\n      frequencyDefinition () {\r\n        if (this.hasDefinition) {\r\n          return this.currentReportFrequency\r\n        }\r\n\r\n        return this.$t('userAdmin.sectionReportNoDefinition')\r\n      },\r\n      currentReportFrequency () {\r\n        var self = this\r\n        const enums = _.map(this.$store.state.reportFrequency, function (val, key) {\r\n          return {\r\n            value: val.id,\r\n            text: self.$t('userAdmin.sectionReportFrequency' + val.text)\r\n          }\r\n        })\r\n\r\n        const item = enums.filter((x) => {\r\n          return x.value === this.reportFrequency\r\n        })\r\n\r\n        return item ? item[0].text : null\r\n      },\r\n      reportFrequencies: function () {\r\n        var self = this\r\n        return _.map(this.$store.state.reportFrequency, function (val, key) {\r\n          return {\r\n            value: val.id,\r\n            text: self.$t('userAdmin.sectionReportFrequency' + val.text)\r\n          }\r\n        })\r\n      },\r\n      reportFrequencyTexts: function () {\r\n        return _.map(this.$store.state.reportFrequency, function (val, key) {\r\n          return val.text\r\n        })\r\n      },\r\n      parentNode: function () {\r\n        return document.getElementById(`sectioncontacts${this._uid}`)\r\n      },\r\n      placeholdertext () {\r\n        return this.$t('userAdmin.sectionReportContact')\r\n      },\r\n      contactsReadOnly () {\r\n        if (this.contacts) {\r\n          return this.contacts.map(this.toEmail).join('; ')\r\n        }\r\n\r\n        return ''\r\n      },\r\n      filteredContacts () {\r\n        return _.map(_.groupBy(this.sectionContacts, 'email'), (emailGroup) => {\r\n          if (emailGroup.length === 1) {\r\n            return emailGroup[0]\r\n          } else {\r\n            return _.filter(emailGroup, (contact) => {\r\n              return contact.email\r\n            })[0]\r\n          }\r\n        })\r\n      }\r\n    },\r\n    beforeDestroy: function () {\r\n      window.removeEventListener('focus', this.handleBlur)\r\n      window.removeEventListener('click', this.detectClicks)\r\n    },\r\n    mounted () {\r\n      window.addEventListener('focus', this.handleBlur, true)\r\n      window.addEventListener('click', this.detectClicks, true)\r\n      this.resetLocals()\r\n    },\r\n    methods: {\r\n      cancelChanges () {\r\n        this.resetLocals()\r\n        this.isEditMode = false\r\n      },\r\n      contactsEditButton () {\r\n        this.toggleEdit()\r\n      },\r\n      detectClicks: function (event) {\r\n        this.handleBlur(event)\r\n      },\r\n      handleBlur: function (event) {\r\n        if (\r\n          this.isEditMode &&\r\n          event.target &&\r\n          this.parentNode &&\r\n          event.target.top === undefined &&\r\n          !this.parentNode.contains(event.target)\r\n        ) {\r\n          this.toggleEdit()\r\n        }\r\n      },\r\n      onAddContact () {\r\n        this.$validator.validateAll().then((resp) => {\r\n          if (resp) {\r\n            const email = this.inputEmail.toLowerCase()\r\n            if (!this.sectionContacts.find((contact) => contact.toLowerCase() === email)) {\r\n              this.sectionContacts.push(email)\r\n            }\r\n          }\r\n          this.inputEmail = null\r\n        })\r\n      },\r\n      onRemoveContact (contact) {\r\n        this.sectionContacts = this.sectionContacts.filter((x) => x !== contact)\r\n      },\r\n      resetLocals () {\r\n        this.inputEmail = null\r\n        this.initialEmails = this.contacts.map(this.toEmail) || []\r\n        this.sectionContacts = this.contacts.map(this.toEmail) || []\r\n        this.frequency = this.reportFrequency\r\n      },\r\n      setDefaultFrequency () {\r\n        this.frequency = 7 // Weekly\r\n      },\r\n      toContact: function (item) {\r\n        var contact = {\r\n          sectionId: this.sectionId,\r\n          email: item\r\n        }\r\n\r\n        return contact\r\n      },\r\n      toEmail: function (contact) {\r\n        const value = contact.email\r\n        return value\r\n      },\r\n      toggleEdit: function () {\r\n        this.isEditMode = !this.isEditMode\r\n\r\n        if (this.isEditMode) {\r\n          // opening edit mode\r\n          this.resetLocals()\r\n        } else {\r\n          // closing edit mode\r\n          this.sectionReportDto = this.currentDefinition\r\n\r\n          if (this.hasChanges) {\r\n            if (!this.isValid) {\r\n              this.isEditMode = true\r\n              return\r\n            }\r\n            this.$emit('commitChanges', this.sectionReportDto)\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import \"../../assets/scss/_variables.scss\";\r\n.sectioncontacts {\r\n  .pill {\r\n    margin-right: 5px;\r\n\r\n    &.readonly {\r\n      border-color: $brand-grey7;\r\n      color: $brand-grey7;\r\n      background-color: $brand-grey1;\r\n      cursor: not-allowed;\r\n    }\r\n  }\r\n\r\n  .frequencySelector {\r\n    .comp-radio-group-key {\r\n      padding-top: 10px;\r\n      .spr-simple-radio {\r\n        padding-left: 20px;\r\n      }\r\n    }\r\n  }\r\n\r\n  .emailinput {\r\n    display: inline-block;\r\n    width: 100%;\r\n  }\r\n  .add-button {\r\n    display: inline-block;\r\n  }\r\n  .is-edit {\r\n    color: $brand-red;\r\n    padding: 0 20px;\r\n  }\r\n  .frequency {\r\n    color: $brand-red;\r\n    font-family: $font-bold;\r\n    padding: 0 20px;\r\n  }\r\n  .editor-header {\r\n    a {\r\n      color: $brand-red;\r\n      font-family: $font-bold;\r\n      cursor: pointer;\r\n      text-decoration: none;\r\n      text-transform: uppercase;\r\n    }\r\n\r\n    .action-icon {\r\n      color: $brand-red;\r\n      font-family: $font-bold;\r\n      cursor: pointer;\r\n      text-decoration: none;\r\n      text-transform: uppercase;\r\n      margin-right: 5px;\r\n\r\n      .saveChanges {\r\n        color: $brand-success;\r\n      }\r\n    }\r\n  }\r\n\r\n  .editor-area {\r\n    background-color: whitesmoke;\r\n\r\n    textarea {\r\n      width: calc(100% - 15px);\r\n      resize: none;\r\n      margin-top: 10px;\r\n      font-family: \"Signa-Book\", Sans-Serif;\r\n      font-size: 14px;\r\n      line-height: 20px;\r\n    }\r\n  }\r\n\r\n  .spr-danger {\r\n    border: 2px solid $brand-red !important;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionContacts.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionContacts.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SectionContacts.vue?vue&type=template&id=5ae2a40f\"\nimport script from \"./SectionContacts.vue?vue&type=script&lang=js\"\nexport * from \"./SectionContacts.vue?vue&type=script&lang=js\"\nimport style0 from \"./SectionContacts.vue?vue&type=style&index=0&id=5ae2a40f&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"admin-section-level\">\r\n    <!--regular admin view-->\r\n    <h3>{{ section.name }}</h3>\r\n    <div v-if=\"loaded === 1\" class=\"row section-editor mb-2\">\r\n      <div class=\"col-12\">\r\n        <descriptioneditor v-model=\"section.description\"\r\n                           class=\"section-desc-editor my-2\"\r\n                           :title=\"$t('userAdmin.sectionDescription')\"\r\n                           save-event=\"on-save\"\r\n                           :is-valid=\"!errors.has('description')\"\r\n                           name=\"description\"\r\n                           @on-save=\"updateDescription\"\r\n        />\r\n      </div>\r\n      <div class=\"col-sm-6 col-12\">\r\n        <dl>\r\n          <dt>{{ $t('userAdmin.districtName') }}</dt>\r\n          <dd>{{ section.districtName }}</dd>\r\n          <dt>{{ $t('userAdmin.sectionLanguage') }}</dt>\r\n          <dd>{{ sectionLanguage }}</dd>\r\n        </dl>\r\n      </div>\r\n      <div class=\"col-sm-6 col-12\">\r\n        <dl>\r\n          <dt>{{ $t('userAdmin.sectionZipCodes') }}</dt>\r\n          <dd>{{ sectionZipCodes }}</dd>\r\n        </dl>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div class=\"section-block reportcontact\">\r\n          <div class=\"section-block-container\">\r\n            <sectioncontacts v-if=\"loaded === 1\" class=\"section-report-definition-editor my-2\"\r\n                             :section-id=\"section.id\"\r\n                             :title=\"$t('userAdmin.sectionReportTitle')\"\r\n                             :contacts=\"section.contacts\"\r\n                             :report-frequency=\"reportFrequency\"\r\n                             @commitChanges=\"updateContacts\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <h5>{{ $t('userAdmin.newVolunteers') }}</h5>\r\n    <div v-if=\"loaded === 1\" class=\"row mb-2 new-volunteers\">\r\n      <userlisting :users=\"section.volunteers\" />\r\n    </div>\r\n\r\n    <!--still loading-->\r\n    <div v-if=\"loaded === 0\" class=\"row mb-2\">\r\n      <div class=\"col-12 brand-red text-center\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n\r\n    <!--error has occurred-->\r\n    <div v-if=\"loaded === -1\" class=\"row mb-2\">\r\n      <div class=\"col-12 brand-red text-center\">\r\n        <span class=\"cap-label d-block mb-2\">{{ $t('userAdmin.sectionLoadFailed') }}</span>\r\n        <a class=\"d-block retry-area\"\r\n           href=\"javascript:void(0)\"\r\n           tabindex=\"0\"\r\n           @click=\"triggerFetch\"\r\n        >\r\n          <font-awesome-icon icon=\"redo\" size=\"2x\" fixed-width aria-hidden=\"true\" /><br>\r\n          <span class=\"cap-label brand-red\">{{ $t('userAdmin.retryLoad') }}</span>\r\n        </a>\r\n      </div>\r\n    </div>\r\n\r\n    <adminnavigation :options=\"options\" />\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import adminnavigation from './AdminHorizontalNavigation.vue'\r\n  import userlisting from './UserListing.vue'\r\n  import sectioncontacts from './SectionContacts.vue'\r\n  import descriptioneditor from '../SPRProfileEditor.vue'\r\n  import loading from '../SPRLoading.vue'\r\n\r\n  export default {\r\n    name: 'SectionAdmin',\r\n    components: {\r\n      adminnavigation,\r\n      sectioncontacts,\r\n      descriptioneditor,\r\n      userlisting,\r\n      loading\r\n    },\r\n    props: {\r\n      primary: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      filter: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        section: {\r\n          id: 0,\r\n          description: '',\r\n          name: '',\r\n          contacts: [],\r\n          reportFrequency: 0\r\n        },\r\n        loaded: 0,\r\n        loadedReport: 0\r\n      }\r\n    },\r\n    computed: {\r\n      options: function () {\r\n        const optionsConstant = [\r\n          { uri: '/admin/section/' + this.id + '/user', text: this.$t('userAdmin.users'), primary: 'user' },\r\n          { uri: '/admin/section/' + this.id + '/group', text: this.$t('userAdmin.groups'), primary: 'group' },\r\n          { uri: '/admin/section/' + this.id + '/messages', text: this.$t('userAdmin.messaging'), primary: 'message' }]\r\n        const rv = optionsConstant.concat()\r\n        if (this.hasRole('Admin') || this.hasRole('FriendshipAdmin') || this.hasRole('DistrictAdmin') || this.hasRole('NationalAdmin') || this.hasRole('DistrictFriendshipAdmin') || this.hasRole('FriendshipTrainer')) {\r\n          rv.push({ uri: '/admin/training/1', text: this.$t('userAdmin.trainings'), primary: 'training' }) // Kouluttamattomat (Untrained)\r\n        }\r\n\r\n        rv.push(\r\n          { uri: '/admin/section/' + this.id + '/roles', text: this.$t('userAdmin.roles'), primary: 'roles' }\r\n        )\r\n\r\n        return rv\r\n      },\r\n      reportFrequency () {\r\n        if (this.section.reportFrequency) {\r\n          return this.section.reportFrequency\r\n        }\r\n        return 7 // Weekly\r\n      },\r\n      sectionLanguage: function () {\r\n        if (this.section.language === 0) {\r\n          return this.$t('languages.fi')\r\n        } else if (this.section.language === 1) {\r\n          return this.$t('languages.sv')\r\n        } else if (this.section.language === 2) {\r\n          return this.$t('userAdmin.bilingual')\r\n        }\r\n\r\n        return ''\r\n      },\r\n      sectionZipCodes: function () {\r\n        return (this.section.zipCodes && this.section.zipCodes.length) ? this.section.zipCodes.join(', ') : ''\r\n      }\r\n    },\r\n    mounted: function () {\r\n      this.triggerFetch()\r\n    },\r\n    methods: {\r\n      updateDescription: function () {\r\n        var url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.setDistrictDescription[0].replace('{0}', this.id)\r\n        var postBody = {\r\n          payload: this.section.description\r\n        }\r\n\r\n        this.$http.post(url, postBody)\r\n      },\r\n      getContacts: function () {\r\n        var url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.getSectionReport[0].replace('{0}', this.id)\r\n\r\n        this.fetchSectionReport(url, 3)\r\n      },\r\n      updateContacts: function (sectionReportDto) {\r\n        var url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.setSectionReport[0].replace('{0}', this.id)\r\n        var postBody = sectionReportDto\r\n\r\n        this.$http.post(url, postBody).then(s => {\r\n          // @ts-ignore cannot find mixins\r\n          this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n          this.getContacts()\r\n        }, (fail) => {\r\n          // @ts-ignore cannot find mixins\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        })\r\n      },\r\n      fetchSection: function (uri, retry) {\r\n        this.$http.get(uri).then(s => {\r\n          this.loaded = 1\r\n          this.loadedReport = 1\r\n          this.section = s.body\r\n        }, f => {\r\n          if (retry > 0) {\r\n            this.fetchSection(uri, retry - 1)\r\n          } else {\r\n            this.loaded = -1\r\n            this.loadedReport = -1\r\n          }\r\n        })\r\n      },\r\n      fetchSectionReport: function (uri, retry) {\r\n        this.$http.get(uri).then(s => {\r\n          this.loadedReport = 1\r\n          this.section.reportFrequency = s.body.reportFrequency\r\n          this.section.contacts = s.body.contacts\r\n        }, f => {\r\n          if (retry > 0) {\r\n            this.fetchSectionReport(uri, retry - 1)\r\n          } else {\r\n            this.loadedReport = -1\r\n          }\r\n        })\r\n      },\r\n      triggerFetch: function () {\r\n        this.loaded = 0\r\n        var url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.sectionbyid[0].replace('{0}', this.id)\r\n        this.fetchSection(url, 3)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .admin-section-level {\r\n    .section-editor {\r\n      background: $brand-white;\r\n    }\r\n\r\n    .retry-area {\r\n      cursor: pointer;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionAdmin.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionAdmin.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SectionAdmin.vue?vue&type=template&id=40046c5c\"\nimport script from \"./SectionAdmin.vue?vue&type=script&lang=js\"\nexport * from \"./SectionAdmin.vue?vue&type=script&lang=js\"\nimport style0 from \"./SectionAdmin.vue?vue&type=style&index=0&id=40046c5c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"col-12 comp-admin-friend-level my-3\"},[_c('div',{staticClass:\"row group-header\"},[_c('div',{staticClass:\"col-12 col-md-8\"},[_c('router-link',{staticClass:\"groupname\",attrs:{\"to\":'/friend/search/' + _vm.id + '/customer'}},[_vm._v(\" \"+_vm._s(_vm.friendshipGroup.name)+\" \")])],1),_c('div',{staticClass:\"col-12 col-md-4 text-md-right\"},[_c('sprbutton',{staticClass:\"enter-friendship-group\",attrs:{\"primary\":true,\"title\":_vm.$t('userAdmin.enterFriendshipGroup'),\"size\":5,\"aria-label\":_vm.$t('userAdmin.enterFriendshipGroup'),\"click-event\":\"enterFriendshipGroup\"},on:{\"enterFriendshipGroup\":_vm.enterFriendshipGroup}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('friendshipcontact',{attrs:{\"contact-info-list\":_vm.friendshipGroup.contactInfo,\"editable\":_vm.canEditContactInfo},on:{\"ContactAdd\":_vm.onContactAdd,\"ContactSave\":_vm.onContactSave,\"ContactDelete\":_vm.onContactDelete}})],1),_c('div',{staticClass:\"col-12\"},[_c('SPRSimpleCheckbox',{attrs:{\"title\":_vm.$t('userAdmin.friendRequestFormAllowed')},on:{\"input\":function($event){return _vm.onFormAllowedChecked(_vm.item)}},model:{value:(_vm.friendshipGroup.friendRequestFormAllowed),callback:function ($$v) {_vm.$set(_vm.friendshipGroup, \"friendRequestFormAllowed\", $$v)},expression:\"friendshipGroup.friendRequestFormAllowed\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('dl',[(_vm.memberSections)?_c('dt',[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.friendshipGroupMemberSections'))+\" \")]):_vm._e(),(_vm.memberSections)?_c('dd',[_vm._v(\" \"+_vm._s(_vm.memberSections)+\" \")]):_vm._e(),_c('dt',[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.friendshipGroupMemberZipCodes'))+\" \"),(!_vm.friendshipGroup.national)?_c('span',{on:{\"click\":function($event){_vm.zipsAll = !_vm.zipsAll}}},[(_vm.zipsAll)?_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-down\"}}):_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-up\"}})],1):_vm._e()]),(!_vm.friendshipGroup.national)?_c('dd',{class:{ 'few-zips': !_vm.zipsAll }},[_vm._v(\" \"+_vm._s(_vm.memberZips)+\" \")]):_vm._e(),(_vm.friendshipGroup.national)?_c('dd',[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.national'))+\" \")]):_vm._e()])]),_c('div',{staticClass:\"col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('userAdmin.numberOfVolunteers')))]),_c('dd',[_vm._v(_vm._s(_vm.friendshipGroup.volunteerCount))]),_c('dt',[_vm._v(_vm._s(_vm.$t('userAdmin.numberOfCustomers')))]),_c('dd',[_vm._v(_vm._s(_vm.friendshipGroup.customerCount))])])])]),_c('div',{staticClass:\"col-12\"},[_c('friendshipactivities',{attrs:{\"group-activities\":_vm.friendshipGroup.groupActivities,\"friendship-management-group-id\":_vm.friendshipGroup.id,\"can-edit\":\"\"},on:{\"ActivityEdit\":_vm.onActivityEdit,\"ActivitySave\":_vm.onActivitySave,\"ActivityCancel\":_vm.onActivityCancel}})],1),(!_vm.loaded)?_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-12 brand-red text-center\"},[_c('loading')],1)]):_vm._e(),(_vm.loaded === -1)?_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-12 brand-red text-center\"},[_c('span',{staticClass:\"cap-label d-block mb-2\"},[_vm._v(_vm._s(_vm.$t('userAdmin.friendshipLoadFailed')))]),_c('a',{staticClass:\"d-block retry-area\",attrs:{\"href\":\"javascript:void(0)\",\"tabindex\":\"0\"},on:{\"click\":_vm.triggerFetch}},[_c('font-awesome-icon',{attrs:{\"icon\":\"redo\",\"size\":\"2x\",\"fixed-width\":\"\",\"aria-hidden\":\"true\"}}),_c('br'),_c('span',{staticClass:\"cap-label brand-red\"},[_vm._v(_vm._s(_vm.$t('userAdmin.retryLoad')))])],1)])]):_vm._e(),_c('adminnavigation',{attrs:{\"options\":_vm.optionsConstant}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"col-12 comp-admin-friend-level my-3\">\r\n    <div class=\"row group-header\">\r\n      <div class=\"col-12 col-md-8\">\r\n        <router-link :to=\"'/friend/search/' + id + '/customer'\" class=\"groupname\">\r\n          {{ friendshipGroup.name }}\r\n        </router-link>\r\n      </div>\r\n      <div class=\"col-12 col-md-4 text-md-right\">\r\n        <sprbutton class=\"enter-friendship-group\"\r\n                   :primary=\"true\"\r\n                   :title=\"$t('userAdmin.enterFriendshipGroup')\"\r\n                   :size=\"5\"\r\n                   :aria-label=\"$t('userAdmin.enterFriendshipGroup')\"\r\n                   click-event=\"enterFriendshipGroup\"\r\n                   @enterFriendshipGroup=\"enterFriendshipGroup\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <friendshipcontact\r\n          :contact-info-list=\"friendshipGroup.contactInfo\"\r\n          :editable=\"canEditContactInfo\"\r\n          @ContactAdd=\"onContactAdd\"\r\n          @ContactSave=\"onContactSave\"\r\n          @ContactDelete=\"onContactDelete\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <SPRSimpleCheckbox v-model=\"friendshipGroup.friendRequestFormAllowed\" :title=\"$t('userAdmin.friendRequestFormAllowed')\" @input=\"onFormAllowedChecked(item)\" />\r\n      </div>\r\n\r\n      <div class=\"col-12\">\r\n        <dl>\r\n          <dt v-if=\"memberSections\">\r\n            {{ $t('userAdmin.friendshipGroupMemberSections') }}\r\n          </dt>\r\n          <dd v-if=\"memberSections\">\r\n            {{ memberSections }}\r\n          </dd>\r\n          <dt>\r\n            {{ $t('userAdmin.friendshipGroupMemberZipCodes') }}\r\n            <span v-if=\"!friendshipGroup.national\" @click=\"zipsAll = !zipsAll\">\r\n              <font-awesome-icon v-if=\"zipsAll\" icon=\"chevron-down\" class=\"brand-red\" />\r\n              <font-awesome-icon v-else icon=\"chevron-up\" class=\"brand-red\" />\r\n            </span>\r\n          </dt>\r\n          <dd v-if=\"!friendshipGroup.national\" :class=\"{ 'few-zips': !zipsAll }\">\r\n            {{ memberZips }}\r\n          </dd>\r\n          <dd v-if=\"friendshipGroup.national\">\r\n            {{ $t('userAdmin.national') }}\r\n          </dd>\r\n        </dl>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <dl>\r\n          <dt>{{ $t('userAdmin.numberOfVolunteers') }}</dt>\r\n          <dd>{{ friendshipGroup.volunteerCount }}</dd>\r\n          <dt>{{ $t('userAdmin.numberOfCustomers') }}</dt>\r\n          <dd>{{ friendshipGroup.customerCount }}</dd>\r\n        </dl>\r\n      </div>\r\n    </div>\r\n    <div class=\"col-12\">\r\n        <friendshipactivities \r\n          :group-activities=\"friendshipGroup.groupActivities\" \r\n          :friendship-management-group-id=\"friendshipGroup.id\"\r\n          @ActivityEdit=\"onActivityEdit\" \r\n          @ActivitySave=\"onActivitySave\"\r\n          @ActivityCancel=\"onActivityCancel\"\r\n          can-edit />\r\n    </div>\r\n    <!--still loading-->\r\n    <div v-if=\"!loaded\" class=\"row mb-2\">\r\n      <div class=\"col-12 brand-red text-center\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- error has occured, reload option -->\r\n    <div v-if=\"loaded === -1\" class=\"row mb-2\">\r\n      <div class=\"col-12 brand-red text-center\">\r\n        <span class=\"cap-label d-block mb-2\">{{ $t('userAdmin.friendshipLoadFailed') }}</span>\r\n        <a class=\"d-block retry-area\"\r\n           href=\"javascript:void(0)\"\r\n           tabindex=\"0\"\r\n           @click=\"triggerFetch\"\r\n        >\r\n          <font-awesome-icon icon=\"redo\" size=\"2x\" fixed-width aria-hidden=\"true\" /><br>\r\n          <span class=\"cap-label brand-red\">{{ $t('userAdmin.retryLoad') }}</span>\r\n        </a>\r\n      </div>\r\n    </div>\r\n    <adminnavigation :options=\"optionsConstant\" />\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import adminnavigation from './AdminHorizontalNavigation.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import friendshipcontact from './FriendshipContact.vue'\r\n  import friendshipactivities from './FriendshipActivities.vue'\r\n  import cache from '../../mixins/cache.js'\r\n  import SPRSimpleCheckbox from '../SPRSimpleCheckbox.vue'\r\n  import { FriendManagementDto } from '@/types';\r\n\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    optionsConstant: Array<object>,\r\n    friendshipGroup: FriendManagementDto,\r\n    tempGroupActivities: string,\r\n    loaded: number,\r\n    zipsAll: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'FriendshipAdmin',\r\n    components: {\r\n      adminnavigation,\r\n      sprbutton,\r\n      loading,\r\n      friendshipcontact,\r\n      SPRSimpleCheckbox,\r\n      friendshipactivities\r\n    },\r\n    mixins: [cache],\r\n    props: {\r\n      primary: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      filter: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        optionsConstant: [\r\n          { uri: '/admin/friendship/' + this.id + '/clients', text: this.$t('userAdmin.friendshipClients'), primary: 'client' },\r\n          { uri: '/admin/friendship/' + this.id + '/volunteers', text: this.$t('userAdmin.friendshipVolunteers'), primary: 'volunteer' },\r\n          { uri: '/admin/friendship/' + this.id + '/pools', text: this.$t('userAdmin.friendshipPools'), primary: 'pools' },\r\n          { uri: '/admin/friendship/' + this.id + '/brokers', text: this.$t('userAdmin.friendshipBrokers'), primary: 'broker' }\r\n        ],\r\n        friendshipGroup: {\r\n          id: 0,\r\n          name: this.$t('userAdmin.toFriendshipLink').toString(),\r\n          contactInfo: [],\r\n          groupActivities: [],\r\n          national: false,\r\n          volunteerCount: 0,\r\n          customerCount: 0,\r\n          friendRequestFormAllowed: false,\r\n          sections: [],\r\n          zipCodes: [],\r\n          netFriendship: false\r\n        },\r\n        tempGroupActivities: '',\r\n        loaded: 0,\r\n        zipsAll: false\r\n      }\r\n    },\r\n    computed: {\r\n      memberSections (): string {\r\n        return (this.friendshipGroup.sections && this.friendshipGroup.sections.length) ? this.friendshipGroup.sections.join(', ') : ''\r\n      },\r\n      memberZips (): string {\r\n        return (this.friendshipGroup.zipCodes && this.friendshipGroup.zipCodes.length) ? this.friendshipGroup.zipCodes.join(', ') : ''\r\n      },\r\n      canEditContactInfo (): boolean {\r\n        //@ts-ignore\r\n        return (this.hasRole('Admin') || this.hasRole('FriendshipAdmin') || this.hasRole('DistrictFriendshipAdmin') || this.hasRole('FriendshipGroupManager'))\r\n      }\r\n    },\r\n    mounted () {\r\n      this.triggerFetch()\r\n    },\r\n    methods: {\r\n      enterFriendshipGroup: function () {\r\n        var routeName = '/friend/search/' + this.id + '/customer'\r\n        this.$router.push(routeName)\r\n      },\r\n      triggerFetch: function () {\r\n        this.loaded = 0\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationById[0].replace('{0}', this.id)\r\n        var self = this\r\n        this.fetchItem(url, this.expSeconds(120), s => {\r\n          self.friendshipGroup = s\r\n          self.loaded = 1\r\n        }, () => { self.loaded = -1 })\r\n      },\r\n      updateFmg (): any {\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.updateFmg[0]\r\n       return this.$http.put(url, this.friendshipGroup)\r\n      },\r\n      onContactAdd (contact) {\r\n        this.friendshipGroup.contactInfo.push(contact)\r\n        this.updateFmg().then((response: any) => {\r\n          if (response.ok) {\r\n            // reload with the new ids\r\n            this.friendshipGroup = response.body\r\n          }\r\n        })\r\n      },\r\n      onFormAllowedChecked () {\r\n        this.updateFmg()\r\n      },\r\n      onActivitySave () {\r\n        this.updateFmg().then(response => {\r\n          if (response.ok) {\r\n            // reload with the new ids\r\n            this.friendshipGroup = response.body\r\n          }\r\n          else {\r\n            console.log('response error', response)\r\n          }\r\n        }, error => {\r\n          console.log('error', error)\r\n        })\r\n      },\r\n      onActivityEdit () {\r\n        // In order to rollback in case of cancel, I will have to store the current state of the groupActivities\r\n        this.tempGroupActivities = JSON.stringify(this.friendshipGroup.groupActivities)\r\n      },\r\n      onActivityCancel () {\r\n        // In case I cancel I want to restore the groupActivities to the previous state\r\n        if (this.tempGroupActivities)\r\n          this.friendshipGroup.groupActivities = JSON.parse(this.tempGroupActivities)\r\n      },\r\n      onContactSave (contact) {\r\n        this.friendshipGroup.contactInfo = this.friendshipGroup.contactInfo.map(x => x.id === contact.id ? contact : x)\r\n        this.updateFmg().then(response => {\r\n          if (response.ok) {\r\n            // reload with the new ids\r\n            this.friendshipGroup = response.body\r\n          }\r\n        })\r\n      },\r\n      onContactDelete (id) {\r\n        //@ts-ignore\r\n        _.remove(this.friendshipGroup.contactInfo, (add) => {\r\n          return add.id === id\r\n        })\r\n\r\n        this.updateFmg().then(response => {\r\n          if (response.ok) {\r\n            // reload with the new ids\r\n            this.friendshipGroup = response.body\r\n          }\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .comp-admin-friend-level {\r\n    .groupname {\r\n      display: inline-block;\r\n      margin-top: 5px;\r\n      vertical-align: top;\r\n      margin-right: 10px;\r\n    }\r\n    .enter-friendship-group {\r\n      font-size: 13px;\r\n      line-height: 20px;\r\n      margin-right: -15px;\r\n    }\r\n    .few-zips {\r\n      overflow: hidden;\r\n      text-overflow: ellipsis;\r\n      white-space: nowrap;\r\n    }\r\n    .group-header {\r\n      font-family: Signa-Bold,Sans-Serif;\r\n      font-size: 32px;\r\n      line-height: 42px;\r\n      padding-bottom: 20px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipAdmin.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipAdmin.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FriendshipAdmin.vue?vue&type=template&id=02986e16\"\nimport script from \"./FriendshipAdmin.vue?vue&type=script&lang=ts\"\nexport * from \"./FriendshipAdmin.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FriendshipAdmin.vue?vue&type=style&index=0&id=02986e16&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comp-section-list\"},[_c('div',{staticClass:\"row search\"},[_c('div',{staticClass:\"col-12 col-sm-9 col-md-7 col-lg-5\"},[_c('searchbox',{attrs:{\"placeholder\":_vm.placeholder},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('div',{staticClass:\"col-12 col-sm-3 col-md-5 col-lg-7 text-right\"},[_c('sprbutton',{attrs:{\"title\":\"Export CSV\",\"size\":5,\"click-event\":\"export\"},on:{\"export\":_vm.onExportClick}})],1)]),(_vm.sections)?_c('div',{staticClass:\"listing\"},_vm._l((_vm.filteredItems),function(d,i){return _c('div',{key:i,staticClass:\"listing-row\"},[_c('router-link',{attrs:{\"to\":'/admin/section/' + d.id + '/user'}},[_vm._v(\" \"+_vm._s(d.name)+\" \")])],1)}),0):_c('div',{staticClass:\"loading text-center brand-red\"},[_c('div',{staticClass:\"my-2\"},[_c('loading')],1),_c('div',{staticClass:\"my-3\"},[_c('p',[_vm._v(_vm._s(_vm.$t('userAdmin.loading')))])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-section-list\">\r\n    <div class=\"row search\">\r\n      <div class=\"col-12 col-sm-9 col-md-7 col-lg-5\">\r\n        <searchbox v-model=\"search\" :placeholder=\"placeholder\" />\r\n      </div>\r\n      <div class=\"col-12 col-sm-3 col-md-5 col-lg-7 text-right\">\r\n        <sprbutton title=\"Export CSV\" :size=\"5\" click-event=\"export\" @export=\"onExportClick\" />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"sections\" class=\"listing\">\r\n      <div v-for=\"(d, i) in filteredItems\" :key=\"i\" class=\"listing-row\">\r\n        <router-link :to=\"'/admin/section/' + d.id + '/user'\">\r\n          {{ d.name }}\r\n        </router-link>\r\n      </div>\r\n    </div>\r\n    <div v-else class=\"loading text-center brand-red\">\r\n      <div class=\"my-2\">\r\n        <loading />\r\n      </div>\r\n      <div class=\"my-3\">\r\n        <p>{{ $t('userAdmin.loading') }}</p>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import searchbox from '../SPRSearchBox.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  export default {\r\n    name: 'AdminSectionList',\r\n    components: { searchbox, sprbutton, loading },\r\n    props: {\r\n      primary: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      filter: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data: function () {\r\n      return {\r\n        sections: null,\r\n        placeholder: this.$t('userAdmin.searchSectionPlaceholder'),\r\n        search: ''\r\n      }\r\n    },\r\n    computed: {\r\n      uri: function () {\r\n        var rv = this.$store.state.apiBases.userservice\r\n        if (!this.id) {\r\n          rv += this.$store.state.apiEndpoints.sections[0]\r\n        } else {\r\n          rv += this.$store.state.apiEndpoints.sectionsbydistrict[0]\r\n          rv = rv.replace('{0}', this.id)\r\n        }\r\n\r\n        return rv\r\n      },\r\n      filteredItems () {\r\n        if (this.search === '') {\r\n          return this.sections\r\n        }\r\n        return this.sections.filter(item => {\r\n          return item.name.toLowerCase().concat(' ' + item.name.toLowerCase()).indexOf(this.search.toLowerCase()) > -1\r\n        })\r\n      }\r\n    },\r\n    mounted: function () {\r\n      this.$http.get(this.uri).then(success => {\r\n        this.sections = success.body\r\n      })\r\n    },\r\n    methods: {\r\n      onExportClick () {\r\n        var writeTitles = () => {\r\n          return '\"Postinumero\",\"Osasto\",\"Piiri\",\"Kieli\"\\r\\n'\r\n        }\r\n\r\n        var wrapQuotesAndComma = (content) => {\r\n          var containsNumber = !isNaN(content)\r\n          if (containsNumber) { // force excel to render as number\r\n            return '\"=\"\"' + (content ? content.toString().replace('\"', '\"\"') : '') + '\"\"\",'\r\n          } else {\r\n            return '\"' + (content ? content.toString().replace('\"', '\"\"') : '') + '\",'\r\n          }\r\n        }\r\n\r\n        var padZeros = (content, numZeros) => {\r\n          content = content.toString()\r\n          return content.length < numZeros\r\n            ? new Array((numZeros + 1) - content.length).join('0') + content\r\n            : content\r\n        }\r\n\r\n        var writeLanguage = (lang) => {\r\n          switch (lang.toLowerCase()) {\r\n          case 'swedish':\r\n            return 'ruotsi'\r\n          case 'finnish':\r\n            return 'suomi'\r\n          case 'bilingual':\r\n            return 'kaksikielinen'\r\n          default:\r\n            return ''\r\n          }\r\n        }\r\n        var writeContent = (data) => {\r\n          var content = ''\r\n          var newLine = '\\r\\n'\r\n          for (var i = 0; i < data.length; i++) {\r\n            var row = data[i]\r\n            content += wrapQuotesAndComma(padZeros(row.postcode, 5))\r\n            content += wrapQuotesAndComma(row.sectionName)\r\n            content += wrapQuotesAndComma(row.districtName)\r\n            content += wrapQuotesAndComma(writeLanguage(row.language))\r\n            content = content.slice(0, -1) // chop last comma\r\n            content += newLine\r\n          }\r\n\r\n          return content.slice(0, -1)\r\n        }\r\n\r\n        function JSONToCSVConvertor (data) {\r\n          var dataForConverting = typeof data !== 'object' ? JSON.parse(data) : data\r\n\r\n          var d = new Date()\r\n          var fileDateStr = `${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}-${d.getHours()}-${d.getMinutes() < 10 ? ('0' + d.getMinutes()) : d.getMinutes()}`\r\n          var exportFileName = `osastot-${fileDateStr}`\r\n          var csvResult = 'SEP=,\\r\\n'\r\n\r\n          csvResult += writeTitles()\r\n          csvResult += writeContent(dataForConverting)\r\n\r\n          // IE 10+\r\n          if (navigator.msSaveOrOpenBlob) {\r\n            var utf8Text = csvResult\r\n            var ab = new ArrayBuffer(utf8Text.length)\r\n            var uint8Array = new Uint8Array(ab)\r\n            for (var j = 0; j < uint8Array.length; j++) {\r\n              var charCode = utf8Text[j].charCodeAt(0)\r\n              if (charCode > 256) {\r\n                charCode = 182 // ¶\r\n              }\r\n              uint8Array[j] = charCode\r\n            }\r\n            navigator.msSaveOrOpenBlob(new Blob([uint8Array], { type: 'text/csv;charset=ISO-8859-1;' }), exportFileName + '.csv')\r\n          } else {\r\n            var link = document.createElement('a')\r\n            var uri = 'data:text/csv;charset=utf-8,' + escape(csvResult)\r\n            link.href = uri\r\n            link.style = 'visibility:hidden'\r\n            link.download = exportFileName + '.csv'\r\n            document.body.appendChild(link)\r\n            link.click()\r\n            document.body.removeChild(link)\r\n          }\r\n        }\r\n\r\n        var sections = this.filteredItems.map(x => x.id)\r\n        var url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.sectionsexport[0]\r\n        this.$http.post(url, sections).then((response) => {\r\n          JSONToCSVConvertor(response.data)\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .comp-section-list {\r\n    padding: 0 15px 15px;\r\n\r\n    .listing {\r\n      background: $brand-white;\r\n      display: flex;\r\n      display: -ms-flexbox;\r\n      flex-direction: column;\r\n      -ms-flex-direction: column;\r\n\r\n      .listing-row {\r\n        padding: 10px 15px;\r\n        color: $brand-red;\r\n\r\n        &:nth-child(even) {\r\n          background: rgba(0,0,0,0.03);\r\n        }\r\n\r\n        a {\r\n          color: $brand-red;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SectionList.vue?vue&type=template&id=715bf250\"\nimport script from \"./SectionList.vue?vue&type=script&lang=js\"\nexport * from \"./SectionList.vue?vue&type=script&lang=js\"\nimport style0 from \"./SectionList.vue?vue&type=style&index=0&id=715bf250&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"comp-section-groups\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[(_vm.isLoading)?_c('div',{staticClass:\"loading text-center brand-red\"},[_c('div',{staticClass:\"my-2\"},[_c('loading')],1),_c('div',{staticClass:\"my-3\"},[_c('p',[_vm._v(_vm._s(_vm.$t('userAdmin.loading')))])])]):_vm._e()])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-7\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('userAdmin.actionGroups')))])]),_c('div',{staticClass:\"col-5 text-right add-cta\"},[(_vm.hasRightsToCreateActionGroup)?_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('userAdmin.createGroup'),\"click-event\":\"createGroup\"},on:{\"createGroup\":_vm.onCreateActionGroup}}):_vm._e()],1)]),(_vm.showCreateActionGroup)?_c('div',{staticClass:\"row creategroup\"},[_c('div',{staticClass:\"col-12\"},[_c('groupcreate',{attrs:{\"grouptype\":1,\"is-section-group\":\"\"},on:{\"save\":_vm.onSaveActionGroup,\"cancel\":_vm.onCancelSaveActionGroup}})],1)]):_vm._e(),_c('div',{staticClass:\"row actiongrouplist\"},[_c('div',{staticClass:\"col-12\"},[(!_vm.isLoading && _vm.actiongroups.length)?_c('div',{staticClass:\"listing\"},[_c('grouplist',{attrs:{\"list\":_vm.actiongroups}})],1):_vm._e(),(!_vm.isLoading && !_vm.actiongroups.length)?_c('div',{staticClass:\"noresults\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.noResults'))+\" \")]):_vm._e()])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-7\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('userAdmin.standardGroups')))])]),_c('div',{staticClass:\"col-5 text-right add-cta\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('userAdmin.createGroup'),\"click-event\":\"createGroup\"},on:{\"createGroup\":_vm.onCreateStandardGroup}})],1)]),(_vm.showCreateStandardGroup)?_c('div',{staticClass:\"row creategroup\"},[_c('div',{staticClass:\"col-12\"},[_c('groupcreate',{attrs:{\"grouptype\":2,\"is-section-group\":\"\"},on:{\"save\":_vm.onSaveStandardGroup,\"cancel\":_vm.onCancelSaveStandardGroup}})],1)]):_vm._e(),_c('div',{staticClass:\"row standardgrouplist\"},[_c('div',{staticClass:\"col-12\"},[(!_vm.isLoading && _vm.standardgroups.length)?_c('div',{staticClass:\"listing\"},[_c('grouplist',{attrs:{\"list\":_vm.standardgroups}})],1):_vm._e(),(!_vm.isLoading && !_vm.standardgroups.length)?_c('div',{staticClass:\"noresults\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.noResults'))+\" \")]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row groupcreate\"},[_c('div',{staticClass:\"column col-12\"},[_c('div',{staticClass:\"space-between-row\"},[_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('groups.name'),\"name\":\"group.name\",\"required\":true,\"is-valid\":!_vm.errors.has('group.name')},model:{value:(_vm.group.name),callback:function ($$v) {_vm.$set(_vm.group, \"name\", $$v)},expression:\"group.name\"}})],1),_c('div',{staticClass:\"simple-text right-outer\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.language'))+\" \")]),_c('pillbox',{attrs:{\"items\":_vm.languages,\"selected\":_vm.selectedlanguages},on:{\"change\":_vm.onLanguageChanged}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('textareainput',{attrs:{\"rows\":4,\"title\":_vm.$t('groups.description')},model:{value:(_vm.group.description),callback:function ($$v) {_vm.$set(_vm.group, \"description\", $$v)},expression:\"group.description\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('sprdropdownnumberkey',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"title\":_vm.$t('groups.category'),\"name\":\"group.category\",\"items\":_vm.groupCategories,\"required\":_vm.group.groupType === 1,\"is-valid\":!_vm.errors.has('group.category') || _vm.group.groupType !== 1},model:{value:(_vm.group.category),callback:function ($$v) {_vm.$set(_vm.group, \"category\", $$v)},expression:\"group.category\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprcheckbox',{attrs:{\"title\":_vm.$t('groups.isAllLocations'),\"aria-label\":_vm.$t('groups.isAllLocations')},model:{value:(_vm.group.isAllLocations),callback:function ($$v) {_vm.$set(_vm.group, \"isAllLocations\", $$v)},expression:\"group.isAllLocations\"}})],1)]),(_vm.isActionGroup())?_c('div',[_c('div',{staticClass:\"row grouporganizer\"},[_c('div',{staticClass:\"col-12\"},[_c('groupOrganizer',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('hasOptionalGroupOrganizer'),expression:\"'hasOptionalGroupOrganizer'\"}],attrs:{\"hint\":_vm.$t('userAdmin.groupOrganizer'),\"name\":\"userAdmin.groupOrganizer\",\"value\":_vm.group.groupOrganizer,\"required\":false,\"is-valid\":!_vm.errors.has('userAdmin.groupOrganizer')},on:{\"input\":_vm.onGroupOrganizerChanged}})],1)])]):_vm._e(),_c('div',{staticClass:\"row button-row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"d-flex justify-content-end\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"button\",\"size\":4,\"title\":_vm.$t('groups.cancel'),\"click-event\":\"cancelSave\"},on:{\"cancelSave\":_vm.onCancelCreate}}),_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"submit\",\"size\":4,\"title\":_vm.$t('groups.save'),\"icon\":\"chevron-right\",\"click-event\":\"createGroup\"},on:{\"createGroup\":_vm.onCreateGroup}})],1)])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"pillbox\"},_vm._l((_vm.items),function(v){return _c('checkpill',{key:v.id,attrs:{\"title\":v.text,\"checked\":_vm.isSelected(v.id)},on:{\"click\":_vm.onClick}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"checkpill\",class:{'checked': _vm.checked},on:{\"click\":_vm.onClick}},[_c('span',{staticClass:\".pillcontent\"},[_vm._v(_vm._s(_vm.$t(_vm.title)))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"checkpill\" :class=\"{'checked': checked}\" @click=\"onClick\">\r\n    <span class=\".pillcontent\">{{ $t(title) }}</span>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'CheckPill',\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default () {\r\n          return 'title placeholder'\r\n        }\r\n      },\r\n      checked: {\r\n        type: Boolean,\r\n        default () {\r\n          return false\r\n        }\r\n      }\r\n    },\r\n    methods: {\r\n      onClick (v) {\r\n        this.$emit('click', { id: this.$vnode.key, title: this.title, selected: !this.checked })\r\n      }\r\n    }\r\n\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"~@/assets/scss/_variables.scss\";\r\n\r\n  .checkpill {\r\n    border: solid 2px $brand-red;\r\n    background: $brand-white;\r\n    color: $brand-red;\r\n    padding: 5px 10px;\r\n    border-radius: 20px;\r\n    font-family: $font-light;\r\n    font-weight: bold;\r\n    font-size:13px;\r\n    margin-left: 3px;\r\n    margin-right: 3px;\r\n    cursor: pointer;\r\n\r\n    &.checked {\r\n      background-color: $brand-red;\r\n      color: $brand-white;\r\n    }\r\n\r\n    &:hover {\r\n      background: #ba0000;\r\n      border: 2px solid #ba0000 !important;\r\n      color: #FFFFFF !important;\r\n    }\r\n\r\n    .pillcontent {\r\n      display:inline-block;\r\n      margin: 0 auto;\r\n      font-weight: bold;\r\n      font-size:14px;\r\n    }\r\n    @media (max-width: $media-sm) {\r\n        margin-bottom: 5px;\r\n      }\r\n\r\n  }\r\n  </style>\r\n","import mod from \"-!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckPill.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckPill.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CheckPill.vue?vue&type=template&id=f1bf5a16\"\nimport script from \"./CheckPill.vue?vue&type=script&lang=js\"\nexport * from \"./CheckPill.vue?vue&type=script&lang=js\"\nimport style0 from \"./CheckPill.vue?vue&type=style&index=0&id=f1bf5a16&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"pillbox\">\r\n    <checkpill v-for=\"v in items\" :key=\"v.id\" :title=\"v.text\" :checked=\"isSelected(v.id)\" @click=\"onClick\"></checkpill>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import checkpill from '../../common/Pill/CheckPill.vue'\r\n\r\n  export default {\r\n    name: 'PillBox',\r\n    components: { checkpill },\r\n    props: {\r\n      items: {\r\n        type: Array,\r\n        default () { return [] }\r\n      },\r\n      selected: {\r\n        type: Array,\r\n        default () { return [] }\r\n      }\r\n    },\r\n    methods: {\r\n      onClick (v) {\r\n        const selectedItems = [...this.selected]\r\n        // if item was clicked, it was unchecked if it existed in selected.\r\n        if (selectedItems.some((s) => s.id === v.id)) {\r\n          selectedItems.splice(selectedItems.findIndex((s) => s.id === v.id), 1)\r\n        } else { selectedItems.push(v) }\r\n        this.$emit('change', selectedItems)\r\n      },\r\n      isSelected (v) {\r\n        return this.selected.some((s) => s.id === v)\r\n      }\r\n    }\r\n\r\n  }\r\n</script>\r\n\r\n<style scoped>\r\n  .pillbox {\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    flex-direction: row;\r\n    align-content: center;\r\n    justify-content: center;\r\n  }\r\n</style>","import mod from \"-!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PillBox.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PillBox.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PillBox.vue?vue&type=template&id=0de34e71&scoped=true\"\nimport script from \"./PillBox.vue?vue&type=script&lang=js\"\nexport * from \"./PillBox.vue?vue&type=script&lang=js\"\nimport style0 from \"./PillBox.vue?vue&type=style&index=0&id=0de34e71&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"0de34e71\",\n  null\n  \n)\n\nexport default component.exports","import Vue from 'vue'\r\nimport VueResource from 'vue-resource'\r\n\r\nVue.use(VueResource)\r\n\r\nconst validatorHasOptionalGroupOrganizer = {\r\n  getMessage (field, args) {\r\n    return 'Group Organizer can be defined'\r\n  },\r\n  validate (value, args) {\r\n    var rule = value.organizerId === null || value.organizerId > 0\r\n    return rule\r\n  }\r\n}\r\n\r\nexport default validatorHasOptionalGroupOrganizer\r\n","<template>\r\n  <div class=\"row groupcreate\">\r\n    <div class=\"column col-12\">\r\n      <div class=\"space-between-row\">\r\n        <div class=\"col-12 col-sm-6 col-md-4\">\r\n          <forminput v-model=\"group.name\"\r\n                     v-validate=\"'required'\"\r\n                     :hint=\"$t('groups.name')\"\r\n                     name=\"group.name\"\r\n                     :required=\"true\"\r\n                     :is-valid=\"!errors.has('group.name')\"\r\n          />\r\n        </div>\r\n        <div class=\"simple-text right-outer\">\r\n          <div class=\"cap-label\">\r\n            {{ $t('groups.language') }}\r\n          </div>\r\n          <pillbox :items=\"languages\" :selected=\"selectedlanguages\" @change=\"onLanguageChanged\">\r\n          </pillbox>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <textareainput\r\n            v-model=\"group.description\"\r\n            :rows=\"4\"\r\n            :title=\"$t('groups.description')\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 col-sm-6 col-md-4\">\r\n          <sprdropdownnumberkey\r\n            v-model=\"group.category\"\r\n            v-validate=\"'required'\"\r\n            :title=\"$t('groups.category')\"\r\n            name=\"group.category\"\r\n            :items=\"groupCategories\"\r\n            :required=\"group.groupType === 1\"\r\n            :is-valid=\"!errors.has('group.category') || group.groupType !== 1\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <sprcheckbox\r\n            v-model=\"group.isAllLocations\"\r\n            :title=\"$t('groups.isAllLocations')\"\r\n            :aria-label=\"$t('groups.isAllLocations')\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <!-- Group Organizer -->\r\n      <div v-if=\"isActionGroup()\">\r\n        <div class=\"row grouporganizer\">\r\n          <div class=\"col-12\">\r\n            <groupOrganizer\r\n              v-validate=\"'hasOptionalGroupOrganizer'\"\r\n              :hint=\"$t('userAdmin.groupOrganizer')\"\r\n              name=\"userAdmin.groupOrganizer\"\r\n              :value=\"group.groupOrganizer\"\r\n              :required=\"false\"\r\n              :is-valid=\"!errors.has('userAdmin.groupOrganizer')\"\r\n              @input=\"onGroupOrganizerChanged\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"row button-row\">\r\n        <div class=\"col-12\">\r\n          <div class=\"d-flex justify-content-end\">\r\n            <sprbutton\r\n              type=\"button\"\r\n              :size=\"4\"\r\n              :title=\"$t('groups.cancel')\"\r\n              class=\"spr-redborder button-width\"\r\n              click-event=\"cancelSave\"\r\n              @cancelSave=\"onCancelCreate\"\r\n            />\r\n            <sprbutton\r\n              type=\"submit\"\r\n              :size=\"4\"\r\n              :title=\"$t('groups.save')\"\r\n              icon=\"chevron-right\"\r\n              class=\"spr-redborder button-width\"\r\n              click-event=\"createGroup\"\r\n              @createGroup=\"onCreateGroup\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import sprcheckbox from '../SPRSimpleCheckbox.vue'\r\n  import sprdropdownnumberkey from '../SPRDropdownNumberKey.vue'\r\n  import groupOrganizer from '../SPRGroupOrganizersDropdown.vue'\r\n  import pillbox from '../common/Pill/PillBox.vue'\r\n\r\n  import { Validator } from 'vee-validate'\r\n  import hasOptionalGroupOrganizer from '../../mixins/validator-hasOptionalGroupOrganizer.js'\r\n\r\n  Validator.extend('hasOptionalGroupOrganizer', hasOptionalGroupOrganizer)\r\n\r\n  export default {\r\n    name: 'GroupCreate',\r\n    components: { sprbutton, textareainput, forminput, sprcheckbox, sprdropdownnumberkey, groupOrganizer, pillbox },\r\n    props: {\r\n      grouptype: {\r\n        type: Number,\r\n        default: 2\r\n      },\r\n      isDistrictGroup: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      isSectionGroup: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        group: {\r\n          name: '',\r\n          description: '',\r\n          groupCreatorId: this.$store.state.profile.profileId,\r\n          members: [],\r\n          isAllLocations: false,\r\n          sectionId: this.isSectionGroup ? Number(this.$route.params.id) : -1,\r\n          districtId: this.isDistrictGroup ? Number(this.$route.params.id) : -1,\r\n          groupType: this.grouptype,\r\n          category: null,\r\n          languages: 0\r\n        },\r\n        languages: [],\r\n        selectedlanguages: [],\r\n        groupCategories: null\r\n      }\r\n    },\r\n    mounted () {\r\n      const lang = this.$store.state.customerLanguages\r\n      this.languages = this.$store.state.groupLanguages.filter((l) => l.id !== 0).map((v) => {\r\n        return { id: v.id, text: 'actionLanguage.' + lang.find((l) => l.displayName.toUpperCase() === v.text.toUpperCase()).isoCode }\r\n      })\r\n      this.selectedlanguages = this.languages.filter((v) => v.id === null || v.id === 0 ? false : (v.id & this.group.languages) === v.id)\r\n    },\r\n    created () {\r\n      this.getCategories()\r\n      this.setDefaultGroupOrganizer()\r\n    },\r\n    methods: {\r\n      onLanguageChanged (e) {\r\n        this.group.languages = e.reduce((b, v) => b + v.id, 0)\r\n        this.selectedlanguages = e\r\n      },\r\n      getCategories () {\r\n        var self = this\r\n        this.groupCategories = _.map(this.$store.state.eventCategories, function (val, key) {\r\n          return { value: val.id, text: self.$t('eventCategory.' + val.text) }\r\n        })\r\n      },\r\n      isActionGroup () {\r\n        return this.group.groupType === 1 // public enum GroupType: 1-ActionGroup, 2-StandardGroup (OpenGroup)\r\n      },\r\n      onGroupOrganizerChanged (groupOrganizer) {\r\n        this.group.groupOrganizer = groupOrganizer\r\n      },\r\n      setDefaultGroupOrganizer () {\r\n        if (this.isActionGroup()) {\r\n          if (this.group.sectionId === -1) {\r\n            this.group.groupOrganizer = {\r\n              groupOrganizerType: 100, // public enum GroupOrganizerType: Section = 200\r\n              organizerId: this.group.districtId\r\n            }\r\n          } else {\r\n            this.group.groupOrganizer = {\r\n              groupOrganizerType: 200, // public enum GroupOrganizerType: Section = 200\r\n              organizerId: this.group.sectionId\r\n            }\r\n          }\r\n        } else {\r\n          this.group.groupOrganizer = {\r\n            groupOrganizerType: -1, // public enum GroupOrganizerType: NotSet = -1\r\n            organizerId: null\r\n          }\r\n        }\r\n      },\r\n      onCreateGroup () {\r\n        this.$validator.validateAll().then(resp => {\r\n          if (resp) {\r\n            this.$emit('save', this.group)\r\n          }\r\n        })\r\n      },\r\n      onCancelCreate () {\r\n        this.$emit('cancel', this.group)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .space-between-row{\r\n    display: flex;\r\n    justify-content: space-between;\r\n  }\r\n  .groupcreate {\r\n    background-color:$brand-white;\r\n    padding: 20px 0;\r\n\r\n    .button-row {\r\n      button:first-child {\r\n        margin-right:5px;\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupCreate.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupCreate.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./GroupCreate.vue?vue&type=template&id=5d278682\"\nimport script from \"./GroupCreate.vue?vue&type=script&lang=js\"\nexport * from \"./GroupCreate.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupCreate.vue?vue&type=style&index=0&id=5d278682&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"comp-section-groups\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div v-if=\"isLoading\" class=\"loading text-center brand-red\">\r\n          <div class=\"my-2\">\r\n            <loading />\r\n          </div>\r\n          <div class=\"my-3\">\r\n            <p>{{ $t('userAdmin.loading') }}</p>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-7\">\r\n        <h5>{{ $t('userAdmin.actionGroups') }}</h5>\r\n      </div>\r\n      <div class=\"col-5 text-right add-cta\">\r\n        <sprbutton v-if=\"hasRightsToCreateActionGroup\"\r\n                   type=\"primary\"\r\n                   :size=\"4\"\r\n                   :title=\"$t('userAdmin.createGroup')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"createGroup\"\r\n                   @createGroup=\"onCreateActionGroup\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"showCreateActionGroup\" class=\"row creategroup\">\r\n      <div class=\"col-12\">\r\n        <groupcreate :grouptype=\"1\" is-section-group @save=\"onSaveActionGroup\" @cancel=\"onCancelSaveActionGroup\" />\r\n      </div>\r\n    </div>\r\n    <div class=\"row actiongrouplist\">\r\n      <div class=\"col-12\">\r\n        <div v-if=\"!isLoading && actiongroups.length\" class=\"listing\">\r\n          <grouplist :list=\"actiongroups\" />\r\n        </div>\r\n        <div v-if=\"!isLoading && !actiongroups.length\" class=\"noresults\">\r\n          {{ $t('userAdmin.noResults') }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-7\">\r\n        <h5>{{ $t('userAdmin.standardGroups') }}</h5>\r\n      </div>\r\n      <div class=\"col-5 text-right add-cta\">\r\n        <sprbutton type=\"primary\"\r\n                   :size=\"4\"\r\n                   :title=\"$t('userAdmin.createGroup')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"createGroup\"\r\n                   @createGroup=\"onCreateStandardGroup\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"showCreateStandardGroup\" class=\"row creategroup\">\r\n      <div class=\"col-12\">\r\n        <groupcreate :grouptype=\"2\" is-section-group @save=\"onSaveStandardGroup\" @cancel=\"onCancelSaveStandardGroup\" />\r\n      </div>\r\n    </div>\r\n    <div class=\"row standardgrouplist\">\r\n      <div class=\"col-12\">\r\n        <div v-if=\"!isLoading && standardgroups.length\" class=\"listing\">\r\n          <grouplist :list=\"standardgroups\" />\r\n        </div>\r\n        <div v-if=\"!isLoading && !standardgroups.length\" class=\"noresults\">\r\n          {{ $t('userAdmin.noResults') }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import grouplist from './GroupList.vue'\r\n  import groupcreate from './GroupCreate.vue'\r\n  import loading from '../SPRLoading.vue'\r\n\r\n  export interface TemplateComponentData {\r\n    actiongroups: any[],\r\n    standardgroups: any[],\r\n    isLoading: boolean,\r\n    showCreateActionGroup: boolean,\r\n    showCreateStandardGroup: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'AdminSectionGroups',\r\n    components: { sprbutton, grouplist, groupcreate, loading },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        actiongroups: [],\r\n        standardgroups: [],\r\n        isLoading: false,\r\n        showCreateActionGroup: false,\r\n        showCreateStandardGroup: false\r\n      }\r\n    },\r\n    computed: {\r\n      hasRightsToCreateActionGroup (): boolean {\r\n        //@ts-ignore\r\n        return this.hasAdminToSection(this.$route.params.id, true)\r\n      }\r\n    },\r\n    mounted () {\r\n      this.loadGroups()\r\n    },\r\n    methods: {\r\n      loadGroups () {\r\n        this.isLoading = true\r\n        var url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupsbysection[0]}`\r\n        url = url.replace('{0}', this.$route.params.id)\r\n        this.$http.get(url).then((success: any) => {\r\n          var groups = success.body\r\n\r\n          this.actiongroups = _.filter(groups, (group) => {\r\n            return group.groupType === 1\r\n          })\r\n\r\n          this.standardgroups = _.filter(groups, (group) => {\r\n            return group.groupType === 2\r\n          })\r\n          this.isLoading = false\r\n        })\r\n      },\r\n      onCreateActionGroup () {\r\n        this.showCreateActionGroup = true\r\n      },\r\n      onSaveActionGroup (group) {\r\n        group.groupType = 1\r\n        this.createGroup(group).then((resp) => {\r\n          this.loadGroups()\r\n          this.showCreateActionGroup = false\r\n        })\r\n      },\r\n      onCancelSaveActionGroup () {\r\n        this.showCreateActionGroup = false\r\n      },\r\n      onCreateStandardGroup () {\r\n        this.showCreateStandardGroup = true\r\n      },\r\n      onSaveStandardGroup (group) {\r\n        group.groupType = 2\r\n        this.createGroup(group).then((resp) => {\r\n          this.loadGroups()\r\n          this.showCreateStandardGroup = false\r\n        })\r\n      },\r\n      onCancelSaveStandardGroup () {\r\n        this.showCreateStandardGroup = false\r\n      },\r\n      createGroup (group) {\r\n        var self = this\r\n        var url = `${self.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupsectionadd[0]}`\r\n        return self.$http.post(url, group)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .comp-section-groups {\r\n    margin-top:20px;\r\n    .actiongrouplist,\r\n    .standardgrouplist,\r\n    .editgroup {\r\n      background-color:$brand-white;\r\n      padding:20px 0;\r\n      margin-bottom: 40px;\r\n    }\r\n\r\n    .noresults {\r\n      text-align:center;\r\n    }\r\n\r\n    .add-cta {\r\n      margin-bottom: 5px;\r\n    }\r\n\r\n    .creategroup {\r\n      margin-bottom: 30px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionGroups.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionGroups.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SectionGroups.vue?vue&type=template&id=2797dbed\"\nimport script from \"./SectionGroups.vue?vue&type=script&lang=ts\"\nexport * from \"./SectionGroups.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SectionGroups.vue?vue&type=style&index=0&id=2797dbed&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"comp-section-groups\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[(_vm.isLoading)?_c('div',{staticClass:\"loading text-center brand-red\"},[_c('div',{staticClass:\"my-2\"},[_c('loading')],1),_c('div',{staticClass:\"my-3\"},[_c('p',[_vm._v(_vm._s(_vm.$t('userAdmin.loading')))])])]):_vm._e()])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-7\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('userAdmin.actionGroups')))])]),_c('div',{staticClass:\"col-5 text-right add-cta\"},[(_vm.hasRightsToCreateActionGroup)?_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('userAdmin.createGroup'),\"click-event\":\"createGroup\"},on:{\"createGroup\":_vm.onCreateActionGroup}}):_vm._e()],1)]),(_vm.showCreateActionGroup)?_c('div',{staticClass:\"row creategroup\"},[_c('div',{staticClass:\"col-12\"},[_c('groupcreate',{attrs:{\"grouptype\":1,\"is-district-group\":\"\"},on:{\"save\":_vm.onSaveActionGroup,\"cancel\":_vm.onCancelSaveActionGroup}})],1)]):_vm._e(),_c('div',{staticClass:\"row actiongrouplist\"},[_c('div',{staticClass:\"col-12\"},[(!_vm.isLoading && _vm.actiongroups.length)?_c('div',{staticClass:\"listing\"},[_c('grouplist',{attrs:{\"list\":_vm.actiongroups}})],1):_vm._e(),(!_vm.isLoading && !_vm.actiongroups.length)?_c('div',{staticClass:\"noresults\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.noResults'))+\" \")]):_vm._e()])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-7\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('userAdmin.standardGroups')))])]),_c('div',{staticClass:\"col-5 text-right add-cta\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('userAdmin.createGroup'),\"click-event\":\"createGroup\"},on:{\"createGroup\":_vm.onCreateStandardGroup}})],1)]),(_vm.showCreateStandardGroup)?_c('div',{staticClass:\"row creategroup\"},[_c('div',{staticClass:\"col-12\"},[_c('groupcreate',{attrs:{\"grouptype\":2,\"is-district-group\":\"\"},on:{\"save\":_vm.onSaveStandardGroup,\"cancel\":_vm.onCancelSaveStandardGroup}})],1)]):_vm._e(),_c('div',{staticClass:\"row standardgrouplist\"},[_c('div',{staticClass:\"col-12\"},[(!_vm.isLoading && _vm.standardgroups.length)?_c('div',{staticClass:\"listing\"},[_c('grouplist',{attrs:{\"list\":_vm.standardgroups}})],1):_vm._e(),(!_vm.isLoading && !_vm.standardgroups.length)?_c('div',{staticClass:\"noresults\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.noResults'))+\" \")]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-section-groups\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div v-if=\"isLoading\" class=\"loading text-center brand-red\">\r\n          <div class=\"my-2\">\r\n            <loading />\r\n          </div>\r\n          <div class=\"my-3\">\r\n            <p>{{ $t('userAdmin.loading') }}</p>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-7\">\r\n        <h5>{{ $t('userAdmin.actionGroups') }}</h5>\r\n      </div>\r\n      <div class=\"col-5 text-right add-cta\">\r\n        <sprbutton v-if=\"hasRightsToCreateActionGroup\"\r\n                   type=\"primary\"\r\n                   :size=\"4\"\r\n                   :title=\"$t('userAdmin.createGroup')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"createGroup\"\r\n                   @createGroup=\"onCreateActionGroup\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"showCreateActionGroup\" class=\"row creategroup\">\r\n      <div class=\"col-12\">\r\n        <groupcreate :grouptype=\"1\" is-district-group @save=\"onSaveActionGroup\" @cancel=\"onCancelSaveActionGroup\" />\r\n      </div>\r\n    </div>\r\n    <div class=\"row actiongrouplist\">\r\n      <div class=\"col-12\">\r\n        <div v-if=\"!isLoading && actiongroups.length\" class=\"listing\">\r\n          <grouplist :list=\"actiongroups\" />\r\n        </div>\r\n        <div v-if=\"!isLoading && !actiongroups.length\" class=\"noresults\">\r\n          {{ $t('userAdmin.noResults') }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-7\">\r\n        <h5>{{ $t('userAdmin.standardGroups') }}</h5>\r\n      </div>\r\n      <div class=\"col-5 text-right add-cta\">\r\n        <sprbutton type=\"primary\"\r\n                   :size=\"4\"\r\n                   :title=\"$t('userAdmin.createGroup')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"createGroup\"\r\n                   @createGroup=\"onCreateStandardGroup\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"showCreateStandardGroup\" class=\"row creategroup\">\r\n      <div class=\"col-12\">\r\n        <groupcreate :grouptype=\"2\" is-district-group @save=\"onSaveStandardGroup\" @cancel=\"onCancelSaveStandardGroup\" />\r\n      </div>\r\n    </div>\r\n    <div class=\"row standardgrouplist\">\r\n      <div class=\"col-12\">\r\n        <div v-if=\"!isLoading && standardgroups.length\" class=\"listing\">\r\n          <grouplist :list=\"standardgroups\" />\r\n        </div>\r\n        <div v-if=\"!isLoading && !standardgroups.length\" class=\"noresults\">\r\n          {{ $t('userAdmin.noResults') }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import grouplist from './GroupList.vue'\r\n  import groupcreate from './GroupCreate.vue'\r\n  import loading from '../SPRLoading.vue'\r\n\r\n  export interface TemplateComponentData {\r\n    actiongroups: any[],\r\n    standardgroups: any[],\r\n    isLoading: boolean,\r\n    showCreateActionGroup: boolean,\r\n    showCreateStandardGroup: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'AdminSectionGroups',\r\n    components: { sprbutton, grouplist, groupcreate, loading },\r\n    data () {\r\n      return {\r\n        actiongroups: [],\r\n        standardgroups: [],\r\n        isLoading: false,\r\n        showCreateActionGroup: false,\r\n        showCreateStandardGroup: false\r\n      }\r\n    },\r\n    computed: {\r\n      hasRightsToCreateActionGroup (): boolean {\r\n        //@ts-ignore\r\n        return this.hasAdminToDistrict(this.$route.params.id, true)\r\n      }\r\n    },\r\n    mounted () {\r\n      this.loadGroups()\r\n    },\r\n    methods: {\r\n      loadGroups () {\r\n        this.isLoading = true\r\n        var url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupsbydistrict[0]}`\r\n        url = url.replace('{0}', this.$route.params.id)\r\n        this.$http.get(url).then((success: any) => {\r\n          var groups = success.body\r\n\r\n          this.actiongroups = _.filter(groups, (group) => {\r\n            return group.groupType === 1\r\n          })\r\n\r\n          this.standardgroups = _.filter(groups, (group) => {\r\n            return group.groupType === 2\r\n          })\r\n          this.isLoading = false\r\n        })\r\n      },\r\n      onCreateActionGroup () {\r\n        this.showCreateActionGroup = true\r\n      },\r\n      onSaveActionGroup (group) {\r\n        group.groupType = 1\r\n        this.createGroup(group).then((resp) => {\r\n          this.loadGroups()\r\n          this.showCreateActionGroup = false\r\n        })\r\n      },\r\n      onCancelSaveActionGroup () {\r\n        this.showCreateActionGroup = false\r\n      },\r\n      onCreateStandardGroup () {\r\n        this.showCreateStandardGroup = true\r\n      },\r\n      onSaveStandardGroup (group) {\r\n        group.groupType = 2\r\n        this.createGroup(group).then((resp) => {\r\n          this.loadGroups()\r\n          this.showCreateStandardGroup = false\r\n        })\r\n      },\r\n      onCancelSaveStandardGroup () {\r\n        this.showCreateStandardGroup = false\r\n      },\r\n      createGroup (group) {\r\n        var self = this\r\n        var url = `${self.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupdistrictadd[0]}`\r\n        return self.$http.post(url, group)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .comp-section-groups {\r\n    margin-top:20px;\r\n    .actiongrouplist,\r\n    .standardgrouplist,\r\n    .editgroup {\r\n      background-color:$brand-white;\r\n      padding:20px 0;\r\n      margin-bottom: 40px;\r\n    }\r\n\r\n    .noresults {\r\n      text-align:center;\r\n    }\r\n\r\n    .add-cta {\r\n      margin-bottom: 5px;\r\n    }\r\n\r\n    .creategroup {\r\n      margin-bottom: 30px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DistrictGroups.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DistrictGroups.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DistrictGroups.vue?vue&type=template&id=74dc4b0a\"\nimport script from \"./DistrictGroups.vue?vue&type=script&lang=ts\"\nexport * from \"./DistrictGroups.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DistrictGroups.vue?vue&type=style&index=0&id=74dc4b0a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.isVisible)?_c('div',{staticClass:\"groupdetail\"},[(_vm.selectedGroup)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('userAdmin.editGroup'))+\" \"+_vm._s(_vm.selectedGroup.name))])])]),_c('div',{staticClass:\"row groupstatus\"},[_c('div',{staticClass:\"col-12\"},[_c('groupstatus',{attrs:{\"group\":_vm.selectedGroup},on:{\"disable\":_vm.onDisableGroup,\"enable\":_vm.onEnableGroup,\"delete\":_vm.onDeleteGroup}})],1)]),_c('div',{staticClass:\"row editgroup\"},[_c('div',{staticClass:\"col-12\"},[_c('groupedit',{ref:\"groupEditChild\",attrs:{\"group\":_vm.selectedGroup},on:{\"saveGroup\":_vm.onSaveGroup}})],1)]),_c('div',{staticClass:\"row editmembers\"},[_c('div',{staticClass:\"col-12\"},[_c('groupmembers',{attrs:{\"group\":_vm.selectedGroup},on:{\"makeGroupAdmin\":_vm.onMakeGroupAdmin,\"removeGroupAdmin\":_vm.onRemoveGroupAdmin}})],1)])]):_vm._e(),(_vm.forbidden)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center mt-5 mb-4\"},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"ban\",\"size\":\"5x\"}})],1),_c('div',{staticClass:\"col-12 text-center\"},[_c('p',[_vm._v(_vm._s(_vm.$t('userAdmin.groupDisabledHint')))])])])]):_vm._e()]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row groupstatus\"},[_c('div',{staticClass:\"col col-sm-7\"},[_c('div',{staticClass:\"status\"},[_c('div',{staticClass:\"cap-label title\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.groupStatus'))+\" \")]),(_vm.group.isActive)?_c('span',{staticClass:\"active\"},[_vm._v(_vm._s(_vm.$t('userAdmin.groupStatusActive')))]):_vm._e(),(!_vm.group.isActive)?_c('span',{staticClass:\"inactive\"},[_vm._v(_vm._s(_vm.$t('userAdmin.groupStatusInactive')))]):_vm._e()])]),_c('div',{staticClass:\"col-sm-5 text-right\"},[(!_vm.group.isActive)?_c('sprbutton',{staticClass:\"btnactivate\",attrs:{\"size\":4,\"title\":_vm.$t('userAdmin.btnActivateGroup'),\"bordersize\":2,\"click-event\":\"activate\"},on:{\"activate\":_vm.onActivate}}):_vm._e(),(_vm.group.isActive)?_c('sprbutton',{staticClass:\"btndeactivate\",attrs:{\"size\":4,\"title\":_vm.$t('userAdmin.btnDeactivateGroup'),\"bordersize\":2,\"click-event\":\"deactivate\"},on:{\"deactivate\":_vm.onDeactivate}}):_vm._e()],1),_c('div',{staticClass:\"col-12 text-right delete\"},[(!_vm.group.isActive)?_c('sprbutton',{staticClass:\"btndelete\",attrs:{\"size\":4,\"title\":_vm.$t('userAdmin.btnDeleteGroup'),\"bordersize\":2,\"click-event\":\"delete\"},on:{\"delete\":_vm.onDelete}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row groupstatus\">\r\n    <div class=\"col col-sm-7\">\r\n      <div class=\"status\">\r\n        <div class=\"cap-label title\">\r\n          {{ $t('userAdmin.groupStatus') }}\r\n        </div>\r\n        <span v-if=\"group.isActive\" class=\"active\">{{ $t('userAdmin.groupStatusActive') }}</span>\r\n        <span v-if=\"!group.isActive\" class=\"inactive\">{{ $t('userAdmin.groupStatusInactive') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"col-sm-5 text-right\">\r\n      <sprbutton\r\n        v-if=\"!group.isActive\"\r\n        :size=\"4\"\r\n        :title=\"$t('userAdmin.btnActivateGroup')\"\r\n        :bordersize=\"2\"\r\n        class=\"btnactivate\"\r\n        click-event=\"activate\"\r\n        @activate=\"onActivate\"\r\n      />\r\n      <sprbutton\r\n        v-if=\"group.isActive\"\r\n        :size=\"4\"\r\n        :title=\"$t('userAdmin.btnDeactivateGroup')\"\r\n        :bordersize=\"2\"\r\n        class=\"btndeactivate\"\r\n        click-event=\"deactivate\"\r\n        @deactivate=\"onDeactivate\"\r\n      />\r\n    </div>\r\n    <div class=\"col-12 text-right delete\">\r\n      <sprbutton\r\n        v-if=\"!group.isActive\"\r\n        :size=\"4\"\r\n        :title=\"$t('userAdmin.btnDeleteGroup')\"\r\n        :bordersize=\"2\"\r\n        class=\"btndelete\"\r\n        click-event=\"delete\"\r\n        @delete=\"onDelete\"\r\n      />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n\r\n  export default {\r\n    name: 'GroupStatus',\r\n    components: { sprbutton },\r\n    props: {\r\n      group: {\r\n        type: Object,\r\n        default: null\r\n      }\r\n    },\r\n    methods: {\r\n      onActivate () {\r\n        this.$emit('enable')\r\n      },\r\n      onDeactivate () {\r\n        this.$emit('disable')\r\n      },\r\n      onDelete () {\r\n        this.$emit('delete')\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .groupstatus {\r\n    background-color:$brand-white;\r\n    padding:15px 0;\r\n    margin-bottom: 20px;\r\n\r\n    .status {\r\n      .title {\r\n        color:$brand-red;\r\n      }\r\n      .active {\r\n        color:$brand-success;\r\n      }\r\n      .inactive {\r\n        color:$brand-red;\r\n      }\r\n    }\r\n\r\n    .delete {\r\n      margin-top: 15px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupStatus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupStatus.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./GroupStatus.vue?vue&type=template&id=30416b14\"\nimport script from \"./GroupStatus.vue?vue&type=script&lang=js\"\nexport * from \"./GroupStatus.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupStatus.vue?vue&type=style&index=0&id=30416b14&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"groupedit\"},[_c('div',{staticClass:\"space-between-row\"},[_c('div',{staticClass:\"left-outer\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('groups.name'),\"name\":\"group.name\",\"required\":true,\"is-valid\":!_vm.errors.has('group.name')},model:{value:(_vm.group.name),callback:function ($$v) {_vm.$set(_vm.group, \"name\", $$v)},expression:\"group.name\"}})],1),_c('div',{staticClass:\"simple-text right-outer\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.language'))+\" \")]),_c('pillbox',{attrs:{\"items\":_vm.languages,\"selected\":_vm.selectedlanguages},on:{\"change\":_vm.onLanguageChanged}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('groups.description'),\"rows\":5},model:{value:(_vm.group.description),callback:function ($$v) {_vm.$set(_vm.group, \"description\", $$v)},expression:\"group.description\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('sprdropdownnumberkey',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"title\":_vm.$t('groups.category'),\"name\":\"group.category\",\"items\":_vm.groupCategories,\"required\":true,\"is-valid\":!_vm.errors.has('group.category')},model:{value:(_vm.group.category),callback:function ($$v) {_vm.$set(_vm.group, \"category\", $$v)},expression:\"group.category\"}})],1)]),_c('div',{staticClass:\"row\"},[(_vm.group.groupType === 1 && _vm.externalFormsAvailable)?_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('div',[_c('dropdowninput',{attrs:{\"title\":_vm.$t('externalForm.addLinkTitle'),\"name\":\"externalForm\",\"items\":_vm.stringifiedItems,\"required\":false,\"is-valid\":\"\"},model:{value:(_vm.selectedExternalForm),callback:function ($$v) {_vm.selectedExternalForm=$$v},expression:\"selectedExternalForm\"}})],1)]):_vm._e()]),_c('div',{staticClass:\"row national\"},[_c('div',{staticClass:\"col-12\"},[_c('simplecheckbox',{attrs:{\"title\":_vm.$t('groups.isAllLocations'),\"aria-label\":_vm.$t('groups.isAllLocations')},model:{value:(_vm.group.isAllLocations),callback:function ($$v) {_vm.$set(_vm.group, \"isAllLocations\", $$v)},expression:\"group.isAllLocations\"}})],1)]),(_vm.isActionGroup())?_c('div',[_c('div',{staticClass:\"row grouporganizer\"},[_c('div',{staticClass:\"col-12\"},[_c('groupOrganizer',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('hasOptionalGroupOrganizer'),expression:\"'hasOptionalGroupOrganizer'\"}],attrs:{\"hint\":_vm.$t('userAdmin.groupOrganizer'),\"name\":\"userAdmin.groupOrganizer\",\"value\":_vm.group.groupOrganizer,\"required\":false,\"is-valid\":!_vm.errors.has('userAdmin.groupOrganizer')},on:{\"input\":_vm.onGroupOrganizerChanged}})],1)])]):_vm._e(),_c('div',{staticClass:\"row button-row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"d-flex justify-content-end\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"submit\",\"size\":1,\"title\":_vm.$t('groups.save'),\"icon\":\"chevron-right\",\"click-event\":\"saveGroup\"},on:{\"saveGroup\":_vm.onSaveGroup}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"groupedit\">\r\n    <div class=\"space-between-row\">\r\n      <div class=\"left-outer\">\r\n        <forminput v-model=\"group.name\"\r\n                   v-validate=\"'required'\"\r\n                   :hint=\"$t('groups.name')\"\r\n                   name=\"group.name\"\r\n                   :required=\"true\"\r\n                   :is-valid=\"!errors.has('group.name')\"\r\n        />\r\n      </div>\r\n      <div class=\"simple-text right-outer\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('groups.language') }}\r\n        </div>\r\n        <pillbox :items=\"languages\" :selected=\"selectedlanguages\" @change=\"onLanguageChanged\">\r\n        </pillbox>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <textareainput\r\n          v-model=\"group.description\"\r\n          :title=\"$t('groups.description')\"\r\n          :rows=\"5\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12 col-sm-6 col-md-4\">\r\n        <sprdropdownnumberkey\r\n          v-model=\"group.category\"\r\n          v-validate=\"'required'\"\r\n          :title=\"$t('groups.category')\"\r\n          name=\"group.category\"\r\n          :items=\"groupCategories\"\r\n          :required=\"true\"\r\n          :is-valid=\"!errors.has('group.category')\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div v-if=\"group.groupType === 1 && externalFormsAvailable\" class=\"col-12 col-sm-6 col-md-4\">\r\n        <div>\r\n          <dropdowninput\r\n            v-model=\"selectedExternalForm\"\r\n            :title=\"$t('externalForm.addLinkTitle')\"\r\n            name=\"externalForm\"\r\n            :items=\"stringifiedItems\"\r\n            :required=\"false\"\r\n            is-valid\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row national\">\r\n      <div class=\"col-12\">\r\n        <simplecheckbox\r\n          v-model=\"group.isAllLocations\"\r\n          :title=\"$t('groups.isAllLocations')\"\r\n          :aria-label=\"$t('groups.isAllLocations')\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <!-- Group Organizer -->\r\n    <div v-if=\"isActionGroup()\">\r\n      <div class=\"row grouporganizer\">\r\n        <div class=\"col-12\">\r\n          <groupOrganizer\r\n            v-validate=\"'hasOptionalGroupOrganizer'\"\r\n            :hint=\"$t('userAdmin.groupOrganizer')\"\r\n            name=\"userAdmin.groupOrganizer\"\r\n            :value=\"group.groupOrganizer\"\r\n            :required=\"false\"\r\n            :is-valid=\"!errors.has('userAdmin.groupOrganizer')\"\r\n            @input=\"onGroupOrganizerChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row button-row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"d-flex justify-content-end\">\r\n          <sprbutton\r\n            type=\"submit\"\r\n            :size=\"1\"\r\n            :title=\"$t('groups.save')\"\r\n            icon=\"chevron-right\"\r\n            class=\"spr-redborder button-width\"\r\n            click-event=\"saveGroup\"\r\n            @saveGroup=\"onSaveGroup\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang='ts'>\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import simplecheckbox from '../SPRSimpleCheckbox.vue'\r\n  import groupOrganizer from '../SPRGroupOrganizersDropdown.vue'\r\n  import sprdropdownnumberkey from '../SPRDropdownNumberKey.vue'\r\n  import dropdowninput from '../../components/SPRSimpleDropdown.vue'\r\n  import { ExternalFormUpdateDto } from '@/types'\r\n\r\n  import pillbox from '../common/Pill/PillBox.vue'\r\n\r\n  import { Validator } from 'vee-validate'\r\n  import hasOptionalGroupOrganizer from '../../mixins/validator-hasOptionalGroupOrganizer.js'\r\n\r\n  Validator.extend('hasOptionalGroupOrganizer', hasOptionalGroupOrganizer)\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    updated: boolean,\r\n    languages: any,\r\n    externalForms: Array<ExternalFormUpdateDto>,\r\n    selectedExternalForm: any,\r\n    selectedlanguages: any,\r\n    groupCategories: any\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'GroupEdit',\r\n    components: { sprbutton, textareainput, forminput, simplecheckbox, groupOrganizer, dropdowninput, sprdropdownnumberkey, pillbox },\r\n    props: {\r\n      group: {\r\n        type: Object,\r\n        default: null\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        updated: false,\r\n        languages: [],\r\n        externalForms: [],\r\n        selectedExternalForm: undefined,\r\n        selectedlanguages: [],\r\n        groupCategories: null\r\n\r\n      }\r\n    },\r\n    computed: {\r\n      stringifiedItems (): any {\r\n        const items = _.map(this.externalForms, function (form) {\r\n          return { value: form.id.toString(), text: form.name }\r\n        })\r\n        const noForm = { value: -1, text: this.$t('externalForm.noFormSelected') }\r\n\r\n        items.unshift(noForm)\r\n        return items\r\n      },\r\n      externalFormsAvailable (): boolean {\r\n        return this.externalForms && this.externalForms.length > 0\r\n      }\r\n    },\r\n    watch: {\r\n      selectedExternalForm (newValue, oldValue) {\r\n        if (this.externalForms) {\r\n          //@ts-ignore\r\n          const ef = this.externalForms.find(form => form.id.toString() === newValue)\r\n          this.group.externalForm = ef\r\n        }\r\n      }\r\n    },\r\n    mounted () {\r\n      const lang = this.$store.state.customerLanguages\r\n      this.languages = this.$store.state.groupLanguages.filter((l) => l.id !== 0).map((v) => {\r\n        return { id: v.id, text: 'actionLanguage.' + lang.find((l) => l.displayName.toUpperCase() === v.text.toUpperCase()).isoCode }\r\n      })\r\n      this.selectedlanguages = this.languages.filter((v) => v.id === null || v.id === 0 ? false : (v.id & this.group.languages) === v.id)\r\n    },\r\n    created () {\r\n      this.getCategories()\r\n      this.fetchExternalForms()\r\n    },\r\n    methods: {\r\n      fetchExternalForms () {\r\n        try {\r\n          const url =\r\n            this.$store.state.apiBases.externalformservice +\r\n            this.$store.state.apiEndpoints.externalformsall[0]\r\n          const response = this.$http.get(url).then((response) => {\r\n            this.externalForms = response.data as Array<ExternalFormUpdateDto>\r\n            if (this.group.externalForm) {\r\n              this.selectedExternalForm = this.group.externalForm.id.toString()\r\n            } else {\r\n              this.selectedExternalForm = '-1'\r\n            }\r\n          })\r\n        } catch (error) {\r\n          console.error('Error fetching external forms:', error)\r\n        }\r\n      },\r\n      onLanguageChanged (e) {\r\n        this.group.languages = e.reduce((b, v) => b + v.id, 0)\r\n        this.selectedlanguages = e\r\n      },\r\n      isActionGroup () {\r\n        return this.group.groupType === 1 // public enum GroupType: 1-ActionGroup, 2-StandardGroup (OpenGroup)\r\n      },\r\n      getCategories () {\r\n        var self = this\r\n        this.groupCategories = _.map(this.$store.state.eventCategories, function (val, key) {\r\n          return { value: val.id, text: self.$t('eventCategory.' + val.text) }\r\n        })\r\n      },\r\n      onGroupOrganizerChanged (groupOrganizer) {\r\n        this.group.groupOrganizer.groupOrganizerType = groupOrganizer.groupOrganizerType\r\n        this.group.groupOrganizer.organizerId = groupOrganizer.organizerId\r\n      },\r\n      onSaveGroup () {\r\n        var self = this\r\n        this.$validator.validateAll().then(result => {\r\n          if (result) {\r\n            self.$emit('saveGroup', self.group)\r\n          }\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .row {\r\n    display: flex;\r\n\r\n  }\r\n  .space-between-row{\r\n    display: flex;\r\n    justify-content: space-between;\r\n  }\r\n  .left-outer {\r\n    padding-left: 15px;\r\n  }\r\n  .right-outer {\r\n    margin-right: 20px;\r\n  }\r\n  .cap-label{\r\n    margin-bottom: 8px;\r\n  }\r\n  .multiselect{\r\n    margin: 0px;\r\n    min-height: \"\";\r\n  }\r\n  .multiselect__tags{\r\n    min-height: 37px;\r\n    border: solid 1px #DDDDDD;\r\n  }\r\n  .multiselect__single{\r\n    font-size: 16px;\r\n    font-family: \"Signa-Light\", Sans-Serif;\r\n  }\r\n  .groupedit {\r\n    .cancel-button {\r\n      margin-right: 5px;\r\n    }\r\n    .update-success {\r\n      color:$brand-success;\r\n      display:inline-block;\r\n      margin-right:10px;\r\n      margin-top:15px;\r\n    }\r\n\r\n    .national {\r\n      margin-left:5px;\r\n    }\r\n\r\n    .update-leave-active {\r\n      transition: opacity .5s;\r\n    }\r\n    .update-leave-to /* .fade-leave-active below version 2.1.8 */ {\r\n      opacity: 0;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupEdit.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupEdit.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./GroupEdit.vue?vue&type=template&id=143f8988\"\nimport script from \"./GroupEdit.vue?vue&type=script&lang=ts\"\nexport * from \"./GroupEdit.vue?vue&type=script&lang=ts\"\nimport style0 from \"./GroupEdit.vue?vue&type=style&index=0&id=143f8988&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"groupmembers\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('userAdmin.existingMembersTitle')))])])]),_c('div',{staticClass:\"row existingmembers\"},[_c('div',{staticClass:\"col-12\"},[_vm._l((_vm.groupMembers),function(member){return _c('div',{key:member.id,staticClass:\"member\"},[_c('existingmember',{attrs:{\"member\":member},on:{\"remove\":_vm.onRemove,\"makeAdmin\":_vm.onMakeAdmin,\"removeAdmin\":_vm.onRemoveAdmin}})],1)}),(!_vm.group.members.length)?_c('div',{staticClass:\"text-center\"},[_c('div',[_vm._v(_vm._s(_vm.$t('userAdmin.noMembers')))])]):_vm._e()],2)]),(_vm.group.groupType === 1)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('groups.addPendingVolunteer')))])])]):_vm._e(),(_vm.group.groupType === 1)?_c('div',{staticClass:\"row addpendingmember\"},[_c('div',{staticClass:\"col-12\"},[_c('groupmemberpending',{attrs:{\"group\":_vm.group}})],1)]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('userAdmin.addMemberTitle')))])])]),_c('div',{staticClass:\"row addmember\"},[_c('div',{staticClass:\"col-12\"},[_c('groupmemberadd',{attrs:{\"group\":_vm.group}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row groupmemberadd\"},[(_vm.saveStatus && _vm.saveStatus.length)?_c('div',{staticClass:\"col-sm-12 savestatus\"},_vm._l((_vm.saveStatus),function(status){return _c('div',{key:status.memberId},[(status.saveStatus === 0)?_c('div',{staticClass:\"failed\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.failedAddingMember'))+\" \"+_vm._s(_vm.getMemberName(status.memberId))+\". \")]):_vm._e(),(status.saveStatus === 1)?_c('div',{staticClass:\"success\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.successAddingMember'))+\" \"+_vm._s(_vm.getMemberName(status.memberId))+\". \")]):_vm._e(),(status.saveStatus === 2)?_c('div',{staticClass:\"noemail\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.successFailedEmail'))+\" \"+_vm._s(_vm.getMemberName(status.memberId))+\" \")]):_vm._e()])}),0):_vm._e(),_c('div',{staticClass:\"col-sm-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('searchbox',{attrs:{\"placeholder\":_vm.placeholder},model:{value:(_vm.searchText),callback:function ($$v) {_vm.searchText=$$v},expression:\"searchText\"}})],1)]),_c('div',{staticClass:\"row results-row\"},[_c('div',{staticClass:\"col-12\"},[_c('volunteerslistsearch',{attrs:{\"list\":_vm.volunteers,\"selected-volunteers\":_vm.selectedVolunteers,\"is-saving\":_vm.inProgress},on:{\"addVolunteer\":_vm.onAddVolunteer,\"removeVolunteer\":_vm.onRemoveVolunteer,\"saveVolunteers\":_vm.onSaveVolunteers}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showPager),expression:\"showPager\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('pager',{attrs:{\"skip\":_vm.skip,\"take\":_vm.take,\"total\":_vm.total,\"max-display\":5},on:{\"pagesizechanged\":_vm.onPageSizeChanged,\"pagerchanged\":_vm.onPagerChanged,\"pagerprevious\":_vm.onPagerPrevious,\"pagernext\":_vm.onPagerNext}})],1)]),_vm._m(0)])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"spacer\"})])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row volunteerlistsearch\"},[_c('div',{staticClass:\"col-8\"},[(!_vm.selectedVolunteers.length)?_c('div',{staticClass:\"instructions-text\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.addVolunteerInstructions'))+\" \")]):_vm._e(),(_vm.selectedVolunteers.length)?_c('div',{staticClass:\"selected-volunteers\"},_vm._l((_vm.selectedVolunteers),function(volunteer){return _c('pill',{key:volunteer.id,attrs:{\"show-delete\":true},on:{\"remove\":function($event){return _vm.onRemoveVolunteerPill(volunteer)}},model:{value:(volunteer.name),callback:function ($$v) {_vm.$set(volunteer, \"name\", $$v)},expression:\"volunteer.name\"}})}),1):_vm._e()]),_c('div',{staticClass:\"col-4 text-right\"},[_c('span',{staticClass:\"loading-icon\"},[(_vm.isSaving)?_c('loading'):_vm._e()],1),(_vm.selectedVolunteers.length && !_vm.isSaving)?_c('sprbutton',{staticClass:\"spr-redborder button-width btnsavevolunteer\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('groups.saveVolunteer'),\"icon\":\"chevron-right\",\"click-event\":\"saveVolunteers\"},on:{\"saveVolunteers\":_vm.onSaveVolunteers}}):_vm._e()],1),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"list-group\"},_vm._l((_vm.list),function(item){return _c('div',{key:item.id,staticClass:\"user-row\"},[_c('volunteerviewsearch',{attrs:{\"volunteer\":item},on:{\"addVolunteer\":_vm.onAddVolunteer,\"removeVolunteer\":_vm.onRemoveVolunteer}})],1)}),0)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6 col-12 user\"},[_c('div',{staticClass:\"user-img\"},[_c('sprportrait',{staticClass:\"portrait-size\",style:(_vm.portraitStyle)})],1),_c('div',{staticClass:\"user-name\"},[_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(_vm._s(_vm.volunteer.name))]),_c('span',{staticClass:\"section\"},[_vm._v(_vm._s(_vm.section))])])]),_c('div',{staticClass:\"col-md-6 col-12 actions\"},[(_vm.volunteer.selected === 0 && !_vm.volunteer.pendingConsent)?_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('groups.addVolunteerButton'),\"click-event\":\"addVolunteer\"},on:{\"addVolunteer\":_vm.onAddVolunteer}}):_vm._e(),(_vm.volunteer.selected === 1)?_c('div',{staticClass:\"alreadyselected\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.volunteerIsSelected'))+\" \"),_c('font-awesome-icon',{attrs:{\"icon\":\"check\"}})],1):_vm._e(),(_vm.volunteer.selected === 2)?_c('div',{staticClass:\"pendingtext\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.pendingSave'))+\" \"),_c('font-awesome-icon',{staticClass:\"pendingsave\",attrs:{\"icon\":\"exclamation-triangle\"}})],1):_vm._e(),(_vm.volunteer.pendingConsent)?_c('div',{staticClass:\"pendingtext\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.pendingConsent'))+\" \"),_c('font-awesome-icon',{staticClass:\"pendingsave\",attrs:{\"icon\":\"exclamation-triangle\"}})],1):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row\">\r\n    <div class=\"col-md-6 col-12 user\">\r\n      <div class=\"user-img\">\r\n        <sprportrait :style=\"portraitStyle\"\r\n                     class=\"portrait-size\"\r\n        />\r\n      </div>\r\n      <div class=\"user-name\">\r\n        <a href=\"#\">{{ volunteer.name }}</a>\r\n        <span class=\"section\">{{ section }}</span>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"col-md-6 col-12 actions\">\r\n      <sprbutton v-if=\"volunteer.selected === 0 && !volunteer.pendingConsent\"\r\n                 type=\"primary\"\r\n                 :size=\"4\"\r\n                 :title=\"$t('groups.addVolunteerButton')\"\r\n                 class=\"spr-redborder button-width\"\r\n                 click-event=\"addVolunteer\"\r\n                 @addVolunteer=\"onAddVolunteer\"\r\n      />\r\n      <div v-if=\"volunteer.selected === 1\" class=\"alreadyselected\">\r\n        {{ $t('groups.volunteerIsSelected') }}\r\n        <font-awesome-icon icon=\"check\" />\r\n      </div>\r\n      <div v-if=\"volunteer.selected === 2\" class=\"pendingtext\">\r\n        {{ $t('groups.pendingSave') }}\r\n        <font-awesome-icon icon=\"exclamation-triangle\" class=\"pendingsave\" />\r\n      </div>\r\n      <div v-if=\"volunteer.pendingConsent\" class=\"pendingtext\">\r\n        {{ $t('groups.pendingConsent') }}\r\n        <font-awesome-icon icon=\"exclamation-triangle\" class=\"pendingsave\" />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprportrait from '../SPRPortrait.vue'\r\n  import anonPortrait from '../../assets/img/anon-portrait.png'\r\n\r\n  export default {\r\n    name: 'Volunteerviewsearch',\r\n    components: { sprbutton, sprportrait },\r\n    props: {\r\n      volunteer: {\r\n        type: Object,\r\n        required: true\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        //\r\n      }\r\n    },\r\n    computed: {\r\n      section () {\r\n        var self = this\r\n        var section = _.find(this.$store.state.sections, (s) => {\r\n          return s.id === self.volunteer.sectionId\r\n        })\r\n\r\n        return section ? section.name : ''\r\n      },\r\n      portraitStyle: function () {\r\n        var port = this.volunteer.portrait ? this.volunteer.portrait : anonPortrait\r\n        return 'background: url(' + port + '); background-size: cover; background-position: center center;'\r\n      }\r\n    },\r\n    methods: {\r\n      onAddVolunteer: function () {\r\n        this.$emit('addVolunteer', this.volunteer)\r\n      },\r\n      onRemoveVolunteer: function () {\r\n        this.$emit('removeVolunteer', this.volunteer)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .section {\r\n    display: block;\r\n  }\r\n\r\n  .actions {\r\n    text-align: right;\r\n  }\r\n\r\n  .spr-button {\r\n    &.selected\r\n\r\n  {\r\n    background-color: $brand-red;\r\n    color: $brand-white;\r\n  }\r\n\r\n  }\r\n\r\n  .alreadyselected {\r\n    color: $brand-success;\r\n  }\r\n\r\n  .pendingsave {\r\n    color: $brand-warning;\r\n  }\r\n\r\n  .pendingtext {\r\n    color: $brand-grey11;\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteersSearchResultView.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteersSearchResultView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VolunteersSearchResultView.vue?vue&type=template&id=11d1c079\"\nimport script from \"./VolunteersSearchResultView.vue?vue&type=script&lang=js\"\nexport * from \"./VolunteersSearchResultView.vue?vue&type=script&lang=js\"\nimport style0 from \"./VolunteersSearchResultView.vue?vue&type=style&index=0&id=11d1c079&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .volunteerlistsearch {\r\n    .instructions-text {\r\n      min-height: 30px;\r\n    }\r\n    .selected-volunteers {\r\n      margin-bottom: 15px;\r\n      .pill {\r\n        margin-right: 5px;\r\n      }\r\n    }\r\n    .btnsavevolunteer {\r\n      color:$brand-white;\r\n      background-color: $brand-red;\r\n    }\r\n    .loading-icon {\r\n      display:inline-block;\r\n      padding-top: 3px;\r\n    }\r\n  }\r\n</style>\r\n\r\n<template>\r\n  <div class=\"row volunteerlistsearch\">\r\n    <div class=\"col-8\">\r\n      <div v-if=\"!selectedVolunteers.length\" class=\"instructions-text\">\r\n        {{ $t('groups.addVolunteerInstructions') }}\r\n      </div>\r\n      <div v-if=\"selectedVolunteers.length\" class=\"selected-volunteers\">\r\n        <pill v-for=\"volunteer in selectedVolunteers\" :key=\"volunteer.id\" v-model=\"volunteer.name\" :show-delete=\"true\" @remove=\"onRemoveVolunteerPill(volunteer)\" />\r\n      </div>\r\n    </div>\r\n    <div class=\"col-4 text-right\">\r\n      <span class=\"loading-icon\"><loading v-if=\"isSaving\" /></span>\r\n      <sprbutton v-if=\"selectedVolunteers.length && !isSaving\" type=\"primary\"\r\n                 :size=\"4\"\r\n                 :title=\"$t('groups.saveVolunteer')\"\r\n                 icon=\"chevron-right\"\r\n                 class=\"spr-redborder button-width btnsavevolunteer\"\r\n                 click-event=\"saveVolunteers\"\r\n                 @saveVolunteers=\"onSaveVolunteers\"\r\n      />\r\n    </div>\r\n    <div class=\"col-12\">\r\n      <div class=\"list-group\">\r\n        <div v-for=\"(item) in list\" :key=\"item.id\" class=\"user-row\">\r\n          <volunteerviewsearch :volunteer=\"item\" @addVolunteer=\"onAddVolunteer\" @removeVolunteer=\"onRemoveVolunteer\" />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import volunteerviewsearch from './VolunteersSearchResultView.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import pill from '../SPRPill.vue'\r\n  import loading from '../SPRLoading.vue'\r\n\r\n  export default {\r\n    name: 'Volunteerlistsearch',\r\n    components: { volunteerviewsearch, sprbutton, pill, loading },\r\n    props: {\r\n      list: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      selectedVolunteers: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      isSaving: {\r\n        type: Boolean,\r\n        default: true\r\n      }\r\n    },\r\n    methods: {\r\n      onAddVolunteer (volunteer) {\r\n        this.$emit('addVolunteer', volunteer)\r\n      },\r\n      onRemoveVolunteer (volunteer) {\r\n        this.$emit('removeVolunteer', volunteer)\r\n      },\r\n      onSaveVolunteers () {\r\n        this.$emit('saveVolunteers', this.selectedVolunteers)\r\n      },\r\n      onRemoveVolunteerPill (volunteer) {\r\n        this.$emit('removeVolunteer', volunteer)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteersSearchResultList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteersSearchResultList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VolunteersSearchResultList.vue?vue&type=template&id=1bc7e412\"\nimport script from \"./VolunteersSearchResultList.vue?vue&type=script&lang=js\"\nexport * from \"./VolunteersSearchResultList.vue?vue&type=script&lang=js\"\nimport style0 from \"./VolunteersSearchResultList.vue?vue&type=style&index=0&id=1bc7e412&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .groupmemberadd {\r\n    background: #fff;\r\n    padding-top: 20px;\r\n\r\n    .savestatus {\r\n      margin-bottom: 15px;\r\n      .failed { color: $brand-red; }\r\n      .success { color: $brand-success; }\r\n      .noemail { color: $brand-success; }\r\n    }\r\n\r\n    .spr-searchbox {\r\n      border: 1px solid $brand-grey4;\r\n    }\r\n\r\n    .button-row {\r\n      margin-bottom: 40px;\r\n      .spr-button {\r\n        background: $brand-red;\r\n        color: #fff;\r\n      }\r\n    }\r\n    .spr-searchbox {\r\n      margin-bottom: 20px;\r\n    }\r\n    .list-group {\r\n      margin-bottom: 40px;\r\n    }\r\n\r\n    .results-row {\r\n      .loading {\r\n        position: absolute;\r\n        display: flex;\r\n        top: 0;\r\n        left: 0;\r\n        bottom: 0;\r\n        right: 0;\r\n        height: 100%;\r\n        width: 100%;\r\n        background-color:rgba(255, 255, 255, 0.8);\r\n\r\n        .spinner {\r\n          margin: auto;\r\n          color:$brand-red;\r\n        }\r\n      }\r\n      .user-row {\r\n        background: #fff;\r\n        margin-bottom: 5px;\r\n        padding: 15px;\r\n        border-bottom: 1px solid $brand-grey2;\r\n        .user {\r\n          .user-img {\r\n            float: left;\r\n            margin-right: 15px;\r\n          }\r\n          a {\r\n            color: $brand-red;\r\n            font-weight: bold;\r\n            text-transform: uppercase;\r\n          }\r\n        }\r\n        .portrait-size {\r\n          width: 50px;\r\n          height: 50px;\r\n        }\r\n      }\r\n    }\r\n    .spacer {\r\n      margin-bottom:20px;\r\n    }\r\n  }\r\n</style>\r\n\r\n<template>\r\n  <div class=\"row groupmemberadd\">\r\n    <div v-if=\"saveStatus && saveStatus.length\" class=\"col-sm-12 savestatus\">\r\n      <div v-for=\"status in saveStatus\" :key=\"status.memberId\">\r\n        <div v-if=\"status.saveStatus === 0\" class=\"failed\">\r\n          {{ $t('groups.failedAddingMember') }} {{ getMemberName(status.memberId) }}.\r\n        </div>\r\n        <div v-if=\"status.saveStatus === 1\" class=\"success\">\r\n          {{ $t('groups.successAddingMember') }} {{ getMemberName(status.memberId) }}.\r\n        </div>\r\n        <div v-if=\"status.saveStatus === 2\" class=\"noemail\">\r\n          {{ $t('groups.successFailedEmail') }} {{ getMemberName(status.memberId) }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"col-sm-12\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <searchbox v-model=\"searchText\" :placeholder=\"placeholder\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row results-row\">\r\n        <div class=\"col-12\">\r\n          <volunteerslistsearch :list=\"volunteers\"\r\n                                :selected-volunteers=\"selectedVolunteers\"\r\n                                :is-saving=\"inProgress\"\r\n                                @addVolunteer=\"onAddVolunteer\"\r\n                                @removeVolunteer=\"onRemoveVolunteer\"\r\n                                @saveVolunteers=\"onSaveVolunteers\"\r\n          />\r\n          <div v-show=\"isLoading\" class=\"loading\">\r\n            <div class=\"spinner\">\r\n              <loading />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div v-show=\"showPager\" class=\"row\">\r\n        <div class=\"col\">\r\n          <pager :skip=\"skip\"\r\n                 :take=\"take\"\r\n                 :total=\"total\"\r\n                 :max-display=\"5\"\r\n                 @pagesizechanged=\"onPageSizeChanged\"\r\n                 @pagerchanged=\"onPagerChanged\"\r\n                 @pagerprevious=\"onPagerPrevious\"\r\n                 @pagernext=\"onPagerNext\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <div class=\"spacer\" />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import searchbox from '../SPRSearchBox.vue'\r\n  import volunteerslistsearch from './VolunteersSearchResultList.vue'\r\n  import pager from '../SPRPager.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import anonPortrait from '../../assets/img/anon-portrait.png'\r\n\r\n  export default {\r\n    name: 'Groupmemberadd',\r\n    components: { searchbox, volunteerslistsearch, pager, loading },\r\n    props: {\r\n      group: {\r\n        type: Object,\r\n        required: true\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        type: 'CUSTOMER',\r\n        placeholder: this.$t('customerSearch.searchPlaceholder'),\r\n        searchText: '',\r\n        filter: '', // todo : eg 'district', should probably be from all if the group is for all users\r\n        filterId: '',\r\n        skip: 0,\r\n        take: 10,\r\n        total: 0,\r\n        volunteer: {\r\n          locations: [],\r\n          interests: []\r\n        },\r\n        volunteers: [],\r\n        selectedVolunteers: [],\r\n        isLoading: false,\r\n        inProgress: false,\r\n        saveStatus: []\r\n      }\r\n    },\r\n    computed: {\r\n      showPager () {\r\n        return this.total > this.take\r\n      },\r\n      portraitStyle: function () {\r\n        var port = (this.$store.state.profile && this.$store.state.profile.portrait) ? this.$store.state.profile.portrait : anonPortrait\r\n        return 'background: url(' + port + '); background-size: cover; background-position: center center;'\r\n      }\r\n    },\r\n    watch: {\r\n      searchText () {\r\n        this.skip = 0\r\n        this.doSearch()\r\n      },\r\n      group (updated, old) {\r\n        this.doSearch()\r\n      }\r\n    },\r\n    mounted () {\r\n      this.doSearch()\r\n      this.$bus.$on('group-member-removed', this.refreshLabels)\r\n      this.$bus.$on('addPendingVolunteer', this.addedPendingVolunteer)\r\n      this.$bus.$on('cancelAddPendingVolunteer', this.cancelAddPendingVolunteer)\r\n      this.$bus.$on('removePendingVolunteer', this.removePendingVolunteer)\r\n    },\r\n    beforeDestroy: function () {\r\n      this.$bus.$off('group-member-removed')\r\n      this.$bus.$off('addPendingVolunteer')\r\n      this.$bus.$off('cancelAddPendingVolunteer')\r\n      this.$bus.$off('removePendingVolunteer')\r\n    },\r\n    methods: {\r\n      onPageSizeChanged (pageSize) {\r\n        this.take = pageSize\r\n        this.performSearch()\r\n      },\r\n      onPagerChanged (page) {\r\n        this.skip = page.skip\r\n        this.doSearch()\r\n      },\r\n      onPagerPrevious () {\r\n        this.skip -= this.take\r\n        this.doSearch()\r\n      },\r\n      onPagerNext () {\r\n        this.skip += this.take\r\n        this.doSearch()\r\n      },\r\n      onAddVolunteer (volunteer) {\r\n        var selectedVolunteer = _.find(this.volunteers, function (v) {\r\n          return v.id === volunteer.id\r\n        })\r\n        selectedVolunteer.selected = 2\r\n        this.$set(this.selectedVolunteers, this.selectedVolunteers.length, selectedVolunteer)\r\n      },\r\n      onRemoveVolunteer (volunteer) {\r\n        var selectedVolunteer = _.find(this.volunteers, function (v) {\r\n          return v.id === volunteer.id\r\n        })\r\n\r\n        if (selectedVolunteer) selectedVolunteer.selected = 0\r\n        var index = _.findIndex(this.selectedVolunteers, function (v) {\r\n          return v.id === volunteer.id\r\n        })\r\n        this.$delete(this.selectedVolunteers, index)\r\n      },\r\n      onSaveVolunteers: function () {\r\n        if (this.inProgress) {\r\n          return\r\n        }\r\n        this.inProgress = true\r\n        this.saveStatus = []\r\n\r\n        const self = this\r\n        let payload = {\r\n          payload1: this.group.id,\r\n          payload2: this.selectedVolunteers,\r\n          payload3: this.group.name\r\n        }\r\n\r\n        let uri = ''\r\n        if (this.group.groupType === 1) {\r\n          uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.grouprequestmembership[0]\r\n        } else {\r\n          payload = {\r\n            payload1: this.group.id,\r\n            payload2: _.map(this.selectedVolunteers, function (x) {\r\n              return x.id\r\n            })\r\n          }\r\n\r\n          uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupaddmembers[0]\r\n        }\r\n\r\n        this.$http.put(uri, payload).then(s => {\r\n          s.body.forEach(x => {\r\n            this.saveStatus.push(x)\r\n          })\r\n          self.selectedVolunteers = []\r\n          self.inProgress = false\r\n          self.$bus.$emit('loadGroup')\r\n\r\n          // set a timeout on savestatus to clear after a bit\r\n          setTimeout(() => {\r\n            this.saveStatus = []\r\n          }, 5000)\r\n        }, f => {\r\n          console.log('fail', f)\r\n          self.inProgress = false\r\n        })\r\n      },\r\n      doSearch () {\r\n        var self = this\r\n        self.isLoading = true\r\n        var url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.findGroupVolunteers[0]\r\n          .replace('{search}', this.searchText)\r\n          .replace('{skip}', this.skip)\r\n          .replace('{take}', this.take)\r\n\r\n        this.$http.get(url).then(result => {\r\n          this.total = result.body.total\r\n          this.volunteers = _.map(result.body.results, function (item) {\r\n            return {\r\n              id: item.id,\r\n              name: `${item.lastName}, ${item.firstName}`,\r\n              sectionId: item.sectionId,\r\n              age: item.age,\r\n              portrait: item.portrait,\r\n              selected: self.isAddedAlready(item.id),\r\n              pendingConsent: self.isPendingConsent(item.id),\r\n              email: item.email\r\n            }\r\n          })\r\n\r\n          this.isLoading = false\r\n        })\r\n      },\r\n      refreshLabels: function () {\r\n        const self = this\r\n        this.volunteers.forEach(function (x) {\r\n          x.selected = self.isAddedAlready(x.id)\r\n          x.pendingConsent = self.isPendingConsent(x.id)\r\n        })\r\n      },\r\n      isAddedAlready (id) {\r\n        if (_.findIndex(this.group.members, function (item) {\r\n          return item.id === id\r\n        }) > -1) { return 1 }\r\n\r\n        if (_.findIndex(this.selectedVolunteers, function (item) {\r\n          return item.id === id\r\n        }) > -1) {\r\n          return 2\r\n        }\r\n\r\n        return 0\r\n      },\r\n      isPendingConsent (id) {\r\n        if (_.findIndex(this.group.pendingMembers, function (item) {\r\n          return item.id === id\r\n        }) > -1) { return 1 }\r\n\r\n        return 0\r\n      },\r\n      addedPendingVolunteer (volunteer) {\r\n        this.saveStatus = []\r\n        var selectedVolunteer = _.find(this.volunteers, function (v) {\r\n          return v.id === volunteer.id\r\n        })\r\n        if (selectedVolunteer) {\r\n          selectedVolunteer.selected = 1\r\n          selectedVolunteer.pendingConsent = 0\r\n        }\r\n        this.group.members.push(volunteer)\r\n      },\r\n      cancelAddPendingVolunteer (volunteer) {\r\n        this.saveStatus = []\r\n        var selectedVolunteer = _.find(this.volunteers, function (v) {\r\n          return v.id === volunteer.id\r\n        })\r\n        if (selectedVolunteer) {\r\n          selectedVolunteer.selected = 0\r\n          selectedVolunteer.pendingConsent = 1\r\n        }\r\n\r\n        const self = this\r\n        _.find(this.group.members, function (v, index) {\r\n          if (v.id === volunteer.id) {\r\n            self.group.members.splice(index, 1)\r\n          }\r\n        })\r\n      },\r\n      removePendingVolunteer () {\r\n        this.saveStatus = []\r\n      },\r\n      getMemberName (id) {\r\n        var member = this.volunteers.find(x => x.id === id)\r\n        if (member) return `${member.name}`\r\n        return ''\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupMemberAdd.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupMemberAdd.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./GroupMemberAdd.vue?vue&type=template&id=4cf91240\"\nimport script from \"./GroupMemberAdd.vue?vue&type=script&lang=js\"\nexport * from \"./GroupMemberAdd.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupMemberAdd.vue?vue&type=style&index=0&id=4cf91240&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row groupmemberspending\"},[_c('div',{staticClass:\"col-sm-12\"},[(_vm.group.pendingMembers && _vm.group.pendingMembers.length === 0)?_c('p',[_vm._v(\" Ei uusia hakemuksia \")]):_vm._e(),_vm._l((_vm.group.pendingMembers),function(member){return _c('div',{key:member.id,staticClass:\"row results-row\"},[_c('pendingmember',{attrs:{\"member\":member,\"group-id\":_vm.group.id,\"group-name\":_vm.group.name}})],1)})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"col-12 user-row\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6 col-12 user\"},[_c('div',{staticClass:\"user-img\"},[_c('sprportrait',{staticClass:\"portrait-size\",style:(_vm.portraitStyle)})],1),_c('div',{staticClass:\"user-name\"},[_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(_vm._s(_vm.member.lastName)+\", \"+_vm._s(_vm.member.firstName))]),_c('span',{staticClass:\"section\"},[_vm._v(_vm._s(_vm.section(_vm.member.sectionId)))])])]),_c('div',{staticClass:\"col-md-6 col-12 actions\"},[(_vm.member.requestedByAdmin)?_c('div',{staticClass:\"pendingtext\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.pendingConsent'))+\" \"),_c('font-awesome-icon',{staticClass:\"pendingsave\",attrs:{\"icon\":\"exclamation-triangle\"}})],1):_vm._e(),(!_vm.inProgress && !_vm.added && !_vm.member.requestedByAdmin)?_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('groups.addPendingVolunteerButton'),\"click-event\":\"addVolunteer\"},on:{\"addVolunteer\":_vm.addPendingVolunteer}}):_vm._e(),(!_vm.inProgress && !_vm.added)?_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('groups.remove'),\"click-event\":\"removeVolunteer\"},on:{\"removeVolunteer\":_vm.removePendingVolunteer}}):_vm._e(),(!_vm.inProgress && _vm.added)?_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('groups.cancelAddPendingVolunteerButton'),\"click-event\":\"cancelAdd\"},on:{\"cancelAdd\":_vm.cancelPendingAdd}}):_vm._e(),(!_vm.inProgress && _vm.added)?_c('div',{staticClass:\"alreadyselected\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.volunteerIsSelected'))+\" \"),_c('font-awesome-icon',{attrs:{\"icon\":\"check\"}})],1):_vm._e(),(_vm.inProgress)?_c('div',{staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)]):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"col-12 user-row\">\r\n    <div class=\"row\">\r\n      <div class=\"col-md-6 col-12 user\">\r\n        <div class=\"user-img\">\r\n          <sprportrait :style=\"portraitStyle\" class=\"portrait-size\" />\r\n        </div>\r\n        <div class=\"user-name\">\r\n          <a href=\"#\">{{ member.lastName }}, {{ member.firstName }}</a>\r\n          <span class=\"section\">{{ section(member.sectionId) }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-md-6 col-12 actions\">\r\n        <div v-if=\"member.requestedByAdmin\" class=\"pendingtext\">\r\n          {{ $t('groups.pendingConsent') }}\r\n          <font-awesome-icon icon=\"exclamation-triangle\" class=\"pendingsave\" />\r\n        </div>\r\n        <sprbutton v-if=\"!inProgress && !added && !member.requestedByAdmin\"\r\n                   type=\"primary\"\r\n                   :size=\"4\"\r\n                   :title=\"$t('groups.addPendingVolunteerButton')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"addVolunteer\"\r\n                   @addVolunteer=\"addPendingVolunteer\"\r\n        />\r\n        <sprbutton v-if=\"!inProgress && !added\"\r\n                   type=\"primary\"\r\n                   :size=\"4\"\r\n                   :title=\"$t('groups.remove')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"removeVolunteer\"\r\n                   @removeVolunteer=\"removePendingVolunteer\"\r\n        />\r\n        <sprbutton v-if=\"!inProgress && added\"\r\n                   type=\"primary\"\r\n                   :size=\"4\"\r\n                   :title=\"$t('groups.cancelAddPendingVolunteerButton')\"\r\n                   class=\"spr-redborder button-width\"\r\n                   click-event=\"cancelAdd\"\r\n                   @cancelAdd=\"cancelPendingAdd\"\r\n        />\r\n        <div v-if=\"!inProgress && added\" class=\"alreadyselected\">\r\n          {{ $t('groups.volunteerIsSelected') }}\r\n          <font-awesome-icon icon=\"check\" />\r\n        </div>\r\n        <div v-if=\"inProgress\" class=\"loading\">\r\n          <div class=\"spinner\">\r\n            <loading />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprportrait from '../SPRPortrait.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import anonPortrait from '../../assets/img/anon-portrait.png'\r\n\r\n  export default {\r\n    name: 'Pendingmember',\r\n    components: { sprbutton, sprportrait, loading },\r\n    props: {\r\n      member: {\r\n        type: Object,\r\n        default: null\r\n      },\r\n      groupId: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      groupName: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        inProgress: false,\r\n        added: false\r\n      }\r\n    },\r\n    computed: {\r\n      portraitStyle: function () {\r\n        var port = this.member.portrait ? this.member.portrait : anonPortrait\r\n        return 'background: url(' + port + '); background-size: cover; background-position: center center;'\r\n      }\r\n    },\r\n    methods: {\r\n      cancelPendingAdd () {\r\n        const self = this\r\n        const payload = { payload1: this.groupId, payload2: [this.member.id] }\r\n        const uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupremmembers[0]\r\n        this.$http.post(uri, payload).then(s => {\r\n          const url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.grouprequestmembership[0]}`\r\n          const friendProfile = {\r\n            id: this.member.id,\r\n            name: this.$store.state.profile.firstName + ' ' + this.$store.state.profile.lastName,\r\n            sectionId: this.member.sectionId\r\n          }\r\n          const adminIsCancelling = true\r\n          const membershippayload = {\r\n            payload1: this.groupId,\r\n            payload2: [friendProfile],\r\n            payload3: this.groupName,\r\n            payload4: adminIsCancelling\r\n          }\r\n          this.$http.put(url, membershippayload).then((resp) => {\r\n            self.added = false\r\n            self.$bus.$emit('cancelAddPendingVolunteer', self.member)\r\n          })\r\n        })\r\n      },\r\n      addPendingVolunteer: function () {\r\n        if (this.inProgress) {\r\n          return\r\n        }\r\n        this.inProgress = true\r\n\r\n        const self = this\r\n        const payload = {\r\n          payload1: this.groupId,\r\n          payload2: [this.member.id]\r\n        }\r\n\r\n        const uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupaddmembers[0]\r\n        this.$http.put(uri, payload).then(s => {\r\n          self.inProgress = false\r\n          self.added = true\r\n          self.$bus.$emit('addPendingVolunteer', this.member)\r\n        }, f => {\r\n          self.inProgress = false\r\n        })\r\n      },\r\n      removePendingVolunteer: function () {\r\n        if (this.inProgress) {\r\n          return\r\n        }\r\n        this.inProgress = true\r\n\r\n        const self = this\r\n        const payload = {\r\n          payload1: this.groupId,\r\n          payload2: this.member.id\r\n        }\r\n\r\n        const uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupremmembershiprequest[0]\r\n        this.$http.post(uri, payload).then(s => {\r\n          self.inProgress = false\r\n          self.$bus.$emit('removePendingVolunteer', this.member)\r\n          self.$bus.$emit('group-member-removed', payload)\r\n        }, f => {\r\n          self.inProgress = false\r\n        })\r\n      },\r\n      section (sectionId) {\r\n        var section = _.find(this.$store.state.sections, (s) => {\r\n          return s.id === sectionId\r\n        })\r\n\r\n        return section ? section.name : ''\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n    .nav-header  {\r\n      background-color: #EEEEEE;\r\n      height: 80px;\r\n      margin-bottom: 30px;\r\n      border-bottom: solid 1px #DDDDDD;\r\n      h3 {\r\n        color: $brand-red;\r\n      }\r\n      .back {\r\n        color: #000;\r\n        i{\r\n          color: $brand-red;\r\n          margin-right: 5px;\r\n        }\r\n      }\r\n    }\r\n\r\n    .button-row {\r\n      margin-bottom: 40px;\r\n      .spr-button {\r\n        background: $brand-red;\r\n        color: #fff;\r\n      }\r\n    }\r\n    .spr-searchbox {\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .results-row {\r\n      .loading {\r\n        position: absolute;\r\n        display: flex;\r\n        top: 0;\r\n        left: 0;\r\n        bottom: 0;\r\n        right: 0;\r\n        height: 100%;\r\n        width: 100%;\r\n        background-color:rgba(255, 255, 255, 0.8);\r\n\r\n        .spinner {\r\n          margin: auto;\r\n          color:$brand-red;\r\n        }\r\n      }\r\n      .user-row {\r\n        background: #fff;\r\n        margin-bottom: 5px;\r\n        padding: 15px;\r\n        border-bottom: 1px solid $brand-grey2;\r\n        .user {\r\n          .user-img {\r\n            float: left;\r\n            margin-right: 15px;\r\n          }\r\n          a {\r\n            color: $brand-red;\r\n            font-weight: bold;\r\n            text-transform: uppercase;\r\n          }\r\n        }\r\n        .portrait-size {\r\n          width: 50px;\r\n          height: 50px;\r\n        }\r\n      }\r\n    }\r\n    .spacer {\r\n      margin-bottom:20px;\r\n    }\r\n  .pendingtext{\r\n    display: inline;\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PendingMemberView.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PendingMemberView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PendingMemberView.vue?vue&type=template&id=859146cc&scoped=true\"\nimport script from \"./PendingMemberView.vue?vue&type=script&lang=js\"\nexport * from \"./PendingMemberView.vue?vue&type=script&lang=js\"\nimport style0 from \"./PendingMemberView.vue?vue&type=style&index=0&id=859146cc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"859146cc\",\n  null\n  \n)\n\nexport default component.exports","<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .groupmemberspending {\r\n    background: #fff;\r\n    padding-top: 20px;\r\n  }\r\n</style>\r\n\r\n<template>\r\n  <div class=\"row groupmemberspending\">\r\n    <div class=\"col-sm-12\">\r\n      <p v-if=\"group.pendingMembers && group.pendingMembers.length === 0\">\r\n        Ei uusia hakemuksia\r\n      </p>\r\n      <div v-for=\"(member) in group.pendingMembers\" :key=\"member.id\" class=\"row results-row\">\r\n        <pendingmember :member=\"member\" :group-id=\"group.id\" :group-name=\"group.name\" />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import pendingmember from './PendingMemberView.vue'\r\n\r\n  export default {\r\n    name: 'Groupmemberspending',\r\n    components: { pendingmember },\r\n    props: {\r\n      group: {\r\n        type: Object,\r\n        default: () => { return {} }\r\n      }\r\n    },\r\n    mounted () {\r\n      this.$bus.$on('removePendingVolunteer', this.removePendingVolunteer)\r\n    },\r\n    beforeDestroy: function () {\r\n      this.$bus.$off('removePendingVolunteer')\r\n    },\r\n    methods: {\r\n      removePendingVolunteer (volunteer) {\r\n        const self = this\r\n        _.find(this.group.pendingMembers, function (v, index) {\r\n          if (v && v.id === volunteer.id) {\r\n            self.group.pendingMembers.splice(index, 1)\r\n          }\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupMemberPending.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupMemberPending.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./GroupMemberPending.vue?vue&type=template&id=0c9aadd2\"\nimport script from \"./GroupMemberPending.vue?vue&type=script&lang=js\"\nexport * from \"./GroupMemberPending.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupMemberPending.vue?vue&type=style&index=0&id=0c9aadd2&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row groupexistingmember\"},[_c('div',{staticClass:\"col-md-5 col-12 user\"},[_c('div',{staticClass:\"user-img\"},[_c('sprportrait',{staticClass:\"portrait-size\",style:(_vm.portraitStyle)})],1),_c('div',{staticClass:\"user-name\"},[_c('span',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.member.lastName)+\", \"+_vm._s(_vm.member.firstName))]),(_vm.member.isAdmin)?_c('span',{staticClass:\"isadmin\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"star\"}})],1):_vm._e(),_c('span',{staticClass:\"section\"},[_vm._v(_vm._s(_vm.section))])])]),_c('div',{staticClass:\"col-md-7 col-12 actions text-right\"},[(!_vm.member.isAdmin)?_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('userAdmin.makeGroupAdmin'),\"click-event\":\"makeAdmin\"},on:{\"makeAdmin\":_vm.onMakeAdmin}}):_vm._e(),(_vm.member.isAdmin)?_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('userAdmin.removeGroupAdmin'),\"click-event\":\"removeAdmin\"},on:{\"removeAdmin\":_vm.onRemoveAdmin}}):_vm._e(),_c('sprbutton',{staticClass:\"spr-redborder button-width remove\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('userAdmin.removeFromGroup'),\"click-event\":\"removeVolunteer\"},on:{\"removeVolunteer\":_vm.onRemove}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .groupexistingmember {\r\n    padding:5px;\r\n    .user-name {\r\n      .name {\r\n        color: #CC0000;\r\n        font-weight: bold;\r\n        text-transform: uppercase;\r\n      }\r\n      .isadmin {\r\n        svg {\r\n          color:$brand-success;\r\n          margin-left: 5px;\r\n        }\r\n      }\r\n      .age {\r\n        display: block;\r\n      }\r\n    }\r\n\r\n    .actions {\r\n      text-align: right;\r\n\r\n      .remove {\r\n        margin-top:5px;\r\n      }\r\n    }\r\n\r\n  }\r\n</style>\r\n<template>\r\n  <div class=\"row groupexistingmember\">\r\n    <div class=\"col-md-5 col-12 user\">\r\n      <div class=\"user-img\">\r\n        <sprportrait :style=\"portraitStyle\"\r\n                     class=\"portrait-size\"\r\n        />\r\n      </div>\r\n      <div class=\"user-name\">\r\n        <span class=\"name\">{{ member.lastName }}, {{ member.firstName }}</span>\r\n        <span v-if=\"member.isAdmin\" class=\"isadmin\"><font-awesome-icon icon=\"star\" /></span>\r\n        <span class=\"section\">{{ section }}</span>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"col-md-7 col-12 actions text-right\">\r\n      <sprbutton\r\n        v-if=\"!member.isAdmin\"\r\n        type=\"primary\"\r\n        :size=\"4\"\r\n        :title=\"$t('userAdmin.makeGroupAdmin')\"\r\n        class=\"spr-redborder button-width\"\r\n        click-event=\"makeAdmin\"\r\n        @makeAdmin=\"onMakeAdmin\"\r\n      />\r\n      <sprbutton\r\n        v-if=\"member.isAdmin\"\r\n        type=\"primary\"\r\n        :size=\"4\"\r\n        :title=\"$t('userAdmin.removeGroupAdmin')\"\r\n        class=\"spr-redborder button-width\"\r\n        click-event=\"removeAdmin\"\r\n        @removeAdmin=\"onRemoveAdmin\"\r\n      />\r\n      <sprbutton\r\n        type=\"primary\"\r\n        :size=\"4\"\r\n        :title=\"$t('userAdmin.removeFromGroup')\"\r\n        class=\"spr-redborder button-width remove\"\r\n        click-event=\"removeVolunteer\"\r\n        @removeVolunteer=\"onRemove\"\r\n      />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprportrait from '../SPRPortrait.vue'\r\n  import datehelper from '../../mixins/dates.js'\r\n  import anonPortrait from '../../assets/img/anon-portrait.png'\r\n  export default {\r\n    name: 'Groupexistingmember',\r\n    components: { sprbutton, sprportrait },\r\n    mixins: [datehelper],\r\n    props: {\r\n      member: {\r\n        type: Object,\r\n        default: null\r\n      }\r\n    },\r\n    data: function () {\r\n      return {\r\n        inProgress: false\r\n      }\r\n    },\r\n    computed: {\r\n      age () {\r\n        return this.calculateAge(this.member.age)\r\n      },\r\n      section () {\r\n        var self = this\r\n        var section = _.find(this.$store.state.sections, (s) => {\r\n          return s.id === self.member.sectionId\r\n        })\r\n\r\n        return section ? section.name : ''\r\n      },\r\n      portraitStyle () {\r\n        var port = (this.$store.state.profile && this.$store.state.profile.portrait) ? this.$store.state.profile.portrait : anonPortrait\r\n        return 'background: url(' + port + '); background-size: cover; background-position: center center;'\r\n      }\r\n    },\r\n    methods: {\r\n      onMakeAdmin () {\r\n        this.$emit('makeAdmin', this.member)\r\n      },\r\n      onRemoveAdmin () {\r\n        this.$emit('removeAdmin', this.member)\r\n      },\r\n      onRemove () {\r\n        if (this.inProgress) {\r\n          return\r\n        }\r\n        this.inProgress = true\r\n        this.$emit('remove', this.member, this)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupExistingMember.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupExistingMember.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./GroupExistingMember.vue?vue&type=template&id=1be0e688\"\nimport script from \"./GroupExistingMember.vue?vue&type=script&lang=js\"\nexport * from \"./GroupExistingMember.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupExistingMember.vue?vue&type=style&index=0&id=1be0e688&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"groupmembers\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <h5>{{ $t('userAdmin.existingMembersTitle') }}</h5>\r\n      </div>\r\n    </div>\r\n    <div class=\"row existingmembers\">\r\n      <div class=\"col-12\">\r\n        <div v-for=\"member in groupMembers\" :key=\"member.id\" class=\"member\">\r\n          <existingmember :member=\"member\" @remove=\"onRemove\" @makeAdmin=\"onMakeAdmin\" @removeAdmin=\"onRemoveAdmin\" />\r\n        </div>\r\n        <div v-if=\"!group.members.length\" class=\"text-center\">\r\n          <div>{{ $t('userAdmin.noMembers') }}</div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div v-if=\"group.groupType === 1\" class=\"row\">\r\n      <div class=\"col-12\">\r\n        <h5>{{ $t('groups.addPendingVolunteer') }}</h5>\r\n      </div>\r\n    </div>\r\n    <div v-if=\"group.groupType === 1\" class=\"row addpendingmember\">\r\n      <div class=\"col-12\">\r\n        <groupmemberpending :group=\"group\" />\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <h5>{{ $t('userAdmin.addMemberTitle') }}</h5>\r\n      </div>\r\n    </div>\r\n    <div class=\"row addmember\">\r\n      <div class=\"col-12\">\r\n        <groupmemberadd :group=\"group\" />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import groupmemberadd from '../groups/GroupMemberAdd.vue'\r\n  import groupmemberpending from '../groups/GroupMemberPending.vue'\r\n  import existingmember from './GroupExistingMember.vue'\r\n\r\n  export default {\r\n    name: 'GroupMembers',\r\n    components: { groupmemberadd, groupmemberpending, existingmember },\r\n    props: {\r\n      group: {\r\n        type: Object,\r\n        default: null\r\n      }\r\n    },\r\n    computed: {\r\n      groupMembers () {\r\n        return _.sortBy(this.group.members, (m) => {\r\n          return m.firstName\r\n        })\r\n      }\r\n    },\r\n    methods: {\r\n      onMakeAdmin (member) {\r\n        this.$emit('makeGroupAdmin', member)\r\n      },\r\n      onRemoveAdmin (member) {\r\n        this.$emit('removeGroupAdmin', member)\r\n      },\r\n      onRemove (member, cb) {\r\n        const self = this\r\n        const payload = { payload1: this.group.id, payload2: [member.id] }\r\n        const uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupremmembers[0]\r\n        this.$http.post(uri, payload).then(s => {\r\n          self.$delete(self.group.members, self.findMemberIndex(member))\r\n          self.$bus.$emit('group-member-removed', payload)\r\n          cb.inProgress = false\r\n        }, f => {\r\n          cb.inProgress = false\r\n        })\r\n      },\r\n      findMemberIndex (member) {\r\n        return _.findIndex(this.group.members, function (m) {\r\n          return m.id === member.id\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .groupmembers {\r\n\r\n    .addmember {\r\n      background-color:$brand-white;\r\n      padding-top:15px;\r\n      margin-bottom:20px;\r\n    }\r\n\r\n  .addpendingmember {\r\n    background-color: $brand-white;\r\n    margin-bottom: 20px;\r\n  }\r\n\r\n    .existingmembers {\r\n      background-color:$brand-white;\r\n      padding:15px 0;\r\n      margin-bottom:15px;\r\n\r\n      .member:nth-child(odd) {\r\n        background: rgba(0, 0, 0, 0.03);\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupMembers.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupMembers.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./GroupMembers.vue?vue&type=template&id=00fae9a0\"\nimport script from \"./GroupMembers.vue?vue&type=script&lang=js\"\nexport * from \"./GroupMembers.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupMembers.vue?vue&type=style&index=0&id=00fae9a0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div v-if=\"isVisible\" class=\"groupdetail\">\r\n    <div v-if=\"selectedGroup\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <h5>{{ $t('userAdmin.editGroup') }} {{ selectedGroup.name }}</h5>\r\n        </div>\r\n      </div>\r\n      <div class=\"row groupstatus\">\r\n        <div class=\"col-12\">\r\n          <groupstatus :group=\"selectedGroup\" @disable=\"onDisableGroup\" @enable=\"onEnableGroup\" @delete=\"onDeleteGroup\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row editgroup\">\r\n        <div class=\"col-12\">\r\n          <groupedit ref=\"groupEditChild\" :group=\"selectedGroup\" @saveGroup=\"onSaveGroup\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row editmembers\">\r\n        <div class=\"col-12\">\r\n          <groupmembers :group=\"selectedGroup\" @makeGroupAdmin=\"onMakeGroupAdmin\" @removeGroupAdmin=\"onRemoveGroupAdmin\" />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div v-if=\"forbidden\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-center mt-5 mb-4\">\r\n          <font-awesome-icon icon=\"ban\" size=\"5x\" class=\"brand-red\" />\r\n        </div>\r\n        <div class=\"col-12 text-center\">\r\n          <p>{{ $t('userAdmin.groupDisabledHint') }}</p>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import groupstatus from './GroupStatus.vue'\r\n  import groupedit from './GroupEdit.vue'\r\n  import groupmembers from './GroupMembers.vue'\r\n\r\n  export interface TemplateComponentData {\r\n    selectedGroup: any,\r\n    forbidden: boolean,\r\n    isVisible: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n\r\n    name: 'GroupDetail',\r\n    components: { groupstatus, groupedit, groupmembers },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        selectedGroup: null,\r\n        forbidden: false,\r\n        isVisible: false\r\n      }\r\n    },\r\n    computed: {\r\n      isGroupMemberEditingAllowed (): boolean {\r\n        //@ts-ignore\r\n        if (this.selectedGroup.groupType === 2 && !this.hasAdmin()) {\r\n          // Open Group\r\n          return false\r\n        }\r\n        return true\r\n      }\r\n    },\r\n    watch: {\r\n      selectedGroup () {\r\n        const res = this.canEditGroupDetails()\r\n        if (res) {\r\n          this.isVisible = true\r\n        } else {\r\n          this.isVisible = false\r\n          this.alertAndRedirect()\r\n        }\r\n      }\r\n    },\r\n    mounted () {\r\n      this.loadGroup()\r\n\r\n      // register a listener for loadGroup, which will fire this.loadGroup function if the event is evoked\r\n      this.$bus.$on('loadGroup', this.loadGroup)\r\n    },\r\n    beforeDestroy: function () {\r\n      // stop listening to the event.\r\n      this.$bus.$off('loadGroup')\r\n    },\r\n    methods: {\r\n      canEditGroupDetails () {\r\n        // if user is either Admin or Employee or J1 inside correct district or section, all good.\r\n        // @ts-ignore cannot find mixins\r\n        if (this.hasRole('Admin') || this.hasRole('NationalAdmin') || this.hasRole('NationalEmployee')) return true\r\n        // @ts-ignore cannot find mixins\r\n        if (this.hasRole('Employee') && (this.selectedGroup && this.selectedGroup.section && this.hasClaim(this.selectedGroup.section.districtId.toString(), 'DistrictMembership'))) return true\r\n        // @ts-ignore cannot find mixins\r\n        if ((this.hasRole('J1') || this.hasRole('J2')) && this.selectedGroup && this.selectedGroup.section && this.hasClaim(this.selectedGroup.section.id.toString(), 'SectionMembership')) return true\r\n\r\n        // if its an action group, only the users above can edit\r\n        if (this.selectedGroup) {\r\n          return this.isAdmin()\r\n        }\r\n\r\n        return false\r\n      },\r\n      isAdmin () {\r\n        if (!this.selectedGroup) {\r\n          return false\r\n        }\r\n        var self = this\r\n\r\n        //@ts-ignore\r\n        return _.find(this.selectedGroup.members, function (m) {\r\n          return m.id === self.$store.state.profile.profileId && m.isAdmin\r\n        }) !== undefined\r\n      },\r\n      alertAndRedirect () {\r\n        //@ts-ignore\r\n        this.showAlertPermissionDenied().then(() => {\r\n          this.$router.push('/profile')\r\n        })\r\n      },\r\n      back () {\r\n        this.$router.go(-1)\r\n      },\r\n      getDto (group) {\r\n        // group saving needs a simple group dto, not the detailed group\r\n        return {\r\n          id: group.id,\r\n          name: group.name,\r\n          description: group.description,\r\n          groupType: group.groupType,\r\n          groupOrganizer: group.groupOrganizer,\r\n          externalForm: group.externalForm,\r\n          //@ts-ignore\r\n          members: _.map(group.members, function (item) {\r\n            return item.id\r\n          }),\r\n          isAllLocations: group.isAllLocations,\r\n          isActive: group.isActive,\r\n          languages: group.languages,\r\n          category: group.category\r\n        }\r\n      },\r\n      onMakeGroupAdmin (member) {\r\n        var self = this\r\n        var url = self.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupmakeadmin[0]\r\n        var groupSectionDto = {\r\n          sectionId: self.selectedGroup.section.id,\r\n          groupId: self.selectedGroup.id,\r\n          profileId: member.id\r\n        }\r\n        this.$http.put(url, groupSectionDto).then((resp) => {\r\n          this.loadGroup()\r\n        })\r\n      },\r\n      onRemoveGroupAdmin (member) {\r\n        var self = this\r\n        var url = self.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupremoveadmin[0]\r\n        var groupSectionDto = {\r\n          sectionId: self.selectedGroup.section.id,\r\n          groupId: self.selectedGroup.id,\r\n          profileId: member.id\r\n        }\r\n        this.$http.put(url, groupSectionDto).then((resp) => {\r\n          this.loadGroup()\r\n        })\r\n      },\r\n      onSaveGroup (group) {\r\n        this.saveGroup(group, true).catch((error) => {\r\n          console.log('something went wrong: ', error)\r\n        })\r\n      },\r\n      onEnableGroup () {\r\n        this.selectedGroup.isActive = true\r\n        this.saveGroup(this.selectedGroup, true)\r\n      },\r\n      onDisableGroup () {\r\n        var self = this as any\r\n        this.selectedGroup.isActive = false\r\n        var sectionId = this.selectedGroup.section.id\r\n        this.saveGroup(this.selectedGroup, self.hasRole('Admin')).then(() => {\r\n          if (!self.hasRole('Admin')) {\r\n            self.$router.push(`/admin/section/${sectionId}/group`)\r\n          }\r\n        })\r\n      },\r\n      onDeleteGroup () {\r\n        var self = this\r\n        var sectionId = self.selectedGroup.section.id\r\n        var districtId = self.selectedGroup.district.id\r\n        var url = `${self.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupdelete[0]}`.replace('{id}', self.selectedGroup.id)\r\n        this.$http.delete(url).then((resp) => {\r\n          if (sectionId) {\r\n            self.$router.push(`/admin/section/${sectionId}/group`)\r\n          } else {\r\n            self.$router.push(`/admin/district/${districtId}/group`)\r\n          }\r\n        })\r\n      },\r\n      loadGroup () {\r\n        // load the detailed group info for this group\r\n        var groupid = this.$route.params.id\r\n        var self = this\r\n        var url = `${self.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupgetbyidlight[0]}?id=${groupid}`\r\n        this.$http.get(url).then((resp: any) => {\r\n          self.selectedGroup = resp.body\r\n        }, f => {\r\n          if (f && f.status === 403) {\r\n            self.forbidden = true\r\n          }\r\n        })\r\n      },\r\n      async saveGroup (group, reload): Promise<void> {\r\n        return new Promise(async (resolve, reject) => {\r\n          try {\r\n            const url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupupdate[0]}`\r\n            const groupDto = this.getDto(group)\r\n            const response = await this.$http.put(url, groupDto)\r\n\r\n            if (response.ok) {\r\n              //@ts-ignore\r\n              this.showAlertSuccess(this.$t('groups.updateSuccessful'))\r\n            } else {\r\n              //@ts-ignore\r\n              this.showAlertInfo(this.$t('groups.noUpdate'))\r\n            }\r\n\r\n            if (reload) {\r\n              this.loadGroup()\r\n            }\r\n\r\n            resolve()\r\n          } catch (error) {\r\n            console.log('something went wrong: ', error)\r\n\r\n            //@ts-ignore\r\n            this.showAlertError(this.$t('groups.updateError'))\r\n            reject(error)\r\n          }\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .groupdetail {\r\n    .back {\r\n      margin-bottom:20px;\r\n      svg {\r\n        margin-right:5px;\r\n      }\r\n    }\r\n    .editgroup {\r\n      background-color:$brand-white;\r\n      padding:20px 0;\r\n      margin-bottom: 20px;\r\n    }\r\n    .grouporganizer {\r\n      margin-bottom: 10px;\r\n    }\r\n    .editmembers {\r\n      margin-top: 120px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupDetail.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupDetail.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./GroupDetail.vue?vue&type=template&id=c237a78e\"\nimport script from \"./GroupDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./GroupDetail.vue?vue&type=script&lang=ts\"\nimport style0 from \"./GroupDetail.vue?vue&type=style&index=0&id=c237a78e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"col-12 superadmin\"},[_vm._v(\" error \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"col-12 superadmin\">\r\n    error\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'AdminError',\r\n    data () {\r\n      return {\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n.superadmin {\r\n  background: $brand-white;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ErrorAdmin.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ErrorAdmin.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ErrorAdmin.vue?vue&type=template&id=7ad5b11e\"\nimport script from \"./ErrorAdmin.vue?vue&type=script&lang=js\"\nexport * from \"./ErrorAdmin.vue?vue&type=script&lang=js\"\nimport style0 from \"./ErrorAdmin.vue?vue&type=style&index=0&id=7ad5b11e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comp-friendshipmanagement-list\"},[_c('div',{staticClass:\"row search\"},[_c('div',{staticClass:\"col-12 col-sm-9 col-md-7 col-lg-5\"},[_c('searchbox',{attrs:{\"placeholder\":_vm.placeholder},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1)]),(_vm.exchanges)?_c('div',{staticClass:\"listing\"},_vm._l((_vm.filteredItems),function(d){return _c('div',{key:d.id,staticClass:\"listing-row\"},[_c('router-link',{attrs:{\"to\":'/admin/friendship/' + d.id + '/clients'}},[_vm._v(\" \"+_vm._s(d.name)+\" \")])],1)}),0):_c('div',{staticClass:\"loading text-center brand-red\"},[_c('div',{staticClass:\"my-2\"},[_c('loading')],1),_c('div',{staticClass:\"my-3\"},[_c('p',[_vm._v(_vm._s(_vm.$t('userAdmin.loading')))])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-friendshipmanagement-list\">\r\n    <div class=\"row search\">\r\n      <div class=\"col-12 col-sm-9 col-md-7 col-lg-5\">\r\n        <searchbox v-model=\"search\" :placeholder=\"placeholder\" />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"exchanges\" class=\"listing\">\r\n      <div v-for=\"d in filteredItems\" :key=\"d.id\" class=\"listing-row\">\r\n        <router-link :to=\"'/admin/friendship/' + d.id + '/clients'\">\r\n          {{ d.name }}\r\n        </router-link>\r\n      </div>\r\n    </div>\r\n    <div v-else class=\"loading text-center brand-red\">\r\n      <div class=\"my-2\">\r\n        <loading />\r\n      </div>\r\n      <div class=\"my-3\">\r\n        <p>{{ $t('userAdmin.loading') }}</p>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import searchbox from '../SPRSearchBox.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  export default {\r\n    name: 'AdminFriendshipManagementList',\r\n    components: { searchbox, loading },\r\n    data: function () {\r\n      return {\r\n        exchanges: null,\r\n        placeholder: this.$t('userAdmin.searchFriendGroupPlaceholder'),\r\n        search: ''\r\n      }\r\n    },\r\n    computed: {\r\n      filteredItems () {\r\n        if (this.search === '') {\r\n          return this.exchanges\r\n        }\r\n        return this.exchanges.filter(item => {\r\n          return item.name.toLowerCase().concat(' ' + item.name.toLowerCase()).indexOf(this.search.toLowerCase()) > -1\r\n        })\r\n      }\r\n    },\r\n    mounted: function () {\r\n      if (!this.hasAdminToFriendship(Number(this.jwtToken.DistrictMembership))) {\r\n        this.showAlertPermissionDenied().then(() => this.$router.push('/profile'))\r\n        return\r\n      }\r\n      this.$http.get(this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganization[0]).then(success => {\r\n        this.exchanges = success.body\r\n      })\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .comp-friendshipmanagement-list {\r\n    padding: 0 15px 15px;\r\n\r\n    .listing {\r\n      background: $brand-white;\r\n      display: flex;\r\n      display: -ms-flexbox;\r\n      flex-direction: column;\r\n      -ms-flex-direction: column;\r\n\r\n      .listing-row {\r\n        padding: 10px 15px;\r\n        color: $brand-red;\r\n\r\n        &:nth-child(even) {\r\n          background: rgba(0,0,0,0.03);\r\n        }\r\n\r\n        a {\r\n          color: $brand-red;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipManagementList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipManagementList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FriendshipManagementList.vue?vue&type=template&id=1a9e55e4\"\nimport script from \"./FriendshipManagementList.vue?vue&type=script&lang=js\"\nexport * from \"./FriendshipManagementList.vue?vue&type=script&lang=js\"\nimport style0 from \"./FriendshipManagementList.vue?vue&type=style&index=0&id=1a9e55e4&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comp-master-user-list\"},[_c('div',{staticClass:\"row p-2\"},[_c('div',{staticClass:\"col col-sm-12\"},[_c('div',{staticClass:\"list-group\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('userAdmin.inactiveGroups')))])])]),_vm._l((_vm.inActive),function(item,index){return _c('div',{key:item.id + '_group_' + _vm._uid + '_' + index,staticClass:\"group-row\"},[_c('useradmingroupview',{attrs:{\"group\":item}})],1)})],2)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-master-user-list\">\r\n    <div class=\"row p-2\">\r\n      <div class=\"col col-sm-12\">\r\n        <div class=\"list-group\">\r\n          <div class=\"row\">\r\n            <div class=\"col-12\">\r\n              <h4>{{ $t('userAdmin.inactiveGroups') }}</h4>\r\n            </div>\r\n          </div>\r\n          <div v-for=\"(item, index) in inActive\" :key=\"item.id + '_group_' + _uid + '_' + index\" class=\"group-row\">\r\n            <useradmingroupview :group=\"item\" />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import useradmingroupview from './GroupView.vue'\r\n\r\n  export default {\r\n    name: 'UseradminGroupsMasterlist',\r\n    components: { useradmingroupview },\r\n    data: function () {\r\n      return {\r\n        inActive: [],\r\n        isLoading: false\r\n      }\r\n    },\r\n    mounted: function () {\r\n      this.loadGroups()\r\n    },\r\n    methods: {\r\n      loadGroups: function () {\r\n        this.isLoading = true\r\n        var url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupsall[0]}`\r\n        this.$http.get(url).then(success => {\r\n          var groups = success.body\r\n\r\n          this.inActive = _.filter(groups, (group) => {\r\n            return !group.isActive\r\n          })\r\n          this.isLoading = false\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .comp-master-user-list {\r\n    background: $brand-white;\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupMasterList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupMasterList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./GroupMasterList.vue?vue&type=template&id=56e38961\"\nimport script from \"./GroupMasterList.vue?vue&type=script&lang=js\"\nexport * from \"./GroupMasterList.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupMasterList.vue?vue&type=style&index=0&id=56e38961&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"product-admin\"},[(_vm.products)?_c('div',_vm._l((_vm.products),function(product,i){return _c('product',{key:i,staticClass:\"row\",attrs:{\"product\":product},on:{\"edit\":_vm.editProduct}})}),1):_c('div',{staticClass:\"loading text-center brand-red\"},[_c('div',{staticClass:\"my-2\"},[_c('loading')],1),_c('div',{staticClass:\"my-3\"},[_c('p',[_vm._v(_vm._s(_vm.$t('userAdmin.loading')))])])]),_c('div',{staticClass:\"row create-row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprbutton',{attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('payment.newProduct'),\"click-event\":\"create\"},on:{\"create\":_vm.createProduct}})],1)]),_c('b-modal',{model:{value:(_vm.editing),callback:function ($$v) {_vm.editing=$$v},expression:\"editing\"}},[(_vm.current)?_c('div',{staticClass:\"edit-form\"},[_c('div',{staticClass:\"row\"},[_c('sprinput',{staticClass:\"col-12\",attrs:{\"hint\":_vm.$t('payment.productCode'),\"placeholder\":_vm.$t('payment.productCodeHint')},model:{value:(_vm.current.code),callback:function ($$v) {_vm.$set(_vm.current, \"code\", $$v)},expression:\"current.code\"}})],1),_c('div',{staticClass:\"row\"},[_c('sprnumber',{staticClass:\"col-6\",attrs:{\"value\":_vm.current.priceCents,\"title\":_vm.$t('payment.priceCents'),\"min\":0},on:{\"input\":_vm.handlePriceChange}}),_c('sprnumber',{staticClass:\"col-6\",attrs:{\"value\":_vm.current.vat,\"title\":_vm.$t('payment.vatPercent'),\"min\":0,\"max\":100},on:{\"input\":_vm.handleVatChange}})],1),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkbox',{attrs:{\"title\":\"Vuosittainen maksu\"},model:{value:(_vm.current.annual),callback:function ($$v) {_vm.$set(_vm.current, \"annual\", $$v)},expression:\"current.annual\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('sprinput',{staticClass:\"col-12\",attrs:{\"hint\":\"Kuvaus\",\"placeholder\":\"Tuotteen kuvaus suomeksi\"},model:{value:(_vm.current.descriptionFin),callback:function ($$v) {_vm.$set(_vm.current, \"descriptionFin\", $$v)},expression:\"current.descriptionFin\"}})],1),_c('div',{staticClass:\"row\"},[_c('sprinput',{staticClass:\"col-12\",attrs:{\"hint\":\"På svenska\",\"placeholder\":\"Tuotteen kuvaus ruotsiksi\"},model:{value:(_vm.current.descriptionSwe),callback:function ($$v) {_vm.$set(_vm.current, \"descriptionSwe\", $$v)},expression:\"current.descriptionSwe\"}})],1),_c('div',{staticClass:\"row\"},[_c('sprnumber',{staticClass:\"col-6\",attrs:{\"title\":\"Ikä vähintään\",\"min\":0},model:{value:(_vm.current.minAge),callback:function ($$v) {_vm.$set(_vm.current, \"minAge\", $$v)},expression:\"current.minAge\"}}),_c('sprnumber',{staticClass:\"col-6\",attrs:{\"title\":\"Ikä enintään\",\"min\":0,\"max\":150},model:{value:(_vm.current.maxAge),callback:function ($$v) {_vm.$set(_vm.current, \"maxAge\", $$v)},expression:\"current.maxAge\"}})],1),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkbox',{attrs:{\"title\":_vm.$t('payment.productDisabled')},model:{value:(_vm.current.disabled),callback:function ($$v) {_vm.$set(_vm.current, \"disabled\", $$v)},expression:\"current.disabled\"}})],1)])]):_vm._e(),_c('div',{attrs:{\"slot\":\"modal-header\"},slot:\"modal-header\"},[(_vm.current && _vm.current.id)?_c('h3',[_vm._v(\" \"+_vm._s(_vm.$t('payment.manageProductHeader'))+\" \")]):_c('h3',[_vm._v(\" \"+_vm._s(_vm.$t('payment.createProductHeader'))+\" \")])]),_c('div',{attrs:{\"slot\":\"modal-footer\"},slot:\"modal-footer\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-right\"},[_c('sprbutton',{attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('userAdmin.editCancel'),\"click-event\":\"cancel\"},on:{\"cancel\":_vm.cancelChanges}}),_c('sprbutton',{attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('userAdmin.editSave'),\"click-event\":\"save\"},on:{\"save\":_vm.saveChanges}})],1)])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"spr-simple-numberinput pb-3\",class:{ 'compact': _vm.compact }},[(_vm.title)?_c('label',{staticClass:\"cap-label\",attrs:{\"for\":_vm._uid}},[_vm._v(_vm._s(_vm.title))]):_vm._e(),_c('input',{ref:\"inputRef\",class:{ 'spr-danger': !_vm.isValid, 'form-control spr-roundbox-1': true },attrs:{\"id\":_vm._uid,\"type\":\"number\",\"name\":_vm.name,\"step\":_vm.step,\"min\":_vm.min,\"max\":_vm.max},domProps:{\"value\":_vm.computedValue},on:{\"input\":function($event){_vm.$emit('input', _vm.sanitize($event.target.value))}}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"spr-simple-numberinput pb-3\" :class=\"{ 'compact': compact }\">\r\n    <label v-if=\"title\" :for=\"_uid\" class=\"cap-label\">{{ title }}</label>\r\n    <input\r\n      :id=\"_uid\"\r\n      ref=\"inputRef\"\r\n      type=\"number\"\r\n      :name=\"name\"\r\n      :class=\"{ 'spr-danger': !isValid, 'form-control spr-roundbox-1': true }\"\r\n      :value=\"computedValue\"\r\n      :step=\"step\"\r\n      :min=\"min\"\r\n      :max=\"max\"\r\n      @input=\"$emit('input', sanitize($event.target.value))\"\r\n    >\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n\r\n  /* eslint-disable */\r\n  // Do not check ts at this time as this file has not been converted to ts.\r\n  export default Vue.extend({\r\n    name: 'Sprsimplenumberinput',\r\n    props: {\r\n      name: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      isValid: Boolean,\r\n      compact: Boolean,\r\n      value: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      step: {\r\n        type: Number,\r\n        default: 1\r\n      },\r\n      min: {\r\n        type: Number,\r\n        default: 0\r\n      },\r\n      max: {\r\n        type: Number,\r\n        default: Number.MAX_SAFE_INTEGER\r\n      }\r\n    },\r\n    $_veeValidate: {\r\n      value () {\r\n        return (this.$refs.inputRef as HTMLTextAreaElement).value\r\n      }\r\n    },\r\n    computed: {\r\n      computedValue () : number {\r\n        return this.sanitize(this.value)\r\n      }\r\n    },\r\n    methods: {\r\n      sanitize(val: number): number {\r\n        if (isNaN(val) || val < this.min) {\r\n          return this.min;\r\n        }\r\n        if (this.max && val > this.max) {\r\n          return this.max;\r\n        }\r\n        return val;\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .spr-simple-numberinput {\r\n    label {\r\n      color:$brand-red;\r\n      padding: 0 20px;\r\n      min-height: 19px;\r\n    }\r\n\r\n    &.compact {\r\n      padding-bottom: 0.5rem;\r\n\r\n      label {\r\n        font-size: 0.8em;\r\n        padding: 0 10px;\r\n        margin-bottom: 0;\r\n      }\r\n      input {\r\n        font-size: 0.8em;\r\n        padding: 5px 10px;\r\n      }\r\n    }\r\n\r\n    input {\r\n      display: block;\r\n      box-sizing: border-box;\r\n      font-family: \"Signa-Light\", Sans-Serif;\r\n      border: 2px solid $brand-grey3;\r\n      padding: 10px 20px;\r\n\r\n      &.spr-danger {\r\n        border: 2px solid $brand-red !important;\r\n      }\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleNumberInput.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleNumberInput.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRSimpleNumberInput.vue?vue&type=template&id=845b4298\"\nimport script from \"./SPRSimpleNumberInput.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRSimpleNumberInput.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRSimpleNumberInput.vue?vue&type=style&index=0&id=845b4298&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"product-view\"},[_c('div',{staticClass:\"col-11 col-md-7 col-lg-9\"},[_c('span',{class:{'header': true, 'disabled': !!_vm.product.disabled}},[_vm._v(_vm._s(_vm.product.code)+\", \"+_vm._s(_vm.product.priceCents)+\" snt\")])]),_c('div',{staticClass:\"d-none d-md-block col-11 col-md-5 col-lg-3\"},[_c('sprbutton',{staticClass:\"w-100 text-center\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":\"Muokkaa\",\"click-event\":\"edit\"},on:{\"edit\":function($event){return _vm.$emit('edit', _vm.product)}}})],1),_c('div',{staticClass:\"d-block d-md-none col-1 text-center edit-icon\"},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"edit\"},on:{\"click\":function($event){return _vm.$emit('edit', _vm.product)}}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n<template>\r\n  <div class=\"product-view\">\r\n    <div class=\"col-11 col-md-7 col-lg-9\">\r\n      <span :class=\"{'header': true, 'disabled': !!product.disabled}\">{{ product.code }}, {{ product.priceCents }} snt</span>\r\n    </div>\r\n    <div class=\"d-none d-md-block col-11 col-md-5 col-lg-3\">\r\n      <sprbutton class=\"w-100 text-center\"\r\n                 type=\"primary\"\r\n                 :size=\"1\"\r\n                 title=\"Muokkaa\"\r\n                 click-event=\"edit\"\r\n                 @edit=\"$emit('edit', product)\"\r\n      />\r\n    </div>\r\n    <div class=\"d-block d-md-none col-1 text-center edit-icon\">\r\n      <font-awesome-icon icon=\"edit\" class=\"brand-red\" @click=\"$emit('edit', product)\" />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import { SprPaymentProduct } from '@/types/custom'\r\n\r\n  export default Vue.extend({\r\n    name: 'ProductView',\r\n    components: { sprbutton },\r\n    props: {\r\n      product: {\r\n        type: Object as () => SprPaymentProduct | null,\r\n        default: null\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .product-view {\r\n    margin-bottom: 5px;\r\n\r\n    .fa {\r\n      line-height: 48px;\r\n    }\r\n\r\n    .edit-icon {\r\n      cursor: pointer;\r\n    }\r\n\r\n    .header {\r\n      font-size: 20px;\r\n      line-height: 42px;\r\n\r\n      &.disabled {\r\n        text-decoration:line-through;\r\n        color: $brand-grey3;\r\n        text-decoration-color: rgba(201, 201, 201, 0.4);\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProductView.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProductView.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ProductView.vue?vue&type=template&id=586cb394\"\nimport script from \"./ProductView.vue?vue&type=script&lang=ts\"\nexport * from \"./ProductView.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ProductView.vue?vue&type=style&index=0&id=586cb394&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","\r\n<template>\r\n  <div class=\"product-admin\">\r\n    <div v-if=\"products\">\r\n      <product v-for=\"(product, i) in products\"\r\n               :key=\"i\"\r\n               class=\"row\"\r\n               :product=\"product\"\r\n               @edit=\"editProduct\"\r\n      />\r\n    </div>\r\n    <div v-else class=\"loading text-center brand-red\">\r\n      <div class=\"my-2\">\r\n        <loading />\r\n      </div>\r\n      <div class=\"my-3\">\r\n        <p>{{ $t('userAdmin.loading') }}</p>\r\n      </div>\r\n    </div>\r\n    <div class=\"row create-row\">\r\n      <div class=\"col-12\">\r\n        <sprbutton type=\"primary\"\r\n                   :size=\"1\"\r\n                   :title=\"$t('payment.newProduct')\"\r\n                   click-event=\"create\"\r\n                   @create=\"createProduct\"\r\n        />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- editor modal -->\r\n    <b-modal v-model=\"editing\">\r\n      <div v-if=\"current\" class=\"edit-form\">\r\n        <div class=\"row\">\r\n          <sprinput v-model=\"current.code\"\r\n                    class=\"col-12\"\r\n                    :hint=\"$t('payment.productCode')\"\r\n                    :placeholder=\"$t('payment.productCodeHint')\"\r\n          />\r\n        </div>\r\n        <div class=\"row\">\r\n          <sprnumber :value=\"current.priceCents\"\r\n                     class=\"col-6\"\r\n                     :title=\"$t('payment.priceCents')\"\r\n                     :min=\"0\"\r\n                     @input=\"handlePriceChange\"\r\n          />\r\n          <sprnumber :value=\"current.vat\"\r\n                     class=\"col-6\"\r\n                     :title=\"$t('payment.vatPercent')\"\r\n                     :min=\"0\"\r\n                     :max=\"100\"\r\n                     @input=\"handleVatChange\"\r\n          />\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <checkbox v-model=\"current.annual\"\r\n                      title=\"Vuosittainen maksu\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <sprinput v-model=\"current.descriptionFin\"\r\n                    class=\"col-12\"\r\n                    hint=\"Kuvaus\"\r\n                    placeholder=\"Tuotteen kuvaus suomeksi\"\r\n          />\r\n        </div>\r\n        <div class=\"row\">\r\n          <sprinput v-model=\"current.descriptionSwe\"\r\n                    class=\"col-12\"\r\n                    hint=\"På svenska\"\r\n                    placeholder=\"Tuotteen kuvaus ruotsiksi\"\r\n          />\r\n        </div>\r\n        <div class=\"row\">\r\n          <sprnumber v-model=\"current.minAge\"\r\n                     class=\"col-6\"\r\n                     title=\"Ikä vähintään\"\r\n                     :min=\"0\"\r\n          />\r\n          <sprnumber v-model=\"current.maxAge\"\r\n                     class=\"col-6\"\r\n                     title=\"Ikä enintään\"\r\n                     :min=\"0\"\r\n                     :max=\"150\"\r\n          />\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <checkbox v-model=\"current.disabled\"\r\n                      :title=\"$t('payment.productDisabled')\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div slot=\"modal-header\">\r\n        <h3 v-if=\"current && current.id\">\r\n          {{ $t('payment.manageProductHeader') }}\r\n        </h3>\r\n        <h3 v-else>\r\n          {{ $t('payment.createProductHeader') }}\r\n        </h3>\r\n      </div>\r\n      <div slot=\"modal-footer\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12 text-right\">\r\n            <sprbutton type=\"primary\"\r\n                       :size=\"1\"\r\n                       :title=\"$t('userAdmin.editCancel')\"\r\n                       click-event=\"cancel\"\r\n                       @cancel=\"cancelChanges\"\r\n            />\r\n            <sprbutton type=\"primary\"\r\n                       :size=\"1\"\r\n                       :title=\"$t('userAdmin.editSave')\"\r\n                       click-event=\"save\"\r\n                       @save=\"saveChanges\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </b-modal>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprinput from '../SPRSimpleText.vue'\r\n  import sprnumber from '../SPRSimpleNumberInput.vue'\r\n  import checkbox from '../SPRSimpleCheckbox.vue'\r\n  import product from './ProductView.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { SprPaymentProduct } from '@/types/custom'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    current: SprPaymentProduct | null,\r\n    products: Array<SprPaymentProduct> | null\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'ProductAdmin',\r\n    components: { sprbutton, sprinput, sprnumber, product, checkbox, loading },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        current: null as SprPaymentProduct | null,\r\n        products: null as Array<SprPaymentProduct> | null\r\n      }\r\n    },\r\n    computed: {\r\n      editing (): boolean {\r\n        return this.current !== null\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.getProducts()\r\n    },\r\n    methods: {\r\n      handlePriceChange (val: string) {\r\n        // This is a hack. val is a string, no matter what I tried, so here I have to declare a method to convert it to the proper type\r\n        if (this.current) { this.current.priceCents = parseFloat(val) }\r\n      },\r\n      handleVatChange (val: string) {\r\n        // This is a hack. val is a string, no matter what I tried, so here I have to declare a method to convert it to the proper type\r\n        if (this.current) { this.current.vat = parseFloat(val) }\r\n      },\r\n      editProduct (product: SprPaymentProduct) {\r\n        this.current = product\r\n      },\r\n      createProduct () {\r\n        this.newProduct()\r\n      },\r\n      cancelChanges () {\r\n        this.current = null\r\n      },\r\n      newProduct (): SprPaymentProduct {\r\n        return {\r\n          code: '',\r\n          disabled: false,\r\n          id: 0,\r\n          priceCents: 100,\r\n          vat: 0,\r\n          descriptionFin: '',\r\n          descriptionSwe: '',\r\n          annual: false,\r\n          minAge: null,\r\n          maxAge: null\r\n        }\r\n      },\r\n      getProducts (): void {\r\n        const productsUrl = `${this.$store.state.apiBases.paymentservice + this.$store.state.apiEndpoints.producteditor[0]}`\r\n        this.$http.get(productsUrl)\r\n          .then(success => {\r\n            // @ts-ignore\r\n            this.$data.products = success.body\r\n          }, failure => {\r\n            console.log('failed fetching products', failure)\r\n          })\r\n      },\r\n      saveChanges () {\r\n        const editUrl = `${this.$store.state.apiBases.paymentservice + this.$store.state.apiEndpoints.productsave[0]}`\r\n\r\n        var toSave = this.current\r\n        this.products = null\r\n        this.current = null\r\n\r\n        this.$http.put(editUrl, toSave)\r\n          .then(() => this.getProducts(), () => this.getProducts())\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .product-admin {\r\n    background: $brand-white;\r\n    padding: 30px 15px;\r\n\r\n    .create-row {\r\n      margin-top: 30px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProductsAdmin.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProductsAdmin.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ProductsAdmin.vue?vue&type=template&id=ffdee4a4\"\nimport script from \"./ProductsAdmin.vue?vue&type=script&lang=ts\"\nexport * from \"./ProductsAdmin.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ProductsAdmin.vue?vue&type=style&index=0&id=ffdee4a4&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"external-form\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('userAdmin.externalForms')))]),((!_vm.loading && _vm.externalFormsAvailable) || _vm.isAddFormVisible)?_c('div',[_c('ul',_vm._l((_vm.externalForms),function(row){return _c('li',{key:row.id},[_c('ExternalFormRow',{attrs:{\"name\":row.name,\"link\":row.link},on:{\"delete\":function($event){return _vm.deleteRow(row.id)}}})],1)}),0),(_vm.isAddFormVisible)?_c('ExternalFormRow',{attrs:{\"is-new\":_vm.isAddFormVisible},on:{\"save\":function($event){return _vm.addRow($event)},\"cancel\":_vm.cancelRow}}):_vm._e()],1):(_vm.loading)?_c('div',{staticClass:\"loading text-center brand-red\"},[_c('div',{staticClass:\"my-2\"},[_c('loading')],1),_c('div',{staticClass:\"my-3\"},[_c('p',[_vm._v(_vm._s(_vm.$t('userAdmin.loading')))])])]):_c('div',{staticClass:\"loading text-center brand-red\"},[_c('div',{staticClass:\"my-3\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.externalFormsNotAvailable'))+\" \")])]),(!_vm.isAddFormVisible)?_c('sprbutton',{attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('userAdmin.externalFormsAdd'),\"click-event\":\"add\"},on:{\"add\":_vm.showAddForm}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(!_vm.isNew)?_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"input-container\"},[_c('span',{staticClass:\"input-text\"},[_vm._v(_vm._s(_vm.name))]),_c('a',{staticClass:\"input-text\",attrs:{\"href\":_vm.link,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.link))])]),_c('sprbutton',{staticClass:\"input-button\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('externalForm.delete'),\"click-event\":\"delete\"},on:{\"delete\":_vm.deleteForm}})],1):_c('div',[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"input-container\"},[_c('sprinput',{staticClass:\"input-text\",attrs:{\"hint\":_vm.$t('externalForm.link'),\"placeholder\":_vm.$t('externalForm.name')},model:{value:(_vm.formData.name),callback:function ($$v) {_vm.$set(_vm.formData, \"name\", $$v)},expression:\"formData.name\"}}),_c('sprinput',{staticClass:\"input-text\",attrs:{\"hint\":_vm.$t('externalForm.link'),\"placeholder\":_vm.$t('externalForm.link')},model:{value:(_vm.formData.link),callback:function ($$v) {_vm.$set(_vm.formData, \"link\", $$v)},expression:\"formData.link\"}})],1),_c('sprbutton',{staticClass:\"input-button\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.isNew ? _vm.$t('externalForm.add') : _vm.$t('externalForm.save'),\"click-event\":\"submit\"},on:{\"submit\":_vm.submitForm}}),_c('sprbutton',{staticClass:\"input-button\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('externalForm.cancel'),\"click-event\":\"cancel\"},on:{\"cancel\":_vm.cancel}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div>\r\n    <div v-if=\"!isNew\" class=\"container\">\r\n      <div class=\"input-container\">\r\n        <span class=\"input-text\">{{ name }}</span>\r\n        <a class=\"input-text\" :href=\"link\" target=\"_blank\">{{ link }}</a>\r\n      </div>\r\n      <sprbutton\r\n        class=\"input-button\"\r\n        type=\"primary\"\r\n        :size=\"1\"\r\n        :title=\"$t('externalForm.delete')\"\r\n        click-event=\"delete\"\r\n        @delete=\"deleteForm\"\r\n      />\r\n    </div>\r\n    <div v-else>\r\n      <div class=\"container\">\r\n        <div class=\"input-container\">\r\n          <sprinput v-model=\"formData.name\"\r\n                    class=\"input-text\"\r\n                    :hint=\"$t('externalForm.link')\"\r\n                    :placeholder=\"$t('externalForm.name')\"\r\n          />\r\n          <sprinput v-model=\"formData.link\" class=\"input-text\"\r\n                    :hint=\"$t('externalForm.link')\"\r\n                    :placeholder=\"$t('externalForm.link')\"\r\n          />\r\n        </div>\r\n        <sprbutton class=\"input-button\"\r\n                   type=\"primary\"\r\n                   :size=\"1\"\r\n                   :title=\"isNew ? $t('externalForm.add') : $t('externalForm.save')\"\r\n                   click-event=\"submit\"\r\n                   @submit=\"submitForm\"\r\n        />\r\n        <sprbutton class=\"input-button\"\r\n                   type=\"primary\"\r\n                   :size=\"1\"\r\n                   :title=\"$t('externalForm.cancel')\"\r\n                   click-event=\"cancel\"\r\n                   @cancel=\"cancel\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import sprinput from '../SPRInput.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  //  import { ValidationProvider, ValidationObserver, Validator } from 'vee-validate'\r\n  import { ExternalFormUpdateDto } from '@/types/index'\r\n  //import { required, url } from 'vee-validate/dist/rules.umd'\r\n\r\n  // Validator.extend('required', required)\r\n  // Validator.extend('url', url)\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    isEditing: boolean,\r\n    formData: ExternalFormUpdateDto\r\n  }\r\n\r\n  export default Vue.extend({\r\n    components: { sprinput, sprbutton },\r\n    props: {\r\n      name: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      link: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      isNew: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        isEditing: this.isNew,\r\n        formData: {\r\n          id: 0,\r\n          name: this.name,\r\n          link: this.link\r\n        } as ExternalFormUpdateDto\r\n      }\r\n    },\r\n    methods: {\r\n      edit () {\r\n        this.isEditing = true\r\n      },\r\n      cancel () {\r\n        this.$emit('cancel')\r\n      },\r\n      submitForm () {\r\n        this.$emit('save', this.formData)\r\n      },\r\n      deleteForm () {\r\n        this.$emit('delete', this.formData.id)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n.container {\r\n  display: flex;\r\n  align-items: center;\r\n}\r\n\r\n.input-container {\r\n  display: flex;\r\n  flex-grow: 1;\r\n}\r\n\r\n.input-text {\r\n  flex: 1;\r\n  margin-right: 10px; /* Adjust the space between the inputs if needed */\r\n}\r\n\r\n.input-button {\r\n  margin-left: 10px; /* Adjust the space between the inputs and buttons if needed */\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ExternalFormRow.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ExternalFormRow.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ExternalFormRow.vue?vue&type=template&id=11fece3a&scoped=true\"\nimport script from \"./ExternalFormRow.vue?vue&type=script&lang=ts\"\nexport * from \"./ExternalFormRow.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ExternalFormRow.vue?vue&type=style&index=0&id=11fece3a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"11fece3a\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"external-form\">\r\n    <h1>{{ $t('userAdmin.externalForms') }}</h1>\r\n    <div v-if=\"(!loading && externalFormsAvailable) || isAddFormVisible\">\r\n      <ul>\r\n        <li v-for=\"row in externalForms\" :key=\"row.id\">\r\n          <ExternalFormRow\r\n            :name=\"row.name\"\r\n            :link=\"row.link\"\r\n            @delete=\"deleteRow(row.id)\"\r\n          />\r\n        </li>\r\n      </ul>\r\n      <ExternalFormRow\r\n        v-if=\"isAddFormVisible\"\r\n        :is-new=\"isAddFormVisible\"\r\n        @save=\"addRow($event)\"\r\n        @cancel=\"cancelRow\"\r\n      />\r\n    </div>\r\n    <div v-else-if=\"loading\" class=\"loading text-center brand-red\">\r\n      <div class=\"my-2\">\r\n        <loading />\r\n      </div>\r\n      <div class=\"my-3\">\r\n        <p>{{ $t('userAdmin.loading') }}</p>\r\n      </div>\r\n    </div>\r\n    <div v-else class=\"loading text-center brand-red\">\r\n      <div class=\"my-3\">\r\n        {{ $t('userAdmin.externalFormsNotAvailable') }}\r\n      </div>\r\n    </div>\r\n    <sprbutton v-if=\"!isAddFormVisible\" type=\"primary\"\r\n               :size=\"1\"\r\n               :title=\"$t('userAdmin.externalFormsAdd')\"\r\n               click-event=\"add\"\r\n               @add=\"showAddForm\"\r\n    />\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import ExternalFormRow from './ExternalFormRow.vue'\r\n  import { ExternalFormUpdateDto } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    externalForms: ExternalFormUpdateDto[],\r\n    isAddFormVisible: boolean,\r\n    isEditFormVisible: boolean,\r\n    loading: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'ExternalForms',\r\n    components: { sprbutton, loading, ExternalFormRow },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        externalForms: [] as ExternalFormUpdateDto[],\r\n        isAddFormVisible: false,\r\n        isEditFormVisible: false,\r\n        loading: false\r\n      }\r\n    },\r\n    computed: {\r\n      externalFormsAvailable (): boolean {\r\n        return this.externalForms && this.externalForms.length > 0\r\n      }\r\n    },\r\n    created () {\r\n      this.fetchExternalForms()\r\n    },\r\n    methods: {\r\n      async fetchExternalForms () {\r\n        try {\r\n          const url =\r\n            this.$store.state.apiBases.externalformservice +\r\n            this.$store.state.apiEndpoints.externalformsall[0]\r\n          this.loading = true\r\n          const response = await this.$http.get(url).then((response) => {\r\n            this.loading = false\r\n            this.externalForms = response.data as Array<ExternalFormUpdateDto>\r\n          })\r\n        } catch (error) {\r\n          console.error('Error fetching external forms:', error)\r\n        }\r\n      },\r\n      showAddForm () {\r\n        this.isAddFormVisible = true\r\n      },\r\n      // async saveRow (externalForm: { id: number, name: string, link: string }) {\r\n      //   try {\r\n      //     let url =\r\n      //       this.$store.state.apiBases.userservice +\r\n      //       this.$store.state.apiEndpoints.externalformsupdate[0]\r\n      //     url = url.replace('{0}', externalForm.id)\r\n\r\n      //     const response = await this.$http.put(url, externalForm)\r\n\r\n      //     this.$set(this.externalForms, externalForm.id, externalForm)\r\n\r\n      //     const index = this.externalForms.findIndex(form => form.id === externalForm.id)\r\n      //     if (index !== -1) {\r\n      //       this.externalForms.splice(index, 1, response.data)\r\n      //     }\r\n\r\n      //     this.isEditFormVisible = false\r\n      //   } catch (error) {\r\n      //     console.error('Error updating external form:', error)\r\n      //   }\r\n      // },\r\n      async addRow (externalForm: {name: string, link: string }) {\r\n        try {\r\n          const url =\r\n            this.$store.state.apiBases.userservice +\r\n            this.$store.state.apiEndpoints.externalformsadd[0]\r\n\r\n          const response = await this.$http.post(url, externalForm)\r\n          this.externalForms.push(response.data)\r\n          this.isAddFormVisible = false\r\n        } catch (error) {\r\n          console.error('Error adding external form:', error)\r\n        }\r\n      },\r\n      async deleteRow (id: number) {\r\n        try {\r\n          let url =\r\n            this.$store.state.apiBases.userservice +\r\n            this.$store.state.apiEndpoints.externalformsdelete[0]\r\n          url = url.replace('{0}', id)\r\n\r\n          await this.$http.delete(url)\r\n          this.externalForms = this.externalForms.filter(form => form.id !== id)\r\n        } catch (error) {\r\n          console.error('Error deleting external form:', error)\r\n        }\r\n      },\r\n      cancelRow () {\r\n        this.isAddFormVisible = false\r\n        this.isEditFormVisible = false\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .external-form {\r\n    background: $brand-white;\r\n    padding: 30px 15px;\r\n\r\n    .create-row {\r\n      margin-top: 30px;\r\n    }\r\n  }\r\n\r\n  ul {\r\n    list-style-type: none;\r\n    padding: 0; /* Optional: to remove default padding */\r\n    margin: 0;  /* Optional: to remove default margin */\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ExternalForms.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ExternalForms.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ExternalForms.vue?vue&type=template&id=1d812c32&scoped=true\"\nimport script from \"./ExternalForms.vue?vue&type=script&lang=ts\"\nexport * from \"./ExternalForms.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ExternalForms.vue?vue&type=style&index=0&id=1d812c32&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1d812c32\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"external-form\"},[((!_vm.loading && _vm.externalFormsAvailable) || _vm.isAddFormVisible)?_c('div',[_c('ul',_vm._l((_vm.settingsData),function(row){return _c('li',{key:row.name},[_c('SettingsRow',{attrs:{\"name\":row.name,\"value\":row.type === 'Date' ? _vm.formatDate(row.value) : row.value,\"type\":row.type}})],1)}),0)]):(_vm.loading)?_c('div',{staticClass:\"loading text-center brand-red\"},[_c('div',{staticClass:\"my-2\"},[_c('loading')],1),_c('div',{staticClass:\"my-3\"},[_c('p',[_vm._v(_vm._s(_vm.$t('userAdmin.loading')))])])]):_c('div',{staticClass:\"loading text-center brand-red\"},[_c('div',{staticClass:\"my-3\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.externalFormsNotAvailable'))+\" \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container row\"},[_c('div',{staticClass:\"input-container col-5\"},[_c('span',{staticClass:\"input-text\"},[_vm._v(_vm._s(_vm.name))])]),(_vm.isEditing)?_c('div',{staticClass:\"input-container col-4\"},[(_vm.formData.type === 'Integer')?_c('sprinput',{staticClass:\"input-text\",attrs:{\"hint\":_vm.formData.type,\"placeholder\":_vm.formData.type,\"size\":'5',\"input-type\":'number',\"center-text\":true},model:{value:(_vm.formData.value),callback:function ($$v) {_vm.$set(_vm.formData, \"value\", $$v)},expression:\"formData.value\"}}):_vm._e(),(_vm.formData.type === 'Date')?_c('datepicker',{attrs:{\"required\":false,\"is-nullable\":true,\"initial\":_vm.formData.value},model:{value:(_vm.formData.value),callback:function ($$v) {_vm.$set(_vm.formData, \"value\", $$v)},expression:\"formData.value\"}}):_vm._e()],1):_c('div',{staticClass:\"input-container col-4\"},[_c('span',{staticClass:\"input-text\"},[_vm._v(_vm._s(_vm.formData.value))])]),_c('div',{staticClass:\"action-icons\"},[_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isEditing),expression:\"!isEditing\"}],staticClass:\"action-icon\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.toggleEdit}},[_c('font-awesome-icon',{attrs:{\"icon\":\"pencil-alt\",\"aria-hidden\":\"true\"}})],1),_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isEditing),expression:\"isEditing\"}],staticClass:\"action-icon\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.toggleEdit}},[_c('font-awesome-icon',{staticClass:\"save\",attrs:{\"icon\":\"check\",\"aria-hidden\":\"true\"}})],1),_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isEditing),expression:\"isEditing\"}],staticClass:\"action-icon\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.revertChanges}},[_c('font-awesome-icon',{attrs:{\"icon\":\"times\",\"aria-hidden\":\"true\"}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"container row\">\r\n    <div class=\"input-container col-5\">\r\n      <span class=\"input-text\">{{ name }}</span>\r\n    </div>\r\n    <div v-if=\"isEditing\" class=\"input-container col-4\">\r\n      <sprinput v-if=\"formData.type === 'Integer'\"\r\n                v-model=\"formData.value\" class=\"input-text\"\r\n                :hint=\"formData.type\"\r\n                :placeholder=\"formData.type\"\r\n                :size=\"'5'\"\r\n                :input-type=\"'number'\"\r\n                :center-text=\"true\"\r\n      />\r\n      <datepicker v-if=\"formData.type === 'Date'\"\r\n                  v-model=\"formData.value\"\r\n                  :required=\"false\"\r\n                  :is-nullable=\"true\"\r\n                  :initial=\"formData.value\"\r\n      />\r\n    </div>\r\n    <div v-else class=\"input-container col-4\">\r\n      <span class=\"input-text\">{{ formData.value }}</span>\r\n    </div>\r\n    <div class=\"action-icons\">\r\n      <a v-show=\"!isEditing\" class=\"action-icon\" tabindex=\"0\" href=\"javascript:void(0);\" @click=\"toggleEdit\">\r\n        <font-awesome-icon icon=\"pencil-alt\" aria-hidden=\"true\" />\r\n      </a>\r\n      <a v-show=\"isEditing\" class=\"action-icon\" tabindex=\"0\" href=\"javascript:void(0);\" @click=\"toggleEdit\">\r\n        <font-awesome-icon icon=\"check\" class=\"save\" aria-hidden=\"true\" />\r\n      </a>\r\n      <a v-show=\"isEditing\" class=\"action-icon\" tabindex=\"0\" href=\"javascript:void(0);\" @click=\"revertChanges\">\r\n        <font-awesome-icon icon=\"times\" aria-hidden=\"true\" />\r\n      </a>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import moment from 'moment'\r\n\r\n  import sprinput from '../SPRInput.vue'\r\n  import datepicker from '../SPRDatepicker.vue'\r\n\r\n  import { ExternalFormUpdateDto, OmaSettingsDto } from '@/types/index'\r\n\r\n  export interface TemplateComponentData {\r\n    isEditing: boolean,\r\n    formData: OmaSettingsDto,\r\n    backup: string\r\n  }\r\n\r\n  export default Vue.extend({\r\n    components: { sprinput, datepicker },\r\n    props: {\r\n      name: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      value: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      type: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      isNew: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        isEditing: this.isNew,\r\n        formData: {\r\n          name: this.name,\r\n          value: this.value,\r\n          type: this.type\r\n        } as OmaSettingsDto,\r\n        updatedFormData: {\r\n          name: '',\r\n          value: '',\r\n          type: ''\r\n        } as OmaSettingsDto,\r\n        backup: ''\r\n      }\r\n    },\r\n    methods: {\r\n      edit () {\r\n        this.isEditing = true\r\n      },\r\n      toggleEdit: function () {\r\n        this.isEditing = !this.isEditing\r\n\r\n        if (this.isEditing) {\r\n          this.backup = this.formData.value\r\n        } else {\r\n          if (this.backup !== this.formData.value) {\r\n            this.submitForm()\r\n          }\r\n        }\r\n      },\r\n      cancel () {\r\n        this.$emit('cancel')\r\n      },\r\n      revertChanges: function () {\r\n        if (this.isEditing) {\r\n          this.formData.value = this.backup\r\n          this.toggleEdit()\r\n        }\r\n      },\r\n      submitForm () {\r\n        var self = this\r\n        var updateurl = this.$store.state.apiBases.systemservice + this.$store.state.apiEndpoints.settingsupdate[0]\r\n        this.updatedFormData = this.formData\r\n        if (this.formData.type === 'Date') {\r\n          this.updatedFormData.value = moment(this.formData.value, 'DD.MM.YYYY').format('YYYY-MM-DD')\r\n        }\r\n        this.$http.put(updateurl, this.updatedFormData).then(response => {\r\n          if (response.ok) {\r\n            self.isEditing = false\r\n            if (this.formData.type === 'Date') {\r\n              this.formData.value = moment(this.updatedFormData.value, 'YYYY-MM-DD').format('DD.MM.YYYY')\r\n            }\r\n            this.backup = this.formData.value\r\n            // @ts-ignore - mixins not picked up\r\n            this.showAlertSuccess(`${this.$t('common.settingUpdated')}`)\r\n            //get the store state settings and update the value in that array where the names match\r\n            this.$store.dispatch('setSetting', this.formData)\r\n          }\r\n        }, response => {\r\n          // @ts-ignore - mixins not picked up\r\n          this.showAlertError(`${this.$t('common.saveFailed')}`)\r\n        })\r\n        this.$emit('save', this.formData)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n.container {\r\n  display: flex;\r\n  align-items: center;\r\n}\r\n\r\n.input-container {\r\n  display: flex;\r\n  flex-grow: 1;\r\n}\r\n\r\n.input-text {\r\n  flex: 1;\r\n  margin-right: 10px; /* Adjust the space between the inputs if needed */\r\n}\r\n\r\n.input-button {\r\n  margin-left: 10px; /* Adjust the space between the inputs and buttons if needed */\r\n}\r\n\r\n.action-icons {\r\n  display: flex;\r\n  align-items: center;\r\n}\r\n\r\n.action-icon {\r\n  display: flex;\r\n  align-items: center;\r\n  color: $brand-red;\r\n  align-items: center;\r\n  font-family: $font-bold;\r\n  cursor: pointer;\r\n  text-decoration: none;\r\n  text-transform: uppercase;\r\n  margin-right: 20px;\r\n\r\n  .save {\r\n    color: $brand-success;\r\n  }\r\n}\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SettingRow.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SettingRow.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SettingRow.vue?vue&type=template&id=643d6218&scoped=true\"\nimport script from \"./SettingRow.vue?vue&type=script&lang=ts\"\nexport * from \"./SettingRow.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SettingRow.vue?vue&type=style&index=0&id=643d6218&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"643d6218\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"external-form\">\r\n    <div v-if=\"(!loading && externalFormsAvailable) || isAddFormVisible\">\r\n      <ul>\r\n        <li v-for=\"row in settingsData\" :key=\"row.name\">\r\n          <SettingsRow\r\n            :name=\"row.name\"\r\n            :value=\"row.type === 'Date' ? formatDate(row.value) : row.value\"\r\n            :type=\"row.type\"\r\n          />\r\n        </li>\r\n      </ul>\r\n    </div>\r\n    <div v-else-if=\"loading\" class=\"loading text-center brand-red\">\r\n      <div class=\"my-2\">\r\n        <loading />\r\n      </div>\r\n      <div class=\"my-3\">\r\n        <p>{{ $t('userAdmin.loading') }}</p>\r\n      </div>\r\n    </div>\r\n    <div v-else class=\"loading text-center brand-red\">\r\n      <div class=\"my-3\">\r\n        {{ $t('userAdmin.externalFormsNotAvailable') }}\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import moment from 'moment'\r\n  import loading from '../SPRLoading.vue'\r\n  import SettingsRow from './SettingRow.vue'\r\n  import { OmaSettingsDto } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    settingsData: OmaSettingsDto[],\r\n    isAddFormVisible: boolean,\r\n    isEditFormVisible: boolean,\r\n    loading: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'Settings',\r\n    components: { loading, SettingsRow },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        settingsData: [] as OmaSettingsDto[],\r\n        isAddFormVisible: false,\r\n        isEditFormVisible: false,\r\n        loading: false\r\n      }\r\n    },\r\n    computed: {\r\n      externalFormsAvailable (): boolean {\r\n        return this.settingsData && this.settingsData.length > 0\r\n      }\r\n    },\r\n    created () {\r\n      this.settingsData = this.$store.state.omaSettings as OmaSettingsDto[]\r\n    },\r\n    methods: {\r\n      showAddForm () {\r\n        this.isAddFormVisible = true\r\n      },\r\n      cancelRow () {\r\n        this.isAddFormVisible = false\r\n        this.isEditFormVisible = false\r\n      },\r\n      formatDate (dateString: string): string {\r\n        return moment(dateString).format('DD.MM.YYYY')\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .external-form {\r\n    background: $brand-white;\r\n    padding: 30px 15px;\r\n\r\n    .create-row {\r\n      margin-top: 30px;\r\n    }\r\n  }\r\n\r\n  ul {\r\n    list-style-type: none;\r\n    padding: 0; /* Optional: to remove default padding */\r\n    margin: 0;  /* Optional: to remove default margin */\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=bd9c8cae&scoped=true\"\nimport script from \"./Settings.vue?vue&type=script&lang=ts\"\nexport * from \"./Settings.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Settings.vue?vue&type=style&index=0&id=bd9c8cae&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"bd9c8cae\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"settings-admin\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('settingsAdmin.title')))]),(_vm.primary === 'settings')?_c('div',[_c('div',{staticClass:\"filter-links\"},_vm._l((_vm.settingFilters),function(f,i){return _c('router-link',{key:'filter_' + _vm._uid + '_' + i,staticClass:\"d-inline-block m-2\",attrs:{\"to\":_vm.settingsLink(f.value)}},[_vm._v(\" \"+_vm._s(f.text)+\" \")])}),1),(_vm.folder !== '')?_c('div',[_c('EditImages',{attrs:{\"container\":\"eventimages\",\"folder\":_vm.folder}})],1):_c('div',[_c('Settings'),(!_vm.loading)?_c('div'):_c('div',{staticClass:\"spinner my-4 col-12\"},[_c('loading')],1)],1)]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"container\"},[_c('div',{staticClass:\"row\"},[_c('DropZone',{attrs:{\"container\":\"eventimages\",\"folder\":_vm.folder},on:{\"image-uploaded\":_vm.populateImageLib}}),_vm._l((_vm.imageLib),function(e,i){return _c('div',{key:e.url + '_' + i,staticClass:\"col-6 col-sm-6 col-md-4 py-1\"},[_c('img',{staticClass:\"select-thumb\",class:{ selected: _vm.libImage === e.url, blur: _vm.selectedImageIndex === i && _vm.contextMenuVisible },attrs:{\"src\":e.prev,\"title\":e.filename,\"alt\":\"background image option\"},on:{\"click\":function($event){_vm.libImage = e.url},\"contextmenu\":function($event){$event.preventDefault();return _vm.showContextMenu($event, e, i)}}})])})],2),(_vm.contextMenuVisible)?_c('div',{staticClass:\"context-menu\",style:({ top: _vm.contextMenuY + 'px', left: _vm.contextMenuX + 'px' })},[_c('ul',[_c('li',{on:{\"click\":function($event){return _vm.deleteImage(_vm.selectedImageIndex)}}},[_vm._v(\" Delete \")]),_c('li',{on:{\"click\":function($event){return _vm.downloadImage(_vm.selectedImageIndex)}}},[_vm._v(\" Download \")])])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"drop-zone\",on:{\"dragover\":function($event){$event.preventDefault();},\"dragenter\":function($event){$event.preventDefault();},\"drop\":_vm.handleDrop}},[_c('p',[_vm._v(\"Drag and drop an image here to upload\")]),_c('input',{ref:\"fileInput\",staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\"},on:{\"change\":_vm.handleFileChange}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"drop-zone\" @dragover.prevent @dragenter.prevent @drop=\"handleDrop\">\r\n    <p>Drag and drop an image here to upload</p>\r\n    <input ref=\"fileInput\" type=\"file\" style=\"display: none\" @change=\"handleFileChange\" />\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n\r\n  export interface TemplateComponentData {\r\n    changePending: boolean,\r\n    imageLib: Array<{ url: string, prev: string }>\r\n  }\r\n\r\n  export default Vue.extend({\r\n    props: {\r\n      container: {\r\n        type: String,\r\n        required: true\r\n      },\r\n      folder: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      prefix: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data: () => ({\r\n      changePending: false,\r\n      imageLib: []\r\n    }),\r\n    methods: {\r\n      handleDragOver (event) {\r\n        event.preventDefault()\r\n        event.stopPropagation()\r\n      },\r\n      handleDragEnter (event) {\r\n        event.preventDefault()\r\n        event.stopPropagation()\r\n      },\r\n      handleDrop (event) {\r\n        event.preventDefault()\r\n        event.stopPropagation()\r\n        const files = event.dataTransfer.files\r\n        if (files.length) {\r\n          this.uploadFile(files[0])\r\n        }\r\n      },\r\n      handleFileChange (event) {\r\n        const files = event.target.files\r\n        if (files.length) {\r\n          this.uploadFile(files[0])\r\n        }\r\n      },\r\n      uploadFile (file) {\r\n        const formData = new FormData()\r\n        formData.append('file', file)\r\n\r\n        let url =\r\n          this.$store.state.apiBases.contentservice +\r\n          this.$store.state.apiEndpoints.uploadimages[0] +\r\n          `/${this.container}`\r\n\r\n        if (this.folder && this.folder.length > 0) {\r\n          url = url + '?folder=' + this.folder\r\n\r\n          if (this.prefix && this.prefix.length > 0) { url = url + '&prefix=' + this.prefix }\r\n        } else if (this.prefix && this.prefix.length > 0) { url = url + '?prefix=' + this.prefix }\r\n\r\n        //console.log('Dropzone: ', url)\r\n\r\n        this.$http\r\n          .post(\r\n            url,\r\n            formData,\r\n            {\r\n              headers: {\r\n                'Content-Type': 'multipart/form-data'\r\n              }\r\n            }\r\n          )\r\n          .then(\r\n            (result: any) => {\r\n              if (result.ok === true) {\r\n                this.$emit('image-uploaded')\r\n                this.changePending = false\r\n              }\r\n            },\r\n            (fail) => {\r\n              const message = 'Multipart body length limit 3145728 exceeded.'\r\n              if (fail.bodyText && fail.bodyText.includes(message))\r\n              // @ts-ignore cannot find mixins\r\n                this.showAlertError(this.$t('common.fileTooLarge') + ': ' + message )\r\n              else\r\n              // @ts-ignore cannot find mixins\r\n              this.showAlertError(this.$t('common.fetchFailed'))\r\n            }\r\n          )\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import \"../../../assets/scss/variables.scss\";\r\n.drop-zone {\r\n  width: 300px;\r\n  height: 200px;\r\n  border: 2px dashed #ccc;\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  text-align: center;\r\n  color: #aaa;\r\n}\r\n.drop-zone:hover {\r\n  border-color: #aaa;\r\n}\r\n</style>\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DropZone.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DropZone.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DropZone.vue?vue&type=template&id=11ae4943&scoped=true\"\nimport script from \"./DropZone.vue?vue&type=script&lang=ts\"\nexport * from \"./DropZone.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DropZone.vue?vue&type=style&index=0&id=11ae4943&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"11ae4943\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div ref=\"container\">\r\n    <div class=\"row\">\r\n      <DropZone container=\"eventimages\" :folder=\"folder\" @image-uploaded=\"populateImageLib\"></DropZone>\r\n      <div\r\n        v-for=\"(e, i) in imageLib\"\r\n        :key=\"e.url + '_' + i\"\r\n        class=\"col-6 col-sm-6 col-md-4 py-1\"\r\n      >\r\n        <img\r\n          :src=\"e.prev\"\r\n          :title=\"e.filename\"\r\n          alt=\"background image option\"\r\n          class=\"select-thumb\"\r\n          :class=\"{ selected: libImage === e.url, blur: selectedImageIndex === i && contextMenuVisible }\"\r\n          @click=\"libImage = e.url\"\r\n          @contextmenu.prevent=\"showContextMenu($event, e, i)\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"contextMenuVisible\" :style=\"{ top: contextMenuY + 'px', left: contextMenuX + 'px' }\" class=\"context-menu\">\r\n      <ul>\r\n        <li @click=\"deleteImage(selectedImageIndex)\">\r\n          Delete\r\n        </li>\r\n        <li @click=\"downloadImage(selectedImageIndex)\">\r\n          Download\r\n        </li>\r\n      </ul>\r\n    </div>\r\n  </div>\r\n</template>\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import DropZone from '../DropZone/DropZone.vue'\r\n  import { ImageObject } from '@/types/custom'\r\n\r\n  export interface TemplateComponentData {\r\n    libImage: string,\r\n    pending: boolean,\r\n    imageLib: Array<ImageObject>,\r\n    contextMenuVisible: boolean,\r\n    contextMenuX: number,\r\n    contextMenuY: number,\r\n    selectedImageIndex: number | null\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'EditImages',\r\n    components: { DropZone },\r\n    props: {\r\n      container: {\r\n        type: String,\r\n        required: true\r\n      },\r\n      folder: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      prefix: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        libImage: '',\r\n        pending: false,\r\n        imageLib: Array<ImageObject>(),\r\n        contextMenuVisible: false,\r\n        contextMenuX: 0,\r\n        contextMenuY: 0,\r\n        selectedImageIndex: null\r\n      }\r\n    },\r\n    created () {\r\n      this.populateImageLib()\r\n    },\r\n    methods: {\r\n\r\n      populateImageLib () {\r\n        let url =\r\n          this.$store.state.apiBases.contentservice +\r\n          this.$store.state.apiEndpoints.getimages[0] +\r\n          `/${this.container}`\r\n\r\n        if (this.folder && this.folder.length > 0) {\r\n          url = url + '?folder=' + this.folder\r\n\r\n          if (this.prefix && this.prefix.length > 0) { url = url + '&prefix=' + this.prefix }\r\n        } else if (this.prefix && this.prefix.length > 0) { url = url + '?prefix=' + this.prefix }\r\n\r\n        this.$http.get(url).then(\r\n          (result: any) => {\r\n            if (result.ok === true) {\r\n              this.imageLib = result.body.imageNames.filter((i: string) => i.endsWith('.jpg') || i.endsWith('.png')).map((e: string) => {\r\n                return {\r\n                  filename: e,\r\n                  url: `https://sprvatistorage.blob.core.windows.net/${this.container}/` + e,\r\n                  prev: `https://sprvatistorage.blob.core.windows.net/${this.container}/` + e\r\n                } as ImageObject\r\n              })\r\n            }\r\n            if (result.ok === true) {\r\n              this.pending = false\r\n            }\r\n          },\r\n          (fail) => {\r\n            console.log('Error fetching images:', fail)\r\n            // @ts-ignore cannot find mixins\r\n            this.showAlertError(this.$t('common.fetchFailed'))\r\n          }\r\n        )\r\n      },\r\n      handleClickOutside (event: MouseEvent) {\r\n        const contextMenu = this.$el.querySelector('.context-menu') as HTMLElement\r\n        if (contextMenu && !contextMenu.contains(event.target as Node)) {\r\n          this.contextMenuVisible = false\r\n          this.selectedImageIndex = null\r\n          document.removeEventListener('click', this.handleClickOutside)\r\n        }\r\n      },\r\n      showContextMenu (event: MouseEvent, image: { url: string, prev: string }, index: number) {\r\n        const containerRect = (this.$refs.container as HTMLElement).getBoundingClientRect()\r\n        this.contextMenuVisible = !this.contextMenuVisible\r\n        this.contextMenuX = event.clientX - containerRect.left\r\n        this.contextMenuY = event.clientY - containerRect.top + 100\r\n        this.selectedImageIndex = index\r\n        document.addEventListener('click', this.handleClickOutside)\r\n      },\r\n      deleteImage (index: number | null) {\r\n        if (index !== null) {\r\n          const removedObject = this.imageLib[index] as ImageObject\r\n          this.imageLib.splice(index, 1) // remove the image from the imageLib array\r\n          this.contextMenuVisible = false\r\n          this.selectedImageIndex = null\r\n          document.removeEventListener('click', this.handleClickOutside)\r\n\r\n          const url =\r\n            this.$store.state.apiBases.contentservice +\r\n            this.$store.state.apiEndpoints.deleteimage[0] +\r\n            `/${this.container}?filename=${removedObject.filename}`\r\n\r\n          this.$http.delete(url)\r\n            .then(\r\n              (result: any) => {\r\n                if (result.ok === true) {\r\n                  this.populateImageLib()\r\n                }\r\n                if (result.ok === true) {\r\n                  this.pending = false\r\n                }\r\n              },\r\n              (fail) => {\r\n                // @ts-ignore cannot find mixins\r\n                this.showAlertError(this.$t('common.fetchFailed'))\r\n              }\r\n            )\r\n        }\r\n      },\r\n      downloadImage (index: number | null) {\r\n        if (index !== null) {\r\n          const downloadObject = this.imageLib[index] as ImageObject\r\n          this.contextMenuVisible = false\r\n          this.selectedImageIndex = null\r\n          document.removeEventListener('click', this.handleClickOutside)\r\n\r\n          const url =\r\n            this.$store.state.apiBases.contentservice +\r\n            this.$store.state.apiEndpoints.downloadimage[0] +\r\n            `/${this.container}?filename=${downloadObject.filename}`\r\n\r\n          this.$http.get(url, {\r\n            responseType: 'blob' // Ensure responseType is set to 'blob'\r\n          }).then(\r\n            (result: any) => {\r\n              if (result.ok === true) {\r\n                // Check if the response is a valid Blob\r\n                if (result.data instanceof Blob) {\r\n                  const url = window.URL.createObjectURL(new Blob([result.data], { type: 'image/jpeg' }))\r\n                  const link = document.createElement('a')\r\n                  link.href = url\r\n                  link.setAttribute('download', downloadObject.filename)\r\n                  document.body.appendChild(link)\r\n                  link.click()\r\n                  document.body.removeChild(link)\r\n                }\r\n              }\r\n              if (result.ok === true) {\r\n                this.pending = false\r\n              }\r\n            },\r\n            (fail) => {\r\n              // @ts-ignore cannot find mixins\r\n              this.showAlertError(this.$t('common.fetchFailed'))\r\n            })\r\n        }\r\n      },\r\n      beforeDestroy () {\r\n        document.removeEventListener('click', this.handleClickOutside)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n@import \"../../../assets/scss/variables.scss\";\r\n.eventimage {\r\n  position: absolute;\r\n  width: 100%;\r\n  height: 100%;\r\n  left: 0;\r\n  top: 0;\r\n  background-color: $brand-grey10;\r\n  background-repeat: no-repeat;\r\n  background-position: center center;\r\n  display: none;\r\n}\r\n\r\n.thumbimage {\r\n  position: absolute;\r\n  width: 100px;\r\n  height: 100px;\r\n  right: 50px;\r\n  top: 50px;\r\n  background-size: cover;\r\n  border: 2px solid $brand-red;\r\n  background-color: $brand-grey10;\r\n  background-repeat: no-repeat;\r\n  background-position: center center;\r\n  display: none;\r\n}\r\n.blur {\r\n  filter: blur(5px);\r\n}\r\n.select-thumb {\r\n  width: 100%;\r\n  border-radius: 5px;\r\n  box-sizing: border-box;\r\n  border: 2px solid $brand-white;\r\n\r\n  &.selected {\r\n    border: 2px solid $brand-red;\r\n    box-shadow: 0 0 10px $brand-red;\r\n  }\r\n}\r\n.context-menu {\r\n  position: absolute;\r\n  background-color: white;\r\n  border: 1px solid #ccc;\r\n  z-index: 1000;\r\n}\r\n.context-menu ul {\r\n  list-style: none;\r\n  padding: 0;\r\n  margin: 0;\r\n}\r\n.context-menu li {\r\n  padding: 8px 12px;\r\n  cursor: pointer;\r\n}\r\n.context-menu li:hover {\r\n  background-color: #eee;\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditImages.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditImages.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EditImages.vue?vue&type=template&id=619da67e&scoped=true\"\nimport script from \"./EditImages.vue?vue&type=script&lang=ts\"\nexport * from \"./EditImages.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EditImages.vue?vue&type=style&index=0&id=619da67e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"619da67e\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"settings-admin\">\r\n    <h1>{{ $t('settingsAdmin.title') }}</h1>\r\n    <div v-if=\"primary === 'settings'\">\r\n      <div class=\"filter-links\">\r\n        <router-link v-for=\"(f, i) in settingFilters\"\r\n                     :key=\"'filter_' + _uid + '_' + i\"\r\n                     :to=\"settingsLink(f.value)\"\r\n                     class=\"d-inline-block m-2\"\r\n        >\r\n          {{ f.text }}\r\n        </router-link>\r\n      </div>\r\n      <div v-if=\"folder !== ''\">\r\n        <EditImages container=\"eventimages\" :folder=\"folder\" />\r\n      </div>\r\n      <div v-else>\r\n        <Settings></Settings>\r\n        <div v-if=\"!loading\"></div>\r\n        <div v-else class=\"spinner my-4 col-12\">\r\n          <loading />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { SprCheckboxValue } from '@/types/custom'\r\n  import EditImages from '@/components/common/Images/EditImages.vue'\r\n  import Settings from '@/components/useradmin/Settings.vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    isAddFormVisible: boolean,\r\n    isEditFormVisible: boolean,\r\n    settingFilters: Array<SprCheckboxValue>,\r\n    loading: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'SettingsAdmin',\r\n    components: { loading, EditImages, Settings },\r\n    props: {\r\n      primary: {\r\n        type: String,\r\n        required: true\r\n      },\r\n      results: {\r\n        type: Object,\r\n        default: () => ({ results: [], total: 0 }),\r\n        required: false\r\n      },\r\n      id: {\r\n        type: String,\r\n        required: false\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        isAddFormVisible: false,\r\n        isEditFormVisible: false,\r\n        loading: false,\r\n        settingFilters: [{ text: this.$t('settingsAdmin.eventBackgroundImageHeader').toString(), value: 'eventbackgroundimages' }, { text: this.$t('settingsAdmin.eventThumbnailImageHeader').toString(), value: 'eventthumbnailimages' }, { text: this.$t('settingsAdmin.systemSettingsHeader').toString(), value: 'systemsettings' }]\r\n      }\r\n    },\r\n    computed: {\r\n      folder (): string {\r\n        switch (this.id) {\r\n        case 'eventbackgroundimages':\r\n          return 'Background'\r\n        case 'eventthumbnailimages':\r\n          return 'Thumbnails'\r\n        default:\r\n          return ''\r\n        }\r\n      }\r\n    },\r\n    methods: {\r\n      settingsLink (newState): string {\r\n        return '/admin/settings/' + newState\r\n      },\r\n      async fetchExternalForms () {\r\n        try {\r\n          const url =\r\n            this.$store.state.apiBases.externalformservice +\r\n            this.$store.state.apiEndpoints.externalformsall[0]\r\n          this.loading = true\r\n          const response = await this.$http.get(url).then((response) => {\r\n            this.loading = false\r\n            //            this.externalForms = response.data as Array<ExternalFormUpdateDto>\r\n          })\r\n        } catch (error) {\r\n          console.error('Error fetching external forms:', error)\r\n        }\r\n      },\r\n      showAddForm () {\r\n        this.isAddFormVisible = true\r\n      },\r\n      async addRow (externalForm: {name: string, link: string }) {\r\n        try {\r\n          const url =\r\n            this.$store.state.apiBases.userservice +\r\n            this.$store.state.apiEndpoints.externalformsadd[0]\r\n\r\n          const response = await this.$http.post(url, externalForm)\r\n          //          this.externalForms.push(response.data)\r\n          this.isAddFormVisible = false\r\n        } catch (error) {\r\n          console.error('Error adding external form:', error)\r\n        }\r\n      },\r\n      async deleteRow (id: number) {\r\n        try {\r\n          let url =\r\n            this.$store.state.apiBases.userservice +\r\n            this.$store.state.apiEndpoints.externalformsdelete[0]\r\n          url = url.replace('{0}', id)\r\n\r\n          await this.$http.delete(url)\r\n          //          this.externalForms = this.externalForms.filter(form => form.id !== id)\r\n        } catch (error) {\r\n          console.error('Error deleting external form:', error)\r\n        }\r\n      },\r\n      cancelRow () {\r\n        this.isAddFormVisible = false\r\n        this.isEditFormVisible = false\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .settings-admin {\r\n    background: $brand-white;\r\n    padding: 30px 15px;\r\n\r\n    .create-row {\r\n      margin-top: 30px;\r\n    }\r\n  }\r\n\r\n  ul {\r\n    list-style-type: none;\r\n    padding: 0; /* Optional: to remove default padding */\r\n    margin: 0;  /* Optional: to remove default margin */\r\n  }\r\n  .settings-admin {\r\n    p {\r\n      font-family: $font-bold;\r\n    }\r\n    .filter-links {\r\n        a {\r\n          text-transform: uppercase;\r\n          font-weight: bold;\r\n          color: $brand-grey7 !important;\r\n\r\n          &.router-link-active {\r\n            color: $brand-red !important;\r\n          }\r\n        }\r\n    }\r\n    .spinner {\r\n      color: $brand-red;\r\n      text-align: center;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SettingsAdmin.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SettingsAdmin.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SettingsAdmin.vue?vue&type=template&id=15b3f7eb&scoped=true\"\nimport script from \"./SettingsAdmin.vue?vue&type=script&lang=ts\"\nexport * from \"./SettingsAdmin.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SettingsAdmin.vue?vue&type=style&index=0&id=15b3f7eb&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"15b3f7eb\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"col-12 mt-5 mb-3\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.listOfPrivilegedUsers')))])]),(_vm.userRoles)?_c('div',_vm._l((_vm.userRoles),function(u){return _c('userwithrole',{key:`row_${_vm._uid}_${u.userId}`,attrs:{\"profile\":u.profile,\"user-id\":u.userId,\"roles\":u.roles}})}),1):_c('div',{staticClass:\"row brand-red text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('loading')],1)]),_c('div',{staticClass:\"col-12 mt-5 mb-3\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('customerSearch.listOfAllUsersForRoles')))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div>\r\n    <div class=\"col-12 mt-5 mb-3\">\r\n      <h4>{{ $t('customerSearch.listOfPrivilegedUsers') }}</h4>\r\n    </div>\r\n    <div v-if=\"userRoles\">\r\n      <userwithrole v-for=\"(u) in userRoles\"\r\n                    :key=\"`row_${_uid}_${u.userId}`\"\r\n                    :profile=\"u.profile\"\r\n                    :user-id=\"u.userId\"\r\n                    :roles=\"u.roles\"\r\n      />\r\n    </div>\r\n    <div v-else class=\"row brand-red text-center\">\r\n      <div class=\"col-12\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"col-12 mt-5 mb-3\">\r\n      <h4>{{ $t('customerSearch.listOfAllUsersForRoles') }}</h4>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import userwithrole from './UserRolesCurrent'\r\n  import loading from '../SPRLoading.vue'\r\n\r\n  export default {\r\n    name: 'CurrentSectionRoles',\r\n    components: { userwithrole, loading },\r\n    props: {\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        userRoles: null\r\n      }\r\n    },\r\n    computed: {\r\n      url () {\r\n        return `${this.$store.state.apiBases.userservice}/api/user/roles/sectionroles/${this.id}`\r\n      }\r\n    },\r\n    watch: {\r\n      sectionId () {\r\n        this.getRoles()\r\n      }\r\n    },\r\n    mounted () {\r\n      this.getRoles()\r\n      this.$bus.$on('section-roles-changed', this.handleChange)\r\n    },\r\n    beforeDestroy () {\r\n      this.$bus.$off('section-roles-changed', this.handleChange)\r\n    },\r\n    methods: {\r\n      getRoles: function () {\r\n        const self = this\r\n        this.userRoles = null\r\n        this.$http.get(this.url).then(s => {\r\n          self.userRoles = s.body\r\n          self.$store.commit('setSectionRoles', s.body)\r\n        }).catch(e => {\r\n          self.userRoles = []\r\n          console.error(e)\r\n        })\r\n      },\r\n      handleChange: function (change) {\r\n        if (!this.userRoles) {\r\n          return\r\n        }\r\n\r\n        var found = _.findIndex(this.userRoles, function (x) {\r\n          return x.userId === change.userId\r\n        })\r\n\r\n        if (found >= 0) {\r\n          if (change.roles.length === 0) {\r\n            this.$delete(this.userRoles, found)\r\n          } else {\r\n            this.userRoles[found].roles = change.roles\r\n          }\r\n        } else {\r\n          // must reload\r\n          this.getRoles()\r\n        }\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CurrentSectionRoles.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CurrentSectionRoles.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CurrentSectionRoles.vue?vue&type=template&id=69813626\"\nimport script from \"./CurrentSectionRoles.vue?vue&type=script&lang=js\"\nexport * from \"./CurrentSectionRoles.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row poolsadmin\"},[_c('div',{staticClass:\"col-12\"},[_vm._l((_vm.pools),function(pool){return _c('poolview',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading),expression:\"!loading\"}],key:pool.id,attrs:{\"pool\":pool,\"groupid\":Number(_vm.id),\"action-view\":_vm.getActionView(pool.status)},on:{\"remove\":_vm.onRemove}})}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)])],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row poolsadmin\">\r\n    <div class=\"col-12\">\r\n      <poolview\r\n        v-for=\"pool in pools\"\r\n        v-show=\"!loading\"\r\n        :key=\"pool.id\"\r\n        :pool=\"pool\"\r\n        :groupid=\"Number(id)\"\r\n        :action-view=\"getActionView(pool.status)\"\r\n        @remove=\"onRemove\"\r\n      />\r\n      <div v-show=\"loading\" class=\"loading\">\r\n        <div class=\"spinner\">\r\n          <loading />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n  import poolview from '../friends/PoolView.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { FriendPoolStandardDto, FriendPoolNetDto, FriendManagementDto } from '@/types/index'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    loading: boolean,\r\n    pools: Array<FriendPoolStandardDto | FriendPoolNetDto> | undefined,\r\n    group: FriendManagementDto | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'PoolsAdmin',\r\n    components: {\r\n      poolview,\r\n      loading\r\n    },\r\n    props: {\r\n      primary: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      filter: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        loading: false,\r\n        pools: undefined,\r\n        group: undefined\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.loadFMG().then((gp) => {\r\n        this.group = gp.data\r\n        return this.getPools()\r\n      }).then(resp => {\r\n        this.pools = resp.data\r\n        this.loading = false\r\n      }, (err: Response | any) => {\r\n        this.displayError(err)\r\n      })\r\n    },\r\n    methods: {\r\n      loadFMG (): PromiseLike<HttpResponse> {\r\n        var url = this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.friendOrganizationById[0].replace('{0}', this.id)\r\n        return this.$http.get(url)\r\n      },\r\n      getPools (): PromiseLike<HttpResponse> {\r\n        this.loading = true\r\n        const url = this.group?.netFriendship\r\n          ? this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.getfriendmanagementpoolsnet[0].replace('{fmgid}', this.id)\r\n          : this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.getfriendmanagementpoolsstandard[0].replace('{fmgid}', this.id)\r\n        return this.$http.get(url)\r\n      },\r\n      onRemove (pool): void {\r\n        if (!confirm(this.$t('poolPreview.confirmRemoveText').toString())) return\r\n\r\n        const url = this.group?.netFriendship\r\n          ? this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.deletefriendmanagementpoolnet[0].replace('{poolid}', pool.id)\r\n          : this.$store.state.apiBases.friendservice + this.$store.state.apiEndpoints.deletefriendmanagementpoolstandard[0].replace('{poolid}', pool.id)\r\n\r\n        this.$http.delete(url)\r\n          .then(response => this.getPools())\r\n          .then(resp => {\r\n            this.pools = resp.data\r\n            this.loading = false\r\n          }, f => this.displayError(f))\r\n      },\r\n      getActionView (status) {\r\n        return status === this.$store.state.poolStatus.REMOVED ? 'remove' : 'counts'\r\n      },\r\n      displayError (err: Response | any): void {\r\n        if (Array.isArray(err.body)) {\r\n          err.body.forEach(x => {\r\n            // @ts-ignore\r\n            this.showAlertError(x.errorMessage)\r\n          })\r\n        } else if (err.body && err.body.errorMessage) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.errorMessage)\r\n        } else if (err.bodyText) {\r\n          // @ts-ignore\r\n          this.showAlertError(err.bodyText)\r\n        } else {\r\n          // @ts-ignore\r\n          this.showAlertError(this.$t('common.fetchFailed'))\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolsAdmin.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PoolsAdmin.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PoolsAdmin.vue?vue&type=template&id=4e9a6b38\"\nimport script from \"./PoolsAdmin.vue?vue&type=script&lang=ts\"\nexport * from \"./PoolsAdmin.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"comp-admin-page col-12\">\r\n    <backbar :title=\"$t('userAdmin.adminHeader')\" />\r\n    <div class=\"container\">\r\n      <!-- Ingress -->\r\n      <!--\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <p>{{$t('userAdmin.adminIngress')}}</p>\r\n      </div>\r\n    </div>\r\n    -->\r\n      <div v-for=\"s in state.el\" :key=\"s.id\" class=\"row\">\r\n        <div :is=\"s\"\r\n             :id=\"id\"\r\n             :primary=\"primary\"\r\n             :filter=\"filter ? filter : 'all'\"\r\n             :purpose=\"purpose\"\r\n             class=\"col-12\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import usersearch from './UserSearch.vue'\r\n  import usersearchCheck from './UserSearchCheckBox.vue'\r\n  import brokervolunteers from './BrokerVolunteers.vue'\r\n  import sectionmessages from './SectionMessages.vue'\r\n  import districtmessages from './DistrictMessages.vue'\r\n\r\n  import usereditor from './UserEditor.vue'\r\n  import districtlist from './DistrictList.vue'\r\n  import deleteprofilelist from './DeleteProfileList.vue'\r\n  import organizationadmin from './OrganizationAdmin.vue'\r\n  import nationalAdmin from './NationalAdmin.vue'\r\n  import nationalEmployee from './NationalEmployee.vue'\r\n  import districtadmin from './DistrictAdmin.vue'\r\n  import sectionadmin from './SectionAdmin.vue'\r\n  import friendshipadmin from './FriendshipAdmin.vue'\r\n  import sectionlist from './SectionList.vue'\r\n  import sectiongroups from './SectionGroups.vue'\r\n  import districtgroups from './DistrictGroups.vue'\r\n  import groupdetail from './GroupDetail.vue'\r\n  import error from './ErrorAdmin.vue'\r\n  import friendshipselection from './FriendshipManagementList.vue'\r\n  import groupmasterlist from './GroupMasterList.vue'\r\n  import productadmin from './ProductsAdmin.vue'\r\n  import externalforms from './ExternalForms.vue'\r\n  import settings from './Settings.vue'\r\n\r\n  import settingsadmin from './SettingsAdmin.vue'\r\n  import backbar from '../BackBar.vue'\r\n  import currentroles from './CurrentSectionRoles.vue'\r\n  import poolsadmin from './PoolsAdmin.vue'\r\n\r\n  export default {\r\n    name: 'Admin',\r\n    components: { backbar },\r\n    props: {\r\n      primary: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      id: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      filter: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        legalActions: ['user', 'district', 'section', 'group', 'event', 'roles', 'deleteprofile'],\r\n        from: null,\r\n        purpose: 1\r\n      }\r\n    },\r\n    computed: {\r\n      state: function () {\r\n        if (!this.jwtToken) {\r\n          this.alertAndRedirect()\r\n          return\r\n        }\r\n        // this is for /admin url\r\n        // This mechanism enforces role-based access control for different sections of the application.\r\n        if (!this.primary && !this.filter && !this.id) {\r\n          // If the user lacks roles 'Admin', 'NationalAdmin', or 'NationalEmployee', triggers an alert and redirects, denying access.\r\n          if (!this.hasRole('Admin') && !this.hasRole('NationalAdmin') && !this.hasRole('NationalEmployee')) {\r\n            this.alertAndRedirect()\r\n            return { el: [error], level: 4 }\r\n          }\r\n          // For users with 'Admin' role, grants access to organizationadmin and districtlist elements with top-level access (level 0).\r\n          if (this.hasRole('Admin')) return { el: [organizationadmin, districtlist], level: 0 }\r\n          // Users with 'NationalAdmin' role or 'national Employee' role, also get access to nationalAdmin and districtlist elements with top-level access.\r\n          else return { el: [nationalAdmin, districtlist], level: 0 }\r\n        }\r\n\r\n        // Organization level listings\r\n        // this is for /admin/user, /admin/district, /admin/section, /admin/friendship, /admin/group, /admin/products\r\n        if (this.primary && !this.filter && !this.id) {\r\n          // forbid non-admins\r\n          if (!this.hasRole('Admin') && !this.hasRole('NationalAdmin') && !this.hasRole('NationalEmployee')) {\r\n            // allow FriendshipAdmins to access the listing too\r\n            if (this.primary === 'friendship' && this.hasAdminToFriendship(Number(this.jwtToken.DistrictMembership))) {\r\n              return { el: [friendshipselection], level: 0 }\r\n            }\r\n            this.alertAndRedirect()\r\n            return { el: [error], level: 4 }\r\n          }\r\n\r\n          var rv = []\r\n          // if the user has the 'Admin' role, grants access to organizationadmin element with top-level access.\r\n          if (this.hasRole('Admin')) rv = [organizationadmin]\r\n          // if the user has the 'NationalAdmin' role, grants access to nationalAdmin element with top-level access.\r\n          else if (this.hasRole('NationalAdmin')) rv = [nationalAdmin]\r\n          // if the user has the 'NationalEmployee' role, grants access to nationalEmployee element with top-level access.\r\n          else if (this.hasRole('NationalEmployee')) rv = [nationalEmployee]\r\n\r\n          if (this.primary === 'user') {\r\n            rv.push(usersearch)\r\n          } else if (this.primary === 'district') {\r\n            rv.push(districtlist)\r\n          } else if (this.primary === 'section') {\r\n            rv.push(sectionlist)\r\n          } else if (this.primary === 'friendship') {\r\n            rv.push(friendshipselection)\r\n          } else if (this.primary === 'group') {\r\n            rv.push(groupmasterlist)\r\n          } else if (this.primary === 'deleteprofile') {\r\n            rv.push(deleteprofilelist)\r\n          } else if (this.primary === 'products') {\r\n            rv.push(productadmin)\r\n          } else if (this.primary === 'externalforms') {\r\n            rv.push(externalforms)\r\n          } else if (this.primary === 'settings') {\r\n            rv.push(settings)\r\n          } else if (this.primary === 'employee') {\r\n            rv.push(usersearch)\r\n          }\r\n          return { el: rv, level: 0 }\r\n        }\r\n\r\n        /*\r\n          'editor' views, not all of these make sense\r\n        */\r\n        // for urls /admin/{primary}/{id}\r\n        // for example /admin/user/123, /admin/group/123, /admin/training/1\r\n        if (this.primary && this.id && !this.filter) {\r\n          // auth\r\n          let hasPermissions = this.hasRole('Admin')\r\n          if (!hasPermissions) {\r\n            switch (this.primary) {\r\n            case 'user':\r\n              // doesn't do a back end call to check - the back end will prevent loading\r\n              hasPermissions = this.hasRole('DistrictAdmin') || this.hasRole('Employee') || this.hasRole('J1') || this.hasRole('J2') || this.hasRole('NationalAdmin') || this.hasRole('NationalEmployee')\r\n              break\r\n            case 'group':\r\n              hasPermissions = true\r\n              break\r\n            case 'friendship':\r\n              hasPermissions = false // not a valid page\r\n              break\r\n            case 'training':\r\n              hasPermissions = this.hasRole('Admin') || this.hasRole('DistrictAdmin') || this.hasRole('NationalAdmin') || this.hasRole('FriendshipAdmin') || this.hasRole('DistrictFriendshipAdmin') || this.hasRole('FriendshipTrainer')\r\n              break\r\n            case 'products':\r\n              hasPermissions = false // not a valid page\r\n              break\r\n            case 'settings':\r\n              hasPermissions = this.hasRole('Admin') || this.hasRole('NationalAdmin')\r\n              break\r\n            default :\r\n              hasPermissions = false\r\n              break\r\n            }\r\n          }\r\n\r\n          if (!hasPermissions) {\r\n            this.alertAndRedirect()\r\n            return { el: rv, level: 0 }\r\n          }\r\n\r\n          if (this.primary === 'user') {\r\n            return { el: [usereditor], level: 3 }\r\n          } else if (this.primary === 'group') {\r\n            return { el: [groupdetail], level: 3 }\r\n          } else if (this.primary === 'training') {\r\n            return { el: [usersearch], level: 3 }\r\n          } else if (this.primary === 'settings') {\r\n            return { el: [settingsadmin], level: 3 }\r\n          } else if (this.primary === 'employee') {\r\n            return { el: [usereditor], level: 3 }\r\n          }\r\n        }\r\n\r\n        /*\r\n          filtered listings. sectionadmin components also contains editor for\r\n          section.\r\n        */\r\n        // aargh! For when filters are set, the primary switches round, so its /admin/{filter}/{id}/{primary}\r\n        // for example /admin/district/123/section, admin/section/9/user, admin/friendship/72/clients\r\n        if (this.primary && this.id && this.filter) {\r\n          var frv = []\r\n          if (this.filter === 'section') { // eg /admin/section/9/user\r\n            if (!this.hasAdminToSection(this.id, true)) {\r\n              this.alertAndRedirect()\r\n              return { el: [error], level: 4 }\r\n            }\r\n            frv.push(sectionadmin)\r\n          } else if (this.filter === 'district') { // eg /admin/district/1/section\r\n            if (!this.hasAdminToDistrict(this.id)) {\r\n              this.alertAndRedirect()\r\n              return { el: [error], level: 4 }\r\n            }\r\n            frv.push(districtadmin)\r\n          } else if (this.filter === 'friendship') { // eg /admin/friendship/6/clients\r\n            if (!this.hasAdminToFriendManagementGroup(this.id)) {\r\n              this.alertAndRedirect()\r\n              return { el: [error], level: 4 }\r\n            }\r\n            frv.push(friendshipadmin)\r\n          } else {\r\n            this.alertAndRedirect()\r\n            return { el: [error], level: 4 }\r\n          }\r\n\r\n          // these are for the additional components added into the pages above, eg /admin/section/123/user adds usersearch\r\n          // no need for auth because above should have caught that\r\n          if (this.primary === 'user') {\r\n            frv.push(usersearchCheck)\r\n          } else if (this.primary === 'group' && this.filter === 'section') {\r\n            frv.push(sectiongroups)\r\n          } else if (this.primary === 'group' && this.filter === 'district') {\r\n            frv.push(districtgroups)\r\n          } else if (this.primary === 'messages' && this.filter === 'section') {\r\n            frv.push(sectionmessages)\r\n          } else if (this.primary === 'messages' && this.filter === 'district') {\r\n            frv.push(districtmessages)\r\n          } else if (this.primary === 'section' && this.filter === 'district') {\r\n            frv.push(sectionlist)\r\n          } else if (this.primary === 'clients') {\r\n            frv.push(usersearch)\r\n          } else if (this.primary === 'volunteers') {\r\n            frv.push(usersearch)\r\n          } else if (this.primary === 'brokers') {\r\n            frv.push(usersearch)\r\n            frv.push(brokervolunteers)\r\n          } else if (this.primary === 'pools') {\r\n            frv.push(poolsadmin)\r\n          } else if (this.primary === 'roles') {\r\n            frv.push(currentroles)\r\n            frv.push(usersearch)\r\n          }\r\n\r\n          return { el: frv, level: this.filter === 'district' ? 1 : 2 }\r\n        }\r\n\r\n        this.alertAndRedirect()\r\n        return { el: [error], level: 'forbid' }\r\n      }\r\n    },\r\n    watch: {\r\n      primary (newVal) {\r\n        if (newVal === 'brokers') {\r\n          this.purpose = 5\r\n        }\r\n      }\r\n    },\r\n    mounted: function () {\r\n      var prev = this.$store.state.adminBack\r\n\r\n      if (!prev) {\r\n        prev = [null, null, null, null]\r\n      }\r\n      prev[this.state.level] = this.$route.path\r\n      for (var j = this.state.level + 1; j < prev.length; j++) {\r\n        prev[j] = null\r\n      }\r\n\r\n      if (this.state.level >= 1 && this.state.level <= 4) {\r\n        for (var i = this.state.level - 1; i >= 0; i--) {\r\n          if (prev[i]) {\r\n            this.from = prev[i]\r\n            break\r\n          }\r\n        }\r\n      }\r\n\r\n      this.$store.commit('setAdminBack', prev)\r\n      this.$bus.$on('request-admin-back-after-delete', this.handleBackRequest)\r\n    },\r\n    beforeDestroy: function () {\r\n      this.$bus.$off('request-admin-back-after-delete')\r\n    },\r\n    methods: {\r\n      validateAction: function (action) {\r\n        if (action) {\r\n          return this.legalActions.indexOf(action) >= 0\r\n        }\r\n        return false\r\n      },\r\n      handleBackRequest: function () {\r\n        if (this.from) {\r\n          this.$router.push(this.from)\r\n        } else {\r\n          if (this.hasRole('Admin') || this.hasRole('NationalAdmin') || this.hasRole('NationalEmployee')) {\r\n            this.$router.push('/admin/district')\r\n            return\r\n          }\r\n          if (this.hasRole('Employee')) {\r\n            this.$router.push('/admin/district/' + this.jwtToken.DistrictMembership + '/section')\r\n            return\r\n          }\r\n          if (this.hasRole('J1') || this.hasRole('J2')) {\r\n            this.$router.push('/admin/section/' + this.jwtToken.SectionMembership + '/user')\r\n          }\r\n        }\r\n      },\r\n      alertAndRedirect () {\r\n        this.showAlertPermissionDenied().then(() => {\r\n          this.$router.push('/profile')\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n  .comp-admin-page {\r\n\r\n    .nav-header {\r\n      background-color: $brand-grey1;\r\n      overflow-wrap: break-word;\r\n      margin-bottom: 30px;\r\n      border-bottom: solid 1px $brand-grey3;\r\n\r\n    .back {\r\n      color: $brand-black;\r\n      cursor: pointer;\r\n\r\n    svg {\r\n      color: $brand-red;\r\n      margin-right: 5px;\r\n    }\r\n\r\n    &:hover {\r\n      color: $brand-red;\r\n      text-decoration: none;\r\n    }\r\n    }\r\n    h3 {\r\n      color: $brand-red;\r\n    }\r\n  }\r\n\r\n  .back-link {\r\n      font-size: 18px;\r\n    }\r\n\r\n  .space-chevron {\r\n    padding-right: 6px;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Admin.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Admin.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Admin.vue?vue&type=template&id=51ccc1f2\"\nimport script from \"./Admin.vue?vue&type=script&lang=js\"\nexport * from \"./Admin.vue?vue&type=script&lang=js\"\nimport style0 from \"./Admin.vue?vue&type=style&index=0&id=51ccc1f2&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comp-friendshipgroups container\"},[_c('div',{staticClass:\"listing\"},_vm._l((_vm.groups),function(g,i){return _c('div',{key:i,staticClass:\"listing-row\"},[_c('router-link',{attrs:{\"to\":_vm.linkTo(g)}},[_vm._v(\" \"+_vm._s(g.split(':')[0])+\" \")])],1)}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-friendshipgroups container\">\r\n    <div class=\"listing\">\r\n      <div v-for=\"(g, i) in groups\" :key=\"i\" class=\"listing-row\">\r\n        <router-link :to=\"linkTo(g)\">\r\n          {{ g.split(':')[0] }}\r\n        </router-link>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'FriendshipGroups',\r\n    computed: {\r\n      isFriendshipAdmin: function () {\r\n        return this.hasRole('FriendshipAdmin')\r\n      },\r\n      isFriendshipGroupManager: function () {\r\n        return this.hasRole('FriendshipGroupManager')\r\n      },\r\n      isDistrictFriendshipAdmin: function () {\r\n        return this.hasRole('DistrictFriendshipAdmin')\r\n      },\r\n      groups: function () {\r\n        // This is the landing page from the header 'Ystävävälitys' link for FriendshipGroupManager, Friendship Broker and Net Friendship Broker roles.\r\n        // Just load the friendship and net friendship groups they are members of if they are in the above roles\r\n        var isFriendshipBroker = this.hasRole('FriendshipBroker')\r\n        var isNetFriendshipBroker = this.hasRole('NetFriendshipBroker')\r\n        var groups = []\r\n        var netGroups = []\r\n        var finalGroups = []\r\n\r\n        if (!this.isFriendshipAdmin && !this.isDistrictFriendshipAdmin && !isFriendshipBroker && !isNetFriendshipBroker && !this.isFriendshipGroupManager) return groups\r\n\r\n        groups = this.jwtToken.FriendshipGroups?.split(';')\r\n        netGroups = this.jwtToken.NetFriendshipGroups?.split(';')\r\n\r\n        if (isFriendshipBroker || this.isFriendshipAdmin || this.isDistrictFriendshipAdmin || this.isFriendshipGroupManager) {\r\n          finalGroups = finalGroups.concat(groups)\r\n        }\r\n\r\n        if (isNetFriendshipBroker) {\r\n          finalGroups = finalGroups.concat(netGroups)\r\n        }\r\n        return finalGroups\r\n      }\r\n    },\r\n    methods: {\r\n      linkTo: function (test) {\r\n        if (this.isFriendshipAdmin || this.isDistrictFriendshipAdmin || this.isFriendshipGroupManager) {\r\n          return '/admin/friendship/' + test.split(':')[1] + '/clients'\r\n        } else {\r\n          return '/friend/search/' + test.split(':')[1] + '/customer'\r\n        }\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .comp-friendshipgroups {\r\n    background: $brand-white;\r\n    padding: 15px;\r\n    .listing {\r\n      display: flex;\r\n      display: -ms-flexbox;\r\n      flex-direction: column;\r\n      -ms-flex-direction: column;\r\n\r\n      .listing-row {\r\n        padding: 10px 15px;\r\n        color: $brand-red;\r\n\r\n        &:nth-child(even) {\r\n          background: rgba(0,0,0,0.03);\r\n        }\r\n\r\n        a {\r\n          color: $brand-red;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipGroups.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FriendshipGroups.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FriendshipGroups.vue?vue&type=template&id=13da1333\"\nimport script from \"./FriendshipGroups.vue?vue&type=script&lang=js\"\nexport * from \"./FriendshipGroups.vue?vue&type=script&lang=js\"\nimport style0 from \"./FriendshipGroups.vue?vue&type=style&index=0&id=13da1333&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"group add col-12\"},[_c('backbar',{attrs:{\"title\":_vm.$t('groups.addVolunteer')}}),_c('div',{staticClass:\"container\"},[(_vm.group)?_c('div',{staticClass:\"form-container\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('groups.addPendingVolunteer')))]),_c('groupmemberpending',{attrs:{\"group\":_vm.group}})],1):_vm._e()]),_c('div',{staticClass:\"container results\"},[(_vm.group)?_c('div',{staticClass:\"form-container\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('groups.addMember')))]),_c('groupmemberadd',{attrs:{\"group\":_vm.group}})],1):_vm._e()])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .group.add {\r\n\r\n    .nav-header  {\r\n      margin-bottom: 30px;\r\n\r\n      h3 {\r\n        color: $brand-red;\r\n      }\r\n    }\r\n\r\n    .results {\r\n      margin-top: 20px;\r\n    }\r\n    .spr-searchbox {\r\n      border: 1px solid $brand-grey4;\r\n    }\r\n\r\n    .button-row {\r\n      margin-bottom: 40px;\r\n      .spr-button {\r\n        background: $brand-red;\r\n        color: #fff;\r\n      }\r\n    }\r\n    .spr-searchbox {\r\n      margin-bottom: 20px;\r\n    }\r\n    .list-group {\r\n      margin-bottom: 40px;\r\n    }\r\n\r\n    .results-row {\r\n      .loading {\r\n        position: absolute;\r\n        display: flex;\r\n        top: 0;\r\n        left: 0;\r\n        bottom: 0;\r\n        right: 0;\r\n        height: 100%;\r\n        width: 100%;\r\n        background-color:rgba(255, 255, 255, 0.8);\r\n\r\n        .spinner {\r\n          margin: auto;\r\n          color:$brand-red;\r\n        }\r\n      }\r\n      .user-row {\r\n        background: #fff;\r\n        margin-bottom: 5px;\r\n        padding: 15px;\r\n        border-bottom: 1px solid $brand-grey2;\r\n        .user {\r\n          .user-img {\r\n            float: left;\r\n            margin-right: 15px;\r\n          }\r\n          a {\r\n            color: $brand-red;\r\n            font-weight: bold;\r\n            text-transform: uppercase;\r\n          }\r\n        }\r\n        .portrait-size {\r\n          width: 50px;\r\n          height: 50px;\r\n        }\r\n      }\r\n    }\r\n  }\r\n</style>\r\n\r\n<template>\r\n  <div class=\"group add col-12\">\r\n    <backbar :title=\"$t('groups.addVolunteer')\" />\r\n    <div class=\"container\">\r\n      <div v-if=\"group\" class=\"form-container\">\r\n        <h4>{{ $t('groups.addPendingVolunteer') }}</h4>\r\n        <groupmemberpending :group=\"group\" />\r\n      </div>\r\n    </div>\r\n    <div class=\"container results\">\r\n      <div v-if=\"group\" class=\"form-container\">\r\n        <h4>{{ $t('groups.addMember') }}</h4>\r\n        <groupmemberadd :group=\"group\" />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import groupmemberadd from './GroupMemberAdd.vue'\r\n  import groupmemberpending from './GroupMemberPending.vue'\r\n  import backbar from '../BackBar.vue'\r\n\r\n  export default {\r\n    name: 'Newvolunteerform',\r\n    components: { groupmemberadd, groupmemberpending, backbar },\r\n    data () {\r\n      return {\r\n        group: {}\r\n      }\r\n    },\r\n    mounted () {\r\n      this.loadGroup()\r\n      this.$bus.$on('loadGroup', this.loadGroup)\r\n    },\r\n    beforeDestroy: function () {\r\n      this.$bus.$off('loadGroup')\r\n    },\r\n    methods: {\r\n      getDto (group) {\r\n        // group saving needs a simple group dto, not the detailed group\r\n        return {\r\n          id: group.id,\r\n          name: group.name,\r\n          description: group.description,\r\n          groupType: 2,\r\n          members: _.map(group.members, function (item) {\r\n            return item.id\r\n          }),\r\n          isAllLocations: group.isAllLocations\r\n        }\r\n      },\r\n      onSaveGroup () {\r\n        var self = this\r\n\r\n        var saveUrl = `${self.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupupdate[0]}`\r\n        this.$http.put(saveUrl, this.getDto(this.group)).then((resp) => {\r\n          self.$router.push(`/groups/group/${self.group.id}`)\r\n        })\r\n      },\r\n      loadGroup () {\r\n        var self = this\r\n\r\n        var groupId = Number(this.$route.params.groupid)\r\n        var url = `${self.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupgetbyid[0]}?id=${groupId}`\r\n        this.$http.get(url).then((resp) => {\r\n          self.group = resp.body\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddVolunteer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddVolunteer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AddVolunteer.vue?vue&type=template&id=4527daeb\"\nimport script from \"./AddVolunteer.vue?vue&type=script&lang=js\"\nexport * from \"./AddVolunteer.vue?vue&type=script&lang=js\"\nimport style0 from \"./AddVolunteer.vue?vue&type=style&index=0&id=4527daeb&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container group\"},[(_vm.group)?_c('div',[_c('div',{staticClass:\"row mobiletitle d-block d-lg-none\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.group.name))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12 col-md-8 group-list order-2\"},[_c('div',{staticClass:\"row list-header\"},[_c('div',{staticClass:\"col-7\"},[_c('h3',{staticClass:\"d-none d-md-block\"},[_vm._v(\" \"+_vm._s(_vm.group.name)+\" \")])]),_c('div',{staticClass:\"col-md-5 col-sm-12\"},[_c('div',{staticClass:\"d-flex justify-content-end\"},[(_vm.isGroupAdmin && _vm.isActionGroup)?_c('sprbutton',{staticClass:\"next-button\",attrs:{\"size\":4,\"title\":_vm.$t('groups.addVolunteer'),\"bordersize\":2,\"icon\":\"plus\",\"click-event\":\"click\"},on:{\"click\":_vm.onAddVolunteer}}):_vm._e()],1)])]),_c('volunteerslist',{attrs:{\"list\":_vm.volunteers,\"is-admin\":_vm.isGroupAdmin,\"is-loading\":_vm.isLoading,\"is-standard-group\":_vm.group.groupType === 2},on:{\"remove\":_vm.onRemoveVolunteer}})],1),_c('div',{staticClass:\"col-sm-12 col-md-4 group-side order-1\"},[_c('div',{staticClass:\"group-secondary\"},[_c('a',{staticClass:\"back\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript: void(0);\"},on:{\"click\":function($event){return _vm.$router.back()}}},[_c('font-awesome-icon',{staticClass:\"back\",attrs:{\"icon\":\"chevron-left\"}}),_vm._v(_vm._s(_vm.$t('volunteerForm.back'))+\" \")],1),_c('div',[_c('span',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.description'))+\" \")]),_c('div',[_vm._v(_vm._s(_vm.group.description))])]),(_vm.group.category)?_c('span',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.category'))+\" \")]):_vm._e(),_c('div',[_vm._v(_vm._s(_vm.category))]),(_vm.language)?_c('span',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.language'))+\" \")]):_vm._e(),_c('div',[_vm._v(_vm._s(_vm.language))]),(_vm.isActionGroup)?_c('div',[_c('div',{staticClass:\"grouporganizer\"},[_c('groupOrganizer',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('hasOptionalGroupOrganizer'),expression:\"'hasOptionalGroupOrganizer'\"}],attrs:{\"text-only\":true,\"hint\":_vm.$t('userAdmin.groupOrganizer'),\"name\":\"userAdmin.groupOrganizer\",\"value\":_vm.group.groupOrganizer,\"required\":false,\"is-valid\":!_vm.errors.has('userAdmin.groupOrganizer')},on:{\"input\":_vm.onGroupOrganizerChanged}})],1)]):_vm._e(),(_vm.hasExternalForm)?_c('div',[_c('div',[_c('label',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('externalForm.title')))]),_c('a',{attrs:{\"href\":_vm.group.externalForm.link,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.group.externalForm.name))])])]):_vm._e(),_c('span',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.messages'))+\" \")]),(_vm.group.id)?_c('div',{staticClass:\"allmessages\"},[_c('a',{attrs:{\"tabindex\":\"0\",\"href\":\"javascript: void(0);\"},on:{\"click\":_vm.toNotes}},[_vm._v(_vm._s(_vm.$t('groups.allMessages')))])]):_vm._e(),(_vm.isMember)?_c('div',[_c('span',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.actions'))+\" \")]),(_vm.canEditGroupDetails)?_c('div',[_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.viewGroup}},[_vm._v(_vm._s(_vm.$t('groups.edit')))])]):_vm._e(),_c('div',{staticClass:\"remove\"},[(_vm.canLeave)?_c('a',{attrs:{\"tabindex\":\"0\",\"href\":\"javascript: void(0);\"},on:{\"click\":_vm.removeFromGroup}},[_vm._v(_vm._s(_vm.$t('groups.unsubscribe')))]):_c('span',{staticClass:\"remove-disabled\",attrs:{\"title\":_vm.$t('groups.actionGroupUnSubForbidden')}},[_vm._v(_vm._s(_vm.$t('groups.unsubscribe')))]),_c('br'),(_vm.isGroupAdmin)?_c('a',{attrs:{\"tabindex\":\"0\",\"href\":\"javascript: void(0);\"},on:{\"click\":_vm.deactivateGroup}},[_vm._v(_vm._s(_vm.$t('groups.deactivate')))]):_vm._e()])]):_vm._e(),(_vm.isMemberPending)?_c('div',[_c('span',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.actions'))+\" \")]),(_vm.group.groupType == 1)?_c('a',{attrs:{\"tabindex\":\"0\",\"href\":\"javascript: void(0);\"},on:{\"click\":_vm.acceptInvitation}},[_vm._v(_vm._s(_vm.$t('groups.joinGroup')))]):_vm._e()]):_vm._e(),(_vm.isSaving)?_c('div',{staticClass:\"issaving\"},[_c('Loading')],1):_vm._e()])])])]):_c('div',{staticClass:\"loading\"},[_c('Loading')],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"list-group\"},[(_vm.isLoading)?_c('div',{staticClass:\"brand-red text-center col-12 my-5\"},[_c('loading')],1):_c('div',[_vm._l((_vm.orderedList),function(item){return _c('div',{key:item.id},[_c('volunteerview',{attrs:{\"volunteer\":item,\"admin\":_vm.isAdmin,\"is-standard-group\":_vm.isStandardGroup},on:{\"remove\":_vm.onRemove}})],1)}),(!_vm.list || _vm.list.length == 0)?_c('div',[_c('span',{staticClass:\"novolunteers\"},[_vm._v(_vm._s(_vm.$t('groups.noVolunteer')))])]):_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"volunteer-view my-2\"},[_c('div',{staticClass:\"col-12 grid-row\",on:{\"click\":_vm.clicked}},[_c('div',{staticClass:\"grid-img style-img\"},[_c('sprportrait',{staticClass:\"portrait-size\",style:(_vm.portraitStyle)})],1),_c('div',{staticClass:\"grid-name style-name\"},[(_vm.volunteer.isAdmin)?_c('span',{staticClass:\"isadmin\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"star\"}})],1):_vm._e(),_c('span',[_vm._v(_vm._s(_vm.volunteer.lastName)+\", \"+_vm._s(_vm.volunteer.firstName))]),_c('br'),_c('span',{staticClass:\"more-info\"},[_vm._v(_vm._s(_vm.section))])]),(_vm.admin && _vm.isStandardGroup)?_c('div',{staticClass:\"grid-zip style-zip\"},[(!_vm.volunteer.isAdmin && !_vm.isCurrentUser(_vm.volunteer.id))?_c('span',{staticClass:\"action-link\",on:{\"click\":_vm.makeGroupAdmin}},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.makeGroupAdmin'))+\" \")]):_vm._e(),(_vm.volunteer.isAdmin && !_vm.isCurrentUser(_vm.volunteer.id))?_c('span',{staticClass:\"action-link\",on:{\"click\":_vm.removeGroupAdmin}},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.removeGroupAdmin'))+\" \")]):_vm._e(),(!_vm.isCurrentUser(_vm.volunteer.id))?_c('span',{staticClass:\"action-link\",on:{\"click\":function($event){_vm.showRemove = !_vm.showRemove}}},[_vm._v(\" \"+_vm._s(_vm.$t('groups.removeVolunteer'))+\" \")]):_vm._e()]):_vm._e(),(_vm.admin && !_vm.isStandardGroup)?_c('div',{staticClass:\"grid-zip style-zip\"},[(_vm.open)?_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-down\",\"aria-hidden\":\"true\"}}):_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"chevron-up\",\"aria-hidden\":\"true\"}})],1):_vm._e()]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.open),expression:\"open\"}],staticClass:\"col-12 info\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-9 col-xs-12\"},[_c('dl',[_c('dd',[_vm._v(_vm._s(_vm.profileState))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.interestEditorHeader')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteerInterests))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.skillEditorHeader')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteerSkills))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.nativeLanguage')))]),_c('dd',[_vm._v(_vm._s(_vm.normalizeTranslation(_vm.volunteer.nativeLanguage)))]),_c('dt',[_vm._v(_vm._s(_vm.$t('nonIdentProfileForm.languageSpoken')))]),_c('dd',[_vm._v(_vm._s(_vm.spokenLanguages))]),_c('dt',[_vm._v(_vm._s(_vm.$t('adminUserEditor.workingZipCode')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteer.workingZipCode))]),_c('dt',[_vm._v(_vm._s(_vm.$t('customerSearch.myTimes')))]),_c('dd',[_vm._v(_vm._s(_vm.availabilityTimes))]),_c('dt',[_vm._v(_vm._s(_vm.$t('transportation.title')))]),_c('dd',[_vm._v(_vm._s(_vm.transportation))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.travelTime')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteer.travelTime)+\" min\")]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.email')))]),_c('dd',[_vm._v(_vm._s(_vm.volunteer.email))]),_c('dt',[_vm._v(_vm._s(_vm.$t('profile.phoneNumber')))]),_c('dd',[_vm._v(_vm._s(_vm.phoneNumber))])])]),(_vm.admin)?_c('div',{staticClass:\"col-3 col-xs-12 text-right buttons\"},[(!_vm.isCurrentUser(_vm.volunteer.id))?_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('groups.removeVolunteer'),\"click-event\":\"removeVolunteer\"},on:{\"removeVolunteer\":function($event){_vm.showRemove = !_vm.showRemove}}}):_vm._e()],1):_vm._e()])]),_c('b-modal',{attrs:{\"title\":_vm.$t('groups.youSure')},model:{value:(_vm.showRemove),callback:function ($$v) {_vm.showRemove=$$v},expression:\"showRemove\"}},[_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('groups.confirmUserDelete'))+\" \"+_vm._s(_vm.volunteer.lastName)+\", \"+_vm._s(_vm.volunteer.firstName)+\"? \")]),_c('mfoot',{attrs:{\"slot\":\"modal-footer\",\"buttons\":_vm.modalButtons()},on:{\"cancel\":function($event){_vm.showRemove = !_vm.showRemove},\"remove\":_vm.onRemove},slot:\"modal-footer\"})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"spr-modal-footer container-fluid\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',_vm._l((_vm.buttons),function(b,index){return _c('button',{key:index,staticClass:\"btn spr-roundbox-3 cap-label buttons float-right ml-2\",on:{\"click\":function($event){return _vm.onClick(b.event)}}},[_vm._v(\" \"+_vm._s(b.text)+\" \")])}),0)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\">\r\n@import \"../../assets/scss/_variables.scss\";\r\n.spr-modal-footer {\r\n  .buttons {\r\n    border: 2px solid $brand-red;\r\n    background: $brand-white;\r\n\r\n    padding-top: 10px;\r\n    padding-bottom: 10px;\r\n\r\n    color: $brand-red;\r\n\r\n    &:hover {\r\n      color: $brand-white;\r\n      background: $brand-red;\r\n    }\r\n  }\r\n}\r\n</style>\r\n\r\n<template>\r\n  <!-- BACK BUTTON -->\r\n  <div class=\"spr-modal-footer container-fluid\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div>\r\n          <button v-for=\"(b, index) in buttons\"\r\n                  :key=\"index\"\r\n                  class=\"btn spr-roundbox-3 cap-label buttons float-right ml-2\"\r\n                  @click=\"onClick(b.event)\"\r\n          >\r\n            {{ b.text }}\r\n          </button>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'ModalFooter',\r\n    props: {\r\n      buttons: {\r\n        type: Array,\r\n        default: () => []\r\n      }\r\n    },\r\n    methods: {\r\n      onClick: function (val) {\r\n        this.$emit(val)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ModalFooter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ModalFooter.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ModalFooter.vue?vue&type=template&id=30b79332\"\nimport script from \"./ModalFooter.vue?vue&type=script&lang=js\"\nexport * from \"./ModalFooter.vue?vue&type=script&lang=js\"\nimport style0 from \"./ModalFooter.vue?vue&type=style&index=0&id=30b79332&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"volunteer-view my-2\">\r\n    <div class=\"col-12 grid-row\" @click=\"clicked\">\r\n      <div class=\"grid-img style-img\">\r\n        <sprportrait :style=\"portraitStyle\"\r\n                     class=\"portrait-size\"\r\n        />\r\n      </div>\r\n      <div class=\"grid-name style-name\">\r\n        <span v-if=\"volunteer.isAdmin\" class=\"isadmin\"><font-awesome-icon icon=\"star\" /></span>\r\n        <span>{{ volunteer.lastName }}, {{ volunteer.firstName }}</span><br>\r\n        <span class=\"more-info\">{{ section }}</span>\r\n      </div>\r\n      <div v-if=\"admin && isStandardGroup\" class=\"grid-zip style-zip\">\r\n        <span v-if=\"!volunteer.isAdmin && !isCurrentUser(volunteer.id)\" class=\"action-link\" @click=\"makeGroupAdmin\">\r\n          {{ $t('userAdmin.makeGroupAdmin') }}\r\n        </span>\r\n        <span v-if=\"volunteer.isAdmin && !isCurrentUser(volunteer.id)\" class=\"action-link\" @click=\"removeGroupAdmin\">\r\n          {{ $t('userAdmin.removeGroupAdmin') }}\r\n        </span>\r\n        <span v-if=\"!isCurrentUser(volunteer.id)\" class=\"action-link\" @click=\"showRemove = !showRemove\">\r\n          {{ $t('groups.removeVolunteer') }}\r\n        </span>\r\n      </div>\r\n      <div v-if=\"admin && !isStandardGroup\" class=\"grid-zip style-zip\">\r\n        <font-awesome-icon v-if=\"open\" icon=\"chevron-down\" class=\"brand-red\" aria-hidden=\"true\" />\r\n        <font-awesome-icon v-else icon=\"chevron-up\" class=\"brand-red\" aria-hidden=\"true\" />\r\n      </div>\r\n    </div>\r\n\r\n    <div v-show=\"open\" class=\"col-12 info\">\r\n      <div class=\"row\">\r\n        <div class=\"col-md-9 col-xs-12\">\r\n          <dl>\r\n            <dd>{{ profileState }}</dd>\r\n            <dt>{{ $t('profile.interestEditorHeader') }}</dt>\r\n            <dd>{{ volunteerInterests }}</dd>\r\n            <dt>{{ $t('profile.skillEditorHeader') }}</dt>\r\n            <dd>{{ volunteerSkills }}</dd>\r\n            <dt>{{ $t('profile.nativeLanguage') }}</dt>\r\n            <dd>{{ normalizeTranslation(volunteer.nativeLanguage) }}</dd>\r\n            <dt>{{ $t('nonIdentProfileForm.languageSpoken') }}</dt>\r\n            <dd>{{ spokenLanguages }}</dd>\r\n            <dt>{{ $t('adminUserEditor.workingZipCode') }}</dt>\r\n            <dd>{{ volunteer.workingZipCode }}</dd>\r\n            <dt>{{ $t('customerSearch.myTimes') }}</dt>\r\n            <dd>{{ availabilityTimes }}</dd>\r\n            <dt>{{ $t('transportation.title') }}</dt>\r\n            <dd>{{ transportation }}</dd>\r\n            <dt>{{ $t('profile.travelTime') }}</dt>\r\n            <dd>{{ volunteer.travelTime }} min</dd>\r\n            <dt>{{ $t('profile.email') }}</dt>\r\n            <dd>{{ volunteer.email }}</dd>\r\n            <dt>{{ $t('profile.phoneNumber') }}</dt>\r\n            <dd>{{ phoneNumber }}</dd>\r\n          </dl>\r\n        </div>\r\n        <div v-if=\"admin\" class=\"col-3 col-xs-12 text-right buttons\">\r\n          <sprbutton v-if=\"!isCurrentUser(volunteer.id)\"\r\n                     type=\"primary\"\r\n                     :size=\"4\"\r\n                     :title=\"$t('groups.removeVolunteer')\"\r\n                     class=\"spr-redborder button-width\"\r\n                     click-event=\"removeVolunteer\"\r\n                     @removeVolunteer=\"showRemove = !showRemove\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <b-modal v-model=\"showRemove\"\r\n             :title=\"$t('groups.youSure')\"\r\n    >\r\n      <div>\r\n        {{ $t('groups.confirmUserDelete') }} {{ volunteer.lastName }}, {{ volunteer.firstName }}?\r\n      </div>\r\n      <mfoot slot=\"modal-footer\"\r\n             :buttons=\"modalButtons()\"\r\n             @cancel=\"showRemove = !showRemove\"\r\n             @remove=\"onRemove\"\r\n      />\r\n    </b-modal>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprportrait from '../SPRPortrait.vue'\r\n  import mfoot from '../modals/ModalFooter.vue'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import anonPortrait from '../../assets/img/anon-portrait.png'\r\n  import bitmaskhelper from '@/helpers/bitmaskhelper'\r\n\r\n  export default {\r\n    name: 'Volunteersview',\r\n    components: { sprbutton, sprportrait, mfoot },\r\n    mixins: [enumhelper],\r\n    props: {\r\n      volunteer: {\r\n        type: Object,\r\n        required: true\r\n      },\r\n      admin: {\r\n        type: Boolean,\r\n        default: true\r\n      },\r\n      isStandardGroup: {\r\n        type: Boolean,\r\n        default: true\r\n      }\r\n    },\r\n    data: function () {\r\n      return {\r\n        showRemove: false,\r\n        open: false\r\n      }\r\n    },\r\n    computed: {\r\n      section () {\r\n        var self = this\r\n        var section = _.find(this.$store.state.sections, (s) => {\r\n          return s.id === self.volunteer.sectionId\r\n        })\r\n        return section ? section.name : ''\r\n      },\r\n      portraitStyle () {\r\n        var port = (this.volunteer && this.volunteer.portrait && this.volunteer.portrait !== '') ? this.volunteer.portrait : anonPortrait\r\n        return 'background: url(' + port + '); background-size: cover; background-position: center center;'\r\n      },\r\n      profileState: function () {\r\n        switch (this.volunteer.profileState) {\r\n        case 1:\r\n          return this.$t('profile.activeOpen')\r\n        case 2:\r\n          return this.$t('profile.activeNoContact')\r\n        case 3:\r\n          return this.$t('profile.activeNoNew')\r\n        case 4:\r\n          return this.$t('profile.inactive')\r\n        }\r\n        return null\r\n      },\r\n      volunteerInterests: function () {\r\n        return this.parseArray(this.volunteer.areasOfInterest, this.$store.state.profileAreasOfInterest, 'interest') || '-'\r\n      },\r\n      volunteerSkills: function () {\r\n        return this.parseArray(this.volunteer.personalSkills, this.$store.state.profilePersonalSkills, 'skills') || '-'\r\n      },\r\n      spokenLanguages: function () {\r\n        if (this.volunteer.spokenLanguages && this.volunteer.spokenLanguages.length) {\r\n          const self = this\r\n          const langs = []\r\n          this.volunteer.spokenLanguages.forEach(function (l) {\r\n            langs.push(self.normalizeTranslation(l))\r\n          })\r\n          return langs.join(', ')\r\n        }\r\n        return '-'\r\n      },\r\n      transportation: function () {\r\n        return this.parseArray(this.volunteer.transportation, this.$store.state.transportation, 'transportation') || '-'\r\n      },\r\n      availabilityTimes: function () {\r\n        if (!this.volunteer.availabilityTimes) return []\r\n        const bmArr = bitmaskhelper.bitmaskToArray(bitmaskhelper.translateEnumsToBitmask(this.volunteer.availabilityTimes))\r\n        //return this.parseArray(this.volunteer.availabilityTimes, this.$store.state.availabilityTimes, 'availabilityTimes') || '-'\r\n        // @ts-ignore cannot find mixins\r\n        return this.parseArray(bmArr, this.$store.state.availabilityTimes, 'availabilityTimes') || '-'\r\n      },\r\n      phoneNumber: function () {\r\n        return this.volunteer.phone || '-'\r\n      }\r\n    },\r\n    mounted: function () {\r\n      this.$bus.$on('clicked-search-result', this.handleClicked)\r\n    },\r\n    methods: {\r\n      modalButtons: function () {\r\n        return [{ text: this.$t('groups.removeVolunteer'), event: 'remove' }, { text: this.$t('groups.cancel'), event: 'cancel' }]\r\n      },\r\n      onRemove: function () {\r\n        this.showRemove = false\r\n        this.$emit('remove', this.volunteer)\r\n      },\r\n      clicked: function () {\r\n        if (this.admin && !this.showRemove && !this.isStandardGroup) {\r\n          this.open = !this.open\r\n        }\r\n      },\r\n      makeGroupAdmin: function () {\r\n        this.$bus.$emit('makeGroupAdmin', this.volunteer)\r\n      },\r\n      removeGroupAdmin: function () {\r\n        this.$bus.$emit('removeGroupAdmin', this.volunteer)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .buttons {\r\n    padding-bottom: 15px;\r\n  }\r\n\r\n  .info{\r\n    margin-top: 15px;\r\n  }\r\n\r\n  .volunteer-view {\r\n    background: $brand-white;\r\n    border: 2px solid $brand-white;\r\n    &:hover\r\n  {\r\n    border: 2px solid $brand-red;\r\n  }\r\n\r\n  .portrait-size {\r\n    height: 40px;\r\n    width: 40px;\r\n    margin: 10px;\r\n  }\r\n\r\n  .grid-row {\r\n    display: grid;\r\n    display: -ms-grid;\r\n    grid-template-rows: 60px;\r\n    -ms-grid-rows: 60px;\r\n    grid-template-columns: 60px 1fr 200px;\r\n    -ms-grid-columns: 60px 1fr 200px;\r\n  }\r\n\r\n  .grid-img {\r\n    grid-row: 1;\r\n    -ms-grid-row: 1;\r\n    grid-column: 1;\r\n    -ms-grid-column: 1;\r\n  }\r\n\r\n  .more-info {\r\n    color: $brand-grey10;\r\n    text-transform: none;\r\n  }\r\n\r\n  .grid-name {\r\n    grid-row: 1;\r\n    -ms-grid-row: 1;\r\n    grid-column: 2;\r\n    -ms-grid-column: 2;\r\n  }\r\n\r\n  .grid-zip {\r\n    grid-row: 1;\r\n    -ms-grid-row: 1;\r\n    grid-column: 3;\r\n    -ms-grid-column: 3;\r\n  }\r\n\r\n  .style-zip {\r\n    padding-top: 10px;\r\n    text-align: right;\r\n    span\r\n\r\n  {\r\n    line-height: 17px;\r\n    overflow-wrap: break-word;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    max-width: 100%;\r\n  }\r\n\r\n  }\r\n\r\n  @media (max-width: $media-sm-max) {\r\n    .grid-name {\r\n      grid-row: 2;\r\n      -ms-grid-row: 2;\r\n      grid-column-start: 1;\r\n      grid-column-end: 4;\r\n      grid-column: 1;\r\n      -ms-grid-column: 1;\r\n      -ms-grid-column-span: 3;\r\n    }\r\n    .style-name {\r\n      padding-top: 0 !important;\r\n    }\r\n\r\n    .text-right {\r\n      text-align: left !important;\r\n    }\r\n  }\r\n\r\n  .style-name {\r\n    letter-spacing: 0.3px;\r\n    font-weight: 700;\r\n    color: $brand-red;\r\n    text-transform: uppercase;\r\n    font-family: \"Signa-Light\", Sans-Serif;\r\n    overflow: hidden;\r\n    white-space: nowrap;\r\n    text-overflow: ellipsis;\r\n    max-width: 100%;\r\n    padding-top: 10px;\r\n  }\r\n\r\n  .isadmin {\r\n    color: #84a763;\r\n  }\r\n\r\n  .style-img {\r\n    line-height: 60px;\r\n  }\r\n\r\n  .action-link {\r\n    cursor: pointer;\r\n    &:hover\r\n  {\r\n    text-decoration: underline;\r\n  }\r\n  }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteersView.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteersView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VolunteersView.vue?vue&type=template&id=da6a0d2a&scoped=true\"\nimport script from \"./VolunteersView.vue?vue&type=script&lang=js\"\nexport * from \"./VolunteersView.vue?vue&type=script&lang=js\"\nimport style0 from \"./VolunteersView.vue?vue&type=style&index=0&id=da6a0d2a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"da6a0d2a\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"list-group\">\r\n    <div v-if=\"isLoading\" class=\"brand-red text-center col-12 my-5\">\r\n      <loading />\r\n    </div>\r\n    <div v-else>\r\n      <div v-for=\"(item) in orderedList\" :key=\"item.id\">\r\n        <volunteerview :volunteer=\"item\" :admin=\"isAdmin\" :is-standard-group=\"isStandardGroup\" @remove=\"onRemove\" />\r\n      </div>\r\n      <div v-if=\"!list || list.length == 0\">\r\n        <span class=\"novolunteers\">{{ $t('groups.noVolunteer') }}</span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import loading from '../SPRLoading.vue'\r\n  import volunteerview from './VolunteersView.vue'\r\n\r\n  export default {\r\n    name: 'VolunteerList',\r\n    components: { loading, volunteerview },\r\n    props: {\r\n      list: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      isAdmin: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      isLoading: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      isStandardGroup: {\r\n        type: Boolean,\r\n        default: true\r\n      }\r\n    },\r\n    computed: {\r\n      orderedList () {\r\n        return _.orderBy(this.list, [volunteer => volunteer.firstName.toLowerCase()])\r\n      }\r\n    },\r\n    methods: {\r\n      onRemove (volunteer) {\r\n        this.$emit('remove', volunteer)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import \"../../assets/scss/_variables.scss\";\r\n  .novolunteers {\r\n    display:block;\r\n    margin:0 auto;\r\n    text-align:center;\r\n    margin-top: 40px;\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VolunteerList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VolunteerList.vue?vue&type=template&id=0bfde75c&scoped=true\"\nimport script from \"./VolunteerList.vue?vue&type=script&lang=js\"\nexport * from \"./VolunteerList.vue?vue&type=script&lang=js\"\nimport style0 from \"./VolunteerList.vue?vue&type=style&index=0&id=0bfde75c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"0bfde75c\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"container group\">\r\n    <div v-if=\"group\">\r\n      <div class=\"row mobiletitle d-block d-lg-none\">\r\n        <div class=\"col-12\">\r\n          <h3>{{ group.name }}</h3>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-sm-12 col-md-8 group-list order-2\">\r\n          <div class=\"row list-header\">\r\n            <div class=\"col-7\">\r\n              <h3 class=\"d-none d-md-block\">\r\n                {{ group.name }}\r\n              </h3>\r\n            </div>\r\n            <div class=\"col-md-5 col-sm-12\">\r\n              <div class=\"d-flex justify-content-end\">\r\n                <sprbutton\r\n                  v-if=\"isGroupAdmin && isActionGroup\"\r\n                  :size=\"4\"\r\n                  :title=\"$t('groups.addVolunteer')\"\r\n                  :bordersize=\"2\"\r\n                  class=\"next-button\"\r\n                  icon=\"plus\"\r\n                  click-event=\"click\"\r\n                  @click=\"onAddVolunteer\"\r\n                />\r\n              </div>\r\n            </div>\r\n          </div>\r\n          <volunteerslist :list=\"volunteers\" :is-admin=\"isGroupAdmin\" :is-loading=\"isLoading\" :is-standard-group=\"group.groupType === 2\" @remove=\"onRemoveVolunteer\" />\r\n        </div>\r\n        <div class=\"col-sm-12 col-md-4 group-side order-1\">\r\n          <div class=\"group-secondary\">\r\n            <a class=\"back\" tabindex=\"0\" href=\"javascript: void(0);\" @click=\"$router.back()\">\r\n              <font-awesome-icon icon=\"chevron-left\" class=\"back\" />{{ $t('volunteerForm.back') }}\r\n            </a>\r\n            <div>\r\n              <span class=\"cap-label\">\r\n                {{ $t('groups.description') }}\r\n              </span>\r\n              <div>{{ group.description }}</div>\r\n            </div>\r\n            <span v-if=\"group.category\" class=\"cap-label\">\r\n              {{ $t('groups.category') }}\r\n            </span>\r\n            <div>{{ category }}</div>\r\n            <!-- Language -->\r\n            <span v-if=\"language\" class=\"cap-label\">\r\n              {{ $t('groups.language') }}\r\n            </span>\r\n            <div>{{ language }}</div>\r\n            <!-- Group Organizer -->\r\n            <div v-if=\"isActionGroup\">\r\n              <div class=\"grouporganizer\">\r\n                <groupOrganizer\r\n                  v-validate=\"'hasOptionalGroupOrganizer'\"\r\n                  :text-only=\"true\"\r\n                  :hint=\"$t('userAdmin.groupOrganizer')\"\r\n                  name=\"userAdmin.groupOrganizer\"\r\n                  :value=\"group.groupOrganizer\"\r\n                  :required=\"false\"\r\n                  :is-valid=\"!errors.has('userAdmin.groupOrganizer')\"\r\n                  @input=\"onGroupOrganizerChanged\"\r\n                />\r\n              </div>\r\n            </div>\r\n            <div v-if=\"hasExternalForm\">\r\n              <div>\r\n                <label class=\"cap-label\">{{ $t('externalForm.title') }}</label>\r\n                <a :href=\"group.externalForm.link\" target=\"_blank\">{{ group.externalForm.name }}</a>\r\n              </div>\r\n            </div>\r\n            <span class=\"cap-label\">\r\n              {{ $t('groups.messages') }}\r\n            </span>\r\n            <div v-if=\"group.id\" class=\"allmessages\">\r\n              <a tabindex=\"0\" href=\"javascript: void(0);\" @click=\"toNotes\">{{ $t('groups.allMessages') }}</a>\r\n            </div>\r\n            <div v-if=\"isMember\">\r\n              <span class=\"cap-label\">\r\n                {{ $t('groups.actions') }}\r\n              </span>\r\n              <div v-if=\"canEditGroupDetails\">\r\n                <a href=\"javascript:void(0)\" @click=\"viewGroup\">{{ $t('groups.edit') }}</a>\r\n              </div>\r\n              <div class=\"remove\">\r\n                <a v-if=\"canLeave\" tabindex=\"0\" href=\"javascript: void(0);\" @click=\"removeFromGroup\">{{ $t('groups.unsubscribe') }}</a>\r\n                <span v-else class=\"remove-disabled\" :title=\"$t('groups.actionGroupUnSubForbidden')\">{{ $t('groups.unsubscribe') }}</span>\r\n                <br>\r\n                <a v-if=\"isGroupAdmin\" tabindex=\"0\" href=\"javascript: void(0);\" @click=\"deactivateGroup\">{{ $t('groups.deactivate') }}</a>\r\n              </div>\r\n            </div>\r\n            <div v-if=\"isMemberPending\">\r\n              <span class=\"cap-label\">\r\n                {{ $t('groups.actions') }}\r\n              </span>\r\n              <a v-if=\"group.groupType == 1\" tabindex=\"0\" href=\"javascript: void(0);\" @click=\"acceptInvitation\">{{ $t('groups.joinGroup') }}</a>\r\n            </div>\r\n            <div v-if=\"isSaving\" class=\"issaving\">\r\n              <Loading />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div v-else class=\"loading\">\r\n      <Loading />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import volunteerslist from './VolunteerList.vue'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import groupOrganizer from '../SPRGroupOrganizersDropdown.vue'\r\n  import Loading from '../SPRLoading.vue'\r\n\r\n  import { Validator } from 'vee-validate'\r\n  import hasOptionalGroupOrganizer from '../../mixins/validator-hasOptionalGroupOrganizer.js'\r\n  import { GroupDetailDto, GroupDetailLightDto, GroupPublicProfileDto, ExternalFormUpdateDto, GroupPublicProfileLightDto } from '@/types'\r\n  import { HttpResponse } from 'vue-resource/types/vue_resource'\r\n\r\n  Validator.extend('hasOptionalGroupOrganizer', hasOptionalGroupOrganizer)\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    group: GroupDetailDto | GroupDetailLightDto | undefined,\r\n    externalForm: ExternalFormUpdateDto | undefined,\r\n    isLoading: boolean,\r\n    isSaving: boolean,\r\n    isGroupAdmin: boolean,\r\n    groupId: number | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'Group',\r\n    components: { sprbutton, volunteerslist, groupOrganizer, Loading },\r\n    mixins: [enumhelper],\r\n    data (): TemplateComponentData {\r\n      return {\r\n        isLoading: false,\r\n        isSaving: false,\r\n        group: undefined,\r\n        externalForm: undefined,\r\n        isGroupAdmin: false,\r\n        groupId: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      isGroupMember (): boolean {\r\n        var profile = this.$store.state.profile\r\n        return _.includes(this.group?.members, profile.profileId)\r\n      },\r\n      canLeave (): boolean {\r\n        if (!this.group) {\r\n          return false\r\n        }\r\n        var result = this.group.groupType !== 1\r\n        if (this.isMember) {\r\n          if (!this.isGroupAdmin) {\r\n            result = true\r\n          }\r\n        }\r\n        return result\r\n      },\r\n      volunteers (): Array<GroupPublicProfileDto | GroupPublicProfileLightDto> {\r\n        if (!this.group || !this.group.members) return []\r\n\r\n        // @ts-ignore cannot find mixins\r\n        if (this.isGroupAdmin || this.hasRole('Admin')) {\r\n          return this.group.members as GroupPublicProfileDto[]\r\n        } else {\r\n          return this.group.members as GroupPublicProfileLightDto[]\r\n        }\r\n      },\r\n      category (): string {\r\n        // @ts-ignore cannot find mixins\r\n        return this.getEventCategoriesTranslation(this.group.category)\r\n      },\r\n      language (): boolean {\r\n        // @ts-ignore - ts intellisense not finding mixins\r\n        return this.getLanguagesMaskTranslation(this.group?.languages)\r\n      },\r\n      isMember (): boolean {\r\n        if (!this.group) {\r\n          return false\r\n        }\r\n        var self = this\r\n        return _.find(this.group.members, function (m) {\r\n          return m.id === self.$store.state.profile.profileId\r\n        }) !== undefined\r\n      },\r\n      isMemberPending (): boolean {\r\n        if (!this.group) {\r\n          return false\r\n        }\r\n        var self = this\r\n        return _.find(this.group.pendingMembers, function (m) {\r\n          return m.id === self.$store.state.profile.profileId\r\n        }) !== undefined\r\n      },\r\n      isActionGroup (): boolean {\r\n        return this.group?.groupType === 1\r\n      },\r\n      hasExternalForm (): boolean {\r\n        return this.group?.externalForm !== null\r\n      },\r\n      canEditGroupDetails (): boolean {\r\n        // if user is either Admin, NationalAdmin, NationalEmployee, or Employee or J1 inside correct district or section, all good.\r\n        // @ts-ignore cannot find mixins\r\n        if (this.hasRole('Admin') || this.hasRole('NationalAdmin') || this.hasRole('NationalEmployee')) return true\r\n        // @ts-ignore cannot find mixins\r\n        if (this.hasRole('Employee') && (this.group && this.group.section && this.hasClaim(this.group.section.districtId.toString(), 'DistrictMembership'))) return true\r\n        // @ts-ignore cannot find mixins\r\n        if ((this.hasRole('J1') || this.hasRole('J2')) && this.group && this.group.section && this.hasClaim(this.group.section.id.toString(), 'SectionMembership')) return true\r\n\r\n        // if its an action group, only the users above can edit\r\n        if (this.group) {\r\n          return this.isGroupAdmin\r\n        }\r\n\r\n        return false\r\n      }\r\n    },\r\n    mounted (): void {\r\n      this.groupId = parseInt(this.$route.params.id)\r\n      var url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupisadmin[0]}?groupId=${this.groupId}`\r\n      this.$http.get(url).then((resp) => {\r\n        this.isGroupAdmin = resp.data\r\n        this.loadGroup()\r\n      })\r\n      this.$bus.$on('makeGroupAdmin', this.makeGroupAdmin)\r\n      this.$bus.$on('removeGroupAdmin', this.removeGroupAdmin)\r\n    },\r\n    beforeDestroy (): void {\r\n      this.$bus.$off('makeGroupAdmin', this.makeGroupAdmin)\r\n      this.$bus.$off('removeGroupAdmin', this.removeGroupAdmin)\r\n    },\r\n    methods: {\r\n      viewGroup () {\r\n        if (this.canEditGroupDetails) this.$router.push(`/admin/group/${this.group?.id}`)\r\n        return false\r\n      },\r\n      deactivateGroup (): void {\r\n        if (!this.group) {\r\n          return\r\n        }\r\n        if (confirm(this.$t('groups.deactivationConfirmation').toString())) {\r\n          this.group.isActive = false\r\n          this.updateGroup().then(s => {\r\n            this.$router.push('/')\r\n          })\r\n        }\r\n      },\r\n      onGroupOrganizerChanged (groupOrganizer): void {\r\n        if (!this.group) {\r\n          return\r\n        }\r\n        this.group.groupOrganizer = groupOrganizer\r\n      },\r\n      makeGroupAdmin (volunteer): void {\r\n        if (!this.group) {\r\n          return\r\n        }\r\n        var url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupmakeadmin[0]\r\n        var groupSectionDto = {\r\n          sectionId: this.group.section.id,\r\n          groupId: this.group.id,\r\n          profileId: volunteer.id\r\n        }\r\n        this.$http.put(url, groupSectionDto).then((resp) => {\r\n          this.loadGroup()\r\n        })\r\n      },\r\n      removeGroupAdmin (volunteer): void {\r\n        if (!this.group) {\r\n          return\r\n        }\r\n        var url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupremoveadmin[0]\r\n        var groupSectionDto = {\r\n          sectionId: this.group.section.id,\r\n          groupId: this.group.id,\r\n          profileId: volunteer.id\r\n        }\r\n        this.$http.put(url, groupSectionDto).then((resp) => {\r\n          this.loadGroup()\r\n        })\r\n      },\r\n      onAddVolunteer (): void {\r\n        this.$router.push(`/groups/group/${this.group?.id}/addvolunteer`)\r\n      },\r\n      onRemoveVolunteer (volunteer): void {\r\n        const payload = { payload1: this.group?.id, payload2: [volunteer.id] }\r\n        const uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupremmembers[0]\r\n        this.$http.post(uri, payload).then(s => {\r\n          this.loadGroup()\r\n        })\r\n      },\r\n      removeFromGroup (): void {\r\n        if (!this.group) {\r\n          return\r\n        }\r\n        var url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupleave[0]}`.replace('{0}', this.group.id.toString())\r\n        this.$http.put(url, null)\r\n          // @ts-ignore cannot find mixins\r\n          .then(() => this.getShortToken())\r\n          .then((resp) => {\r\n            this.$router.push('/front')\r\n          })\r\n      },\r\n      acceptInvitation (): void {\r\n        if (!this.group) {\r\n          return\r\n        }\r\n        var url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupacceptinvitation[0]}`.replace('{0}', this.group.id.toString())\r\n        this.$http.put(url, null).then((resp) => {\r\n          this.loadGroup()\r\n        })\r\n      },\r\n      onActivateGroup (): void {\r\n        if (!this.group) {\r\n          return\r\n        }\r\n        this.group.isActive = true\r\n        this.isSaving = true\r\n        this.updateGroup().then(x => {\r\n          this.isSaving = false\r\n        })\r\n      },\r\n      onDeactivateGroup (): void {\r\n        if (!this.group) {\r\n          return\r\n        }\r\n        this.group.isActive = false\r\n        this.isSaving = true\r\n        this.updateGroup().then(x => {\r\n          this.isSaving = false\r\n        })\r\n      },\r\n      loadGroup (): void {\r\n        var groupId = this.$route.params.id\r\n\r\n        if (!groupId) this.$router.push('/profile')\r\n\r\n        // load group\r\n        this.isLoading = true\r\n        var url = ''\r\n        // @ts-ignore cannot find mixins\r\n        if (this.isGroupAdmin || this.hasRole('Admin')) {\r\n          //isAdmin is ALWAYS false, when loading the group for the first time.\r\n          //admins are allowed to see phone number and email address\r\n          url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupgetbyid[0]}?id=${groupId}`\r\n        } else {\r\n          url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupgetbyidlight[0]}?id=${groupId}`\r\n        }\r\n        this.$http.get(url).then((resp) => {\r\n          this.isLoading = false\r\n          // @ts-ignore cannot find mixins\r\n          if (this.isGroupAdmin || this.hasRole('Admin')) {\r\n            this.group = resp.data as GroupDetailDto\r\n          } else {\r\n            this.group = resp.data as GroupDetailLightDto\r\n          }\r\n          this.group.members = _.sortBy(this.group.members, (m) => {\r\n            return m.firstName\r\n          })\r\n        }, fail => {\r\n          this.isLoading = false\r\n\r\n          if (fail.status === 400 && fail.body.redirectUri.includes('NoMembership')) {\r\n            this.$router.push(`/groups?groupId=${groupId}`)\r\n          }\r\n          if (fail.status === 403) {\r\n            // @ts-ignore cannot find mixins\r\n            this.showAlert403()\r\n          } else {\r\n            if (!groupId) {\r\n              // @ts-ignore cannot find mixins\r\n              this.showAlertError(this.$t('common.fetchFailed'))\r\n            }\r\n          }\r\n        })\r\n      },\r\n      updateGroup (): PromiseLike<HttpResponse> {\r\n        if (!this.group) {\r\n          return Promise.reject(new Error('no group loaded'))\r\n        }\r\n        if (this.group.name === '') {\r\n          return Promise.reject(new Error('no group name'))\r\n        }\r\n        var url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupupdate[0]}`\r\n        var groupDto = {\r\n          id: this.group.id,\r\n          name: this.group.name,\r\n          description: this.group.description,\r\n          groupType: this.group.groupType,\r\n          members: _.map(this.group.members, function (item) {\r\n            return item.id\r\n          }),\r\n          isAllLocations: this.group.isAllLocations,\r\n          isActive: this.group.isActive\r\n        }\r\n        return this.$http.put(url, groupDto)\r\n      },\r\n      toNotes (): void {\r\n        this.$router.push(`/groups/group/${this.group?.id}/notes`)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .group.container {\r\n    .remove-disabled {\r\n      cursor: not-allowed;\r\n    }\r\n\r\n    padding: 0 15px!important;\r\n\r\n    .mobiletitle {\r\n      margin-top: 30px;\r\n    }\r\n\r\n    a {\r\n      color: $brand-red;\r\n      &.back {\r\n        color: #000;\r\n        svg {\r\n          margin-right: 5px;\r\n          color: $brand-red;\r\n        }\r\n       }\r\n    }\r\n\r\n    .group-secondary {\r\n      background: #fff;\r\n      padding: 40px 15px;\r\n\r\n      .cap-label {\r\n        display: block;\r\n        color: $brand-red;\r\n        margin: 20px 0 10px 0;\r\n        outline: none;\r\n\r\n        svg {\r\n          margin-right: 5px;\r\n        }\r\n      }\r\n    }\r\n\r\n    .group-list {\r\n      padding-top: 25px;\r\n      position: relative;\r\n      .user-row {\r\n        background: #fff;\r\n        margin-bottom: 5px;\r\n        .user {\r\n         a {\r\n            color: $brand-red;\r\n            font-weight: bold;\r\n            text-transform: uppercase;\r\n          }\r\n          .user-img {\r\n            float: left;\r\n            margin-right: 15px;\r\n          }\r\n        }\r\n        .portrait-size {\r\n          width: 50px;\r\n          height: 50px;\r\n         }\r\n      }\r\n    }\r\n\r\n  .sendsuccess {\r\n    color:$brand-success;\r\n    margin-bottom:5px;\r\n  }\r\n\r\n  .sendMessage {\r\n\r\n    .subject {\r\n      margin-bottom: 15px;\r\n      input {\r\n        width: 100%;\r\n      }\r\n    }\r\n    .messagebody {\r\n      textarea {\r\n        width: 100%;\r\n      }\r\n    }\r\n\r\n    .actions {\r\n      .cancel {\r\n        margin-top: 15px;\r\n        margin-bottom: 15px;\r\n      }\r\n    }\r\n  }\r\n\r\n  .list-header {\r\n    padding-bottom: 15px;\r\n  }\r\n\r\n  @media (max-width: $media-sm-max) {\r\n\r\n    .actions {\r\n      text-align: center;\r\n      margin-top: 15px;\r\n    }\r\n\r\n    .group-side.col-md-3, .group-list.col-md-9 {\r\n      width: 100%;\r\n      max-width: 100%;\r\n      flex: 0 0 100%;\r\n    }\r\n  }\r\n\r\n  .loading {\r\n    text-align: center;\r\n    margin-top: 30px;\r\n    margin-bottom: 30px;\r\n  }\r\n\r\n  .issaving {\r\n    text-align: center;\r\n    margin-top: 5px;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Group.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Group.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Group.vue?vue&type=template&id=15e92c04\"\nimport script from \"./Group.vue?vue&type=script&lang=ts\"\nexport * from \"./Group.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Group.vue?vue&type=style&index=0&id=15e92c04&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"groupall col-12\"},[_c('backbar',{attrs:{\"title\":_vm.$t('groups.title'),\"subtitle\":_vm.$t('groups.subTitle')}}),_c('div',{staticClass:\"group-search\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"search-section\"},[_c('div',{staticClass:\"advanced-search\"},[_c('groupsearchcriteria',{on:{\"change\":_vm.onChangedSearchCriteria}})],1)])])]),_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"col-12 pager-header\"},[_c('pager-heading',{attrs:{\"pagesizervisible\":\"\",\"total\":_vm.total,\"skip\":_vm.skip,\"take\":_vm.take},on:{\"pagesizechanged\":_vm.onPageSizeChanged}})],1),_c('div',{staticClass:\"white-block\"},[_c('div',{staticClass:\"row grouplist\"},[_c('div',{staticClass:\"col-12\"},[(_vm.groups && _vm.groups.length > 0 && !_vm.groupsLoading)?_c('div',[_c('grouplist',{attrs:{\"list\":_vm.groups,\"detailed\":true}})],1):_vm._e(),((!_vm.groups || _vm.groups.length === 0) && !_vm.groupsLoading)?_c('div',{staticClass:\"nomessages\"},[_c('span',[_vm._v(_vm._s(_vm.$t('groups.noResults')))])]):_vm._e(),(_vm.groupsLoading)?_c('div',{staticClass:\"loading brand-red\"},[_c('loading')],1):_vm._e()])])]),_c('div',{staticClass:\"col-12 pager-footer\"},[_c('pager',{attrs:{\"take\":_vm.take,\"skip\":_vm.skip,\"total\":_vm.total,\"max-display\":_vm.maxDisplay,\"of-text\":\"/\",\"statisticsvisible\":false},on:{\"pagerchanged\":_vm.pagerClick,\"pagerprevious\":_vm.pagerPrevious,\"pagernext\":_vm.pagerNext}})],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('div',{staticClass:\"search-criteria-title\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c('div',{staticClass:\"search-criteria\"},[_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.groupName'))+\" \")]),_c('div',{staticClass:\"form-group\"},[_c('div',{class:{ 'spr-searchbox': true, 'spr-roundbox-1': true }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchWord),expression:\"searchWord\"}],staticClass:\"form-control\",attrs:{\"tabindex\":\"0\"},domProps:{\"value\":(_vm.searchWord)},on:{\"input\":function($event){if($event.target.composing)return;_vm.searchWord=$event.target.value}}})])])]),_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.sCGroupTypes'))+\" \")]),_c('multiselectinput',{attrs:{\"items\":_vm.groupTypes},on:{\"change\":_vm.onGroupTypesChanged},model:{value:(_vm.searchCriteria.groupTypes),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"groupTypes\", $$v)},expression:\"searchCriteria.groupTypes\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.searchLanguages'))+\" \")]),_c('multiselectinput',{attrs:{\"items\":_vm.grouplanguages},on:{\"change\":_vm.onLanguageChanged},model:{value:(_vm.searchCriteria.languages),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"languages\", $$v)},expression:\"searchCriteria.languages\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.sCCategories'))+\" \")]),_c('multiselectinput',{attrs:{\"items\":_vm.categories},on:{\"change\":_vm.onCategoriesChanged},model:{value:(_vm.searchCriteria.categories),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"categories\", $$v)},expression:\"searchCriteria.categories\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.sCIsAllLocations'))+\" \")]),_c('singleselect',{attrs:{\"items\":_vm.isAllLocations},on:{\"change\":_vm.onIsAllLocationsChanged},model:{value:(_vm.searchCriteria.isAllLocations),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"isAllLocations\", $$v)},expression:\"searchCriteria.isAllLocations\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.sCGroupOrganizers'))+\" \")]),_c('grouporganizer',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('hasOptionalGroupOrganizer'),expression:\"'hasOptionalGroupOrganizer'\"}],attrs:{\"name\":\"groups.sCGroupOrganizers\",\"value\":_vm.groupOrganizer,\"required\":false,\"is-valid\":!_vm.errors.has('groups.sCGroupOrganizers')},on:{\"input\":_vm.onGroupOrganizerChanged}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div>\r\n    <div class=\"search-criteria-title\">\r\n      {{ title }}\r\n    </div>\r\n    <div class=\"search-criteria\">\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('userAdmin.groupName') }}\r\n        </div>\r\n        <div class=\"form-group\">\r\n          <div :class=\"{ 'spr-searchbox': true, 'spr-roundbox-1': true }\">\r\n            <input v-model=\"searchWord\" class=\"form-control\" tabindex=\"0\">\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('groups.sCGroupTypes') }}\r\n        </div>\r\n        <multiselectinput\r\n          v-model=\"searchCriteria.groupTypes\"\r\n          :items=\"groupTypes\"\r\n          @change=\"onGroupTypesChanged\"\r\n        />\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('groups.searchLanguages') }}\r\n        </div>\r\n        <multiselectinput\r\n          v-model=\"searchCriteria.languages\"\r\n          :items=\"grouplanguages\"\r\n          @change=\"onLanguageChanged\"\r\n        />\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('groups.sCCategories') }}\r\n        </div>\r\n        <multiselectinput\r\n          v-model=\"searchCriteria.categories\"\r\n          :items=\"categories\"\r\n          @change=\"onCategoriesChanged\"\r\n        />\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('groups.sCIsAllLocations') }}\r\n        </div>\r\n        <singleselect\r\n          v-model=\"searchCriteria.isAllLocations\"\r\n          :items=\"isAllLocations\"\r\n          @change=\"onIsAllLocationsChanged\"\r\n        />\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <div class=\"cap-label\">\r\n          {{ $t('groups.sCGroupOrganizers') }}\r\n        </div>\r\n        <grouporganizer\r\n          v-validate=\"'hasOptionalGroupOrganizer'\"\r\n          name=\"groups.sCGroupOrganizers\"\r\n          :value=\"groupOrganizer\"\r\n          :required=\"false\"\r\n          :is-valid=\"!errors.has('groups.sCGroupOrganizers')\"\r\n          @input=\"onGroupOrganizerChanged\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import grouporganizer from '../SPRGroupOrganizersDropdown.vue'\r\n  import singleselect from '../common/Dropdown/SingleSelectDropdown.vue'\r\n  import multiselectinput from '../common/Dropdown/MultiSelectDropdown.vue'\r\n  import { DropdownSelectItem } from '../../types/custom'\r\n  import cache from '../../mixins/cache.js'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import inpututils from '../../mixins/inpututils'\r\n\r\n  export default Vue.extend({\r\n    name: 'GroupSearchCriteria',\r\n    components: { multiselectinput, singleselect, grouporganizer },\r\n    mixins: [cache, enumhelper, inpututils],\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data: () => {\r\n      return {\r\n        disabled: false,\r\n        searchCriteria: {\r\n          searchWord: '' as string,\r\n          categories: [],\r\n          groupOrganizers: [],\r\n          groupTypes: [],\r\n          languages: [],\r\n          isActive: true,\r\n          isAllLocations: { id: 0, text: '-' }\r\n      } as Record<string, any>,\r\n        isSearching: false as boolean,\r\n        searchTimeout: undefined as unknown as ReturnType<typeof setTimeout>,\r\n        searchWaitIntervalMs: 600 as number,\r\n        categories: [],\r\n        grouplanguages: [],\r\n        groupTypes: [] as unknown,\r\n        groupOrganizers: [] as DropdownSelectItem[] | undefined,\r\n        searchWord: '' as string,\r\n        groupOrganizer: {\r\n            groupOrganizerType: -1,\r\n            organizerId: null\r\n          } as unknown,\r\n        isAllLocations: undefined as boolean | undefined,\r\n        sectionId: 0 as number // this value cannot be used and will be overridden by the backend\r\n      }\r\n    },\r\n    watch: {\r\n      searchWord (value) {\r\n        this.delayedModify('searchWord', value)\r\n      }\r\n    },\r\n    mounted () {\r\n      const lang = this.$store.state.customerLanguages\r\n      this.grouplanguages = this.$store.state.groupLanguages.filter((l) => l.id !== 0).map((v) => {\r\n        return { id: v.id, text: this.$t('actionLanguage.' + lang.find((l) => l.displayName.toUpperCase() === v.text.toUpperCase()).isoCode) }\r\n      })\r\n      this.isAllLocations = this.$store.state.optionalBooleanValues.map((v) => { return { id: v.id, text: this.$t('boolean.' + v.text) } })\r\n      this.categories = this.$store.state.eventCategories.map((v) => { return { id: v.id, text: this.$t('eventCategory.' + v.text) } })\r\n      this.groupTypes = [{ id: 1, text: this.$t('groups.actionGroupsTitle') }, { id: 2, text: this.$t('groups.standardGroupsTitle') }]\r\n    },\r\n    methods: {\r\n      onLanguageChanged (value) {\r\n        this.modifySearchCriteria('languages', value)\r\n      },\r\n      onGroupTypesChanged (value) {\r\n        this.modifySearchCriteria('groupTypes', value)\r\n      },\r\n      onCategoriesChanged (value) {\r\n        this.modifySearchCriteria('categories', value)\r\n      },\r\n      onIsAllLocationsChanged (value) {\r\n        this.modifySearchCriteria('isAllLocations', value)\r\n      },\r\n      delayedModify (criterion, value) {\r\n        clearTimeout(this.searchTimeout as ReturnType<typeof setTimeout>)\r\n        this.searchTimeout = setTimeout(() => {\r\n          this.modifySearchCriteria(criterion, value)\r\n        }, this.searchWaitIntervalMs)\r\n      },\r\n      onGroupOrganizerChanged (value): void {\r\n        if (!value || value.groupOrganizerType === -1) {\r\n          this.modifySearchCriteria('groupOrganizers', undefined)\r\n        } else { this.modifySearchCriteria('groupOrganizers', [Object.freeze(value)]) }\r\n      },\r\n      convertBoolean (value) {\r\n        return value.id === 0 ? undefined : value.id < 2\r\n      },\r\n      modifySearchCriteria (criterion, value) {\r\n        const groupOrganizers = criterion === 'groupOrganizers' ? value : undefined\r\n\r\n        const searchCriteria = {\r\n          searchWord: this.searchWord,\r\n          categories: this.searchCriteria.categories.map(v => v.id),\r\n          groupOrganizers: groupOrganizers,\r\n          groupTypes: this.searchCriteria.groupTypes.map(v => v.id),\r\n          languages: this.searchCriteria.languages.map(v => v.id),\r\n          isActive: true,\r\n          isAllLocations: this.convertBoolean(this.searchCriteria.isAllLocations)\r\n        }\r\n        this.$emit('change', searchCriteria)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .spr-searchbox {\r\n    background-color:$brand-white;\r\n    position: relative;\r\n    border: solid 2px $brand-grey5;\r\n\r\n    input\r\n    {\r\n      margin-right: 30px;\r\n      border-radius: 2rem;\r\n      &:focus-visible {\r\n        color: #495057;\r\n        border: solid 2px $brand-grey5;\r\n        outline: 0;\r\n        box-shadow: 0 0 0 0.2rem $brand-grey3;\r\n        transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n      }\r\n\r\n    }\r\n    svg {\r\n      position: absolute;\r\n      right: 15px;\r\n      top: 10px;\r\n    }\r\n   }\r\n  .form-group {\r\n    .spr-roundbox-1 {\r\n      border: none;\r\n      select.form-control {\r\n        -webkit-appearance: none;\r\n        -moz-appearance: none;\r\n        -o-appearance: none;\r\n        appearance: none;\r\n        background-image: url('../../assets/img/caret.png');\r\n        background-position: 95% center;\r\n        background-repeat: no-repeat;\r\n        outline: none;\r\n        border: solid 2px $brand-grey5;\r\n        &:focus {\r\n          box-shadow: 0 0 0 0.2rem rgba(204, 0, 0, 0.25);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  .search-item{\r\n   flex: 1 0 auto;\r\n   max-width: 100%;\r\n\r\n }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupSearchCriteria.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupSearchCriteria.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./GroupSearchCriteria.vue?vue&type=template&id=30fca7c8&scoped=true\"\nimport script from \"./GroupSearchCriteria.vue?vue&type=script&lang=ts\"\nexport * from \"./GroupSearchCriteria.vue?vue&type=script&lang=ts\"\nimport style0 from \"./GroupSearchCriteria.vue?vue&type=style&index=0&id=30fca7c8&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"30fca7c8\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"groupall col-12\">\r\n    <backbar :title=\"$t('groups.title')\" :subtitle=\"$t('groups.subTitle')\" />\r\n    <div class=\"group-search\">\r\n      <div class=\"col-12\">\r\n        <div class=\"search-section\">\r\n          <div class=\"advanced-search\">\r\n            <groupsearchcriteria @change=\"onChangedSearchCriteria\" />\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"container\">\r\n      <div class=\"col-12 pager-header\">\r\n        <pager-heading pagesizervisible\r\n                       :total=\"total\" :skip=\"skip\" :take=\"take\"\r\n                       @pagesizechanged=\"onPageSizeChanged\"\r\n        ></pager-heading>\r\n      </div>\r\n      <div class=\"white-block\">\r\n        <div class=\"row grouplist\">\r\n          <div class=\"col-12\">\r\n            <div v-if=\"groups && groups.length > 0 && !groupsLoading\">\r\n              <grouplist :list=\"groups\" :detailed=\"true\" />\r\n            </div>\r\n            <div v-if=\"(!groups || groups.length === 0) && !groupsLoading\" class=\"nomessages\">\r\n              <span>{{ $t('groups.noResults') }}</span>\r\n            </div>\r\n            <div v-if=\"groupsLoading\" class=\"loading brand-red\">\r\n              <loading />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"col-12 pager-footer\">\r\n        <pager :take=\"take\"\r\n               :skip=\"skip\"\r\n               :total=\"total\"\r\n               :max-display=\"maxDisplay\"\r\n               of-text=\"/\"\r\n               :statisticsvisible=\"false\"\r\n               @pagerchanged=\"pagerClick\"\r\n               @pagerprevious=\"pagerPrevious\"\r\n               @pagernext=\"pagerNext\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script >\r\n  import backbar from '../BackBar.vue'\r\n  import * as _ from 'lodash'\r\n  import loading from '../SPRLoading.vue'\r\n  import groupsearchcriteria from '../groups/GroupSearchCriteria.vue'\r\n  import pagerHeading from '../SPRPagerHeading.vue'\r\n  import pager from '../SPRPager.vue'\r\n  import grouplist from './GroupList.vue'\r\n\r\n  export default {\r\n    name: 'GroupAll',\r\n    components: { backbar, loading, groupsearchcriteria, grouplist, pagerHeading, pager },\r\n    data () {\r\n      return {\r\n        groupSearchType: 'actionGroup',\r\n        groupsLoading: true,\r\n        includeAdvancedSearch: true,\r\n        search: '',\r\n        advancedSearchVisible: false,\r\n        searchCriteria: {\r\n          groupId: undefined,\r\n          languages: [],\r\n          isActive: true, // inlude only the Active Groups\r\n          isAllLocations: undefined, // include also the National Groups\r\n          groupTypes: [], //  ActionGroups / OpenGroups\r\n          categories: [], // Many categories (17)\r\n          groupOrganizers: [], // (Note: May conflict with Section Criteria)\r\n          searchWord: '',\r\n          searchWordSeparator: '',\r\n          skip: 0,\r\n          take: 50\r\n        },\r\n        actionTotal: 0,\r\n        standardTotal: 0,\r\n        groups: [],\r\n        total: 0,\r\n        maxDisplay: 5,\r\n        take: 50,\r\n        skip: 0,\r\n        debug: true,\r\n        searchingWithGroupId: false\r\n      }\r\n    },\r\n    computed: {\r\n      groupsTotal () {\r\n        return this.groups?.filter((item) => item.groupType === 1).length\r\n      },\r\n      groupId () {\r\n        return this.$route.query.groupId\r\n      }\r\n    },\r\n    watch: {\r\n      searchCriteria () {\r\n        this.getGroups(this.take, this.skip)\r\n      }\r\n    },\r\n    mounted () {\r\n      if (this.groupId) {\r\n        this.searchingWithGroupId = true\r\n        this.searchCriteria.groupId = this.groupId\r\n      }\r\n      this.getGroups(this.take, this.skip)\r\n    },\r\n    methods: {\r\n      clearQueryString () {\r\n        // Get the current URL\r\n        const currentUrl = new URL(window.location.href)\r\n\r\n        // Clear the query parameters\r\n        currentUrl.search = ''\r\n\r\n        // Replace the current URL with the new URL (without query string)\r\n        window.history.replaceState({}, '', currentUrl)\r\n      },\r\n      onChangedSearchCriteria (searchCriteria) {\r\n        this.clearQueryString()\r\n        if (JSON.stringify(this.searchCriteria) !== JSON.stringify(searchCriteria)) {\r\n          this.searchCriteria = { ...this.searchCriteria, ...searchCriteria }\r\n          this.skip = 0\r\n        }\r\n      },\r\n      toggleAdvancedSearch () {\r\n        this.advancedSearchVisible = !this.advancedSearchVisible\r\n      },\r\n      getGroups () {\r\n        if (this.searchCriteria === undefined) {\r\n          this.searchCriteria = { languages: [],\r\n                                  isActive: true, // inlude only the Active Groups\r\n                                  isAllLocations: undefined, // include also the National Groups\r\n                                  groupTypes: [], //  ActionGroups / OpenGroups\r\n                                  categories: [], // Many categories (17)\r\n                                  groupOrganizers: [], // (Note: May conflict with Section Criteria)\r\n                                  searchWord: '',\r\n                                  searchWordSeparator: '',\r\n                                  skip: 0,\r\n                                  take: 5\r\n          }\r\n        }\r\n        this.searchCriteria.take = this.take\r\n        this.searchCriteria.skip = this.skip\r\n        this.groupsLoading = true\r\n        const self = this\r\n        var url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupspersonal[0]}`\r\n        this.$http.post(url, this.searchCriteria).then((data) => {\r\n          self.groups = data.body?.items.map((item) => { return { ...item, sectionname: this.$store.state.sections.find((s) => s.id === item.sectionId)?.name } })\r\n          self.total = data.body?.total\r\n          if (data.body?.total === 0 && this.searchingWithGroupId) {\r\n            this.showAlertInfo(this.$t('groups.noGroupFoundById'))\r\n          }\r\n\r\n          self.groupsLoading = false\r\n\r\n          // reset group id. We don't want it included in any future searches.\r\n          // make sure it will be 'cleaned' in the next cycle, to prevent unexpected results.\r\n          if (this.searchCriteria.groupId) {\r\n            this.searchingWithGroupId = false\r\n            this.searchCriteria.groupId = undefined\r\n          }\r\n        })\r\n      },\r\n      onPageSizeChanged (pageSize) {\r\n        this.take = pageSize\r\n        this.skip = 0\r\n        this.getGroups(this.take, this.skip)\r\n      },\r\n      pagerClick (val) {\r\n        this.skip = val.skip\r\n        this.getGroups(this.take, this.skip)\r\n      },\r\n      pagerPrevious () {\r\n        this.skip -= this.take\r\n        this.getGroups(this.take, this.skip)\r\n      },\r\n      pagerNext () {\r\n        this.skip += this.take\r\n        this.getGroups(this.take, this.skip)\r\n      }\r\n\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .pager {\r\n    margin-top: 10px;\r\n  }\r\n  .pager-header {\r\n    margin-bottom: 10px;\r\n    max-width: 1140px;\r\n    margin-right: auto;\r\n    margin-left: auto;\r\n  }\r\n  .pager-footer {\r\n    max-width: 1140px;\r\n    margin-right: auto;\r\n    margin-left: auto;\r\n  }\r\n\r\n  .useradmin-tabs {\r\n    border-bottom: 1px solid #C8C8C8;\r\n    margin-bottom: 10px;\r\n    h4 {\r\n      display: inline-block;\r\n      margin-bottom: -1px;\r\n      font-size: 20px;\r\n      a {\r\n        font-family: $font-bold;\r\n        color: $brand-grey8;\r\n        padding: 10px 15px;\r\n        display: block;\r\n        &.selected {\r\n          color: $brand-red;\r\n          border-bottom: 3px solid $brand-red;\r\n          padding: 10px 15px;\r\n        }\r\n        &:hover {\r\n          text-decoration: none;\r\n        }\r\n      }\r\n    }\r\n  &.main {\r\n    border-bottom: 1px solid $brand-grey4;\r\n    margin-bottom: 20px;\r\n    h4 {\r\n      display: inline-block;\r\n      margin-bottom: -1px;\r\n      font-size: 28px;\r\n    }\r\n  }\r\n }\r\n .white-block {\r\n   background: $brand-white;\r\n   padding: 15px;\r\n  }\r\n  .tab-content {\r\n    &.main {\r\n     padding: 15px;\r\n    }\r\n  }\r\n\r\n  .search-section {\r\n    display: flex;\r\n    flex: 1 0 auto;\r\n    flex-direction: column;\r\n  }\r\n  .search {\r\n    display: flex;\r\n    flex: 1 0 auto;\r\n    flex-direction: row;\r\n  }\r\n  .advanced-search {\r\n    display: inline-block;\r\n    padding: 10px;\r\n    font-size: 18px;\r\n    text-decoration: none;\r\n    font-family: \"Signa\", Sans-Serif;\r\n    color: #747473;\r\n    transition: color 0.33s;\r\n  }\r\n  .advanced-search-select{\r\n    flex: 0 0 auto;\r\n    align-self: center;\r\n    margin-left: 20px;\r\n    cursor: pointer;\r\n\r\n    :hover {\r\n      color: #000000;\r\n      transition: color 0.33s;\r\n    }\r\n  }\r\n\r\n  .language-title {\r\n    padding:0 20px;\r\n    align-self: center;\r\n    margin-bottom: unset;\r\n    color: unset;\r\n  }\r\n  .align-dropdown {\r\n    align-self: center;\r\n  }\r\n  .group-search {\r\n    display: flex;\r\n    flex-direction: column;\r\n    width: 100%;\r\n    max-width: 1140px;\r\n    padding-right: 15px;\r\n    padding-left: 15px;\r\n    margin-right: auto;\r\n    margin-left: auto;\r\n  }\r\n  .language-row {\r\n    display: flex;\r\n    flex-direction: row;\r\n    margin: 16px 0px 16px 15px;\r\n  }\r\n\r\n  .group-search-item {\r\n    display: flex;\r\n  }\r\n\r\n  .spr-simple-checkbox{\r\n    padding-bottom: unset !important;\r\n  }\r\n\r\n  .search-box {\r\n    flex: 1 0 auto;\r\n    padding-top: 4px;\r\n  }\r\n\r\n  .language-box {\r\n    flex: 1 0 auto;\r\n    display: flex;\r\n    justify-content: flex-end;\r\n  }\r\n\r\n  .groupall {\r\n    .loading {\r\n      margin: 0 auto;\r\n      text-align:center;\r\n      margin-top: 15px;\r\n    }\r\n\r\n    .grouplist {\r\n      background-color:$brand-white;\r\n      padding: 15px 0;\r\n    }\r\n\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupAll.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupAll.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./GroupAll.vue?vue&type=template&id=67c50150\"\nimport script from \"./GroupAll.vue?vue&type=script&lang=js\"\nexport * from \"./GroupAll.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupAll.vue?vue&type=style&index=0&id=67c50150&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"group create col-12\"},[_c('backbar',{attrs:{\"title\":_vm.$t('groups.createGroup')}}),_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"form-container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-8 col-sm-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('groups.name'),\"name\":\"group.name\",\"required\":true,\"is-valid\":!_vm.errors.has('group.name')},model:{value:(_vm.group.name),callback:function ($$v) {_vm.$set(_vm.group, \"name\", $$v)},expression:\"group.name\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('groups.description')},model:{value:(_vm.group.description),callback:function ($$v) {_vm.$set(_vm.group, \"description\", $$v)},expression:\"group.description\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprdropdownnumberkey',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"title\":_vm.$t('groups.category'),\"name\":\"group.category\",\"items\":_vm.groupCategories,\"required\":_vm.group.type === 1,\"is-valid\":!_vm.errors.has('group.category') || _vm.group.type !== 1},model:{value:(_vm.group.category),callback:function ($$v) {_vm.$set(_vm.group, \"category\", $$v)},expression:\"group.category\"}})],1)]),_c('div',{staticClass:\"simple-text right-outer\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('groups.language'))+\" \")]),_c('pillbox',{attrs:{\"items\":_vm.languages,\"selected\":_vm.selectedLanguages},on:{\"change\":_vm.onLanguageChanged}})],1),_c('div',{staticClass:\"row\"},[_c('simplecheckbox',{attrs:{\"title\":_vm.$t('groups.isAllLocations'),\"aria-label\":_vm.$t('groups.isAllLocations')},model:{value:(_vm.group.isAllLocations),callback:function ($$v) {_vm.$set(_vm.group, \"isAllLocations\", $$v)},expression:\"group.isAllLocations\"}})],1),_c('div',{staticClass:\"row button-row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"d-flex justify-content-end\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"submit\",\"size\":1,\"title\":_vm.$t('groups.save'),\"icon\":\"chevron-right\",\"click-event\":\"createGroup\"},on:{\"createGroup\":_vm.createGroupButton}})],1)])])])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"group create col-12\">\r\n    <backbar :title=\"$t('groups.createGroup')\" />\r\n    <div class=\"container\">\r\n      <div class=\"form-container\">\r\n        <div class=\"row\">\r\n          <div class=\"col-md-8 col-sm-12\">\r\n            <div class=\"row\">\r\n              <div class=\"col-12\">\r\n                <forminput v-model=\"group.name\"\r\n                           v-validate=\"'required'\"\r\n                           :hint=\"$t('groups.name')\"\r\n                           name=\"group.name\"\r\n                           :required=\"true\"\r\n                           :is-valid=\"!errors.has('group.name')\"\r\n                />\r\n              </div>\r\n            </div>\r\n            <div class=\"row\">\r\n              <div class=\"col-12\">\r\n                <textareainput\r\n                  v-model=\"group.description\"\r\n                  :title=\"$t('groups.description')\"\r\n                />\r\n              </div>\r\n            </div>\r\n            <div class=\"row\">\r\n              <div class=\"col-12\">\r\n                <sprdropdownnumberkey\r\n                  v-model=\"group.category\"\r\n                  v-validate=\"'required'\"\r\n                  :title=\"$t('groups.category')\"\r\n                  name=\"group.category\"\r\n                  :items=\"groupCategories\"\r\n                  :required=\"group.type === 1\"\r\n                  :is-valid=\"!errors.has('group.category') || group.type !== 1\"\r\n                />\r\n              </div>\r\n            </div>\r\n            <div class=\"simple-text right-outer\">\r\n              <div class=\"cap-label\">\r\n                {{ $t('groups.language') }}\r\n              </div>\r\n              <pillbox :items=\"languages\" :selected=\"selectedLanguages\" @change=\"onLanguageChanged\">\r\n              </pillbox>\r\n            </div>\r\n\r\n            <div class=\"row\">\r\n              <simplecheckbox\r\n                v-model=\"group.isAllLocations\"\r\n                :title=\"$t('groups.isAllLocations')\"\r\n                :aria-label=\"$t('groups.isAllLocations')\"\r\n              />\r\n            </div>\r\n            <div class=\"row button-row\">\r\n              <div class=\"col-12\">\r\n                <div class=\"d-flex justify-content-end\">\r\n                  <sprbutton\r\n                    type=\"submit\"\r\n                    :size=\"1\"\r\n                    :title=\"$t('groups.save')\"\r\n                    icon=\"chevron-right\"\r\n                    class=\"spr-redborder button-width\"\r\n                    click-event=\"createGroup\"\r\n                    @createGroup=\"createGroupButton\"\r\n                  />\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import backbar from '../BackBar.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import simplecheckbox from '../SPRSimpleCheckbox.vue'\r\n  import sprdropdownnumberkey from '../SPRDropdownNumberKey.vue'\r\n\r\n  import pillbox from '../common/Pill/PillBox.vue'\r\n\r\n  export default {\r\n    name: 'CreateGroup',\r\n    components: { backbar, sprbutton, textareainput, forminput, sprdropdownnumberkey, simplecheckbox, pillbox },\r\n    props: {\r\n      type: {\r\n        type: Number,\r\n        default () {\r\n          return 2 // friendship group\r\n        }\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        group: {\r\n          name: '',\r\n          description: '',\r\n          groupCreatorId: -1,\r\n          members: [],\r\n          isAllLocations: false,\r\n          groupType: this.type,\r\n          sectionId: null,\r\n          languages: 0\r\n        },\r\n        languages: [],\r\n        selectedLanguages: [],\r\n        groupCategories: null\r\n\r\n      }\r\n    },\r\n    mounted () {\r\n      const lang = this.$store.state.customerLanguages\r\n      this.languages = this.$store.state.groupLanguages.filter((l) => l.id !== 0).map((v) => {\r\n        return { id: v.id, text: 'actionLanguage.' + lang.find((l) => l.displayName.toUpperCase() === v.text.toUpperCase()).isoCode }\r\n      })\r\n    },\r\n    created () {\r\n      this.group.sectionId = Number(this.jwtToken.SectionMembership)\r\n      this.getCategories()\r\n    },\r\n    methods: {\r\n      onLanguageChanged (e) {\r\n        this.group.languages = e.reduce((b, v) => b + v.id, 0)\r\n        this.selectedLanguages = e\r\n      },\r\n      getCategories () {\r\n        var self = this\r\n        this.groupCategories = _.map(this.$store.state.eventCategories, function (val, key) {\r\n          return { value: val.id, text: self.$t('eventCategory.' + val.text) }\r\n        })\r\n      },\r\n      createGroupButton: function () {\r\n        var self = this\r\n        this.$validator.validateAll().then((successful) => {\r\n          if (successful) {\r\n            var url = `${self.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupsectionadd[0]}`\r\n            this.$http.post(url, self.group).then((resp) => {\r\n              self.$router.push(`/groups/group/${resp.body}`)\r\n            })\r\n          }\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .group.create {\r\n    background: #fff;\r\n\r\n  .spr-searchbox {\r\n    border: 1px solid $brand-grey4;\r\n  }\r\n\r\n  .button-row {\r\n    margin-bottom: 40px;\r\n    .spr-button  {\r\n      background: $brand-red;\r\n      color: #fff;\r\n    }\r\n  }\r\n\r\n  .spr-simple-checkbox.pb-3 {\r\n    padding-bottom: 0!important;\r\n  }\r\n\r\n  .cap-label {\r\n    color: $brand-red;\r\n    display: block;\r\n    margin: 20px 0;\r\n  }\r\n\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateGroup.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateGroup.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CreateGroup.vue?vue&type=template&id=47237a9b\"\nimport script from \"./CreateGroup.vue?vue&type=script&lang=js\"\nexport * from \"./CreateGroup.vue?vue&type=script&lang=js\"\nimport style0 from \"./CreateGroup.vue?vue&type=style&index=0&id=47237a9b&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container notes\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-8 col-lg-9 group-list\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('groups.groupMessages')))]),_c('p',[_vm._v(_vm._s(_vm.$t('groups.getEmailsHelp')))]),(_vm.isMemberOfGroup)?_c('div',[(_vm.subscribeToEmails !== null)?_c('div',{staticClass:\"consent-checkbox\"},[_c('checkboxinput',{attrs:{\"title\":_vm.subscribeToEmailsText},model:{value:(_vm.subscribeToEmails),callback:function ($$v) {_vm.subscribeToEmails=$$v},expression:\"subscribeToEmails\"}})],1):_vm._e()]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"sendMessage\"},[_c('div',{staticClass:\"subject\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.messageSubject),expression:\"messageSubject\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('groups.messageSubjectPlaceholder')},domProps:{\"value\":(_vm.messageSubject)},on:{\"input\":function($event){if($event.target.composing)return;_vm.messageSubject=$event.target.value}}})]),_c('div',{staticClass:\"messagebody\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.messageBody),expression:\"messageBody\"}],attrs:{\"rows\":\"5\",\"placeholder\":_vm.$t('groups.messageBodyPlaceholder')},domProps:{\"value\":(_vm.messageBody)},on:{\"input\":function($event){if($event.target.composing)return;_vm.messageBody=$event.target.value}}})]),_c('div',{staticClass:\"message-actions\"},[_c('div',[(_vm.allowSendAsEmail)?_c('checkboxinput',{attrs:{\"title\":_vm.$t('sectionMessages.sendAsMail')},model:{value:(_vm.asEmail),callback:function ($$v) {_vm.asEmail=$$v},expression:\"asEmail\"}}):_vm._e()],1),_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('groups.sendMessage'),\"click-event\":\"sendMessage\"},on:{\"sendMessage\":_vm.sendMessageThread}}),_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"secondary\",\"size\":4,\"title\":_vm.$t('groups.cancel'),\"click-event\":\"cancel\",\"disabled\":!_vm.isPartiallyEdited},on:{\"cancel\":_vm.cancelSendMessage}})],1)])])]),(_vm.notes && _vm.notes.length)?_c('noteview',{attrs:{\"notes\":_vm.notes,\"groupid\":_vm.$route.params.groupid,\"portraits\":_vm.portraits,\"focus\":_vm.focusMessage,\"can-delete\":_vm.isGroupAdmin,\"can-send-as-email\":_vm.allowSendAsEmail},on:{\"removed\":_vm.removed}}):_vm._e(),(_vm.messagesLoading)?_c('div',{staticClass:\"loading\"},[_c('loading')],1):_vm._e()],1),_c('div',{staticClass:\"col-md-4 col-lg-3 group-secondary flex-first\"},[_c('a',{staticClass:\"back\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript: void(0);\"},on:{\"click\":function($event){return _vm.$router.back()}}},[_c('font-awesome-icon',{staticClass:\"back\",attrs:{\"icon\":\"chevron-left\"}}),_vm._v(_vm._s(_vm.$t('volunteerForm.back'))+\" \")],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"container notes\">\r\n    <div class=\"row\">\r\n      <div class=\"col-md-8 col-lg-9 group-list\">\r\n        <h3>{{ $t('groups.groupMessages') }}</h3>\r\n        <p>{{ $t('groups.getEmailsHelp') }}</p>\r\n        <div v-if=\"isMemberOfGroup\">\r\n          <div v-if=\"subscribeToEmails !== null\" class=\"consent-checkbox\">\r\n            <checkboxinput v-model=\"subscribeToEmails\"\r\n                           :title=\"subscribeToEmailsText\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <div class=\"sendMessage\">\r\n              <div class=\"subject\">\r\n                <input v-model=\"messageSubject\" type=\"text\" :placeholder=\"$t('groups.messageSubjectPlaceholder')\">\r\n              </div>\r\n              <div class=\"messagebody\">\r\n                <textarea v-model=\"messageBody\" rows=\"5\" :placeholder=\"$t('groups.messageBodyPlaceholder')\" />\r\n              </div>\r\n              <!-- Styling will be improved on later tickets when doing complete overhaul on this page, leaving as it\r\n            is for now. -->\r\n              <div class=\"message-actions\">\r\n                <div>\r\n                  <checkboxinput v-if=\"allowSendAsEmail\"\r\n                                 v-model=\"asEmail\" :title=\"$t('sectionMessages.sendAsMail')\"\r\n                  />\r\n                </div>\r\n                <sprbutton type=\"primary\"\r\n                           :size=\"4\"\r\n                           :title=\"$t('groups.sendMessage')\"\r\n                           class=\"spr-redborder button-width\"\r\n                           click-event=\"sendMessage\"\r\n                           @sendMessage=\"sendMessageThread\"\r\n                />\r\n                <sprbutton type=\"secondary\"\r\n                           :size=\"4\"\r\n                           :title=\"$t('groups.cancel')\"\r\n                           class=\"spr-redborder button-width\"\r\n                           click-event=\"cancel\"\r\n                           :disabled=\"!isPartiallyEdited\"\r\n                           @cancel=\"cancelSendMessage\"\r\n                />\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <noteview v-if=\"notes && notes.length\"\r\n                  :notes=\"notes\"\r\n                  :groupid=\"$route.params.groupid\"\r\n                  :portraits=\"portraits\"\r\n                  :focus=\"focusMessage\"\r\n                  :can-delete=\"isGroupAdmin\"\r\n                  :can-send-as-email=\"allowSendAsEmail\"\r\n                  @removed=\"removed\"\r\n        />\r\n        <div v-if=\"messagesLoading\" class=\"loading\">\r\n          <loading />\r\n        </div>\r\n      </div>\r\n      <div class=\"col-md-4 col-lg-3 group-secondary flex-first\">\r\n        <a class=\"back\" tabindex=\"0\" href=\"javascript: void(0);\" @click=\"$router.back()\">\r\n          <font-awesome-icon icon=\"chevron-left\" class=\"back\" />{{ $t('volunteerForm.back') }}\r\n        </a>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import noteview from './NotesView.vue'\r\n  import moment from 'moment'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import { GroupDetailDto, MessageDto } from '@/types'\r\n  import { PortraitInfo } from '@/types/custom'\r\n  import { TranslateResult } from 'vue-i18n'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    notes: null | Array<MessageDto>,\r\n    messageSubject: string,\r\n    messageBody: string,\r\n    asEmail: boolean,\r\n    subscribeToEmails: null | boolean,\r\n    group: GroupDetailDto | undefined,\r\n    isGroupAdmin: boolean,\r\n    messagesLoading: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'GroupNotes',\r\n    components: { sprbutton, noteview, checkboxinput, loading },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        notes: null,\r\n        messageSubject: '',\r\n        messageBody: '',\r\n        asEmail: false,\r\n        subscribeToEmails: null,\r\n        group: undefined,\r\n        isGroupAdmin: false,\r\n        messagesLoading: false\r\n      }\r\n    },\r\n    computed: {\r\n      isMemberOfGroup (): boolean {\r\n        if (!this.group) {\r\n          return false\r\n        }\r\n        // @ts-ignore mixins not found\r\n        return this.jwtToken.GroupMembership && this.jwtToken.GroupMembership.split(';').find(x => x === this.group?.id.toString())\r\n      },\r\n      isEdited (): boolean {\r\n        return this.messageSubject !== '' && this.messageBody !== ''\r\n      },\r\n      isPartiallyEdited (): boolean {\r\n        return this.messageSubject !== '' || this.messageBody !== ''\r\n      },\r\n      portraits (): Array<PortraitInfo> {\r\n        if (!this.group) {\r\n          return []\r\n        }\r\n\r\n        return _.map(_.filter(this.group.members, function (y) {\r\n          return !!y.portrait\r\n        }), function (x) {\r\n          return { id: x.id, url: x.portrait }\r\n        })\r\n      },\r\n      focusMessage (): number | null {\r\n        var qsMessageId = Number(this.$route.query?.msg) || 0\r\n        return qsMessageId > 0 ? qsMessageId : null\r\n      },\r\n      subscribeToEmailsText (): TranslateResult {\r\n        return this.group && this.group.groupType === 2 ? this.$t('groups.subscribeToAdminEmails') : this.$t('groups.subscribeToEmails')\r\n      },\r\n      allowSendAsEmail (): boolean {\r\n        return !!this.group && (this.group.groupType === 1 || this.isGroupAdmin)\r\n      }\r\n    },\r\n    watch: {\r\n      subscribeToEmails (val, oldVal): void {\r\n        if (oldVal != null && val != null) {\r\n          const newStatus = val === true ? 1 : 0\r\n          this.setSubscriptionStatus(newStatus)\r\n        }\r\n      }\r\n    },\r\n    mounted (): void {\r\n      const groupId = this.$route.params.groupid\r\n      var url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupisadmin[0]}?groupId=${groupId}`\r\n      this.$http.get(url).then((resp) => {\r\n        this.isGroupAdmin = resp.data\r\n        this.loadGroup()\r\n      })\r\n      this.getMessages()\r\n      this.getSubscriptionStatus()\r\n      this.$bus.$on('reply-to-thread', this.handleReply)\r\n    },\r\n    beforeDestroy (): void {\r\n      this.$bus.$off('reply-to-thread')\r\n    },\r\n    methods: {\r\n      loadGroup (): void {\r\n        const self = this\r\n        const groupId = this.$route.params.groupid\r\n\r\n        if (!groupId) this.$router.push('/profile')\r\n\r\n        // load group\r\n        var url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupgetbyidlight[0]}?id=${groupId}`\r\n        // @ts-ignore cannot find mixins\r\n        if (this.isGroupAdmin || this.hasRole('Admin')) {\r\n          //isAdmin is ALWAYS false, when loading the group for the first time.\r\n          //admins are allowed to see phone number and email address\r\n          url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupgetbyid[0]}?id=${groupId}`\r\n        }\r\n\r\n        this.$http.get(url).then((resp) => {\r\n          if (resp.status === 403) { // Forbidden\r\n            // @ts-ignore mixins not found\r\n            this.showAlert403()\r\n          }\r\n          self.group = resp.data\r\n        }, fail => {\r\n          if (fail.status === 403) {\r\n            // @ts-ignore mixins not found\r\n            this.showAlert403()\r\n          } else {\r\n            // @ts-ignore cannot find mixins\r\n            this.showAlertError(this.$t('common.fetchFailed'))\r\n          }\r\n        })\r\n      },\r\n      handleReply (reply, cb): void {\r\n        if (!this.group) {\r\n          return\r\n        }\r\n        var parent = _.find(this.notes, (x) => {\r\n          return x.id === reply.parentId\r\n        })\r\n        if (!parent) {\r\n          return\r\n        }\r\n        this.sendMessage({\r\n          subject: this.$t('groups.replyPrefix') + parent.subject,\r\n          content: reply.message,\r\n          groupId: this.$route.params.groupid,\r\n          senderProfileId: this.$store.state.profile.profileId,\r\n          sendAsEmail: reply.asEmail,\r\n          parentMessageId: reply.parentId,\r\n          groupName: this.group.name,\r\n          senderName: this.$store.state.profile.firstName + ' ' + this.$store.state.profile.lastName,\r\n          link: this.$route.path\r\n        }, true)\r\n        cb()\r\n      },\r\n      removed (x): void {\r\n        const self = this\r\n        const url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.removenotification[0]}/${x}`\r\n        this.$http.post(url).then(function (resp) {\r\n                                    self.getMessages()\r\n                                  },\r\n                                  function (y) {\r\n                                    console.log('error removing notification!')\r\n                                  })\r\n      },\r\n      getMessages (): void {\r\n        var self = this\r\n        self.messagesLoading = true\r\n        var url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.groupmessages[0]}${this.$route.params.groupid}`\r\n        this.$http.get(url).then(resp => {\r\n          self.notes = _.sortBy(resp.data, function (message) {\r\n            return moment(message.sent)\r\n          }).reverse()\r\n          self.messagesLoading = false\r\n        }, (fail) => {\r\n          console.log('failed to get messages')\r\n          self.messagesLoading = false\r\n          // @ts-ignore cannot find mixins\r\n          this.showAlert403()\r\n        })\r\n      },\r\n      getSubscriptionStatus (): void {\r\n        const self = this\r\n        const url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.getSubStatus[0]}/${this.$route.params.groupid}/${this.$store.state.profile.profileId}`\r\n        this.$http.get(url).then(resp => {\r\n          self.handleSubResp(resp.data, self)\r\n        })\r\n      },\r\n      setSubscriptionStatus (newStatus): void {\r\n        const url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.setSubStatus[0]}/${this.$route.params.groupid}/${this.$store.state.profile.profileId}/${newStatus}`\r\n        this.$http.post(url).then(resp => {\r\n          this.handleSubResp(resp.data, self)\r\n        }, fail => {\r\n          this.subscribeToEmails = null\r\n        })\r\n      },\r\n      handleSubResp (response, context): void {\r\n        if (response.value === 1) {\r\n          context.subscribeToEmails = true\r\n        } else if (response.value === 0) {\r\n          context.subscribeToEmails = false\r\n        } else {\r\n          context.subscribeToEmails = null\r\n        }\r\n      },\r\n      sendMessageThread (): void {\r\n        if (!this.group) {\r\n          return\r\n        }\r\n        this.sendMessage({\r\n          subject: this.messageSubject,\r\n          content: this.messageBody,\r\n          groupId: this.$route.params.groupid,\r\n          senderProfileId: this.$store.state.profile.profileId,\r\n          sendAsEmail: this.asEmail,\r\n          groupName: this.group.name,\r\n          senderName: this.$store.state.profile.firstName + ' ' + this.$store.state.profile.lastName,\r\n          link: this.$route.path\r\n        }, false)\r\n      },\r\n      sendMessage (messageDto, forceSend): void {\r\n        if (!this.isEdited && !forceSend) {\r\n          return\r\n        }\r\n\r\n        var self = this\r\n        this.messagesLoading = false\r\n        var url = `${this.$store.state.apiBases.messageservice + this.$store.state.apiEndpoints.sendgroupmessage[0]}`\r\n        this.cancelSendMessage()\r\n        this.$http.post(url, messageDto).then((resp) => {\r\n          self.getMessages()\r\n        })\r\n      },\r\n      cancelSendMessage () {\r\n        this.messageSubject = ''\r\n        this.messageBody = ''\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .notes {\r\n    .loading {\r\n      text-align: center;\r\n      margin-top: 15px;\r\n      margin-bottom: 5px;\r\n    }\r\n\r\n    .message-actions {\r\n      margin-bottom: 10px;\r\n    }\r\n\r\n    .subject {\r\n      input {\r\n        margin: 3px 0;\r\n        width: 100%;\r\n      }\r\n    }\r\n\r\n    .messagebody {\r\n      textarea {\r\n        margin: 3px 0;\r\n        width: 100%;\r\n      }\r\n    }\r\n\r\n    .consent-checkbox {\r\n      margin-top: 20px;\r\n      min-height: 3em;\r\n    }\r\n\r\n    a {\r\n      color: $brand-red;\r\n      &.back {\r\n        color: #000;\r\n        svg {\r\n          margin-right: 5px;\r\n          color: $brand-red;\r\n        }\r\n      }\r\n    }\r\n\r\n    h3 {\r\n      margin-bottom: 10px;\r\n    }\r\n    .group-secondary {\r\n      background: #fff;\r\n      padding-top: 25px;\r\n      padding-bottom: 25px;\r\n      .cap-label {\r\n        display: block;\r\n        color: $brand-red;\r\n        margin: 40px 0 10px 0;\r\n      }\r\n    }\r\n\r\n    .group-list {\r\n      padding: 25px 25px 0 25px;\r\n      .user-row {\r\n        background: #fff;\r\n        margin-bottom: 5px;\r\n        padding: 15px;\r\n        .user {\r\n          a {\r\n            color: $brand-red;\r\n            font-weight: bold;\r\n            text-transform: uppercase;\r\n          }\r\n          .user-img {\r\n            float: left;\r\n            margin-right: 15px;\r\n          }\r\n        }\r\n        .portrait-size {\r\n          width: 50px;\r\n          height: 50px;\r\n        }\r\n      }\r\n    }\r\n\r\n    .flex-first {\r\n      -webkit-box-ordinal-group: 0;\r\n      -webkit-order: -1;\r\n      -ms-flex-order: -1;\r\n      order: -1;\r\n    }\r\n\r\n    @media (max-width: $media-sm-max) {\r\n      .flex-first {\r\n        -webkit-order: 2;\r\n        -ms-flex-order: 2;\r\n        order: 2;\r\n      }\r\n\r\n      .list-header {\r\n        padding-bottom: 15px;\r\n      }\r\n    }\r\n\r\n    .note {\r\n      background: #fff;\r\n      padding: 25px;\r\n      display: block;\r\n      margin-bottom: 10px;\r\n      p {\r\n        font-size: 16px!important;\r\n      }\r\n      .note-author {\r\n        display: block;\r\n        font-size: 13px;\r\n        color: $brand-grey8;\r\n        display: block;\r\n        margin-top: 10px;\r\n        span {\r\n          font-weight: bold;\r\n          color: #000;\r\n        }\r\n      }\r\n      .sender {\r\n        .name {\r\n          font-weight: bold;\r\n        }\r\n        .date, .time {\r\n          color: $brand-grey8;\r\n        }\r\n      }\r\n    }\r\n    .submit-note {\r\n      margin: 40px 0;\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Notes.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Notes.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Notes.vue?vue&type=template&id=d0a4b66c\"\nimport script from \"./Notes.vue?vue&type=script&lang=ts\"\nexport * from \"./Notes.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Notes.vue?vue&type=style&index=0&id=d0a4b66c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container acceptinvitation\"},[(_vm.groupLoading)?_c('div',[_c('loading')],1):_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-8 mx-auto\"},[_c('span',{staticClass:\"prompt d-block mb-3\"},[_vm._v(_vm._s(_vm.$t('groups.invitationPrompt')))]),_c('h3',{staticClass:\"d-block\"},[_vm._v(\" \"+_vm._s(_vm.group.name)+\" \")]),_c('div',[_vm._v(_vm._s(_vm.group.description))]),_c('div',{staticClass:\"spacer\"})])]),_c('div',{staticClass:\"row button-row\"},[_c('div',{staticClass:\"col-12 col-md-8 mx-auto\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"submit\",\"size\":1,\"title\":_vm.$t('groups.acceptInvitation'),\"icon\":\"chevron-right\",\"click-event\":\"joinGroup\"},on:{\"joinGroup\":_vm.acceptInvitation}}),_c('div',{staticClass:\"spacer\"}),_c('sprbutton',{staticClass:\"spr-redborder button-width inline\",attrs:{\"type\":\"submit\",\"size\":1,\"title\":_vm.$t('groups.declineInvitation'),\"icon\":\"chevron-right\",\"click-event\":\"removeInvitation\"},on:{\"removeInvitation\":_vm.removeInvitation}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"container acceptinvitation\">\r\n    <div v-if=\"groupLoading\">\r\n      <loading />\r\n    </div>\r\n    <div v-else>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 col-md-8 mx-auto\">\r\n          <span class=\"prompt d-block mb-3\">{{ $t('groups.invitationPrompt') }}</span>\r\n          <h3 class=\"d-block\">\r\n            {{ group.name }}\r\n          </h3>\r\n          <div>{{ group.description }}</div>\r\n          <div class=\"spacer\" />\r\n        </div>\r\n      </div>\r\n      <div class=\"row button-row\">\r\n        <div class=\"col-12 col-md-8 mx-auto\">\r\n          <sprbutton type=\"submit\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('groups.acceptInvitation')\"\r\n                     icon=\"chevron-right\"\r\n                     class=\"spr-redborder button-width\"\r\n                     click-event=\"joinGroup\"\r\n                     @joinGroup=\"acceptInvitation\"\r\n          />\r\n          <div class=\"spacer\" />\r\n          <sprbutton type=\"submit\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('groups.declineInvitation')\"\r\n                     icon=\"chevron-right\"\r\n                     class=\"spr-redborder button-width inline\"\r\n                     click-event=\"removeInvitation\"\r\n                     @removeInvitation=\"removeInvitation\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n  import loading from '../SPRLoading.vue'\r\n\r\n  export default {\r\n    name: 'Acceptinvitation',\r\n    components: { sprbutton, loading },\r\n    data () {\r\n      return {\r\n        groupLoading: false,\r\n        group: {\r\n          description: ''\r\n        }\r\n      }\r\n    },\r\n    mounted () {\r\n      this.loadGroup()\r\n    },\r\n    methods: {\r\n      removeInvitation () {\r\n        const self = this\r\n        const payload = {\r\n          payload1: this.$route.params.id,\r\n          payload2: this.$store.state.profile.profileId\r\n        }\r\n\r\n        const uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupremmembershiprequest[0]\r\n        this.$http.post(uri, payload).then(s => {\r\n          this.$router.push('/')\r\n        }, f => {\r\n          self.inProgress = false\r\n        })\r\n      },\r\n      acceptInvitation () {\r\n        this.groupLoading = true\r\n        var url = `${this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupacceptinvitation[0]}`.replace('{0}', this.$route.params.id)\r\n        this.$http.put(url, null).then((resp) => {\r\n                                         this.groupLoading = false\r\n                                         this.$router.push(`/groups/group/${this.$route.params.id}`)\r\n                                       },\r\n                                       (error) => {\r\n                                         console.log('accept invitation failed', error)\r\n                                         this.groupLoading = false\r\n                                       })\r\n      },\r\n      loadGroup () {\r\n        var self = this\r\n        var groupId = this.$route.params.id\r\n\r\n        if (!groupId) this.$router.push('/profile')\r\n\r\n        // load group\r\n        var url = `${self.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.groupgetbyidlight[0]}?id=${groupId}`\r\n        this.$http.get(url).then((resp) => {\r\n          self.group = resp.body\r\n        }, fail => {\r\n          if (fail.status === 403) {\r\n            this.showAlert403()\r\n          }\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .acceptinvitation {\r\n    min-height: calc(100vh - 230px);\r\n    text-align: center;\r\n    padding-top: 50px;\r\n\r\n    .spacer {\r\n      min-height: 20px\r\n    }\r\n\r\n    .prompt {\r\n      font-size: 1.3rem;\r\n    }\r\n\r\n    @media (min-width: $media-md) {\r\n      padding-top: 150px;\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AcceptInvitation.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AcceptInvitation.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AcceptInvitation.vue?vue&type=template&id=f5c2ce58\"\nimport script from \"./AcceptInvitation.vue?vue&type=script&lang=js\"\nexport * from \"./AcceptInvitation.vue?vue&type=script&lang=js\"\nimport style0 from \"./AcceptInvitation.vue?vue&type=style&index=0&id=f5c2ce58&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.selectImage)?_c('div',{staticClass:\"event-page\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 back-header py-2\"},[_c('span',{on:{\"click\":function($event){_vm.selectImage = null}}},[_c('font-awesome-icon',{staticClass:\"back\",attrs:{\"icon\":\"chevron-left\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"customerForm.back\"))+\" \")],1)])]),_c('div',{staticClass:\"row\"},_vm._l((_vm.imageLib),function(e,i){return _c('div',{key:i,staticClass:\"col-6 col-sm-6 col-md-4 py-1\"},[_c('img',{staticClass:\"select-thumb\",class:{ selected: _vm.libImage === e.url },attrs:{\"src\":e.prev,\"alt\":\"background image option\"},on:{\"click\":function($event){_vm.libImage = e.url}}})])}),0),_c('div',{staticClass:\"row pb-3\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width my-1\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('eventPage.cancel'),\"click-event\":\"can\"},on:{\"can\":function($event){_vm.selectImage = null}}}),_c('sprbutton',{staticClass:\"spr-redborder button-width my-1\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('eventPage.select'),\"click-event\":\"selectimg\"},on:{\"selectimg\":_vm.setLibraryImage}})],1)])])]):_c('div',{staticClass:\"event-page\"},[(_vm.isUpdating)?_c('div',{staticClass:\"updating\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)]):_vm._e(),_c('div',{staticClass:\"col-12\",staticStyle:{\"box-sizing\":\"content-box\"}},[_c('backbar')],1),_c('div',{staticClass:\"hero\"},[_c('div',{staticClass:\"eventimage\",style:(_vm.heroImageStyle)}),_c('div',{staticClass:\"thumbimage\",style:(_vm.thumbImageStyle)}),_c('div',{staticClass:\"container\"},[_c('h1',[_c('div',{staticClass:\"event-title-container\"},[_c('div',{staticClass:\"white-before\"}),_c('div',{staticClass:\"inline-with-whitebefore\"},[_c('span',{staticClass:\"event-title\"},[_vm._v(_vm._s(_vm.translation.name))])])])]),(_vm.sprEvent.category !== null)?_c('span',{staticClass:\"category\"},[_vm._v(_vm._s(_vm.computedCategory))]):_vm._e(),(_vm.sprEvent.type !== null)?_c('span',{staticClass:\"type\"},[_vm._v(_vm._s(_vm.computedType))]):_vm._e(),_c('div',{staticClass:\"row\"},[(_vm.showMessageFull)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"message-full\"},[_c('div',{staticClass:\"message-text\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.eventClosedMessage\"))+\" \")])])]):_vm._e()]),(_vm.hasRole('Admin') || _vm.hasRole('NationalAdmin') || _vm.isCreator || _vm.isEventAdmin || _vm.isAdd)?_c('div',{staticClass:\"actions\"},[(_vm.showJoinAction)?_c('sprbutton',{staticClass:\"spr-greyborder button-width\",attrs:{\"description\":\"Join Event As Admin\",\"contrast\":\"\",\"type\":\"primary\",\"size\":1,\"title\":_vm.modalButton,\"click-event\":\"joinEvenet\",\"disabled\":_vm.isRegistrationDeadlinePassed},on:{\"joinEvenet\":_vm.eventStartJoinButton}}):_vm._e(),(_vm.eventEditOpen)?_c('sprbutton',{staticClass:\"spr-greyborder button-width\",attrs:{\"contrast\":\"\",\"type\":\"primary\",\"size\":1,\"title\":_vm.isAdd ? _vm.$t('eventPage.publish') : _vm.$t('eventPage.save'),\"click-event\":\"eventPublish\"},on:{\"eventPublish\":_vm.eventPublishButton}}):_vm._e(),(!_vm.eventEditOpen && _vm.isEdit)?_c('sprbutton',{staticClass:\"spr-greyborder button-width\",attrs:{\"contrast\":\"\",\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('eventPage.edit'),\"click-event\":\"eventEdit\"},on:{\"eventEdit\":_vm.eventEditButton}}):_vm._e(),(!_vm.eventEditOpen && (_vm.isCreator || _vm.isEventAdmin))?_c('sprbutton',{staticClass:\"spr-greyborder button-width\",attrs:{\"contrast\":\"\",\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('eventPage.copy'),\"click-event\":\"eventCopy\"},on:{\"eventCopy\":_vm.eventCopyButton}}):_vm._e(),(_vm.eventEditOpen)?_c('sprbutton',{staticClass:\"spr-greyborder button-width\",attrs:{\"contrast\":\"\",\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('eventPage.cancel'),\"click-event\":\"eventCancel\"},on:{\"eventCancel\":_vm.eventCancelButton}}):_vm._e(),(_vm.sprEvent.id)?_c('b-btn',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.removeModal\",modifiers:{\"removeModal\":true}}],staticClass:\"spr-button button-width spr-roundbox-1\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.remove\"))+\" \")]):_vm._e(),(_vm.isCreator)?_c('div',{staticClass:\"organizer\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 col-lg-4\"}),_c('div',{staticClass:\"col-9 col-lg-8\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"eventPage.organizerYou\")))])])])]):_vm._e()],1):(_vm.showJoinAction)?_c('div',{staticClass:\"actions\"},[_c('sprbutton',{staticClass:\"spr-greyborder button-width\",attrs:{\"description\":\"Join Event\",\"type\":\"primary\",\"contrast\":\"\",\"size\":1,\"title\":_vm.modalButton,\"click-event\":\"joinEvenet\",\"disabled\":_vm.isRegistrationDeadlinePassed},on:{\"joinEvenet\":_vm.eventStartJoinButton}})],1):_vm._e()])]),_c('div',{staticClass:\"event-content\"},[(_vm.eventEditOpen)?_c('div',{staticClass:\"edit-row hero-area\"},[_c('div',{staticClass:\"container top-space\"},[_c('div',{staticClass:\"row\"},[_c('div',{ref:\"validation\",staticClass:\"col-12\"},[(_vm.validationErrors && _vm.validationErrors.length > 0)?_c('sprvalidation',{staticClass:\"mx-auto my-4 d-block\",attrs:{\"validation-errors\":_vm.validationErrors}}):_vm._e()],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t(\"eventPage.languageSelector\")))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},_vm._l((_vm.availableTranslations),function(e,i){return _c('div',{key:i,staticClass:\"translation\"},[_c('button',{staticClass:\"language-name\",class:{\n                      selected:\n                        _vm.currentTranslation.languageId === e.languageId,\n                    },on:{\"click\":function($event){return _vm.changeEditorLanguage(e.languageId)}}},[_vm._v(\" \"+_vm._s(e.text)+\" \")]),(_vm.currentTranslation.languageId !== e.languageId)?_c('button',{staticClass:\"remove-language\",on:{\"click\":function($event){return _vm.deleteTranslation(e.languageId)}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.removeLanguage\"))+\" \"+_vm._s(e.text)+\" \")]):_vm._e()])}),0),_c('div',{staticClass:\"col-12\"},_vm._l((_vm.possibleTranslations),function(e,i){return _c('div',{key:i,staticClass:\"translation\"},[_c('button',{staticClass:\"disabled language-name\"},[_vm._v(\" \"+_vm._s(e.text)+\" \")]),_c('button',{staticClass:\"remove-language\",on:{\"click\":function($event){return _vm.newTranslation(e.id)}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.addLanguage\"))+\" \"+_vm._s(e.text)+\" \")])])}),0)])])]),_c('div',{staticClass:\"space-between-row mt-3\"},[_c('div',{staticClass:\"col-12 col-lg-8\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('eventPage.name'),\"is-valid\":!_vm.errors.has('eventPage.name'),\"name\":\"eventPage.name\",\"required\":true},model:{value:(_vm.currentTranslation.name),callback:function ($$v) {_vm.$set(_vm.currentTranslation, \"name\", $$v)},expression:\"currentTranslation.name\"}})],1)]),_c('div',{staticClass:\"row mt-3\"},[_c('div',{staticClass:\"col-12 col-lg-8\"},[_c('eventorganizerdropdown',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|hasEventOrganizer'),expression:\"'required|hasEventOrganizer'\"}],attrs:{\"hint\":_vm.$t('eventPage.eventDistrictSection'),\"name\":\"eventPage.eventDistrictSection\",\"required\":true,\"value\":_vm.eventOrganizerData,\"is-valid\":!_vm.errors.has('eventPage.eventDistrictSection')},on:{\"input\":_vm.onEventOrganizerChanged}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 volunteertask-filter\"},[_c('a',{class:{ selected: !_vm.isVolunteerTask },attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.onRegularEventClick}},[_vm._v(_vm._s(_vm.$t(\"eventPage.event\")))]),_c('a',{class:{ selected: _vm.isVolunteerTask },attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.onVolunteerTaskClick}},[_vm._v(_vm._s(_vm.$t(\"eventPage.volunteerTask\")))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-left\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('eventPage.eventCategory')))])]),_c('div',{staticClass:\"col-12\"},[_c('checkboxlist',{attrs:{\"list\":_vm.involvedEventCategoriesOptions,\"rows\":3},model:{value:(_vm.sprEvent.category),callback:function ($$v) {_vm.$set(_vm.sprEvent, \"category\", $$v)},expression:\"sprEvent.category\"}})],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isVolunteerTask),expression:\"!isVolunteerTask\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-left\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('eventPage.eventType')))])]),_c('div',{staticClass:\"col-12\"},[_c('checkboxlist',{attrs:{\"list\":_vm.eventTypes,\"rows\":3},model:{value:(_vm.sprEvent.type),callback:function ($$v) {_vm.$set(_vm.sprEvent, \"type\", $$v)},expression:\"sprEvent.type\"}})],1)]),_c('div',{staticClass:\"row\",staticStyle:{\"margin-top\":\"25px\"}},[_c('div',{staticClass:\"col-md-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('eventPage.isOnline'),\"aria-label\":_vm.$t('eventPage.isOnline')},model:{value:(_vm.sprEvent.isOnline),callback:function ($$v) {_vm.$set(_vm.sprEvent, \"isOnline\", $$v)},expression:\"sprEvent.isOnline\"}})],1),_c('div',{staticClass:\"col-md-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('eventPage.visibility'),\"aria-label\":_vm.$t('eventPage.visibility')},model:{value:(_vm.sprEvent.isPublic),callback:function ($$v) {_vm.$set(_vm.sprEvent, \"isPublic\", $$v)},expression:\"sprEvent.isPublic\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"vertical-container\"},[_c('div',{staticClass:\"cap-label cap-label-language\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.eventLanguages\"))+\" \")]),_c('div',{staticClass:\"language-content\"},[_c('pillbox',{attrs:{\"items\":_vm.languages,\"selected\":_vm.selectedlanguages},on:{\"change\":_vm.onLanguageChanged}})],1)])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-12 col-md-8\"},[_c('div',{staticClass:\"upload\"},[_c('div',{staticClass:\"cap-label mt-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.changeBackground\"))+\" \")]),_c('b-form-file',{attrs:{\"accept\":\"image/*\",\"prefix\":\"img\",\"placeholder\":_vm.$t('eventPage.chooseBackgroundPlaceholder'),\"choose-label\":_vm.$t('eventPage.chooseButton') + ': ',\"drop-label\":_vm.$t('eventPage.dropFile')},on:{\"change\":_vm.onBackgroundFileChange}})],1)]),_c('div',{staticClass:\"col-12\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('eventPage.bgBankButton'),\"click-event\":\"selectBg\"},on:{\"selectBg\":function($event){_vm.selectImage = 1}}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-12 col-md-8\"},[_c('div',{staticClass:\"upload\"},[_c('div',{staticClass:\"cap-label mt-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.changeThumbnail\"))+\" \")]),_c('b-form-file',{attrs:{\"accept\":\"image/*\",\"prefix\":\"img\",\"placeholder\":_vm.$t('eventPage.chooseThumbPlaceHolder'),\"choose-label\":_vm.$t('eventPage.chooseButton') + ': ',\"drop-label\":_vm.$t('eventPage.dropFile')},on:{\"change\":_vm.onThumbFileChange}})],1)]),_c('div',{staticClass:\"col-12\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('eventPage.thumbBankButton'),\"click-event\":\"selectBg\"},on:{\"selectBg\":function($event){_vm.selectImage = 2}}})],1)]),_c('div',{staticClass:\"row mt-3\"},[_c('div',{staticClass:\"col-12 col-sm-12 col-md-8\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('eventPage.moreInfoQuestion')},model:{value:(_vm.currentTranslation.moreInfoQuestion),callback:function ($$v) {_vm.$set(_vm.currentTranslation, \"moreInfoQuestion\", $$v)},expression:\"currentTranslation.moreInfoQuestion\"}})],1)])])]):_vm._e(),_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12\"},[_c('div',{staticClass:\"column\"},[_c('div',{staticClass:\"event-block time\"},[(_vm.isEdit && _vm.eventEditOpen)?_c('a',{staticClass:\"edit-corner\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.timeEditButton}},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"pencil-alt\",\"aria-hidden\":\"true\"}})],1):_vm._e(),(!_vm.timeEditorOpen)?_c('div',{staticClass:\"event-block-container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 col-sm-2\"},[_c('span',{staticClass:\"icon\",attrs:{\"aria-hidden\":\"true\"}},[_c('font-awesome-icon',{attrs:{\"icon\":['far', 'clock'],\"aria-hidden\":\"true\"}})],1)]),_c('div',{staticClass:\"col-10 col-sm-10\"},[_c('span',[_vm._v(_vm._s(_vm.formattedStartDate)+\" \"),(\n                          _vm.formattedEndDate !== _vm.formattedStartDate &&\n                            !_vm.isVolunteerTask\n                        )?_c('span',[_vm._v(\" – \"+_vm._s(_vm.formattedEndDate))]):_vm._e()]),_c('br'),(_vm.sprEvent.isAllDay)?_c('span',[_vm._v(_vm._s(_vm.$t(\"eventPage.allDay\")))]):_c('span',[_vm._v(_vm._s(_vm.$t(\"eventPage.time\"))+\" \"+_vm._s(_vm.formattedStartTime)+\" \"),(\n                          _vm.formattedEndTime !== _vm.formattedStartTime &&\n                            !_vm.isVolunteerTask\n                        )?_c('span',[_vm._v(\" – \"+_vm._s(_vm.formattedEndTime))]):_vm._e()]),_c('br'),(_vm.sprEvent.occurance > 1)?_c('span',{staticClass:\"grey-text\"},[_vm._v(_vm._s(_vm.occurrenceText)),_c('br')]):_vm._e(),(\n                        _vm.sprEvent.registrationDeadline &&\n                          !_vm.isRegistrationDeadlinePassed\n                      )?_c('span',{staticClass:\"grey-text\"},[_vm._v(_vm._s(_vm.$t(\"eventPage.registrationDeadline\"))+\": \"+_vm._s(_vm.displayRegistrationDeadline)),_c('br')]):(\n                        _vm.sprEvent.registrationDeadline &&\n                          _vm.isRegistrationDeadlinePassed\n                      )?_c('span',{staticClass:\"grey-text\"},[_vm._v(_vm._s(_vm.$t(\"eventPage.registrationDeadlinePassed\"))),_c('br')]):_vm._e()])])]):_c('div',{staticClass:\"event-block-container edit-area\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12\"},[_c('span',{staticClass:\"cap-label edit-label\"},[_vm._v(_vm._s(_vm.isVolunteerTask ? _vm.$t(\"eventPage.volunteerTaskDate\") : _vm.$t(\"eventPage.editDate\")))]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-10 col-sm-6 col-md-3 col-xl-2\"},[_c('datepicker',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],key:_vm.componentKey,attrs:{\"title\":_vm.isVolunteerTask\n                              ? _vm.$t('eventPage.volunteerTaskDeadline')\n                              : _vm.$t('eventPage.startDate'),\"has-error\":_vm.errors.has('eventPage.startDate'),\"name\":\"eventPage.startDate\",\"required\":true,\"initial\":_vm.displayStartDate,\"options\":_vm.datepickerOptions},on:{\"input\":_vm.handleStartDateInput},model:{value:(_vm.displayStartDate),callback:function ($$v) {_vm.displayStartDate=$$v},expression:\"displayStartDate\"}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.sprEvent.isAllDay),expression:\"!sprEvent.isAllDay\"}],staticClass:\"col-10 col-sm-6 col-md-3 col-xl-2\"},[_c('timepicker',{attrs:{\"title\":_vm.isVolunteerTask\n                              ? _vm.$t('eventPage.endTime')\n                              : _vm.$t('eventPage.startTime'),\"disabled\":_vm.sprEvent.isAllDay},model:{value:(_vm.eventStartTime),callback:function ($$v) {_vm.eventStartTime=$$v},expression:\"eventStartTime\"}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.sprEvent.isAllDay && !_vm.isVolunteerTask),expression:\"!sprEvent.isAllDay && !isVolunteerTask\"}],staticClass:\"col-10 col-sm-6 col-md-3 col-xl-2\"},[_c('timepicker',{attrs:{\"title\":_vm.$t('eventPage.endTime'),\"disabled\":_vm.sprEvent.isAllDay},model:{value:(_vm.eventEndTime),callback:function ($$v) {_vm.eventEndTime=$$v},expression:\"eventEndTime\"}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isVolunteerTask),expression:\"!isVolunteerTask\"}],staticClass:\"col-10 col-sm-6 col-md-3 col-xl-2\"},[_c('datepicker',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({\n                            required: true,\n                            dateIsAfter: _vm.displayStartDate,\n                            dateisbefore:_vm.displayMaxEndDate\n                          }),expression:\"{\\n                            required: true,\\n                            dateIsAfter: displayStartDate,\\n                            dateisbefore:displayMaxEndDate\\n                          }\"}],key:_vm.componentKey,attrs:{\"title\":_vm.$t('eventPage.endDate'),\"initial\":_vm.displayEndDate,\"has-error\":_vm.errors.has('eventPage.endDate'),\"name\":\"eventPage.endDate\",\"required\":true,\"limit\":_vm.endDateLimit,\"options\":_vm.datepickerOptions},model:{value:(_vm.displayEndDate),callback:function ($$v) {_vm.displayEndDate=$$v},expression:\"displayEndDate\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('eventPage.allDay'),\"aria-label\":_vm.$t('eventPage.allDay')},model:{value:(_vm.sprEvent.isAllDay),callback:function ($$v) {_vm.$set(_vm.sprEvent, \"isAllDay\", $$v)},expression:\"sprEvent.isAllDay\"}})],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isAdd),expression:\"isAdd\"}]},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('eventPage.recurringEvent'),\"value\":_vm.isRecurring,\"aria-label\":_vm.$t('eventPage.recurringEvent')},on:{\"input\":_vm.onRecurringEventChange}})],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isRecurring),expression:\"isRecurring\"}]},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-10 col-sm-6 col-xl-4\"},[_c('dropdownnumber',{attrs:{\"title\":_vm.$t('eventPage.repeat'),\"items\":_vm.recurrenceFrequencyOptions,\"is-valid\":true,\"value\":_vm.recurrenceFrequency},on:{\"input\":_vm.onFrequencyUpdate}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"pr-md-0 col-10 col-sm-6 col-md-3 col-xl-2\"},[_c('datepicker',{key:_vm.componentKey,attrs:{\"title\":_vm.$t('eventPage.recurringUntil'),\"value\":_vm.recurringUntil,\"initial\":_vm.recurringUntil,\"has-error\":_vm.errors.has('eventPage.recurringUntil'),\"name\":\"eventPage.recurringUntil\",\"options\":_vm.datepickerOptions,\"limit\":_vm.recurringUntilLimit},on:{\"input\":_vm.onRecurringUntilUpdate}})],1),_c('div',{staticClass:\"col-10 col-md-9 col-xl-6 repetitions\"},[_c('div',{staticClass:\"wrap\"},[_c('span',{staticClass:\"prefix\"},[_vm._v(_vm._s(_vm.$t(\"eventPage.repetitionsPrefix\")))]),_c('numberinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('between:1,52'),expression:\"'between:1,52'\"}],attrs:{\"value\":Number(_vm.sprEvent.repeat),\"min\":2,\"max\":52,\"is-valid\":!_vm.errors.has(\n                                    'eventPage.recurringRepetitions'\n                                  ),\"name\":\"eventPage.recurringRepetitions\"},on:{\"input\":_vm.onRepetitionsUpdate}}),_c('span',{staticClass:\"suffix\"},[_vm._v(_vm._s(_vm.$t(\"eventPage.repetitionsSuffix\")))])],1)])])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-10 col-sm-6 col-xl-4\"},[_c('datepicker',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({\n                            required: false,\n                            dateIsBefore: _vm.validatorDate,\n                          }),expression:\"{\\n                            required: false,\\n                            dateIsBefore: validatorDate,\\n                          }\"}],key:_vm.componentKey,attrs:{\"title\":_vm.$t('eventPage.registrationDeadline'),\"initial\":_vm.registrationDeadline,\"has-error\":_vm.errors.has('eventPage.registrationDeadline'),\"name\":\"eventPage.registrationDeadline\",\"options\":_vm.datepickerOptions,\"is-nullable\":true,\"placeholder\":_vm.$t('eventPage.chooseDate'),\"limit\":_vm.registrationDeadlineLimit},model:{value:(_vm.registrationDeadline),callback:function ($$v) {_vm.registrationDeadline=$$v},expression:\"registrationDeadline\"}})],1)])])])])]),_c('div',{staticClass:\"event-block location\"},[(_vm.isEdit && _vm.eventEditOpen)?_c('a',{staticClass:\"edit-corner\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.locationEditButton}},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"pencil-alt\",\"aria-hidden\":\"true\"}})],1):_vm._e(),(!_vm.locationEditorOpen)?_c('div',{staticClass:\"event-block-container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 col-sm-2\"},[_c('span',{staticClass:\"icon\",attrs:{\"aria-hidden\":\"true\"}},[_c('font-awesome-icon',{attrs:{\"icon\":\"map-marker-alt\",\"aria-hidden\":\"true\"}})],1)]),_c('div',{staticClass:\"col-10 col-sm-10\"},[(_vm.formattedLocation)?_c('p',{staticClass:\"mr-4\"},[_vm._v(\" \"+_vm._s(_vm.formattedLocation)+\" \")]):_vm._e(),(_vm.sprEvent.isOnline)?_c('p',{staticClass:\"mr-4\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.isOnline\"))+\" \")]):_vm._e(),(_vm.hasLocation)?_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.showMap}},[_vm._v(_vm._s(_vm.$t(\"eventPage.showOnMap\")))]):_vm._e(),(_vm.hasLocation && _vm.mapIsVisible)?_c('div',{staticClass:\"map\"},[_c('VueMap',{staticStyle:{\"width\":\"100%\",\"height\":\"250px\"},attrs:{\"center\":_vm.mapCenter,\"zoom\":_vm.mapZoom}},_vm._l((_vm.markers),function(m){return _c('VueMarker',{key:m.id,attrs:{\"position\":m.position,\"clickable\":false,\"draggable\":false},on:{\"update:position\":function($event){return _vm.$set(m, \"position\", $event)}}})}),1)],1):_vm._e(),(\n                        _vm.isEdit && _vm.hasLocation && _vm.mapIsVisible && _vm.geocodeFailed\n                      )?_c('div',{staticClass:\"geocodefailed\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.geocodeFailed\"))+\" \")]):_vm._e()])])]):_c('div',{staticClass:\"event-block-container edit-area\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12\"},[_c('span',{staticClass:\"cap-label edit-label\"},[_vm._v(_vm._s(_vm.$t(\"eventPage.editLocation\")))]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-lg-8\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('eventPage.placeName'),\"name\":\"eventPage.placeName\",\"is-valid\":true},model:{value:(_vm.currentTranslation.placeName),callback:function ($$v) {_vm.$set(_vm.currentTranslation, \"placeName\", $$v)},expression:\"currentTranslation.placeName\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-lg-8\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('eventPage.streetAddress'),\"name\":\"eventPage.streetAddress\",\"is-valid\":true},model:{value:(_vm.currentTranslation.streetAddress),callback:function ($$v) {_vm.$set(_vm.currentTranslation, \"streetAddress\", $$v)},expression:\"currentTranslation.streetAddress\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6 col-md-4 col-lg-2\"},[_c('div',{staticClass:\"search-item\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.zipCode\"))),(!_vm.sprEvent.isOnline)?_c('span',[_vm._v(\"*\")]):_vm._e()]),_c('singleselectdropdown',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({\n                              required: !_vm.sprEvent.isOnline,\n                            }),expression:\"{\\n                              required: !sprEvent.isOnline,\\n                            }\"}],attrs:{\"fixed-width\":true,\"required\":!_vm.sprEvent.isOnline,\"name\":\"eventPage.zipCode\",\"is-valid\":!_vm.errors.has('eventPage.zipCode'),\"value\":_vm.selectedZipLocation,\"searchable\":true,\"allowempty\":true,\"items\":_vm.zipCodes},on:{\"change\":_vm.onIsZipCodeChanged},model:{value:(_vm.selectedZipLocation),callback:function ($$v) {_vm.selectedZipLocation=$$v},expression:\"selectedZipLocation\"}})],1)]),_c('div',{staticClass:\"col-12 col-sm-6 col-md-8 col-lg-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({\n                            required: !_vm.sprEvent.isOnline,\n                          }),expression:\"{\\n                            required: !sprEvent.isOnline,\\n                          }\"}],attrs:{\"required\":!_vm.sprEvent.isOnline,\"hint\":_vm.$t('eventPage.city'),\"name\":\"eventPage.city\",\"is-valid\":!_vm.errors.has('eventPage.city')},model:{value:(_vm.currentTranslation.city),callback:function ($$v) {_vm.$set(_vm.currentTranslation, \"city\", $$v)},expression:\"currentTranslation.city\"}})],1)])])])])]),_c('div',{staticClass:\"event-block\"},[(_vm.isEdit && _vm.eventEditOpen)?_c('a',{staticClass:\"edit-corner\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.feeEditButton}},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"pencil-alt\",\"aria-hidden\":\"true\"}})],1):_vm._e(),(!_vm.feeEditorOpen)?_c('div',{staticClass:\"event-block-container fee\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 col-sm-2\"},[_c('span',{staticClass:\"icon\",attrs:{\"aria-hidden\":\"true\"}},[_c('font-awesome-icon',{attrs:{\"icon\":\"euro-sign\",\"aria-hidden\":\"true\"}})],1)]),_c('div',{staticClass:\"col-12 col-lg-8\"},[_vm._v(\" \"+_vm._s(_vm.translation.price)+\" \")])])]):_c('div',{staticClass:\"event-block-container edit-area\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-lg-8\"},[_c('forminput',{attrs:{\"hint\":_vm.$t('eventPage.fee'),\"name\":\"eventPage.fee\",\"is-valid\":true},model:{value:(_vm.currentTranslation.price),callback:function ($$v) {_vm.$set(_vm.currentTranslation, \"price\", $$v)},expression:\"currentTranslation.price\"}})],1)])])])]),_c('div',{staticClass:\"event-block\"},[(_vm.isEdit && _vm.eventEditOpen)?_c('a',{staticClass:\"edit-corner\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.descriptionEditButton}},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"pencil-alt\",\"aria-hidden\":\"true\"}})],1):_vm._e(),(!_vm.descriptionEditorOpen)?_c('div',{staticClass:\"event-block-container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-lg-8\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t(\"eventPage.description\")))]),(_vm.translation.description)?_c('p',{directives:[{name:\"linkified\",rawName:\"v-linkified:options\",value:({ nl2br: true }),expression:\"{ nl2br: true }\",arg:\"options\"}],key:_vm.componentKey},[_vm._v(\" \"+_vm._s(_vm.translation.description)+\" \")]):_vm._e()])])]):_c('div',{staticClass:\"event-block-container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-lg-8\"},[_c('textareainput',{attrs:{\"title\":_vm.$t('eventPage.description'),\"rows\":8},model:{value:(_vm.currentTranslation.description),callback:function ($$v) {_vm.$set(_vm.currentTranslation, \"description\", $$v)},expression:\"currentTranslation.description\"}})],1)])])]),_c('div',{staticClass:\"event-block\"},[(_vm.isEdit && _vm.eventEditOpen)?_c('a',{staticClass:\"edit-corner\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.contactEditButton}},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"pencil-alt\",\"aria-hidden\":\"true\"}})],1):_vm._e(),(!_vm.contactEditorOpen)?_c('div',{staticClass:\"event-block-container contact\"},[_c('div',{staticClass:\"row field-row\"},[_c('div',{staticClass:\"col-12 col-lg-8\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t(\"eventPage.contact\")))]),(_vm.sprEvent.contact)?_c('div',{staticClass:\"contact-person\"},[_vm._v(\" \"+_vm._s(_vm.sprEvent.contact.firstName)+\" \"+_vm._s(_vm.sprEvent.contact.lastName)+\" \")]):_vm._e(),(_vm.sprEvent.contact.email)?_c('span',[_vm._v(_vm._s(_vm.sprEvent.contact.email))]):_vm._e(),_c('br'),(_vm.sprEvent.contact.phone)?_c('span',[_vm._v(_vm._s(_vm.sprEvent.contact.phone))]):_vm._e()])])]):_c('div',{staticClass:\"event-block-container contact\"},[_c('div',{staticClass:\"row field-row\"},[_c('div',{staticClass:\"col-12 col-lg-8\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t(\"eventPage.contact\")))]),_c('div',{staticClass:\"contact-details\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('eventPage.firstName'),\"name\":\"eventPage.firstName\",\"is-valid\":!_vm.errors.has('eventPage.firstName'),\"required\":true},model:{value:(_vm.sprEvent.contact.firstName),callback:function ($$v) {_vm.$set(_vm.sprEvent.contact, \"firstName\", $$v)},expression:\"sprEvent.contact.firstName\"}}),_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('eventPage.lastName'),\"name\":\"eventPage.lastName\",\"is-valid\":!_vm.errors.has('eventPage.lastName'),\"required\":true},model:{value:(_vm.sprEvent.contact.lastName),callback:function ($$v) {_vm.$set(_vm.sprEvent.contact, \"lastName\", $$v)},expression:\"sprEvent.contact.lastName\"}}),_c('forminput',{attrs:{\"hint\":_vm.$t('eventPage.email'),\"name\":\"sprEvent.contact.email\",\"is-valid\":true},model:{value:(_vm.sprEvent.contact.email),callback:function ($$v) {_vm.$set(_vm.sprEvent.contact, \"email\", $$v)},expression:\"sprEvent.contact.email\"}}),_c('forminput',{attrs:{\"hint\":_vm.$t('eventPage.phone'),\"name\":\"sprEvent.contact.phone\",\"is-valid\":true},model:{value:(_vm.sprEvent.contact.phone),callback:function ($$v) {_vm.$set(_vm.sprEvent.contact, \"phone\", $$v)},expression:\"sprEvent.contact.phone\"}})],1)])])])]),(!_vm.isAdd)?_c('div',{staticClass:\"event-block\"},[_c('sharethis')],1):_vm._e()])]),(_vm.hasRole('Admin') || _vm.hasRole('NationalAdmin') || _vm.isCreator || _vm.isEventAdmin)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"event-block admins\"},[(_vm.isEdit && _vm.eventEditOpen && (_vm.hasRole('Admin') || _vm.hasRole('NationalAdmin') || _vm.isCreator))?_c('a',{staticClass:\"edit-corner\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.adminsEditButton}},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"pencil-alt\",\"aria-hidden\":\"true\"}})],1):_vm._e(),_c('div',{staticClass:\"event-block-container\"},[_c('eventadmins',{attrs:{\"admins\":_vm.sprEvent.eventAdmins,\"is-edit-mode\":(_vm.hasRole('Admin') || _vm.hasRole('NationalAdmin') || _vm.isCreator || _vm.isAdd) && _vm.isEditAdminsOpen},on:{\"addAdmin\":_vm.onAddAdmin,\"removeAdmin\":_vm.onRemoveAdmin}})],1)])])]):_vm._e(),((_vm.isEdit && _vm.eventEditOpen) || _vm.isAdd)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-left\"},[_c('span',{staticClass:\"subheader\"},[_vm._v(_vm._s(_vm.$t('eventPage.eventRegistrationOptions')))])]),_c('div',{staticClass:\"col-md-12\"},[_c('sprradiogroupkey',{ref:\"eventRegistrationOptions\",attrs:{\"radio-group-color\":\"basic\",\"options\":_vm.eventRegistrationOptions},model:{value:(_vm.sprEvent.eventRegistration),callback:function ($$v) {_vm.$set(_vm.sprEvent, \"eventRegistration\", $$v)},expression:\"sprEvent.eventRegistration\"}})],1)]):_vm._e(),(((_vm.isEdit && _vm.eventEditOpen) || _vm.isAdd) && _vm.sprEvent.eventRegistration === 1)?_c('div',{staticClass:\"col-12 col-lg-8\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({ url: { require_protocol: true } }),expression:\"{ url: { require_protocol: true } }\"}],attrs:{\"hint\":_vm.$t('eventPage.externalEvent'),\"name\":\"eventPage.externalEvent\",\"placeholder\":_vm.$t('eventPage.externalEventPlaceholder'),\"is-valid\":!_vm.errors.has('eventPage.externalEvent')},model:{value:(_vm.currentTranslation.externalUrl),callback:function ($$v) {_vm.$set(_vm.currentTranslation, \"externalUrl\", $$v)},expression:\"currentTranslation.externalUrl\"}})],1):_vm._e(),((((_vm.isEdit && _vm.eventEditOpen) || _vm.isAdd) && _vm.sprEvent.eventRegistration === 0) || _vm.showViewRoles)?_c('div',{staticClass:\"event-block\"},[_c('div',{ref:\"editeventroles\",staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[(_vm.showEditRoles)?_c('SprCollapsible',{attrs:{\"title\":_vm.$t('eventPage.roles')}},[_c('editeventroles',{attrs:{\"show-warning\":_vm.showNoRolesWarning,\"eventid\":_vm.sprEvent.id},model:{value:(_vm.sprEvent.eventRoles),callback:function ($$v) {_vm.$set(_vm.sprEvent, \"eventRoles\", $$v)},expression:\"sprEvent.eventRoles\"}})],1):_vm._e(),((((_vm.isEdit && _vm.eventEditOpen) || _vm.isAdd) && _vm.sprEvent.eventRegistration === 0) && (_vm.isCreator || _vm.isEventAdmin || _vm.hasRole('Admin') || _vm.hasRole('NationalAdmin')))?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('eventPage.showParticipants'),\"value\":_vm.sprEvent.showParticipants,\"aria-label\":_vm.$t('eventPage.showParticipants')},on:{\"input\":_vm.onShowParticipantsChanged}})],1)]):_vm._e(),(_vm.showViewRoles)?_c('vieweventroles',{attrs:{\"title\":_vm.$t('eventPage.roles')},model:{value:(_vm.sprEvent.eventRoles),callback:function ($$v) {_vm.$set(_vm.sprEvent, \"eventRoles\", $$v)},expression:\"sprEvent.eventRoles\"}}):_vm._e()],1)])]):_vm._e(),((_vm.hasRole('Admin') || _vm.hasRole('NationalAdmin') || _vm.isCreator || _vm.isEventAdmin) && _vm.sprEvent.eventRegistration === 0)?_c('div',{staticClass:\"event-block contact-notifications\"},[(_vm.isEdit && _vm.eventEditOpen)?_c('a',{staticClass:\"edit-corner\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.contactNotificationsButton}},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"pencil-alt\",\"aria-hidden\":\"true\"}})],1):_vm._e(),(!_vm.contactNotificationsOpen)?_c('div',{staticClass:\"event-block-container contact\"},[_c('div',{staticClass:\"row field-row\"},[_c('div',{staticClass:\"col-12 col-lg-8\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t(\"eventPage.contactNotificationHeader\")))]),(_vm.contactsReadOnly)?_c('div',{staticClass:\"contact-person\"},[_c('div',{staticClass:\"onlyContactsInfo\"},[_c('div',[_vm._v(_vm._s(_vm.contactsReadOnly))])])]):_vm._e(),_c('div',{staticClass:\"row pt-3\"},[_c('div',{staticClass:\"col-12 col-sm-9 col-md-6\"},[_c('div',{staticClass:\"onlyFrequencyDefinition\"},[_c('dl',[_c('dt',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasContactNotifications),expression:\"hasContactNotifications\"}]},[_vm._v(\" \"+_vm._s(_vm.$t(\"userAdmin.sectionReportFrequency\"))+\" \")]),_c('dd',[_vm._v(_vm._s(_vm.frequencyDefinition))])])])])])])])]):_c('div',{staticClass:\"event-block-container contact\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-12\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t(\"eventPage.contactNotificationHeader\")))])]),_c('div',{staticClass:\"col-9 col-md-6\"},[_c('div',{staticClass:\"emailinput\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('email'),expression:\"'email'\"}],attrs:{\"input-type\":\"email\",\"placeholder\":_vm.$t('userAdmin.sectionReportContactAdd'),\"name\":\"contactNotifications.contactemail\",\"required\":false,\"is-valid\":!_vm.errors.has('contactNotifications.contactemail')},model:{value:(_vm.contactNotificationInputMail),callback:function ($$v) {_vm.contactNotificationInputMail=$$v},expression:\"contactNotificationInputMail\"}})],1)]),_c('div',{staticClass:\"col-3 col-md-6\"},[_c('sprbutton',{staticClass:\"add-button\",attrs:{\"size\":5,\"title\":_vm.$t('userAdmin.sectionReportContactAdd'),\"click-event\":\"addContactNotification\"},on:{\"addContactNotification\":_vm.onAddContactNotification}})],1)]),_c('div',{staticClass:\"col-12 editor-area\"},[_c('span',_vm._l((_vm.contactNotifications.contacts),function(contact,index){return _c('pill',{key:index,attrs:{\"value\":contact.email,\"show-delete\":true},on:{\"remove\":function($event){return _vm.onRemoveContact(contact)}}})}),1)]),_c('div',{staticClass:\"frequency\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"userAdmin.sectionReportFrequency\"))+\" \")]),_c('sprradiogroupkey',{ref:\"contactNotificationFrequency\",attrs:{\"radio-group-color\":\"basic\",\"options\":_vm.contactNotificationFrequencies},model:{value:(_vm.contactNotifications.notificationFrequency),callback:function ($$v) {_vm.$set(_vm.contactNotifications, \"notificationFrequency\", $$v)},expression:\"contactNotifications.notificationFrequency\"}})],1)]):_vm._e(),(((_vm.isEdit && _vm.eventEditOpen) || _vm.isAdd) && _vm.sprEvent.eventRegistration === 0)?_c('div',{staticClass:\"event-block\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 participants\"},[(_vm.hasRole('Admin') || _vm.hasRole('NationalAdmin') || _vm.isCreator || _vm.isEventAdmin)?_c('div',[_c('eventparticipantsgrid',{on:{\"change\":_vm.onParticipationChanged,\"changeRemoval\":_vm.onRemoveParticipants},model:{value:(_vm.sprEvent.eventRoles),callback:function ($$v) {_vm.$set(_vm.sprEvent, \"eventRoles\", $$v)},expression:\"sprEvent.eventRoles\"}})],1):_vm._e()])])]):_vm._e()]),(_vm.hasRole('Admin') || _vm.hasRole('NationalAdmin') || _vm.isCreator || _vm.isEventAdmin || _vm.isAdd)?_c('div',{staticClass:\"footer-actions\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[(!_vm.isAdd && (_vm.hasRole('Admin') || _vm.hasRole('NationalAdmin') || _vm.isCreator || _vm.isEventAdmin))?_c('sprbutton',{staticClass:\"spr-redborder button-width my-1\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('eventPage.downloadParticipants'),\"click-event\":\"downloadParticipants\"},on:{\"downloadParticipants\":_vm.onDownloadParticipants}}):_vm._e(),(_vm.eventEditOpen)?_c('sprbutton',{staticClass:\"spr-redborder button-width my-1\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.isAdd ? _vm.$t('eventPage.publish') : _vm.$t('eventPage.save'),\"click-event\":\"eventPublish\"},on:{\"eventPublish\":_vm.eventPublishButton}}):_vm._e(),(!_vm.eventEditOpen && _vm.isEdit)?_c('sprbutton',{staticClass:\"spr-redborder button-width my-1\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('eventPage.edit'),\"click-event\":\"eventEdit\"},on:{\"eventEdit\":_vm.eventEditButton}}):_vm._e(),(_vm.eventEditOpen)?_c('sprbutton',{staticClass:\"spr-redborder button-width my-1\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('eventPage.cancel'),\"click-event\":\"eventCancel\"},on:{\"eventCancel\":_vm.eventCancelButton}}):_vm._e(),((_vm.eventEditOpen && !_vm.isAdd) && (_vm.hasRole('Admin') || _vm.hasRole('NationalAdmin') || _vm.isCreator || _vm.isEventAdmin))?_c('sprbutton',{staticClass:\"spr-redborder button-width my-1\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('eventPage.removeParticipants'),\"disabled\":!_vm.participantsToRemove.length,\"click-event\":\"removeParticipants\"},on:{\"removeParticipants\":_vm.removeParticipants}}):_vm._e(),(_vm.sprEvent.id)?_c('b-btn',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.removeModal\",modifiers:{\"removeModal\":true}}],staticClass:\"spr-button button-width spr-roundbox-1\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.remove\"))+\" \")]):_vm._e()],1)])])])]):_vm._e(),_c('div',{staticClass:\"col-12\"},[_c('backbar')],1),_c('b-modal',{attrs:{\"id\":_vm._uid + 'modal',\"size\":\"lg\",\"centered\":\"\",\"cancel-disabled\":\"\",\"ok-disabled\":\"\"},on:{\"close\":_vm.cancelModal},model:{value:(_vm.showModal),callback:function ($$v) {_vm.showModal=$$v},expression:\"showModal\"}},[(_vm.joinStage === 1)?_c('div',{staticClass:\"text-center container-fluid modal-container\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width d-block mx-auto my-2\",attrs:{\"type\":\"primary\",\"description\":\"Login before joining\",\"size\":4,\"title\":_vm.$t('eventPage.loginAndJoin'),\"click-event\":\"buttonClick\",\"disabled\":_vm.isRegistrationDeadlinePassed},on:{\"buttonClick\":_vm.loginJoin}}),_c('sprbutton',{staticClass:\"spr-redborder button-width d-block mx-auto my-2\",attrs:{\"type\":\"primary\",\"description\":\"Anonymous Join\",\"size\":4,\"title\":_vm.$t('eventPage.joinNow'),\"click-event\":\"buttonClick\",\"disabled\":_vm.isRegistrationDeadlinePassed},on:{\"buttonClick\":_vm.anonJoin}})],1):_vm._e(),_c('div',{staticClass:\"event-block secondary\"},[(\n            _vm.joinStage === 2 || _vm.hasRole('Admin') || _vm.hasRole('NationalAdmin') || _vm.isCreator || _vm.isEventAdmin\n          )?_c('div',[(!_vm.isCreator && !_vm.isParticipant && _vm.isLoggedIn)?_c('eventjoin',{attrs:{\"roles\":_vm.sprEvent.eventRoles,\"more-info-question\":_vm.translation.moreInfoQuestion,\"profile-id\":_vm.profileId},on:{\"join\":_vm.onEventJoin}}):_vm._e(),(!_vm.isParticipant && !_vm.isLoggedIn)?_c('eventjoinpublic',{attrs:{\"roles\":_vm.sprEvent.eventRoles,\"more-info-question\":_vm.translation.moreInfoQuestion},on:{\"join\":_vm.onEventJoinPublic}}):_vm._e(),(!_vm.isCreator && _vm.isParticipant && _vm.isLoggedIn)?_c('eventjoin',{attrs:{\"roles\":_vm.sprEvent.eventRoles,\"more-info-question\":_vm.translation.moreInfoQuestion,\"profile-id\":_vm.profileId,\"is-leaving\":\"\"},on:{\"join\":_vm.onEventJoin}}):_vm._e(),(_vm.isParticipant && !_vm.isLoggedIn)?_c('eventjoinpublic',{attrs:{\"roles\":_vm.sprEvent.eventRoles,\"event-id\":_vm.sprEvent.id,\"more-info-question\":_vm.translation.moreInfoQuestion,\"is-leaving\":\"\"},on:{\"join\":_vm.onEventJoinPublic}}):_vm._e()],1):_vm._e()]),_c('div',{staticClass:\"container-fluid\",attrs:{\"slot\":\"modal-header\"},slot:\"modal-header\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-10 col-sm-7\"},[(_vm.joinStage === 1)?_c('h3',[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.joinEvent\"))+\" \")]):_vm._e(),(_vm.joinStage === 2 && !_vm.isParticipant)?_c('h3',[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.enterInfo\"))+\" \")]):_vm._e(),(_vm.joinStage === 2 && _vm.isParticipant)?_c('h3',[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.joinSuccess\"))+\" \")]):_vm._e()])])]),_c('div',{staticClass:\"container-fluid\",attrs:{\"slot\":\"modal-footer\"},slot:\"modal-footer\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-right close-link brand-red\",on:{\"click\":_vm.cancelModal}},[_c('span',{staticClass:\"brand-red\"},[_vm._v(_vm._s(_vm.$t(\"eventPage.closeModal\")))]),_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"times\",\"aria-hidden\":\"true\"}})],1)])])]),_c('b-modal',{ref:\"removeModal\",attrs:{\"id\":\"removeModal\",\"size\":\"lg\",\"centered\":\"\",\"cancel-disabled\":\"\",\"ok-disabled\":\"\"}},[(_vm.sprEvent.occurance > 1)?_c('div',{staticClass:\"recurring\"},[_c('p',[_vm._v(_vm._s(_vm.$t(\"eventPage.confirmRemoveRepeatText\")))]),_c('sprradiogroupkey',{ref:\"recurring\",attrs:{\"radio-group-color\":\"basic\",\"options\":_vm.recurringOptions},model:{value:(_vm.recurringDeleteMode),callback:function ($$v) {_vm.recurringDeleteMode=$$v},expression:\"recurringDeleteMode\"}})],1):_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t(\"eventPage.confirmRemoveText\")))])]),_c('div',{staticClass:\"col-md-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('eventPage.confirmDelete'),\"value\":_vm.confirmDelete,\"aria-label\":_vm.$t('eventPage.confirmDelete')},on:{\"input\":_vm.onConfirmDelete}})],1),_c('sprbutton',{staticClass:\"spr-redborder\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('eventPage.remove'),\"disabled\":!_vm.confirmDelete,\"click-event\":\"eventRemove\"},on:{\"eventRemove\":_vm.confirmEventRemoval}}),_c('div',{staticClass:\"container-fluid\",attrs:{\"slot\":\"modal-header\"},slot:\"modal-header\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-10 col-sm-7\"},[(_vm.sprEvent.repeat > 1)?_c('h3',[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.confirmRemoveRepeatTitle\"))+\" \")]):_c('h3',[_vm._v(\" \"+_vm._s(_vm.$t(\"eventPage.confirmRemoveTitle\"))+\" \")])])])]),_c('div',{staticClass:\"container-fluid\",attrs:{\"slot\":\"modal-footer\"},slot:\"modal-footer\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-right close-link brand-red\",on:{\"click\":_vm.hideRemoveModal}},[_c('span',{staticClass:\"brand-red\"},[_vm._v(_vm._s(_vm.$t(\"eventPage.closeModal\")))]),_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"times\",\"aria-hidden\":\"true\"}})],1)])])],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"spr-timepicker\"},[_c('label',{staticClass:\"cap-label\",attrs:{\"for\":_vm._uid}},[_vm._v(_vm._s(_vm.title))]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.strTime),expression:\"strTime\"},{name:\"validate\",rawName:\"v-validate\",value:('colontime'),expression:\"'colontime'\"}],class:{ 'spr-danger': _vm.errors.has('sprtime'), 'form-control spr-roundbox-1': true },attrs:{\"id\":_vm._uid,\"type\":\"time\",\"name\":\"sprtime\"},domProps:{\"value\":(_vm.strTime)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.strTime=$event.target.value},function($event){return _vm.updateTime($event.target.value)}]}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const validatorColonTime = {\r\n  getMessage (field, args) {\r\n    return `${field} must be in the format hh:mm.`\r\n  },\r\n  validate (value, args) {\r\n    var regex = RegExp(/^([01]\\d|2[0-3]):([0-5]\\d)$/)\r\n    return regex.test(value)\r\n  }\r\n}\r\n\r\nexport default validatorColonTime\r\n","<template>\r\n  <div class=\"spr-timepicker\">\r\n    <label :for=\"_uid\" class=\"cap-label\">{{ title }}</label>\r\n    <input\r\n      :id=\"_uid\"\r\n      v-model=\"strTime\"\r\n      v-validate=\"'colontime'\"\r\n      type=\"time\"\r\n      name=\"sprtime\"\r\n      :class=\"{ 'spr-danger': errors.has('sprtime'), 'form-control spr-roundbox-1': true }\"\r\n      @input=\"updateTime($event.target.value)\"\r\n    >\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import colontime from '../mixins/validator-colontime.js'\r\n  import { Validator } from 'vee-validate'\r\n\r\n  Validator.extend('colontime', colontime)\r\n\r\n  export default {\r\n    name: 'Sprtime',\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      isValid: Boolean,\r\n      value: {\r\n        type: Object,\r\n        required: true\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        strTime: '00:00',\r\n        objTime: {\r\n          hour: 0,\r\n          minute: 0\r\n        }\r\n      }\r\n    },\r\n    watch: {\r\n      value (newVal) {\r\n        if (newVal) this.setTime(newVal)\r\n      }\r\n    },\r\n    mounted () {\r\n      this.setTime(this.value)\r\n    },\r\n    methods: {\r\n      setTime (val) {\r\n        // Converts the input object to string\r\n        this.objTime.hour = this.value.hour\r\n        this.objTime.minute = this.value.minute\r\n\r\n        var hrs = this.objTime.hour > 9 ? this.objTime.hour : `0${this.objTime.hour}`\r\n        var mins = this.objTime.minute > 9 ? this.objTime.minute : `0${this.objTime.minute}`\r\n        this.strTime = `${hrs}:${mins}`\r\n      },\r\n      updateTime (val) {\r\n        var regex = RegExp(/^([01]\\d|2[0-3]):([0-5]\\d)$/)\r\n        if (!regex.test(this.strTime)) return\r\n        var time = this.strTime.split(':')\r\n        var hrs = Number(time[0])\r\n        var mins = Number(time[1])\r\n        if (hrs > 23 || hrs < 0) return\r\n        if (mins > 59 || mins < 0) return\r\n        this.objTime.hour = hrs\r\n        this.objTime.minute = mins\r\n        this.$emit('input', this.objTime)\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .spr-timepicker {\r\n    label {\r\n      color:$brand-red;\r\n      margin-left: 20px;\r\n    }\r\n\r\ninput {\r\n      display: block;\r\n      box-sizing: border-box;\r\n      font-family: \"Signa-Light\", Sans-Serif;\r\n      border: 2px solid $brand-grey3;\r\n      padding: 10px 20px;\r\n      height: 44px;\r\n\r\n      &.spr-danger {\r\n        border: 2px solid $brand-red !important;\r\n      }\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRTimepicker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRTimepicker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPRTimepicker.vue?vue&type=template&id=5028ec1e\"\nimport script from \"./SPRTimepicker.vue?vue&type=script&lang=js\"\nexport * from \"./SPRTimepicker.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPRTimepicker.vue?vue&type=style&index=0&id=5028ec1e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row edit-event-roles\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_vm._l((_vm.computedRoles),function(role,index){return _c('div',{key:role.key,staticClass:\"row edit-role\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(role.isEdit),expression:\"role.isEdit\"}],staticClass:\"col-4\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate.initial\",value:(_vm.initialRoleValidation(index)),expression:\"initialRoleValidation(index)\",modifiers:{\"initial\":true}}],staticClass:\"pb-0\",attrs:{\"name\":'eventPage.roleName',\"data-vv-scope\":'role' + role.key,\"is-valid\":!_vm.errors.has('role' + role.key + '.eventPage.roleName'),\"compact\":true,\"placeholder\":_vm.$t('eventPage.roleNamePlaceholder')},model:{value:(role.name),callback:function ($$v) {_vm.$set(role, \"name\", $$v)},expression:\"role.name\"}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(role.isEdit),expression:\"role.isEdit\"}],staticClass:\"col-3 mt-1\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('eventPage.unlimitedParticipants'),\"value\":role.maximumParticipants === 0,\"aria-label\":_vm.$t('eventPage.unlimitedParticipants')},on:{\"input\":function($event){return _vm.onUnlimitedParticipantsChanged(role, $event)}}})],1),_c('div',{staticClass:\"col-3\"},[_c('numberinput',{directives:[{name:\"show\",rawName:\"v-show\",value:(role.isEdit && role.maximumParticipants > 0),expression:\"role.isEdit && role.maximumParticipants > 0\"},{name:\"validate\",rawName:\"v-validate\",value:('between:1,10000'),expression:\"'between:1,10000'\"}],attrs:{\"value\":Number(role.selectedMaxParticipants),\"step\":1,\"min\":1,\"max\":10000,\"name\":'maxParticipants',\"data-vv-scope\":'role' + role.key,\"is-valid\":!_vm.errors.has('role' + role.key + '.maxParticipants'),\"compact\":true},on:{\"input\":function($event){return _vm.onMaxParticipantsChanged(role, $event)}}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!role.isEdit),expression:\"!role.isEdit\"}],staticClass:\"col-10\"},[_c('span',[_vm._v(_vm._s(role.name))]),(role.maximumParticipants === 0)?_c('span',[_vm._v(\" (\"+_vm._s(role.participants ? role.participants.length : 0)+\")\")]):_c('span',[_vm._v(\" (\"+_vm._s(role.participants ? role.participants.length : 0)+\"/\"+_vm._s(role.maximumParticipants)+\")\")])]),_c('div',{staticClass:\"col-2 editbuttons\",class:{'edit': role.isEdit}},[_c('a',{staticClass:\"edit-role\",class:{ 'disabled': _vm.errors.any('role' + role.key) },attrs:{\"tabindex\":\"0\",\"href\":\"javascript:void(0);\"},on:{\"click\":function($event){_vm.errors.any('role' + role.key) || _vm.editRole(role)}}},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"title\":_vm.$t('eventPage.edit'),\"icon\":role.isEdit ? 'check' : 'pencil-alt',\"aria-hidden\":\"true\"}})],1),_c('a',{class:{ 'disabled': (role.participants && role.participants.length) || _vm.editorRoles.length <= 1 },attrs:{\"tabindex\":\"1\",\"href\":\"javascript:void(0);\"},on:{\"click\":function($event){return _vm.deleteRole(index)}}},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"title\":_vm.deleteRoleText(role),\"icon\":\"times\",\"aria-hidden\":\"true\"}})],1)])])}),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('transition',{attrs:{\"name\":\"warn\"}},[(_vm.isShowWarning)?_c('div',{staticClass:\"warning\"},[_vm._v(\" \"+_vm._s(_vm.$t('eventPage.noRolesWarning'))+\" \")]):_vm._e()])],1),_c('div',{staticClass:\"col-12 mt-3\"},[_c('sprbutton',{staticClass:\"next-button\",attrs:{\"size\":5,\"disabled\":_vm.hasErrors,\"title\":_vm.$t('eventPage.addRole'),\"bordersize\":2,\"click-event\":\"addRole\"},on:{\"addRole\":_vm.addRole}})],1)])],2)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"row edit-event-roles\">\r\n    <div class=\"col-12\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <div v-for=\"(role, index) in computedRoles\" :key=\"role.key\" class=\"row edit-role\">\r\n            <div v-show=\"role.isEdit\" class=\"col-4\">\r\n              <forminput\r\n                v-model=\"role.name\"\r\n                v-validate.initial=\"initialRoleValidation(index)\"\r\n                :name=\"'eventPage.roleName'\"\r\n                :data-vv-scope=\"'role' + role.key\"\r\n                :is-valid=\"!errors.has('role' + role.key + '.eventPage.roleName')\"\r\n                :compact=\"true\"\r\n                :placeholder=\"$t('eventPage.roleNamePlaceholder')\"\r\n                class=\"pb-0\"\r\n              />\r\n            </div>\r\n            <div v-show=\"role.isEdit\" class=\"col-3 mt-1\">\r\n              <checkboxinput :title=\"$t('eventPage.unlimitedParticipants')\"\r\n                             :value=\"role.maximumParticipants === 0\"\r\n                             :aria-label=\"$t('eventPage.unlimitedParticipants')\"\r\n                             @input=\"onUnlimitedParticipantsChanged(role, $event)\"\r\n              />\r\n            </div>\r\n            <div class=\"col-3\">\r\n              <numberinput\r\n                v-show=\"role.isEdit && role.maximumParticipants > 0\"\r\n                v-validate=\"'between:1,10000'\"\r\n                :value=\"Number(role.selectedMaxParticipants)\"\r\n                :step=\"1\"\r\n                :min=\"1\"\r\n                :max=\"10000\"\r\n                :name=\"'maxParticipants'\"\r\n                :data-vv-scope=\"'role' + role.key\"\r\n                :is-valid=\"!errors.has('role' + role.key + '.maxParticipants')\"\r\n                :compact=\"true\"\r\n                @input=\"onMaxParticipantsChanged(role, $event)\"\r\n              />\r\n            </div>\r\n            <div v-show=\"!role.isEdit\" class=\"col-10\">\r\n              <span>{{ role.name }}</span>\r\n              <span v-if=\"role.maximumParticipants === 0\"> ({{ role.participants ? role.participants.length : 0 }})</span>\r\n              <span v-else> ({{ role.participants ? role.participants.length : 0 }}/{{ role.maximumParticipants }})</span>\r\n            </div>\r\n            <div class=\"col-2 editbuttons\" :class=\"{'edit': role.isEdit}\">\r\n              <a :class=\"{ 'disabled': errors.any('role' + role.key) }\" class=\"edit-role\" tabindex=\"0\" href=\"javascript:void(0);\" @click=\"errors.any('role' + role.key) || editRole(role)\">\r\n                <font-awesome-icon :title=\"$t('eventPage.edit')\" class=\"brand-red\" :icon=\"role.isEdit ? 'check' : 'pencil-alt'\" aria-hidden=\"true\" />\r\n              </a>\r\n              <a :class=\"{ 'disabled': (role.participants && role.participants.length) || editorRoles.length <= 1 }\" tabindex=\"1\" href=\"javascript:void(0);\" @click=\"deleteRole(index)\">\r\n                <font-awesome-icon :title=\"deleteRoleText(role)\" class=\"brand-red\" icon=\"times\" aria-hidden=\"true\" />\r\n              </a>\r\n            </div>\r\n          </div>\r\n\r\n          <div class=\"row\">\r\n            <div class=\"col-12\">\r\n              <transition name=\"warn\">\r\n                <div v-if=\"isShowWarning\" class=\"warning\">\r\n                  {{ $t('eventPage.noRolesWarning') }}\r\n                </div>\r\n              </transition>\r\n            </div>\r\n            <div class=\"col-12 mt-3\">\r\n              <sprbutton :size=\"5\"\r\n                         :disabled=\"hasErrors\"\r\n                         :title=\"$t('eventPage.addRole')\"\r\n                         :bordersize=\"2\"\r\n                         class=\"next-button\"\r\n                         click-event=\"addRole\"\r\n                         @addRole=\"addRole\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import _ from 'lodash'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import numberinput from '../SPRSimpleNumberInput.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n\r\n  let roleKey = 0 // unique key for dynamic validation\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    editorRoles: Array<any>\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'Editeventroles',\r\n    components: {\r\n      forminput,\r\n      numberinput,\r\n      checkboxinput,\r\n      sprbutton\r\n    },\r\n    inject: ['$validator'],\r\n    props: {\r\n      // Value is the list of roles, bound to v-model\r\n      value: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      eventid: {\r\n        type: Number,\r\n        required: true\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        editorRoles: [] // internal representation of roles, with added goodies\r\n      } as TemplateComponentData\r\n    },\r\n    computed: {\r\n      isShowWarning (): boolean {\r\n        // TODO: redesign errors for this\r\n        return false // this.errors.any()\r\n      },\r\n      hasErrors (): boolean {\r\n        //@ts-ignore\r\n        return Boolean(_.find(this.errors.items, function (e) {\r\n          return e.scope && e.scope.startsWith('role')\r\n        }))\r\n      },\r\n      computedRoles: {\r\n        get () {\r\n          //@ts-ignore\r\n          return this.editorRoles\r\n        },\r\n        set (inputRoles) {\r\n          //@ts-ignore\r\n          this.editorRoles = _.map(inputRoles, function (role) {\r\n            return _.assignIn({}, role, { // add these goodies to whatever we get from the prop\r\n              isEdit: false,\r\n              selectedMaxParticipants: role.maximumParticipants > 0 ? role.maximumParticipants : 20,\r\n              key: roleKey++ // iterate validation key\r\n            })\r\n          })\r\n        }\r\n      }\r\n    },\r\n    watch: {\r\n      computedRoles (): void {\r\n        //@ts-ignore\r\n        this.update()\r\n      }\r\n    },\r\n    mounted (): void {\r\n      //@ts-ignore\r\n      this.computedRoles = this.value\r\n    },\r\n    methods: {\r\n      initialRoleValidation (index) {\r\n        //@ts-ignore\r\n        return `required:true|excluded:${this.computedRoles.filter(function (_, i) { return index !== i }).map(x => x.name)}`\r\n      },\r\n      onUnlimitedParticipantsChanged: function (role, isUnlimited) {\r\n        role.maximumParticipants = isUnlimited ? 0 : role.selectedMaxParticipants\r\n      },\r\n      onMaxParticipantsChanged: function (role, maxParticipants) {\r\n        role.maximumParticipants = role.selectedMaxParticipants = Number(maxParticipants)\r\n      },\r\n      addRole: function () {\r\n        //@ts-ignore\r\n        _.forEach(this.editorRoles, function (role) {\r\n          _.set(role, 'isEdit', false) // adding new role closes all other editors\r\n        })\r\n        //@ts-ignore\r\n        this.$set(this.editorRoles, this.editorRoles.length, {\r\n          name: '',\r\n          //@ts-ignore\r\n          eventId: this.eventid,\r\n          maximumParticipants: 0, // internal value, 0 == unlimited\r\n          selectedMaxParticipants: 20, // default value for when \"unlimited\" is unchecked\r\n          isEdit: true,\r\n          key: roleKey++ // iterate validation key\r\n        })\r\n      },\r\n      update: function () {\r\n        //@ts-ignore\r\n        if (!this.hasErrors) {\r\n          //@ts-ignore\r\n          this.$emit('input', this.computedRoles)\r\n        }\r\n      },\r\n      editRole: function (role) {\r\n        role.isEdit = !role.isEdit\r\n        //@ts-ignore\r\n        if (!role.isEdit) this.update()\r\n      },\r\n      deleteRole: function (index) {\r\n        //@ts-ignore\r\n        if (this.editorRoles.length > 1 && (!this.editorRoles[index].participants || this.editorRoles[index].participants.length === 0)) {\r\n          //@ts-ignore\r\n          this.$delete(this.editorRoles, index)\r\n        }\r\n      },\r\n      deleteRoleText: function (role) {\r\n        if (role.participants && role.participants.length) return this.$t('eventPage.cannotDeleteWithParticipants')\r\n        //@ts-ignore\r\n        if (this.editorRoles.length <= 1) return this.$t('eventPage.onlyRole')\r\n        return this.$t('eventPage.remove')\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .edit-event-role-header {\r\n      display: flex;\r\n      align-items: center;\r\n  }\r\n\r\n  .event-header-chevron {\r\n    margin-bottom: 9px;\r\n  }\r\n\r\n  .cap-label {\r\n    margin-left: -13px;\r\n    white-space: nowrap;\r\n  }\r\n\r\n  .edit-event-roles {\r\n    .disabled {\r\n      svg {\r\n        color:$brand-grey3;\r\n        cursor: default;\r\n      }\r\n    }\r\n    .warning {\r\n      color:$brand-danger;\r\n      margin-bottom: 10px;\r\n    }\r\n    .warn-enter-active {\r\n      transition: all .3s ease;\r\n    }\r\n    .warn-leave-active {\r\n      transition: all .8s cubic-bezier(1.0, 0.5, 0.8, 1.0);\r\n    }\r\n    .warn-enter, .warn-leave-to {\r\n      opacity: 0;\r\n    }\r\n    .spr-danger {\r\n      border: 2px solid $brand-red !important;\r\n    }\r\n    .edit-role {\r\n      height: 40px;\r\n      padding-right: 4px;\r\n    }\r\n    .editbuttons {\r\n      svg {\r\n        width: 16px;\r\n      }\r\n      &.edit {\r\n        margin-top: 10.5px\r\n      }\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditEventRoles.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditEventRoles.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EditEventRoles.vue?vue&type=template&id=eca231cc&scoped=true\"\nimport script from \"./EditEventRoles.vue?vue&type=script&lang=ts\"\nexport * from \"./EditEventRoles.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EditEventRoles.vue?vue&type=style&index=0&id=eca231cc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"eca231cc\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"view-event-roles\"},[(_vm.title)?_c('label',{staticClass:\"cap-label\",attrs:{\"for\":_vm._uid}},[_vm._v(_vm._s(_vm.title))]):_vm._e(),_c('div',{staticClass:\"event-block-container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_vm._l((_vm.value),function(iterator){return _c('p',{key:iterator.id},[_vm._v(\" \"+_vm._s(iterator.name)+\" \"),(iterator.maximumParticipants > 0)?_c('span',[_vm._v(\"(\"+_vm._s(iterator.participants.length)+\"/\"+_vm._s(iterator.maximumParticipants)+\")\")]):_c('span',[_vm._v(\"(\"+_vm._s(iterator.participants.length)+\")\")])])}),(!_vm.value || (_vm.value && _vm.value.length == 0))?_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('eventPage.noRoles'))+\" \")]):_vm._e()],2)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"view-event-roles\">\r\n    <label v-if=\"title\" :for=\"_uid\" class=\"cap-label\">{{ title }}</label>\r\n    <div class=\"event-block-container\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <p v-for=\"(iterator) in value\" :key=\"iterator.id\">\r\n            {{ iterator.name }}\r\n            <span v-if=\"iterator.maximumParticipants > 0\">({{ iterator.participants.length }}/{{ iterator.maximumParticipants }})</span>\r\n            <span v-else>({{ iterator.participants.length }})</span>\r\n          </p>\r\n          <div v-if=\"!value || (value && value.length == 0)\">\r\n            {{ $t('eventPage.noRoles') }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'ViewEventRoles',\r\n    components: {\r\n    },\r\n    props: {\r\n      value: {\r\n        type: Array,\r\n        default () {\r\n          return []\r\n        }\r\n      },\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    }\r\n\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .view-event-roles {\r\n\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewEventRoles.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewEventRoles.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ViewEventRoles.vue?vue&type=template&id=2e748434\"\nimport script from \"./ViewEventRoles.vue?vue&type=script&lang=js\"\nexport * from \"./ViewEventRoles.vue?vue&type=script&lang=js\"\nimport style0 from \"./ViewEventRoles.vue?vue&type=style&index=0&id=2e748434&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"event-participants-grid\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('table',{staticClass:\"grid-table\"},[_c('thead',{staticClass:\"grid-column\"},[_c('tr',_vm._l((_vm.columns),function(column,i){return _c('th',{key:i,class:_vm.getCssClass(column),on:{\"click\":function($event){return _vm.sortBy(column)}}},[_vm._v(\" \"+_vm._s(_vm.formatHeader(column))+\" \"),_c('span',{staticClass:\"arrow\",class:_vm.sortOrders[column.name] > 0 ? 'asc' : 'dsc'})])}),0)]),_c('tbody',[(!_vm.filteredData || !_vm.filteredData.length)?_c('tr',[_c('td',{staticClass:\"nodata\",attrs:{\"colspan\":_vm.columns.length}},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.noResults'))+\" \")])]):_vm._e(),_vm._l((_vm.filteredData),function(rowItem,i){return _c('tr',{key:i},_vm._l((_vm.columns),function(columnKey,j){return _c('td',{key:j,class:_vm.getCssClass(columnKey)},[(_vm.hasColumnCallBack(columnKey))?_c('div',[(_vm.hasItem(columnKey, rowItem))?_c('div',[_c('font-awesome-icon',{staticClass:\"grid-icon\",attrs:{\"icon\":columnKey.iconName},on:{\"click\":function($event){return _vm.onShowAdditionalModalInfo(rowItem)}}})],1):_vm._e()]):(columnKey.name === 'participated')?_c('div',{staticClass:\"text-center\"},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":rowItem[columnKey.name]},on:{\"change\":function($event){return _vm.$emit('change', rowItem)}}})]):(columnKey.name === 'remove')?_c('div',{staticClass:\"text-center\"},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":rowItem[columnKey.name]},on:{\"change\":function($event){return _vm.$emit('changeRemoval', rowItem)}}})]):_c('div',[_vm._v(\" \"+_vm._s(_vm.formatData(rowItem[columnKey.name]))+\" \")])])}),0)})],2)])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"event-participants-grid\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <!-- <sprgrid :data=\"participants\" :columns=\"columns\" translation-key=\"eventParticipants\" v-on=\"$listeners\" @show=\"onShowAdditionalModalInfo\" /> -->\r\n        <table class=\"grid-table\">\r\n          <thead class=\"grid-column\">\r\n            <tr>\r\n              <th v-for=\"(column, i) in columns\" :key=\"i\"\r\n                  :class=\"getCssClass(column)\"\r\n                  @click=\"sortBy(column)\"\r\n              >\r\n                {{ formatHeader(column) }}\r\n                <span class=\"arrow\" :class=\"sortOrders[column.name] > 0 ? 'asc' : 'dsc'\" />\r\n              </th>\r\n            </tr>\r\n          </thead>\r\n          <tbody>\r\n            <tr v-if=\"!filteredData || !filteredData.length\">\r\n              <td class=\"nodata\" :colspan=\"columns.length\">\r\n                {{ $t('userAdmin.noResults') }}\r\n              </td>\r\n            </tr>\r\n            <tr v-for=\"(rowItem, i) in filteredData\" :key=\"i\">\r\n              <td v-for=\"(columnKey, j) in columns\" :key=\"j\" :class=\"getCssClass(columnKey)\">\r\n                <div v-if=\"hasColumnCallBack(columnKey)\">\r\n                  <div v-if=\"hasItem(columnKey, rowItem)\">\r\n                    <font-awesome-icon class=\"grid-icon\" :icon=\"columnKey.iconName\" @click=\"onShowAdditionalModalInfo(rowItem)\" />\r\n                  </div>\r\n                </div>\r\n                <div v-else-if=\"columnKey.name === 'participated'\" class=\"text-center\">\r\n                  <input type=\"checkbox\" :checked=\"rowItem[columnKey.name]\" @change=\"$emit('change', rowItem)\">\r\n                </div>\r\n                <div v-else-if=\"columnKey.name === 'remove'\" class=\"text-center\">\r\n                  <input type=\"checkbox\" :checked=\"rowItem[columnKey.name]\" @change=\"$emit('changeRemoval', rowItem)\">\r\n                </div>\r\n                <div v-else>\r\n                  {{ formatData(rowItem[columnKey.name]) }}\r\n                </div>\r\n              </td>\r\n            </tr>\r\n          </tbody>\r\n        </table>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import _ from 'lodash'\r\n  import moment from 'moment'\r\n\r\n  export interface TemplateComponentData {\r\n    sortKey: string,\r\n    sortOrders: any,\r\n    columns: Array<any>,\r\n    filterKey: string,\r\n    translationKey: string\r\n  }\r\n  export default Vue.extend({\r\n    name: 'EventParticipantsGrid',\r\n    props: {\r\n      value: {\r\n        type: Array,\r\n        default: () => []\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        sortKey: '',\r\n        sortOrders: {},\r\n        columns: [{\r\n                    name: 'name'\r\n                  },\r\n                  {\r\n                    name: 'created',\r\n                    cssClass: 'd-none d-md-table-cell'\r\n                  },\r\n                  {\r\n                    name: 'phone',\r\n                    cssClass: 'd-xl-table-cell'\r\n                  },\r\n                  {\r\n                    name: 'email',\r\n                    cssClass: 'd-xl-table-cell'\r\n                  },\r\n                  {\r\n                    name: 'postalCode',\r\n                    cssClass: 'd-none d-lg-table-cell'\r\n                  },\r\n                  {\r\n                    name: 'role',\r\n                    cssClass: 'd-none d-lg-table-cell'\r\n                  },\r\n                  {\r\n                    name: 'participated',\r\n                    cssClass: 'd-none d-lg-table-cell'\r\n                  },\r\n                  {\r\n                    name: 'extra',\r\n                    cssClass: 'd-xl-table-cell',\r\n                    callBack: 'onShowAdditionalModalInfo',\r\n                    iconName: 'info-circle'\r\n                  },\r\n                  {\r\n                    name: 'remove',\r\n                    cssClass: 'd-none d-lg-table-cell'\r\n                  }],\r\n        filterKey: '',\r\n        translationKey: 'eventParticipants'\r\n      } as TemplateComponentData\r\n    },\r\n    computed: {\r\n      filteredData (): any {\r\n        const sortKey = this.sortKey\r\n        const filterKey = this.filterKey && this.filterKey.toLowerCase()\r\n        const order = this.sortOrders[sortKey] || 1\r\n        let data = this.participants\r\n\r\n        if (filterKey) {\r\n          data = data.filter(function (row) {\r\n            return Object.keys(row.name).some(function (key) {\r\n              return (\r\n                String(row[key])\r\n                  .toLowerCase()\r\n                  .indexOf(filterKey) > -1\r\n              )\r\n            })\r\n          })\r\n        }\r\n\r\n        if (sortKey) {\r\n          data = data.slice().sort(function (a, b) {\r\n            a = a[sortKey]\r\n            b = b[sortKey]\r\n            return (a === b ? 0 : a > b ? 1 : -1) * order\r\n          })\r\n        }\r\n\r\n        return data\r\n      },\r\n      participants (): any {\r\n        const gridData = [] as any\r\n        _.forEach(this.value, (role) => {\r\n          _.forEach(role.participants, (participant) => {\r\n            gridData.push({\r\n              id: participant.id,\r\n              role: role.name,\r\n              name: [participant.lastName, participant.firstName].join(' '),\r\n              created: moment(participant.created),\r\n              phone: participant.phone,\r\n              email: participant.email,\r\n              postalCode: participant.zipCode,\r\n              moreInfo: participant.moreInfo,\r\n              extra: participant.moreInfo,\r\n              participated: participant.participated,\r\n              remove: participant.remove\r\n            })\r\n          })\r\n        })\r\n        return gridData\r\n      }\r\n    },\r\n    //formatter wanted to move this created method here.\r\n    created () {\r\n      this.columns.forEach((column) => {\r\n        this.sortOrders[column.name] = 1\r\n      })\r\n    },\r\n    methods: {\r\n      formatData (value) {\r\n        if (moment.isMoment(value)) {\r\n          return moment(value).format('DD.MM.YYYY HH.mm')\r\n        }\r\n        return value\r\n      },\r\n      hasColumnCallBack (columnKey) {\r\n        let hasCallBack = false\r\n\r\n        if (columnKey.callBack) {\r\n          hasCallBack = true\r\n        }\r\n\r\n        return hasCallBack\r\n      },\r\n      hasItem (columnKey, rowItem) {\r\n        const columnName = columnKey.name\r\n\r\n        if (rowItem[columnName]) {\r\n          return true\r\n        }\r\n\r\n        return false\r\n      },\r\n      getCssClass (col) {\r\n        let c = col.cssClass\r\n        if (this.sortKey === col.name) {\r\n          c += ' active'\r\n        }\r\n        if (col.iconName) {\r\n          c += ' has-icon'\r\n        }\r\n\r\n        return c\r\n      },\r\n      sortBy: function (key) {\r\n        this.sortKey = key.name\r\n        this.sortOrders[key.name] = this.sortOrders[key.name] * -1\r\n      },\r\n      formatHeader (obj) {\r\n        if (this.translationKey) {\r\n          return this.$t(`${this.translationKey}.${obj.name}`)\r\n        }\r\n        return obj.name.charAt(0).toUpperCase() + obj.slice(1)\r\n      },\r\n\r\n      getMessageBodyWithLineBreaks (name) {\r\n        const arr = [] as any\r\n        const breaksArr = name.split('\\n')\r\n        for (let i = 0; i < breaksArr.length; i++) {\r\n          const el = this.$createElement('div', breaksArr[i])\r\n          arr.push(el)\r\n        }\r\n        return arr\r\n      },\r\n      onParticipationChanged (val) {\r\n        this.$emit('change', val)\r\n      },\r\n      onRemovalChanged (val) {\r\n        this.$emit('changeRemoval', val)\r\n      },\r\n      onShowAdditionalModalInfo (item) {\r\n        if (item.extra) {\r\n          this.$bvModal.msgBoxOk(this.getMessageBodyWithLineBreaks(item.extra), {\r\n            title: item.name,\r\n            size: 'sm',\r\n            buttonSize: 'md',\r\n            okVariant: 'success',\r\n            headerClass: 'modal-body',\r\n            footerClass: 'p-2 border-top-0',\r\n            centered: true\r\n          })\r\n        }\r\n      },\r\n      displayTime (value) {\r\n        if (value) {\r\n          return moment.utc(value).local().format('D.M.YYYY H.mm')\r\n        }\r\n        return ''\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"@/assets/scss/_variables.scss\";\r\n\r\n.modal-body {\r\n  div {\r\n    padding-bottom: 5px;\r\n    margin-bottom: 5px;\r\n  }\r\n}\r\n.modal-footer {\r\n  .btn-success {\r\n    border-radius: 20px;\r\n    background-color: $brand-red;\r\n    color: $brand-white;\r\n    text-transform: uppercase;\r\n    border-color: $brand-red;\r\n\r\n    &:hover,\r\n    &:active,\r\n    &:focus {\r\n      background-color: $brand-red !important;\r\n    }\r\n  }\r\n}\r\n\r\n.event-participants-grid {\r\n  padding: 0 -15px;\r\n  width: 100%;\r\n  overflow-x: auto;\r\n  .grid-column{\r\n    overflow: auto;\r\n    font-family: $font-bold;\r\n    text-transform: uppercase;\r\n    font-size: 14px;\r\n  }\r\n  .grid-icon {\r\n    color: $brand-red;\r\n    font-size: 16px;\r\n  }\r\n  .grid-table {\r\n    border: none;\r\n    border-radius: 3px;\r\n    background-color: #fff;\r\n    overflow: auto;\r\n    width: 100%;\r\n  }\r\n}\r\n\r\nth {\r\n  background-color: $brand-grey2;\r\n  color: $brand-red;\r\n  cursor: pointer;\r\n  font-weight: bold;\r\n  -webkit-user-select: none;\r\n  -moz-user-select: none;\r\n  -ms-user-select: none;\r\n  user-select: none;\r\n  overflow: auto;\r\n}\r\n\r\ntd {\r\n  background-color: #f9f9f9;\r\n  vertical-align: top;\r\n\r\n  &.nodata {\r\n    text-align: center;\r\n  }\r\n}\r\n\r\nth,\r\ntd {\r\n  min-width: 20px;\r\n  padding: 10px 10px;\r\n  &.has-icon {\r\n    text-align: center;\r\n  }\r\n}\r\n\r\nth.active {\r\n  color: $brand-red;\r\n}\r\n\r\nth.active .arrow {\r\n  opacity: 1;\r\n  &.asc {\r\n    border-bottom: 4px solid $brand-red;\r\n  }\r\n  &.dsc {\r\n    border-top: 4px solid $brand-red;\r\n  }\r\n}\r\n\r\n.arrow {\r\n  display: inline-block;\r\n  vertical-align: middle;\r\n  width: 0;\r\n  height: 0;\r\n  margin-left: 5px;\r\n  opacity: 0.66;\r\n}\r\n\r\n.arrow.asc {\r\n  border-left: 4px solid transparent;\r\n  border-right: 4px solid transparent;\r\n  border-bottom: 4px solid $brand-grey8;\r\n}\r\n\r\n.arrow.dsc {\r\n  border-left: 4px solid transparent;\r\n  border-right: 4px solid transparent;\r\n  border-top: 4px solid $brand-grey8;\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventParticipantsGrid.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventParticipantsGrid.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventParticipantsGrid.vue?vue&type=template&id=c22e171c\"\nimport script from \"./EventParticipantsGrid.vue?vue&type=script&lang=ts\"\nexport * from \"./EventParticipantsGrid.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventParticipantsGrid.vue?vue&type=style&index=0&id=c22e171c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"eventjoin\"},[_c('div',{staticClass:\"event-block-container container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"instructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('eventPage.joinInstructions'))+\" \")])])]),(_vm.rolesAvailable)?_c('div',{staticClass:\"row\"},[(!_vm.isLeaving)?_c('checkboxlist',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('checkbox-selected'),expression:\"'checkbox-selected'\"}],attrs:{\"name\":\"participantRoles\",\"is-valid\":!_vm.errors.has('participantRoles')},on:{\"change\":_vm.validateSelectedRoles},model:{value:(_vm.selectedRoles),callback:function ($$v) {_vm.selectedRoles=$$v},expression:\"selectedRoles\"}}):_c('checkboxlist',{attrs:{\"name\":\"participantRoles\"},model:{value:(_vm.selectedRoles),callback:function ($$v) {_vm.selectedRoles=$$v},expression:\"selectedRoles\"}}),_c('div',{staticClass:\"col-sm-12\"},[_c('label',{staticClass:\"cap-label brand-red\"},[_vm._v(_vm._s(_vm.$t('nonIdentProfileForm.volunteerInformation')))]),(_vm.moreInfoQuestion)?_c('p',[_vm._v(\" \"+_vm._s(_vm.moreInfoQuestion)+\" \")]):_vm._e(),_c('textareainput',{attrs:{\"rows\":8},model:{value:(_vm.eventParticipant.moreInfo),callback:function ($$v) {_vm.$set(_vm.eventParticipant, \"moreInfo\", $$v)},expression:\"eventParticipant.moreInfo\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('option-selected'),expression:\"'option-selected'\"}],attrs:{\"title\":_vm.$t('eventPage.privacyStatement'),\"aria-label\":_vm.$t('eventPage.privacyStatement'),\"name\":\"privacyStatement\",\"allow-html\":true,\"white-warnings\":false,\"has-error\":_vm.errors.has('privacyStatement')},model:{value:(_vm.eventParticipant.privacyStatement),callback:function ($$v) {_vm.$set(_vm.eventParticipant, \"privacyStatement\", $$v)},expression:\"eventParticipant.privacyStatement\"}})],1),_c('sprbutton',{attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('eventPage.join'),\"click-event\":\"join\"},on:{\"join\":_vm.onJoin}})],1)],1):_c('div',{staticClass:\"row no-roles\"},[_c('div',{staticClass:\"col-12 no-roles-available-text\"},[_vm._v(\" \"+_vm._s(_vm.$t('eventPage.noRolesAvailable'))+\" \")]),_c('div',{staticClass:\"col-12\"},[_c('sprbutton',{attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('eventPage.join'),\"disabled\":true}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"checkboxlist\"},[_c('div',{staticClass:\"row\"},[_c('div',{class:{ 'spr-danger': !_vm.isValid, 'checkboxlist': true }},_vm._l((_vm.list),function(item){return _c('checkbox',{key:item.id,attrs:{\"additional-class\":\"checkbox\",\"title\":item.text,\"no-wrap\":\"\"},on:{\"input\":function($event){return _vm.onChecked(item)}},model:{value:(item.selected),callback:function ($$v) {_vm.$set(item, \"selected\", $$v)},expression:\"item.selected\"}})}),1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"checkboxlist\">\r\n    <div class=\"row\">\r\n      <div :class=\"{ 'spr-danger': !isValid, 'checkboxlist': true }\">\r\n        <checkbox v-for=\"item in list\" :key=\"item.id\"\r\n                  v-model=\"item.selected\"\r\n                  additional-class=\"checkbox\"\r\n                  :title=\"item.text\"\r\n                  no-wrap\r\n                  @input=\"onChecked(item)\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import checkbox from './SPRSimpleCheckbox.vue'\r\n  import { SprDropDownValue } from '../types/custom'\r\n  export default Vue.extend({\r\n    name: 'SprSimpleCheckboxList2',\r\n    components: { checkbox },\r\n    model: {\r\n      prop: 'list',\r\n      event: 'change'\r\n    },\r\n    props: {\r\n      list: {\r\n        type: Array<SprDropDownValue>,\r\n        default () { return [] }\r\n      },\r\n      isValid: {\r\n        type: Boolean,\r\n        default: true\r\n      }\r\n    },\r\n    methods: {\r\n      onChecked (val): void {\r\n        this.$emit('change', this.list)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style lang=\"scss\">\r\n@import \"../assets/scss/_variables.scss\";\r\n\r\n.checkboxlist {\r\n  width: 75%;\r\n  display: flex;\r\n  flex-wrap: wrap; /* Allow items to wrap to the next line when there's not enough space */\r\n\r\n}\r\n.row {\r\n  width: 100%;\r\n  margin-left: 0; /* Unset the negative margin */\r\n  display: flex;\r\n  flex-wrap: wrap; /* Allow items to wrap to the next line when there's not enough space */\r\n}\r\n.checkbox {\r\n  flex: 1; /* Make checkboxes stretch and fill up the full width of the row */\r\n  margin-right: 10px; /* Add some spacing between checkboxes */\r\n  margin-bottom: 10px; /* Add some spacing between rows */\r\n\r\n  /* Add any other styling for your individual checkboxes here */\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleCheckboxList2.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRSimpleCheckboxList2.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRSimpleCheckboxList2.vue?vue&type=template&id=345bf8f8\"\nimport script from \"./SPRSimpleCheckboxList2.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRSimpleCheckboxList2.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRSimpleCheckboxList2.vue?vue&type=style&index=0&id=345bf8f8&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"eventjoin\">\r\n    <div class=\"event-block-container container\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <div class=\"instructions\">\r\n            {{ $t('eventPage.joinInstructions') }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"rolesAvailable\" class=\"row\">\r\n        <checkboxlist\r\n          v-if=\"!isLeaving\"\r\n          v-model=\"selectedRoles\"\r\n          v-validate=\"'checkbox-selected'\"\r\n          name=\"participantRoles\"\r\n          :is-valid=\"!errors.has('participantRoles')\"\r\n          @change=\"validateSelectedRoles\"\r\n        />\r\n        <checkboxlist\r\n          v-else\r\n          v-model=\"selectedRoles\"\r\n          name=\"participantRoles\"\r\n        />\r\n        <div class=\"col-sm-12\">\r\n          <label class=\"cap-label brand-red\">{{ $t('nonIdentProfileForm.volunteerInformation') }}</label>\r\n          <p v-if=\"moreInfoQuestion\">\r\n            {{ moreInfoQuestion }}\r\n          </p>\r\n          <textareainput v-model=\"eventParticipant.moreInfo\"\r\n                         :rows=\"8\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <div class=\"col-12\">\r\n            <checkboxinput\r\n              v-model=\"eventParticipant.privacyStatement\"\r\n              v-validate=\"'option-selected'\"\r\n              :title=\"$t('eventPage.privacyStatement')\"\r\n              :aria-label=\"$t('eventPage.privacyStatement')\"\r\n              name=\"privacyStatement\"\r\n              :allow-html=\"true\"\r\n              :white-warnings=\"false\"\r\n              :has-error=\"errors.has('privacyStatement')\"\r\n            />\r\n          </div>\r\n          <sprbutton type=\"primary\"\r\n                     :size=\"4\"\r\n                     :title=\"$t('eventPage.join')\"\r\n                     click-event=\"join\"\r\n                     @join=\"onJoin\"\r\n          />\r\n        </div>\r\n      </div>\r\n\r\n      <div v-else class=\"row no-roles\">\r\n        <div class=\"col-12 no-roles-available-text\">\r\n          {{ $t('eventPage.noRolesAvailable') }}\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <sprbutton type=\"primary\"\r\n                     :size=\"4\"\r\n                     :title=\"$t('eventPage.join')\"\r\n                     :disabled=\"true\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import checkboxlist from '../SPRSimpleCheckboxList2.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import { EventRoleDto } from '../../types/index'\r\n  import { SprDropDownValue } from '../../types/custom'\r\n\r\n  export default Vue.extend({\r\n    name: 'EventJoin',\r\n    components: {\r\n      sprbutton,\r\n      checkboxinput,\r\n      checkboxlist,\r\n      textareainput\r\n    },\r\n    props: {\r\n      isLeaving: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      isAnonymous: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      roles: {\r\n        type: Array as () => Array<EventRoleDto>,\r\n        default () {\r\n          return []\r\n        }\r\n      },\r\n      moreInfoQuestion: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      profileId: {\r\n        type: Number,\r\n        default: null // Default value as null\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        selectedRoles: [] as Array<SprDropDownValue>,\r\n        eventParticipant: {\r\n          roleIds: [] as Array<number>,\r\n          moreInfo: '',\r\n          privacyStatement: false,\r\n          privacyStatementInError: false\r\n        }\r\n      }\r\n    },\r\n    computed: {\r\n      rolesAvailable (): boolean {\r\n        return this.roles.length > 0 && this.selectedRoles.length > 0\r\n      }\r\n    },\r\n    created () {\r\n      // get \"a\" role with a participation by the current user, so that we can lookup the \"moreInfo\" field.\r\n      this.eventParticipant.moreInfo = this.findMoreInfo(this.roles, this.profileId) ?? ''\r\n\r\n      // Selected roles are only visible if they are not occupied yet up to the maximum number of participants,\r\n      // or if the role is occupied by the current user (based on his profileId.)\r\n      this.selectedRoles = this.roles.filter((r) => {\r\n        return r.maximumParticipants === 0 || r.maximumParticipants > r.participants.length || r.participants.some(p => p.profileId === this.profileId)\r\n      }).map((r) => {\r\n        let selected = false\r\n\r\n        if (this.profileId) { selected = r.participants.some(p => p.profileId === this.profileId) }\r\n\r\n        return {\r\n          value: r.id,\r\n          text: r.name,\r\n          selected: selected\r\n        } as SprDropDownValue\r\n      })\r\n    },\r\n    methods: {\r\n      validateSelectedRoles () {\r\n        this.$validator.validate('participantRoles')\r\n      },\r\n      findMoreInfo (roles, profileId) {\r\n        let moreInfo = null\r\n\r\n        roles.some(role => {\r\n          const participant = role.participants.find(participant => participant.profileId === profileId)\r\n\r\n          if (participant) {\r\n            moreInfo = participant.moreInfo\r\n            return true // Stop iteration once a participant with the specified profileId is found\r\n          }\r\n\r\n          return false\r\n        })\r\n\r\n        return moreInfo\r\n      },\r\n      onJoin () {\r\n        this.$validator.validateAll().then(resp => {\r\n          if (resp) {\r\n            this.eventParticipant.roleIds = this.selectedRoles\r\n              .filter((r) => r.selected)\r\n              .map((r) => r.value as number)\r\n\r\n            this.$emit('join', this.eventParticipant)\r\n          }\r\n        }).catch(error => {\r\n          console.log('onJoin.error', error)\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .eventjoin {\r\n    .instructions {\r\n      margin-bottom: 15px;\r\n    }\r\n\r\n  .no-roles {\r\n    .no-roles-available-text {\r\n      margin-bottom: 15px;\r\n    }\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventJoin.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventJoin.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventJoin.vue?vue&type=template&id=bcb512d8\"\nimport script from \"./EventJoin.vue?vue&type=script&lang=ts\"\nexport * from \"./EventJoin.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventJoin.vue?vue&type=style&index=0&id=bcb512d8&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"eventjoinpublic\"},[_c('div',{staticClass:\"event-block-container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"instructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('eventPage.joinInstructions'))+\" \")])])]),(_vm.rolesAvailable)?_c('div',{staticClass:\"row\"},[(!_vm.isLeaving)?_c('checkboxlist',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('checkbox-selected'),expression:\"'checkbox-selected'\"}],attrs:{\"name\":\"participantRoles\",\"is-valid\":!_vm.errors.has('participantRoles')},on:{\"change\":_vm.validateSelectedRoles},model:{value:(_vm.selectedRoles),callback:function ($$v) {_vm.selectedRoles=$$v},expression:\"selectedRoles\"}}):_c('checkboxlist',{attrs:{\"name\":\"participantRoles\"},model:{value:(_vm.selectedRoles),callback:function ($$v) {_vm.selectedRoles=$$v},expression:\"selectedRoles\"}}),_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('eventPage.firstName') + ' *',\"name\":\"eventPage.firstName\",\"is-valid\":!_vm.errors.has('eventPage.firstName')},model:{value:(_vm.eventParticipant.firstName),callback:function ($$v) {_vm.$set(_vm.eventParticipant, \"firstName\", $$v)},expression:\"eventParticipant.firstName\"}}),_c('div',{staticClass:\"col-12 col-lg-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('eventPage.lastName') + ' *',\"name\":\"eventPage.lastName\",\"is-valid\":!_vm.errors.has('eventPage.lastName')},model:{value:(_vm.eventParticipant.lastName),callback:function ($$v) {_vm.$set(_vm.eventParticipant, \"lastName\", $$v)},expression:\"eventParticipant.lastName\"}})],1),_c('div',{staticClass:\"col-12 col-lg-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|email'),expression:\"'required|email'\"}],attrs:{\"hint\":_vm.$t('eventPage.email') + ' *',\"name\":\"eventPage.email\",\"is-valid\":!_vm.errors.has('eventPage.email')},model:{value:(_vm.eventParticipant.email),callback:function ($$v) {_vm.$set(_vm.eventParticipant, \"email\", $$v)},expression:\"eventParticipant.email\"}})],1),_c('div',{staticClass:\"col-12 col-lg-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"hint\":_vm.$t('eventPage.phone') + ' *',\"name\":\"eventPage.phone\",\"is-valid\":!_vm.errors.has('eventPage.phone')},model:{value:(_vm.eventParticipant.phone),callback:function ($$v) {_vm.$set(_vm.eventParticipant, \"phone\", $$v)},expression:\"eventParticipant.phone\"}})],1),_c('div',{staticClass:\"col-12 col-lg-6\"},[_c('forminput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|digits:5'),expression:\"'required|digits:5'\"}],attrs:{\"hint\":_vm.$t('eventPage.zipCode') + ' *',\"name\":\"eventPage.zipCode\",\"is-valid\":!_vm.errors.has('eventPage.zipCode')},model:{value:(_vm.eventParticipant.zipCode),callback:function ($$v) {_vm.$set(_vm.eventParticipant, \"zipCode\", $$v)},expression:\"eventParticipant.zipCode\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('label',{staticClass:\"cap-label brand-red\"},[_vm._v(_vm._s(_vm.$t('nonIdentProfileForm.volunteerInformation')))]),(_vm.moreInfoQuestion)?_c('p',[_vm._v(\" \"+_vm._s(_vm.moreInfoQuestion)+\" \")]):_vm._e(),_c('textareainput',{attrs:{\"rows\":8},model:{value:(_vm.eventParticipant.moreInfo),callback:function ($$v) {_vm.$set(_vm.eventParticipant, \"moreInfo\", $$v)},expression:\"eventParticipant.moreInfo\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{attrs:{\"title\":_vm.$t('eventPage.interestedInSpr'),\"aria-label\":_vm.$t('eventPage.interestedInSpr')},model:{value:(_vm.eventParticipant.interestedInSpr),callback:function ($$v) {_vm.$set(_vm.eventParticipant, \"interestedInSpr\", $$v)},expression:\"eventParticipant.interestedInSpr\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('checkboxinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('option-selected'),expression:\"'option-selected'\"}],attrs:{\"title\":_vm.$t('eventPage.privacyStatement'),\"aria-label\":_vm.$t('eventPage.privacyStatement'),\"name\":\"privacyStatement\",\"allow-html\":true,\"white-warnings\":false,\"has-error\":_vm.errors.has('privacyStatement')},model:{value:(_vm.eventParticipant.privacyStatement),callback:function ($$v) {_vm.$set(_vm.eventParticipant, \"privacyStatement\", $$v)},expression:\"eventParticipant.privacyStatement\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('sprbutton',{attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('eventPage.join'),\"click-event\":\"join\"},on:{\"join\":_vm.onJoin}})],1)],1):_c('div',{staticClass:\"row no-roles\"},[_c('div',{staticClass:\"col-12 no-roles-available-text\"},[_vm._v(\" \"+_vm._s(_vm.$t('eventPage.noRolesAvailable'))+\" \")]),_c('div',{staticClass:\"col-12\"},[_c('sprbutton',{attrs:{\"type\":\"primary\",\"size\":4,\"title\":_vm.$t('eventPage.join'),\"disabled\":true}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n<template>\r\n  <div class=\"eventjoinpublic\">\r\n    <div class=\"event-block-container\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <div class=\"instructions\">\r\n            {{ $t('eventPage.joinInstructions') }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"rolesAvailable\" class=\"row\">\r\n        <checkboxlist\r\n          v-if=\"!isLeaving\"\r\n          v-model=\"selectedRoles\"\r\n          v-validate=\"'checkbox-selected'\"\r\n          name=\"participantRoles\"\r\n          :is-valid=\"!errors.has('participantRoles')\"\r\n          @change=\"validateSelectedRoles\"\r\n        />\r\n        <checkboxlist\r\n          v-else\r\n          v-model=\"selectedRoles\"\r\n          name=\"participantRoles\"\r\n        />\r\n        <forminput v-model=\"eventParticipant.firstName\"\r\n                   v-validate=\"'required'\"\r\n                   :hint=\"$t('eventPage.firstName') + ' *'\"\r\n                   name=\"eventPage.firstName\"\r\n                   :is-valid=\"!errors.has('eventPage.firstName')\"\r\n        />\r\n        <div class=\"col-12 col-lg-6\">\r\n          <forminput v-model=\"eventParticipant.lastName\"\r\n                     v-validate=\"'required'\"\r\n                     :hint=\"$t('eventPage.lastName') + ' *'\"\r\n                     name=\"eventPage.lastName\"\r\n                     :is-valid=\"!errors.has('eventPage.lastName')\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 col-lg-6\">\r\n          <forminput v-model=\"eventParticipant.email\"\r\n                     v-validate=\"'required|email'\"\r\n                     :hint=\"$t('eventPage.email') + ' *'\"\r\n                     name=\"eventPage.email\"\r\n                     :is-valid=\"!errors.has('eventPage.email')\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 col-lg-6\">\r\n          <forminput v-model=\"eventParticipant.phone\"\r\n                     v-validate=\"'required'\"\r\n                     :hint=\"$t('eventPage.phone') + ' *'\"\r\n                     name=\"eventPage.phone\"\r\n                     :is-valid=\"!errors.has('eventPage.phone')\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12 col-lg-6\">\r\n          <forminput v-model=\"eventParticipant.zipCode\"\r\n                     v-validate=\"'required|digits:5'\"\r\n                     :hint=\"$t('eventPage.zipCode') + ' *'\"\r\n                     name=\"eventPage.zipCode\"\r\n                     :is-valid=\"!errors.has('eventPage.zipCode')\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <label class=\"cap-label brand-red\">{{ $t('nonIdentProfileForm.volunteerInformation') }}</label>\r\n          <p v-if=\"moreInfoQuestion\">\r\n            {{ moreInfoQuestion }}\r\n          </p>\r\n          <textareainput v-model=\"eventParticipant.moreInfo\"\r\n                         :rows=\"8\"\r\n          />\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <checkboxinput\r\n            v-model=\"eventParticipant.interestedInSpr\"\r\n            :title=\"$t('eventPage.interestedInSpr')\"\r\n            :aria-label=\"$t('eventPage.interestedInSpr')\"\r\n          />\r\n        </div>\r\n\r\n        <div class=\"col-12\">\r\n          <checkboxinput\r\n            v-model=\"eventParticipant.privacyStatement\"\r\n            v-validate=\"'option-selected'\"\r\n            :title=\"$t('eventPage.privacyStatement')\"\r\n            :aria-label=\"$t('eventPage.privacyStatement')\"\r\n            name=\"privacyStatement\"\r\n            :allow-html=\"true\"\r\n            :white-warnings=\"false\"\r\n            :has-error=\"errors.has('privacyStatement')\"\r\n          />\r\n        </div>\r\n\r\n        <div class=\"col-12\">\r\n          <sprbutton type=\"primary\"\r\n                     :size=\"4\"\r\n                     :title=\"$t('eventPage.join')\"\r\n                     click-event=\"join\"\r\n                     @join=\"onJoin\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div v-else class=\"row no-roles\">\r\n        <div class=\"col-12 no-roles-available-text\">\r\n          {{ $t('eventPage.noRolesAvailable') }}\r\n        </div>\r\n        <div class=\"col-12\">\r\n          <sprbutton type=\"primary\"\r\n                     :size=\"4\"\r\n                     :title=\"$t('eventPage.join')\"\r\n                     :disabled=\"true\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import checkboxlist from '../SPRSimpleCheckboxList2.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import { EventRoleDto } from '../../types/index'\r\n  import { SprDropDownValue } from '../../types/custom'\r\n\r\n  export default Vue.extend({\r\n    name: 'Eventjoinpublic',\r\n    components: {\r\n      sprbutton,\r\n      forminput,\r\n      checkboxinput,\r\n      checkboxlist,\r\n      textareainput\r\n    },\r\n    props: {\r\n      eventId: {\r\n        type: Number,\r\n        default: null\r\n      },\r\n      isLeaving: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      roles: {\r\n        type: Array as () => Array<EventRoleDto>,\r\n        default () {\r\n          return []\r\n        }\r\n      },\r\n      moreInfoQuestion: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      cancellationToken: {\r\n        type: String,\r\n        default: null // Default value as null\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        selectedRoles: [] as Array<SprDropDownValue>,\r\n        eventParticipant: {\r\n          roleIds: [] as Array<number>,\r\n          firstName: '',\r\n          lastName: '',\r\n          email: '',\r\n          phone: '',\r\n          zipCode: '',\r\n          interestedInSpr: false,\r\n          interestedInSimilarEvents: false,\r\n          moreInfo: '',\r\n          privacyStatement: false,\r\n          privacyStatementInError: false\r\n        }\r\n      }\r\n    },\r\n    computed: {\r\n      rolesAvailable (): boolean {\r\n        return this.roles.length > 0 && this.selectedRoles.length > 0\r\n      }\r\n    },\r\n    created () {\r\n      const e = this.$store.state.publicEvents.find(p => p.eventId === this.eventId)\r\n      if (e) {\r\n        this.eventParticipant.moreInfo = e.moreInfo\r\n        this.eventParticipant.email = e.email\r\n        this.eventParticipant.firstName = e.firstName\r\n        this.eventParticipant.lastName = e.lastName\r\n        this.eventParticipant.phone = e.phone\r\n        this.eventParticipant.zipCode = e.zipCode\r\n      }\r\n      // Selected roles are only visible if they are not occupied yet up to the maximum number of participants,\r\n      // or if the role is occupied by the current user (based on his cancellation token.)\r\n      this.selectedRoles = this.roles.filter((r) => {\r\n        return r.maximumParticipants === 0 || r.maximumParticipants > r.participants.length || r.participants.some(p => p.cancellationToken === this.cancellationToken)\r\n      }).map((r) => {\r\n        let selected = false\r\n\r\n        if (e) { selected = e.roleIds.some(p => p === r.id) }\r\n\r\n        return {\r\n          value: r.id,\r\n          text: r.name,\r\n          selected: selected\r\n        } as SprDropDownValue\r\n      })\r\n    },\r\n    methods: {\r\n      validateSelectedRoles () {\r\n        this.$validator.validate('participantRoles')\r\n      },\r\n      onJoin () {\r\n        this.$validator.validateAll().then(resp => {\r\n          if (resp) {\r\n            this.eventParticipant.roleIds = this.selectedRoles\r\n              .filter((r) => r.selected)\r\n              .map((r) => r.value as number)\r\n\r\n            this.$emit('join', this.eventParticipant)\r\n          }\r\n        }).catch(error => {\r\n          console.log('onJoin.error', error)\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .eventjoinpublic {\r\n   .instructions {\r\n     margin-bottom: 15px;\r\n   }\r\n\r\n   .no-roles {\r\n     .no-roles-available-text {\r\n       margin-bottom: 15px;\r\n     }\r\n   }\r\n  }\r\n</style>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventJoinPublic.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventJoinPublic.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventJoinPublic.vue?vue&type=template&id=482314d8\"\nimport script from \"./EventJoinPublic.vue?vue&type=script&lang=ts\"\nexport * from \"./EventJoinPublic.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventJoinPublic.vue?vue&type=style&index=0&id=482314d8&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"eventadmins\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.$t('eventPage.eventAdminTitle')))])])]),(_vm.isEditMode)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"emailinput\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('email'),expression:\"'email'\"}],attrs:{\"input-type\":\"email\",\"placeholder\":_vm.placeholdertext,\"name\":\"eventPage.adminEmail\",\"is-valid\":!_vm.errors.has('eventPage.adminEmail')},model:{value:(_vm.inputEmail),callback:function ($$v) {_vm.inputEmail=$$v},expression:\"inputEmail\"}})],1),_c('sprbutton',{staticClass:\"add-button\",attrs:{\"size\":5,\"title\":_vm.$t('eventPage.addAdmin'),\"click-event\":\"addAdmin\"},on:{\"addAdmin\":_vm.onAddAdmin}})],1)]):_vm._e(),_c('div',{staticClass:\"row\"},[(_vm.admins)?_c('div',{staticClass:\"col-12\"},[(_vm.isEditMode)?_c('span',_vm._l((_vm.filteredAdmins),function(admin){return _c('pill',{key:admin.email,class:{'readonly': _vm.isReadonly(admin)},attrs:{\"show-delete\":!_vm.isReadonly(admin)},on:{\"remove\":function($event){return _vm.onRemoveAdmin(admin)}},model:{value:(admin.email),callback:function ($$v) {_vm.$set(admin, \"email\", $$v)},expression:\"admin.email\"}})}),1):_c('div',_vm._l((_vm.filteredAdmins),function(admin){return _c('div',{key:admin.email},[_vm._v(\" \"+_vm._s(admin.email)+\" \")])}),0)]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"eventadmins\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span class=\"cap-label\">{{ $t('eventPage.eventAdminTitle') }}</span>\r\n      </div>\r\n    </div>\r\n    <div v-if=\"isEditMode\" class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"emailinput\">\r\n          <sprinput\r\n            v-model=\"inputEmail\"\r\n            v-validate=\"'email'\"\r\n            input-type=\"email\"\r\n            :placeholder=\"placeholdertext\"\r\n            name=\"eventPage.adminEmail\"\r\n            :is-valid=\"!errors.has('eventPage.adminEmail')\"\r\n          />\r\n        </div>\r\n        <sprbutton\r\n          :size=\"5\"\r\n          :title=\"$t('eventPage.addAdmin')\"\r\n          click-event=\"addAdmin\"\r\n          class=\"add-button\"\r\n          @addAdmin=\"onAddAdmin\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div v-if=\"admins\" class=\"col-12\">\r\n        <span v-if=\"isEditMode\">\r\n          <pill v-for=\"admin in filteredAdmins\" :key=\"admin.email\" v-model=\"admin.email\" :class=\"{'readonly': isReadonly(admin)}\" :show-delete=\"!isReadonly(admin)\" @remove=\"onRemoveAdmin(admin)\" />\r\n        </span>\r\n        <div v-else>\r\n          <div v-for=\"admin in filteredAdmins\" :key=\"admin.email\">\r\n            {{ admin.email }}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import * as _ from 'lodash'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprinput from '../SPRSimpleText.vue'\r\n  import pill from '../SPRPill.vue'\r\n  import { EventAdminDto } from '@/types'\r\n  import { TranslateResult } from 'vue-i18n'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    inputEmail: string | undefined\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'EventAdmins',\r\n    components: {\r\n      sprbutton,\r\n      sprinput,\r\n      pill\r\n    },\r\n    props: {\r\n      admins: {\r\n        type: Array as () => Array<EventAdminDto>,\r\n        default () {\r\n          return [] as Array<EventAdminDto>\r\n        }\r\n      },\r\n      isEditMode: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        inputEmail: undefined\r\n      }\r\n    },\r\n    computed: {\r\n      placeholdertext (): string | TranslateResult {\r\n        return this.$t('eventPage.addAdminEmailPlaceholder')\r\n      },\r\n      filteredAdmins (): Array<EventAdminDto> {\r\n        return _.map(_.groupBy(this.admins, 'email'), emailGroup => {\r\n          if (emailGroup.length === 1) {\r\n            return emailGroup[0]\r\n          } else {\r\n            return _.filter(emailGroup, admin => { return !admin.delegatedByProfileId })[0]\r\n          }\r\n        })\r\n      }\r\n    },\r\n    methods: {\r\n      onAddAdmin (): void {\r\n        this.$validator.validateAll().then(resp => {\r\n          if (!this.inputEmail || !this.inputEmail.trim().length) {\r\n            return\r\n          }\r\n          if (resp) {\r\n            if (!this.admins.find(admin => admin.email.toLowerCase() === this.inputEmail?.toLowerCase() && !admin.delegatedByProfileId)) {\r\n              this.$emit('addAdmin', this.inputEmail.toLowerCase())\r\n            }\r\n          }\r\n          this.inputEmail = undefined\r\n        })\r\n      },\r\n      onRemoveAdmin (admin: EventAdminDto): void {\r\n        this.$emit('removeAdmin', admin)\r\n      },\r\n      isReadonly (admin): void {\r\n        return admin.isCreator || admin.delegatedByProfileId\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .eventadmins {\r\n    .pill {\r\n      margin-right: 5px;\r\n\r\n      &.readonly {\r\n        border-color:$brand-grey7;\r\n        color:$brand-grey7;\r\n        background-color:$brand-grey1;\r\n        cursor:not-allowed;\r\n      }\r\n    }\r\n    .emailinput {\r\n      display:inline-block;\r\n    }\r\n    .add-button {\r\n      display: inline-block;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventAdmins.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventAdmins.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventAdmins.vue?vue&type=template&id=7d655116\"\nimport script from \"./EventAdmins.vue?vue&type=script&lang=ts\"\nexport * from \"./EventAdmins.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventAdmins.vue?vue&type=style&index=0&id=7d655116&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"event-organizers-dropdown\"},[_c('sprsimpletext',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('invalidEventOrganizer'),expression:\"'invalidEventOrganizer'\"}],attrs:{\"hint\":_vm.hint,\"placeholder\":_vm.placeholder,\"required\":_vm.required,\"disabled\":_vm.disabled,\"name\":\"eventPage.eventDistrictSection\",\"is-valid\":_vm.isValid && !_vm.errors.has('eventPage.eventDistrictSection'),\"value\":_vm.eventOrganizer,\"list\":_vm.datalistid},on:{\"input\":_vm.onInput}}),_c('datalist',{staticClass:\"dl\",attrs:{\"id\":_vm.datalistid}},_vm._l((_vm.eventOrganizerList),function(item){return _c('option',{key:item.id,class:{ 'eventOrganizerType': item.eventOrganizerType }},[_vm._v(\" \"+_vm._s(item.name)+\" \")])}),0)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"event-organizers-dropdown\">\r\n    <sprsimpletext\r\n      v-validate=\"'invalidEventOrganizer'\"\r\n      :hint=\"hint\"\r\n      :placeholder=\"placeholder\"\r\n      :required=\"required\"\r\n      :disabled=\"disabled\"\r\n      name=\"eventPage.eventDistrictSection\"\r\n      :is-valid=\"isValid && !errors.has('eventPage.eventDistrictSection')\"\r\n      :value=\"eventOrganizer\"\r\n      :list=\"datalistid\"\r\n      @input=\"onInput\"\r\n    />\r\n    <datalist :id=\"datalistid\" class=\"dl\">\r\n      <option v-for=\"item in eventOrganizerList\" :key=\"item.id\" :class=\"{ 'eventOrganizerType': item.eventOrganizerType }\">\r\n        {{ item.name }}\r\n      </option>\r\n    </datalist>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprsimpletext from './SPRSimpleText.vue'\r\n\r\n  export default {\r\n    name: 'EventOrganizersDropdown',\r\n    components: { sprsimpletext },\r\n    props: {\r\n      hint: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      value: {\r\n        type: Object,\r\n        default: () => {\r\n          return {\r\n            eventOrganizerType: null,\r\n            organizerId: null\r\n          }\r\n        }\r\n      },\r\n      placeholder: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      required: Boolean,\r\n      disabled: Boolean,\r\n      isValid: Boolean\r\n    },\r\n    data () {\r\n      return {\r\n        eventOrganizer: ''\r\n      }\r\n    },\r\n    computed: {\r\n      datalistid () {\r\n        return `datalist_${this._uid}`\r\n      },\r\n      eventOrganizerList () {\r\n        // EventOrganizerType: Institution = 0, District = 100, Section = 200\r\n        const eventOrganizerTypeInstitution = 0\r\n        const eventOrganizerTypeDistrict = 100\r\n        const eventOrganizerTypeSection = 200\r\n        var list = []\r\n\r\n        if (!this.$store.state.institutions || !this.$store.state.institutions.length) return list\r\n\r\n        for (var institutionIndex = 0; institutionIndex < this.$store.state.institutions.length; institutionIndex++) {\r\n          var institution = this.$store.state.institutions[institutionIndex]\r\n\r\n          list.push({\r\n            code: `${eventOrganizerTypeInstitution}:${institution.id}`,\r\n            name: institution.name,\r\n            eventOrganizer: {\r\n              eventOrganizerType: eventOrganizerTypeInstitution,\r\n              organizerId: institution.id\r\n            }\r\n          })\r\n        }\r\n\r\n        if (!this.$store.state.districts || !this.$store.state.districts.length) return list\r\n\r\n        for (var districtIndex = 0; districtIndex < this.$store.state.districts.length; districtIndex++) {\r\n          var district = this.$store.state.districts[districtIndex]\r\n          var sections = _.sortBy(_.filter(this.$store.state.sections, (section) => {\r\n            // select in this district\r\n            return section.districtId === district.id\r\n          }), (section) => {\r\n            // sort by\r\n            return section.name\r\n          })\r\n\r\n          list.push({\r\n            code: `${eventOrganizerTypeDistrict}:${district.id}`,\r\n            name: district.name.toUpperCase(),\r\n            eventOrganizer: {\r\n              eventOrganizerType: eventOrganizerTypeDistrict,\r\n              organizerId: district.id\r\n            }\r\n          })\r\n\r\n          for (var j = 0; j < sections.length; j++) {\r\n            var section = sections[j]\r\n            list.push({\r\n              code: `${eventOrganizerTypeSection}:${section.id}`,\r\n              name: section.name,\r\n              eventOrganizer: {\r\n                eventOrganizerType: eventOrganizerTypeSection,\r\n                organizerId: section.id\r\n              }\r\n            })\r\n          }\r\n        }\r\n        return list\r\n      }\r\n    },\r\n    watch: {\r\n      value (newVal) {\r\n        this.setLocalVal(newVal)\r\n      }\r\n    },\r\n    created () {\r\n      var self = this\r\n      this.$validator.extend('invalidEventOrganizer', {\r\n        getMessage (field, args) {\r\n          return 'EventOrganizer Invalid'\r\n        },\r\n        validate (value, args) {\r\n          // check the value is one of the ones in the list\r\n          var item = _.find(self.eventOrganizerList, (eventOrganizer) => {\r\n            return eventOrganizer.name === value\r\n          })\r\n\r\n          if (!item) {\r\n            return false\r\n          }\r\n\r\n          return true\r\n        }\r\n      })\r\n    },\r\n    mounted () {\r\n      if (this.value) {\r\n        this.setLocalVal(this.value)\r\n      }\r\n    },\r\n    methods: {\r\n      setLocalVal (val) {\r\n        if (!val) {\r\n          this.eventOrganizer = null\r\n        } else {\r\n          var ds = _.find(this.eventOrganizerList, (eventOrganizer) => {\r\n            return eventOrganizer.code === `${val.eventOrganizerType}:${val.organizerId}`\r\n          })\r\n          if (ds) {\r\n            this.eventOrganizer = ds.name\r\n          } else {\r\n            this.eventOrganizer = null\r\n          }\r\n        }\r\n      },\r\n      onInput (eventOrganizerName) {\r\n        this.eventOrganizer = eventOrganizerName\r\n        var self = this\r\n        this.$validator.validate().then(result => {\r\n          if (result) {\r\n            var item = _.find(self.eventOrganizerList, (item) => {\r\n              return item.name.toLowerCase() === eventOrganizerName.toLowerCase()\r\n            })\r\n\r\n            if (!item) {\r\n              self.$emit('input', null)\r\n              return\r\n            }\r\n\r\n            var data = item.eventOrganizer\r\n\r\n            self.$emit('input', data)\r\n          }\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n\r\n  .event-organizers-dropdown {\r\n    input::-webkit-calendar-picker-indicator {\r\n      display: none;\r\n    }\r\n    input.form-control {\r\n      border: solid 2px $brand-grey5;\r\n        &:focus {\r\n          box-shadow: 0 0 0 0.2rem $brand-grey3;\r\n        }\r\n      }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPREventOrganizersDropdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPREventOrganizersDropdown.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SPREventOrganizersDropdown.vue?vue&type=template&id=71a30c02\"\nimport script from \"./SPREventOrganizersDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./SPREventOrganizersDropdown.vue?vue&type=script&lang=js\"\nimport style0 from \"./SPREventOrganizersDropdown.vue?vue&type=style&index=0&id=71a30c02&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"socialmedia\"},[_c('div',{staticClass:\"sharethis-inline-share-buttons\"})])\n}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"socialmedia\">\r\n    <div class=\"sharethis-inline-share-buttons\"></div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'ShareThis',\r\n    mounted (): void {\r\n      // script to add sharethis social media buttons\r\n      // @ts-ignore\r\n      if (window.__sharethis__) {\r\n        // @ts-ignore\r\n        window.__sharethis__.initialize()\r\n      } else {\r\n        const scr = document.createElement('script')\r\n        scr.setAttribute('async', 'true')\r\n        scr.setAttribute(\r\n          'src',\r\n          '//platform-api.sharethis.com/js/sharethis.js#property=5a6083b04fc3d70011b2ee01&product=inline-share-buttons'\r\n        )\r\n\r\n        var head = document.getElementsByTagName('head')\r\n        if (head.length) {\r\n          head[0].appendChild(scr)\r\n        }\r\n      }\r\n    }\r\n  })\r\n</script>","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ShareThis.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ShareThis.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ShareThis.vue?vue&type=template&id=fbed7174\"\nimport script from \"./ShareThis.vue?vue&type=script&lang=ts\"\nexport * from \"./ShareThis.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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 Vue from 'vue'\r\nimport VueResource from 'vue-resource'\r\n\r\nVue.use(VueResource)\r\n\r\nconst validatorHasEventOrganizer = {\r\n  getMessage (field, args) {\r\n    return 'Event Organizer must be defined'\r\n  },\r\n  validate (value, args) {\r\n    var rule = value.organizerId > 0\r\n    return rule\r\n  }\r\n}\r\n\r\nexport default validatorHasEventOrganizer\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"spr-event-collapsible\"},[_c('div',{staticClass:\"header\",on:{\"click\":_vm.toggleCollapse}},[_c('span',{staticClass:\"cap-label\"},[_vm._v(_vm._s(_vm.title))]),(_vm.showIcon === 'chevron')?_c('div',[(_vm.collapsed)?_c('font-awesome-icon',{staticClass:\"brand-red chevron\",attrs:{\"icon\":\"chevron-up\",\"aria-hidden\":\"true\"}}):_c('font-awesome-icon',{staticClass:\"brand-red chevron\",attrs:{\"icon\":\"chevron-down\",\"aria-hidden\":\"true\"}})],1):(_vm.showIcon === 'pencil')?_c('div',[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"pencil-alt\",\"aria-hidden\":\"true\"}})],1):_c('div',[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"pencil-alt\",\"aria-hidden\":\"true\"}})],1)]),(!_vm.collapsed)?_c('div',[_vm._t(\"default\")],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"spr-event-collapsible\">\r\n    <div class=\"header\" @click=\"toggleCollapse\">\r\n      <span class=\"cap-label\">{{ title }}</span>\r\n      <div v-if=\"showIcon === 'chevron'\">\r\n        <font-awesome-icon v-if=\"collapsed\" icon=\"chevron-up\" class=\"brand-red chevron\" aria-hidden=\"true\" />\r\n        <font-awesome-icon v-else icon=\"chevron-down\" class=\"brand-red  chevron\" aria-hidden=\"true\" />\r\n      </div>\r\n      <div v-else-if=\"showIcon === 'pencil'\">\r\n        <font-awesome-icon icon=\"pencil-alt\" class=\"brand-red\" aria-hidden=\"true\" />\r\n      </div>\r\n      <div v-else>\r\n        <font-awesome-icon\r\n          icon=\"pencil-alt\"\r\n          class=\"brand-red\"\r\n          aria-hidden=\"true\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"!collapsed\">\r\n      <slot></slot>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    collapsed: boolean\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'SprEventCollapsible',\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        required: true\r\n      },\r\n      showChevron: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      showPencil: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      initialCollapsed: {\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        collapsed: this.initialCollapsed\r\n      }\r\n    },\r\n    computed: {\r\n      // Use a computed property to determine which icon to show\r\n      showIcon (): string {\r\n        if (this.showChevron && !this.showPencil) {\r\n          return 'chevron'\r\n        } else if (!this.showChevron && this.showPencil) {\r\n          return 'pencil'\r\n        }\r\n        return 'pencil' // or a default value\r\n      }\r\n    },\r\n    methods: {\r\n      toggleCollapse () {\r\n        this.collapsed = !this.collapsed\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../../../assets/scss/_variables.scss\";\r\n.spr-event-collapsible{\r\n  .chevron {\r\n    margin-bottom: 9px;\r\n  }\r\n\r\n  .header {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: center;\r\n    cursor: pointer;\r\n  }\r\n}\r\n</style>","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprEventCollapsible.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprEventCollapsible.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SprEventCollapsible.vue?vue&type=template&id=041056b8&scoped=true\"\nimport script from \"./SprEventCollapsible.vue?vue&type=script&lang=ts\"\nexport * from \"./SprEventCollapsible.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SprEventCollapsible.vue?vue&type=style&index=0&id=041056b8&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"041056b8\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div v-if=\"selectImage\" class=\"event-page\">\r\n    <div class=\"container\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12 back-header py-2\">\r\n          <span @click=\"selectImage = null\">\r\n            <font-awesome-icon icon=\"chevron-left\" class=\"back\" />\r\n            {{ $t(\"customerForm.back\") }}\r\n          </span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div\r\n          v-for=\"(e, i) in imageLib\"\r\n          :key=\"i\"\r\n          class=\"col-6 col-sm-6 col-md-4 py-1\"\r\n        >\r\n          <img\r\n            :src=\"e.prev\"\r\n            alt=\"background image option\"\r\n            class=\"select-thumb\"\r\n            :class=\"{ selected: libImage === e.url }\"\r\n            @click=\"libImage = e.url\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div class=\"row pb-3\">\r\n        <div class=\"col-12 text-center\">\r\n          <sprbutton\r\n            type=\"primary\"\r\n            :size=\"1\"\r\n            :title=\"$t('eventPage.cancel')\"\r\n            class=\"spr-redborder button-width my-1\"\r\n            click-event=\"can\"\r\n            @can=\"selectImage = null\"\r\n          />\r\n          <sprbutton\r\n            type=\"primary\"\r\n            :size=\"1\"\r\n            :title=\"$t('eventPage.select')\"\r\n            class=\"spr-redborder button-width my-1\"\r\n            click-event=\"selectimg\"\r\n            @selectimg=\"setLibraryImage\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <div v-else class=\"event-page\">\r\n    <div v-if=\"isUpdating\" class=\"updating\">\r\n      <div class=\"spinner\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n\r\n    <!-- BACK BUTTON -->\r\n    <div class=\"col-12\" style=\"box-sizing:content-box\">\r\n      <backbar />\r\n    </div>\r\n\r\n    <!-- HEADER AREA -->\r\n    <div class=\"hero\">\r\n      <div class=\"eventimage\" :style=\"heroImageStyle\" />\r\n      <div class=\"thumbimage\" :style=\"thumbImageStyle\" />\r\n      <div class=\"container\">\r\n        <h1>\r\n          <div class=\"event-title-container\">\r\n            <div class=\"white-before\"></div>\r\n            <div class=\"inline-with-whitebefore\">\r\n              <span class=\"event-title\">{{ translation.name }}</span>\r\n            </div>\r\n          </div>\r\n        </h1>\r\n        <span v-if=\"sprEvent.category !== null\" class=\"category\">{{\r\n          computedCategory\r\n        }}</span>\r\n        <span v-if=\"sprEvent.type !== null\" class=\"type\">{{\r\n          computedType\r\n        }}</span>\r\n        <div class=\"row\">\r\n          <div v-if=\"showMessageFull\" class=\"col-12\">\r\n            <div class=\"message-full\">\r\n              <div class=\"message-text\">\r\n                {{ $t(\"eventPage.eventClosedMessage\") }}\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div\r\n          v-if=\"hasRole('Admin') || hasRole('NationalAdmin') || isCreator || isEventAdmin || isAdd\"\r\n          class=\"actions\"\r\n        >\r\n          <sprbutton\r\n            v-if=\"showJoinAction\"\r\n            description=\"Join Event As Admin\"\r\n            contrast\r\n            type=\"primary\"\r\n            :size=\"1\"\r\n            :title=\"modalButton\"\r\n            class=\"spr-greyborder button-width\"\r\n            click-event=\"joinEvenet\"\r\n            :disabled=\"isRegistrationDeadlinePassed\"\r\n            @joinEvenet=\"eventStartJoinButton\"\r\n          />\r\n          <sprbutton\r\n            v-if=\"eventEditOpen\"\r\n            contrast\r\n            type=\"primary\"\r\n            :size=\"1\"\r\n            :title=\"isAdd ? $t('eventPage.publish') : $t('eventPage.save')\"\r\n            class=\"spr-greyborder button-width\"\r\n            click-event=\"eventPublish\"\r\n            @eventPublish=\"eventPublishButton\"\r\n          />\r\n          <sprbutton\r\n            v-if=\"!eventEditOpen && isEdit\"\r\n            contrast\r\n            type=\"primary\"\r\n            :size=\"1\"\r\n            :title=\"$t('eventPage.edit')\"\r\n            class=\"spr-greyborder button-width\"\r\n            click-event=\"eventEdit\"\r\n            @eventEdit=\"eventEditButton\"\r\n          />\r\n          <sprbutton\r\n            v-if=\"!eventEditOpen && (isCreator || isEventAdmin)\"\r\n            contrast\r\n            type=\"primary\"\r\n            :size=\"1\"\r\n            :title=\"$t('eventPage.copy')\"\r\n            class=\"spr-greyborder button-width\"\r\n            click-event=\"eventCopy\"\r\n            @eventCopy=\"eventCopyButton\"\r\n          />\r\n          <sprbutton\r\n            v-if=\"eventEditOpen\"\r\n            contrast\r\n            type=\"primary\"\r\n            :size=\"1\"\r\n            :title=\"$t('eventPage.cancel')\"\r\n            class=\"spr-greyborder button-width\"\r\n            click-event=\"eventCancel\"\r\n            @eventCancel=\"eventCancelButton\"\r\n          />\r\n          <b-btn\r\n            v-if=\"sprEvent.id\"\r\n            v-b-modal.removeModal\r\n            class=\"spr-button button-width spr-roundbox-1\"\r\n          >\r\n            {{ $t(\"eventPage.remove\") }}\r\n          </b-btn>\r\n          <div v-if=\"isCreator\" class=\"organizer\">\r\n            <div class=\"row\">\r\n              <div class=\"col-3 col-lg-4\" />\r\n              <div class=\"col-9 col-lg-8\">\r\n                <span>{{ $t(\"eventPage.organizerYou\") }}</span>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div v-else-if=\"showJoinAction\" class=\"actions\">\r\n          <sprbutton\r\n            description=\"Join Event\"\r\n            type=\"primary\"\r\n            contrast\r\n            :size=\"1\"\r\n            :title=\"modalButton\"\r\n            class=\"spr-greyborder button-width\"\r\n            click-event=\"joinEvenet\"\r\n            :disabled=\"isRegistrationDeadlinePassed\"\r\n            @joinEvenet=\"eventStartJoinButton\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"event-content\">\r\n      <!-- EDIT ROW for hero area information -->\r\n      <div v-if=\"eventEditOpen\" class=\"edit-row hero-area\">\r\n        <div class=\"container top-space\">\r\n          <div class=\"row\">\r\n            <div ref=\"validation\" class=\"col-12\">\r\n              <sprvalidation\r\n                v-if=\"validationErrors && validationErrors.length > 0\"\r\n                :validation-errors=\"validationErrors\"\r\n                class=\"mx-auto my-4 d-block\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12\">\r\n              <div class=\"row\">\r\n                <div class=\"col-12\">\r\n                  <span class=\"cap-label\">{{\r\n                    $t(\"eventPage.languageSelector\")\r\n                  }}</span>\r\n                </div>\r\n              </div>\r\n              <div class=\"row\">\r\n                <div class=\"col-12\">\r\n                  <div\r\n                    v-for=\"(e, i) in availableTranslations\"\r\n                    :key=\"i\"\r\n                    class=\"translation\"\r\n                  >\r\n                    <button\r\n                      class=\"language-name\"\r\n                      :class=\"{\r\n                        selected:\r\n                          currentTranslation.languageId === e.languageId,\r\n                      }\"\r\n                      @click=\"changeEditorLanguage(e.languageId)\"\r\n                    >\r\n                      {{ e.text }}\r\n                    </button>\r\n                    <button\r\n                      v-if=\"currentTranslation.languageId !== e.languageId\"\r\n                      class=\"remove-language\"\r\n                      @click=\"deleteTranslation(e.languageId)\"\r\n                    >\r\n                      {{ $t(\"eventPage.removeLanguage\") }} {{ e.text }}\r\n                    </button>\r\n                  </div>\r\n                </div>\r\n                <div class=\"col-12\">\r\n                  <div\r\n                    v-for=\"(e, i) in possibleTranslations\"\r\n                    :key=\"i\"\r\n                    class=\"translation\"\r\n                  >\r\n                    <button class=\"disabled language-name\">\r\n                      {{ e.text }}\r\n                    </button>\r\n                    <button\r\n                      class=\"remove-language\"\r\n                      @click=\"newTranslation(e.id)\"\r\n                    >\r\n                      {{ $t(\"eventPage.addLanguage\") }} {{ e.text }}\r\n                    </button>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n          <div class=\"space-between-row mt-3\">\r\n            <div class=\"col-12 col-lg-8\">\r\n              <forminput\r\n                v-model=\"currentTranslation.name\"\r\n                v-validate=\"'required'\"\r\n                :hint=\"$t('eventPage.name')\"\r\n                :is-valid=\"!errors.has('eventPage.name')\"\r\n                name=\"eventPage.name\"\r\n                :required=\"true\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"row mt-3\">\r\n            <div class=\"col-12 col-lg-8\">\r\n              <eventorganizerdropdown\r\n                v-validate=\"'required|hasEventOrganizer'\"\r\n                :hint=\"$t('eventPage.eventDistrictSection')\"\r\n                name=\"eventPage.eventDistrictSection\"\r\n                :required=\"true\"\r\n                :value=\"eventOrganizerData\"\r\n                :is-valid=\"!errors.has('eventPage.eventDistrictSection')\"\r\n                @input=\"onEventOrganizerChanged\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12 volunteertask-filter\">\r\n              <a\r\n                href=\"javascript:void(0)\"\r\n                :class=\"{ selected: !isVolunteerTask }\"\r\n                @click=\"onRegularEventClick\"\r\n              >{{ $t(\"eventPage.event\") }}</a>\r\n              <a\r\n                href=\"javascript:void(0)\"\r\n                :class=\"{ selected: isVolunteerTask }\"\r\n                @click=\"onVolunteerTaskClick\"\r\n              >{{ $t(\"eventPage.volunteerTask\") }}</a>\r\n            </div>\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12 text-left\">\r\n              <span class=\"subheader\">{{ $t('eventPage.eventCategory') }}</span>\r\n            </div>\r\n            <div class=\"col-12\">\r\n              <checkboxlist v-model=\"sprEvent.category\"\r\n                            :list=\"involvedEventCategoriesOptions\"\r\n                            :rows=\"3\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div v-show=\"!isVolunteerTask\" class=\"row\">\r\n            <div class=\"col-12 text-left\">\r\n              <span class=\"subheader\">{{ $t('eventPage.eventType') }}</span>\r\n            </div>\r\n            <div class=\"col-12\">\r\n              <checkboxlist v-model=\"sprEvent.type\"\r\n                            :list=\"eventTypes\"\r\n                            :rows=\"3\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"row\" style=\"margin-top:25px;\">\r\n            <!-- change this into a list of checkboxes #6257\r\n            <div class=\"col-12 col-md-6 col-lg-4\">\r\n              <dropdownnumber\r\n                v-model=\"sprEvent.category\"\r\n                :title=\"$t('eventPage.eventCategory')\"\r\n                :items=\"eventCategories\"\r\n                :is-valid=\"true\"\r\n              />\r\n            </div>-->\r\n            <!--<div v-show=\"!isVolunteerTask\" class=\"col-12 col-md-6 col-lg-4\">\r\n               and this for the other one! can't remember the ticket number now\r\n              <dropdownnumber\r\n                v-model=\"sprEvent.type\"\r\n                :title=\"$t('eventPage.eventType')\"\r\n                :items=\"eventTypes\"\r\n                :is-valid=\"true\"\r\n              />\r\n            </div>-->\r\n            <div class=\"col-md-12\">\r\n              <checkboxinput\r\n                v-model=\"sprEvent.isOnline\"\r\n                :title=\"$t('eventPage.isOnline')\"\r\n                :aria-label=\"$t('eventPage.isOnline')\"\r\n              />\r\n            </div>\r\n            <div class=\"col-md-12\">\r\n              <checkboxinput\r\n                v-model=\"sprEvent.isPublic\"\r\n                :title=\"$t('eventPage.visibility')\"\r\n                :aria-label=\"$t('eventPage.visibility')\"\r\n              />\r\n            </div>\r\n            <div class=\"col-12\">\r\n              <div class=\"vertical-container\">\r\n                <div class=\"cap-label cap-label-language\">\r\n                  {{ $t(\"eventPage.eventLanguages\") }}\r\n                </div>\r\n                <div class=\"language-content\">\r\n                  <pillbox\r\n                    :items=\"languages\"\r\n                    :selected=\"selectedlanguages\"\r\n                    @change=\"onLanguageChanged\"\r\n                  />\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12 col-sm-12 col-md-8\">\r\n              <div class=\"upload\">\r\n                <div class=\"cap-label mt-3\">\r\n                  {{ $t(\"eventPage.changeBackground\") }}\r\n                </div>\r\n                <b-form-file\r\n                  accept=\"image/*\"\r\n                  prefix=\"img\"\r\n                  :placeholder=\"$t('eventPage.chooseBackgroundPlaceholder')\"\r\n                  :choose-label=\"$t('eventPage.chooseButton') + ': '\"\r\n                  :drop-label=\"$t('eventPage.dropFile')\"\r\n                  @change=\"onBackgroundFileChange\"\r\n                />\r\n              </div>\r\n            </div>\r\n            <div class=\"col-12\">\r\n              <sprbutton\r\n                type=\"primary\"\r\n                :size=\"1\"\r\n                :title=\"$t('eventPage.bgBankButton')\"\r\n                class=\"spr-redborder button-width\"\r\n                click-event=\"selectBg\"\r\n                @selectBg=\"selectImage = 1\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"row\">\r\n            <div class=\"col-12 col-sm-12 col-md-8\">\r\n              <div class=\"upload\">\r\n                <div class=\"cap-label mt-3\">\r\n                  {{ $t(\"eventPage.changeThumbnail\") }}\r\n                </div>\r\n                <b-form-file\r\n                  accept=\"image/*\"\r\n                  prefix=\"img\"\r\n                  :placeholder=\"$t('eventPage.chooseThumbPlaceHolder')\"\r\n                  :choose-label=\"$t('eventPage.chooseButton') + ': '\"\r\n                  :drop-label=\"$t('eventPage.dropFile')\"\r\n                  @change=\"onThumbFileChange\"\r\n                />\r\n              </div>\r\n            </div>\r\n            <div class=\"col-12\">\r\n              <sprbutton\r\n                type=\"primary\"\r\n                :size=\"1\"\r\n                :title=\"$t('eventPage.thumbBankButton')\"\r\n                class=\"spr-redborder button-width\"\r\n                click-event=\"selectBg\"\r\n                @selectBg=\"selectImage = 2\"\r\n              />\r\n            </div>\r\n          </div>\r\n          <div class=\"row mt-3\">\r\n            <div class=\"col-12 col-sm-12 col-md-8\">\r\n              <textareainput\r\n                v-model=\"currentTranslation.moreInfoQuestion\"\r\n                :title=\"$t('eventPage.moreInfoQuestion')\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"container\">\r\n        <div class=\"row\">\r\n          <div class=\"col-sm-12\">\r\n            <div class=\"column\">\r\n              <!-- EVENT TIME & DATE -->\r\n              <div class=\"event-block time\">\r\n                <a\r\n                  v-if=\"isEdit && eventEditOpen\"\r\n                  tabindex=\"0\"\r\n                  href=\"javascript:void(0);\"\r\n                  class=\"edit-corner\"\r\n                  @click=\"timeEditButton\"\r\n                >\r\n                  <font-awesome-icon\r\n                    icon=\"pencil-alt\"\r\n                    class=\"brand-red\"\r\n                    aria-hidden=\"true\"\r\n                  />\r\n                </a>\r\n                <div v-if=\"!timeEditorOpen\" class=\"event-block-container\">\r\n                  <div class=\"row\">\r\n                    <div class=\"col-2 col-sm-2\">\r\n                      <span class=\"icon\" aria-hidden=\"true\">\r\n                        <font-awesome-icon\r\n                          :icon=\"['far', 'clock']\"\r\n                          aria-hidden=\"true\"\r\n                        />\r\n                      </span>\r\n                    </div>\r\n                    <div class=\"col-10 col-sm-10\">\r\n                      <span>{{ formattedStartDate }}\r\n                        <span\r\n                          v-if=\"\r\n                            formattedEndDate !== formattedStartDate &&\r\n                              !isVolunteerTask\r\n                          \"\r\n                        >\r\n                          &ndash; {{ formattedEndDate }}</span> </span><br />\r\n                      <span v-if=\"sprEvent.isAllDay\">{{\r\n                        $t(\"eventPage.allDay\")\r\n                      }}</span>\r\n                      <span v-else>{{ $t(\"eventPage.time\") }} {{ formattedStartTime }}\r\n                        <span\r\n                          v-if=\"\r\n                            formattedEndTime !== formattedStartTime &&\r\n                              !isVolunteerTask\r\n                          \"\r\n                        >\r\n                          &ndash; {{ formattedEndTime }}</span> </span><br />\r\n                      <span v-if=\"sprEvent.occurance > 1\" class=\"grey-text\">{{ occurrenceText }}<br /></span>\r\n                      <span\r\n                        v-if=\"\r\n                          sprEvent.registrationDeadline &&\r\n                            !isRegistrationDeadlinePassed\r\n                        \"\r\n                        class=\"grey-text\"\r\n                      >{{ $t(\"eventPage.registrationDeadline\") }}:\r\n                        {{ displayRegistrationDeadline }}<br /></span>\r\n                      <span\r\n                        v-else-if=\"\r\n                          sprEvent.registrationDeadline &&\r\n                            isRegistrationDeadlinePassed\r\n                        \"\r\n                        class=\"grey-text\"\r\n                      >{{ $t(\"eventPage.registrationDeadlinePassed\") }}<br /></span>\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n                <div v-else class=\"event-block-container edit-area\">\r\n                  <div class=\"row\">\r\n                    <div class=\"col-sm-12\">\r\n                      <span class=\"cap-label edit-label\">{{\r\n                        isVolunteerTask\r\n                          ? $t(\"eventPage.volunteerTaskDate\")\r\n                          : $t(\"eventPage.editDate\")\r\n                      }}</span>\r\n                      <div class=\"row\">\r\n                        <div class=\"col-10 col-sm-6 col-md-3 col-xl-2\">\r\n                          <datepicker\r\n                            :key=\"componentKey\"\r\n                            v-model=\"displayStartDate\"\r\n                            v-validate=\"'required'\"\r\n                            :title=\"\r\n                              isVolunteerTask\r\n                                ? $t('eventPage.volunteerTaskDeadline')\r\n                                : $t('eventPage.startDate')\r\n                            \"\r\n                            :has-error=\"errors.has('eventPage.startDate')\"\r\n                            name=\"eventPage.startDate\"\r\n                            :required=\"true\"\r\n                            :initial=\"displayStartDate\"\r\n                            :options=\"datepickerOptions\"\r\n                            @input=\"handleStartDateInput\"\r\n                          />\r\n                        </div>\r\n                        <div\r\n                          v-show=\"!sprEvent.isAllDay\"\r\n                          class=\"col-10 col-sm-6 col-md-3 col-xl-2\"\r\n                        >\r\n                          <timepicker\r\n                            v-model=\"eventStartTime\"\r\n                            :title=\"\r\n                              isVolunteerTask\r\n                                ? $t('eventPage.endTime')\r\n                                : $t('eventPage.startTime')\r\n                            \"\r\n                            :disabled=\"sprEvent.isAllDay\"\r\n                          />\r\n                        </div>\r\n                        <div\r\n                          v-show=\"!sprEvent.isAllDay && !isVolunteerTask\"\r\n                          class=\"col-10 col-sm-6 col-md-3 col-xl-2\"\r\n                        >\r\n                          <timepicker\r\n                            v-model=\"eventEndTime\"\r\n                            :title=\"$t('eventPage.endTime')\"\r\n                            :disabled=\"sprEvent.isAllDay\"\r\n                          />\r\n                        </div>\r\n                        <div\r\n                          v-show=\"!isVolunteerTask\"\r\n                          class=\"col-10 col-sm-6 col-md-3 col-xl-2\"\r\n                        >\r\n                          <datepicker\r\n                            :key=\"componentKey\"\r\n                            v-model=\"displayEndDate\"\r\n                            v-validate=\"{\r\n                              required: true,\r\n                              dateIsAfter: displayStartDate,\r\n                              dateisbefore:displayMaxEndDate\r\n                            }\"\r\n                            :title=\"$t('eventPage.endDate')\"\r\n                            :initial=\"displayEndDate\"\r\n                            :has-error=\"errors.has('eventPage.endDate')\"\r\n                            name=\"eventPage.endDate\"\r\n                            :required=\"true\"\r\n                            :limit=\"endDateLimit\"\r\n                            :options=\"datepickerOptions\"\r\n                          />\r\n                        </div>\r\n                      </div>\r\n                      <div class=\"row\">\r\n                        <div class=\"col-md-12\">\r\n                          <checkboxinput\r\n                            v-model=\"sprEvent.isAllDay\"\r\n                            :title=\"$t('eventPage.allDay')\"\r\n                            :aria-label=\"$t('eventPage.allDay')\"\r\n                          />\r\n                        </div>\r\n                      </div>\r\n                      <div v-show=\"isAdd\">\r\n                        <div class=\"row\">\r\n                          <div class=\"col-md-12\">\r\n                            <checkboxinput\r\n                              :title=\"$t('eventPage.recurringEvent')\"\r\n                              :value=\"isRecurring\"\r\n                              :aria-label=\"$t('eventPage.recurringEvent')\"\r\n                              @input=\"onRecurringEventChange\"\r\n                            />\r\n                          </div>\r\n                        </div>\r\n                        <div v-show=\"isRecurring\">\r\n                          <div class=\"row\">\r\n                            <div class=\"col-10 col-sm-6 col-xl-4\">\r\n                              <dropdownnumber\r\n                                :title=\"$t('eventPage.repeat')\"\r\n                                :items=\"recurrenceFrequencyOptions\"\r\n                                :is-valid=\"true\"\r\n                                :value=\"recurrenceFrequency\"\r\n                                @input=\"onFrequencyUpdate\"\r\n                              />\r\n                            </div>\r\n                          </div>\r\n                          <div class=\"row\">\r\n                            <div\r\n                              class=\"pr-md-0 col-10 col-sm-6 col-md-3 col-xl-2\"\r\n                            >\r\n                              <datepicker\r\n                                :key=\"componentKey\"\r\n                                :title=\"$t('eventPage.recurringUntil')\"\r\n                                :value=\"recurringUntil\"\r\n                                :initial=\"recurringUntil\"\r\n                                :has-error=\"\r\n                                  errors.has('eventPage.recurringUntil')\r\n                                \"\r\n                                name=\"eventPage.recurringUntil\"\r\n                                :options=\"datepickerOptions\"\r\n                                :limit=\"recurringUntilLimit\"\r\n                                @input=\"onRecurringUntilUpdate\"\r\n                              />\r\n                            </div>\r\n                            <div class=\"col-10 col-md-9 col-xl-6 repetitions\">\r\n                              <div class=\"wrap\">\r\n                                <span class=\"prefix\">{{\r\n                                  $t(\"eventPage.repetitionsPrefix\")\r\n                                }}</span>\r\n                                <numberinput\r\n                                  v-validate=\"'between:1,52'\"\r\n                                  :value=\"Number(sprEvent.repeat)\"\r\n                                  :min=\"2\"\r\n                                  :max=\"52\"\r\n                                  :is-valid=\"\r\n                                    !errors.has(\r\n                                      'eventPage.recurringRepetitions'\r\n                                    )\r\n                                  \"\r\n                                  name=\"eventPage.recurringRepetitions\"\r\n                                  @input=\"onRepetitionsUpdate\"\r\n                                />\r\n                                <span class=\"suffix\">{{\r\n                                  $t(\"eventPage.repetitionsSuffix\")\r\n                                }}</span>\r\n                              </div>\r\n                            </div>\r\n                          </div>\r\n                        </div>\r\n                      </div>\r\n                      <div class=\"row\">\r\n                        <div class=\"col-10 col-sm-6 col-xl-4\">\r\n                          <datepicker\r\n                            :key=\"componentKey\"\r\n                            v-model=\"registrationDeadline\"\r\n                            v-validate=\"{\r\n                              required: false,\r\n                              dateIsBefore: validatorDate,\r\n                            }\"\r\n                            :title=\"$t('eventPage.registrationDeadline')\"\r\n                            :initial=\"registrationDeadline\"\r\n                            :has-error=\"errors.has('eventPage.registrationDeadline')\"\r\n                            name=\"eventPage.registrationDeadline\"\r\n                            :options=\"datepickerOptions\"\r\n                            :is-nullable=\"true\"\r\n                            :placeholder=\"$t('eventPage.chooseDate')\"\r\n                            :limit=\"registrationDeadlineLimit\"\r\n                          />\r\n                        </div>\r\n                      </div>\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n\r\n              <!-- EVENT LOCATION -->\r\n              <div class=\"event-block location\">\r\n                <a\r\n                  v-if=\"isEdit && eventEditOpen\"\r\n                  tabindex=\"0\"\r\n                  href=\"javascript:void(0);\"\r\n                  class=\"edit-corner\"\r\n                  @click=\"locationEditButton\"\r\n                >\r\n                  <font-awesome-icon\r\n                    icon=\"pencil-alt\"\r\n                    class=\"brand-red\"\r\n                    aria-hidden=\"true\"\r\n                  />\r\n                </a>\r\n\r\n                <div v-if=\"!locationEditorOpen\" class=\"event-block-container\">\r\n                  <div class=\"row\">\r\n                    <div class=\"col-2 col-sm-2\">\r\n                      <span class=\"icon\" aria-hidden=\"true\">\r\n                        <font-awesome-icon\r\n                          icon=\"map-marker-alt\"\r\n                          aria-hidden=\"true\"\r\n                        />\r\n                      </span>\r\n                    </div>\r\n                    <div class=\"col-10 col-sm-10\">\r\n                      <p v-if=\"formattedLocation\" class=\"mr-4\">\r\n                        {{ formattedLocation }}\r\n                      </p>\r\n                      <p v-if=\"sprEvent.isOnline\" class=\"mr-4\">\r\n                        {{ $t(\"eventPage.isOnline\") }}\r\n                      </p>\r\n                      <a\r\n                        v-if=\"hasLocation\"\r\n                        href=\"javascript:void(0)\"\r\n                        @click=\"showMap\"\r\n                      >{{ $t(\"eventPage.showOnMap\") }}</a>\r\n                      <div v-if=\"hasLocation && mapIsVisible\" class=\"map\">\r\n                        <VueMap\r\n                          :center=\"mapCenter\"\r\n                          :zoom=\"mapZoom\"\r\n                          style=\"width: 100%; height: 250px\"\r\n                        >\r\n                          <VueMarker\r\n                            v-for=\"m in markers\"\r\n                            :key=\"m.id\"\r\n                            :position.sync=\"m.position\"\r\n                            :clickable=\"false\"\r\n                            :draggable=\"false\"\r\n                          />\r\n                        </VueMap>\r\n                      </div>\r\n                      <div\r\n                        v-if=\"\r\n                          isEdit && hasLocation && mapIsVisible && geocodeFailed\r\n                        \"\r\n                        class=\"geocodefailed\"\r\n                      >\r\n                        {{ $t(\"eventPage.geocodeFailed\") }}\r\n                      </div>\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n                <div v-else class=\"event-block-container edit-area\">\r\n                  <div class=\"row\">\r\n                    <div class=\"col-sm-12\">\r\n                      <span class=\"cap-label edit-label\">{{\r\n                        $t(\"eventPage.editLocation\")\r\n                      }}</span>\r\n\r\n                      <div class=\"row\">\r\n                        <div class=\"col-12 col-lg-8\">\r\n                          <forminput\r\n                            v-model=\"currentTranslation.placeName\"\r\n                            :hint=\"$t('eventPage.placeName')\"\r\n                            name=\"eventPage.placeName\"\r\n                            :is-valid=\"true\"\r\n                          />\r\n                        </div>\r\n                      </div>\r\n                      <div class=\"row\">\r\n                        <div class=\"col-12 col-lg-8\">\r\n                          <forminput\r\n                            v-model=\"currentTranslation.streetAddress\"\r\n                            :hint=\"$t('eventPage.streetAddress')\"\r\n                            name=\"eventPage.streetAddress\"\r\n                            :is-valid=\"true\"\r\n                          />\r\n                        </div>\r\n                      </div>\r\n                      <div class=\"row\">\r\n                        <div class=\"col-12 col-sm-6 col-md-4 col-lg-2\">\r\n                          <div class=\"search-item\">\r\n                            <div class=\"cap-label\">\r\n                              {{ $t(\"eventPage.zipCode\")\r\n                              }}<span v-if=\"!sprEvent.isOnline\">*</span>\r\n                            </div>\r\n                            <singleselectdropdown\r\n                              v-model=\"selectedZipLocation\"\r\n                              v-validate=\"{\r\n                                required: !sprEvent.isOnline,\r\n                              }\"\r\n                              :fixed-width=\"true\"\r\n                              :required=\"!sprEvent.isOnline\"\r\n                              name=\"eventPage.zipCode\"\r\n                              :is-valid=\"!errors.has('eventPage.zipCode')\"\r\n                              :value=\"selectedZipLocation\"\r\n                              :searchable=\"true\"\r\n                              :allowempty=\"true\"\r\n                              :items=\"zipCodes\"\r\n                              @change=\"onIsZipCodeChanged\"\r\n                            />\r\n                          </div>\r\n                        </div>\r\n                        <div class=\"col-12 col-sm-6 col-md-8 col-lg-6\">\r\n                          <forminput\r\n                            v-model=\"currentTranslation.city\"\r\n                            v-validate=\"{\r\n                              required: !sprEvent.isOnline,\r\n                            }\"\r\n                            :required=\"!sprEvent.isOnline\"\r\n                            :hint=\"$t('eventPage.city')\"\r\n                            name=\"eventPage.city\"\r\n                            :is-valid=\"!errors.has('eventPage.city')\"\r\n                          />\r\n                        </div>\r\n                      </div>\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n\r\n              <!-- EVENT FEE -->\r\n              <div class=\"event-block\">\r\n                <a\r\n                  v-if=\"isEdit && eventEditOpen\"\r\n                  tabindex=\"0\"\r\n                  href=\"javascript:void(0);\"\r\n                  class=\"edit-corner\"\r\n                  @click=\"feeEditButton\"\r\n                >\r\n                  <font-awesome-icon\r\n                    icon=\"pencil-alt\"\r\n                    class=\"brand-red\"\r\n                    aria-hidden=\"true\"\r\n                  />\r\n                </a>\r\n                <div v-if=\"!feeEditorOpen\" class=\"event-block-container fee\">\r\n                  <div class=\"row\">\r\n                    <div class=\"col-2 col-sm-2\">\r\n                      <span class=\"icon\" aria-hidden=\"true\">\r\n                        <font-awesome-icon\r\n                          icon=\"euro-sign\"\r\n                          aria-hidden=\"true\"\r\n                        />\r\n                      </span>\r\n                    </div>\r\n                    <div class=\"col-12 col-lg-8\">\r\n                      {{ translation.price }}\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n                <div v-else class=\"event-block-container edit-area\">\r\n                  <div class=\"row\">\r\n                    <div class=\"col-12 col-lg-8\">\r\n                      <forminput\r\n                        v-model=\"currentTranslation.price\"\r\n                        :hint=\"$t('eventPage.fee')\"\r\n                        name=\"eventPage.fee\"\r\n                        :is-valid=\"true\"\r\n                      />\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n\r\n            <!-- EVENT DESCRIPTION -->\r\n            <div class=\"event-block\">\r\n              <a\r\n                v-if=\"isEdit && eventEditOpen\"\r\n                tabindex=\"0\"\r\n                href=\"javascript:void(0);\"\r\n                class=\"edit-corner\"\r\n                @click=\"descriptionEditButton\"\r\n              >\r\n                <font-awesome-icon\r\n                  icon=\"pencil-alt\"\r\n                  class=\"brand-red\"\r\n                  aria-hidden=\"true\"\r\n                />\r\n              </a>\r\n              <div v-if=\"!descriptionEditorOpen\" class=\"event-block-container\">\r\n                <div class=\"row\">\r\n                  <div class=\"col-12 col-lg-8\">\r\n                    <span class=\"cap-label\">{{\r\n                      $t(\"eventPage.description\")\r\n                    }}</span>\r\n                    <p\r\n                      v-if=\"translation.description\"\r\n                      :key=\"componentKey\"\r\n                      v-linkified:options=\"{ nl2br: true }\"\r\n                    >\r\n                      {{ translation.description }}\r\n                    </p>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n              <div v-else class=\"event-block-container\">\r\n                <div class=\"row\">\r\n                  <div class=\"col-12 col-lg-8\">\r\n                    <textareainput\r\n                      v-model=\"currentTranslation.description\"\r\n                      :title=\"$t('eventPage.description')\"\r\n                      :rows=\"8\"\r\n                    />\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n\r\n            <!-- CONTACT PERSON -->\r\n            <div class=\"event-block\">\r\n              <a\r\n                v-if=\"isEdit && eventEditOpen\"\r\n                tabindex=\"0\"\r\n                href=\"javascript:void(0);\"\r\n                class=\"edit-corner\"\r\n                @click=\"contactEditButton\"\r\n              >\r\n                <font-awesome-icon\r\n                  icon=\"pencil-alt\"\r\n                  class=\"brand-red\"\r\n                  aria-hidden=\"true\"\r\n                />\r\n              </a>\r\n              <div\r\n                v-if=\"!contactEditorOpen\"\r\n                class=\"event-block-container contact\"\r\n              >\r\n                <div class=\"row field-row\">\r\n                  <div class=\"col-12 col-lg-8\">\r\n                    <span class=\"cap-label\">{{ $t(\"eventPage.contact\") }}</span>\r\n                    <div v-if=\"sprEvent.contact\" class=\"contact-person\">\r\n                      {{ sprEvent.contact.firstName }}\r\n                      {{ sprEvent.contact.lastName }}\r\n                    </div>\r\n                    <span v-if=\"sprEvent.contact.email\">{{\r\n                      sprEvent.contact.email\r\n                    }}</span>\r\n                    <br />\r\n                    <span v-if=\"sprEvent.contact.phone\">{{\r\n                      sprEvent.contact.phone\r\n                    }}</span>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n              <div v-else class=\"event-block-container contact\">\r\n                <div class=\"row field-row\">\r\n                  <div class=\"col-12 col-lg-8\">\r\n                    <span class=\"cap-label\">{{ $t(\"eventPage.contact\") }}</span>\r\n                    <div class=\"contact-details\">\r\n                      <forminput\r\n                        v-model=\"sprEvent.contact.firstName\"\r\n                        v-validate=\"'required'\"\r\n                        :hint=\"$t('eventPage.firstName')\"\r\n                        name=\"eventPage.firstName\"\r\n                        :is-valid=\"!errors.has('eventPage.firstName')\"\r\n                        :required=\"true\"\r\n                      />\r\n                      <forminput\r\n                        v-model=\"sprEvent.contact.lastName\"\r\n                        v-validate=\"'required'\"\r\n                        :hint=\"$t('eventPage.lastName')\"\r\n                        name=\"eventPage.lastName\"\r\n                        :is-valid=\"!errors.has('eventPage.lastName')\"\r\n                        :required=\"true\"\r\n                      />\r\n                      <forminput\r\n                        v-model=\"sprEvent.contact.email\"\r\n                        :hint=\"$t('eventPage.email')\"\r\n                        name=\"sprEvent.contact.email\"\r\n                        :is-valid=\"true\"\r\n                      />\r\n                      <forminput\r\n                        v-model=\"sprEvent.contact.phone\"\r\n                        :hint=\"$t('eventPage.phone')\"\r\n                        name=\"sprEvent.contact.phone\"\r\n                        :is-valid=\"true\"\r\n                      />\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n            <!-- SOCIAL MEDIA -->\r\n            <div v-if=\"!isAdd\" class=\"event-block\">\r\n              <sharethis />\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <!-- EVENT ADMINS -->\r\n        <div v-if=\"hasRole('Admin') || hasRole('NationalAdmin') || isCreator || isEventAdmin\" class=\"row\">\r\n          <div class=\"col-12\">\r\n            <div class=\"event-block admins\">\r\n              <a\r\n                v-if=\"isEdit && eventEditOpen && (hasRole('Admin') || hasRole('NationalAdmin') || isCreator)\"\r\n                tabindex=\"0\"\r\n                href=\"javascript:void(0);\"\r\n                class=\"edit-corner\"\r\n                @click=\"adminsEditButton\"\r\n              >\r\n                <font-awesome-icon\r\n                  icon=\"pencil-alt\"\r\n                  class=\"brand-red\"\r\n                  aria-hidden=\"true\"\r\n                />\r\n              </a>\r\n              <div class=\"event-block-container\">\r\n                <eventadmins\r\n                  :admins=\"sprEvent.eventAdmins\"\r\n                  :is-edit-mode=\"\r\n                    (hasRole('Admin') || hasRole('NationalAdmin') || isCreator || isAdd) && isEditAdminsOpen\r\n                  \"\r\n                  @addAdmin=\"onAddAdmin\"\r\n                  @removeAdmin=\"onRemoveAdmin\"\r\n                />\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"(isEdit && eventEditOpen) || isAdd\" class=\"row\">\r\n          <div class=\"col-12 text-left\">\r\n            <span class=\"subheader\">{{ $t('eventPage.eventRegistrationOptions') }}</span>\r\n          </div>\r\n          <div class=\"col-md-12\">\r\n            <sprradiogroupkey\r\n              ref=\"eventRegistrationOptions\"\r\n              v-model=\"sprEvent.eventRegistration\"\r\n              radio-group-color=\"basic\"\r\n              :options=\"eventRegistrationOptions\"\r\n            /> <!-- options for eventregistration are external, Oma or None -->\r\n          </div>\r\n        </div>\r\n        <div v-if=\"((isEdit && eventEditOpen) || isAdd) && sprEvent.eventRegistration === 1\" class=\"col-12 col-lg-8\">\r\n          <!-- event registration options are 0: Oma, 1: external, 2: None-->\r\n          <!-- eventregistration is external, not Oma or none -->\r\n          <forminput\r\n            v-model=\"currentTranslation.externalUrl\"\r\n            v-validate=\"{ url: { require_protocol: true } }\"\r\n            :hint=\"$t('eventPage.externalEvent')\"\r\n            name=\"eventPage.externalEvent\"\r\n            :placeholder=\"$t('eventPage.externalEventPlaceholder')\"\r\n            :is-valid=\"!errors.has('eventPage.externalEvent')\"\r\n          />\r\n        </div>\r\n        <div v-if=\"(((isEdit && eventEditOpen) || isAdd) && sprEvent.eventRegistration === 0) || showViewRoles\" class=\"event-block\">\r\n          <!-- eventregistration is external, not Oma or none -->\r\n          <div ref=\"editeventroles\" class=\"row\">\r\n            <div class=\"col-12\">\r\n              <SprCollapsible v-if=\"showEditRoles\"\r\n                              :title=\"$t('eventPage.roles')\"\r\n              >\r\n                <!-- ROLES -->\r\n                <editeventroles\r\n                  v-model=\"sprEvent.eventRoles\"\r\n                  :show-warning=\"showNoRolesWarning\"\r\n                  :eventid=\"sprEvent.id\"\r\n                />\r\n              </SprCollapsible>\r\n\r\n              <div v-if=\"(((isEdit && eventEditOpen) || isAdd) && sprEvent.eventRegistration === 0) && (isCreator || isEventAdmin || hasRole('Admin') || hasRole('NationalAdmin'))\" class=\"row\">\r\n                <div class=\"col-12\">\r\n                  <checkboxinput :title=\"$t('eventPage.showParticipants')\"\r\n                                 :value=\"sprEvent.showParticipants\"\r\n                                 :aria-label=\"$t('eventPage.showParticipants')\"\r\n                                 @input=\"onShowParticipantsChanged\"\r\n                  />\r\n                </div>\r\n              </div>\r\n\r\n              <vieweventroles\r\n                v-if=\"showViewRoles\"\r\n                v-model=\"sprEvent.eventRoles\"\r\n                :title=\"$t('eventPage.roles')\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <!-- CONTACT NOTIFICATIONS -->\r\n        <div v-if=\"(hasRole('Admin') || hasRole('NationalAdmin') || isCreator || isEventAdmin) && sprEvent.eventRegistration === 0\" class=\"event-block contact-notifications\">\r\n          <!-- eventregistration 1 = Oma -->\r\n          <a\r\n            v-if=\"isEdit && eventEditOpen\"\r\n            tabindex=\"0\"\r\n            href=\"javascript:void(0);\"\r\n            class=\"edit-corner\"\r\n            @click=\"contactNotificationsButton\"\r\n          >\r\n            <font-awesome-icon\r\n              icon=\"pencil-alt\"\r\n              class=\"brand-red\"\r\n              aria-hidden=\"true\"\r\n            />\r\n          </a>\r\n          <!-- CLOSED -->\r\n          <div v-if=\"!contactNotificationsOpen\" class=\"event-block-container contact\">\r\n            <div class=\"row field-row\">\r\n              <div class=\"col-12 col-lg-8\">\r\n                <span class=\"cap-label\">{{\r\n                  $t(\"eventPage.contactNotificationHeader\")\r\n                }}</span>\r\n                <div v-if=\"contactsReadOnly\" class=\"contact-person\">\r\n                  <div class=\"onlyContactsInfo\">\r\n                    <div>{{ contactsReadOnly }}</div>\r\n                  </div>\r\n                </div>\r\n                <div class=\"row pt-3\">\r\n                  <div class=\"col-12 col-sm-9 col-md-6\">\r\n                    <div class=\"onlyFrequencyDefinition\">\r\n                      <dl>\r\n                        <dt v-show=\"hasContactNotifications\">\r\n                          {{ $t(\"userAdmin.sectionReportFrequency\") }}\r\n                        </dt>\r\n                        <dd>{{ frequencyDefinition }}</dd>\r\n                      </dl>\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n          <!-- OPEN -->\r\n          <div v-else class=\"event-block-container contact\">\r\n            <div class=\"row\">\r\n              <div class=\"col-12 col-md-12\">\r\n                <span class=\"cap-label\">{{\r\n                  $t(\"eventPage.contactNotificationHeader\")\r\n                }}</span>\r\n              </div>\r\n              <div class=\"col-9 col-md-6\">\r\n                <div class=\"emailinput\">\r\n                  <forminput\r\n                    v-model=\"contactNotificationInputMail\"\r\n                    v-validate=\"'email'\"\r\n                    input-type=\"email\"\r\n                    :placeholder=\"$t('userAdmin.sectionReportContactAdd')\"\r\n                    name=\"contactNotifications.contactemail\"\r\n                    :required=\"false\"\r\n                    :is-valid=\"!errors.has('contactNotifications.contactemail')\"\r\n                  />\r\n                </div>\r\n              </div>\r\n              <div class=\"col-3 col-md-6\">\r\n                <sprbutton\r\n                  :size=\"5\"\r\n                  :title=\"$t('userAdmin.sectionReportContactAdd')\"\r\n                  click-event=\"addContactNotification\"\r\n                  class=\"add-button\"\r\n                  @addContactNotification=\"onAddContactNotification\"\r\n                />\r\n              </div>\r\n            </div>\r\n            <div class=\"col-12 editor-area\">\r\n              <span>\r\n                <pill\r\n                  v-for=\"(contact, index) in contactNotifications.contacts\"\r\n                  :key=\"index\"\r\n                  :value=\"contact.email\"\r\n                  :show-delete=\"true\"\r\n                  @remove=\"onRemoveContact(contact)\"\r\n                />\r\n              </span>\r\n            </div>\r\n            <!-- end of contact notifications  -->\r\n            <div class=\"frequency\">\r\n              {{ $t(\"userAdmin.sectionReportFrequency\") }}\r\n            </div>\r\n            <sprradiogroupkey\r\n              ref=\"contactNotificationFrequency\"\r\n              v-model=\"contactNotifications.notificationFrequency\"\r\n              radio-group-color=\"basic\"\r\n              :options=\"contactNotificationFrequencies\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <div v-if=\"((isEdit && eventEditOpen) || isAdd) && sprEvent.eventRegistration === 0\" class=\"event-block\">\r\n          <div class=\"row\">\r\n            <div class=\"col-12 participants\">\r\n              <!-- PARTICIPANTS -->\r\n              <div v-if=\"hasRole('Admin') || hasRole('NationalAdmin') || isCreator || isEventAdmin\">\r\n                <eventparticipantsgrid\r\n                  v-model=\"sprEvent.eventRoles\"\r\n                  @change=\"onParticipationChanged\"\r\n                  @changeRemoval=\"onRemoveParticipants\"\r\n                />\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- BOTTOM BUTTONS -->\r\n      <div\r\n        v-if=\"hasRole('Admin') || hasRole('NationalAdmin') || isCreator || isEventAdmin || isAdd\"\r\n        class=\"footer-actions\"\r\n      >\r\n        <div class=\"col-12\">\r\n          <div class=\"container\">\r\n            <div class=\"row\">\r\n              <div class=\"col-12\">\r\n                <sprbutton\r\n                  v-if=\"!isAdd && (hasRole('Admin') || hasRole('NationalAdmin') || isCreator || isEventAdmin)\"\r\n                  type=\"primary\"\r\n                  :size=\"1\"\r\n                  :title=\"$t('eventPage.downloadParticipants')\"\r\n                  class=\"spr-redborder button-width my-1\"\r\n                  click-event=\"downloadParticipants\"\r\n                  @downloadParticipants=\"onDownloadParticipants\"\r\n                />\r\n                <sprbutton\r\n                  v-if=\"eventEditOpen\"\r\n                  type=\"primary\"\r\n                  :size=\"1\"\r\n                  :title=\"isAdd ? $t('eventPage.publish') : $t('eventPage.save')\"\r\n                  class=\"spr-redborder button-width my-1\"\r\n                  click-event=\"eventPublish\"\r\n                  @eventPublish=\"eventPublishButton\"\r\n                />\r\n                <sprbutton\r\n                  v-if=\"!eventEditOpen && isEdit\"\r\n                  type=\"primary\"\r\n                  :size=\"1\"\r\n                  :title=\"$t('eventPage.edit')\"\r\n                  class=\"spr-redborder button-width my-1\"\r\n                  click-event=\"eventEdit\"\r\n                  @eventEdit=\"eventEditButton\"\r\n                />\r\n                <sprbutton\r\n                  v-if=\"eventEditOpen\"\r\n                  type=\"primary\"\r\n                  :size=\"1\"\r\n                  :title=\"$t('eventPage.cancel')\"\r\n                  class=\"spr-redborder button-width my-1\"\r\n                  click-event=\"eventCancel\"\r\n                  @eventCancel=\"eventCancelButton\"\r\n                />\r\n                <sprbutton\r\n                  v-if=\"(eventEditOpen && !isAdd) && (hasRole('Admin') || hasRole('NationalAdmin') || isCreator || isEventAdmin)\"\r\n                  type=\"primary\"\r\n                  :size=\"1\"\r\n                  :title=\"$t('eventPage.removeParticipants')\"\r\n                  :disabled=\"!participantsToRemove.length \"\r\n                  class=\"spr-redborder button-width my-1\"\r\n                  click-event=\"removeParticipants\"\r\n                  @removeParticipants=\"removeParticipants\"\r\n                />\r\n                <b-btn\r\n                  v-if=\"sprEvent.id\"\r\n                  v-b-modal.removeModal\r\n                  class=\"spr-button button-width spr-roundbox-1\"\r\n                >\r\n                  {{ $t(\"eventPage.remove\") }}\r\n                </b-btn>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <!-- BOTTOM BACK BAR -->\r\n      <div class=\"col-12\">\r\n        <backbar />\r\n      </div>\r\n\r\n      <!-- MODAL -->\r\n      <b-modal\r\n        :id=\"_uid + 'modal'\"\r\n        v-model=\"showModal\"\r\n        size=\"lg\"\r\n        centered\r\n        cancel-disabled\r\n        ok-disabled\r\n        @close=\"cancelModal\"\r\n      >\r\n        <div\r\n          v-if=\"joinStage === 1\"\r\n          class=\"text-center container-fluid modal-container\"\r\n        >\r\n          <!-- Anonyymin napit -->\r\n          <sprbutton\r\n            type=\"primary\"\r\n            description=\"Login before joining\"\r\n            :size=\"4\"\r\n            :title=\"$t('eventPage.loginAndJoin')\"\r\n            class=\"spr-redborder button-width d-block mx-auto my-2\"\r\n            click-event=\"buttonClick\"\r\n            :disabled=\"isRegistrationDeadlinePassed\"\r\n            @buttonClick=\"loginJoin\"\r\n          />\r\n          <sprbutton\r\n            type=\"primary\"\r\n            description=\"Anonymous Join\"\r\n            :size=\"4\"\r\n            :title=\"$t('eventPage.joinNow')\"\r\n            class=\"spr-redborder button-width d-block mx-auto my-2\"\r\n            click-event=\"buttonClick\"\r\n            :disabled=\"isRegistrationDeadlinePassed\"\r\n            @buttonClick=\"anonJoin\"\r\n          />\r\n        </div>\r\n        <div class=\"event-block secondary\">\r\n          <div\r\n            v-if=\"\r\n              joinStage === 2 || hasRole('Admin') || hasRole('NationalAdmin') || isCreator || isEventAdmin\r\n            \"\r\n          >\r\n            <eventjoin\r\n              v-if=\"!isCreator && !isParticipant && isLoggedIn\"\r\n              :roles=\"sprEvent.eventRoles\"\r\n              :more-info-question=\"translation.moreInfoQuestion\"\r\n              :profile-id=\"profileId\"\r\n              @join=\"onEventJoin\"\r\n            />\r\n            <eventjoinpublic\r\n              v-if=\"!isParticipant && !isLoggedIn\"\r\n              :roles=\"sprEvent.eventRoles\"\r\n              :more-info-question=\"translation.moreInfoQuestion\"\r\n              @join=\"onEventJoinPublic\"\r\n            />\r\n            <eventjoin\r\n              v-if=\"!isCreator && isParticipant && isLoggedIn\"\r\n              :roles=\"sprEvent.eventRoles\"\r\n              :more-info-question=\"translation.moreInfoQuestion\"\r\n              :profile-id=\"profileId\"\r\n              is-leaving\r\n              @join=\"onEventJoin\"\r\n            />\r\n            <eventjoinpublic\r\n              v-if=\"isParticipant && !isLoggedIn\"\r\n              :roles=\"sprEvent.eventRoles\"\r\n              :event-id=\"sprEvent.id\"\r\n              :more-info-question=\"translation.moreInfoQuestion\"\r\n              is-leaving\r\n              @join=\"onEventJoinPublic\"\r\n            />\r\n          </div>\r\n        </div>\r\n        <!-- header -->\r\n        <div slot=\"modal-header\" class=\"container-fluid\">\r\n          <div class=\"row\">\r\n            <div class=\"col-10 col-sm-7\">\r\n              <h3 v-if=\"joinStage === 1\">\r\n                {{ $t(\"eventPage.joinEvent\") }}\r\n              </h3>\r\n              <h3 v-if=\"joinStage === 2 && !isParticipant\">\r\n                {{ $t(\"eventPage.enterInfo\") }}\r\n              </h3>\r\n              <h3 v-if=\"joinStage === 2 && isParticipant\">\r\n                {{ $t(\"eventPage.joinSuccess\") }}\r\n              </h3>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <!-- footer -->\r\n        <div slot=\"modal-footer\" class=\"container-fluid\">\r\n          <div class=\"row\">\r\n            <div\r\n              class=\"col-12 text-right close-link brand-red\"\r\n              @click=\"cancelModal\"\r\n            >\r\n              <span class=\"brand-red\">{{ $t(\"eventPage.closeModal\") }}</span>\r\n              <font-awesome-icon\r\n                icon=\"times\"\r\n                class=\"brand-red\"\r\n                aria-hidden=\"true\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </b-modal>\r\n\r\n      <!-- REMOVAL MODAL -->\r\n      <b-modal\r\n        id=\"removeModal\"\r\n        ref=\"removeModal\"\r\n        size=\"lg\"\r\n        centered\r\n        cancel-disabled\r\n        ok-disabled\r\n      >\r\n        <div v-if=\"sprEvent.occurance > 1\" class=\"recurring\">\r\n          <p>{{ $t(\"eventPage.confirmRemoveRepeatText\") }}</p>\r\n          <sprradiogroupkey\r\n            ref=\"recurring\"\r\n            v-model=\"recurringDeleteMode\"\r\n            radio-group-color=\"basic\"\r\n            :options=\"recurringOptions\"\r\n          />\r\n        </div>\r\n        <div v-else>\r\n          <p>{{ $t(\"eventPage.confirmRemoveText\") }}</p>\r\n        </div>\r\n        <div class=\"col-md-12\">\r\n          <checkboxinput\r\n            :title=\"$t('eventPage.confirmDelete')\"\r\n            :value=\"confirmDelete\"\r\n            :aria-label=\"$t('eventPage.confirmDelete')\"\r\n            @input=\"onConfirmDelete\"\r\n          />\r\n        </div>\r\n        <sprbutton\r\n          type=\"primary\"\r\n          :size=\"1\"\r\n          :title=\"$t('eventPage.remove')\"\r\n          :disabled=\"!confirmDelete\"\r\n          class=\"spr-redborder\"\r\n          click-event=\"eventRemove\"\r\n          @eventRemove=\"confirmEventRemoval\"\r\n        />\r\n        <!-- header -->\r\n        <div slot=\"modal-header\" class=\"container-fluid\">\r\n          <div class=\"row\">\r\n            <div class=\"col-10 col-sm-7\">\r\n              <h3 v-if=\"sprEvent.repeat > 1\">\r\n                {{ $t(\"eventPage.confirmRemoveRepeatTitle\") }}\r\n              </h3>\r\n              <h3 v-else>\r\n                {{ $t(\"eventPage.confirmRemoveTitle\") }}\r\n              </h3>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <!-- footer -->\r\n        <div slot=\"modal-footer\" class=\"container-fluid\">\r\n          <div class=\"row\">\r\n            <div\r\n              class=\"col-12 text-right close-link brand-red\"\r\n              @click=\"hideRemoveModal\"\r\n            >\r\n              <span class=\"brand-red\">{{ $t(\"eventPage.closeModal\") }}</span>\r\n              <font-awesome-icon\r\n                icon=\"times\"\r\n                class=\"brand-red\"\r\n                aria-hidden=\"true\"\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </b-modal>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import _, { debounce } from 'lodash'\r\n\r\n  import backbar from '../BackBar.vue'\r\n  import forminput from '../SPRSimpleText.vue'\r\n  import singleselectdropdown from '../common/Dropdown/SingleSelectDropdown.vue'\r\n  import numberinput from '../SPRSimpleNumberInput.vue'\r\n  import dropdownnumber from '../SPRDropdownNumberKey.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import datepicker from '../SPRDatepicker.vue'\r\n  import timepicker from '../SPRTimepicker.vue'\r\n  import checkboxinput from '../SPRSimpleCheckbox.vue'\r\n  import textareainput from '../SPRSimpleTextArea.vue'\r\n  import sprradiogroupkey from '../SPRRadioGroupKey.vue'\r\n  import editeventroles from './EditEventRoles.vue'\r\n  import vieweventroles from './ViewEventRoles.vue'\r\n  import eventparticipantsgrid from './EventParticipantsGrid.vue'\r\n  import eventjoin from './EventJoin.vue'\r\n  import eventjoinpublic from './EventJoinPublic.vue'\r\n  import eventadmins from './EventAdmins.vue'\r\n  import eventorganizerdropdown from '../SPREventOrganizersDropdown.vue'\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import sharethis from './ShareThis.vue'\r\n  import moment from 'moment'\r\n  import { Map as VueMap, Marker as VueMarker } from 'vue2-google-maps'\r\n  import ExcelJS from 'exceljs'\r\n  import checkboxlist from '../SPRSimpleCheckboxBitmaskList.vue'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import googlemaps from '../../mixins/googlemaps.js'\r\n  import eventhelper from '../../mixins/event.js'\r\n  import locationhelper from '../../mixins/locationutils.js'\r\n\r\n  import { Validator } from 'vee-validate'\r\n  import dateisafter from '../../mixins/validator-dateisafter.js'\r\n  import dateisbefore from '../../mixins/validator-dateisbefore'\r\n  import hasEventOrganizer from '../../mixins/validator-hasEventOrganizer.js'\r\n  import pillbox from '../common/Pill/PillBox.vue'\r\n  import pill from '../SPRPill.vue'\r\n  import SprCollapsible from '../common/Collapsible/SprEventCollapsible.vue'\r\n  import { OmaSettingsDto } from '@/types/index'\r\n\r\n  Validator.extend('dateIsAfter', dateisafter)\r\n  Validator.extend('dateIsBefore', dateisbefore)\r\n  Validator.extend('hasEventOrganizer', hasEventOrganizer)\r\n\r\n  export default {\r\n    name: 'Event',\r\n    pageName: 'eventpage',\r\n    components: {\r\n      SprCollapsible,\r\n      pill,\r\n      singleselectdropdown,\r\n      sprvalidation,\r\n      backbar,\r\n      forminput,\r\n      checkboxlist,\r\n      checkboxinput,\r\n      textareainput,\r\n      sprbutton,\r\n      datepicker,\r\n      timepicker,\r\n      dropdownnumber,\r\n      numberinput,\r\n      sprradiogroupkey,\r\n      VueMap,\r\n      VueMarker,\r\n      editeventroles,\r\n      vieweventroles,\r\n      eventparticipantsgrid,\r\n      eventjoin,\r\n      eventjoinpublic,\r\n      eventadmins,\r\n      eventorganizerdropdown,\r\n      loading,\r\n      sharethis,\r\n      pillbox\r\n    },\r\n    mixins: [enumhelper,\r\n             googlemaps,\r\n             eventhelper,\r\n             locationhelper],\r\n    data () {\r\n      return {\r\n        minStartDate: null,\r\n        startDateLimit: [],\r\n        imageLib: [],\r\n        zipCodes: [],\r\n        confirmDelete: false,\r\n        postError: null,\r\n        selectImage: null,\r\n        libImage: null,\r\n        suppressErrors: true,\r\n        showModal: false,\r\n        removeEvent: false,\r\n        joinStage: 0,\r\n        availableLanguages: [54, 200, 46],\r\n        langToAdd: null,\r\n        currentTranslation: {},\r\n        isRecurring: false,\r\n        recurringDeleteMode: 0, // 0 - Only this event, 1 = All recurring evets. See recurringOptions.\r\n        recurringUntil: null,\r\n        recurrenceFrequency: 2,\r\n        isVolunteerTask: false,\r\n        languages: [],\r\n        selectedlanguages: [],\r\n        sprEvent: {\r\n          id: -1,\r\n          name: '',\r\n          eventRegistration: 0, // Event registration is Oma, not external or none\r\n          moreInfoQuestion: '',\r\n          description: '',\r\n          date: '',\r\n          location: '',\r\n          price: '',\r\n          eventRoles: [],\r\n          startTime: {\r\n            day: 1,\r\n            month: 1,\r\n            year: 0,\r\n            hour: 0,\r\n            minute: 0\r\n          },\r\n          endTime: {\r\n            day: 1,\r\n            month: 1,\r\n            year: 0,\r\n            hour: 0,\r\n            minute: 0\r\n          },\r\n          isAllDay: false,\r\n          occurance: 1,\r\n          repeat: 2,\r\n          registrationDeadline: null,\r\n          streetAddress: '',\r\n          zipCode: '',\r\n          city: '',\r\n          contact: {\r\n            firstName: '',\r\n            lastName: '',\r\n            email: '',\r\n            phone: ''\r\n          },\r\n          translations: [],\r\n          image: '',\r\n          imageThumb: '',\r\n          oldImage: '', // Todo : These are for edit mode to change the existing image\r\n          oldImageThumb: '',\r\n          placeName: '',\r\n          isOnline: false,\r\n          isPublic: true,\r\n          showParticipants: false,\r\n          duration: '', // moment.duration(60, 'minutes'),\r\n          category: 0,\r\n          type: 0,\r\n          eventAdmins: [],\r\n          eventOrganizer: {\r\n            eventOrganizerType: null,\r\n            organizerId: null\r\n          },\r\n          languages: 1\r\n        },\r\n\r\n        selectedZipLocation: {},\r\n        datepickerOptions: {\r\n          inputStyle: {\r\n            display: 'inline-block',\r\n            border: '2px solid #ccc',\r\n            'box-shadow': 'none',\r\n            'border-radius': '24px',\r\n            color: '#5F5F5F'\r\n          }\r\n        },\r\n        eventEditOpen: false,\r\n        timeEditorOpen: false,\r\n        locationEditorOpen: false,\r\n        feeEditorOpen: false,\r\n        contactEditorOpen: false,\r\n        contactNotificationsOpen: false,\r\n        descriptionEditorOpen: false,\r\n        isEditAdminsOpen: false,\r\n        isAdd: false,\r\n        isEdit: false,\r\n        mapCenter: {\r\n          // on helsinki to start\r\n          lat: 60.17,\r\n          lng: 24.94\r\n        },\r\n        mapZoom: 7,\r\n        mapIsVisible: false,\r\n        markers: [],\r\n        geocodeFailed: true,\r\n        isUpdating: false,\r\n        isCopying: false,\r\n        showNoRolesWarning: false,\r\n        participantDownloadFile: null,\r\n        addedAdmins: [],\r\n        componentKey: 0,\r\n        contactNotifications: {\r\n          contacts: [],\r\n          notificationFrequency: 0\r\n        },\r\n        contactNotificationInputMail: '',\r\n        participantsToRemove: [],\r\n        maxDurationSetting: 0\r\n      }\r\n    },\r\n    metaInfo () {\r\n      return {\r\n        meta: [{ property: 'og:title', content: this.translation.name }, { property: 'og:url', content: window.location.href }, { property: 'og:image', content: this.sprEvent.image }]\r\n      }\r\n    },\r\n    computed: {\r\n      profileId () {\r\n        if (this.$store.state.profile.profileId) { return this.$store.state.profile.profileId } else { return null }\r\n      },\r\n      frequencyDefinition () {\r\n        if (this.hasContactNotifications) {\r\n          return this.getNotificationFrequencyTranslation(this.contactNotifications.notificationFrequency)\r\n        }\r\n\r\n        return this.$t('userAdmin.sectionReportNoDefinition')\r\n      },\r\n\r\n      hasContactNotifications () {\r\n        return this.contactNotifications.contacts &&\r\n          this.contactNotifications.contacts.length > 0\r\n      },\r\n      contactsReadOnly () {\r\n        if (this.contactNotifications?.contacts && this.contactNotifications?.contacts.length > 0) {\r\n          return this.contactNotifications.contacts.map(c => c.email).join('; ')\r\n        }\r\n\r\n        return ''\r\n      },\r\n      recurringOptions: function () {\r\n        var options = []\r\n        var option1 = this.$t('eventPage.removeThisEvent')\r\n        var option2 = this.$t('eventPage.removeAllEvents')\r\n        options.push({ value: 0, text: option1 })\r\n        options.push({ value: 1, text: option2 })\r\n\r\n        return options\r\n      },\r\n      recurringDeleteModeToBoolean: function () {\r\n        if (this.recurringDeleteMode === 1) {\r\n          return true\r\n        }\r\n\r\n        return false\r\n      },\r\n      eventOrganizerData () {\r\n        if (!this.sprEvent.eventOrganizer) {\r\n          return null\r\n        }\r\n\r\n        return {\r\n          eventOrganizerType:\r\n            this.sprEvent.eventOrganizer.eventOrganizerType >= 0\r\n              ? Number(this.sprEvent.eventOrganizer.eventOrganizerType)\r\n              : null,\r\n          organizerId: this.sprEvent.eventOrganizer.organizerId\r\n            ? Number(this.sprEvent.eventOrganizer.organizerId)\r\n            : null,\r\n          id: this.sprEvent.eventOrganizer.id\r\n            ? Number(this.sprEvent.eventOrganizer.id)\r\n            : null\r\n        }\r\n      },\r\n\r\n      modalButton: function () {\r\n        return this.isParticipant\r\n          ? this.$t('eventPage.leave')\r\n          : this.$t('eventPage.joinEvent')\r\n      },\r\n      validationErrors: function () {\r\n        if (this.suppressErrors) {\r\n          return []\r\n        }\r\n        var self = this\r\n        var rv = _.map(this.errors.items, function (x) {\r\n          if (x.field === 'eventPage.endDate' && x.rule === 'dateisbefore') {\r\n            var error = self.$t('eventPage.durationExceeded') + ' ' + self.displayMaxEndDate\r\n            return [error, null, '']\r\n          } else {\r\n            return [x.field, x.rule, '']\r\n          }\r\n        })\r\n\r\n        if (this.postError) {\r\n          rv.push(['', this.postError, ''])\r\n        }\r\n\r\n        if (!this.sprEvent.eventRoles || this.sprEvent.eventRoles.length === 0) {\r\n          rv.push(['eventPage.rolesRequired', null, ''])\r\n        }\r\n\r\n        return rv\r\n      },\r\n      showMessageFull: function () {\r\n        return (this.sprEvent.isFull || this.sprEvent.isClosed) &&\r\n          !this.isParticipant && !this.isCreator && !this.isAdd\r\n      },\r\n      showJoinAction: function () {\r\n        if (\r\n          ((this.sprEvent.isFull || this.sprEvent.isClosed) &&\r\n            !this.isParticipant) || this.sprEvent.eventRegistration === 2 //event registration is None\r\n        ) {\r\n          return false\r\n        }\r\n        return !this.isCreator && !this.isAdd\r\n      },\r\n      possibleTranslations: function () {\r\n        var self = this\r\n        var translations = _.map(this.$store.state.allLanguages, function (x) {\r\n          if (x) {\r\n            x.text = self.normalizeTranslation(x.isoCode)\r\n            return x\r\n          }\r\n        })\r\n\r\n        // null it to disable language limitations...\r\n        if (!self.availableLanguages) {\r\n          return translations\r\n        }\r\n\r\n        return _.filter(translations, function (y) {\r\n          return (\r\n            self.availableLanguages.indexOf(y.id) >= 0 &&\r\n            !_.find(self.availableTranslations, function (z) {\r\n              return z.languageId === y.id\r\n            })\r\n          )\r\n        })\r\n      },\r\n      availableTranslations: function () {\r\n        var self = this\r\n        return _.map(this.sprEvent.translations, function (x) {\r\n          const lng = _.find(self.$store.state.allLanguages, function (y) {\r\n            return y.id === x.languageId\r\n          })\r\n\r\n          return {\r\n            languageId: x.languageId,\r\n            text: self.normalizeTranslation(lng.isoCode)\r\n          }\r\n        })\r\n      },\r\n      translation: function () {\r\n        if (this.eventEditOpen) {\r\n          return this.currentTranslation\r\n        }\r\n        // eventTranslation is defined in event.js\r\n        // and takes the translations object from sprEvent\r\n        // to find the right translation.\r\n        return this.eventTranslation(this.sprEvent)\r\n      },\r\n      isCreator () {\r\n        return (\r\n          this.$store.state.profile &&\r\n          this.$store.state.profile.profileId === this.sprEvent.creatorId\r\n        )\r\n      },\r\n      isEventAdmin () {\r\n        var self = this\r\n        return (\r\n          this.isLoggedIn &&\r\n          _.find(this.sprEvent.eventAdmins, function (admin) {\r\n            return (\r\n              admin.email.toLowerCase() ===\r\n              self.jwtToken[\r\n                'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'\r\n              ].toLowerCase()\r\n            )\r\n          }) !== undefined\r\n        )\r\n      },\r\n      isParticipant () {\r\n        return this.currentRole != null || this.publicRole != null\r\n      },\r\n      isLoggedIn () {\r\n        return this.$store.state.profile != null\r\n      },\r\n      // find a participant in the event that is equal to the current user,\r\n      // and you know that this user plays a role in the event.\r\n      currentRole () {\r\n        const self = this\r\n        let participantFound\r\n        if (self.$store.state.profile) {\r\n          for (var i = 0; i < this.sprEvent.eventRoles.length; i++) {\r\n            participantFound = _.find(\r\n              self.sprEvent.eventRoles[i].participants,\r\n              function (participant) {\r\n                return (\r\n                  participant.profileId === self.$store.state.profile.profileId\r\n                )\r\n              }\r\n            )\r\n\r\n            if (participantFound) {\r\n              return this.sprEvent.eventRoles[i]\r\n            }\r\n          }\r\n        }\r\n\r\n        return null\r\n      },\r\n      publicRole () {\r\n        var self = this\r\n        // not logged in so can only check if they have registered this session\r\n        const roles = _.find(this.$store.state.publicEvents, function (role) {\r\n          return role.eventId === self.sprEvent.id\r\n        })\r\n        return roles\r\n      },\r\n      eventHasStarted () {\r\n        var st = this.sprEvent.startTime\r\n        var now = moment()\r\n        var start = moment([st.year,\r\n                            st.month - 1,\r\n                            st.day,\r\n                            st.hour,\r\n                            st.minute])\r\n\r\n        return now > start\r\n      },\r\n      // Hero section computed properties\r\n      heroImageStyle: function () {\r\n        if (this.sprEvent.image) {\r\n          return `display:block;background-image: url(${this.sprEvent.image})`\r\n        }\r\n        return ''\r\n      },\r\n      thumbImageStyle: function () {\r\n        if (this.sprEvent.imageThumb) {\r\n          return `display:block;background-image: url(${this.sprEvent.imageThumb})`\r\n        }\r\n        return ''\r\n      },\r\n      computedCategory: function () {\r\n        return this.getProfileInvolvedEventCategoriesMaskTranslation(this.sprEvent.category)\r\n      },\r\n      eventCategories: function () {\r\n        var self = this\r\n        return _.map(this.$store.state.eventCategories, function (val, key) {\r\n          return { value: val.id, text: self.$t('eventCategory.' + val.text) }\r\n        })\r\n      },\r\n      involvedEventCategoriesOptions: function () { //Array<SprCheckboxBitmaskValue>\r\n        var self = this\r\n        var validItems = _.filter(this.$store.state.involvedEventCategories, (x) => x.id !== 0)\r\n\r\n        return _.map(validItems, function (val, key) {\r\n          return { value: val.id, text: self.$t('involvedEventCategories.' + val.text).toString() }\r\n        })\r\n      },\r\n      computedType: function () {\r\n        return this.isVolunteerTask\r\n          ? this.getEventTypesTranslation(this.volunteerTaskTypeId)\r\n          : this.getEventTypesMaskTranslation(this.sprEvent.type)\r\n      },\r\n      eventTypes: function () {\r\n        var self = this\r\n        return _.map(\r\n          _.filter(this.$store.state.eventTypes, function (i) {\r\n            return i.text !== 'volunteerTask'\r\n          }),\r\n          function (val, key) {\r\n            return {\r\n              value: val.id,\r\n              text: self.$t('eventTypes.' + val.text)\r\n            }\r\n          }\r\n        )\r\n      },\r\n      volunteerTaskTypeId: function () {\r\n        return _.find(this.$store.state.eventTypes, { text: 'volunteerTask' }).id\r\n      },\r\n      // Date and Time computed properties\r\n      occurrenceText: function () {\r\n        return this.$t('eventPage.occurrenceText')\r\n          .replace(\r\n            '{occurrence}',\r\n            this.getEventRecurrenceTranslation(\r\n              this.sprEvent.occurance\r\n            ).toLowerCase()\r\n          )\r\n          .replace('{repeat}', this.sprEvent.repeat)\r\n          .replace(\r\n            '{until}',\r\n            moment(this.sprEvent.lastOccurrence, 'YYYY-MM-DDTHH:mm:ss').format(\r\n              'DD.MM.YYYY'\r\n            )\r\n          )\r\n      },\r\n      recurrenceFrequencyOptions: function () {\r\n        var self = this\r\n        return _.map(\r\n          this.$store.state.eventRecurrenceFrequencies,\r\n          function (val, key) {\r\n            return { value: val.id, text: self.$t('eventOccurance.' + val.text) }\r\n          }\r\n        )\r\n      },\r\n      /**\r\n       * Returns the external URL of the event if defined for the user's selected language.\r\n       * Else returns the first found external URL in any language.\r\n       * If no external URLs are defined, returns _undefined_.\r\n       */\r\n      externalUrl: function () {\r\n        var self = this\r\n        return (\r\n          this.translation.externalUrl ||\r\n          _.get(_.find(self.sprEvent.translations, 'externalUrl'), 'externalUrl')\r\n        )\r\n      },\r\n      eventStartTime: {\r\n        get () {\r\n          return {\r\n            hour: this.sprEvent.startTime.hour,\r\n            minute: this.sprEvent.startTime.minute\r\n          }\r\n        },\r\n        set (val) {\r\n          this.sprEvent.startTime.hour = val.hour\r\n          this.sprEvent.startTime.minute = val.minute\r\n        }\r\n      },\r\n      eventEndTime: {\r\n        get () {\r\n          return {\r\n            hour: this.sprEvent.endTime.hour,\r\n            minute: this.sprEvent.endTime.minute\r\n          }\r\n        },\r\n        set (val) {\r\n          this.sprEvent.endTime.hour = val.hour\r\n          this.sprEvent.endTime.minute = val.minute\r\n        }\r\n      },\r\n      validatorDate () {\r\n        return moment([this.sprEvent.startTime.year, this.sprEvent.startTime.month - 1, this.sprEvent.startTime.day]).format('DD.MM.YYYY')\r\n      },\r\n      displayStartDate: {\r\n        get: function () {\r\n          return moment([this.sprEvent.startTime.year, this.sprEvent.startTime.month - 1, this.sprEvent.startTime.day]).format('DD.MM.YYYY')\r\n        },\r\n        set: function (newValue) {\r\n          var d = moment(newValue, 'DD.MM.YYYY')\r\n          this.sprEvent.startTime.year = d.year()\r\n          this.sprEvent.startTime.month = d.month() + 1\r\n          this.sprEvent.startTime.day = d.date()\r\n        }\r\n      },\r\n      formattedStartTime: function () {\r\n        return this.formatTime(\r\n          this.sprEvent.startTime.hour,\r\n          this.sprEvent.startTime.minute\r\n        )\r\n      },\r\n      maxEndDate: {\r\n        get () {\r\n          const maxDuration = this.maxDurationSetting ? parseInt(this.maxDurationSetting, 10) : 14 // Default to 14 if not found or invalid\r\n          return moment(this.displayStartDate, 'DD.MM.YYYY').add(maxDuration, 'days').format('YYYY-MM-DD')\r\n        }\r\n      },\r\n      endDateLimit: {\r\n        get () {\r\n          return [{ type: 'fromto', from: moment(this.displayStartDate, 'DD.MM.YYYY').subtract(1, 'days').format('YYYY-MM-DD'), to: this.maxEndDate }]\r\n        }\r\n      },\r\n\r\n      displayEndDate: {\r\n        get: function () {\r\n          return moment([this.sprEvent.endTime.year, this.sprEvent.endTime.month - 1, this.sprEvent.endTime.day]).format('DD.MM.YYYY')\r\n        },\r\n        set: function (newValue) {\r\n          var d = moment(newValue, 'DD.MM.YYYY')\r\n          this.sprEvent.endTime.year = d.year()\r\n          this.sprEvent.endTime.month = d.month() + 1\r\n          this.sprEvent.endTime.day = d.date()\r\n        }\r\n      },\r\n      displayMaxEndDate: {\r\n        get: function () {\r\n          return moment(this.maxEndDate).format('DD.MM.YYYY')\r\n        }\r\n      },\r\n      formattedEndTime: function () {\r\n        return this.formatTime(\r\n          this.sprEvent.endTime.hour,\r\n          this.sprEvent.endTime.minute\r\n        )\r\n      },\r\n      formattedStartDate: function () {\r\n        return this.startTimeDate.format('DD.MM.YYYY')\r\n      },\r\n      formattedEndDate: function () {\r\n        return this.endTimeDate.format('DD.MM.YYYY')\r\n      },\r\n      startTimeDate () {\r\n        return moment([this.sprEvent.startTime.year,\r\n                       this.sprEvent.startTime.month - 1,\r\n                       this.sprEvent.startTime.day,\r\n                       this.sprEvent.startTime.hour,\r\n                       this.sprEvent.startTime.minute])\r\n      },\r\n      endTimeDate () {\r\n        return moment([this.sprEvent.endTime.year,\r\n                       this.sprEvent.endTime.month - 1,\r\n                       this.sprEvent.endTime.day,\r\n                       this.sprEvent.endTime.hour,\r\n                       this.sprEvent.endTime.minute])\r\n      },\r\n      registrationDeadline: {\r\n        get () {\r\n          return this.sprEvent.registrationDeadline\r\n            ? moment.utc(this.sprEvent.registrationDeadline).format('DD.MM.YYYY')\r\n            : null\r\n        },\r\n        set (val) {\r\n          this.sprEvent.registrationDeadline = val\r\n            ? moment(val, 'DD.MM.YYYY').endOf('day').toDate()\r\n            : null\r\n        }\r\n      },\r\n      displayRegistrationDeadline () {\r\n        if (this.sprEvent.registrationDeadline) {\r\n          return moment\r\n            .utc(this.sprEvent.registrationDeadline)\r\n            .local()\r\n            .format('DD.MM.YYYY')\r\n        }\r\n        return ''\r\n      },\r\n      isRegistrationDeadlinePassed () {\r\n        const result =\r\n          this.sprEvent.registrationDeadline &&\r\n          moment.utc(this.sprEvent.registrationDeadline) < moment()\r\n\r\n        return result\r\n      },\r\n      registrationDeadlineLimit () {\r\n        return [{\r\n          type: 'fromto',\r\n          to: moment(this.startTimeDate).add(1, 'day').format('YYYY-MM-DD')\r\n        }]\r\n      },\r\n      recurringUntilLimit () {\r\n        const available = []\r\n        for (let i = 2; i <= 52; i++) {\r\n          const occurence = this.calculateRecurringUntil(\r\n            this.startTimeDate,\r\n            this.recurrenceFrequency,\r\n            i\r\n          )\r\n          available.push(occurence.format('YYYY-MM-DD'))\r\n        }\r\n        return [{\r\n          type: 'days',\r\n          available: available\r\n        }]\r\n      },\r\n      // Location computed properties\r\n      hasLocation: function () {\r\n        return (\r\n          this.sprEvent.streetAddress !== '' &&\r\n          this.sprEvent.city !== '' &&\r\n          this.sprEvent.zipCode !== ''\r\n        )\r\n      },\r\n      formattedLocation: function () {\r\n        const locationText = [this.translation.placeName, this.translation.streetAddress]\r\n          .filter(Boolean)\r\n          .join(', ')\r\n        return this.formatAddress(\r\n          locationText,\r\n          this.sprEvent.zipCode,\r\n          this.translation.city\r\n        )\r\n      },\r\n      formattedGeocodeLocation: function () {\r\n        return `${this.translation.streetAddress},${this.translation.city},${this.sprEvent.zipCode}`\r\n      },\r\n      showEditRoles: function () {\r\n        return (\r\n          (this.isAdd || (this.isEdit && this.eventEditOpen))\r\n        )\r\n      },\r\n      contactNotificationFrequencies () {\r\n        const self = this\r\n        const result = _.map(\r\n          this.$store.state.reportFrequency,\r\n          function (val, key) {\r\n            return {\r\n              value: val.id,\r\n              text: self.$t('userAdmin.sectionReportFrequency' + val.text)\r\n            }\r\n          }\r\n        )\r\n        return result\r\n      },\r\n      eventRegistrationOptions () { // options for eventregistration are external (1), Oma (0) or None (2)\r\n        const self = this\r\n        const result = _.map(\r\n          this.$store.state.eventRegistration,\r\n          function (val, key) {\r\n            return {\r\n              value: val.id,\r\n              text: self.$t('userAdmin.eventRegistration' + val.text)\r\n            }\r\n          }\r\n        )\r\n        return result\r\n      },\r\n      showViewRoles: function () {\r\n        return !this.showEditRoles && !this.externalUrl && this.sprEvent.showParticipants\r\n      }\r\n    },\r\n    watch: {\r\n      startTimeDate: function (newVal, oldVal) {\r\n        if (oldVal.year() !== 0 && !this.isUpdating && !this.isCopying) {\r\n          // ignore possible initial value\r\n          // calculate duration between old and new val\r\n          const diff = moment.duration(newVal.diff(oldVal))\r\n          // also calculate if/how many days were adjusted\r\n          const diffDays = moment.duration(\r\n            moment(newVal).startOf('day').diff(moment(oldVal).startOf('day'))\r\n          )\r\n          // adjust end time by calculated duration\r\n          const endTime = moment(this.endTimeDate).add(diff)\r\n          this.sprEvent.endTime.year = endTime.year()\r\n          this.sprEvent.endTime.month = endTime.month() + 1\r\n          this.sprEvent.endTime.day = endTime.date()\r\n          this.sprEvent.endTime.hour = endTime.hour()\r\n          this.sprEvent.endTime.minute = endTime.minute()\r\n          // adjust registration deadline if set and starting day was changed\r\n          if (this.registrationDeadline) {\r\n            this.registrationDeadline = moment(\r\n              this.registrationDeadline,\r\n              'DD.MM.YYYY'\r\n            ).add(diffDays)\r\n          }\r\n          // recalculate recurrence info\r\n          if (this.isAdd) this.onRecurringEventChange(this.isRecurring)\r\n        }\r\n      },\r\n      selectImage: function (newVal, oldVal) {\r\n        if (!newVal) {\r\n          return []\r\n        }\r\n\r\n        // beware that PopulateImageLib can only receive strings that refer to\r\n        // a folder in the storage account. (For now only \"Background\" or \"Thumbnails\")\r\n        // background (selectImage === 1)\r\n        if (newVal === 1) {\r\n          this.populateImageLib('Background')\r\n        } else { //thumbnails\r\n          this.populateImageLib('Thumbnails')\r\n        }\r\n      },\r\n      sprEvent () {\r\n        this.setActionLanguages()\r\n      }\r\n    },\r\n    created () {\r\n      const omaSettings = this.$store.state.omaSettings\r\n      this.maxDurationSetting = omaSettings.find((s) => s.name === 'MaxEventDurationInDays').value\r\n\r\n\r\n      this.zipCodes = this.$store.state.zipCodes.map((z, i) => {\r\n        return { value: i, text: z.zipCode }\r\n      })\r\n      this.setActionLanguages()\r\n      this.$store.subscribe((mutation, state) => {\r\n        if (mutation.type === 'setLanguage') {\r\n          this.componentKey += 1\r\n        }\r\n      })\r\n    },\r\n    mounted () {\r\n      if (this.$route.params.id) {\r\n        this.sprEvent.id = Number(this.$route.params.id)\r\n        const self = this\r\n        this.loadEvent(this.sprEvent.id, function (response) {\r\n          self.selectedZipLocation = self.zipCodes.find(\r\n            (z) => z.text === self.sprEvent.zipCode\r\n          )\r\n          if (\r\n            self.$route.params.mode === 'edit' ||\r\n            self.hasRole('Admin') ||\r\n            self.hasRole('NationalAdmin') ||\r\n            self.isCreator ||\r\n            self.isEventAdmin\r\n          ) {\r\n            self.isEdit = true\r\n          }\r\n          if (self.$route.params.mode === 'join') {\r\n            if (!self.isCreator) {\r\n              self.eventStartJoinButton()\r\n            }\r\n          }\r\n        })\r\n      } else {\r\n        this.addNewEvent()\r\n        // Set default section as creators section\r\n        if (this.jwtToken && this.jwtToken.SectionMembership) {\r\n          this.sprEvent.sectionId = Number(this.jwtToken.SectionMembership)\r\n          this.sprEvent.eventOrganizer.eventOrganizerType = 200 // Section\r\n          this.sprEvent.eventOrganizer.organizerId = this.sprEvent.sectionId\r\n        }\r\n\r\n        this.newTranslation(54)\r\n        this.changeEditorLanguage(54, true)\r\n\r\n        this.sprEvent.eventRoles = [{\r\n          eventId: 0,\r\n          maximumParticipants: 0,\r\n          name: 'Osallistuja'\r\n        }]\r\n        this.sprEvent.eventAdmins = [{\r\n          email:\r\n            this.jwtToken[\r\n              'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'\r\n            ],\r\n          isCreator: true\r\n        }]\r\n      }\r\n    },\r\n    beforeRouteLeave (to, from, next) {\r\n      if (this.selectImage) {\r\n        this.selectImage = null\r\n        // If the image list is visible, prevent navigation\r\n        // You can also handle other conditions here if needed\r\n        next(false) // Prevent navigation\r\n      } else {\r\n        // Allow navigation if the image list is not visible\r\n        next()\r\n      }\r\n    },\r\n    methods: {\r\n      populateImageLib (folder) {\r\n        if (!folder || folder.length === 0 || !['Backgound', 'Thumbnails'].includes(folder)) {\r\n          this.imageLib = []\r\n        }\r\n        const url =\r\n          this.$store.state.apiBases.contentservice +\r\n          this.$store.state.apiEndpoints.getimages[0] +\r\n          `/eventimages?folder=${folder}`\r\n\r\n        this.$http.get(url).then(\r\n          (result) => {\r\n            if (result.ok === true) {\r\n              this.imageLib = result.body.imageNames.filter((i) => i.endsWith('.jpg') || i.endsWith('.png')).map((e) => {\r\n                return {\r\n                  url: `https://sprvatistorage.blob.core.windows.net/eventimages/` + e,\r\n                  prev: `https://sprvatistorage.blob.core.windows.net/eventimages/` + e\r\n                }\r\n              })\r\n            }\r\n            if (result.ok === true) {\r\n              this.pending = false\r\n            }\r\n          },\r\n          (fail) => {\r\n            // @ts-ignore cannot find mixins\r\n            this.showAlertError(this.$t('common.fetchFailed'))\r\n          }\r\n        )\r\n      },\r\n      handleStartDateInput (val) {\r\n        this.displayStartDate = val\r\n      },\r\n      addNewEvent () {\r\n        // check permissions.\r\n        if (\r\n          !this.hasRole('Admin') &&\r\n          !this.hasRole('Employee') &&\r\n          !this.hasRole('System') &&\r\n          !this.hasRole('NationalAdmin') &&\r\n          // NationalEmployee has the right to access Event without given Id. This is the logical conclusion,\r\n          // because it is neither Update, nor Deletion of an Event, so should be considered equal to NationalAdmin\r\n          // in my interpretation:\r\n          !this.hasRole('NationalEmployee') &&\r\n          !this.jwtToken.ActionGroupMembership\r\n        ) {\r\n          this.$router.push('/front')\r\n        }\r\n\r\n        this.setAddMode()\r\n\r\n        //if we are copying an event, we don't want to override the creatorId\r\n        //otherwise we'll end up with duplicate entries in EventContacts and will get an error\r\n        if (!this.isCopying) {\r\n          // the event is being created by this person (profile) so the profile Id can already be assigned to the event\r\n          this.sprEvent.creatorId = this.$store.state.profile.profileId\r\n        }\r\n        this.isAdd = true\r\n\r\n        const startTime = this.nextHour()\r\n        const endTime = this.nextHour().add(1, 'hour')\r\n\r\n        this.sprEvent.startTime.year = startTime.year()\r\n        // month +1, because moment months start counting at 0\r\n        this.sprEvent.startTime.month = startTime.month() + 1\r\n        this.sprEvent.startTime.day = startTime.date()\r\n        this.sprEvent.startTime.hour = startTime.hour()\r\n        this.sprEvent.startTime.minute = startTime.minute()\r\n\r\n        this.sprEvent.endTime.year = endTime.year()\r\n        // month +1, because moment months start counting at 0\r\n        this.sprEvent.endTime.month = endTime.month() + 1\r\n        this.sprEvent.endTime.day = endTime.date()\r\n        this.sprEvent.endTime.hour = endTime.hour()\r\n        this.sprEvent.endTime.minute = endTime.minute()\r\n      },\r\n      updateContacts (contactNotifications) {\r\n        const url =\r\n          this.$store.state.apiBases.eventservice +\r\n          this.$store.state.apiEndpoints.setContactNotifications[0].replace(\r\n            '{0}',\r\n            this.sprEvent.id\r\n          )\r\n\r\n        this.$http.post(url, contactNotifications).then(\r\n          (s) => {\r\n            // @ts-ignore cannot find mixins\r\n            this.showAlertSuccess(this.$t('userAdmin.saveSuccess'))\r\n            this.getContacts()\r\n          },\r\n          (fail) => {\r\n            // @ts-ignore cannot find mixins\r\n            this.showAlertError(this.$t('common.fetchFailed'))\r\n          }\r\n        )\r\n      },\r\n      getContacts () {\r\n        if (!(this.hasRole('Admin') || this.hasRole('NationalAdmin') || this.isCreator || this.isEventAdmin)) return\r\n\r\n        var url =\r\n          this.$store.state.apiBases.userservice +\r\n          this.$store.state.apiEndpoints.getContactNotifications[0].replace(\r\n            '{0}',\r\n            this.sprEvent.id\r\n          )\r\n        this.$http.get(url).then(\r\n          (s) => {\r\n            this.contactNotifications.notificationFrequency = s.body.notificationFrequency\r\n            this.contactNotifications.contacts = s.body.contacts.map((c) => { return { email: c.email } })\r\n          },\r\n          (f) => {\r\n            if (f.status !== 401) { this.showAlertError(this.$t('common.fetchFailed')) }\r\n          }\r\n        )\r\n      },\r\n\r\n      getNotificationFrequencyTranslation (frequency) {\r\n        const item = _.filter(this.$store.state.reportFrequency, (x) => {\r\n          return x.id === frequency\r\n        })\r\n\r\n        if (item && item.length > 0) {\r\n          return this.$t('userAdmin.sectionReportFrequency' + item[0].text)\r\n        } else {\r\n          return this.$t('userAdmin.sectionReportFrequencyNone')\r\n        }\r\n      },\r\n      onRemoveContact (contact) {\r\n        this.contactNotifications.contacts = this.contactNotifications.contacts.filter(\r\n          (x) => x.email.toLowerCase() !== contact.email.toLowerCase()\r\n        )\r\n      },\r\n      isValid () {\r\n        if (this.sectionContacts.length > 0) {\r\n          if (this.sprEvent.notificationFrequency === 0) {\r\n            return false\r\n          }\r\n        }\r\n\r\n        return true\r\n      },\r\n      onAddContactNotification () {\r\n        this.$validator\r\n          .validate('contactNotifications.contactemail')\r\n          .then((resp) => {\r\n            if (resp) {\r\n              const email = this.contactNotificationInputMail.toLowerCase()\r\n              if (\r\n                !this.contactNotifications.contacts.find(\r\n                  (contact) => contact.email.toLowerCase() === email\r\n                )\r\n              ) {\r\n                this.contactNotifications.contacts.push({ email: email })\r\n              }\r\n            }\r\n            this.contactNotificationInputMail = null\r\n          })\r\n      },\r\n      setMessageFrequency (val) {\r\n        this.recurrenceFrequency = val\r\n      },\r\n      onIsZipCodeChanged (val) {\r\n        const value = val || { text: '' }\r\n        this.selectedZipLocation = this.zipCodes.find(\r\n          (z) => z.text === value.text\r\n        )\r\n        const newZipCode = this.$store.state.zipCodes.find(\r\n          (z) => z.zipCode === value.text\r\n        )\r\n        this.currentTranslation.city = newZipCode ? newZipCode.cityFi : ''\r\n        this.sprEvent.zipCode = value.text\r\n      },\r\n      onLanguageChanged (e) {\r\n        this.sprEvent.languages = e.reduce((b, v) => b + v.id, 0)\r\n        this.selectedlanguages = e\r\n      },\r\n      setActionLanguages () {\r\n        const lang = this.$store.state.customerLanguages\r\n        this.languages = this.$store.state.groupLanguages\r\n          .filter((l) => l.id !== 0)\r\n          .map((v) => {\r\n            return {\r\n              id: v.id,\r\n              text:\r\n                'actionLanguage.' +\r\n                lang.find(\r\n                  (l) => l.displayName.toUpperCase() === v.text.toUpperCase()\r\n                ).isoCode\r\n            }\r\n          })\r\n        this.selectedlanguages = this.languages.filter((v) =>\r\n          v.id === null || v.id === 0\r\n            ? false\r\n            : (v.id & this.sprEvent.languages) === v.id\r\n        )\r\n      },\r\n      focusOnErrors () {\r\n        window.scrollTo({ top: 0, behavior: 'smooth' })\r\n      },\r\n      setLibraryImage: function () {\r\n        if (this.selectImage === 1) {\r\n          this.sprEvent.image = this.libImage\r\n        } else {\r\n          this.sprEvent.imageThumb = this.libImage\r\n        }\r\n\r\n        this.selectImage = null\r\n        window.scrollTo(0, 0)\r\n      },\r\n      cancelModal: function () {\r\n        this.joinStage = 0\r\n        this.showModal = false\r\n        this.removeEvent = false\r\n      },\r\n      hideRemoveModal () {\r\n        this.$refs.removeModal.hide()\r\n      },\r\n      loginJoin: function () {\r\n        this.$router.push('/login?from=' + this.$route.path + '/join')\r\n      },\r\n      anonJoin: function () {\r\n        this.joinStage = 2\r\n        this.$nextTick(function () {\r\n          window.scrollTo(0, document.body.scrollHeight)\r\n        })\r\n      },\r\n      registerJoin: function () {\r\n        sessionStorage.setItem('postloginredirect', this.$route.path + '/join')\r\n        this.$router.push({ name: 'wizard' })\r\n      },\r\n      eventStartJoinButton: function () {\r\n        if (this.externalUrl) {\r\n          const joinAuditUrl =\r\n            this.$store.state.apiBases.eventservice +\r\n            this.$store.state.apiEndpoints.externaleventlog[0]\r\n          const data = {\r\n            evt: this.sprEvent\r\n          }\r\n          this.$http.post(joinAuditUrl, data).then(() => {\r\n            window.location.href = this.externalUrl\r\n          })\r\n        } else {\r\n          this.isEdit = true\r\n          this.showModal = true\r\n          if (this.isLoggedIn) {\r\n            this.joinStage = 2\r\n          } else {\r\n            if (this.isParticipant) {\r\n              this.joinStage = 2\r\n            } else {\r\n              this.joinStage = 1\r\n            }\r\n          }\r\n        }\r\n      },\r\n      newTranslationInject: function () {\r\n        if (this.langToAdd && this.langToAdd.id) {\r\n          this.newTranslation(this.langToAdd.id)\r\n        }\r\n      },\r\n      newTranslation: function (id) {\r\n        if (!id) {\r\n          return\r\n        }\r\n        if (\r\n          _.find(this.availableTranslations, function (x) {\r\n            return x.languageId === id\r\n          })\r\n        ) {\r\n          return\r\n        }\r\n\r\n        this.sprEvent.translations.push({\r\n          city: '',\r\n          description: '',\r\n          languageId: id,\r\n          name: '',\r\n          placeName: '',\r\n          price: '',\r\n          streetAddress: ''\r\n        })\r\n        this.changeEditorLanguage(id, true)\r\n      },\r\n      deleteTranslation: function (id) {\r\n        const cur = this.currentTranslation.languageId\r\n        if (id !== this.currentTranslation.languageId) {\r\n          this.sprEvent.translations = _.filter(\r\n            this.sprEvent.translations,\r\n            function (x) {\r\n              return x.languageId !== id\r\n            }\r\n          )\r\n        }\r\n        this.changeEditorLanguage(cur)\r\n      },\r\n      changeEditorLanguage: function (val, skipValidation) {\r\n        const self = this\r\n        if (skipValidation) {\r\n          self.currentTranslation = _.find(\r\n            self.sprEvent.translations,\r\n            function (x) {\r\n              return x.languageId === val\r\n            }\r\n          )\r\n        } else {\r\n          this.suppressErrors = false\r\n          self.$validator.validate().then((v) => {\r\n            if (v) {\r\n              self.currentTranslation = _.find(\r\n                self.sprEvent.translations,\r\n                function (x) {\r\n                  return x.languageId === val\r\n                }\r\n              )\r\n            }\r\n          })\r\n        }\r\n      },\r\n      loadEvent (id, callback, bustCache) {\r\n        this.isUpdating = true\r\n        let url =\r\n          this.$store.state.apiBases.eventservice +\r\n          this.$store.state.apiEndpoints.eventget[0].replace('{id}', id)\r\n\r\n        if (bustCache) {\r\n          const rand = Math.random() * 1000000\r\n          url += `?rnd=${rand}`\r\n        }\r\n\r\n        this.$http.get(url).then(\r\n          (response) => {\r\n            this.sprEvent = response.body\r\n            this.sprEvent.oldImage = this.sprEvent.image\r\n            this.sprEvent.oldImageThumb = this.sprEvent.imageThumb\r\n\r\n            // TODO(JanneF): Select language as current language (for editing) more elegant way\r\n            this.currentTranslation = this.translation\r\n            var eventMetaImage = this.sprEvent.image\r\n            if (eventMetaImage === '') {\r\n              eventMetaImage =\r\n                'https://sprvatistorage.blob.core.windows.net/eventimages/event_25.jpg'\r\n            }\r\n            if (!eventMetaImage.startsWith('http')) {\r\n              eventMetaImage = ''\r\n            }\r\n            this.isVolunteerTask =\r\n              this.sprEvent.type === this.volunteerTaskTypeId\r\n            this.isUpdating = false\r\n            this.getContacts()\r\n            if (callback) {\r\n              callback(response)\r\n            }\r\n          },\r\n          (response) => {\r\n            if (response.status === 403) {\r\n              // logged out but accessing a non public event\r\n              this.$router.replace(`/login?from=/event/${this.sprEvent.id}`)\r\n            } else {\r\n              this.$router.replace('/events')\r\n            }\r\n          }\r\n        )\r\n      },\r\n      setAddMode () {\r\n        this.eventEditOpen =\r\n          this.timeEditorOpen =\r\n          this.locationEditorOpen =\r\n          this.feeEditorOpen =\r\n          this.contactEditorOpen =\r\n          this.descriptionEditorOpen =\r\n          this.isEditAdminsOpen =\r\n          this.contactNotificationsOpen =\r\n          true\r\n      },\r\n      setEditMode () {\r\n        this.eventEditOpen =\r\n          this.timeEditorOpen =\r\n          this.locationEditorOpen =\r\n          this.feeEditorOpen =\r\n          this.contactEditorOpen =\r\n          this.descriptionEditorOpen =\r\n          this.isEditAdminsOpen =\r\n          this.contactNotificationsOpen =\r\n          false\r\n      },\r\n      eventPublishButton: function () {\r\n        this.isCopying = false\r\n        this.suppressErrors = false\r\n        if (this.isVolunteerTask) {\r\n          let id = 0\r\n          if (this.sprEvent.endTime) {\r\n            id = this.sprEvent.endTime.$id\r\n            this.sprEvent.endTime = _.cloneDeep(this.sprEvent.startTime)\r\n            this.sprEvent.endTime.$id = id\r\n          } else {\r\n            this.sprEvent.endTime = _.cloneDeep(this.sprEvent.startTime)\r\n          }\r\n          this.sprEvent.type = this.volunteerTaskTypeId\r\n        }\r\n        this.$validator.validate().then((result) => {\r\n          if (result) {\r\n            return this.save()\r\n          } else {\r\n            this.$refs.validation.scrollIntoView()\r\n          }\r\n        })\r\n      },\r\n      save () {\r\n        this.isUpdating = true\r\n        this.postError = null\r\n\r\n        if (this.sprEvent.isAllDay) {\r\n          this.sprEvent.startTime.hour = 0\r\n          this.sprEvent.startTime.minute = 0\r\n          this.sprEvent.endTime.hour = 23\r\n          this.sprEvent.endTime.minute = 59\r\n        }\r\n\r\n        if (this.isAdd) {\r\n          if (this.sprEvent.eventRoles.length === 0) {\r\n            this.isUpdating = false\r\n            this.showNoRolesWarning = true\r\n            const addRolesEl = this.$refs.editeventroles\r\n            const top = addRolesEl.offsetTop\r\n            window.scrollTo(0, top)\r\n            return\r\n          }\r\n\r\n          const addurl =\r\n            this.$store.state.apiBases.eventservice +\r\n            this.$store.state.apiEndpoints.eventadd[0]\r\n\r\n          return this.$http\r\n            .post(addurl, this.sprEvent)\r\n            .then((resp) => {\r\n              this.sprEvent.id = Number(resp.body)\r\n              this.updateContacts(this.contactNotifications)\r\n              // send messages to the users\r\n              return this.sendEventAdminMessages()\r\n            })\r\n            .catch((fail) => {\r\n              this.postError = fail.body\r\n              return this.focusOnErrors()\r\n            })\r\n            .then((resp) => {\r\n              if (!this.postError) {\r\n                this.$router.replace(`/event/${this.sprEvent.id}`)\r\n              }\r\n              this.isUpdating = false\r\n            })\r\n        } else {\r\n          const updateurl =\r\n            this.$store.state.apiBases.eventservice +\r\n            this.$store.state.apiEndpoints.eventupdate[0]\r\n\r\n          this.$http\r\n            .put(updateurl, this.sprEvent)\r\n            .then(() => {\r\n              return this.sendEventAdminMessages()\r\n            })\r\n            .then((resp) => {\r\n              this.isUpdating = false\r\n\r\n              this.updateContacts(this.contactNotifications)\r\n\r\n              this.loadEvent(this.sprEvent.id, null, true)\r\n              this.setEditMode()\r\n            })\r\n        }\r\n      },\r\n      sendEventAdminMessages () {\r\n        if (this.addedAdmins?.length) {\r\n          const url = `${\r\n            this.$store.state.apiBases.messageservice +\r\n            this.$store.state.apiEndpoints.sendneweventadminmessages[0]\r\n          }`\r\n          const newEventAdminMessageDto = {\r\n            emails: this.addedAdmins,\r\n            eventId: this.sprEvent.id\r\n          }\r\n          return this.$http.post(url, newEventAdminMessageDto)\r\n        }\r\n      },\r\n      showMap () {\r\n        this.geocodeFailed = false\r\n        this.proxiedGeocode(this.formattedGeocodeLocation).then(\r\n          (resp) => {\r\n            if (resp.body.results.length) {\r\n              const place = resp.body.results[0].geometry.location\r\n              var marker = {\r\n                id: 1,\r\n                position: {\r\n                  lat: place.lat,\r\n                  lng: place.lng\r\n                }\r\n              }\r\n              this.$set(this.markers, 0, marker)\r\n              this.mapCenter = marker.position\r\n              this.mapZoom = 13\r\n              this.mapIsVisible = true\r\n            } else {\r\n              this.mapIsVisible = true\r\n              this.geocodeFailed = true\r\n            }\r\n          },\r\n          (fail) => {\r\n            this.mapIsVisible = true\r\n            this.geocodeFailed = true\r\n          }\r\n        )\r\n      },\r\n      onBackgroundFileChange: function (e) {\r\n        var files = e.target.files || e.dataTransfer.files\r\n        if (!files.length) {\r\n          return\r\n        }\r\n        this.createImage(files[0], 'mainimage')\r\n      },\r\n      onThumbFileChange: function (e) {\r\n        var files = e.target.files || e.dataTransfer.files\r\n        if (!files.length) {\r\n          return\r\n        }\r\n        this.createImage(files[0], 'thumbimage')\r\n      },\r\n      createImage: function (file, saveAs) {\r\n        var reader = new FileReader()\r\n        reader.onload = (e) => {\r\n          if (saveAs === 'mainimage') {\r\n            this.sprEvent.image = e.target.result\r\n          } else {\r\n            this.sprEvent.imageThumb = e.target.result\r\n          }\r\n        }\r\n        reader.readAsDataURL(file)\r\n      },\r\n      eventEditButton: function () {\r\n        this.eventEditOpen = !this.eventEditOpen\r\n      },\r\n      eventCopyButton: function () {\r\n        // Let the creation process of event know that we are copying. This is for the purpose of preserving valid start/end date combinations.\r\n        this.isCopying = true\r\n        // Create a copy\r\n        this.addNewEvent()\r\n        // Post process the new copied event, with the purpose of removing existing id's.\r\n        this.cleanUpAfterCopying()\r\n      },\r\n      cleanUpAfterCopying () {\r\n        // when copying only accept one occurrence.\r\n        this.sprEvent.occurrence = 1\r\n\r\n        // month -1, because moment months start counting at 0\r\n        this.sprEvent.registrationDeadline = moment.utc([this.sprEvent.startTime.year,\r\n                                                         this.sprEvent.startTime.month - 1,\r\n                                                         this.sprEvent.startTime.day,\r\n                                                         0,\r\n                                                         0,\r\n                                                         0,\r\n                                                         0])\r\n\r\n        // remove all participants from the available roles and remove the role id's from the roles, to prevent inserting existing id's to the database\r\n        if (this.sprEvent.eventRoles) {\r\n          this.sprEvent.eventRoles.forEach(eventRole => {\r\n            delete eventRole.id\r\n            this.sprEvent.eventRoles.forEach(eventRole => {\r\n              // clear all participants\r\n              eventRole.participants = []\r\n            })\r\n          })\r\n        }\r\n        // When you copy an event, take away the link to external system\r\n        this.resetExternalUrl()\r\n      },\r\n      resetExternalUrl: function () {\r\n        this.sprEvent.translations.forEach(translation => {\r\n          translation.externalUrl = null;\r\n        });\r\n      },\r\n\r\n      eventCancelButton: function () {\r\n        if (this.isAdd) {\r\n          this.$router.replace('/events')\r\n          return\r\n        }\r\n        this.loadEvent(this.sprEvent.id, null, true)\r\n        this.setEditMode()\r\n        this.isEdit = true\r\n      },\r\n      eventRemoveButton: function () {\r\n        this.removeEvent = true\r\n      },\r\n      confirmEventRemoval: function () {\r\n        this.showModal = false\r\n        var self = this\r\n        var deleteUrl =\r\n          self.$store.state.apiBases.eventservice +\r\n          this.$store.state.apiEndpoints.eventdelete[0]\r\n            .replace('{id}', self.sprEvent.id)\r\n            .replace('{recurring}', this.recurringDeleteModeToBoolean)\r\n\r\n        return this.$http.delete(deleteUrl).then((resp) => {\r\n          this.$router.push('/events')\r\n        })\r\n      },\r\n      onDownloadParticipants () {\r\n        const workbook = new ExcelJS.Workbook()\r\n        const worksheet = workbook.addWorksheet('Participants')\r\n\r\n        // Define the column headers\r\n        worksheet.columns = [{ header: 'First Name', key: 'firstname', width: 20 },\r\n                             { header: 'Last Name', key: 'lastname', width: 20 },\r\n                             { header: 'Created', key: 'created', width: 20 },\r\n                             { header: 'Phone', key: 'phone', width: 20 },\r\n                             { header: 'Email', key: 'email', width: 30 },\r\n                             { header: 'Zip Code', key: 'zipcode', width: 10 },\r\n                             { header: 'Role', key: 'role', width: 20 },\r\n                             { header: 'Participated', key: 'participated', width: 15 },\r\n                             { header: 'More Info', key: 'moreInfo', width: 30 }]\r\n\r\n        // Apply bold font to the header row\r\n        const headerRow = worksheet.getRow(1)\r\n        headerRow.font = { bold: true }\r\n\r\n        // Populate the worksheet with participant data\r\n        this.sprEvent.eventRoles.forEach(role => {\r\n          role.participants.forEach(participant => {\r\n            worksheet.addRow({\r\n              firstname: participant.firstName,\r\n              lastname: participant.lastName,\r\n              created: moment.utc(participant.created).local().format('YYYY-MM-DD HH:mm'),\r\n              phone: participant.phone,\r\n              email: participant.email,\r\n              zipcode: participant.zipCode,\r\n              role: role.name,\r\n              participated: participant.participated,\r\n              moreInfo: participant.moreInfo\r\n            })\r\n          })\r\n        })\r\n\r\n        // Set filters on the header row\r\n        headerRow.eachCell(cell => {\r\n          cell.alignment = { vertical: 'middle', horizontal: 'center' }\r\n        })\r\n        worksheet.autoFilter = 'A1:I1' // Apply filters to all columns\r\n\r\n        // Generate the Excel file as a binary buffer\r\n        workbook.xlsx.writeBuffer().then(buffer => {\r\n          if (buffer === null) return\r\n\r\n          // Create a Blob object with the Excel file buffer\r\n          const link = document.createElement('a')\r\n          link.href = URL.createObjectURL(new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }))\r\n          const dateAsTimestamp = new Date().toISOString().substr(0, 19).replace(/:/g, '-').replace('T', '-')\r\n          link.download = `ParticipantsExport-${dateAsTimestamp}.xlsx`\r\n\r\n          // Append the link to the document body or any other parent element\r\n          document.body.appendChild(link)\r\n\r\n          // Trigger the click event to start the download\r\n          link.click()\r\n          link.remove()\r\n        }).catch(err => {\r\n          console.error(err)\r\n          this.$store.dispatch('alert/error', { message: this.$t('report.failed') })\r\n        })\r\n      },\r\n      onRemoveParticipants (val) {\r\n        const p = _.find(\r\n          _.find(this.sprEvent.eventRoles, ['name', val.role]).participants,\r\n          ['id', val.id]\r\n        )\r\n        // Check if p.id exists in the participantsToRemove array\r\n        if (this.participantsToRemove.includes(p.id)) {\r\n          // If it exists, remove it from the list\r\n          const indexToRemove = this.participantsToRemove.indexOf(p.id)\r\n          if (indexToRemove !== -1) {\r\n            this.participantsToRemove.splice(indexToRemove, 1)\r\n          }\r\n        } else {\r\n          // If it doesn't exist, add it to the list\r\n          this.participantsToRemove.push(p.id)\r\n        }\r\n        //this.save()\r\n      },\r\n      removeParticipants () {\r\n        // the button should be disabled when this list is empty\r\n        //if for some reason we should be calling this, return if no participants to remove\r\n        if (this.participantsToRemove.length === 0) {\r\n          return\r\n        }\r\n        if (confirm(this.$t('eventPage.removalConfirm').toString())) {\r\n          this.sprEvent.eventRoles.forEach(role => {\r\n            //remove all participants from the sprEvent.eventRoles.participants\r\n            role.participants = role.participants.filter(participant =>\r\n              !this.participantsToRemove.includes(participant.id)\r\n            )\r\n\r\n            //also clear out any lingering remove tags\r\n            role.participants.forEach(participant => {\r\n              participant.remove = false\r\n            })\r\n          })\r\n\r\n          var removalUrl = `${\r\n            this.$store.state.apiBases.eventservice +\r\n            this.$store.state.apiEndpoints.eventremoveparticipants[0]}`\r\n\r\n          return this.$http.post(removalUrl, this.participantsToRemove).then((resp) => {\r\n            this.showModal = false\r\n            this.isUpdating = false\r\n\r\n            this.participantsToRemove = []\r\n            //instead of save, just reload event\r\n            this.loadEvent(this.sprEvent.id, null, true)\r\n          })\r\n        }\r\n      },\r\n      onParticipationChanged (val) {\r\n        const p = _.find(\r\n          _.find(this.sprEvent.eventRoles, ['name', val.role]).participants,\r\n          ['id', val.id]\r\n        )\r\n        p.participated = !p.participated\r\n      },\r\n      onEventJoin (participant) {\r\n        this.isUpdating = true\r\n        var joinurl = `${\r\n          this.$store.state.apiBases.eventservice +\r\n          this.$store.state.apiEndpoints.eventjoin[0]\r\n        }`\r\n        var data = {\r\n          roleIds: participant.roleIds,\r\n          moreInfo: participant.moreInfo\r\n        }\r\n        const payload = { payload1: data, payload2: this.sprEvent }\r\n        return this.$http.post(joinurl, payload).then((resp) => {\r\n          this.showModal = false\r\n          this.isUpdating = false\r\n          this.loadEvent(this.sprEvent.id, null, true)\r\n        })\r\n      },\r\n      onEventJoinPublic (participant) {\r\n        this.isUpdating = true\r\n        const joinurl = `${\r\n          this.$store.state.apiBases.eventservice +\r\n          this.$store.state.apiEndpoints.eventjoinpublic[0]\r\n        }`\r\n        const payload = { payload1: participant, payload2: this.sprEvent }\r\n        return this.$http.post(joinurl, payload).then((resp) => {\r\n          const eventInfo = {\r\n            eventId: this.sprEvent.id,\r\n            name: this.sprEvent.name,\r\n            roleIds: resp.body.roleIds,\r\n            lightProfileId: resp.body.lightProfileId,\r\n            moreInfo: resp.body.moreInfo,\r\n            cancellationToken: resp.body.cancellationToken,\r\n            firstName: resp.body.firstName,\r\n            lastName: resp.body.lastName,\r\n            email: resp.body.email,\r\n            phone: resp.body.phone,\r\n            zipCode: resp.body.zipCode\r\n          }\r\n\r\n          // store the eventInfo if there are any roles (left over)\r\n          if (resp.body.roleIds && resp.body.roleIds.length > 0) {\r\n            this.$store.commit('addPublicEvent', eventInfo)\r\n          } else {\r\n            this.$store.commit('removePublicEvent', eventInfo)\r\n            this.$router.replace(`/event/cancel/${resp.body.cancellationToken}`)\r\n          }\r\n\r\n          this.showModal = false\r\n          this.isUpdating = false\r\n          this.loadEvent(this.sprEvent.id, null, true)\r\n        }, (error) => {\r\n          if (error.body === 'eventPage.errorAnonymousParticipation') {\r\n            this.showAlertError(this.$t(error.body))\r\n            this.showModal = false\r\n            this.isUpdating = false\r\n\r\n            this.loadEvent(this.sprEvent.id, null, true)\r\n          }\r\n        })\r\n      },\r\n      onAddAdmin (adminemail) {\r\n        var newAdmin = {\r\n          email: adminemail,\r\n          isCreator: false,\r\n          eventId: this.sprEvent.id\r\n        }\r\n        this.sprEvent.eventAdmins.push(newAdmin)\r\n        this.addedAdmins.push(adminemail)\r\n      },\r\n      onRemoveAdmin (admin) {\r\n        this.sprEvent.eventAdmins = this.sprEvent.eventAdmins.filter(\r\n          (x) => x !== admin\r\n        )\r\n        this.addedAdmins = this.addedAdmins.filter((x) => x !== admin.email)\r\n      },\r\n      onEventOrganizerChanged (eventOrganizer) {\r\n        this.sprEvent.eventOrganizer = eventOrganizer\r\n      },\r\n      adminsEditButton () {\r\n        this.isEditAdminsOpen = !this.isEditAdminsOpen\r\n      },\r\n      timeEditButton: function () {\r\n        this.timeEditorOpen = !this.timeEditorOpen\r\n      },\r\n      locationEditButton: function () {\r\n        this.locationEditorOpen = !this.locationEditorOpen\r\n      },\r\n      feeEditButton: function () {\r\n        this.feeEditorOpen = !this.feeEditorOpen\r\n      },\r\n      contactEditButton: function () {\r\n        this.contactEditorOpen = !this.contactEditorOpen\r\n      },\r\n      contactNotificationsButton: function () {\r\n        this.contactNotificationsOpen = !this.contactNotificationsOpen\r\n      },\r\n      descriptionEditButton: function () {\r\n        this.descriptionEditorOpen = !this.descriptionEditorOpen\r\n      },\r\n      getTimeArr (strTime) {\r\n        if (!strTime) return [0, 0]\r\n        const startTimeArr = strTime.split(':')\r\n\r\n        if (startTimeArr.length !== 2) {\r\n          startTimeArr[0] = 0\r\n          startTimeArr[1] = 0\r\n        }\r\n\r\n        let hr = Number(startTimeArr[0])\r\n        let min = Number(startTimeArr[1])\r\n\r\n        if (isNaN(hr)) hr = 0\r\n        if (isNaN(min)) min = 0\r\n\r\n        if (hr > 23) hr = 0\r\n        if (min > 59) min = 0\r\n\r\n        return [hr, min]\r\n      },\r\n      formatTime (hr, min) {\r\n        let strHr = hr.toString()\r\n        if (hr <= 9) strHr = `0${hr}`\r\n\r\n        let strMin = min.toString()\r\n        if (min <= 9) strMin = `0${min}`\r\n\r\n        return `${strHr}:${strMin}`\r\n      },\r\n      nextHour: function () {\r\n        var m = moment()\r\n        var roundUp =\r\n          m.minute() || m.second() || m.millisecond()\r\n            ? m.add(1, 'hour').startOf('hour')\r\n            : m.startOf('hour')\r\n        return roundUp\r\n      },\r\n      onConfirmDelete (value) {\r\n        this.confirmDelete = value\r\n      },\r\n      onRecurringEventChange (isRecurring) {\r\n        if (isRecurring) {\r\n          // Update recurrence fields with whichever frequency was set (initially 2).\r\n          this.onFrequencyUpdate(this.recurrenceFrequency)\r\n        } else {\r\n          // Set event model to single occurrence.\r\n          this.sprEvent.occurance = 1\r\n        }\r\n        this.isRecurring = isRecurring\r\n      },\r\n      onShowParticipantsChanged (val) {\r\n        this.sprEvent.showParticipants = val\r\n      },\r\n      onFrequencyUpdate (freq) {\r\n        // Set occurrence to chosen frequency.\r\n        this.recurrenceFrequency = this.sprEvent.occurance = freq\r\n        // Update recurring until field based on whatever repetition count was set (initially 1).\r\n        this.onRepetitionsUpdate(this.sprEvent.repeat)\r\n      },\r\n      onRecurringUntilUpdate (untilDateString) {\r\n        this.recurringUntil = untilDateString\r\n        this.sprEvent.repeat = this.calculateRepetitions(\r\n          this.recurrenceFrequency,\r\n          untilDateString\r\n        )\r\n      },\r\n      onRepetitionsUpdate (reps) {\r\n        this.sprEvent.repeat = reps\r\n        this.recurringUntil = this.calculateRecurringUntil(\r\n          this.startTimeDate,\r\n          this.recurrenceFrequency,\r\n          reps\r\n        ).format('DD.MM.YYYY')\r\n      },\r\n      calculateRecurringUntil (start, frequency, repetitions) {\r\n        const untilDate = moment(start)\r\n        repetitions -= 1\r\n        switch (frequency) {\r\n        case 2:\r\n          untilDate.add(repetitions, 'weeks')\r\n          break\r\n        case 3:\r\n          untilDate.add(repetitions * 2, 'weeks')\r\n          break\r\n        case 4:\r\n          untilDate.add(repetitions, 'months')\r\n          break\r\n        }\r\n        return untilDate\r\n      },\r\n      calculateRepetitions (frequency, until) {\r\n        const fromDate = moment(this.startTimeDate).startOf('day')\r\n        const untilDate = moment(until, 'DD.MM.YYYY')\r\n        let repetitions = 1\r\n        switch (frequency) {\r\n        case 2:\r\n          repetitions = untilDate.diff(fromDate, 'weeks')\r\n          break\r\n        case 3:\r\n          repetitions = untilDate.diff(fromDate, 'weeks') / 2\r\n          break\r\n        case 4:\r\n          repetitions = untilDate.diff(fromDate, 'months')\r\n          break\r\n        }\r\n        return repetitions + 1\r\n      },\r\n      onRegularEventClick () {\r\n        this.isVolunteerTask = false\r\n        this.sprEvent.isPublic = true\r\n        if (this.sprEvent.type === this.volunteerTaskTypeId) {\r\n          this.sprEvent.type = 11 // Other = 11\r\n        }\r\n      },\r\n      onVolunteerTaskClick () {\r\n        this.isVolunteerTask = true\r\n        this.sprEvent.isPublic = true\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import \"../../assets/scss/_variables.scss\";\r\n.contact-notifications {\r\n  .pill {\r\n    margin-right: 5px;\r\n\r\n    &.readonly {\r\n      border-color: $brand-grey7;\r\n      color: $brand-grey7;\r\n      background-color: $brand-grey1;\r\n      cursor: not-allowed;\r\n    }\r\n  }\r\n\r\n  .frequency-selector {\r\n    .comp-radio-group-key {\r\n      padding-top: 10px;\r\n      .spr-simple-radio {\r\n        padding-left: 20px;\r\n      }\r\n    }\r\n  }\r\n\r\n  .emailinput {\r\n    display: inline-block;\r\n    width: 100%;\r\n  }\r\n  .add-button {\r\n    display: inline-block;\r\n  }\r\n  .is-edit {\r\n    color: $brand-red;\r\n    padding: 0 20px;\r\n  }\r\n  .frequency {\r\n    color: $brand-red;\r\n    font-family: $font-bold;\r\n    padding: 0 20px;\r\n  }\r\n  .editor-header {\r\n    a {\r\n      color: $brand-red;\r\n      font-family: $font-bold;\r\n      cursor: pointer;\r\n      text-decoration: none;\r\n      text-transform: uppercase;\r\n    }\r\n\r\n    .action-icon {\r\n      color: $brand-red;\r\n      font-family: $font-bold;\r\n      cursor: pointer;\r\n      text-decoration: none;\r\n      text-transform: uppercase;\r\n      margin-right: 5px;\r\n\r\n      .saveChanges {\r\n        color: $brand-success;\r\n      }\r\n    }\r\n  }\r\n\r\n  .editor-area {\r\n    margin-bottom: 10px;\r\n    textarea {\r\n      width: calc(100% - 15px);\r\n      resize: none;\r\n      margin-top: 10px;\r\n      font-family: \"Signa-Book\", Sans-Serif;\r\n      font-size: 14px;\r\n      line-height: 20px;\r\n    }\r\n  }\r\n\r\n  .spr-danger {\r\n    border: 2px solid $brand-red !important;\r\n  }\r\n}\r\n.message-full {\r\n  margin-top: 10px;\r\n  height: 60px; /* Set a higher container height */\r\n  display: flex;\r\n  justify-content: center;\r\n  align-items: center;\r\n  background-color: $brand-white;\r\n  /* Optionally, for visualization purposes */\r\n  border: 1px solid $brand-white;\r\n  .message-text {\r\n    text-align: center;\r\n    color: $brand-red;\r\n  }\r\n}\r\n.subheader {\r\n    color:$brand-red;\r\n    text-transform: uppercase;\r\n    font-family: $font-bold;\r\n    margin: 0px 0 20px 0;\r\n    display:block;\r\n    font-size: 14px;\r\n  }\r\n\r\n.vertical-container {\r\n  display: flex;\r\n  justify-content: flex-start;\r\n  align-content: center;\r\n  flex-direction: column;\r\n}\r\n.cap-label-language {\r\n  flex: 1 0 auto;\r\n}\r\n.language-content {\r\n  flex: 1 0 auto;\r\n  align-self: flex-start;\r\n  margin-bottom: 30px;\r\n  margin-left: 1px;\r\n}\r\n\r\n.cap-label {\r\n  white-space: nowrap;\r\n}\r\n\r\n.search-item {\r\n  margin-top: unset;\r\n  margin-left: unset;\r\n}\r\n\r\n.multiselect__single {\r\n  font-weight: normal;\r\n}\r\n\r\n.multiselect__tags {\r\n  min-height: 37px;\r\n  border: solid 2px $brand-grey3;\r\n  input {\r\n    border: none;\r\n    outline: none;\r\n  }\r\n}\r\n\r\n.top-space {\r\n  margin-top: 10px;\r\n}\r\n\r\n.modal-container {\r\n  .button-width {\r\n    width: 300px;\r\n    max-width: 100%;\r\n  }\r\n}\r\n\r\n.modal-footer {\r\n  .close-link {\r\n    cursor: pointer;\r\n    &:hover {\r\n      text-decoration: underline;\r\n    }\r\n  }\r\n}\r\n\r\n.event-page {\r\n  .custom-file {\r\n    border: 2px solid $brand-grey3;\r\n    border-radius: 5px;\r\n    position: relative;\r\n\r\n    span {\r\n      position: absolute;\r\n      top: 0px;\r\n      left: 0px;\r\n      bottom: 0px;\r\n      right: 0px;\r\n\r\n      line-height: 34px;\r\n      padding-left: 0px;\r\n    }\r\n  }\r\n\r\n  .space-between-row {\r\n    display: flex;\r\n    justify-content: space-between;\r\n  }\r\n\r\n  .cap-label {\r\n    margin-bottom: 8px;\r\n  }\r\n\r\n  .button-width {\r\n    min-width: 300px;\r\n    max-width: 100%;\r\n  }\r\n\r\n  .select-thumb {\r\n    width: 100%;\r\n    border-radius: 5px;\r\n    box-sizing: border-box;\r\n    border: 2px solid $brand-white;\r\n\r\n    &.selected {\r\n      border: 2px solid $brand-red;\r\n      box-shadow: 0 0 10px $brand-red;\r\n    }\r\n  }\r\n\r\n  .recurring {\r\n    margin-bottom: 25px;\r\n  }\r\n\r\n  .back-header {\r\n    color: $brand-red;\r\n\r\n    svg {\r\n      padding-right: 7px;\r\n    }\r\n\r\n    &:hover {\r\n      text-decoration: underline;\r\n    }\r\n  }\r\n\r\n  .translation {\r\n    display: block;\r\n    padding: 3px;\r\n\r\n    button {\r\n      display: inline-block;\r\n      background: none;\r\n      border: none;\r\n      color: $brand-red;\r\n      font-size: 18px;\r\n      font-family: Signa-Light;\r\n      padding: 7px;\r\n      cursor: pointer;\r\n\r\n      &.disabled {\r\n        cursor: not-allowed;\r\n        background: $brand-grey1 !important;\r\n        border: 2px solid $brand-grey1 !important;\r\n        color: black !important;\r\n      }\r\n\r\n      &.language-name {\r\n        border-radius: 30px;\r\n        border: 2px solid $brand-red;\r\n\r\n        &:hover {\r\n          background: $brand-red;\r\n          color: $brand-white;\r\n        }\r\n\r\n        &.selected {\r\n          background: $brand-red;\r\n          color: $brand-white;\r\n        }\r\n      }\r\n\r\n      &.remove-language {\r\n        color: $brand-red;\r\n        font-size: 14px;\r\n        padding-left: 10;\r\n\r\n        &:hover {\r\n          text-decoration: underline;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  width: 100%;\r\n  background: $brand-white;\r\n\r\n  .updating {\r\n    position: fixed;\r\n    display: flex;\r\n    top: 0;\r\n    left: 0;\r\n    bottom: 0;\r\n    right: 0;\r\n    height: 100%;\r\n    width: 100%;\r\n    z-index: 10000000;\r\n    background-color: rgba(255, 255, 255, 0.8);\r\n\r\n    .spinner {\r\n      margin: auto;\r\n      color: $brand-red;\r\n    }\r\n  }\r\n\r\n  .portrait-size {\r\n    width: 60px;\r\n    height: 60px;\r\n    border: 2px solid $brand-white;\r\n  }\r\n  .hero {\r\n    min-height: 300px;\r\n    background-image: url(https://sprvatistorage.blob.core.windows.net/eventimages/defaultevent_12.jpg);\r\n    background-repeat: no-repeat;\r\n    background-position: center center;\r\n\r\n    color: $brand-white;\r\n    position: relative;\r\n\r\n    .event-title {\r\n      background: $brand-white;\r\n      color: $brand-red;\r\n    }\r\n\r\n    .eventimage {\r\n      position: absolute;\r\n      width: 100%;\r\n      height: 100%;\r\n      left: 0;\r\n      top: 0;\r\n      background-color: $brand-grey10;\r\n      background-repeat: no-repeat;\r\n      background-position: center center;\r\n      display: none;\r\n    }\r\n\r\n    .thumbimage {\r\n      position: absolute;\r\n      width: 100px;\r\n      height: 100px;\r\n      right: 50px;\r\n      top: 50px;\r\n      background-size: cover;\r\n      border: 2px solid $brand-red;\r\n      background-color: $brand-grey10;\r\n      background-repeat: no-repeat;\r\n      background-position: center center;\r\n      display: none;\r\n    }\r\n\r\n    &:before {\r\n      content: \"\";\r\n      display: block;\r\n      background: rgba(0, 0, 0, 0.4);\r\n      position: absolute;\r\n      top: 0;\r\n      left: 0;\r\n      width: 100%;\r\n      height: 100%;\r\n      z-index: 0;\r\n    }\r\n    .container {\r\n      z-index: 1;\r\n      position: relative;\r\n    }\r\n    h1 {\r\n      width: 60%;\r\n      text-transform: uppercase;\r\n      font-family: Signa-Black !important;\r\n      margin: 20px 0;\r\n      display: block;\r\n      min-height: 62px;\r\n    }\r\n\r\n    .category {\r\n      min-height: 20px;\r\n    }\r\n\r\n    .type {\r\n      font-size: 15px;\r\n    }\r\n\r\n    .mode,\r\n    .category,\r\n    .department {\r\n      display: block;\r\n      font-family: Signa-Bold;\r\n      font-size: 18px;\r\n    }\r\n    .actions {\r\n      text-align: left;\r\n      margin: 40px 0 0 0;\r\n      display: block;\r\n      position: relative;\r\n\r\n      .organizer {\r\n        float: right;\r\n        text-transform: uppercase;\r\n        font-weight: bold;\r\n        font-family: signa-light;\r\n        letter-spacing: 1px;\r\n        width: 230px;\r\n      }\r\n    }\r\n    .spr-button {\r\n      flex: 1 0 auto;\r\n      border: 1px solid rgba(0, 0, 0, 0.5);\r\n      background: $brand-grey10;\r\n      color: $brand-white;\r\n      height: 45px;\r\n      &:hover {\r\n        color: $brand-grey15;\r\n      }\r\n    }\r\n  }\r\n\r\n  .event-content {\r\n    width: 100%;\r\n    .edit-row {\r\n      padding: 20px 0;\r\n      border-top: 5px solid $brand-red;\r\n      box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);\r\n\r\n      &.hero-area {\r\n        .upload {\r\n          margin-bottom: 5px;\r\n        }\r\n      }\r\n\r\n      .volunteertask-filter {\r\n        padding: 0 30px 15px;\r\n\r\n        a {\r\n          color: $brand-grey8;\r\n          cursor: pointer;\r\n          padding: 10px 5px;\r\n          display: inline-block;\r\n\r\n          &.selected {\r\n            color: $brand-red;\r\n            font-weight: bold;\r\n          }\r\n        }\r\n      }\r\n    }\r\n    .col-border {\r\n      border-left: 1px solid $brand-grey1;\r\n      border-right: 1px solid $brand-grey1;\r\n      padding: 0 25px;\r\n      .event-block {\r\n        font-family: Signa-Book;\r\n        font-weight: normal;\r\n      }\r\n    }\r\n    .event-block {\r\n      font-family: Signa-Light;\r\n      font-weight: bold;\r\n      padding: 25px 0;\r\n      position: relative;\r\n      border-bottom: 1px solid $brand-grey1;\r\n       &.secondary {\r\n        font-family: Signa-Book;\r\n        font-weight: normal;\r\n      }\r\n      &:first-of-type {\r\n        padding-top: 40px;\r\n        .edit-corner {\r\n          top: 28px;\r\n        }\r\n      }\r\n      &:last-of-type {\r\n        border: 0;\r\n      }\r\n      &.time {\r\n        .add-to-calendars {\r\n          svg {\r\n            margin-right: 5px;\r\n          }\r\n        }\r\n        padding-bottom: 9px;\r\n      }\r\n      button {\r\n        margin-bottom: 10px;\r\n      }\r\n      .icon {\r\n        color: $brand-red;\r\n        font-size: 48px;\r\n        line-height: 48px;\r\n      }\r\n      .grey-text {\r\n        color: $brand-grey7;\r\n        font-size: 14px;\r\n      }\r\n    }\r\n\r\n    .event-fee .icon {\r\n      border-radius: 50%;\r\n      border: 2px solid $brand-red;\r\n      font-size: 22px;\r\n      line-height: 22px;\r\n      height: 40px;\r\n      width: 40px;\r\n      display: inline-block;\r\n      svg {\r\n        margin: 7px 10px 10px 10px;\r\n      }\r\n    }\r\n\r\n    .contact {\r\n      .contact-person {\r\n        margin-bottom: 10px;\r\n        font-weight: bold;\r\n      }\r\n    }\r\n\r\n    .cap-label {\r\n      color: $brand-red;\r\n      margin-bottom: 10px;\r\n      display: block;\r\n    }\r\n  }\r\n  .edit-corner {\r\n    position: absolute;\r\n    right: 0px;\r\n    top: 15px;\r\n    z-index: 2;\r\n    padding: 10px;\r\n  }\r\n\r\n  .spr-datepicker {\r\n    margin-bottom: 15px;\r\n\r\n    .datepickbox {\r\n      position: relative;\r\n      input {\r\n        position: relative;\r\n        z-index: 1;\r\n        box-shadow: none !important;\r\n        border: solid 2px $brand-grey3 !important;\r\n        background: none !important;\r\n        width: 100%;\r\n      }\r\n    }\r\n  }\r\n  .spr-timepicker {\r\n    margin-bottom: 15px;\r\n  }\r\n  .spr-simple-checkbox {\r\n    font-weight: normal;\r\n  }\r\n\r\n  .edit-area {\r\n    .edit-label {\r\n      color: #000 !important;\r\n      margin-bottom: 20px !important;\r\n      display: block;\r\n    }\r\n    .field-row {\r\n      padding-top: 20px;\r\n    }\r\n    .repetitions {\r\n      font-weight: normal;\r\n\r\n      .wrap {\r\n        margin-top: 27px;\r\n      }\r\n\r\n      @media (max-width: $media-sm-max) {\r\n        .wrap {\r\n          margin-top: 0;\r\n        }\r\n      }\r\n\r\n      .spr-simple-numberinput {\r\n        margin: 0 15px;\r\n        max-width: 80px;\r\n        display: inline-block;\r\n\r\n        input {\r\n          height: 44px;\r\n        }\r\n\r\n        @media (max-width: $media-sm-max) {\r\n          label {\r\n            display: none;\r\n          }\r\n        }\r\n      }\r\n      .prefix {\r\n        margin: 15px 0 0 0;\r\n        @media (max-width: $media-sm-max) {\r\n          margin: 0 0 16px 15px;\r\n        }\r\n      }\r\n      .suffix {\r\n        margin: 15px 0 0 0;\r\n        @media (max-width: $media-sm-max) {\r\n          margin: 0 0 16px 0;\r\n        }\r\n      }\r\n    }\r\n  }\r\n  .editor-header a {\r\n    text-transform: uppercase;\r\n    font-family: Signa-Light;\r\n    font-weight: bold;\r\n  }\r\n\r\n  .spr-simple-textarea {\r\n    .cap-label {\r\n      padding-left: 0;\r\n    }\r\n    textarea {\r\n      color: #000 !important;\r\n      line-height: 18px;\r\n      border-radius: 0 !important;\r\n    }\r\n  }\r\n\r\n  .participants {\r\n    margin-top: 30px;\r\n  }\r\n\r\n  .footer-actions {\r\n    padding-top: 30px;\r\n    padding-bottom: 15px;\r\n    text-align: center;\r\n    border-bottom: solid 1px $brand-grey3;\r\n  }\r\n\r\n  @media (max-width: $media-sm-max) {\r\n    .hero {\r\n      padding: 60px 0;\r\n      .actions {\r\n        top: 48px;\r\n      }\r\n    }\r\n    .col-border {\r\n      border: 0 !important;\r\n      padding: 0 15px !important;\r\n    }\r\n\r\n    .footer-actions {\r\n      .spr-button {\r\n        margin-bottom: 5px;\r\n      }\r\n    }\r\n  }\r\n\r\n  @media (max-width: $media-xs-max) {\r\n    .hero {\r\n      padding: 1px 0;\r\n      h1 {\r\n        width: 100%;\r\n        font-size: 30px !important;\r\n        line-height: 34px !important;\r\n      }\r\n      .actions {\r\n        top: 27px;\r\n        .spr-button {\r\n          margin-bottom: 5px;\r\n        }\r\n        .organizer {\r\n          width: 100%;\r\n          padding: 15px;\r\n          .col-xs-8 {\r\n            padding-left: 15px !important;\r\n          }\r\n        }\r\n      }\r\n    }\r\n    .event-content .col-border {\r\n      padding: 0 20px;\r\n    }\r\n  }\r\n\r\n  @media (min-width: $media-sm-max) {\r\n    .hero {\r\n      padding: 60px 0;\r\n      .actions {\r\n        top: 48px;\r\n      }\r\n    }\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Event.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Event.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Event.vue?vue&type=template&id=dceded9c\"\nimport script from \"./Event.vue?vue&type=script&lang=js\"\nexport * from \"./Event.vue?vue&type=script&lang=js\"\nimport style0 from \"./Event.vue?vue&type=style&index=0&id=dceded9c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container create-event\"},[_c('div',{staticClass:\"row back-nav\"},[_c('div',{staticClass:\"col\"},[_c('a',{staticClass:\"back\",attrs:{\"tabindex\":\"0\",\"href\":\"javascript: return void(0);\"},on:{\"click\":_vm.goBack}},[_c('font-awesome-icon',{staticClass:\"back\",attrs:{\"icon\":\"chevron-left\"}}),_vm._v(\"Palaa \")],1)])]),_c('div',{staticClass:\"create-event-main\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row title\"},[_c('div',{staticClass:\"col col-md-12\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('eventPage.selectTemplate')))])])])]),_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row search\"},[_c('div',{staticClass:\"col-12 col-sm-9 col-md-7 col-lg-5\"},[_c('searchbox',{attrs:{\"placeholder\":_vm.placeholder},model:{value:(_vm.searchText),callback:function ($$v) {_vm.searchText=$$v},expression:\"searchText\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"select-options\"},[_c('span',{staticClass:\"selected\"},[_vm._v(_vm._s(_vm.$t('eventPage.templates')))]),_c('span',{},[_vm._v(_vm._s(_vm.$t('eventPage.templateCopy')))])])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('eventtemplateselect',{attrs:{\"templates\":_vm.templates}})],1)])]),_c('div',{staticClass:\"row button-row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('eventPage.selectTemplate'),\"click-event\":\"selectTemplate\"},on:{\"selectTemplate\":_vm.selectTemplateButton}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"template-list\"},[_c('ul',_vm._l((_vm.templates),function(template,index){return _c('li',{key:index},[_c('div',{staticClass:\"template-view\"},[_c('span',{staticClass:\"template-name\"},[_vm._v(_vm._s(template.title))]),_c('span',[_vm._v(_vm._s(template.type))])])])}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"template-list\">\r\n    <ul>\r\n      <li v-for=\"(template, index) in templates\" :key=\"index\">\r\n        <div class=\"template-view\">\r\n          <span class=\"template-name\">{{ template.title }}</span>\r\n          <span>{{ template.type }}</span>\r\n        </div>\r\n      </li>\r\n    </ul>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'TemplateSelect',\r\n    props: {\r\n      templates: {\r\n        type: Array,\r\n        default: () => []\r\n      },\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      type: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n\r\n    },\r\n    methods: {\r\n    //\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventTemplateSelect.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventTemplateSelect.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./EventTemplateSelect.vue?vue&type=template&id=c793922e\"\nimport script from \"./EventTemplateSelect.vue?vue&type=script&lang=js\"\nexport * from \"./EventTemplateSelect.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<template>\r\n  <div class=\"container create-event\">\r\n    <div class=\"row back-nav\">\r\n      <div class=\"col\">\r\n        <a class=\"back\" tabindex=\"0\" href=\"javascript: return void(0);\" @click=\"goBack\">\r\n          <font-awesome-icon icon=\"chevron-left\" class=\"back\" />Palaa\r\n        </a>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"create-event-main\">\r\n      <div class=\"container\">\r\n        <div class=\"row title\">\r\n          <div class=\"col col-md-12\">\r\n            <h3>{{ $t('eventPage.selectTemplate') }}</h3>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"container\">\r\n        <div class=\"row search\">\r\n          <div class=\"col-12 col-sm-9 col-md-7 col-lg-5\">\r\n            <searchbox v-model=\"searchText\" :placeholder=\"placeholder\" />\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-md-12\">\r\n            <div class=\"select-options\">\r\n              <span class=\"selected\">{{ $t('eventPage.templates') }}</span>\r\n              <span class=\"\">{{ $t('eventPage.templateCopy') }}</span>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"col-md-12\">\r\n            <eventtemplateselect :templates=\"templates\" />\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"row button-row\">\r\n        <div class=\"col-md-12\">\r\n          <sprbutton type=\"primary\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('eventPage.selectTemplate')\"\r\n                     class=\"spr-redborder button-width\"\r\n                     click-event=\"selectTemplate\"\r\n                     @selectTemplate=\"selectTemplateButton\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import searchbox from '../SPRSearchBox.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import eventtemplateselect from './EventTemplateSelect.vue'\r\n  export default {\r\n    name: 'Createevent',\r\n    pageName: 'createevent',\r\n    components: {\r\n      searchbox, sprbutton, eventtemplateselect\r\n    },\r\n    data () {\r\n      return {\r\n        searchText: '',\r\n        activeItemId: '',\r\n        templates: [\r\n          { title: 'Henkisen tuen peruskurssi', type: 'Kurssit ja koulutukset' },\r\n          { title: 'Tyhjä toimintapohja', type: 'Yleinen' },\r\n          { title: 'Ensiapukurssi', type: 'Kurssit ja koulutukset' },\r\n          { title: 'Piirin järjestöseminaari', type: 'Kokoukset' }\r\n        ]\r\n      }\r\n    },\r\n    methods: {\r\n      setActiveItemId (itemIndex) {\r\n        this.activeItemId = itemIndex\r\n      },\r\n      selectTemplateButton: function () {\r\n        this.$router.push('/event')\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .create-event {\r\n    background-color: $brand-white;\r\n    padding-bottom: 40px;\r\n    .back-nav {\r\n      height: 50px;\r\n      margin-bottom: 30px;\r\n      border-bottom: solid 1px $brand-grey3;\r\n    .back {\r\n      font-weight: bold;\r\n      color: $brand-red;\r\n      cursor: pointer;\r\n       svg {\r\n        color: $brand-red;\r\n        margin-right: 10px;\r\n        }\r\n     }\r\n  }\r\n  .search {\r\n    margin-bottom: 40px;\r\n  }\r\n  .button-row {\r\n    text-align: right;\r\n    padding: 40px 0;\r\n  }\r\n  .select-options {\r\n    font-family: Signa-bold;\r\n    color: $brand-grey4;\r\n    border-bottom: 1px solid $brand-grey1;\r\n    text-transform: uppercase;\r\n    span {\r\n      padding: 10px;\r\n      display: inline-block;\r\n      cursor: pointer;\r\n     }\r\n    .selected {\r\n      color: #000;\r\n    }\r\n  }\r\n  .template-list {\r\n    ul {\r\n      list-style-type: none;\r\n      padding-left: 0!important;\r\n     }\r\n    .template-view {\r\n      padding: 10px 15px;\r\n      cursor: pointer;\r\n      .template-name {\r\n        color: $brand-red;\r\n        display: block;\r\n        font-weight: bold;\r\n      }\r\n      &:hover {\r\n        background: $brand-grey0;\r\n      }\r\n    }\r\n  }\r\n  h3 {\r\n    color: $brand-red;\r\n    margin-bottom: 30px;\r\n  }\r\n  .bottomspacer {\r\n    margin-bottom: 50px;\r\n  }\r\n  .spr-searchbox {\r\n    border: 1px solid $brand-grey2!important;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventCreate.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventCreate.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./EventCreate.vue?vue&type=template&id=2308a779\"\nimport script from \"./EventCreate.vue?vue&type=script&lang=js\"\nexport * from \"./EventCreate.vue?vue&type=script&lang=js\"\nimport style0 from \"./EventCreate.vue?vue&type=style&index=0&id=2308a779&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"eventlist col-12\"},[_c('backbar',{attrs:{\"title\":_vm.$t('eventPage.eventListTitle')}}),_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"event-search\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"search-section\"},[_c('div',{staticClass:\"advanced-search\"},[_c('eventsearchcriteria',{attrs:{\"is-public\":_vm.isPublic,\"search-values\":_vm.searchCriteria},on:{\"change\":_vm.onChangedSearchCriteria}})],1)])])]),_c('div',{staticClass:\"row event-list\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"col-12 loading text-center\"},[_c('div',{staticClass:\"spinner\"},[_c('loading')],1)]),_vm._l((_vm.sprEvents),function(evt){return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isLoading),expression:\"!isLoading\"}],key:evt.id,staticClass:\"col-sm-12 col-md-6 col-lg-4\"},[_c('eventtile',{attrs:{\"sprevent\":evt}})],1)})],2),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showPager),expression:\"showPager\"}],staticClass:\"row pager\"},[_c('div',{staticClass:\"col-12\"},[_c('pager',{attrs:{\"skip\":_vm.skip,\"take\":_vm.take,\"total\":_vm.total,\"max-display\":5},on:{\"pagerchanged\":_vm.onPagerChanged,\"pagerprevious\":_vm.onPagerPrevious,\"pagernext\":_vm.onPagerNext}})],1)]),(!_vm.hasEvents && !_vm.isLoading)?_c('div',{staticClass:\"row no-events text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('span',[_vm._v(_vm._s(_vm.$t('eventPage.noEventsFound')))])])]):_vm._e()])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"search-section\"},[_c('div',{staticClass:\"search-criteria\"},[_c('div',{staticClass:\"search-group\"},[_c('div',{staticClass:\"search-item\"},[_c('InfoTip',{attrs:{\"title\":_vm.$t('eventSearch.searchWord'),\"tipId\":\"search-word\",\"tipContent\":_vm.$t('eventInfo.searchWord'),\"linkUrl\":'',\"iconAlt\":\"Help Icon\"}}),_c('span',{staticClass:\"form-group\"},[_c('div',{class:{ 'spr-searchbox': true, 'spr-roundbox-1': true }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchWord),expression:\"searchWord\"}],staticClass:\"form-control\",attrs:{\"tabindex\":\"0\",\"placeholder\":_vm.$t('eventSearch.searchWordPlaceHolder')},domProps:{\"value\":(_vm.searchWord)},on:{\"input\":function($event){if($event.target.composing)return;_vm.searchWord=$event.target.value}}})])])],1),_c('div',{staticClass:\"search-item\"},[_c('InfoTip',{attrs:{\"title\":_vm.$t('eventPage.city'),\"tipId\":\"location-info\",\"tipContent\":_vm.$t('eventInfo.locationInfo'),\"linkUrl\":'',\"iconAlt\":\"Help Icon\"}}),_c('div',{staticClass:\"form-group\"},[_c('div',{class:{ 'spr-searchbox': true, 'spr-roundbox-1': true }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.locale),expression:\"locale\"}],staticClass:\"form-control\",attrs:{\"tabindex\":\"0\",\"placeholder\":_vm.$t('eventSearch.locationPlaceHolder')},domProps:{\"value\":(_vm.locale)},on:{\"input\":function($event){if($event.target.composing)return;_vm.locale=$event.target.value}}})])])],1)]),_c('div',{staticClass:\"search-item\"},[_c('InfoTip',{attrs:{\"title\":_vm.$t('eventPage.startDate'),\"tipId\":\"start-date-info\",\"tipContent\":_vm.$t('eventInfo.startDateInfo'),\"linkUrl\":'',\"iconAlt\":\"Help Icon\"}}),_c('datepicker',{key:_vm.componentKey,attrs:{\"initial\":_vm.displayInitialDate,\"has-error\":_vm.errors.has('eventPage.startDate'),\"name\":\"searchCriteria.startDate\",\"required\":false,\"placeholder\":_vm.$t('eventPage.chooseDate')},model:{value:(_vm.searchStartDate),callback:function ($$v) {_vm.searchStartDate=$$v},expression:\"searchStartDate\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('InfoTip',{attrs:{\"title\":_vm.$t('eventPage.endDate'),\"tipId\":\"end-date-info\",\"tipContent\":_vm.$t('eventInfo.endDateInfo'),\"linkUrl\":'',\"iconAlt\":\"Help Icon\"}}),_c('datepicker',{key:_vm.componentKey,attrs:{\"initial\":_vm.displayEndDate,\"has-error\":_vm.errors.has('eventPage.endDate'),\"name\":\"searchCriteria.endDate\",\"required\":false,\"is-nullable\":true,\"placeholder\":_vm.$t('eventPage.chooseDate'),\"limit\":[{type: 'fromto', from: _vm.processStartDate, to: null}]},model:{value:(_vm.searchEndDate),callback:function ($$v) {_vm.searchEndDate=$$v},expression:\"searchEndDate\"}})],1),_c('div',{staticClass:\"search-item advanced-search-select-button\"},[_c('div',{staticClass:\"advanced-search-select\",on:{\"click\":_vm.toggleAdvancedSearch}},[_c('span',{staticClass:\"advanced-search-select-text\"},[_vm._v(_vm._s(_vm.$t('searchCriteria.advancedSearchTitleEvent')))]),(_vm.advancedSearchVisible)?_c('font-awesome-icon',{staticClass:\"advanced-search-select-icon\",attrs:{\"icon\":\"chevron-down\",\"aria-hidden\":\"true\"}}):_c('font-awesome-icon',{staticClass:\"advanced-search-select-icon\",attrs:{\"icon\":\"chevron-up\",\"aria-hidden\":\"true\"}})],1)])]),(_vm.advancedSearchVisible)?_c('div',{staticClass:\"extended-advanced-search\"},[_c('div',{staticClass:\"search-criteria-title\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c('div',{staticClass:\"search-criteria\"},[_c('div',{staticClass:\"search-item\"},[_c('InfoTip',{attrs:{\"title\":_vm.$t('eventPage.isOnlineFilter'),\"tipId\":\"is-onlinefilter-info\",\"tipContent\":_vm.$t('eventInfo.onlineActivityInfo'),\"linkUrl\":'',\"iconAlt\":\"Help Icon\"}}),_c('singleselect',{key:_vm.componentKey,attrs:{\"items\":_vm.isOnlineValues},on:{\"change\":_vm.onIsOnlineChanged},model:{value:(_vm.isOnline),callback:function ($$v) {_vm.isOnline=$$v},expression:\"isOnline\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('InfoTip',{attrs:{\"title\":_vm.$t('eventPage.eventCategory'),\"tipId\":\"event-category-info\",\"tipContent\":_vm.$t('eventInfo.activityInfo'),\"linkUrl\":'',\"iconAlt\":\"Help Icon\"}}),_c('singleselect',{key:_vm.componentKey,attrs:{\"items\":_vm.categories},on:{\"change\":_vm.onCategoriesChanged},model:{value:(_vm.eventCategory),callback:function ($$v) {_vm.eventCategory=$$v},expression:\"eventCategory\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('InfoTip',{attrs:{\"title\":_vm.$t('eventPage.eventType'),\"tipId\":\"event-type-info\",\"tipContent\":_vm.$t('eventInfo.typeInfo'),\"linkUrl\":'',\"iconAlt\":\"Help Icon\"}}),_c('singleselect',{key:_vm.componentKey,attrs:{\"items\":_vm.eventTypes},on:{\"change\":_vm.onEventTypesChanged},model:{value:(_vm.eventType),callback:function ($$v) {_vm.eventType=$$v},expression:\"eventType\"}})],1),_c('div',{staticClass:\"search-item\"},[_c('InfoTip',{attrs:{\"title\":_vm.$t('eventPage.searchLanguages'),\"tipId\":\"search-languages-info\",\"tipContent\":_vm.$t('eventInfo.languageInfo'),\"linkUrl\":'',\"iconAlt\":\"Help Icon\"}}),_c('multiselectinput',{key:_vm.componentKey,attrs:{\"items\":_vm.eventLanguages},on:{\"change\":_vm.onLanguageChanged},model:{value:(_vm.languages),callback:function ($$v) {_vm.languages=$$v},expression:\"languages\"}})],1),_c('div',{staticClass:\"search-item eventorganizer\"},[_c('InfoTip',{attrs:{\"title\":_vm.$t('eventPage.eventDistrictSection'),\"tipId\":\"activity-organizer-info\",\"tipContent\":_vm.$t('eventInfo.activityOrganizerInfo'),\"linkUrl\":'',\"iconAlt\":\"Help Icon\"}}),_c('eventorganizer',{attrs:{\"name\":\"eventPage.eventDistrictSection\",\"value\":_vm.eventOrganizer,\"required\":false,\"is-valid\":true},on:{\"input\":_vm.onEventOrganizerChanged}})],1)])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { EventOrganizerIdentifier } from '@/types/custom'\r\n\r\nexport function isEventOrganizerIdentifier (obj: any): obj is EventOrganizerIdentifier {\r\n  return (\r\n    typeof obj === 'object' && // Check if obj is an object\r\n    obj !== null && // Exclude null values\r\n    typeof obj.eventOrganizerType === 'number' &&\r\n    typeof obj.organizerId === 'number'\r\n  )\r\n}\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"info-header\"},[_c('div',{staticClass:\"cap-label\"},[_c('div',{staticClass:\"cap-info-label\"},[_vm._v(_vm._s(_vm.title)+\" \"),_c('span',{attrs:{\"id\":'caption-' + _vm.tipId}},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":['faR',  'circle-question'],\"aria-hidden\":\"true\"},on:{\"click\":_vm.toggleTip}}),(_vm.isTipVisible)?_c('FastInfoTip',{attrs:{\"tipId\":_vm.tipId,\"content\":_vm.tipContent,\"linkUrl\":_vm.linkUrl,\"linkText\":_vm.linkText,\"infoPosition\":_vm.infoPosition},on:{\"toggleTip\":function($event){return _vm.toggleTip($event)}}}):_vm._e()],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"info-box-container\",style:(_vm.infoPositionStyles)},[_c('div',{staticClass:\"info-box-close-row\"},[_c('button',{staticClass:\"info-box-close\",attrs:{\"role\":\"button\"},on:{\"click\":function($event){return _vm.emitClickEvent()}}})]),_c('div',{ref:\"helpBox\",staticClass:\"info-box\",attrs:{\"id\":'info-box-' + _vm.tipId}},[_c('div',{staticClass:\"info-box-content\",attrs:{\"id\":'info-box-' + _vm.tipId + '-content'}},[_c('span',{attrs:{\"tabindex\":\"0\"},domProps:{\"innerHTML\":_vm._s(_vm.content)}})])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"info-box-container\"  :style=\"infoPositionStyles\">\r\n    <div class=\"info-box-close-row\">\r\n      <button class=\"info-box-close\" role=\"button\" @click=\"emitClickEvent()\"></button>\r\n    </div>\r\n    <div\r\n      :id=\"'info-box-' + tipId\"\r\n      class=\"info-box\"\r\n      ref=\"helpBox\"\r\n    >\r\n      <div\r\n        class=\"info-box-content\"\r\n        :id=\"'info-box-' + tipId + '-content'\"\r\n      >\r\n        <span\r\n          tabindex=\"0\"\r\n          v-html=\"content\"\r\n        ></span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport Vue from 'vue'\r\n\r\nexport default Vue.extend({\r\n  name: 'FastInfoTip',\r\n  props: {\r\n    tipId: {\r\n      type: String,\r\n      required: true\r\n    },\r\n    content: {\r\n      type: String,\r\n      required: true\r\n    },\r\n    linkUrl: {\r\n      type: String,\r\n      default: ''\r\n    },\r\n    linkText: {\r\n      type: String,\r\n      default: ''\r\n    },\r\n    infoPosition: {\r\n      type: Object as () => { top: string; left: string },\r\n      default: () => {\r\n        return {\r\n          top: '0px',\r\n          left: '0px'\r\n        }\r\n      }\r\n    } \r\n  },\r\n  data() {\r\n    return {\r\n      \r\n    }\r\n  },\r\n  computed: {\r\n    infoPositionStyles(): { top: string; left: string } {\r\n      const top = parseInt(this.infoPosition.top.replace('px', ''))\r\n\r\n      return {\r\n        top: (top - 118) + 'px',\r\n        left: this.infoPosition.left\r\n      } as { top: string; left: string }\r\n    }\r\n  }\r\n  ,\r\n  created() {\r\n    this.showHelpInfo()\r\n  },\r\n  methods: {\r\n    emitClickEvent() {\r\n      this.$emit('toggleTip')\r\n    },\r\n    showHelpInfo() {\r\n      document.addEventListener('click', this.handleOutsideClick)\r\n      window.addEventListener('scroll', this.handleScroll)\r\n      document.addEventListener('keydown', this.handleKeyDown)\r\n    },\r\n    hideHelpInfo() {\r\n      document.removeEventListener('click', this.handleOutsideClick)\r\n      window.removeEventListener('scroll', this.handleScroll)\r\n      document.removeEventListener('keydown', this.handleKeyDown)\r\n      this.$emit('toggleTip')\r\n    },\r\n    handleOutsideClick(event) {\r\n      const helpBox = this.$refs.helpBox as HTMLElement\r\n      const specificElement = event.target.closest('#caption-' + this.tipId)\r\n      // Check if clicked inside help box or on the specific ID\r\n      if (!helpBox.contains(event.target) && !specificElement) {\r\n        this.hideHelpInfo()\r\n      }\r\n\r\n    },\r\n    handleScroll() {\r\n      // Close the help box on scroll\r\n      this.hideHelpInfo()\r\n    },\r\n    handleKeyDown(event) {\r\n      // Close the help box on escape key press\r\n      if (event.key === 'Escape') {\r\n        this.hideHelpInfo()\r\n      }\r\n    } \r\n  },\r\n  beforeDestroy() {\r\n    document.removeEventListener('click', this.handleOutsideClick)\r\n    window.removeEventListener('scroll', this.handleScroll)\r\n    document.removeEventListener('keydown', this.handleKeyDown)\r\n\r\n  }\r\n\r\n})\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n.info-box-container {\r\n  position: Absolute; /* Absolutely positioned for overlapping */\r\n  margin: 20px;\r\n  margin-left: 14px;\r\n  top: 50%; /* Center vertically */\r\n  left: 0%; /* Center horizontally */\r\n  transform: translate(-0%, -50%); /* Offset by 50% for perfect centering */\r\n  max-width: 90vw; /* Box width should not exceed 90% of the viewport width */\r\n  width: auto; /* Box width should adjust based on content */\r\n  background-color: #fff0;\r\n  z-index: 1000; /* Ensure it is above other content */\r\n}\r\n\r\n\r\n.info-box {\r\n  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); /* Optional shadow for visibility */\r\n  overflow: hidden; /* Hide anything that overflows */\r\n  box-sizing: border-box;\r\n  padding: 11px 1px; /* Reduce left and right padding, keep top/bottom padding as is */\r\n  margin: -11px 11px;\r\n  background-color: $brand-white;\r\n  border-color: #ccc;\r\n  box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2),\r\n    0px 3px 4px 0px rgba(0, 0, 0, 0.14),\r\n    0px 1px 8px 0px rgba(0, 0, 0, 0.12);\r\n}\r\n\r\n.info-box-content {\r\n  width: 100%;\r\n  padding: 20px;\r\n  height: auto; /* Automatically adjusts to content */\r\n  display: inline-block; /* Allows the content to adjust based on text length */\r\n}\r\n\r\n.info-box span {\r\n  display: block;\r\n  word-wrap: break-word; /* Wrap long words within the box */\r\n  overflow-wrap: break-word;\r\n  white-space: normal; /* Allow wrapping of the text */\r\n}\r\n\r\n.info-box-default {\r\n  border: 1px solid #f1d031;\r\n  background-color: #ffffa3;\r\n  color: #555;\r\n  background-color: transparent !important;\r\n  border: 0px !important;\r\n  width: 8px;\r\n  height: 8px;\r\n  line-height: 8px;\r\n  left: 50%;\r\n  margin-left: -4px;\r\n  top: -8px;\r\n}\r\n\r\n.info-box-close-row {\r\n  display: flex;\r\n  justify-content: right;\r\n}\r\n\r\n.info-box-close::before {\r\n  display: inline-block;\r\n  text-indent: 0;\r\n  height: 10px;\r\n  width: 10px;\r\n  content: \"✕\";\r\n  \r\n  &:hover {\r\n      background: $brand-red;\r\n  }\r\n}\r\n\r\n.info-box-close {\r\n  z-index: 1001;\r\n  cursor: pointer;\r\n  outline: 0;\r\n  background: $brand-back;\r\n  color: $brand-white;\r\n  height: 22px;\r\n  width: 22px;\r\n  border-radius: 50%;\r\n  border: none;\r\n\r\n  &:hover {\r\n      background: $brand-red;\r\n  }\r\n\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprInfo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprInfo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SprInfo.vue?vue&type=template&id=6d35c453&scoped=true\"\nimport script from \"./SprInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./SprInfo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SprInfo.vue?vue&type=style&index=0&id=6d35c453&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"6d35c453\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"info-header\">\r\n    <div class=\"cap-label\">\r\n      <div class=\"cap-info-label\">{{ title }}\r\n\r\n        <span :id=\"'caption-' + tipId\">\r\n          <font-awesome-icon :icon=\"['faR',  'circle-question']\" class=\"brand-red\" aria-hidden=\"true\" @click=\"toggleTip\"/>\r\n          <FastInfoTip\r\n            v-if=\"isTipVisible\"\r\n            :tipId=\"tipId\"\r\n            :content=\"tipContent\"\r\n            :linkUrl=\"linkUrl\"\r\n            :linkText=\"linkText\"\r\n            :infoPosition=\"infoPosition\"\r\n            @toggleTip=\"toggleTip($event)\"\r\n          />\r\n        </span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport Vue from 'vue'\r\nimport FastInfoTip from './SprInfo.vue'\r\n\r\nexport default Vue.extend({\r\n  name: 'IconCaption',\r\n  components: { FastInfoTip },\r\n  props: {\r\n    title: {\r\n      type: String,\r\n      required: true\r\n    },\r\n    tipId: {\r\n      type: String,\r\n      required: true\r\n    },\r\n    tipContent: {\r\n      type: String,\r\n      required: true\r\n    },\r\n    linkUrl: {\r\n      type: String,\r\n      default: ''\r\n    },\r\n    linkText: {\r\n      type: String,\r\n      default: ''\r\n    },\r\n    iconAlt: {\r\n      type: String,\r\n      default: ''\r\n    }\r\n  },\r\n  data() {\r\n    return {\r\n      isTipVisible: false,\r\n      infoPosition: {\r\n        top: '0px',\r\n        left: '0px'\r\n      }\r\n    }\r\n  },\r\n  methods: {\r\n    toggleTip(event: PointerEvent) {\r\n      if (event)\r\n      {\r\n        this.infoPosition.top = event.y + 'px'\r\n      }\r\n\r\n      this.isTipVisible = !this.isTipVisible\r\n    }\r\n  },\r\n})\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n\r\n  .info-header {\r\n    flex: 1 0 auto;\r\n    max-width: 100%;\r\n    min-width: 252px;\r\n    margin-right: 20px;\r\n  }\r\n  \r\n  .searchbox {\r\n        flex: 1 0 auto;\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprInfoTip.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprInfoTip.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SprInfoTip.vue?vue&type=template&id=69961698&scoped=true\"\nimport script from \"./SprInfoTip.vue?vue&type=script&lang=ts\"\nexport * from \"./SprInfoTip.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SprInfoTip.vue?vue&type=style&index=0&id=69961698&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"69961698\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"search-section\">\r\n    <div class=\"search-criteria\">\r\n      <div class=\"search-group\">\r\n        <div class=\"search-item\">\r\n          <InfoTip\r\n            :title=\"$t('eventSearch.searchWord')\"\r\n            tipId=\"search-word\"\r\n            :tipContent=\"$t('eventInfo.searchWord')\"\r\n            :linkUrl=\"''\"\r\n            iconAlt=\"Help Icon\"\r\n          />\r\n          <span class=\"form-group\">\r\n            <div :class=\"{ 'spr-searchbox': true, 'spr-roundbox-1': true }\">\r\n              <input v-model=\"searchWord\" class=\"form-control\" tabindex=\"0\" :placeholder=\"$t('eventSearch.searchWordPlaceHolder')\">\r\n            </div>\r\n          </span>\r\n        </div>\r\n        <div class=\"search-item\">\r\n          <InfoTip\r\n            :title=\"$t('eventPage.city')\"\r\n            tipId=\"location-info\"\r\n            :tipContent=\"$t('eventInfo.locationInfo')\"\r\n            :linkUrl=\"''\"\r\n            iconAlt=\"Help Icon\"\r\n          />\r\n          <div class=\"form-group\">\r\n            <div :class=\"{ 'spr-searchbox': true, 'spr-roundbox-1': true }\">\r\n              <input v-model=\"locale\" class=\"form-control\" tabindex=\"0\" :placeholder=\"$t('eventSearch.locationPlaceHolder')\">\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <InfoTip\r\n            :title=\"$t('eventPage.startDate')\"\r\n            tipId=\"start-date-info\"\r\n            :tipContent=\"$t('eventInfo.startDateInfo')\"\r\n            :linkUrl=\"''\"\r\n            iconAlt=\"Help Icon\"\r\n          />\r\n        <datepicker\r\n          :key=\"componentKey\"\r\n          v-model=\"searchStartDate\"\r\n          :initial=\"displayInitialDate\"\r\n          :has-error=\"errors.has('eventPage.startDate')\"\r\n          name=\"searchCriteria.startDate\"\r\n          :required=\"false\"\r\n          :placeholder=\"$t('eventPage.chooseDate')\"\r\n        />\r\n      </div>\r\n      <div class=\"search-item\">\r\n        <InfoTip\r\n            :title=\"$t('eventPage.endDate')\"\r\n            tipId=\"end-date-info\"\r\n            :tipContent=\"$t('eventInfo.endDateInfo')\"\r\n            :linkUrl=\"''\"\r\n            iconAlt=\"Help Icon\"\r\n          />\r\n        <datepicker\r\n          :key=\"componentKey\"\r\n          v-model=\"searchEndDate\"\r\n          :initial=\"displayEndDate\"\r\n          :has-error=\"errors.has('eventPage.endDate')\"\r\n          name=\"searchCriteria.endDate\"\r\n          :required=\"false\"\r\n          :is-nullable=\"true\"\r\n          :placeholder=\"$t('eventPage.chooseDate')\"\r\n          :limit=\"[{type: 'fromto', from: processStartDate, to: null}]\"\r\n        />\r\n      </div>\r\n      <div class=\"search-item advanced-search-select-button\">\r\n        <div class=\"advanced-search-select\" @click=\"toggleAdvancedSearch\">\r\n          <span class=\"advanced-search-select-text\">{{ $t('searchCriteria.advancedSearchTitleEvent') }}</span>\r\n          <font-awesome-icon v-if=\"advancedSearchVisible\" icon=\"chevron-down\" class=\"advanced-search-select-icon\" aria-hidden=\"true\" />\r\n          <font-awesome-icon v-else icon=\"chevron-up\" class=\"advanced-search-select-icon\" aria-hidden=\"true\" />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div v-if=\"advancedSearchVisible\" class=\"extended-advanced-search\">\r\n      <div class=\"search-criteria-title\">\r\n        {{ title }}\r\n      </div>\r\n      <div class=\"search-criteria\">\r\n        <div class=\"search-item\">\r\n          <InfoTip\r\n            :title=\"$t('eventPage.isOnlineFilter')\"\r\n            tipId=\"is-onlinefilter-info\"\r\n            :tipContent=\"$t('eventInfo.onlineActivityInfo')\"\r\n            :linkUrl=\"''\"\r\n            iconAlt=\"Help Icon\"\r\n          />\r\n          <singleselect\r\n            :key=\"componentKey\"\r\n            v-model=\"isOnline\"\r\n            :items=\"isOnlineValues\"\r\n            @change=\"onIsOnlineChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"search-item\">\r\n          <InfoTip\r\n            :title=\"$t('eventPage.eventCategory')\"\r\n            tipId=\"event-category-info\"\r\n            :tipContent=\"$t('eventInfo.activityInfo')\"\r\n            :linkUrl=\"''\"\r\n            iconAlt=\"Help Icon\"\r\n          />\r\n          <singleselect\r\n            :key=\"componentKey\"\r\n            v-model=\"eventCategory\"\r\n            :items=\"categories\"\r\n            @change=\"onCategoriesChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"search-item\">\r\n          <InfoTip\r\n            :title=\"$t('eventPage.eventType')\"\r\n            tipId=\"event-type-info\"\r\n            :tipContent=\"$t('eventInfo.typeInfo')\"\r\n            :linkUrl=\"''\"\r\n            iconAlt=\"Help Icon\"\r\n          />\r\n          <singleselect\r\n            :key=\"componentKey\"\r\n            v-model=\"eventType\"\r\n            :items=\"eventTypes\"\r\n            @change=\"onEventTypesChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"search-item\">\r\n          <InfoTip\r\n            :title=\"$t('eventPage.searchLanguages')\"\r\n            tipId=\"search-languages-info\"\r\n            :tipContent=\"$t('eventInfo.languageInfo')\"\r\n            :linkUrl=\"''\"\r\n            iconAlt=\"Help Icon\"\r\n          />\r\n          <multiselectinput\r\n            :key=\"componentKey\"\r\n            v-model=\"languages\"\r\n            :items=\"eventLanguages\"\r\n            @change=\"onLanguageChanged\"\r\n          />\r\n        </div>\r\n        <div class=\"search-item eventorganizer\">\r\n          <InfoTip\r\n            :title=\"$t('eventPage.eventDistrictSection')\"\r\n            tipId=\"activity-organizer-info\"\r\n            :tipContent=\"$t('eventInfo.activityOrganizerInfo')\"\r\n            :linkUrl=\"''\"\r\n            iconAlt=\"Help Icon\"\r\n          />\r\n          <eventorganizer\r\n            name=\"eventPage.eventDistrictSection\"\r\n            :value=\"eventOrganizer\"\r\n            :required=\"false\"\r\n            :is-valid=\"true\"\r\n            @input=\"onEventOrganizerChanged\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import eventorganizer from '../SPREventOrganizersDropdown.vue'\r\n  import singleselect from '../common/Dropdown/SingleSelectDropdown.vue'\r\n  import datepicker from '../SPRDatepicker.vue'\r\n  import multiselectinput from '../common/Dropdown/MultiSelectDropdown.vue'\r\n  import { isEventOrganizerIdentifier } from '@/types/typevalidators'\r\n  import { VueMultiSelectItem, EventOrganizerIdentifier } from '@/types/custom'\r\n  import cache from '../../mixins/cache.js'\r\n  import enumhelper from '../../mixins/enums.js'\r\n  import inpututils from '../../mixins/inpututils'\r\n  import moment from 'moment'\r\n  import InfoTip from '@/components/common/Information/SprInfoTip.vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n  advancedSearchVisible: boolean,\r\n  disabled: boolean,\r\n  isSearching: boolean,\r\n  searchTimeout: ReturnType<typeof setTimeout> | undefined,\r\n  searchWaitIntervalMs: number,\r\n  eventCategoryData: VueMultiSelectItem | undefined,\r\n  categories: VueMultiSelectItem[],\r\n  languages: VueMultiSelectItem[],\r\n  eventLanguages: VueMultiSelectItem[],\r\n  eventTypeData: VueMultiSelectItem | undefined,\r\n  eventTypes: VueMultiSelectItem[],\r\n  eventOrganizer: EventOrganizerIdentifier,\r\n  searchStartDate: string | null,\r\n  searchEndDate: string | null,\r\n  searchWord: string,\r\n  locale: string,\r\n  isOnlineData: VueMultiSelectItem | undefined,\r\n  isOnlineValues: VueMultiSelectItem[],\r\n  componentKey: number\r\n}\r\n\r\n  export default Vue.extend({\r\n    name: 'EventSearchCriteria',\r\n    components: { multiselectinput, singleselect, eventorganizer, datepicker, InfoTip },\r\n    mixins: [cache, enumhelper, inpututils],\r\n    props: {\r\n      title: {\r\n        type: String,\r\n        default: ''\r\n      },\r\n      isPublic: {\r\n        type: Boolean,\r\n        default: false\r\n      },\r\n      searchValues: {\r\n        type: Object,\r\n        default: () => ({})\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        advancedSearchVisible: false,\r\n        disabled: false,\r\n        isSearching: false as boolean,\r\n        searchTimeout: undefined as unknown as ReturnType<typeof setTimeout>,\r\n        searchWaitIntervalMs: 600 as number,\r\n        eventCategoryData: { id: -1, text: '' } as VueMultiSelectItem | undefined, // initial dummy value to be replaced\r\n        categories: [] as VueMultiSelectItem[],\r\n        languages: [] as VueMultiSelectItem[],\r\n        eventLanguages: [] as VueMultiSelectItem[],\r\n        eventTypeData: { id: -1, text: '' } as VueMultiSelectItem | undefined, // initial dummy value to be replaced\r\n        eventTypes: [] as VueMultiSelectItem[],\r\n        eventOrganizer: {} as EventOrganizerIdentifier,\r\n        searchStartDate: null as string | null,\r\n        searchEndDate: null as string | null,\r\n        searchWord: '' as string,\r\n        locale: '' as string,\r\n        isOnlineData: { id: -2, text: '' } as VueMultiSelectItem | undefined, // initial dummy value to be replaced\r\n        isOnlineValues: [{ id: 0, text: 'All' }] as VueMultiSelectItem[],\r\n        componentKey: 0 // forces reactive update of datepicker when language changes\r\n\r\n      }\r\n    },\r\n    computed: {\r\n      displayEndDate (): string | null {\r\n        return null\r\n      },\r\n      displayInitialDate (): string | null {\r\n        return moment().format('DD.MM.YYYY')\r\n      },\r\n      processStartDate (): string | null {\r\n        return this.searchStartDate ? moment(this.searchStartDate, 'DD.MM.YYYY').format('YYYY-MM-DD') : null\r\n      },\r\n      isOnline: {\r\n        get (): VueMultiSelectItem | undefined {\r\n          return this.isOnlineData\r\n        },\r\n        set (newValue: VueMultiSelectItem | undefined) {\r\n          this.isOnlineData = newValue\r\n        }\r\n      },\r\n      eventCategory: {\r\n        get (): VueMultiSelectItem | undefined {\r\n          return this.eventCategoryData\r\n        },\r\n        set (newValue: VueMultiSelectItem | undefined) {\r\n          this.eventCategoryData = newValue\r\n        }\r\n      },\r\n      eventType: {\r\n        get (): VueMultiSelectItem | undefined {\r\n          return this.eventTypeData\r\n        },\r\n        set (newValue: VueMultiSelectItem | undefined) {\r\n          this.eventTypeData = newValue\r\n        }\r\n      }\r\n    },\r\n    watch: {\r\n      searchStartDate: {\r\n        handler (newVal) {\r\n          this.modifySearchCriteria('startDate', newVal)\r\n        }\r\n      },\r\n      searchEndDate: {\r\n        handler (newVal) {\r\n          this.modifySearchCriteria('endDate', newVal)\r\n        }\r\n      },\r\n      searchValues: {\r\n        handler (newVal) {\r\n          if (!newVal) return\r\n\r\n          if (newVal.searchWord) {\r\n            this.searchWord = newVal.searchWord\r\n          }\r\n\r\n          if (newVal.locale) {\r\n            this.locale = newVal.locale\r\n          }\r\n\r\n          if (newVal.eventCategory !== undefined) {\r\n            this.eventCategoryData = this.categories.find((x: any) => x.id === newVal.eventCategory)\r\n          } else { this.eventCategoryData = { id: 0, text: this.$t('boolean.notDefined') as string } }\r\n\r\n          if (newVal.eventType !== undefined) {\r\n            this.eventType = this.eventTypes.find((x: any) => x.id === newVal.eventType)\r\n          } else { this.eventTypeData = { id: 0, text: this.$t('boolean.notDefined') as string } }\r\n\r\n          if (newVal.isOnline !== undefined) {\r\n            this.isOnlineData = this.isOnlineValues.find((x: any) => x.id === newVal.isOnline)\r\n          } else {\r\n            this.isOnlineData = { id: -1, text: this.$t('eventPage.isOnlineAll') as string }\r\n          }\r\n\r\n          if (newVal.languages !== undefined) {\r\n            this.languages = this.eventLanguages.filter(l => newVal.languages.includes(l.id))\r\n          }\r\n\r\n          if (newVal.languages !== undefined) {\r\n            this.languages = this.eventLanguages.filter(l => newVal.languages.includes(l.id))\r\n          }\r\n\r\n          if (isEventOrganizerIdentifier(newVal.eventOrganizer)) {\r\n            this.eventOrganizer = newVal.eventOrganizer\r\n          }\r\n        },\r\n        deep: true\r\n      },\r\n      searchWord (value) {\r\n        this.delayedModify('searchWord', value)\r\n      },\r\n      locale (value) {\r\n        this.delayedModify('locale', value)\r\n      }\r\n    },\r\n    mounted () {\r\n      this.searchStartDate = moment().format('DD.MM.YYYY')\r\n      const lang = this.$store.state.customerLanguages\r\n      this.eventLanguages = this.$store.state.groupLanguages.filter((l) => l.id !== 0).map((v) => {\r\n        return { id: v.id, text: this.$t('actionLanguage.' + lang.find((l) => l.displayName.toUpperCase() === v.text.toUpperCase()).isoCode) }\r\n      })\r\n\r\n      this.isOnlineValues = [{ id: -1, text: this.$t('eventPage.isOnlineAll') as string }, { id: 0, text: this.$t('eventPage.isOnlineFalse') as string }, { id: 1, text: this.$t('eventPage.isOnlineTrue') as string }]\r\n\r\n      this.categories = [{ id: 0, text: this.$t('boolean.notDefined') as string }].concat(this.$store.state.involvedEventCategories.map((v) => { return { id: v.id, text: this.$t('involvedEventCategories.' + v.text) } }))\r\n      this.eventTypes = [{ id: 0, text: this.$t('boolean.notDefined') as string }].concat(this.$store.state.eventTypes.map((v) => { return { id: v.id, text: this.$t('eventTypes.' + v.text) } }))\r\n      this.$store.subscribe((mutation, state) => {\r\n        if (mutation.type === 'setLanguage') {\r\n          this.componentKey += 1\r\n        }\r\n      })\r\n    },\r\n    methods: {\r\n      toggleAdvancedSearch (): void {\r\n        this.advancedSearchVisible = !this.advancedSearchVisible\r\n      },\r\n      onLanguageChanged (value) {\r\n        if (!value) return\r\n        // Convert each item.id to enum value (int)\r\n        const enumValues = value.map(v => v.id)\r\n        this.modifySearchCriteria('languages', enumValues)\r\n      },\r\n      onCategoriesChanged (value) {\r\n        this.modifySearchCriteria('eventCategory', value.id === 0 ? undefined : value.id)\r\n      },\r\n      onIsOnlineChanged (value) {\r\n        this.modifySearchCriteria('isOnline', value.id === -1 ? undefined : value.id)\r\n      },\r\n      onEventOrganizerChanged (value: EventOrganizerIdentifier): void {\r\n        const searchCriteria = Object.assign({}, this.searchValues, { eventOrganizer: Object.freeze(value) })\r\n        this.$emit('change', searchCriteria)\r\n      },\r\n      onEventTypesChanged (value): void {\r\n        this.modifySearchCriteria('eventType', value.id === 0 ? undefined : value.id)\r\n      },\r\n      delayedModify (criterion, value) {\r\n        clearTimeout(this.searchTimeout as ReturnType<typeof setTimeout>)\r\n        this.searchTimeout = setTimeout(() => {\r\n          this.modifySearchCriteria(criterion, value)\r\n        }, this.searchWaitIntervalMs)\r\n      },\r\n      modifySearchCriteria (criterion, value) {\r\n        const searchCriteria = Object.assign({}, this.searchValues, { [criterion]: value })\r\n        this.$emit('change', searchCriteria)\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .cap-info-label {\r\n    display: inline-flex;\r\n    align-items: center; /* Optional: aligns items vertically if needed */\r\n    gap: 8px;\r\n  }\r\n\r\n  .spr-searchbox {\r\n    background-color:$brand-white;\r\n    position: relative;\r\n    border: solid 1px $brand-grey3;\r\n\r\n    input\r\n    {\r\n      margin-right: 30px;\r\n      border-radius: 2rem;\r\n      &:focus-visible {\r\n        color: #495057;\r\n        border: solid 1px $brand-grey3;\r\n        outline: 0;\r\n        box-shadow: 0 0 0 0.2rem $brand-grey3;\r\n        transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n      }\r\n\r\n    }\r\n    svg {\r\n      position: absolute;\r\n      right: 15px;\r\n      top: 10px;\r\n    }\r\n   }\r\n   .spr-datepicker {\r\n    margin-bottom: 15px;\r\n\r\n    .datepickbox {\r\n      position: relative;\r\n      input {\r\n        position: relative;\r\n        z-index: 1;\r\n        box-shadow: none !important;\r\n        border: solid 2px $brand-grey3 !important;\r\n        background: none !important;\r\n        width: 100%;\r\n      }\r\n    }\r\n  }\r\n  .form-group {\r\n    .spr-roundbox-1 {\r\n      border: none;\r\n      select.form-control {\r\n        -webkit-appearance: none;\r\n        -moz-appearance: none;\r\n        -o-appearance: none;\r\n        appearance: none;\r\n        background-image: url('../../assets/img/caret.png');\r\n        background-position: 95% center;\r\n        background-repeat: no-repeat;\r\n        outline: none;\r\n        border: solid 1px $brand-grey3;\r\n        &:focus {\r\n          box-shadow: 0 0 0 0.2rem $brand-grey3;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n .search-section {\r\n    display: flex;\r\n    flex: 1 0 auto;\r\n    flex-direction: column;\r\n  }\r\n  .search {\r\n    display: flex;\r\n    flex: 1 0 auto;\r\n    flex-direction: row;\r\n  }\r\n\r\n  .search-item {\r\n    flex: 1 0 auto;\r\n    max-width: 100%;\r\n    min-width: 252px;\r\n    margin-right: 20px;\r\n  }\r\n\r\n  .searchbox {\r\n        flex: 1 0 auto;\r\n  }\r\n\r\n  .advanced-search {\r\n    display: flex;\r\n    flex: 1 0 auto;\r\n    flex-direction: column;\r\n    justify-content: space-between;\r\n    max-width: 100%;\r\n    flex-wrap: wrap;\r\n  }\r\n\r\n  .extended-advanced-search{\r\n    display: flex;\r\n    flex: 1 0 auto;\r\n    flex-direction: column;\r\n    justify-content: space-between;\r\n    max-width: 100%;\r\n    flex-wrap: wrap;\r\n  }\r\n\r\n  .search-group {\r\n    display: flex;\r\n    flex: 1 0 auto;\r\n    flex-direction: row;\r\n    justify-content: space-between;\r\n    max-width: 100%;\r\n    flex-wrap: wrap;\r\n  }\r\n\r\n  .advanced-search-select-button {\r\n    flex: 1 0 auto;\r\n    max-width: 100%;\r\n    min-width: 252px;\r\n    align-content: space-evenly;\r\n    text-align: center;\r\n    :hover {\r\n      color: $brand-white;\r\n      background-color: $brand-red;\r\n    }\r\n  }\r\n\r\n  .advanced-search-select{\r\n    flex: 0 0 auto;\r\n    align-self: center;\r\n    align-content: center;\r\n    border: solid 2px $brand-grey3;\r\n    border-radius: 2rem;\r\n    cursor: pointer;\r\n    color: $brand-red;\r\n    background-color: $brand-white;\r\n    height: 40px;\r\n    margin-left: unset;\r\n    margin-top: 27px;\r\n    margin-bottom: 15px;\r\n    max-width: 100%;\r\n  }\r\n\r\n  .advanced-search-select-text{\r\n    user-select: none;\r\n  }\r\n\r\n  .advanced-search-select-icon{\r\n    margin-left: 10px;\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventSearchCriteria.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventSearchCriteria.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventSearchCriteria.vue?vue&type=template&id=526ca8c0&scoped=true\"\nimport script from \"./EventSearchCriteria.vue?vue&type=script&lang=ts\"\nexport * from \"./EventSearchCriteria.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventSearchCriteria.vue?vue&type=style&index=0&id=526ca8c0&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"526ca8c0\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"eventlist col-12\">\r\n    <backbar :title=\"$t('eventPage.eventListTitle')\" />\r\n    <div class=\"container\">\r\n      <div class=\"event-search\">\r\n        <div class=\"col-12\">\r\n          <div class=\"search-section\">\r\n            <div class=\"advanced-search\">\r\n              <eventsearchcriteria :is-public=\"isPublic\" :search-values=\"searchCriteria\" @change=\"onChangedSearchCriteria\" />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"row event-list\">\r\n        <div v-show=\"isLoading\" class=\"col-12 loading text-center\">\r\n          <div class=\"spinner\">\r\n            <loading />\r\n          </div>\r\n        </div>\r\n        <div v-for=\"evt in sprEvents\" v-show=\"!isLoading\" :key=\"evt.id\" class=\"col-sm-12 col-md-6 col-lg-4\">\r\n          <eventtile :sprevent=\"evt\" />\r\n        </div>\r\n      </div>\r\n      <div v-show=\"showPager\" class=\"row pager\">\r\n        <div class=\"col-12\">\r\n          <pager\r\n            :skip=\"skip\"\r\n            :take=\"take\"\r\n            :total=\"total\"\r\n            :max-display=\"5\"\r\n            @pagerchanged=\"onPagerChanged\"\r\n            @pagerprevious=\"onPagerPrevious\"\r\n            @pagernext=\"onPagerNext\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"!hasEvents && !isLoading\" class=\"row no-events text-center\">\r\n        <div class=\"col-12\">\r\n          <span>{{ $t('eventPage.noEventsFound') }}</span>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import backbar from '../BackBar.vue'\r\n  import * as _ from 'lodash'\r\n  import pager from '../SPRPager.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import eventtile from './EventTile.vue'\r\n  import eventsearchcriteria from './EventSearchCriteria.vue'\r\n  import { AdvancedEventSearchCriteria, IsOnlineEventFilterType, EventTypes, EventCategory, EventOrganizerCriteria, Languages } from '@/types'\r\n  import { EventOrganizerIdentifier } from '@/types/custom'\r\n  import { isEventOrganizerIdentifier } from '@/types/typevalidators'\r\n  import { toUtcWithoutTime, parseDateFromString } from '@/helpers/datehelper'\r\n\r\n  export interface TemplateComponentData {\r\n    sprEvents: any[],\r\n    searchValues: Record<string, any>,\r\n    searchCriteria: AdvancedEventSearchCriteria,\r\n    locale: string,\r\n    isPublic: boolean,\r\n    isLoading: boolean,\r\n    isSearching: boolean,\r\n    searchTimer: ReturnType<typeof setTimeout> | null,\r\n    searchWaitIntervalMs: number,\r\n    total: number,\r\n    skip: number,\r\n    take: number\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'EventList',\r\n    components: {\r\n      backbar,\r\n      eventsearchcriteria,\r\n      eventtile,\r\n      pager,\r\n      loading\r\n    },\r\n    data () {\r\n      return {\r\n        sprEvents: [],\r\n        searchValues: {},\r\n        searchCriteria: {\r\n          eventCategory: undefined as EventCategory | undefined,\r\n          eventOrganizer: {} as EventOrganizerIdentifier,\r\n          eventType: undefined as EventTypes | undefined,\r\n          isOnline: undefined as IsOnlineEventFilterType | undefined,\r\n          isPublic: undefined as boolean | undefined,\r\n          languages: [] as Languages[],\r\n          locale: '' as string,\r\n          searchWord: '' as string,\r\n          searchWordDelimiters: [] as string[],\r\n          startDate: null as Date | null,\r\n          endDate: null as Date | null,\r\n          skip: 0 as number,\r\n          take: 12 as number\r\n        } as AdvancedEventSearchCriteria,\r\n        locale: '',\r\n        isPublic: false,\r\n        isLoading: false,\r\n        isSearching: false,\r\n        searchTimer: null,\r\n        searchWaitIntervalMs: 600,\r\n        total: 0,\r\n        skip: 0,\r\n        take: 12\r\n      }\r\n    },\r\n    computed: {\r\n      hasEvents (): boolean {\r\n        return this.sprEvents.length > 0\r\n      },\r\n      showPager (): boolean {\r\n        return this.sprEvents.length > 0 && this.total > 0 && this.total > this.take\r\n      }\r\n    },\r\n    mounted () {\r\n      this.isLoading = true\r\n      this.isPublic = this.$router.currentRoute.path.toLowerCase().indexOf('publicevents') > -1\r\n\r\n      this.handleQueryString()\r\n    },\r\n    methods: {\r\n      handleQueryString () {\r\n        const searchParams = new URLSearchParams(window.location.search)\r\n\r\n        if (searchParams.has('locale')) {\r\n          this.$set(this.searchCriteria, 'locale', searchParams.get('locale') || '')\r\n        }\r\n\r\n        if (searchParams.has('searchWord')) {\r\n          this.$set(this.searchCriteria, 'searchWord', searchParams.get('searchWord') || '')\r\n        }\r\n\r\n        this.$set(this.searchCriteria, 'eventCategory', undefined)\r\n        if (searchParams.has('eventCategory')) {\r\n          const eventCategoryNumber = Number(searchParams.get('eventCategory'))\r\n          if (!isNaN(eventCategoryNumber)) {\r\n            this.$set(this.searchCriteria, 'eventCategory', eventCategoryNumber)\r\n          }\r\n        }\r\n\r\n        this.$set(this.searchCriteria, 'eventType', undefined)\r\n        if (searchParams.has('eventType')) {\r\n          const eventTypeNumber = Number(searchParams.get('eventType'))\r\n          if (!isNaN(eventTypeNumber)) {\r\n            this.$set(this.searchCriteria, 'eventType', eventTypeNumber)\r\n          }\r\n        }\r\n\r\n        this.$set(this.searchCriteria, 'isOnline', undefined)\r\n        if (searchParams.has('isOnline')) {\r\n          const isOnlineFilterTypeNumber = JSON.parse(searchParams.get('isOnline') || '')\r\n          if (typeof isOnlineFilterTypeNumber === 'boolean') {\r\n            this.$set(this.searchCriteria, 'isOnline', isOnlineFilterTypeNumber ? 1 : 0)\r\n          }\r\n        }\r\n\r\n        this.$set(this.searchCriteria, 'languages', [])\r\n        if (searchParams.has('languages')) {\r\n          const selectedLanguages = searchParams.get('languages')?.split(',').map(l => l.trim())\r\n          if (selectedLanguages !== null && selectedLanguages !== undefined && selectedLanguages.length > 0 && selectedLanguages[0] !== '') {\r\n            this.$set(this.searchCriteria, 'languages', selectedLanguages.map(l => Number(l)))\r\n          }\r\n        }\r\n\r\n        this.$set(this.searchCriteria, 'eventOrganizer', {})\r\n        if (searchParams.has('eventOrganizerType') && searchParams.has('organizerId')) {\r\n          const eventOrganizerType = Number(searchParams.get('eventOrganizerType'))\r\n          const organizerId = Number(searchParams.get('organizerId'))\r\n          if (!isNaN(eventOrganizerType) && !isNaN(organizerId)) {\r\n            this.$set(this.searchCriteria, 'eventOrganizer', { eventOrganizerType: eventOrganizerType, organizerId: organizerId })\r\n          }\r\n        }\r\n        this.$set(this.searchCriteria, 'skip', 0)\r\n        if (searchParams.has('skip')) {\r\n          const skip = JSON.parse(searchParams.get('skip') || '')\r\n          if (typeof skip === 'number') {\r\n            this.$set(this.searchCriteria, 'skip', skip)\r\n            this.skip = skip\r\n          }\r\n        }\r\n\r\n        this.$set(this.searchCriteria, 'take', 12)\r\n        if (searchParams.has('take')) {\r\n          const take = JSON.parse(searchParams.get('take') || '')\r\n          if (typeof take === 'number') {\r\n            this.$set(this.searchCriteria, 'take', take)\r\n            this.take = take\r\n          }\r\n        }\r\n      },\r\n      updateQueryString () {\r\n        const searchParams = new URLSearchParams()\r\n\r\n        // Helper function to determine if a value should be included in the query string\r\n        const shouldIncludeValue = (prop, value) => {\r\n          if (value === null || value === undefined || value === '') {\r\n            return false\r\n          }\r\n\r\n          if (Array.isArray(value) && value.length === 0) {\r\n            return false\r\n          }\r\n\r\n          if (prop === 'eventOrganizer' && !isEventOrganizerIdentifier(value)) {\r\n            return false\r\n          }\r\n\r\n          return true\r\n        }\r\n\r\n        // Iterate over each property of the searchCriteria object\r\n        for (const prop in this.searchCriteria) {\r\n          if (Object.prototype.hasOwnProperty.call(this.searchCriteria, prop)) {\r\n            const value = this.searchCriteria[prop]\r\n            if (shouldIncludeValue(prop, value)) {\r\n              if (isEventOrganizerIdentifier(value)) {\r\n                searchParams.set('eventOrganizerType', value.eventOrganizerType.toString())\r\n                searchParams.set('organizerId', value.organizerId.toString())\r\n              } else if (Array.isArray(value)) {\r\n                searchParams.set(prop, value.join(','))\r\n              } else if (prop.toLowerCase() === 'isOnline'.toLowerCase()) {\r\n                if (value !== undefined) {\r\n                  searchParams.set(prop, value === 1 ? 'true' : 'false')\r\n                }\r\n              } else {\r\n                searchParams.set(prop, String(value))\r\n              }\r\n            }\r\n          }\r\n        }\r\n        const query = searchParams.toString()\r\n\r\n        // Replace the current URL with the updated query string\r\n        const newUrl = `${window.location.pathname}?${query}`\r\n        window.history.replaceState(null, '', newUrl)\r\n      },\r\n      onChangedSearchCriteria (searchCriteria) {\r\n        // Check if searchCriteria contains a date field and if it's a string\r\n        if (searchCriteria.startDate && typeof searchCriteria.startDate === 'string') {\r\n          // Convert the date string back to a Date object\r\n          searchCriteria.startDate = parseDateFromString(searchCriteria.startDate)\r\n        }\r\n        // Check if searchCriteria contains a date field and if it's a string\r\n        if (searchCriteria.endDate && typeof searchCriteria.endDate === 'string') {\r\n          searchCriteria.endDate = parseDateFromString(searchCriteria.endDate)\r\n        }\r\n\r\n        if (JSON.stringify(this.searchCriteria) !== JSON.stringify(searchCriteria)) {\r\n          this.searchCriteria = { ...this.searchCriteria, ...searchCriteria }\r\n          this.skip = 0\r\n          this.searchCriteria.skip = 0\r\n          this.updateQueryString()\r\n          this.getEvents()\r\n        }\r\n      },\r\n      getEvents () {\r\n        this.isLoading = true\r\n        let url = ''\r\n        if (this.isPublic) {\r\n          url = this.$store.state.apiBases.eventservice + this.$store.state.apiEndpoints.eventsbycriteriapublic[0]\r\n        } else {\r\n          url = this.$store.state.apiBases.eventservice + this.$store.state.apiEndpoints.eventsbycriteria[0]\r\n        }\r\n        this.searchCriteria.startDate = toUtcWithoutTime(this.searchCriteria.startDate)\r\n        this.searchCriteria.endDate = toUtcWithoutTime(this.searchCriteria.endDate)\r\n        const self = this\r\n        this.$http.post(url, this.searchCriteria).then(response => {\r\n          self.sprEvents = response.data.items\r\n          self.total = response.data.total\r\n          self.isLoading = false\r\n        }, response => {\r\n          console.log('Error loading', response)\r\n        })\r\n      },\r\n      onPageSizeChanged (pageSize) {\r\n        this.take = pageSize\r\n        this.updatePage()\r\n      },\r\n      onPagerChanged (value) {\r\n        this.skip = value.skip\r\n        this.updatePage()\r\n      },\r\n      onPagerPrevious () {\r\n        this.skip -= this.take\r\n        if (this.skip < 0) this.skip = 0\r\n        this.updatePage()\r\n      },\r\n      onPagerNext () {\r\n        if (this.skip + this.take > this.total) return\r\n        this.skip += this.take\r\n        this.updatePage()\r\n      },\r\n      updatePage () {\r\n        this.searchCriteria.take = this.take\r\n        this.searchCriteria.skip = this.skip\r\n        this.updateQueryString()\r\n        this.getEvents()\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .eventlist {\r\n\r\n    .event-search {\r\n      display: flex;\r\n      flex-direction: column;\r\n      width: 100%;\r\n      max-width: 1140px;\r\n      padding-right: 15px;\r\n      padding-left: 15px;\r\n      margin-top:30px;\r\n      margin-right: auto;\r\n      margin-bottom:10px;\r\n      margin-left: auto;\r\n\r\n      label {\r\n        color:$brand-red;\r\n        padding:0 20px;\r\n      }\r\n\r\n      .spr-searchbox {\r\n        &.spr-roundbox-1 {\r\n          border: none;\r\n          input.form-control {\r\n            border: solid 2px $brand-grey3;\r\n            &:focus {\r\n              box-shadow: 0 0 0 0.2rem $brand-grey3;\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      .spr-simple-dropdown {\r\n        .form-group {\r\n          .spr-roundbox-1 {\r\n            border: none;\r\n            select.form-control {\r\n              -webkit-appearance: none;\r\n              -moz-appearance: none;\r\n              -o-appearance: none;\r\n              appearance: none;\r\n              background-image: url('../../assets/img/caret.png');\r\n              background-position: 95% center;\r\n              background-repeat: no-repeat;\r\n              outline: none;\r\n              border: solid 2px $brand-grey3;\r\n              &:focus {\r\n                box-shadow: 0 0 0 0.2rem $brand-grey3;\r\n              }\r\n            }\r\n          }\r\n        }\r\n\r\n        padding-bottom: 0 !important;\r\n      }\r\n\r\n      .event-organizers-dropdown {\r\n        .simpletext {\r\n          input {\r\n            border: solid 2px $brand-grey5;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    .no-events {\r\n      margin-top:20px;\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .spinner {\r\n      margin: auto;\r\n      color: $brand-red;\r\n    }\r\n  }\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventList.vue?vue&type=template&id=1bcc082c&scoped=true\"\nimport script from \"./EventList.vue?vue&type=script&lang=ts\"\nexport * from \"./EventList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventList.vue?vue&type=style&index=0&id=1bcc082c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1bcc082c\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"eventleavepage col-12\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},[(_vm.eventLeaveSuccess)?_c('h3',[_vm._v(\" \"+_vm._s(_vm.$t('eventPage.leaveEventSuccessTitle'))+\" \")]):_vm._e(),(!_vm.eventLeaveSuccess)?_c('h3',[_vm._v(\" \"+_vm._s(_vm.$t('eventPage.leaveEventFailTitle'))+\" \")]):_vm._e()])]),_c('div',{staticClass:\"row\"},[(_vm.eventLeaveSuccess)?_c('div',{staticClass:\"col-12 text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('eventPage.leaveEventSuccess'))+\" \")]):_vm._e(),(!_vm.eventLeaveSuccess)?_c('div',{staticClass:\"col-12 text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('eventPage.leaveEventFail'))+\" \")]):_vm._e()]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center cta\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('eventPage.viewEvents'),\"click-event\":\"viewEvents\"},on:{\"viewEvents\":_vm.onViewEvents}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"eventleavepage col-12\">\r\n    <div class=\"container\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-center\">\r\n          <h3 v-if=\"eventLeaveSuccess\">\r\n            {{ $t('eventPage.leaveEventSuccessTitle') }}\r\n          </h3>\r\n          <h3 v-if=\"!eventLeaveSuccess\">\r\n            {{ $t('eventPage.leaveEventFailTitle') }}\r\n          </h3>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div v-if=\"eventLeaveSuccess\" class=\"col-12 text-center\">\r\n          {{ $t('eventPage.leaveEventSuccess') }}\r\n        </div>\r\n        <div v-if=\"!eventLeaveSuccess\" class=\"col-12 text-center\">\r\n          {{ $t('eventPage.leaveEventFail') }}\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12 text-center cta\">\r\n          <sprbutton type=\"primary\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('eventPage.viewEvents')\"\r\n                     class=\"spr-redborder button-width\"\r\n                     click-event=\"viewEvents\"\r\n                     @viewEvents=\"onViewEvents\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import sprbutton from '../SPRButton.vue'\r\n  export default {\r\n    name: 'Eventleavepage',\r\n    components: {\r\n      sprbutton\r\n    },\r\n    props: {\r\n      cancellationToken: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data () {\r\n      return {\r\n        eventLeaveSuccess: false\r\n      }\r\n    },\r\n    created () {\r\n      if (this.cancellationToken.length === 0) {\r\n        this.eventLeaveSuccess = false\r\n        return\r\n      }\r\n\r\n      var leaveurl = `${this.$store.state.apiBases.eventservice + this.$store.state.apiEndpoints.eventleavepublic[0]}`.replace('{cancellationToken}', this.cancellationToken)\r\n      return this.$http.get(leaveurl).then(resp => {\r\n        var result = Number(resp.body)\r\n\r\n        switch (result) {\r\n        case 1: // unsubscription successful\r\n          this.eventLeaveSuccess = true\r\n          break\r\n\r\n        case 0: // already unsubscribed\r\n          this.eventLeaveSuccess = true\r\n          break\r\n\r\n        case -1: // could not find the cancellation token\r\n          this.eventLeaveSuccess = false\r\n          break\r\n        }\r\n      })\r\n    },\r\n    methods: {\r\n      onViewEvents () {\r\n        this.$router.replace('/publicevents')\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .eventleavepage {\r\n    margin-top:50px;\r\n\r\n    .cta {\r\n      margin-top: 30px;\r\n      margin-bottom: 30px;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventLeavePage.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EventLeavePage.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./EventLeavePage.vue?vue&type=template&id=6ba10dad\"\nimport script from \"./EventLeavePage.vue?vue&type=script&lang=js\"\nexport * from \"./EventLeavePage.vue?vue&type=script&lang=js\"\nimport style0 from \"./EventLeavePage.vue?vue&type=style&index=0&id=6ba10dad&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"myorganisedevents col-12\"},[_c('backbar',{attrs:{\"title\":_vm.$t('eventPage.myOrgainsedEvents')}}),_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row event-list\"},_vm._l((_vm.myevents),function(evt){return _c('div',{key:evt.id,staticClass:\"col-sm-12 col-md-6 col-lg-4\"},[_c('eventtile',{attrs:{\"sprevent\":evt}})],1)}),0),(!_vm.myevents || _vm.myevents.length == 0)?_c('div',{staticClass:\"row no-events\"},[_c('div',{staticClass:\"col-12\"},[_c('span',[_vm._v(_vm._s(_vm.$t('eventPage.noEventsFound')))])])]):_vm._e()])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .myorganisedevents {\r\n\r\n   .event-list {\r\n     margin-top: 30px;\r\n   }\r\n\r\n   .actions {\r\n     margin-top: 30px;\r\n     margin-bottom: 30px;\r\n   }\r\n\r\n   .no-events {\r\n     background-color:$brand-white;\r\n     text-align: center;\r\n     padding-top:30px;\r\n     padding-bottom: 30px;\r\n     margin-bottom: 30px;\r\n   }\r\n\r\n  }\r\n</style>\r\n\r\n<template>\r\n  <div class=\"myorganisedevents col-12\">\r\n    <backbar :title=\"$t('eventPage.myOrgainsedEvents')\" />\r\n    <div class=\"container\">\r\n      <div class=\"row event-list\">\r\n        <div v-for=\"evt in myevents\" :key=\"evt.id\" class=\"col-sm-12 col-md-6 col-lg-4\">\r\n          <eventtile :sprevent=\"evt\" />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"!myevents || myevents.length == 0\" class=\"row no-events\">\r\n        <div class=\"col-12\">\r\n          <span>{{ $t('eventPage.noEventsFound') }}</span>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import backbar from '../BackBar.vue'\r\n  import eventtile from './EventTile.vue'\r\n  export default {\r\n    name: 'MyOrganisedEvents',\r\n    components: {\r\n      backbar,\r\n      eventtile\r\n    },\r\n    data () {\r\n      return {\r\n        myevents: []\r\n      }\r\n    },\r\n    created () {\r\n      this.getEvents()\r\n    },\r\n    methods: {\r\n      getEvents () {\r\n        var url = this.$store.state.apiBases.eventservice + this.$store.state.apiEndpoints.eventorganised[0]\r\n        this.$http.get(url).then(response => {\r\n          this.myevents = response.body\r\n        }, response => {\r\n          console.log('Error loading')\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MyOrganisedEvents.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MyOrganisedEvents.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MyOrganisedEvents.vue?vue&type=template&id=7b92b000\"\nimport script from \"./MyOrganisedEvents.vue?vue&type=script&lang=js\"\nexport * from \"./MyOrganisedEvents.vue?vue&type=script&lang=js\"\nimport style0 from \"./MyOrganisedEvents.vue?vue&type=style&index=0&id=7b92b000&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"myparticipatedevents col-12\"},[_c('backbar',{attrs:{\"title\":_vm.$t('eventPage.myParticipatedEvents')}}),_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row event-list\"},_vm._l((_vm.myevents),function(evt){return _c('div',{key:evt.id,staticClass:\"col-sm-12 col-md-6 col-lg-4\"},[_c('eventtile',{attrs:{\"sprevent\":evt}})],1)}),0),(!_vm.myevents || _vm.myevents.length == 0)?_c('div',{staticClass:\"row no-events\"},[_c('div',{staticClass:\"col-12\"},[_c('span',[_vm._v(_vm._s(_vm.$t('eventPage.noEventsFound')))])])]):_vm._e()])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .myparticipatedevents {\r\n\r\n   .event-list {\r\n     margin-top: 30px;\r\n   }\r\n\r\n   .actions {\r\n     margin-top: 30px;\r\n     margin-bottom: 30px;\r\n   }\r\n\r\n   .no-events {\r\n     background-color:$brand-white;\r\n     text-align: center;\r\n     padding-top:30px;\r\n     padding-bottom: 30px;\r\n     margin-bottom: 30px;\r\n   }\r\n  }\r\n</style>\r\n\r\n<template>\r\n  <div class=\"myparticipatedevents col-12\">\r\n    <backbar :title=\"$t('eventPage.myParticipatedEvents')\" />\r\n    <div class=\"container\">\r\n      <div class=\"row event-list\">\r\n        <div v-for=\"evt in myevents\" :key=\"evt.id\" class=\"col-sm-12 col-md-6 col-lg-4\">\r\n          <eventtile :sprevent=\"evt\" />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"!myevents || myevents.length == 0\" class=\"row no-events\">\r\n        <div class=\"col-12\">\r\n          <span>{{ $t('eventPage.noEventsFound') }}</span>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import backbar from '../BackBar.vue'\r\n  import eventtile from './EventTile.vue'\r\n  export default {\r\n    name: 'MyParticipatedEvents',\r\n    components: {\r\n      backbar,\r\n      eventtile\r\n    },\r\n    data () {\r\n      return {\r\n        myevents: []\r\n      }\r\n    },\r\n    created () {\r\n      this.getEvents()\r\n    },\r\n    methods: {\r\n      getEvents () {\r\n        var url = this.$store.state.apiBases.eventservice + this.$store.state.apiEndpoints.eventparticipated[0]\r\n        this.$http.get(url).then(response => {\r\n          this.myevents = response.body\r\n        }, response => {\r\n          console.log('Error loading')\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MyParticipatedEvents.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MyParticipatedEvents.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MyParticipatedEvents.vue?vue&type=template&id=3016ae28\"\nimport script from \"./MyParticipatedEvents.vue?vue&type=script&lang=js\"\nexport * from \"./MyParticipatedEvents.vue?vue&type=script&lang=js\"\nimport style0 from \"./MyParticipatedEvents.vue?vue&type=style&index=0&id=3016ae28&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"messages col-12\"},[_c('backbar',{attrs:{\"title\":_vm.$t('message.allMessages')}}),_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"messagelist\"},[(_vm.messages && !_vm.messagesLoading)?_c('div',_vm._l((_vm.messages),function(message,index){return _c('message',{key:_vm._uid + '_message_' + index,attrs:{\"message\":message}})}),1):_vm._e(),(!_vm.messages && !_vm.messagesLoading)?_c('div',{staticClass:\"nomessages\"},[_c('span',[_vm._v(_vm._s(_vm.$t('frontPageRegistered.noMessages')))])]):_vm._e(),(_vm.messagesLoading)?_c('div',{staticClass:\"brand-red\"},[_c('loading')],1):_vm._e()])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"scss\">\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .messages {\r\n    .messagelist {\r\n      background-color:$brand-white;\r\n      margin-top: 30px;\r\n    }\r\n  }\r\n\r\n</style>\r\n\r\n<template>\r\n  <div class=\"messages col-12\">\r\n    <backbar :title=\"$t('message.allMessages')\" />\r\n    <div class=\"container\">\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <div class=\"messagelist\">\r\n            <div v-if=\"messages && !messagesLoading\">\r\n              <message v-for=\"(message, index) in messages\" :key=\"_uid + '_message_' + index\" :message=\"message\" />\r\n            </div>\r\n            <div v-if=\"!messages && !messagesLoading\" class=\"nomessages\">\r\n              <span>{{ $t('frontPageRegistered.noMessages') }}</span>\r\n            </div>\r\n            <div v-if=\"messagesLoading\" class=\"brand-red\">\r\n              <loading />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import backbar from '../BackBar.vue'\r\n  import message from './SPRMessage.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import messages from '../../mixins/messages.js'\r\n  export default {\r\n    name: 'Messages',\r\n    components: { backbar, message, loading },\r\n    mixins: [messages],\r\n    data () {\r\n      return {\r\n        messages: [],\r\n        messagesLoading: false\r\n      }\r\n    },\r\n    mounted () {\r\n      this.getMessages()\r\n    },\r\n    methods: {\r\n      getMessages () {\r\n        var self = this\r\n        self.messagesLoading = true\r\n\r\n        // load from the cache if its been loaded before\r\n        if (self.$store.state.messages.length > 0) {\r\n          self.messagesLoading = false\r\n          self.messages = self.$store.state.messages\r\n          return\r\n        }\r\n\r\n        // otherwise get from back end\r\n        this.loadMessages().then(() => {\r\n          self.messagesLoading = false\r\n          self.messages = self.$store.state.messages\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Messages.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Messages.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Messages.vue?vue&type=template&id=6b6946e6\"\nimport script from \"./Messages.vue?vue&type=script&lang=js\"\nexport * from \"./Messages.vue?vue&type=script&lang=js\"\nimport style0 from \"./Messages.vue?vue&type=style&index=0&id=6b6946e6&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.message)?_c('div',{staticClass:\"container messagedetail\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('backbar')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"subject\"},[_c('h3',[_vm._v(_vm._s(_vm.message.subject))])])])]),_c('div',{staticClass:\"row message\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"messagesection\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('message.sender'))+\" \")]),_c('div',{staticClass:\"label-content\"},[_vm._v(\" \"+_vm._s(_vm.computedSender)+\" \")])]),_c('div',{staticClass:\"messagesection\"},[_c('div',{staticClass:\"cap-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('message.date'))+\" \")]),_c('div',{staticClass:\"label-content\"},[_vm._v(\" \"+_vm._s(_vm.sentDate)+\" \")])]),(_vm.message && _vm.message.content)?_c('div',{staticClass:\"messagebody\"},[_c('p',{directives:[{name:\"linkified\",rawName:\"v-linkified:options\",value:({ nl2br: true }),expression:\"{ nl2br: true }\",arg:\"options\"}],domProps:{\"innerHTML\":_vm._s(_vm.message.content)}})]):_vm._e(),(_vm.message && _vm.message.messageType === 1)?_c('div',{staticClass:\"actions text-right\"},[_c('sprbutton',{staticClass:\"spr-redborder button-width\",attrs:{\"type\":\"primary\",\"size\":1,\"title\":_vm.$t('message.delete'),\"click-event\":\"deleteMessage\"},on:{\"deleteMessage\":function($event){_vm.showRemove = !_vm.showRemove}}})],1):_vm._e()])]),_c('b-modal',{attrs:{\"title\":_vm.$t('message.youSure')},model:{value:(_vm.showRemove),callback:function ($$v) {_vm.showRemove=$$v},expression:\"showRemove\"}},[_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('message.confirmDelete'))+\" \")]),_c('mfoot',{attrs:{\"slot\":\"modal-footer\",\"buttons\":_vm.modalButtons()},on:{\"cancel\":function($event){_vm.showRemove = !_vm.showRemove},\"remove\":_vm.onDelete},slot:\"modal-footer\"})],1)],1):_c('div',[_vm._v(\" ... \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// config.js\r\nconst urlPlaceholder = 'https://spr-vati-web.azurewebsites.net'\r\n\r\nexport default urlPlaceholder","<template>\r\n  <div v-if=\"message\" class=\"container messagedetail\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <backbar />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <div class=\"subject\">\r\n          <h3>{{ message.subject }}</h3>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"row message\">\r\n      <div class=\"col-12\">\r\n        <div class=\"messagesection\">\r\n          <div class=\"cap-label\">\r\n            {{ $t('message.sender') }}\r\n          </div>\r\n          <div class=\"label-content\">\r\n            {{ computedSender }}\r\n          </div>\r\n        </div>\r\n        <div class=\"messagesection\">\r\n          <div class=\"cap-label\">\r\n            {{ $t('message.date') }}\r\n          </div>\r\n          <div class=\"label-content\">\r\n            {{ sentDate }}\r\n          </div>\r\n        </div>\r\n        <div v-if=\"message && message.content\" class=\"messagebody\">\r\n          <!-- TODO: message.content is sanitized on the back end, but still we should not use v-html if possible. This is a possible security issue -->\r\n          <p v-linkified:options=\"{ nl2br: true }\" v-html=\"message.content\" />\r\n        </div>\r\n        <div v-if=\"message && message.messageType === 1\" class=\"actions text-right\">\r\n          <sprbutton type=\"primary\"\r\n                     :size=\"1\"\r\n                     :title=\"$t('message.delete')\"\r\n                     class=\"spr-redborder button-width\"\r\n                     click-event=\"deleteMessage\"\r\n                     @deleteMessage=\"showRemove = !showRemove\"\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <b-modal v-model=\"showRemove\"\r\n             :title=\"$t('message.youSure')\"\r\n    >\r\n      <div>\r\n        {{ $t('message.confirmDelete') }}\r\n      </div>\r\n      <mfoot slot=\"modal-footer\"\r\n             :buttons=\"modalButtons()\"\r\n             @cancel=\"showRemove = !showRemove\"\r\n             @remove=\"onDelete\"\r\n      />\r\n    </b-modal>\r\n  </div>\r\n  <div v-else>\r\n    ...\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import moment from 'moment'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import messages from '../../mixins/messages.js'\r\n  import mfoot from '../modals/ModalFooter.vue'\r\n  import backbar from '../BackBar.vue'\r\n  import urlPlaceholder from '../../types/constants'\r\n\r\n  export default {\r\n    name: 'MessageDetail',\r\n    components: { sprbutton, mfoot, backbar },\r\n    mixins: [messages],\r\n    data () {\r\n      return {\r\n        showRemove: false,\r\n        message: {},\r\n        sender: {}\r\n      }\r\n    },\r\n    computed: {\r\n      sentDate () {\r\n        return moment.utc(this.message.sent).local().format('D.MM.YYYY HH:mm')\r\n      },\r\n      computedSender () {\r\n        if (this.sender.firstName) {\r\n          return this.sender.firstName + ' ' + this.sender.lastName\r\n        }\r\n        return this.message.sender\r\n      }\r\n    },\r\n    mounted () {\r\n      var self = this\r\n      this.getMessage().then(function () {\r\n        if (self.message.senderId) {\r\n          var uriProfile = (self.$store.state.apiBases.userservice + self.$store.state.apiEndpoints.profile[0]).replace('{0}', self.message.senderId)\r\n\r\n          self.$http.get(uriProfile).then(s => {\r\n            self.sender = s.body\r\n            self.markMessageAsRead(self.message)\r\n          })\r\n        } else {\r\n          self.markMessageAsRead(self.message)\r\n        }\r\n      })\r\n    },\r\n    methods: {\r\n      modalButtons: function () {\r\n        return [\r\n          { text: this.$t('message.delete'), event: 'remove' },\r\n          { text: this.$t('message.cancel'), event: 'cancel' }\r\n        ]\r\n      },\r\n      findMessage () {\r\n        var self = this\r\n        var messageId = Number(self.$route.params.id)\r\n        var messageType = Number(self.$route.params.type)\r\n        return _.find(self.$store.state.messages, function (msg) {\r\n          return msg.id === messageId && msg.messageType === messageType\r\n        })\r\n      },\r\n      replaceUrls (msg) {\r\n        var escapedUrl = urlPlaceholder.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\r\n        var regex = new RegExp(escapedUrl, 'g')\r\n        const baseUrl = window.location.protocol + '//' + window.location.hostname + (window.location.port ? ':' + window.location.port : '')\r\n\r\n        return msg.replace(regex, baseUrl)\r\n      },\r\n      getMessage () {\r\n        var self = this\r\n        return new Promise((resolve, reject) => {\r\n          if (self.$store.state.messages.length > 0) {\r\n            self.message = self.findMessage()\r\n            self.message.content = self.replaceUrls(self.message.content)\r\n            resolve()\r\n          } else {\r\n            // need to load the back end\r\n            this.loadMessages().then(() => {\r\n              self.message = self.findMessage()\r\n              self.message.content = self.replaceUrls(self.message.content)\r\n              resolve()\r\n            })\r\n          }\r\n        })\r\n      },\r\n      onDelete () {\r\n        this.deleteMessage(this.message).then(() => {\r\n          this.$router.replace('/messages')\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  @import \"../../assets/scss/_variables.scss\";\r\n  .messagedetail {\r\n\r\n    .back {\r\n      margin-top: 15px;\r\n\r\n      svg {\r\n        margin-right: 5px;\r\n      }\r\n    }\r\n\r\n    .subject {\r\n      margin-top:15px;\r\n    }\r\n\r\n    .message {\r\n      background-color:$brand-white;\r\n    }\r\n\r\n    .messagesection {\r\n      margin: 10px 0 20px 0;\r\n      .cap-label {\r\n        color:$brand-red;\r\n      }\r\n    }\r\n\r\n    .actions {\r\n      margin: 30px 0;\r\n    }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageDetail.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageDetail.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MessageDetail.vue?vue&type=template&id=7d8bb312&scoped=true\"\nimport script from \"./MessageDetail.vue?vue&type=script&lang=js\"\nexport * from \"./MessageDetail.vue?vue&type=script&lang=js\"\nimport style0 from \"./MessageDetail.vue?vue&type=style&index=0&id=7d8bb312&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"7d8bb312\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comp-profile-editor-login mx-auto text-center container my-5\"},[(_vm.sent === 0)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 my-3\"},[_c('span',[_vm._v(_vm._s(_vm.$t('profile.restoreInstructionsStart')))])]),_c('div',{staticClass:\"col-12\"},[_c('sprinput',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"editor-field\",attrs:{\"hint\":_vm.$t('profile.email'),\"is-valid\":!_vm.errors.has('email'),\"name\":\"email\",\"data-vv-validate-on\":\"none\",\"autocomplete\":\"email username\"},model:{value:(_vm.forWhichAccount),callback:function ($$v) {_vm.forWhichAccount=$$v},expression:\"forWhichAccount\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('sprbutton',{staticClass:\"d-inline-block\",attrs:{\"title\":_vm.$t('profile.restore'),\"size\":1,\"bordersize\":2,\"click-event\":\"restore-event\"},on:{\"restore-event\":_vm.sendRestore}})],1)]):_vm._e(),(_vm.sent === 1)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('loading')],1),_c('div',{staticClass:\"col-12 my-3\"},[_c('span',[_vm._v(_vm._s(_vm.$t('profile.restoreInstructionsSending', { email: _vm.forWhichAccount })))])])]):_vm._e(),(_vm.sent === 2)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":\"envelope\",\"size\":\"5x\"}})],1),_c('div',{staticClass:\"col-12 my-3\"},[_c('span',[_vm._v(_vm._s(_vm.$t('profile.restoreInstructionsMailSent', { email: _vm.forWhichAccount })))])])]):_vm._e(),(_vm.sent === 3)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":['far', 'smile'],\"size\":\"5x\"}})],1),_c('div',{staticClass:\"col-12 my-3\"},[_c('span',[_vm._v(_vm._s(_vm.$t('profile.restoreInstructionsRestoreFailed', { email: _vm.forWhichAccount })))])]),_c('div',{staticClass:\"col-12 my-3\"},[_c('sprbutton',{staticClass:\"d-inline-block\",attrs:{\"click-event\":\"reset-event\",\"title\":_vm.$t('profile.retry'),\"size\":1,\"bordersize\":2},on:{\"reset-event\":function($event){_vm.sent = 0}}})],1)]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-profile-editor-login mx-auto text-center container my-5\">\r\n    <!-- begin restore here -->\r\n    <div v-if=\"sent === 0\" class=\"row\">\r\n      <div class=\"col-12 my-3\">\r\n        <span>{{ $t('profile.restoreInstructionsStart') }}</span>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <sprinput v-model=\"forWhichAccount\" v-validate=\"'required'\"\r\n                  :hint=\"$t('profile.email')\" class=\"editor-field\"\r\n                  :is-valid=\"!errors.has('email')\" name=\"email\" data-vv-validate-on=\"none\" autocomplete=\"email username\"\r\n        />\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <sprbutton \r\n          :title=\"$t('profile.restore')\"\r\n          :size=\"1\"\r\n          :bordersize=\"2\" class=\"d-inline-block\" \r\n          @restore-event=\"sendRestore\"\r\n          click-event=\"restore-event\" \r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-if=\"sent === 1\" class=\"row\">\r\n      <div class=\"col-12\">\r\n        <loading />\r\n      </div>\r\n      <div class=\"col-12 my-3\">\r\n        <span>{{ $t('profile.restoreInstructionsSending', { email: forWhichAccount }) }}</span>\r\n      </div>\r\n    </div>\r\n    <div v-if=\"sent === 2\" class=\"row\">\r\n      <div class=\"col-12\">\r\n        <font-awesome-icon icon=\"envelope\" size=\"5x\" class=\"brand-red\" />\r\n      </div>\r\n      <div class=\"col-12 my-3\">\r\n        <span>{{ $t('profile.restoreInstructionsMailSent', { email: forWhichAccount }) }}</span>\r\n      </div>\r\n    </div>\r\n    <div v-if=\"sent === 3\" class=\"row\">\r\n      <div class=\"col-12\">\r\n        <font-awesome-icon :icon=\"['far', 'smile']\" size=\"5x\" class=\"brand-red\" />\r\n      </div>\r\n      <div class=\"col-12 my-3\">\r\n        <span>{{ $t('profile.restoreInstructionsRestoreFailed', { email: forWhichAccount }) }}</span>\r\n      </div>\r\n      <div class=\"col-12 my-3\">\r\n        <sprbutton click-event=\"reset-event\" :title=\"$t('profile.retry')\"\r\n                   :size=\"1\"\r\n                   :bordersize=\"2\" class=\"d-inline-block\" @reset-event=\"sent = 0\"\r\n        />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n<script>\r\n  import sprinput from '../SPRSimpleText.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import loading from '../SPRLoading.vue'\r\n\r\n  export default {\r\n    name: 'ProfileEditorForgotPassword',\r\n    components: { sprinput, sprbutton, loading },\r\n    data () {\r\n      return {\r\n        forWhichAccount: '',\r\n        sent: 0,\r\n        password: '',\r\n        confirmPassword: '',\r\n        pending: false,\r\n        validatedFields: ['email', 'password', 'retypePassword']\r\n      }\r\n    },\r\n    computed: {\r\n      validationErrors: function () {\r\n        if (!this.validatedFields) {\r\n          return []\r\n        }\r\n\r\n        var arr = []\r\n        var self = this\r\n        this.validatedFields.forEach(function (fieldName) {\r\n          var err = _.find(self.errors.items, function (item) {\r\n            return item.field === fieldName\r\n          })\r\n          if (err != null) {\r\n            arr.push(['profile.' + err.field, String(err.rule), String(err.msg)])\r\n          }\r\n        })\r\n        return arr\r\n      }\r\n    },\r\n    methods: {\r\n      sendRestore: function () {\r\n        this.sent = 1\r\n        const uri = (this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.restore[0]).replace('{email}', this.forWhichAccount)\r\n        this.$http.get(uri).then(s => {\r\n          this.sent = 2\r\n        }, f => {\r\n          this.sent = 3\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n.comp-profile-editor-login {\r\n  .editor-field {\r\n    width: 100%;\r\n    text-align: left;\r\n  }\r\n\r\n  .row input {\r\n    box-shadow: none;\r\n    border: 2px solid $brand-grey3;\r\n  }\r\n\r\n  .spr-shadow {\r\n    box-shadow: none !important;\r\n    border: 2px solid $brand-grey3;\r\n  }\r\n\r\n  .wrap-date input {\r\n    box-shadow: none !important;\r\n    border: 2px solid $brand-grey3 !important;\r\n  }\r\n\r\n  .instructions {\r\n    display: block;\r\n    margin-bottom: 30px;\r\n    text-align:left\r\n  }\r\n\r\n  .pending {\r\n    color: $brand-red;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ForgotPassword.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ForgotPassword.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ForgotPassword.vue?vue&type=template&id=c47fc4f0\"\nimport script from \"./ForgotPassword.vue?vue&type=script&lang=js\"\nexport * from \"./ForgotPassword.vue?vue&type=script&lang=js\"\nimport style0 from \"./ForgotPassword.vue?vue&type=style&index=0&id=c47fc4f0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"comp-profile-editor-reset-password mx-auto text-center container my-5\"},[_c('div',{staticClass:\"col-12\"},[(_vm.expired)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":['far', 'frown'],\"size\":\"5x\"}})],1),_c('div',{staticClass:\"col-12 my-3\"},[_c('span',[_vm._v(_vm._s(_vm.$t('profile.resetPasswordTokenExpired')))])])]):_vm._e(),(_vm.error)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('font-awesome-icon',{staticClass:\"brand-red\",attrs:{\"icon\":['far', 'frown'],\"size\":\"5x\"}})],1),_c('div',{staticClass:\"col-12 my-3\"},[_c('span',[_vm._v(_vm._s(_vm.$t('profile.resetPasswordError')))])])]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprvalidation',{staticClass:\"mb-5\",attrs:{\"validation-errors\":_vm.validationErrors}})],1)]),(!_vm.expired)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"instructions\"},[_vm._v(_vm._s(_vm.$t('profile.resetPasswordInstructions')))])])]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-6\"},[_c('sprPassword',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('min:12|max:128'),expression:\"'min:12|max:128'\"}],ref:\"password\",staticClass:\"editor-field\",attrs:{\"hint\":_vm.$t('profile.password'),\"input-type\":\"password\",\"is-valid\":!_vm.errors.has('password'),\"name\":\"password\",\"data-vv-validate-on\":\"none\",\"autocomplete\":\"false\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}})],1),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('sprPassword',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({required: _vm.retypeRequired, confirmed:_vm.password }),expression:\"{required: retypeRequired, confirmed:password }\"}],staticClass:\"editor-field\",attrs:{\"data-vv-as\":\"password\",\"hint\":_vm.$t('profile.retypePassword'),\"input-type\":\"password\",\"is-valid\":!_vm.errors.has('retypePassword'),\"name\":\"retypePassword\",\"data-vv-validate-on\":\"none\",\"autocomplete\":\"false\"},model:{value:(_vm.confirmPassword),callback:function ($$v) {_vm.confirmPassword=$$v},expression:\"confirmPassword\"}})],1)]),(!_vm.pending)?_c('div',{staticClass:\"row py-4\"},[_c('div',{staticClass:\"col-12 col-md-6 my-1\"},[_c('sprbutton',{staticClass:\"fill-width\",attrs:{\"click-event\":\"save-event\",\"title\":_vm.$t('profile.save'),\"size\":1,\"bordersize\":2},on:{\"save-event\":_vm.onSave}})],1)]):_c('div',{staticClass:\"row pending\"},[_c('div',{staticClass:\"col-12 py-4\"},[_c('loading')],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-profile-editor-reset-password mx-auto text-center container my-5\">\r\n    <div class=\"col-12\">\r\n      <div v-if=\"expired\" class=\"row\">\r\n        <div class=\"col-12\">\r\n          <font-awesome-icon :icon=\"['far', 'frown']\" size=\"5x\" class=\"brand-red\" />\r\n        </div>\r\n        <div class=\"col-12 my-3\">\r\n          <span>{{ $t('profile.resetPasswordTokenExpired') }}</span>\r\n        </div>\r\n      </div>\r\n      <div v-if=\"error\" class=\"row\">\r\n        <div class=\"col-12\">\r\n          <font-awesome-icon :icon=\"['far', 'frown']\" size=\"5x\" class=\"brand-red\" />\r\n        </div>\r\n        <div class=\"col-12 my-3\">\r\n          <span>{{ $t('profile.resetPasswordError') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <div class=\"col-12\">\r\n          <sprvalidation :validation-errors=\"validationErrors\" class=\"mb-5\" />\r\n        </div>\r\n      </div>\r\n      <div v-if=\"!expired\" class=\"row\">\r\n        <div class=\"col-12\">\r\n          <span class=\"instructions\">{{ $t('profile.resetPasswordInstructions') }}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"row\">\r\n        <!-- password -->\r\n        <div class=\"col-12 col-md-6\">\r\n          <sprPassword ref=\"password\"\r\n                       v-model=\"password\"\r\n                       v-validate=\"'min:12|max:128'\"\r\n                       :hint=\"$t('profile.password')\"\r\n                       class=\"editor-field\"\r\n                       input-type=\"password\"\r\n                       :is-valid=\"!errors.has('password')\"\r\n                       name=\"password\"\r\n                       data-vv-validate-on=\"none\"\r\n                       autocomplete=\"false\"\r\n          />\r\n        </div>\r\n        <!-- retype password -->\r\n        <div class=\"col-12 col-md-6\">\r\n          <sprPassword v-model=\"confirmPassword\"\r\n                       v-validate=\"{required: retypeRequired, confirmed:password }\"\r\n                       data-vv-as=\"password\"\r\n                       :hint=\"$t('profile.retypePassword')\"\r\n                       class=\"editor-field\"\r\n                       input-type=\"password\"\r\n                       :is-valid=\"!errors.has('retypePassword')\"\r\n                       name=\"retypePassword\"\r\n                       data-vv-validate-on=\"none\"\r\n                       autocomplete=\"false\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <!-- save button -->\r\n      <div v-if=\"!pending\" class=\"row py-4\">\r\n        <div class=\"col-12 col-md-6 my-1\">\r\n          <sprbutton click-event=\"save-event\" :title=\"$t('profile.save')\"\r\n                     :size=\"1\"\r\n                     :bordersize=\"2\" class=\"fill-width\" @save-event=\"onSave\"\r\n          />\r\n        </div>\r\n      </div>\r\n      <div v-else class=\"row pending\">\r\n        <div class=\"col-12 py-4\">\r\n          <loading />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import sprPassword from '../SprPassword.vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n  import loading from '../SPRLoading.vue'\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n        password: string,\r\n        hash: string,\r\n        currentPasswordFailure: any,\r\n        confirmPassword: string,\r\n        pending: boolean,\r\n        expired: boolean,\r\n        error: boolean,\r\n        validatedFields: Array<string>\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'ProfileEditorResetPassword',\r\n    components: { sprPassword, sprbutton, sprvalidation, loading },\r\n    props: {\r\n      token: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        password: '',\r\n        hash: '',\r\n        currentPasswordFailure: null,\r\n        confirmPassword: '',\r\n        pending: false,\r\n        expired: false,\r\n        error: false,\r\n        validatedFields: ['password', 'retypePassword']\r\n      }\r\n    },\r\n    computed: {\r\n      retypeRequired (): boolean {\r\n        return this.password.length > 0\r\n      },\r\n      validationErrors (): Array<any> {\r\n        var arr = [] as Array<any>\r\n        var self = this\r\n\r\n        if (self.currentPasswordFailure) {\r\n          arr.push(['login.attempt', 'currentPasswordFailed', ''])\r\n          self.currentPasswordFailure.forEach(err => {\r\n            //@ts-ignore\r\n            if (err.code) { arr.push(['', 'error.' + this.toLowerCamelCase(err.code), '']) }\r\n          })\r\n        }\r\n\r\n        if (!this.validatedFields) {\r\n          return arr\r\n        }\r\n\r\n        this.validatedFields.forEach(function (fieldName) {\r\n          //@ts-ignore\r\n          var err = _.find(self.errors.items, function (item) {\r\n            return item.field === fieldName\r\n          })\r\n\r\n          if (err != null) {\r\n            arr.push(['profile.' + err.field, String(err.rule), String(err.msg)])\r\n          }\r\n        })\r\n        return arr\r\n      },\r\n      resetPassword (): any {\r\n        return {\r\n          Token: this.token,\r\n          Password: this.password\r\n        }\r\n      }\r\n    },\r\n    methods: {\r\n      onSave (): void {\r\n        const self = this\r\n\r\n        this.currentPasswordFailure = null\r\n\r\n        this.$validator.validateAll().then((result) => {\r\n          if (result) {\r\n            this.pending = true\r\n\r\n            const url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.resetpassword[0]\r\n            this.$http.post(url, this.resetPassword).then(resp => {\r\n              // @ts-ignore\r\n              this.logout('/login')\r\n            }, (resp) => {\r\n              if (resp.body?.error?.errors[0]?.description.toLowerCase() === 'token has expired!') {\r\n                self.expired = true\r\n              } else {\r\n                self.currentPasswordFailure = resp.body?.error?.errors\r\n                this.error = true\r\n              }\r\n              this.pending = false\r\n            })\r\n          } else {\r\n            if (this.validationErrors && this.validationErrors.length) {\r\n\r\n            }\r\n          }\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n.comp-profile-editor-reset-password {\r\n    max-width: 600px;\r\n\r\n   .editor-field {\r\n    width: 100%;\r\n    text-align: left;\r\n  }\r\n\r\n  .row input {\r\n    box-shadow: none;\r\n    border: 2px solid $brand-grey3;\r\n    display: inline-block;\r\n  }\r\n\r\n  .spr-shadow {\r\n    box-shadow: none !important;\r\n    border: 2px solid $brand-grey3;\r\n  }\r\n\r\n  .wrap-date input {\r\n    box-shadow: none !important;\r\n    border: 2px solid $brand-grey3 !important;\r\n  }\r\n\r\n  .instructions {\r\n    display: block;\r\n    margin-bottom: 30px;\r\n    text-align:left\r\n  }\r\n\r\n  .pending {\r\n    color: $brand-red;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=4be75016\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=ts\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=4be75016&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"comp-profile-editor-reset-password mx-auto text-center container my-5\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"h1 brand-red text-center text-md-left\",attrs:{\"role\":\"heading\",\"aria-level\":\"1\"}},[_vm._v(\" \"+_vm._s(_vm.$t('profile.resetExpiredPasswordTitle'))+\" \")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('sprvalidation',{staticClass:\"mb-5\",attrs:{\"validation-errors\":_vm.validationErrors}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"instructions\"},[_vm._v(_vm._s(_vm.$t('profile.editCredentialsInstructions')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-8 col-md-6\"},[_c('sprPassword',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|min:6|max:128'),expression:\"'required|min:6|max:128'\"}],staticClass:\"editor-field\",attrs:{\"hint\":_vm.$t('profile.currentPassword'),\"input-type\":\"password\",\"is-valid\":!_vm.errors.has('currentPassword'),\"name\":\"currentPassword\",\"data-vv-validate-on\":\"none\",\"autocomplete\":\"false\"},model:{value:(_vm.currentPassword),callback:function ($$v) {_vm.currentPassword=$$v},expression:\"currentPassword\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"instructions\"},[_vm._v(_vm._s(_vm.$t('profile.editPasswordInstructions')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-6\"},[_c('sprPassword',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('min:12|max:128'),expression:\"'min:12|max:128'\"}],ref:\"password\",staticClass:\"editor-field\",attrs:{\"hint\":_vm.$t('profile.password'),\"input-type\":\"password\",\"is-valid\":!_vm.errors.has('password'),\"name\":\"password\",\"data-vv-validate-on\":\"none\",\"autocomplete\":\"false\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}})],1),_c('div',{staticClass:\"col-12 col-md-6\"},[_c('sprPassword',{directives:[{name:\"validate\",rawName:\"v-validate\",value:({required: _vm.retypeRequired, confirmed:_vm.password }),expression:\"{required: retypeRequired, confirmed:password }\"}],staticClass:\"editor-field\",attrs:{\"data-vv-as\":\"password\",\"hint\":_vm.$t('profile.retypePassword'),\"input-type\":\"password\",\"is-valid\":!_vm.errors.has('retypePassword'),\"name\":\"retypePassword\",\"data-vv-validate-on\":\"none\",\"autocomplete\":\"false\"},model:{value:(_vm.confirmPassword),callback:function ($$v) {_vm.confirmPassword=$$v},expression:\"confirmPassword\"}})],1)]),(!_vm.pending)?_c('div',{staticClass:\"row py-4\"},[_c('div',{staticClass:\"col-12 col-md-6 my-1\"},[_c('sprbutton',{staticClass:\"fill-width\",attrs:{\"click-event\":\"save-event\",\"title\":_vm.$t('profile.save'),\"size\":1,\"bordersize\":2},on:{\"save-event\":_vm.onSave}})],1)]):_c('div',{staticClass:\"row pending\"},[_c('div',{staticClass:\"col-12 py-4\"},[_c('loading')],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"comp-profile-editor-reset-password mx-auto text-center container my-5\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span role=\"heading\" aria-level=\"1\" class=\"h1 brand-red text-center text-md-left\">\r\n          {{ $t('profile.resetExpiredPasswordTitle') }}\r\n        </span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <sprvalidation :validation-errors=\"validationErrors\" class=\"mb-5\" />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span class=\"instructions\">{{ $t('profile.editCredentialsInstructions') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <!-- current password -->\r\n      <div class=\"col-12 col-sm-8 col-md-6\">\r\n        <sprPassword v-model=\"currentPassword\" v-validate=\"'required|min:6|max:128'\"\r\n                     :hint=\"$t('profile.currentPassword')\"\r\n                     class=\"editor-field\"\r\n                     input-type=\"password\"\r\n                     :is-valid=\"!errors.has('currentPassword')\"\r\n                     name=\"currentPassword\"\r\n                     data-vv-validate-on=\"none\"\r\n                     autocomplete=\"false\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <span class=\"instructions\">{{ $t('profile.editPasswordInstructions') }}</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"row\">\r\n      <!-- password -->\r\n      <div class=\"col-12 col-md-6\">\r\n        <sprPassword ref=\"password\"\r\n                     v-model=\"password\"\r\n                     v-validate=\"'min:12|max:128'\"\r\n                     :hint=\"$t('profile.password')\"\r\n                     class=\"editor-field\"\r\n                     input-type=\"password\"\r\n                     :is-valid=\"!errors.has('password')\"\r\n                     name=\"password\"\r\n                     data-vv-validate-on=\"none\"\r\n                     autocomplete=\"false\"\r\n        />\r\n      </div>\r\n      <!-- retype password -->\r\n      <div class=\"col-12 col-md-6\">\r\n        <sprPassword v-model=\"confirmPassword\"\r\n                     v-validate=\"{required: retypeRequired, confirmed:password }\"\r\n                     data-vv-as=\"password\"\r\n                     :hint=\"$t('profile.retypePassword')\"\r\n                     class=\"editor-field\"\r\n                     input-type=\"password\"\r\n                     :is-valid=\"!errors.has('retypePassword')\"\r\n                     name=\"retypePassword\"\r\n                     data-vv-validate-on=\"none\"\r\n                     autocomplete=\"false\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <!-- save and cancel buttons -->\r\n    <div v-if=\"!pending\" class=\"row py-4\">\r\n      <div class=\"col-12 col-md-6 my-1\">\r\n        <sprbutton click-event=\"save-event\" :title=\"$t('profile.save')\"\r\n                   :size=\"1\"\r\n                   :bordersize=\"2\" class=\"fill-width\" @save-event=\"onSave\"\r\n        />\r\n      </div>\r\n    </div>\r\n    <div v-else class=\"row pending\">\r\n      <div class=\"col-12 py-4\">\r\n        <loading />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import sprbutton from '../SPRButton.vue'\r\n  import sprPassword from '../SprPassword.vue'\r\n  import sprvalidation from '../SPRValidationError.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import validatoremailexists from '../../mixins/validator-emailexists.js'\r\n  import { Validator } from 'vee-validate'\r\n\r\n  Validator.extend('emailexists', validatoremailexists)\r\n\r\n  // the data object\r\n  export interface TemplateComponentData {\r\n    currentPassword: string,\r\n    currentPasswordFailure: any,\r\n    password: string,\r\n    confirmPassword: string,\r\n    pending: boolean,\r\n    validatedFields: Array<string>\r\n  }\r\n\r\n  export default Vue.extend({\r\n    name: 'ProfileEditorResetExpiredPassword',\r\n    components: { sprbutton, sprPassword, sprvalidation, loading },\r\n    props: {\r\n      email: {\r\n        type: String,\r\n        default: ''\r\n      }\r\n    },\r\n    data (): TemplateComponentData {\r\n      return {\r\n        currentPassword: '',\r\n        currentPasswordFailure: null,\r\n        password: '',\r\n        confirmPassword: '',\r\n        pending: false,\r\n        validatedFields: ['currentPassword', 'password', 'retypePassword']\r\n      }\r\n    },\r\n    computed: {\r\n      retypeRequired (): boolean {\r\n        return this.password.length > 0\r\n      },\r\n      validationErrors (): Array<any> {\r\n        var arr = [] as Array<any>\r\n        var self = this\r\n\r\n        if (self.currentPasswordFailure) {\r\n          arr.push(['login.attempt', 'currentPasswordFailed', ''])\r\n          self.currentPasswordFailure.forEach(err => {\r\n            //@ts-ignore\r\n            if (err.code) { arr.push(['', 'error.' + this.toLowerCamelCase(err.code), '']) }\r\n          })\r\n        }\r\n\r\n        if (!this.validatedFields) {\r\n          return arr\r\n        }\r\n\r\n        this.validatedFields.forEach(function (fieldName) {\r\n          //@ts-ignore\r\n          var err = _.find(self.errors.items, function (item) {\r\n            return item.field === fieldName\r\n          })\r\n\r\n          if (err != null) {\r\n            arr.push(['profile.' + err.field, String(err.rule), String(err.msg)])\r\n          }\r\n        })\r\n        return arr\r\n      }\r\n    },\r\n    methods: {\r\n      focusOnErrors (): void {\r\n        window.scrollTo({ top: 0, behavior: 'smooth' })\r\n      },\r\n      onSave (): void {\r\n        const self = this\r\n\r\n        this.currentPasswordFailure = null\r\n        this.$validator.validateAll().then((result) => {\r\n          if (result) {\r\n            self.pending = true\r\n            const url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.expiredpasswordupdate[0]\r\n            const data = {\r\n              currentPassword: this.currentPassword,\r\n              email: this.email,\r\n              password: this.password\r\n            }\r\n            this.$http.post(url, data).then((resp: any) => {\r\n              if (resp.ok && resp.body.success) {\r\n                //@ts-ignore\r\n                this.logout('/login?email=' + data.email)\r\n              }\r\n            }, function (errorResponse) {\r\n              self.currentPasswordFailure = errorResponse.body?.error?.errors\r\n              self.focusOnErrors()\r\n              self.pending = false\r\n            })\r\n          }\r\n        })\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import '~@/assets/scss/_variables.scss';\r\n.comp-profile-editor-reset-password {\r\n    max-width: 600px;\r\n\r\n   .editor-field {\r\n    width: 100%;\r\n    text-align: left;\r\n  }\r\n\r\n  .row input {\r\n    box-shadow: none;\r\n    border: 2px solid $brand-grey3;\r\n    display: inline-block;\r\n  }\r\n\r\n  .spr-shadow {\r\n    box-shadow: none !important;\r\n    border: 2px solid $brand-grey3;\r\n  }\r\n\r\n  .wrap-date input {\r\n    box-shadow: none !important;\r\n    border: 2px solid $brand-grey3 !important;\r\n  }\r\n\r\n  .instructions {\r\n    display: block;\r\n    margin-bottom: 30px;\r\n    text-align:left\r\n  }\r\n\r\n  .pending {\r\n    color: $brand-red;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ResetExpiredPassword.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ResetExpiredPassword.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ResetExpiredPassword.vue?vue&type=template&id=68758156\"\nimport script from \"./ResetExpiredPassword.vue?vue&type=script&lang=ts\"\nexport * from \"./ResetExpiredPassword.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ResetExpiredPassword.vue?vue&type=style&index=0&id=68758156&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container section\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h1',[_vm._v(\" \"+_vm._s(_vm.section.name)+\" \")])])]),_c('div',{staticClass:\"row feature\"},[(_vm.sectionLoading)?_c('div',{staticClass:\"brand-red\"},[_c('loading')],1):_vm._e(),(!_vm.sectionLoading)?_c('div',{staticClass:\"col-12 district\"},[_c('div',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.section.districtName)+\" \")]),_c('div',{staticClass:\"col-12 language\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.sectionLanguage'))+\" \"+_vm._s(_vm.sectionLanguage)+\" \")])]):_vm._e(),(!_vm.sectionLoading)?_c('p',{directives:[{name:\"linkified\",rawName:\"v-linkified:options\",value:({ nl2br: true }),expression:\"{ nl2br: true }\",arg:\"options\"}],staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.section.description)+\" \")]):_vm._e()]),(!_vm.sectionLoading)?_c('div',{staticClass:\"row feature\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('section.actionGroupsTitle')))]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('section.actionGroupsText'))+\" \")]),(_vm.section.actionGroups.length === 0)?_c('p',{staticClass:\"center\"},[_vm._v(\" \"+_vm._s(_vm.$t('section.noActionGroups'))+\" \")]):_vm._e()]),_c('groups',{attrs:{\"groups\":_vm.section.actionGroups}})],1):_vm._e(),(!_vm.sectionLoading)?_c('div',{staticClass:\"row feature\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(_vm._s(_vm.$t('section.standardGroupsTitle')))]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('section.standardGroupsText'))+\" \")]),(_vm.section.standardGroups.length === 0)?_c('p',{staticClass:\"center\"},[_vm._v(\" \"+_vm._s(_vm.$t('section.noStandardGroups'))+\" \")]):_vm._e()]),_c('groups',{attrs:{\"groups\":_vm.section.standardGroups}})],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.groups.length > 0)?_c('div',{staticClass:\"col-12 groups\"},_vm._l((_vm.groups),function(item,index){return _c('div',{key:item.id,staticClass:\"group\"},[_c('groupview',{key:_vm._uid + index + 'action',attrs:{\"group\":item,\"detailed\":true,\"has-controls\":true}})],1)}),0):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"groups.length > 0\" class=\"col-12 groups\">\r\n    <div v-for=\"(item, index) in groups\" :key=\"item.id\" class=\"group\">\r\n      <groupview :key=\"_uid + index + 'action'\" :group=\"item\" :detailed=\"true\" :has-controls=\"true\" />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import groupview from '../groups/GroupView.vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'Groups',\r\n    components: { groupview },\r\n    props: {\r\n      groups: {\r\n        type: Array,\r\n        default: () => []\r\n      }\r\n    }\r\n  })\r\n</script>\r\n<style lang=\"scss\">\r\n  @import '~@/assets/scss/_variables.scss';\r\n  .group {\r\n\r\n    .row{\r\n          padding: 5px 5px 10px;\r\n        }\r\n\r\n    .grouplist {\r\n      background-color:$brand-white;\r\n      margin-top:30px;\r\n      padding: 15px 0;\r\n      margin-bottom:30px;\r\n    }\r\n\r\n  &:nth-child(odd) {\r\n    background: rgba(0,0,0,0.03);\r\n  }\r\n  }\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Groups.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Groups.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Groups.vue?vue&type=template&id=ee84b8f6\"\nimport script from \"./Groups.vue?vue&type=script&lang=ts\"\nexport * from \"./Groups.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Groups.vue?vue&type=style&index=0&id=ee84b8f6&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/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","<style lang=\"scss\" scoped>\r\n  @import \"../../assets/scss/_variables.scss\";\r\n\r\n  .section {\r\n    min-height: calc(100vh - 200px);\r\n    .button-width\r\n\r\n  {\r\n    width: 100%;\r\n    max-width: 300px;\r\n    direction: inline-block;\r\n  }\r\n\r\n  .feature {\r\n    background-color: $brand-white;\r\n    padding: 15px 0;\r\n    margin-bottom: 30px;\r\n  }\r\n\r\n  .spr-button {\r\n    margin-bottom: 10px;\r\n  }\r\n\r\n  h1 {\r\n    margin: 30px 0 30px;\r\n  }\r\n\r\n  .language {\r\n    margin-bottom: 30px;\r\n  }\r\n  .center {\r\n    text-align: center;\r\n  }\r\n  }\r\n</style>\r\n\r\n<template>\r\n  <div class=\"container section\">\r\n    <div class=\"row\">\r\n      <div class=\"col-12\">\r\n        <h1>\r\n          {{ section.name }}\r\n        </h1>\r\n      </div>\r\n    </div>\r\n    <div class=\"row feature\">\r\n      <div v-if=\"sectionLoading\" class=\"brand-red\">\r\n        <loading />\r\n      </div>\r\n      <div v-if=\"!sectionLoading\" class=\"col-12 district\">\r\n        <div class=\"col-12\">\r\n          {{ section.districtName }}\r\n        </div>\r\n        <div class=\"col-12 language\">\r\n          {{ $t('userAdmin.sectionLanguage') }} {{ sectionLanguage }}\r\n        </div>\r\n      </div>\r\n      <p v-if=\"!sectionLoading\" v-linkified:options=\"{ nl2br: true }\" class=\"col-12\">\r\n        {{ section.description }}\r\n      </p>\r\n    </div>\r\n\r\n    <div v-if=\"!sectionLoading\" class=\"row feature\">\r\n      <div class=\"col-12\">\r\n        <h5>{{ $t('section.actionGroupsTitle') }}</h5>\r\n        <p>\r\n          {{ $t('section.actionGroupsText') }}\r\n        </p>\r\n        <p v-if=\"section.actionGroups.length === 0\" class=\"center\">\r\n          {{ $t('section.noActionGroups') }}\r\n        </p>\r\n      </div>\r\n      <groups :groups=\"section.actionGroups\" />\r\n    </div>\r\n    <div v-if=\"!sectionLoading\" class=\"row feature\">\r\n      <div class=\"col-12\">\r\n        <h5>{{ $t('section.standardGroupsTitle') }}</h5>\r\n        <p>\r\n          {{ $t('section.standardGroupsText') }}\r\n        </p>\r\n        <p v-if=\"section.standardGroups.length === 0\" class=\"center\">\r\n          {{ $t('section.noStandardGroups') }}\r\n        </p>\r\n      </div>\r\n      <groups :groups=\"section.standardGroups\" />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import groups from './Groups.vue'\r\n  import loading from '../SPRLoading.vue'\r\n  import messages from '../../mixins/messages.js'\r\n\r\n  export default {\r\n    name: 'Section',\r\n    components: { groups, loading },\r\n    mixins: [messages],\r\n    data () {\r\n      return {\r\n        section: Object\r\n      }\r\n    },\r\n    computed: {\r\n      sectionLanguage: function () {\r\n        if (this.section.language === 0) {\r\n          return this.$t('languages.fi')\r\n        } else if (this.section.language === 1) {\r\n          return this.$t('languages.sv')\r\n        } else if (this.section.language === 2) {\r\n          return this.$t('userAdmin.bilingual')\r\n        }\r\n\r\n        return ''\r\n      }\r\n    },\r\n    created: function () {\r\n      this.getMySection()\r\n    },\r\n    methods: {\r\n      getMySection () {\r\n        var self = this\r\n        self.sectionLoading = true\r\n        var url = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.section[0]\r\n        this.$http.get(url).then(resp => {\r\n          self.section = resp.body\r\n          self.sectionLoading = false\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Section.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Section.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Section.vue?vue&type=template&id=1fa7cb24&scoped=true\"\nimport script from \"./Section.vue?vue&type=script&lang=js\"\nexport * from \"./Section.vue?vue&type=script&lang=js\"\nimport style0 from \"./Section.vue?vue&type=style&index=0&id=1fa7cb24&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1fa7cb24\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"deletionthankyou col-12\"},[_c('div',{staticClass:\"row mainimage\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"titlecontainer\"},[_c('h1',[_vm._v(_vm._s(_vm.deleteThanksTitle))])])])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"content\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('profile.deleteConfirmTitle')))]),_c('div',{staticClass:\"text\",domProps:{\"innerHTML\":_vm._s(_vm.$t('profile.deleteConfirmText'))}}),_c('div',{staticClass:\"buttons\"},[_c('spr-button',{attrs:{\"title\":_vm.buttonTitle,\"aria-label\":_vm.buttonTitle,\"primary\":true,\"click-event\":\"goToHomepage\"},on:{\"goToHomepage\":_vm.onGoToHomepage}})],1)])])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"deletionthankyou col-12\">\r\n    <div class=\"row mainimage\">\r\n      <div class=\"col-12\">\r\n        <div class=\"titlecontainer\">\r\n          <h1>{{ deleteThanksTitle }}</h1>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"col-12\">\r\n      <div class=\"container\">\r\n        <div class=\"row\">\r\n          <div class=\"col-12\">\r\n            <div class=\"content\">\r\n              <h4>{{ $t('profile.deleteConfirmTitle') }}</h4>\r\n              <div class=\"text\" v-html=\"$t('profile.deleteConfirmText')\">\r\n              </div>\r\n              <div class=\"buttons\">\r\n                <spr-button\r\n                  :title=\"buttonTitle\"\r\n                  :aria-label=\"buttonTitle\"\r\n                  :primary=\"true\"\r\n                  click-event=\"goToHomepage\"\r\n                  @goToHomepage=\"onGoToHomepage\"\r\n                />\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n  import Vue from 'vue'\r\n  import { LocaleMessage } from 'vue-i18n'\r\n  import SprButton from '@/components/SPRButton.vue'\r\n\r\n  export default Vue.extend({\r\n    name: 'DeletionThankYou',\r\n    components: { SprButton },\r\n    props: {\r\n      deletionrequest: { // from the query\r\n        type: Boolean,\r\n        default: false\r\n      }\r\n    },\r\n    computed: {\r\n      buttonTitle (): string | LocaleMessage {\r\n        return this.$t('profile.toHomepage')\r\n      },\r\n      deleteThanksTitle (): string | LocaleMessage {\r\n        return this.deletionrequest\r\n          ? this.$t('profile.deleteRequestedPageTitle')\r\n          : this.$t('profile.deletePageTitle')\r\n      }\r\n    },\r\n    methods: {\r\n      onGoToHomepage (): void {\r\n        this.$router.push('/')\r\n      }\r\n    }\r\n  })\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n  @import \"../assets/scss/_variables.scss\";\r\n  .deletionthankyou {\r\n    .mainimage {\r\n      background: url('https://sprvatistorage.blob.core.windows.net/eventimages/defaultevent_15.jpg') no-repeat 0 0;\r\n      background-size: cover;\r\n      background-position: center;\r\n      min-height: 400px;\r\n      box-shadow: 2px 2px 5px $brand-grey10;\r\n\r\n      .titlecontainer {\r\n        text-align: center;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        height: 100%;\r\n        h1 {\r\n          color: $brand-white;\r\n          padding: 15px;\r\n          background-color: $brand-red;\r\n          display: inline-block;\r\n        }\r\n      }\r\n    }\r\n    .content {\r\n      margin-top: 60px;\r\n      background-color: $brand-white;\r\n      padding: 30px;\r\n\r\n      .text {\r\n        margin-top: 20px;\r\n      }\r\n\r\n      .buttons {\r\n        text-align: center;\r\n        margin-top: 100px;\r\n      }\r\n    }\r\n  }\r\n</style>","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeletionThankYou.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeletionThankYou.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeletionThankYou.vue?vue&type=template&id=5fc7c221\"\nimport script from \"./DeletionThankYou.vue?vue&type=script&lang=ts\"\nexport * from \"./DeletionThankYou.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DeletionThankYou.vue?vue&type=style&index=0&id=5fc7c221&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"offset-3 col-6 notfound\"},[_c('h1',[_vm._v(\"Sivua ei löytynyt\")])])\n}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"offset-3 col-6 notfound\">\r\n    <h1>Sivua ei löytynyt</h1>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    name: 'Notfound'\r\n  }\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n  .notfound {\r\n    min-height: 400px;\r\n\r\n    h1 {\r\n         padding-top: 100px;\r\n         text-align: center;\r\n       }\r\n  }\r\n</style>\r\n","import mod from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NotFound.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NotFound.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./NotFound.vue?vue&type=template&id=71a068d6&scoped=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=js\"\nexport * from \"./NotFound.vue?vue&type=script&lang=js\"\nimport style0 from \"./NotFound.vue?vue&type=style&index=0&id=71a068d6&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"71a068d6\",\n  null\n  \n)\n\nexport default component.exports","// mixins used on all pages of the site\r\nimport JwtDecode from 'jwt-decode'\r\nimport Vue from 'vue'\r\nimport Store from '../store/index'\r\nimport { ProfileDeleteRequestOrigin } from '../types/index'\r\nexport default {\r\n  methods: {\r\n    fetchSettings: function () {\r\n      this.$http.get(this.$store.state.apiBases.systemservice + this.$store.state.apiEndpoints.settingsall[0]).then(response => {\r\n        this.$store.commit('setSettings', response.body)\r\n      })\r\n    },\r\n    // this is for updating your OWN profile\r\n    // todo: Another one for updating other people's profile (maybe not needed - see where it is used)\r\n    updateProfile: function (successCallback, failureCallback) {\r\n      var profile = this.$store.state.profile\r\n      if (profile) {\r\n        var uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.updateidentuser[0]\r\n        return this.$http.put(uri, profile)\r\n          .then(resp => {\r\n            return this.fetchProfilePromise()\r\n          })\r\n          .then(resp => {\r\n            return this.getShortToken()\r\n          })\r\n          .then(\r\n            response => {\r\n              if (successCallback != null) {\r\n                successCallback(response)\r\n              }\r\n            },\r\n            failure => {\r\n              if (failureCallback != null) {\r\n                failureCallback(failure)\r\n              }\r\n            })\r\n      }\r\n    },\r\n    updateOwnProfile: function (successCallback, failureCallback) {\r\n      var profile = this.$store.state.profile\r\n      if (profile) {\r\n        var uri = this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.updateownprofile[0]\r\n        return this.$http.put(uri, profile)\r\n          .then(resp => {\r\n            return this.fetchProfilePromise()\r\n          })\r\n          .then(resp => {\r\n            return this.getShortToken()\r\n          })\r\n          .then(\r\n            response => {\r\n              if (successCallback != null) {\r\n                successCallback(response)\r\n              }\r\n            },\r\n            failure => {\r\n              if (failureCallback != null) {\r\n                failureCallback(failure)\r\n              }\r\n            })\r\n      }\r\n    },\r\n    getShortToken: function (longToken) {\r\n      return new Promise((resolve, reject) => {\r\n        Vue.http.get(Store.state.token.refresh, { headers: { Authorization: 'bearer ' + longToken } }).then(result => {\r\n          sessionStorage.setItem('shorttoken', result.body)\r\n          Store.dispatch('setSessionJwtToken', result.body)\r\n          resolve(result.body)\r\n        }, f => {\r\n          console.log(f)\r\n          if (f.data === 'User has logged out.') {\r\n            this.logout('/login')\r\n          }\r\n        })\r\n      })\r\n    },\r\n    logout: function (redirect) {\r\n      this.$store.state.profile = {}\r\n      this.$store.commit('logout')\r\n      var token = sessionStorage.getItem('authtoken')\r\n      this.$http.get(this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.logout[0] + '?authtoken=' + token).then(response => {\r\n        sessionStorage.removeItem('authtoken')\r\n        sessionStorage.removeItem('shorttoken')\r\n        if (redirect) {\r\n          this.$router.push(redirect)\r\n        }\r\n        location.reload()\r\n      },\r\n      response => {\r\n        console.log('error while logging out', response)\r\n        sessionStorage.removeItem('authtoken')\r\n        sessionStorage.removeItem('shorttoken')\r\n        if (redirect) {\r\n          this.$router.push(redirect)\r\n        }\r\n        location.reload()\r\n      })\r\n    },\r\n    fetchProfile: function (successCallback, failureCallback) {\r\n      if (!this.$store.state.gettingProfile) {\r\n        this.$store.commit('profileFetchStarted')\r\n        var self = this\r\n        this.$http.get(this.$store.state.apiBases.userservice + this.$store.state.apiEndpoints.currentuser[0]).then(response => {\r\n          self.$store.commit('setProfile', response.body)\r\n          if (successCallback !== null) {\r\n            successCallback(response)\r\n          }\r\n        },\r\n        response => {\r\n          if (failureCallback !== null) {\r\n            failureCallback(response)\r\n          }\r\n        })\r\n      }\r\n    },\r\n    fetchProfilePromise () {\r\n      return new Promise((resolve, reject) => {\r\n        this.fetchProfile((response) => {\r\n          resolve(response)\r\n        }, (err) => {\r\n          reject(err)\r\n        })\r\n      })\r\n    },\r\n    getProfileDeleteRequestOriginText: function (id) {\r\n      if (!id) { return 'Oma' }\r\n\r\n      return ProfileDeleteRequestOrigin[id]\r\n    },\r\n    getMembershipStatusText: function (id) {\r\n      // MembershipStatus {\r\n      //  Active = 2,\r\n      //  Deceased = 4,\r\n      //  Terminated = 3,\r\n      //  Transfer = 1,\r\n      //  Undefined = 0\r\n      // }\r\n\r\n      switch (id.toString()) {\r\n        case '0': return this.$t('membershipStatus.undefined')\r\n        case '1': return this.$t('membershipStatus.transfer')\r\n        case '2': return this.$t('membershipStatus.active')\r\n        case '3': return this.$t('membershipStatus.terminated')\r\n        case '4': return this.$t('membershipStatus.deceased')\r\n      }\r\n    },\r\n    getAreaOfInterestText: function (id) {\r\n      return _.find(this.$store.state.profileAreasOfInterest, function (o) { return o.id === id }).text\r\n    },\r\n    getInvolvedEventCategories: function (id) {\r\n      return _.find(this.$store.state.involvedEventCategories, function (o) { return o.id === id }).text\r\n    },\r\n    getPersonalSkillsText: function (id) {\r\n      return _.find(this.$store.state.profilePersonalSkills, function (o) { return o.id === id }).text\r\n    },\r\n    normalizeTranslation: function (isoCode) {\r\n      if (!isoCode) {\r\n        return ''\r\n      }\r\n      var index = Object.keys(this.$store.state.translations[this.firstLanguage].languages).indexOf(isoCode)\r\n      if (index !== -1) {\r\n        return this.$t('languages.' + isoCode)\r\n      } else {\r\n        var el = _.find(this.$store.state.allLanguages, x => {\r\n          return x.isoCode === isoCode\r\n        })\r\n        return el.displayName\r\n      }\r\n    },\r\n    formatDate: function (isoDate) {\r\n      var d = new Date(isoDate)\r\n      return d.getDate() + '.' + (d.getMonth() + 1) + '.' + d.getFullYear()\r\n    },\r\n    lcFirst: function (str) {\r\n      return str.charAt(0).toLowerCase() + str.slice(1)\r\n    },\r\n    toLowerCamelCase: function (key) {\r\n      if (!key) return null\r\n      var keyLowerCamel = key.charAt(0).toLowerCase() + key.slice(1)\r\n      return keyLowerCamel\r\n    },\r\n    databaseIdToText: function (id, collection) {\r\n      if (isNaN(id)) return id\r\n      var item = _.find(collection, function (x) { return x.id === id })\r\n      if (!item) return id\r\n      var key = item.name\r\n      var keyLowerCamel = this.toLowerCamelCase(key)\r\n      return keyLowerCamel\r\n    },\r\n    idToText: function (id, collection) {\r\n      if (isNaN(id)) return id\r\n      var item = _.find(collection, function (x) { return x.id === id })\r\n      if (!item) return id\r\n      return item.text\r\n    },\r\n    prune: function (obj) {\r\n      for (var o in obj) {\r\n        if (!obj[o]) {\r\n          delete obj[o]\r\n        }\r\n      }\r\n      return obj\r\n    },\r\n    hasClaim: function (id, type) {\r\n      var token = this.jwtToken\r\n      if (token) {\r\n        var ids = token[type]\r\n        if (!ids) {\r\n          return false\r\n        }\r\n        if (Array.isArray(ids)) {\r\n          return ids.indexOf(id) >= 0\r\n        }\r\n        if (ids.toString().includes(';')) {\r\n          return ids.split(';').indexOf(id) > -1\r\n        }\r\n        return ids === id\r\n      }\r\n      return false\r\n    },\r\n    hasRole: function (role) {\r\n      return this.hasClaim(role, 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role')\r\n    },\r\n    hasRoleDelayed: function (role) {\r\n      this.hasClaim(role, 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role')\r\n      const token = Store.state.sessionJwtToken\r\n      if (!token) return false\r\n      const type = 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role'\r\n      if (token) {\r\n        var ids = token['http://schemas.microsoft.com/ws/2008/06/identity/claims/role']\r\n        if (!ids) {\r\n          return false\r\n        }\r\n        if (Array.isArray(ids)) {\r\n          return ids.indexOf(role) >= 0\r\n        }\r\n        if (ids.toString().includes(';')) {\r\n          return ids.split(';').indexOf(role) > -1\r\n        }\r\n        return ids === role\r\n      }\r\n      return false\r\n    },\r\n    hasAdminRole () {\r\n      return this.hasRoleDelayed('Admin')\r\n    },\r\n    hasFriendshipAdminRole () {\r\n      return this.hasRoleDelayed('FriendshipAdmin')\r\n    },\r\n    inSection: function (section) {\r\n      section = section.toString() // the section claim is a string\r\n      return this.hasClaim(section, 'SectionMembership')\r\n    },\r\n    inDistrict: function (district) {\r\n      district = district.toString()\r\n      return this.hasClaim(district, 'DistrictMembership')\r\n    },\r\n    decodeJwtToken: function (token) {\r\n      return JwtDecode(token)\r\n    },\r\n    allowedInSection: function (section, district) {\r\n      return this.hasRole('Admin') || this.hasRole('NationalAdmin') || this.hasRole('NationalEmployee') ||\r\n      (this.hasRole('Employee') && this.inDistrict(district)) ||\r\n        ((this.hasRole('J1') || this.hasRole('J2')) && this.inSection(section))\r\n    },\r\n    // NOTE : All the methods below are ports of the back end permissions methods. Ensure these match the back end for consistency!\r\n    hasAdmin () {\r\n      return this.hasRole('Admin')\r\n    },\r\n    hasAdminToDistrict (district) {\r\n      return this.hasRole('Admin') ||\r\n            (this.hasRole('Employee') && this.inDistrict(district)) ||\r\n            (this.hasRole('DistrictAdmin') && this.inDistrict(district)) ||\r\n            this.hasRole('NationalAdmin') ||\r\n            this.hasRole('NationalEmployee') //TODO: Do we need to check if the NationalAdmin is inDistrict?\r\n    },\r\n    hasAdminToSection (sectionId, extendToJ2 = false) {\r\n      let districtId = 0\r\n      const section = _.find(this.$store.state.sections, (section) => {\r\n        return Number(section.id) === Number(sectionId)\r\n      })\r\n      if (section) {\r\n        districtId = section.districtId\r\n      } else {\r\n        return false\r\n      }\r\n      return this.hasAdminToDistrict(districtId) ||\r\n             (this.hasRole('J1') && this.inSection(sectionId)) ||\r\n             ((this.hasRole('J2') && extendToJ2) && this.inSection(sectionId))\r\n    },\r\n    hasAdminToFriendship (districtId = 0) {\r\n      return this.hasRole('Admin') ||\r\n             this.hasRole('FriendshipAdmin') ||\r\n             (districtId > 0 && this.hasRole('DistrictFriendshipAdmin') && this.inDistrict(districtId.toString()))\r\n    },\r\n    hasAdminToFriendManagementGroup (fmg) {\r\n      return this.hasAdminToFriendship() ||\r\n             (this.hasRole('FriendshipGroupManager') && this.belongsToFriendshipGroup(fmg)) ||\r\n             (this.hasRole('DistrictFriendshipAdmin') && this.belongsToFriendshipGroup(fmg))\r\n    },\r\n    hasAdminToFriendManagementGroups (fmgs) {\r\n      if (this.hasAdminToFriendship()) return true\r\n\r\n      if (this.hasRole('FriendshipGroupManager') || this.hasRole('DistrictFriendshipAdmin')) {\r\n        var found = _.find(fmgs, (gp) => {\r\n          return this.belongsToFriendshipGroup(gp)\r\n        })\r\n        return Boolean(found)\r\n      }\r\n      return false\r\n    },\r\n    hasBrokerRole (fmg) {\r\n      return this.hasAdminToFriendship() ||\r\n             (this.hasRole('DistrictFriendshipAdmin') && this.belongsToFriendshipGroup(fmg)) ||\r\n             (this.hasRole('FriendshipGroupManager') && this.belongsToFriendshipGroup(fmg)) ||\r\n             (this.hasRole('FriendshipBroker') && this.belongsToFriendshipGroup(fmg))\r\n    },\r\n    hasNetBrokerRole (fmg) {\r\n      return this.hasAdminToFriendship() ||\r\n             (this.hasRole('FriendshipGroupManager') && this.belongsToFriendshipGroup(fmg)) ||\r\n             (this.hasRole('NetFriendshipBroker') && this.belongsToFriendshipGroup(fmg) && _.find(this.$store.state.netFriendshipGroups, x => x === Number(fmg)))\r\n    },\r\n    hasTrainingRole () {\r\n      return this.hasRole('Admin') ||\r\n             this.hasRole('NationalAdmin') ||\r\n             this.hasRole('FriendshipAdmin') ||\r\n             this.hasRole('DistrictAdmin') ||\r\n             this.hasRole('DistrictFriendshipAdmin') ||\r\n             this.hasRole('FriendshipTrainer')\r\n    },\r\n    isCurrentUser (profileId) {\r\n      return this.hasClaim(profileId, 'ProfileId')\r\n    },\r\n    belongsToFriendshipGroup (fmg) {\r\n      var token = this.jwtToken\r\n      fmg = Number(fmg)\r\n      if (token) {\r\n        var fmgids = token.FriendshipGroups ? token.FriendshipGroups.split(';') : null\r\n        var netFmgids = token.NetFriendshipGroups ? token.NetFriendshipGroups.split(';') : null\r\n\r\n        if (!fmgids) fmgids = []\r\n        if (!netFmgids) netFmgids = []\r\n\r\n        if (!fmgids.length && !netFmgids.length) return false\r\n\r\n        // get just the ids and dedupe\r\n        fmgids = [...new Set(Array.from(fmgids, x => this.getFmgId(x)))]\r\n        netFmgids = [...new Set(Array.from(netFmgids, x => this.getFmgId(x)))]\r\n\r\n        return fmgids.indexOf(fmg) > -1 || netFmgids.indexOf(fmg) > -1\r\n      }\r\n      return false\r\n    },\r\n    getFmgId (fmgclaim) {\r\n      // fmgs are in the format 'fmgname:id' - just return id bit\r\n      var colonIndex = fmgclaim.lastIndexOf(':')\r\n      if (colonIndex === -1) return 0\r\n      return Number(fmgclaim.substring(colonIndex + 1))\r\n    },\r\n    httpPromise: function (verb, uri, payload, self) {\r\n      if (!self) {\r\n        self = this\r\n      }\r\n\r\n      return new Promise(function (resolve, reject) {\r\n        self.$http[verb](uri, payload).then(success => {\r\n          resolve(success.data)\r\n        }).catch(error => {\r\n          reject(error)\r\n        })\r\n      })\r\n    }\r\n  },\r\n  computed: {\r\n    authHeader: function () {\r\n      var token = sessionStorage.getItem('authtoken')\r\n      if (token) {\r\n        return { headers: { Authorization: 'Bearer ' + token } }\r\n      } else {\r\n        return null\r\n      }\r\n    },\r\n    firstLanguage: function () {\r\n      return Object.keys(this.$store.state.translations)[0]\r\n    },\r\n    jwtToken: function () {\r\n      var st = Store.state.sessionJwtToken\r\n      // var st = sessionStorage.getItem('shorttoken')\r\n      if (st) {\r\n        // return JwtDecode(st)\r\n        return st\r\n      }\r\n      return null\r\n    },\r\n    settings: function () {\r\n      var st = Store.state.omaSettings\r\n      if (st) {\r\n        return st\r\n      }\r\n      return null\r\n    }\r\n  }\r\n}\r\n","import Vue from 'vue'\r\nimport Router from 'vue-router'\r\nimport wizard from '@/components/signupwizard/Wizard.vue'\r\n\r\n/* eslint-disable */\r\nimport join from '@/components/joinform/Join.vue'\r\nimport joinreturn from '@/components/joinform/Return.vue'\r\n/* eslint-enable */\r\n\r\nimport landingpage from '@/components/landingpage/LandingCampaign.vue'\r\nimport netcustomer from '@/components/netsignupwizard/AnonNetCustomerForm.vue'\r\nimport standardcustomer from '@/components/standardsignupwizard/AnonCustomerForm.vue'\r\nimport thanks from '@/components/signupwizard/Wizard-Thanks.vue'\r\nimport front from '@/components/Front.vue'\r\nimport login from '@/components/Login.vue'\r\nimport adsignin from '@/components/AdSignin.vue'\r\nimport profile from '@/components/Profile.vue'\r\nimport editor from '@/components/profile-editor/Editor.vue'\r\nimport profileidentvolunteerform from '@/components/friends/ProfileIdentVolunteerForm.vue' // this is for volunteers to update their OWN profile\r\nimport profileidentvolunteerformeditcommon from '@/components/friends/ProfileIdentVolunteerFormCommon.vue'\r\nimport profileidentvolunteerformeditstandard from '@/components/friends/ProfileIdentVolunteerFormStandard.vue'\r\nimport profileidentvolunteerformeditnet from '@/components/friends/ProfileIdentVolunteerFormNet.vue'\r\nimport profileidentstandardvolunteerform from '@/components/friends/ProfileIdentStandardVolunteerForm.vue'\r\nimport profileidentnetvolunteerform from '@/components/friends/ProfileIdentNetVolunteerForm.vue'\r\nimport profilenonidentstandardvolunteerform from '@/components/friends/ProfileNonIdentStandardVolunteerForm.vue'\r\nimport profilenonidentnetvolunteerform from '@/components/friends/ProfileNonIdentNetVolunteerForm.vue'\r\nimport customerstandardform from '@/components/friends/CustomerStandardForm.vue'\r\nimport customernetform from '@/components/friends/CustomerNetForm.vue'\r\nimport customersearch from '@/components/friends/CustomerSearch.vue'\r\nimport customerpreview from '@/components/friends/CustomerPreview.vue'\r\nimport customerfindmatch from '@/components/friends/CustomerFindMatch.vue'\r\nimport customermatchvolunteerdetails from '@/components/friends/CustomerMatchVolunteerDetails.vue'\r\nimport customersummarynetlink from '@/components/friends/CustomerSummaryNetLink.vue'\r\nimport customersummarystandardlink from '@/components/friends/CustomerSummaryStandardLink.vue'\r\nimport volunteerpreview from '@/components/friends/VolunteerPreview.vue'\r\nimport volunteerfindmatch from '@/components/friends/VolunteerFindMatch.vue'\r\nimport volunteermatchcustomerdetails from '@/components/friends/VolunteerMatchCustomerDetails.vue'\r\nimport pooladd from '@/components/friends/PoolAdd.vue'\r\nimport pooledit from '@/components/friends/PoolEdit.vue'\r\nimport pooldetail from '@/components/friends/PoolDetail.vue'\r\n\r\nimport translate from '@/components/cms/Translations.vue'\r\n\r\nimport testcors from '@/components/tools/TestCors'\r\nimport testenums from '@/components/tools/TestEnums'\r\n\r\nimport useradmin from '@/components/useradmin/UserAdmin.vue'\r\nimport superadmin from '@/components/useradmin/Admin.vue'\r\nimport friendshipgroups from '@/components/useradmin/FriendshipGroups.vue'\r\n\r\nimport newvolunteerform from '@/components/groups/AddVolunteer.vue'\r\nimport group from '@/components/groups/Group.vue'\r\nimport groupall from '@/components/groups/GroupAll.vue'\r\nimport creategroup from '@/components/groups/CreateGroup.vue'\r\nimport groupnotes from '@/components/groups/Notes.vue'\r\nimport acceptinvitation from '@/components/groups/AcceptInvitation.vue'\r\n\r\nimport eventpage from '@/components/events/Event.vue'\r\nimport createevent from '@/components/events/EventCreate.vue'\r\nimport eventlist from '@/components/events/EventList.vue'\r\nimport eventleave from '@/components/events/EventLeavePage.vue'\r\nimport myorganisedevents from '@/components/events/MyOrganisedEvents.vue'\r\nimport myparticipatedevents from '@/components/events/MyParticipatedEvents.vue'\r\n\r\nimport messages from '@/components/messages/Messages.vue'\r\nimport messagedetail from '@/components/messages/MessageDetail.vue'\r\n\r\nimport restorepw from '@/components/profile-editor/ForgotPassword.vue'\r\nimport resetpw from '@/components/profile-editor/ResetPassword.vue'\r\nimport resetexpiredpw from '@/components/profile-editor/ResetExpiredPassword.vue'\r\n\r\nimport section from '@/components/sections/Section.vue'\r\nimport deletionthankyou from '@/components/DeletionThankYou.vue'\r\nimport notfound from '@/components/NotFound.vue'\r\nimport CommonMixins from '../mixins/common.js'\r\nVue.use(Router)\r\n\r\nconst router = new Router({\r\n  mode: 'history',\r\n  routes: [\r\n    {\r\n      path: '/',\r\n      name: 'front',\r\n      component: front,\r\n      meta: { isAnon: true }\r\n    },\r\n    {\r\n      path: '/restore/:token',\r\n      name: 'restore',\r\n      component: resetpw,\r\n      props: true,\r\n      meta: { isAnon: true }\r\n    },\r\n    {\r\n      path: '/resetexpired/:email',\r\n      name: 'resetexpired',\r\n      component: resetexpiredpw,\r\n      props: true,\r\n      meta: { isAnon: true }\r\n    },\r\n    {\r\n      path: '/restore',\r\n      name: 'restoreinit',\r\n      component: restorepw,\r\n      meta: { isAnon: true }\r\n    },\r\n    {\r\n      path: '/front',\r\n      name: 'frontfull',\r\n      component: front,\r\n      meta: { isAnon: true }\r\n    },\r\n    {\r\n      path: '/thankyou',\r\n      name: 'thankyou',\r\n      component: deletionthankyou,\r\n      props (route) {\r\n        const props = { ...route.query }\r\n        props.deletionrequest = Boolean(props.deletionrequest) // force to boolean\r\n        return props\r\n      },\r\n      meta: { isAnon: true }\r\n    },\r\n    {\r\n      path: '/nalkapaiva',\r\n      name: 'hungerdays',\r\n      component: landingpage,\r\n      meta: { isAnon: true },\r\n      alias: ['/hungerdays', '/hungerdagen']\r\n    },\r\n    {\r\n      path: '/tule-mukaan',\r\n      name: 'wizard',\r\n      component: wizard,\r\n      meta: { isAnon: true },\r\n      alias: ['/register', '/komma-med']\r\n    },\r\n    {\r\n      path: '/liity-jaseneksi/:page?',\r\n      name: 'join',\r\n      component: join,\r\n      meta: { isAnon: true },\r\n      props: true,\r\n      alias: ['/bli-medlem/:page?', '/join-as-member/:page?']\r\n    },\r\n    {\r\n      path: '/liity-jaseneksi/:status/:transactionId/:flow?',\r\n      name: 'joinReturn',\r\n      component: joinreturn,\r\n      props: true,\r\n      meta: { isAnon: true },\r\n      alias: ['/bli-medlem/:status/:transactionId/:flow?', '/join-as-member/:status/:transactionId/:flow?']\r\n    },\r\n\r\n    {\r\n      path: '/verkkoystava',\r\n      name: 'netcustomer',\r\n      component: netcustomer,\r\n      meta: { isAnon: true }\r\n    },\r\n    {\r\n      path: '/verkkoystavayhteenveto/:key',\r\n      name: 'customersummarynet',\r\n      component: customersummarynetlink,\r\n      meta: { isAnon: true },\r\n      alias: ['/customersummarynet', '/' + encodeURIComponent('onlinevänssammanfattning')]\r\n    },\r\n    {\r\n      path: '/ystavatoimintayhteenveto/:key',\r\n      name: 'customersummarystandard',\r\n      component: customersummarystandardlink,\r\n      meta: { isAnon: true },\r\n      alias: ['/customersummarystandard', '/' + encodeURIComponent('standardvänssammanfattning')]\r\n    },\r\n    {\r\n      path: '/ystavatoiminta',\r\n      name: 'standardcustomer',\r\n      component: standardcustomer,\r\n      meta: { isAnon: true }\r\n    },\r\n    {\r\n      path: '/tule-mukaan/ilmoittautuminen-onnistui',\r\n      name: 'registerthanks',\r\n      component: thanks,\r\n      meta: { isAnon: true },\r\n      alias: ['/register-thanks', '/komma-med/registrering-var-framgangsrik']\r\n    },\r\n    {\r\n      path: '/tule-mukaan/:token',\r\n      name: 'wizard-ad',\r\n      component: wizard,\r\n      props: true,\r\n      meta: { isAnon: true },\r\n      alias: ['/register/:token', '/komma-med/:token']\r\n    },\r\n    {\r\n      path: '/login',\r\n      name: 'login',\r\n      component: login,\r\n      meta: { isAnon: true }\r\n    },\r\n    {\r\n      path: '/adsignin',\r\n      name: 'adsignin',\r\n      component: adsignin,\r\n      meta: { isAnon: true },\r\n      props: true\r\n    },\r\n    {\r\n      path: '/profile',\r\n      name: 'profile',\r\n      component: profile\r\n    },\r\n    {\r\n      path: '/profile/:editor',\r\n      name: 'profile-editor',\r\n      component: editor,\r\n      props: true\r\n    },\r\n    {\r\n      path: '/friend/pools/:groupid/add',\r\n      name: 'addfriendshippool',\r\n      component: pooladd,\r\n      props (route) {\r\n        const props = { ...route.params }\r\n        props.groupid = +props.groupid // force to number\r\n        return props\r\n      }\r\n    },\r\n    {\r\n      path: '/friend/pools/:groupid/:poolid/edit',\r\n      name: 'editfriendshippool',\r\n      component: pooledit,\r\n      props (route) {\r\n        const props = { ...route.params }\r\n        props.groupid = +props.groupid // force to number\r\n        props.poolid = +props.poolid\r\n        return props\r\n      }\r\n    },\r\n    {\r\n      path: '/friend/customerpreview/:groupid/:id/:volunteerid?',\r\n      name: 'customerpreview',\r\n      component: customerpreview,\r\n      props: true\r\n    },\r\n    {\r\n      path: '/friend/customermatch/:groupid/:customerid',\r\n      name: 'customerfindmatch',\r\n      component: customerfindmatch,\r\n      props: true\r\n    },\r\n    {\r\n      path: '/friend/customermatch/:groupid/:customerid/:volunteerid',\r\n      name: 'customermatchvolunteer',\r\n      component: customermatchvolunteerdetails,\r\n      props (route) {\r\n        const props = { ...route.params }\r\n        props.groupid = +props.groupid // force to number\r\n        props.volunteerid = +props.volunteerid\r\n        props.customerid = +props.customerid\r\n        return props\r\n      }\r\n    },\r\n    {\r\n      path: '/friend/volunteerpreview/:groupid/:id/:customerid?',\r\n      name: 'volunteerpreview',\r\n      component: volunteerpreview,\r\n      props: true\r\n    },\r\n    {\r\n      path: '/friend/volunteermatch/:groupid/:volunteerid',\r\n      name: 'volunteerfindmatch',\r\n      component: volunteerfindmatch,\r\n      props: true\r\n    },\r\n    {\r\n      path: '/friend/volunteermatch/:groupid/:volunteerid/:customerid',\r\n      name: 'volunteermatchcustomer',\r\n      component: volunteermatchcustomerdetails,\r\n      props (route) {\r\n        const props = { ...route.params }\r\n        props.groupid = +props.groupid // force to number\r\n        props.volunteerid = +props.volunteerid\r\n        props.customerid = +props.customerid\r\n        return props\r\n      }\r\n    },\r\n    // This is for a volunteer to add their own Ident Friendship Profile\r\n    {\r\n      path: '/friend/volunteer/add',\r\n      name: 'friendprofileadd',\r\n      component: profileidentvolunteerform\r\n    },\r\n    // This is for a volunteer to update their own Friendship Profile\r\n    {\r\n      path: '/friend/volunteer/edit',\r\n      name: 'friendprofileedit',\r\n      component: profileidentvolunteerform\r\n    },\r\n    {\r\n      path: '/friend/volunteer/edit/common',\r\n      name: 'friendprofileeditcommon',\r\n      component: profileidentvolunteerformeditcommon\r\n    },\r\n    {\r\n      path: '/friend/volunteer/edit/standard',\r\n      name: 'friendprofileeditstandard',\r\n      component: profileidentvolunteerformeditstandard\r\n    },\r\n    {\r\n      path: '/friend/volunteer/edit/net',\r\n      name: 'friendprofileeditnet',\r\n      component: profileidentvolunteerformeditnet\r\n    },\r\n    {\r\n      path: '/friend/volunteer/add/standard',\r\n      name: 'friendprofileaddstandard',\r\n      component: profileidentvolunteerformeditstandard,\r\n      props (route) {\r\n        return {\r\n          isAdd: true\r\n        }\r\n      }\r\n    },\r\n    {\r\n      path: '/friend/volunteer/add/net',\r\n      name: 'friendprofileaddnet',\r\n      component: profileidentvolunteerformeditnet,\r\n      props (route) {\r\n        return {\r\n          isAdd: true\r\n        }\r\n      }\r\n    },\r\n    {\r\n      path: '/friend/search/:id/:searchmode',\r\n      name: 'customersearch',\r\n      component: customersearch,\r\n      props: true\r\n    },\r\n    {\r\n      path: '/friend/groups',\r\n      name: 'friendshipgroups',\r\n      component: friendshipgroups\r\n    },\r\n    {\r\n      path: '/friend/pools/:groupid/:poolid',\r\n      name: 'pooldetail',\r\n      component: pooldetail,\r\n      props (route) {\r\n        const props = { ...route.params }\r\n        props.groupid = +props.groupid // force to number\r\n        props.poolid = +props.poolid\r\n        return props\r\n      }\r\n    },\r\n    {\r\n      // Superadmin\r\n      path: '/admin',\r\n      name: 'admin',\r\n      component: superadmin\r\n    },\r\n    {\r\n      /*\r\n\r\n      /admin/user\r\n      /admin/district\r\n      /admin/section\r\n      /admin/group\r\n      /admin/event\r\n      /admin/employee\r\n\r\n      lists available items of that primary type\r\n      */\r\n      path: '/admin/:primary',\r\n      name: 'admin-action-listing',\r\n      component: superadmin,\r\n      props: true\r\n    },\r\n    {\r\n      /*\r\n        /admin/user/2 ...etc -> pull data for editing by id\r\n      */\r\n      path: '/admin/:primary/:id',\r\n      name: 'admin-action-edit',\r\n      component: superadmin,\r\n      props: true\r\n    },\r\n    {\r\n      /*\r\n\r\n      /admin/section/23/user ... etc\r\n\r\n      -> lists available items of primary type, filtered by\r\n      predicate contstructed from :filter and :id\r\n\r\n      :filter can be any of the same values as :primary\r\n      =one of [user, district, section, group, event]\r\n\r\n      Not all permutations make sense: listing district where\r\n      section.id = 42 makes no sense, the different combinations\r\n      need to be validated by the state machine handling\r\n      the admin page state\r\n\r\n      */\r\n      path: '/admin/:filter/:id/:primary',\r\n      name: 'admin-action-listing-filtered',\r\n      component: superadmin,\r\n      props: true\r\n    },\r\n    {\r\n      path: '/useradmin',\r\n      name: 'useradmin',\r\n      component: useradmin\r\n    },\r\n    {\r\n      path: '/tools/testcors',\r\n      name: 'testcors',\r\n      component: testcors\r\n    },\r\n    {\r\n      path: '/tools/testenums',\r\n      name: 'testenums',\r\n      component: testenums\r\n    },\r\n    {\r\n      path: '/groups/group/:groupid/addvolunteer',\r\n      name: 'newvolunteerform',\r\n      component: newvolunteerform\r\n    },\r\n    {\r\n      path: '/groups/create',\r\n      name: 'creategroup',\r\n      component: creategroup,\r\n      props: { type: 2 }\r\n    },\r\n    {\r\n      path: '/groups/group/:groupid/notes',\r\n      name: 'groupnotes',\r\n      component: groupnotes\r\n    },\r\n    {\r\n      path: '/groups',\r\n      name: 'groupall',\r\n      component: groupall\r\n    },\r\n    {\r\n      path: '/groups/group/:id',\r\n      name: 'group',\r\n      component: group\r\n    },\r\n    {\r\n      path: '/groups/acceptinvitation/:id',\r\n      name: 'acceptinvitation',\r\n      component: acceptinvitation\r\n    },\r\n    {\r\n      path: '/messages',\r\n      name: 'messages',\r\n      component: messages\r\n    },\r\n    {\r\n      path: '/messages/:type/:id',\r\n      name: 'messagedetail',\r\n      component: messagedetail\r\n    },\r\n    {\r\n      path: '/friend/standardcustomer/add/:groupId',\r\n      name: 'customerstandardadd',\r\n      component: customerstandardform,\r\n      props (route) {\r\n        const props = { ...route.params }\r\n        props.groupId = +props.groupId // force to number\r\n        return props\r\n      }\r\n    },\r\n    { // todo - adding a net customer\r\n      path: '/friend/netcustomer/add/:groupId',\r\n      name: 'customernetadd',\r\n      component: customernetform,\r\n      props (route) {\r\n        const props = { ...route.params }\r\n        props.groupId = +props.groupId // force to number\r\n        return props\r\n      }\r\n    },\r\n    {\r\n      path: '/friend/standardcustomer/edit/:groupId/:customerId',\r\n      name: 'customerstandardedit',\r\n      component: customerstandardform,\r\n      props (route) {\r\n        const props = { ...route.params }\r\n        props.groupId = +props.groupId // force to number\r\n        props.customerId = +props.customerId // force to number\r\n        return props\r\n      }\r\n    },\r\n    {\r\n      path: '/friend/netcustomer/edit/:groupId/:customerId',\r\n      name: 'customernetedit',\r\n      component: customernetform,\r\n      props (route) {\r\n        const props = { ...route.params }\r\n        props.groupId = +props.groupId // force to number\r\n        props.customerId = +props.customerId // force to number\r\n        return props\r\n      }\r\n    },\r\n    // This is for a friend broker or above to add a new non ident Volunteer to a standard group\r\n    {\r\n      path: '/friend/standardprofile/add/:groupId',\r\n      name: 'nonidentprofilestandardadd',\r\n      component: profilenonidentstandardvolunteerform,\r\n      props (route) {\r\n        const props = { ...route.params }\r\n        props.groupId = +props.groupId // force to number\r\n        return props\r\n      }\r\n    },\r\n    // This is for a friend broker or above to edit a non ident Volunteer in a standard group\r\n    {\r\n      path: '/friend/standardprofile/edit/:groupId/:profileId',\r\n      name: 'nonidentprofilestandardedit',\r\n      component: profilenonidentstandardvolunteerform,\r\n      props (route) {\r\n        const props = { ...route.params }\r\n        props.groupId = +props.groupId // force to number\r\n        props.profileId = +props.profileId // force to number\r\n        return props\r\n      }\r\n    },\r\n    // This is for a friend broker or above to edit an ident volunteer in a standard group\r\n    {\r\n      path: '/friend/standardprofile/ident/edit/:groupId/:profileId',\r\n      name: 'identprofilestandardedit',\r\n      component: profileidentstandardvolunteerform,\r\n      props (route) {\r\n        const props = { ...route.params }\r\n        props.groupId = +props.groupId // force to number\r\n        props.profileId = +props.profileId // force to number\r\n        return props\r\n      }\r\n    },\r\n    // This is for a net friend broker or above to add a non ident volunteer in a net group\r\n    {\r\n      path: '/friend/netprofile/add/:groupId',\r\n      name: 'nonidentprofilenetadd',\r\n      component: profilenonidentnetvolunteerform,\r\n      props (route) {\r\n        const props = { ...route.params }\r\n        props.groupId = +props.groupId // force to number\r\n        return props\r\n      }\r\n    },\r\n    // This is for a net friend broker or above to edit a non ident volunteer in a net group\r\n    {\r\n      path: '/friend/netprofile/edit/:groupId/:profileId',\r\n      name: 'nonidentprofilenetedit',\r\n      component: profilenonidentnetvolunteerform,\r\n      props (route) {\r\n        const props = { ...route.params }\r\n        props.groupId = +props.groupId // force to number\r\n        props.profileId = +props.profileId // force to number\r\n        return props\r\n      }\r\n    },\r\n    // This is for a net friend broker or above to edit an ident volunteer in a net group\r\n    {\r\n      path: '/friend/netprofile/ident/edit/:groupId/:profileId',\r\n      name: 'identprofilenetedit',\r\n      component: profileidentnetvolunteerform,\r\n      props (route) {\r\n        const props = { ...route.params }\r\n        props.groupId = +props.groupId // force to number\r\n        props.profileId = +props.profileId // force to number\r\n        return props\r\n      }\r\n    },\r\n    {\r\n      path: '/events',\r\n      name: 'eventlist',\r\n      component: eventlist,\r\n      props: true\r\n    },\r\n    {\r\n      path: '/events/organised',\r\n      name: 'organisedevents',\r\n      component: myorganisedevents\r\n    },\r\n    {\r\n      path: '/events/participated',\r\n      name: 'participatedevents',\r\n      component: myparticipatedevents\r\n    },\r\n    {\r\n      path: '/publicevents',\r\n      name: 'publiceventlist',\r\n      component: eventlist,\r\n      props: true,\r\n      meta: { isAnon: true }\r\n    },\r\n    {\r\n      path: '/event',\r\n      name: 'eventadd',\r\n      component: eventpage\r\n    },\r\n    {\r\n      path: '/event/cancel/:cancellationToken',\r\n      name: 'eventleavepublic',\r\n      component: eventleave,\r\n      props: true,\r\n      meta: { isAnon: true }\r\n    },\r\n    {\r\n      path: '/event/:id',\r\n      name: 'eventpage',\r\n      component: eventpage,\r\n      meta: { isAnon: true }\r\n    },\r\n    {\r\n      path: '/event/:id/:mode',\r\n      name: 'eventpagemode',\r\n      component: eventpage\r\n    },\r\n    {\r\n      path: '/createevent',\r\n      name: 'createevent',\r\n      component: createevent\r\n    },\r\n    {\r\n      path: '/section',\r\n      name: 'section',\r\n      component: section\r\n    },\r\n    {\r\n      path: '/cms/translate',\r\n      name: 'translator',\r\n      component: translate,\r\n      beforeEnter: (to, from, next) => {\r\n        const hasAdminRole = CommonMixins.methods.hasAdminRole() || CommonMixins.methods.hasFriendshipAdminRole()\r\n        if (hasAdminRole) {\r\n          next()\r\n        } else {\r\n          next(false)\r\n        }\r\n      }\r\n    },\r\n    {\r\n      path: '/notfound',\r\n      component: notfound,\r\n      meta: { isAnon: true }\r\n    },\r\n    {\r\n      path: '*',\r\n      redirect: '/notfound',\r\n      meta: { isAnon: true }\r\n    }\r\n  ],\r\n  scrollBehavior (to, from, savedPosition) {\r\n    // by default, move to the top of the page when changing between routes\r\n    return { x: 0, y: 0 }\r\n  }\r\n})\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n  if (to.path.startsWith('/static.html')) {\r\n    window.location.href = to.fullPath\r\n  } else {\r\n    if (sessionStorage.getItem('authtoken') == null) {\r\n      if (!to.meta.isAnon) {\r\n        window.location.href = '/login?from=' + to.path\r\n      }\r\n    }\r\n\r\n    // Used by back button in case user came from login redirect. Perhaps there is a better way..?\r\n    sessionStorage.setItem('prev', from.path)\r\n    next()\r\n  }\r\n})\r\n\r\nexport default router\r\n","import Vue from 'vue'\r\nimport VueResource from 'vue-resource'\r\nimport { Rule, RuleValidate } from 'vee-validate'\r\n\r\nVue.use(VueResource)\r\n\r\nconst validatorHasCheckboxSelected: RuleValidate | Rule = {\r\n  getMessage (field: string, args: Array<any>): string {\r\n    return 'validation.' + field\r\n  },\r\n  validate (value: number, args: Array<any> | undefined | object): boolean {\r\n    if (Array.isArray(value) && value.length > 0) {\r\n      // Check if any element in args has an object with selected equals to true\r\n      return value.some(item => typeof item === 'object' && item.selected === true)\r\n    }\r\n\r\n    // If args is not an array or has no elements, return false\r\n    return false\r\n  }\r\n}\r\n\r\nexport default validatorHasCheckboxSelected","// The Vue build version to load with the `import` command\r\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\r\nimport Vue from 'vue'\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport VueI18n from 'vue-i18n'\r\nimport VeeValidate from 'vee-validate'\r\nimport VueResource from 'vue-resource'\r\nimport BootstrapVue from 'bootstrap-vue'\r\nimport CommonMixins from './mixins/common.js'\r\nimport Alerts from './mixins/alerts.js'\r\nimport store from './store'\r\nimport VueMeta from 'vue-meta'\r\nimport { library } from '@fortawesome/fontawesome-svg-core'\r\nimport { FontAwesomeIcon, FontAwesomeLayers } from '@fortawesome/vue-fontawesome'\r\n\r\n// Font awesome icons used in the applications\r\n\r\nimport { faAngleDoubleLeft } from '@fortawesome/free-solid-svg-icons/faAngleDoubleLeft'\r\nimport { faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons/faAngleDoubleRight'\r\nimport { faAngleDown } from '@fortawesome/free-solid-svg-icons/faAngleDown'\r\nimport { faAngleLeft } from '@fortawesome/free-solid-svg-icons/faAngleLeft'\r\nimport { faAt } from '@fortawesome/free-solid-svg-icons/faAt'\r\nimport { faBan } from '@fortawesome/free-solid-svg-icons/faBan'\r\nimport { faBars } from '@fortawesome/free-solid-svg-icons/faBars'\r\nimport { faBinoculars } from '@fortawesome/free-solid-svg-icons/faBinoculars'\r\nimport { faCalendar } from '@fortawesome/free-solid-svg-icons/faCalendar'\r\nimport { faCaretDown } from '@fortawesome/free-solid-svg-icons/faCaretDown'\r\nimport { faCaretRight } from '@fortawesome/free-solid-svg-icons/faCaretRight'\r\nimport { faCheck } from '@fortawesome/free-solid-svg-icons/faCheck'\r\nimport { faCheckCircle } from '@fortawesome/free-solid-svg-icons/faCheckCircle'\r\nimport { faCheckCircle as faCheckCircleO } from '@fortawesome/free-regular-svg-icons/faCheckCircle'\r\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons/faChevronDown'\r\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons/faChevronLeft'\r\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons/faChevronRight'\r\nimport { faChevronUp } from '@fortawesome/free-solid-svg-icons/faChevronUp'\r\nimport { faCircle } from '@fortawesome/free-solid-svg-icons/faCircle'\r\nimport { faClock as faClockO } from '@fortawesome/free-regular-svg-icons/faClock'\r\nimport { faComment as faCommentO } from '@fortawesome/free-regular-svg-icons/faComment'\r\nimport { faCopyright } from '@fortawesome/free-solid-svg-icons/faCopyright'\r\nimport { faEdit } from '@fortawesome/free-solid-svg-icons/faEdit'\r\nimport { faEnvelope } from '@fortawesome/free-solid-svg-icons/faEnvelope'\r\nimport { faEuroSign } from '@fortawesome/free-solid-svg-icons/faEuroSign'\r\nimport { faEye } from '@fortawesome/free-solid-svg-icons/faEye'\r\nimport { faEyeSlash } from '@fortawesome/free-solid-svg-icons/faEyeSlash'\r\nimport { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons/faExclamationTriangle'\r\nimport { faFacebookF } from '@fortawesome/free-brands-svg-icons/faFacebookF'\r\nimport { faFrown } from '@fortawesome/free-regular-svg-icons/faFrown'\r\nimport { faSave as faSaveO } from '@fortawesome/free-regular-svg-icons/faSave'\r\nimport { faGlobe } from '@fortawesome/free-solid-svg-icons/faGlobe'\r\nimport { faGoogle } from '@fortawesome/free-brands-svg-icons/faGoogle'\r\nimport { faHandshake as faHandshakeO } from '@fortawesome/free-regular-svg-icons/faHandshake'\r\nimport { faHeart as faHeartO } from '@fortawesome/free-regular-svg-icons/faHeart'\r\nimport { faHome } from '@fortawesome/free-solid-svg-icons/faHome'\r\nimport { faHospital } from '@fortawesome/free-regular-svg-icons/faHospital'\r\nimport { faIdBadge } from '@fortawesome/free-solid-svg-icons/faIdBadge'\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons/faInfoCircle'\r\nimport { faLightbulb as faLightbulbO } from '@fortawesome/free-regular-svg-icons/faLightbulb'\r\nimport { faMapMarkerAlt } from '@fortawesome/free-solid-svg-icons/faMapMarkerAlt'\r\nimport { faPencilAlt } from '@fortawesome/free-solid-svg-icons/faPencilAlt'\r\nimport { faPhone } from '@fortawesome/free-solid-svg-icons/faPhone'\r\nimport { faPlus } from '@fortawesome/free-solid-svg-icons/faPlus'\r\nimport { faPuzzlePiece } from '@fortawesome/free-solid-svg-icons/faPuzzlePiece'\r\nimport { faQuoteLeft } from '@fortawesome/free-solid-svg-icons/faQuoteLeft'\r\nimport { faQuoteRight } from '@fortawesome/free-solid-svg-icons/faQuoteRight'\r\nimport { faQuestion } from '@fortawesome/free-solid-svg-icons'\r\nimport { faCircleQuestion} from '@fortawesome/free-solid-svg-icons/faCircleQuestion'\r\nimport { faRedo } from '@fortawesome/free-solid-svg-icons/faRedo'\r\nimport { faSync } from '@fortawesome/free-solid-svg-icons/faSync'\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons/faSearch'\r\nimport { faSmile as faSmileO } from '@fortawesome/free-regular-svg-icons/faSmile'\r\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons/faSpinner'\r\nimport { faStar } from '@fortawesome/free-solid-svg-icons/faStar'\r\nimport { faStar as faStarO } from '@fortawesome/free-regular-svg-icons/faStar'\r\nimport { faTv } from '@fortawesome/free-solid-svg-icons/faTv'\r\nimport { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes'\r\nimport { faTimesCircle as faTimesCircleO } from '@fortawesome/free-regular-svg-icons/faTimesCircle'\r\nimport { faXTwitter } from '@fortawesome/free-brands-svg-icons/faXTwitter'\r\nimport { faTwitter } from '@fortawesome/free-brands-svg-icons/faTwitter'\r\nimport { faUser } from '@fortawesome/free-solid-svg-icons/faUser'\r\nimport { faUserPlus } from '@fortawesome/free-solid-svg-icons/faUserPlus'\r\nimport { faUsers } from '@fortawesome/free-solid-svg-icons/faUsers'\r\nimport { faVenusMars } from '@fortawesome/free-solid-svg-icons/faVenusMars'\r\nimport { faWifi } from '@fortawesome/free-solid-svg-icons/faWifi'\r\nimport { faTrashAlt } from '@fortawesome/free-solid-svg-icons/faTrashAlt'\r\nimport { faTrashCan } from '@fortawesome/free-solid-svg-icons/faTrashCan'\r\nimport validatorHasOptionSelected from './mixins/validator-hasOptionSelected'\r\nimport validatorHasCheckboxSelected from './mixins/validator-hasCheckboxSelected'\r\nimport { fab } from '@fortawesome/free-brands-svg-icons'\r\nimport { fas } from '@fortawesome/free-solid-svg-icons'\r\nimport { faR } from '@fortawesome/free-solid-svg-icons'\r\n// require rather than import as there is no ts declaration file for these modules\r\nimport * as Vuebar from 'vuebar'\r\nimport * as VueGoogleMaps from 'vue2-google-maps'\r\nimport * as linkify from 'vue-linkify'\r\n// eslint-disable-next-line\r\nimport VueAppInsights from 'vue-application-insights'\r\nimport { faTrash } from '@fortawesome/free-solid-svg-icons/faTrash'\r\nlibrary.add(fab)\r\nlibrary.add(fas)\r\nlibrary.add(faR)\r\nlibrary.add(faAngleDoubleLeft)\r\nlibrary.add(faAngleDoubleRight)\r\nlibrary.add(faAngleDown)\r\nlibrary.add(faAngleLeft)\r\nlibrary.add(faAt)\r\nlibrary.add(faBan)\r\nlibrary.add(faBars)\r\nlibrary.add(faBinoculars)\r\nlibrary.add(faCalendar)\r\nlibrary.add(faCaretDown)\r\nlibrary.add(faCaretRight)\r\nlibrary.add(faCheck)\r\nlibrary.add(faCheckCircle)\r\nlibrary.add(faCheckCircleO)\r\nlibrary.add(faChevronDown)\r\nlibrary.add(faChevronLeft)\r\nlibrary.add(faChevronRight)\r\nlibrary.add(faChevronUp)\r\nlibrary.add(faCircle)\r\nlibrary.add(faClockO)\r\nlibrary.add(faCommentO)\r\nlibrary.add(faCopyright)\r\nlibrary.add(faEdit)\r\nlibrary.add(faEnvelope)\r\nlibrary.add(faEuroSign)\r\nlibrary.add(faEye)\r\nlibrary.add(faEyeSlash)\r\nlibrary.add(faExclamationTriangle)\r\nlibrary.add(faFacebookF)\r\nlibrary.add(faFrown)\r\nlibrary.add(faSaveO)\r\nlibrary.add(faGlobe)\r\nlibrary.add(faGoogle)\r\nlibrary.add(faHandshakeO)\r\nlibrary.add(faHeartO)\r\nlibrary.add(faHome)\r\nlibrary.add(faHospital)\r\nlibrary.add(faIdBadge)\r\nlibrary.add(faInfoCircle)\r\nlibrary.add(faLightbulbO)\r\nlibrary.add(faMapMarkerAlt)\r\nlibrary.add(faPencilAlt)\r\nlibrary.add(faPhone)\r\nlibrary.add(faPlus)\r\nlibrary.add(faPuzzlePiece)\r\nlibrary.add(faQuestion)\r\nlibrary.add(faCircleQuestion)\r\nlibrary.add(faQuoteLeft)\r\nlibrary.add(faQuoteRight)\r\nlibrary.add(faRedo)\r\nlibrary.add(faSync)\r\nlibrary.add(faSearch)\r\nlibrary.add(faSmileO)\r\nlibrary.add(faSpinner)\r\nlibrary.add(faStar)\r\nlibrary.add(faStarO)\r\nlibrary.add(faTrashCan)\r\nlibrary.add(faTv)\r\nlibrary.add(faTimes)\r\nlibrary.add(faTimesCircleO)\r\nlibrary.add(faXTwitter)\r\nlibrary.add(faTwitter)\r\nlibrary.add(faUser)\r\nlibrary.add(faUserPlus)\r\nlibrary.add(faVenusMars)\r\nlibrary.add(faWifi)\r\nlibrary.add(faTrashAlt)\r\nlibrary.add(faTrash)\r\nlibrary.add(faUsers)\r\n\r\nVue.component('font-awesome-icon', FontAwesomeIcon)\r\nVue.component('font-awesome-layers', FontAwesomeLayers)\r\n\r\n// Add web config in here to force Webpack to pick it up\r\n// import WebConfig from './web.config' // eslint-disable-line no-unused-vars\r\n\r\nVue.config.productionTip = false\r\n\r\n// set up global event bus\r\nvar eventBus = new Vue()\r\nObject.defineProperties(Vue.prototype, {\r\n  $bus: {\r\n    get: function () {\r\n      return eventBus\r\n    }\r\n  }\r\n})\r\n\r\n// vue modules\r\nVue.use(VueI18n)\r\nVue.use(VeeValidate)\r\n\r\nVeeValidate.Validator.extend('option-selected', validatorHasOptionSelected)\r\nVeeValidate.Validator.extend('checkbox-selected', validatorHasCheckboxSelected)\r\n\r\nVue.use(Vuebar)\r\nVue.use(BootstrapVue)\r\n// The HTTP client for Vue.js (https://github.com/pagekit/vue-resource/blob/develop/docs/http.md)\r\nVue.use(VueResource)\r\nVue.use(VueMeta)\r\n// Google maps for directions\r\nVue.use(VueGoogleMaps, {\r\n  load: {\r\n    key: 'AIzaSyDO90r2afD0-4BS18qa1fdAxumddjgCutY', // public key for development purposes only'AIzaSyAOVYRIgupAurZup5y1PRh8Ismb1A3lLao',\r\n    libraries: 'places,marker' // include 'marker' library\r\n  },\r\n  installComponents: true // for auto-registration of components\r\n})\r\n\r\nVue.use(VueAppInsights, {\r\n  // id: 'd38ae400-607d-45d0-80d5-40384e7a5562', // test\r\n  id: '19dc96a8-7e96-4fd0-a334-f3c3a6afe67c', // production\r\n  router: router,\r\n  baseName: 'Oma-SPR'\r\n})\r\n\r\n// add lodash to all components. Not ideal way of doing this\r\n// @ts-ignore\r\nwindow._ = require('lodash')\r\n// require('lodash')\r\nrequire('./router/interceptor.js')\r\n\r\n// add any mixins that are required for the whole site\r\nVue.mixin(CommonMixins)\r\nVue.mixin(Alerts)\r\nVue.directive('linkified', linkify)\r\n\r\nif (process.env.NODE_ENV === 'production') {\r\n  const script = window.document.createElement('script')\r\n  script.innerHTML = `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\r\n   new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\r\n   j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\r\n   })(window,document,'script','dataLayer','GTM-T23XL4M');`\r\n  // eslint-disable-next-line no-unused-expressions\r\n  window.document.querySelector('head')?.append(script)\r\n}\r\n\r\n// load static content\r\nvar promiseDistricts = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.alldistricts[0])\r\nvar promiseInstitutions = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.allinstitutions[0])\r\nvar promiseNetFriendshipGroups = Vue.http.get(store.state.apiBases.friendservice + store.state.apiEndpoints.friendnetgroups[0])\r\nvar promiseSections = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.allsections[0])\r\nvar prosimiseJoinableZips = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.joinablezipcodes[0])\r\nvar promiseJoinSections = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.joinsections[0])\r\nvar promiseTranslations = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.translationscached[0])\r\n\r\n// load enum values\r\nvar promiseAvailabilityFrequency = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.availabilityfrequencies[0])\r\nvar promiseAvailabilityTimes = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.availabilitytimes[0])\r\nvar promiseCustomerStates = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.customerstates[0])\r\nvar promiseCustomerTypes = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.customertypes[0])\r\nvar promiseCustomerLanguages = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.customerlanguages[0])\r\nvar promiseFriendshipTypes = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.friendshiptypes[0])\r\nvar promiseEventCategories = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.eventcategories[0])\r\nvar promiseGenders = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.genders[0])\r\nvar promiseInterests = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.interests[0])\r\nvar promiseInvolvedEventCategories = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.involvedeventcategories[0])\r\nvar promiseNetCustomerTypes = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.netcustomertypes[0])\r\nvar promiseNetFriendshipTypes = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.netfriendshiptypes[0])\r\nvar promisePreferredGenders = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.preferredgenders[0])\r\nvar promisePreferredAges = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.preferredages[0])\r\nvar promisePreferredContactMethods = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.preferredcontactmethods[0])\r\nvar promiseGroupLanguages = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.grouplanguages[0])\r\nvar promiseZipCodes = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.zipcodes[0])\r\n// load other static content\r\nvar promiseDatabaseAvailabilityTimes = Vue.http.get(store.state.apiBases.contentservice + store.state.apiEndpoints.databaseAvailabilitytimes[0])\r\n\r\n//load settings\r\n\r\nPromise.all([promiseTranslations,\r\n  promiseSections,\r\n  promiseDistricts,\r\n  promiseInstitutions,\r\n  promiseNetFriendshipGroups,\r\n  promiseGenders,\r\n  promisePreferredGenders,\r\n  promisePreferredAges,\r\n  promiseAvailabilityFrequency,\r\n  promiseAvailabilityTimes,\r\n  promiseCustomerTypes,\r\n  promiseNetCustomerTypes,\r\n  promiseFriendshipTypes,\r\n  promiseNetFriendshipTypes,\r\n  promiseInterests,\r\n  promiseCustomerStates,\r\n  promiseCustomerLanguages,\r\n  promiseDatabaseAvailabilityTimes,\r\n  promisePreferredContactMethods,\r\n  promiseEventCategories,\r\n  promiseInvolvedEventCategories,\r\n  promiseGroupLanguages,\r\n  promiseZipCodes,\r\n  promiseJoinSections,\r\n  prosimiseJoinableZips]).then(\r\n  response => {\r\n    store.commit('setTranslations', response[0].body)\r\n    store.commit('setSections', response[1].body)\r\n    store.commit('setDistricts', response[2].body)\r\n    store.commit('setInstitutions', response[3].body)\r\n    store.commit('setNetFriendshipGroups', response[4].body)\r\n    store.commit('setGenders', response[5].body)\r\n    store.commit('setPreferredGenders', response[6].body)\r\n    store.commit('setPreferredAges', response[7].body)\r\n    store.commit('setAvailabilityFrequencies', response[8].body)\r\n    store.commit('setAvailabilityTimes', response[9].body)\r\n    store.commit('setCustomerTypes', response[10].body)\r\n    store.commit('setNetCustomerTypes', response[11].body)\r\n    store.commit('setFriendshipTypes', response[12].body)\r\n    store.commit('setNetFriendshipTypes', response[13].body)\r\n    store.commit('setCustomerInterests', response[14].body)\r\n    store.commit('setCustomerStates', response[15].body)\r\n    store.commit('setCustomerLanguages', response[16].body)\r\n    store.commit('setDatabaseAvailabilityTimes', response[17].body.body)\r\n    store.commit('setPreferredContactMethods', response[18].body)\r\n    store.commit('setEventCategories', response[19].body)\r\n    store.commit('setInvolvedEventCategories', response[20].body)\r\n    store.commit('setGroupLanguages', response[21].body)\r\n    store.commit('setZipCodes', response[22].body)\r\n    store.commit('setJoinSections', response[23].body)\r\n    store.commit('setJoinableZips', response[24].body)\r\n    if (window.location.host.indexOf('rodakorset') >= 0) {\r\n      store.commit('setLanguage', 'sv')\r\n    }\r\n    if (window.location.host.indexOf('localhost') >= 0) {\r\n      store.commit('setLanguage', 'en')\r\n    }\r\n    if (window.location.host.indexOf('redcross') >= 0) {\r\n      store.commit('setLanguage', 'en')\r\n    }\r\n\r\n    const i18n = new VueI18n({\r\n      // @ts-ignore\r\n      locale: store.state.language,\r\n      fallbackLocale: 'fi', // if you have no message set for another language, use this one\r\n      messages: store.state.translations\r\n    })\r\n\r\n    router.beforeEach(function (to, from, next) {\r\n      // handle join wizard paging\r\n      // TODO(JanneF): Perhaps we need paging for register wizard too?\r\n      if (to.name === 'join' && from.name === 'join') {\r\n        next(false)\r\n        window.history.pushState(null, '', to.fullPath)\r\n      } else {\r\n        next()\r\n      }\r\n    })\r\n\r\n    /* eslint-disable no-new */\r\n    new Vue({\r\n      el: '#app',\r\n      i18n: i18n,\r\n      store,\r\n      router,\r\n      render: h => h(App),\r\n      template: '<App/>'\r\n    })\r\n  },\r\n  _ => {\r\n    // This is for offline development only. This branch\r\n    // reached when there is an exception in connecting\r\n    // to services in azure.\r\n    const json = {}\r\n    store.commit('setTranslations', json)\r\n\r\n    const i18n = new VueI18n({\r\n      // @ts-ignore\r\n      locale: store.state.language,\r\n      fallbackLocale: 'fi', // if you have no message set for another language, use this one\r\n      messages: store.state.translations\r\n    })\r\n\r\n    /* eslint-disable no-new */\r\n    new Vue({\r\n      el: '#app',\r\n      i18n: i18n,\r\n      store,\r\n      router,\r\n      render: h => h(App),\r\n      template: '<App :loadfailed=\"true\"/>'\r\n    })\r\n  }\r\n).catch(err => {\r\n  console.log('Failed to load', err)\r\n})\r\n","var map = {\n\t\"./af\": 5177,\n\t\"./af.js\": 5177,\n\t\"./ar\": 1509,\n\t\"./ar-dz\": 1488,\n\t\"./ar-dz.js\": 1488,\n\t\"./ar-kw\": 8676,\n\t\"./ar-kw.js\": 8676,\n\t\"./ar-ly\": 2353,\n\t\"./ar-ly.js\": 2353,\n\t\"./ar-ma\": 4496,\n\t\"./ar-ma.js\": 4496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 2682,\n\t\"./ar-sa.js\": 2682,\n\t\"./ar-tn\": 9756,\n\t\"./ar-tn.js\": 9756,\n\t\"./ar.js\": 1509,\n\t\"./az\": 5533,\n\t\"./az.js\": 5533,\n\t\"./be\": 8959,\n\t\"./be.js\": 8959,\n\t\"./bg\": 7777,\n\t\"./bg.js\": 7777,\n\t\"./bm\": 4903,\n\t\"./bm.js\": 4903,\n\t\"./bn\": 1290,\n\t\"./bn-bd\": 7357,\n\t\"./bn-bd.js\": 7357,\n\t\"./bn.js\": 1290,\n\t\"./bo\": 1545,\n\t\"./bo.js\": 1545,\n\t\"./br\": 1470,\n\t\"./br.js\": 1470,\n\t\"./bs\": 4429,\n\t\"./bs.js\": 4429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 6464,\n\t\"./cs.js\": 6464,\n\t\"./cv\": 3635,\n\t\"./cv.js\": 3635,\n\t\"./cy\": 4226,\n\t\"./cy.js\": 4226,\n\t\"./da\": 3601,\n\t\"./da.js\": 3601,\n\t\"./de\": 7853,\n\t\"./de-at\": 6111,\n\t\"./de-at.js\": 6111,\n\t\"./de-ch\": 4697,\n\t\"./de-ch.js\": 4697,\n\t\"./de.js\": 7853,\n\t\"./dv\": 708,\n\t\"./dv.js\": 708,\n\t\"./el\": 4691,\n\t\"./el.js\": 4691,\n\t\"./en-au\": 3872,\n\t\"./en-au.js\": 3872,\n\t\"./en-ca\": 8298,\n\t\"./en-ca.js\": 8298,\n\t\"./en-gb\": 6195,\n\t\"./en-gb.js\": 6195,\n\t\"./en-ie\": 6584,\n\t\"./en-ie.js\": 6584,\n\t\"./en-il\": 5543,\n\t\"./en-il.js\": 5543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 9402,\n\t\"./en-nz.js\": 9402,\n\t\"./en-sg\": 3004,\n\t\"./en-sg.js\": 3004,\n\t\"./eo\": 2934,\n\t\"./eo.js\": 2934,\n\t\"./es\": 7650,\n\t\"./es-do\": 838,\n\t\"./es-do.js\": 838,\n\t\"./es-mx\": 7730,\n\t\"./es-mx.js\": 7730,\n\t\"./es-us\": 6575,\n\t\"./es-us.js\": 6575,\n\t\"./es.js\": 7650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 527,\n\t\"./fi.js\": 527,\n\t\"./fil\": 5995,\n\t\"./fil.js\": 5995,\n\t\"./fo\": 2477,\n\t\"./fo.js\": 2477,\n\t\"./fr\": 5498,\n\t\"./fr-ca\": 6435,\n\t\"./fr-ca.js\": 6435,\n\t\"./fr-ch\": 7892,\n\t\"./fr-ch.js\": 7892,\n\t\"./fr.js\": 5498,\n\t\"./fy\": 7071,\n\t\"./fy.js\": 7071,\n\t\"./ga\": 1734,\n\t\"./ga.js\": 1734,\n\t\"./gd\": 217,\n\t\"./gd.js\": 217,\n\t\"./gl\": 7329,\n\t\"./gl.js\": 7329,\n\t\"./gom-deva\": 2124,\n\t\"./gom-deva.js\": 2124,\n\t\"./gom-latn\": 3383,\n\t\"./gom-latn.js\": 3383,\n\t\"./gu\": 2669,\n\t\"./gu.js\": 2669,\n\t\"./he\": 1713,\n\t\"./he.js\": 1713,\n\t\"./hi\": 3861,\n\t\"./hi.js\": 3861,\n\t\"./hr\": 6308,\n\t\"./hr.js\": 6308,\n\t\"./hu\": 609,\n\t\"./hu.js\": 609,\n\t\"./hy-am\": 7160,\n\t\"./hy-am.js\": 7160,\n\t\"./id\": 4063,\n\t\"./id.js\": 4063,\n\t\"./is\": 9374,\n\t\"./is.js\": 9374,\n\t\"./it\": 8383,\n\t\"./it-ch\": 1827,\n\t\"./it-ch.js\": 1827,\n\t\"./it.js\": 8383,\n\t\"./ja\": 3827,\n\t\"./ja.js\": 3827,\n\t\"./jv\": 9722,\n\t\"./jv.js\": 9722,\n\t\"./ka\": 1794,\n\t\"./ka.js\": 1794,\n\t\"./kk\": 7088,\n\t\"./kk.js\": 7088,\n\t\"./km\": 6870,\n\t\"./km.js\": 6870,\n\t\"./kn\": 4451,\n\t\"./kn.js\": 4451,\n\t\"./ko\": 3164,\n\t\"./ko.js\": 3164,\n\t\"./ku\": 8174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 8174,\n\t\"./ky\": 8474,\n\t\"./ky.js\": 8474,\n\t\"./lb\": 9680,\n\t\"./lb.js\": 9680,\n\t\"./lo\": 5867,\n\t\"./lo.js\": 5867,\n\t\"./lt\": 5766,\n\t\"./lt.js\": 5766,\n\t\"./lv\": 9532,\n\t\"./lv.js\": 9532,\n\t\"./me\": 8076,\n\t\"./me.js\": 8076,\n\t\"./mi\": 1848,\n\t\"./mi.js\": 1848,\n\t\"./mk\": 306,\n\t\"./mk.js\": 306,\n\t\"./ml\": 3739,\n\t\"./ml.js\": 3739,\n\t\"./mn\": 9053,\n\t\"./mn.js\": 9053,\n\t\"./mr\": 6169,\n\t\"./mr.js\": 6169,\n\t\"./ms\": 3386,\n\t\"./ms-my\": 2297,\n\t\"./ms-my.js\": 2297,\n\t\"./ms.js\": 3386,\n\t\"./mt\": 7075,\n\t\"./mt.js\": 7075,\n\t\"./my\": 2264,\n\t\"./my.js\": 2264,\n\t\"./nb\": 2274,\n\t\"./nb.js\": 2274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 2572,\n\t\"./nl-be\": 3784,\n\t\"./nl-be.js\": 3784,\n\t\"./nl.js\": 2572,\n\t\"./nn\": 4566,\n\t\"./nn.js\": 4566,\n\t\"./oc-lnc\": 9330,\n\t\"./oc-lnc.js\": 9330,\n\t\"./pa-in\": 9849,\n\t\"./pa-in.js\": 9849,\n\t\"./pl\": 4418,\n\t\"./pl.js\": 4418,\n\t\"./pt\": 9834,\n\t\"./pt-br\": 8303,\n\t\"./pt-br.js\": 8303,\n\t\"./pt.js\": 9834,\n\t\"./ro\": 4457,\n\t\"./ro.js\": 4457,\n\t\"./ru\": 2271,\n\t\"./ru.js\": 2271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 3478,\n\t\"./se.js\": 3478,\n\t\"./si\": 7538,\n\t\"./si.js\": 7538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 6637,\n\t\"./sl.js\": 6637,\n\t\"./sq\": 6794,\n\t\"./sq.js\": 6794,\n\t\"./sr\": 5719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 5719,\n\t\"./ss\": 6000,\n\t\"./ss.js\": 6000,\n\t\"./sv\": 1011,\n\t\"./sv.js\": 1011,\n\t\"./sw\": 748,\n\t\"./sw.js\": 748,\n\t\"./ta\": 1025,\n\t\"./ta.js\": 1025,\n\t\"./te\": 1885,\n\t\"./te.js\": 1885,\n\t\"./tet\": 8861,\n\t\"./tet.js\": 8861,\n\t\"./tg\": 6571,\n\t\"./tg.js\": 6571,\n\t\"./th\": 5802,\n\t\"./th.js\": 5802,\n\t\"./tk\": 9527,\n\t\"./tk.js\": 9527,\n\t\"./tl-ph\": 9231,\n\t\"./tl-ph.js\": 9231,\n\t\"./tlh\": 1052,\n\t\"./tlh.js\": 1052,\n\t\"./tr\": 5096,\n\t\"./tr.js\": 5096,\n\t\"./tzl\": 9846,\n\t\"./tzl.js\": 9846,\n\t\"./tzm\": 1765,\n\t\"./tzm-latn\": 7711,\n\t\"./tzm-latn.js\": 7711,\n\t\"./tzm.js\": 1765,\n\t\"./ug-cn\": 8414,\n\t\"./ug-cn.js\": 8414,\n\t\"./uk\": 6618,\n\t\"./uk.js\": 6618,\n\t\"./ur\": 158,\n\t\"./ur.js\": 158,\n\t\"./uz\": 7609,\n\t\"./uz-latn\": 2475,\n\t\"./uz-latn.js\": 2475,\n\t\"./uz.js\": 7609,\n\t\"./vi\": 1135,\n\t\"./vi.js\": 1135,\n\t\"./x-pseudo\": 4051,\n\t\"./x-pseudo.js\": 4051,\n\t\"./yo\": 2218,\n\t\"./yo.js\": 2218,\n\t\"./zh-cn\": 2648,\n\t\"./zh-cn.js\": 2648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 1541,\n\t\"./zh-mo.js\": 1541,\n\t\"./zh-tw\": 304,\n\t\"./zh-tw.js\": 304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 5358;","import Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport JwtDecode from 'jwt-decode'\r\nimport { GroupType, OrderByFriendType } from '../types/index'\r\nrequire('es6-promise/auto')\r\nVue.use(Vuex)\r\n\r\nconst store = new Vuex.Store({\r\n  state: {\r\n    selectedContact: [],\r\n    selectedVolunteers: [],\r\n    optionalBooleanValues: [{ id: 0, text: 'notDefined' }, { id: 1, text: 'true' }, { id: 2, text: 'false' }],\r\n    sectionRoles: [],\r\n    enableRegisterToJoinFlow: true,\r\n    translations: {},\r\n    adminBack: [null,\r\n      null,\r\n      null,\r\n      null],\r\n    sections: [],\r\n    districts: [],\r\n    institutions: [],\r\n    netFriendshipGroups: [],\r\n    language: sessionStorage.getItem('locale')\r\n      ? sessionStorage.getItem('locale')\r\n      : 'fi',\r\n    languages: ['fi',\r\n      'sv',\r\n      'en',\r\n      'none'],\r\n    languagesJoin: ['fi', 'sv', 'en'],\r\n    allLanguages: null,\r\n    profilePersonalSkills: [{ id: 1, text: 'meetingPeople' },\r\n      { id: 2, text: 'cookingAndBaking' },\r\n      { id: 3, text: 'eventHosting' },\r\n      { id: 4, text: 'publicPerformances' },\r\n      { id: 5, text: 'organizational' },\r\n      { id: 6, text: 'teamGuide' },\r\n      { id: 7, text: 'trainPeople' },\r\n      { id: 8, text: 'eventOrganizaton' },\r\n      { id: 9, text: 'photographyAndVideo' },\r\n      { id: 10, text: 'digitalCompetence' },\r\n      { id: 11, text: 'communicationAndMarketing' },\r\n      { id: 12, text: 'financeAndAccounting' },\r\n      { id: 13, text: 'healthCareOrFirstAid' },\r\n      { id: 14, text: 'rescue' }],\r\n    profileAreasOfInterest: [{ id: 1, text: 'workWithYoung' },\r\n      { id: 2, text: 'workWithElderly' },\r\n      { id: 3, text: 'immigrantSupport' },\r\n      { id: 4, text: 'guideAndTeach' },\r\n      { id: 5, text: 'organiseActivities' },\r\n      { id: 6, text: 'promoteWellbeing' },\r\n      { id: 7, text: 'collectDonations' },\r\n      { id: 8, text: 'workInATeam' },\r\n      { id: 9, text: 'firstAid' },\r\n      { id: 10, text: 'helpInCrisis' },\r\n      { id: 11, text: 'workInMulticulturalEnvironment' },\r\n      { id: 12, text: 'foodHelp' }],\r\n    profileState: [{ id: 1, text: 'activeOpen' },\r\n      { id: 2, text: 'activeNoContact' },\r\n      { id: 3, text: 'activeNoNew' },\r\n      { id: 4, text: 'inactive' }],\r\n    registrationLanguages: ['fi',\r\n      'sv',\r\n      'en',\r\n      'ru',\r\n      'et',\r\n      'so',\r\n      'ar',\r\n      'fa'],\r\n    // Todo: Obsolete these, use customerLanguages\r\n    friendCustomerLanguages: [{ value: 'fi', text: 'langFinnish' },\r\n      { value: 'sv', text: 'langSwedish' },\r\n      { value: 'en', text: 'langEnglish' },\r\n      { value: 'ru', text: 'langRussian' },\r\n      { value: 'so', text: 'langSomali' },\r\n      { value: 'ar', text: 'langArab' },\r\n      { value: 'fa', text: 'langFars' },\r\n      { value: 'uk', text: 'langUkrainian' },\r\n      { value: 'none', text: 'langNone' }],\r\n    customerLanguages: [],\r\n    groupLanguages: [],\r\n    genders: [],\r\n    preferredGenders: [],\r\n    preferredAge: [],\r\n    preferredContactMethods: [],\r\n    availabilityFrequency: [],\r\n    reportFrequency: [{ id: 1, text: 'Daily' }, { id: 7, text: 'Weekly' }],\r\n    notificationFrequency: [{ id: 0, text: 'None' }, { id: 1, text: 'Daily' }, { id: 7, text: 'Weekly' }],\r\n    eventRegistration: [{ id: 0, text: 'Oma' }, { id: 1, text: 'External' }, { id: 2, text: 'None' }],\r\n    timeWithoutFriends: [{ id: 0, text: 'notDefined' }, { id: 1, text: 'lessThanThreeMonths' },{ id: 2, text: 'betweenThreeMonthsAndHalfAYear' },{ id: 4, text: 'betweenHalfAYearAndOneYear' },{ id: 8, text: 'moreThanAYear' }],\r\n    databaseAvailabilityTimes: [],\r\n    availabilityTimes: [],\r\n    customerTypes: [],\r\n    netCustomerTypes: [],\r\n    friendshipTypes: [],\r\n    netFriendshipTypes: [],\r\n    customerInterests: [],\r\n    customerStates: [],\r\n    involvedEventCategories: [],\r\n    eventCategories: [],\r\n    zipCodes: [],\r\n    groupTypes: function () {\r\n      return Object.keys(GroupType).map(key => { return { id: Number(key), text: GroupType[key] } })\r\n    },\r\n    eventTypes: [{ id: 1, text: 'event' },\r\n      { id: 2, text: 'practice' },\r\n      { id: 4, text: 'collection' },\r\n      { id: 8, text: 'club' },\r\n      { id: 16, text: 'meeting' },\r\n      { id: 32, text: 'coursesAndTraining' },\r\n      { id: 64, text: 'camp' },\r\n      { id: 128, text: 'groupMeeting' },\r\n      { id: 1024, text: 'volunteerTask' },\r\n      { id: 256, text: 'publicEvent' },\r\n      { id: 512, text: 'other' }],\r\n    eventRecurrenceFrequencies: [{ id: 2, text: 'weekly' }, { id: 3, text: 'biweekly' }, { id: 4, text: 'monthly' }],\r\n    eventDefault: {\r\n      hero:\r\n        'https://sprvatistorage.blob.core.windows.net/eventimages/defaultevent_15.jpg',\r\n      thumb:\r\n        'https://sprvatistorage.blob.core.windows.net/eventimages/defaultevent_15t.jpg'\r\n    },\r\n    transportation: [{ id: 1, text: 'own' },\r\n      { id: 2, text: 'public' },\r\n      { id: 3, text: 'walk' },\r\n      { id: 4, text: 'bike' }],\r\n    poolStatus: {\r\n      ACTIVE: 1,\r\n      REMOVED: 2\r\n    },\r\n    wizardModel: {\r\n      email: '',\r\n      phoneNumber: '',\r\n      firstName: '',\r\n      lastName: '',\r\n      streetAddress: '',\r\n      zipCode: '',\r\n      city: '',\r\n      country: 'Suomi',\r\n      age: '',\r\n      travelTime: '',\r\n      nativeLanguage: '',\r\n      preferredContactMethods: 0,\r\n      acceptMarketing: false,\r\n      dataProtectionAccepted: false,\r\n      codeOfEthicsAccepted: false,\r\n      areasOfInterest: [],\r\n      InvolvedEventCategories: 0,\r\n      availabilityTimes: [],\r\n      spokenLanguages: [],\r\n      personalSkills: [],\r\n      transportation: [],\r\n      workingZipCode: '',\r\n      sectionId: null,\r\n      profileState: 1,\r\n      story: null,\r\n      volunteerOnline: false\r\n    },\r\n    searchFilter: {\r\n      searchText: {\r\n        customer: '',\r\n        volunteer: ''\r\n      },\r\n      skip: 0,\r\n      pagesize: 10,\r\n      searchType: 'CUSTOMER',\r\n      orderByFriendType: OrderByFriendType.NotDefined,\r\n      customerStates: [],\r\n      customerTypes: [],\r\n      interests: [],\r\n      friendshipTypes: [],\r\n      languages: [],\r\n      motherTongs: [],\r\n      ages: [],\r\n      timeWithoutFriends: [],\r\n      genders: []\r\n    },\r\n    publicEvents: [],\r\n    selectedCustomer: {},\r\n    selectedVolunteer: {},\r\n    omaSettings: {\r\n      eventDurationMax: 'MaxEventDurationInDays'\r\n    },\r\n    apiBases: {\r\n      contentservice: 'https://spr-vati-oma-webapi.azurewebsites.net',\r\n      userservice: 'https://spr-vati-oma-webapi.azurewebsites.net',\r\n      friendservice: 'https://spr-vati-oma-webapi.azurewebsites.net',\r\n      messageservice: 'https://spr-vati-oma-webapi.azurewebsites.net',\r\n      eventservice: 'https://spr-vati-oma-webapi.azurewebsites.net',\r\n      paymentservice: 'https://spr-vati-oma-webapi.azurewebsites.net',\r\n      externalformservice: 'https://spr-vati-oma-webapi.azurewebsites.net',\r\n      imageservice: 'https://spr-vati-oma-webapi.azurewebsites.net',\r\n      systemservice: 'https://spr-vati-oma-webapi.azurewebsites.net'\r\n    },\r\n    apiEndpoints: {\r\n      // Oma Web API\r\n      omaWebApiVersion: ['/api/omaversion', 'GET', false],\r\n\r\n      // Payment\r\n      checkout: ['/api/payment/checkout', 'POST', false],\r\n      paymentoptions: ['/api/payment/options/', 'GET', false],\r\n      paymentcancel: ['/api/payment/cancel/', 'DELETE', false],\r\n      producteditor: ['/api/product/editor', 'GET', true],\r\n      productsave: ['/api/product', 'PUT', true],\r\n      productlist: ['/api/product', 'GET', true],\r\n      confirminvoice: ['/api/payment/invoice/', 'POST', true],\r\n      membershipcustomer: ['/api/customer/', 'GET', true],\r\n\r\n      // Content\r\n      translations: ['/api/content/translations', 'POST', false],\r\n      translationsupdate: ['/api/content/Translations', 'Put', false],\r\n      translationsadmin: ['/api/content/translations', 'GET', false],\r\n      translationscached: ['/api/content/translations/cached', 'GET', false],\r\n      allsections: ['/api/content/organization/sections', 'GET', false],\r\n      joinablezipcodes: ['/api/content/organization/joinablezipcodes', 'GET', false],\r\n      joinsections: ['/api/content/organization/joinsections', 'GET', false],\r\n      alldistricts: ['/api/content/organization/districts', 'GET', false],\r\n      allinstitutions: ['/api/content/organization/institutions', 'GET', false],\r\n      transportations: ['/api/content/transportation', 'GET', false],\r\n      personalskills: ['/api/content/personalskills', 'GET', false],\r\n      languages: ['/api/content/languages', 'GET', false],\r\n      areasofinterest: ['/api/content/areasofinterest', 'GET', false],\r\n      genders: ['/api/content/enums/genders', 'GET', false],\r\n      preferredgenders: ['/api/content/enums/preferredgenders', 'GET', false],\r\n      preferredages: ['/api/content/enums/preferredages', 'GET', false],\r\n      preferredcontactmethods: ['/api/content/enums/preferredcontactmethods', 'GET', false],\r\n      availabilityfrequencies: ['/api/content/enums/availabilityfrequencies', 'GET', false],\r\n      databaseAvailabilitytimes: ['/api/content/availabilitytimes', 'GET', false], // To be used with Profile.AvailabilityTimes\r\n      availabilitytimes: ['/api/content/enums/availabilitytimes', 'GET', false],\r\n      customertypes: ['/api/content/enums/customertypes', 'GET', false],\r\n      netcustomertypes: ['/api/content/enums/netcustomertypes', 'GET', false],\r\n      friendshiptypes: ['/api/content/enums/friendshiptypes', 'GET', false],\r\n      netfriendshiptypes: ['/api/content/enums/netfriendshiptypes', 'GET', false],\r\n      interests: ['/api/content/enums/interests', 'GET', false],\r\n      customerstates: ['/api/content/enums/customerstates', 'GET', false],\r\n      customerlanguages: ['/api/content/languages/customerlanguages', 'GET', false],\r\n      eventcategories: ['/api/content/enums/eventcategories', 'GET', false],\r\n      involvedeventcategories: ['/api/content/enums/involvedeventcategories', 'GET', false],\r\n\r\n      // Authorisation\r\n      login: ['/api/users/accounts/getlogintoken', 'POST', false],\r\n      register: ['/api/users/accounts/register', 'POST', false],\r\n      registerwithfriendprofile: ['/api/users/accounts/registerwithfriendprofile', 'POST', false],\r\n\r\n      userupdate: ['/api/users/accounts/update', 'POST', true],\r\n      adminupdate: ['/api/users/accounts/updateany/{email}', 'POST', true],\r\n      expiredpasswordupdate: ['/api/users/accounts/updateexpiredpassword', 'POST', true],\r\n      emailexists: ['/api/users/accounts/emailexists', 'GET', true],\r\n      adauth: ['/api/users/accounts/adauthorize?token={token}&sessionState={session_state}', 'GET', false],\r\n      adregister: ['/api/users/accounts/adregister', 'POST', true],\r\n      restore: ['/api/users/accounts/restore/{email}', 'GET', false],\r\n      resetpassword: ['/api/users/accounts/resetpassword', 'POST', true],\r\n      logout: ['/api/users/accounts/logout', 'GET', true],\r\n\r\n      // Users\r\n      userbyprofileid: ['/api/users/user/byprofileid/{0}', 'GET', true],\r\n      profile: ['/api/users/user/profile/{0}', 'GET', true],\r\n      getvolunteerinfobyemail: ['/api/users/user/getprofileinfo/{emailaddress}', 'GET', false],\r\n      find: ['/api/users/user/find?from={from}&id={id}&purpose={purpose}&skip={skip}&take={take}&search={search}&exnid={exnid}', 'GET', true],\r\n      findIdentOnly: ['/api/users/user/find?from={from}&id={id}&purpose={purpose}&skip={skip}&take={take}&exnid=true&search={search}', 'GET', true],\r\n      findGroupVolunteers: ['/api/users/user/findgroupvolunteers?search={search}&skip={skip}&take={take}', 'GET', true],\r\n      findSimpleIdentOnly: ['/api/users/user/simplefind?from={from}&id={id}&skip={skip}&take={take}&exnid=true&search={search}', 'GET', true],\r\n      findEmployees: ['/api/users/user/employees?skip={skip}&take={take}&search={search}', 'GET', true],\r\n      currentuser: ['/api/users/current', 'GET', true],\r\n      updateidentuser: ['/api/users/user/{0}', 'PUT', true],\r\n      updateownprofile: ['/api/users/user/updateownprofile', 'PUT', true],\r\n      deleteuser: ['/api/users/user', 'DELETE', true],\r\n      usermyprofileusage: ['/api/users/user/getmyprofileusage', 'GET', true],\r\n      userprofileusagebyid: ['/api/users/user/getprofileusagebyid/', 'GET', true],\r\n      deletemyprofile: ['/api/users/user/deletemyprofile', 'DELETE', true],\r\n      profiledeleterequests: ['/api/users/user/getprofiledeleterequests', 'GET', true],\r\n      deleteprofiledeleterequest: ['/api/users/user/deleteprofiledeleterequest', 'DELETE', true],\r\n      sections: ['/api/users/organization/sections', 'GET', true],\r\n      sectionsexport: ['/api/users/organization/sections/export', 'POST', true],\r\n      sectionbyid: ['/api/users/organization/sections/{0}', 'GET', true],\r\n      mysection: ['/api/users/organization/mysection', 'GET', true],\r\n      section: ['/api/users/organization/section', 'GET', true],\r\n      sectionsbydistrict: ['/api/users/organization/sections/from-district/{0}', 'GET', true],\r\n      districts: ['/api/users/organization/districts', 'GET', true],\r\n      district: ['/api/users/organization/districts/{0}', 'GET', true],\r\n      setDistrictDescription: ['/api/users/organization/sections/set-description/{0}', 'POST', true],\r\n      getSectionReport: ['/api/users/organization/sections/get-sectionreport/{0}', 'GET', true],\r\n      setSectionReport: ['/api/users/organization/sections/set-sectionreport/{0}', 'POST', true],\r\n      findbyfriendship: ['/api/users/user/findbyfriendshipstate?state={state}&skip={skip}&take={take}&search={search}', 'POST', true],\r\n      roles: ['/api/users/user/roles/{0}', 'GET', true],\r\n      membership: ['/api/crm/crmdata/getbyprofileid/{0}', 'GET', true],\r\n      markcontacted: ['/api/users/user/markcontacted/{0}', 'GET', true],\r\n      markuncontacted: ['/api/users/user/markuncontacted/{0}', 'GET', true],\r\n      findsectionvolunteers: ['/api/users/organization/sectionVolunteers', 'POST', true],\r\n      finddistrictvolunteers: ['/api/users/organization/districtvolunteers', 'POST', true],\r\n\r\n      // Events\r\n      eventadd: ['/api/events/event/add', 'POST', true],\r\n      eventget: ['/api/events/event/get/{id}', 'GET', true],\r\n      eventall: ['/api/events/event/getall?search={search}&locale={locale}&eventorganizertype={eventorganizertype}&organizerid={organizerid}&eventcategory={eventcategory}&eventtype={eventtype}&isonline={isonline}&take={take}&skip={skip}', 'GET', true],\r\n      eventallpublic: ['/api/events/event/getallpublic?search={search}&locale={locale}&eventorganizertype={eventorganizertype}&organizerid={organizerid}&eventcategory={eventcategory}&eventtype={eventtype}&isonline={isonline}&take={take}&skip={skip}', 'GET', true],\r\n      eventsbycriteria: ['/api/events/event/getbycriteria', 'POST', true],\r\n      eventsbycriteriapublic: ['/api/events/event/getbycriteriapublic', 'POST', true],\r\n      eventupdate: ['/api/events/event/update', 'PUT', true],\r\n      eventdelete: ['/api/events/event/delete/{id}/{recurring}', 'DELETE', true],\r\n      eventjoin: ['/api/events/event/join', 'POST', true],\r\n      eventleave: ['/api/events/event/leave', 'POST', true],\r\n      eventremoveparticipants: ['/api/events/event/removeparticipants', 'POST', true],\r\n      eventjoinpublic: ['/api/events/event/joinpublic', 'POST', true],\r\n      eventleavepublic: ['/api/events/event/leave?cancellationToken={cancellationToken}', 'GET', true],\r\n      eventupcoming: ['/api/events/event/upcoming', 'GET', true],\r\n      eventrecommended: ['/api/events/event/recommended', 'GET', true],\r\n      eventnearby: ['/api/events/event/near', 'GET', true],\r\n      eventpopular: ['/api/events/event/popular', 'GET', true],\r\n      eventvolunteertasks: ['/api/events/event/volunteertasks', 'GET', true],\r\n      eventorganised: ['/api/events/event/organized', 'GET', true],\r\n      eventparticipated: ['/api/events/event/participated', 'GET', true],\r\n      geocode: ['/api/events/event/geocode', 'GET', false],\r\n      distance: ['/api/events/event/distance', 'GET', false],\r\n      trainings: ['/api/events/event/gettraining/{0}', 'GET', false],\r\n      externaleventlog: ['/api/events/event/externaleventclicked', 'POST', false],\r\n      getContactNotifications: ['/api/events/event/GetNotifiedContacts/contacts/get-notifications/{0}', 'GET', true],\r\n      setContactNotifications: ['/api/events/event/SetNotifiedContacts/contacts/set-notifications/{0}', 'POST', true],\r\n\r\n      // External Forms\r\n      externalformsadd: ['/api/ExternalForms/Add', 'POST', true],\r\n      externalformsupdate: ['/api/ExternalForms/Update/{0}', 'PUT', true],\r\n      externalformsdelete: ['/api/ExternalForms/Delete/{0}', 'DELETE', true],\r\n      externalformsget: ['/api/ExternalForms/Get/{0}', 'GET', true],\r\n      externalformsall: ['/api/ExternalForms/GetAll', 'Get', true],\r\n\r\n      // Settings\r\n      settingsall: ['/api/system/settings/getall', 'GET', true],\r\n      settingsupdate: ['/api/system/settings/update', 'PUT', true],\r\n\r\n      // Groups\r\n      groupsall: ['/api/users/groups/all', 'GET', true],\r\n      groupspersonal: ['/api/users/groups/getpersonalgroups', 'POST', true],\r\n      groupsbysection: ['/api/users/groups/section/{0}', 'GET', true],\r\n      groupsbydistrict: ['/api/users/groups/district/{0}', 'GET', true],\r\n      groupmessages: ['/api/message/message/getbygroupid/{0}', 'GET', true],\r\n      groupsectionadd: ['/api/users/groups/addtosection', 'POST', true],\r\n      groupdistrictadd: ['/api/users/groups/addtodistrict', 'POST', true],\r\n      groupjoin: ['/api/users/groups/join', 'PUT', true],\r\n      grouprequestmembership: ['/api/users/groups/requestmembership', 'PUT', true],\r\n      groupleave: ['/api/users/groups/leave/{0}', 'PUT', true],\r\n      groupmakeadmin: ['/api/users/groups/makeadmin', 'PUT', true],\r\n      groupremoveadmin: ['/api/users/groups/removeadmin', 'PUT', true],\r\n      groupmygroups: ['/api/users/groups/mygroups', 'GET', true],\r\n      groupgetbyid: ['/api/users/groups/getbyid', 'GET', true],\r\n      groupisadmin: ['/api/users/groups/isgroupadmin', 'GET', true],\r\n      groupgetbyidlight: ['/api/users/groups/getbyidlight', 'GET', true],\r\n      groupupdate: ['/api/users/groups/update', 'PUT', true],\r\n      groupdelete: ['/api/users/groups/delete/{id}', 'POST', true],\r\n      groupaddmembers: ['/api/users/groups/addmembers', 'PUT', true],\r\n      groupremmembers: ['/api/users/groups/removemembers', 'POST', true],\r\n      groupremmembershiprequest: ['/api/users/groups/removemembershiprequest', 'POST', true],\r\n      groupacceptinvitation: ['/api/users/groups/acceptinvitation/{0}', 'PUT', true],\r\n      groupgethupsislink: ['/api/users/groups/gethupsislink/{iv}', 'GET', true],\r\n      grouplanguages: ['/api/content/enums/grouplanguages', 'GET', false],\r\n\r\n      // Friend - Friendship Management\r\n      customeraddstandard: ['/api/friends/customer/standard/add', 'POST', true],\r\n      customeraddnet: ['/api/friends/customer/net/add', 'POST', true],\r\n      anonymousnetcustomeradd: ['/api/friends/customer/net/addcustomeranonymously', 'PUT', true],\r\n      anonymousstandardcustomeradd: ['/api/friends/customer/standard/addcustomeranonymously', 'PUT', true],\r\n      customerdeletestandard: ['/api/friends/customer/standard/delete/{groupid}/{customerid}', 'DELETE', true],\r\n      customerdeletenet: ['/api/friends/customer/net/delete/{groupid}/{customerid}', 'DELETE', true],\r\n      customerupdatestandard: ['/api/friends/customer/standard/update', 'PUT', true],\r\n      customerupdatenet: ['/api/friends/customer/net/update', 'PUT', true],\r\n      customerupdateprivatenotesnet: ['/api/friends/customer/net/updatenotes', 'PUT', true],\r\n      customerupdateprivatenotesstandard: ['/api/friends/customer/standard/updatenotes', 'PUT', true],\r\n      customermovetodifferentfmg: ['/api/friends/customer/standard/movetodifferentfmg', 'PUT', true],\r\n      customergetstandardbyid: ['/api/friends/customer/standard/{groupid}/{customerid}', 'GET', true],\r\n      customergetnetbyid: ['/api/friends/customer/net/{groupid}/{customerid}', 'GET', true],\r\n      customergetnetsummarybykey: ['/api/friends/customer/net/summary/{key}', 'GET', true],\r\n      customergetstandardsummarybykey: ['/api/friends/customer/standard/summary/{key}', 'GET', true],\r\n      customersearchstandard: ['/api/friends/customer/standard/find', 'POST', true],\r\n      customersearchnet: ['/api/friends/customer/net/find', 'POST', true],\r\n      volunteersearchstandard: ['/api/friends/volunteer/standard/find', 'POST', true],\r\n      volunteerexportstandard: ['/api/friends/volunteer/standard/getvolunteerexportfile', 'POST', true],\r\n      volunteersearchnet: ['/api/friends/volunteer/net/find', 'POST', true],\r\n      volunteerexportnet: ['/api/friends/volunteer/net/getvolunteerexportfile', 'POST', true],\r\n      volunteersimplesearch: ['/api/friends/volunteer/simplefind', 'POST', true],\r\n      volunteergetnetprofilebyid: ['/api/friends/volunteer/net', 'POST', true],\r\n      volunteergetstandardprofilebyid: ['/api/friends/volunteer/standard', 'POST', true],\r\n      volunteermovestandardtofmg: ['/api/friends/volunteer/standard/movetodifferentfmg', 'PUT', true],\r\n      addnonidentstandardfriendvolunteer: ['/api/friends/volunteer/addnonidentstandardfriendvolunteer', 'POST', true],\r\n      addnonidentnetfriendvolunteer: ['/api/friends/volunteer/addnonidentnetfriendvolunteer', 'POST', true],\r\n      updatenonidentstandardfriendvolunteer: ['/api/friends/volunteer/updatenonidentstandardfriendvolunteer', 'PUT', true],\r\n      updatenonidentnetfriendvolunteer: ['/api/friends/volunteer/updatenonidentnetfriendvolunteer', 'PUT', true],\r\n      updateidentstandardprofile: ['/api/friends/volunteer/updateidentstandardprofile', 'PUT', true],\r\n      updateidentstandardfriendvolunteer: ['/api/friends/volunteer/updateidentstandardfriendvolunteer', 'PUT', true],\r\n      updateidentnetfriendvolunteer: ['/api/friends/volunteer/updateidentnetfriendvolunteer', 'PUT', true],\r\n      volunteerupdateprivatenotes: ['/api/friends/volunteer/updateprivatenotes', 'PUT', true],\r\n      volunteerupdateprivatenotesnet: ['/api/friends/volunteer/net/updateprivatenotes', 'PUT', true],\r\n      volunteerupdateprivatenotesstandard: ['/api/friends/volunteer/standard/updateprivatenotes', 'PUT', true],\r\n      customerfindnetmatch: ['/api/friends/customer/net/findmatch/{groupid}/{customerid}', 'GET', true],\r\n      customerfindstandardmatch: ['/api/friends/customer/standard/findmatch/{groupid}/{customerid}', 'GET', true],\r\n      volunteerfindnetmatch: ['/api/friends/volunteer/net/findmatch/{groupid}/{volunteerid}', 'GET', true],\r\n      volunteerfindstandardmatch: ['/api/friends/volunteer/standard/findmatch/{groupid}/{volunteerid}', 'GET', true],\r\n      friendshipinitiatenet: ['/api/friends/friendship/addnetfriendship', 'POST', true],\r\n      friendshipinitiatestandard: ['/api/friends/friendship/addstandardfriendship', 'POST', true],\r\n      friendshipactivatenet: ['/api/friends/friendship/activatenetfriendship', 'POST', true],\r\n      friendshipactivatestandard: ['/api/friends/friendship/activatestandardfriendship', 'POST', true],\r\n      friendshipcancelnet: ['/api/friends/friendship/cancelnetfriendship', 'POST', true],\r\n      friendshipcancelstandard: ['/api/friends/friendship/cancelstandardfriendship', 'POST', true],\r\n      friendshipterminatenet: ['/api/friends/friendship/terminatenetfriendship', 'POST', true],\r\n      friendshipterminatestandard: ['/api/friends/friendship/terminatestandardfriendship', 'POST', true],\r\n      friendshipmarkinappropriatenet: ['/api/friends/friendship/markinappropriatenetfriendship', 'POST', true],\r\n      friendshipmarkinappropriatestandard: ['/api/friends/friendship/markinappropriatestandardfriendship', 'POST', true],\r\n      friendshipendinappropriatenet: ['/api/friends/friendship/endinappropriatenetfriendship', 'POST', true],\r\n      friendshipendinappropriatestandard: ['/api/friends/friendship/endinappropriatestandardfriendship', 'POST', true],\r\n      setFriendTraining: ['/api/friends/volunteer/settraining', 'POST', true],\r\n      friendOrganization: ['/api/friends/organization/organization', 'GET', false],\r\n      friendOrganizationById: ['/api/friends/organization/organization/{0}', 'GET', false],\r\n      fmgContactInfo: ['/api/friends/organization/fmgcontactinfo/{0}', 'GET', false],\r\n      friendOrganizationFindStandardBrokers: ['/api/friends/organization/findstandardbrokers', 'POST', true],\r\n      friendOrganizationFindNetBrokers: ['/api/friends/organization/findnetbrokers', 'POST', true],\r\n      updateFmg: ['/api/friends/organization/update/', 'PUT', true],\r\n      markactivevolunteerstandard: ['/api/friends/volunteer/markactivestandard/{groupid}/{volunteerid}', 'POST', false],\r\n      markactivevolunteernet: ['/api/friends/volunteer/markactivenet/{groupid}/{volunteerid}', 'POST', false],\r\n      markactivecustomerstandard: ['/api/friends/customer/markactivestandard/{groupid}/{customerid}', 'POST', false],\r\n      markactivecustomernet: ['/api/friends/customer/markactivenet/{groupid}/{customerid}', 'POST', false],\r\n      markinactivevolunteerstandard: ['/api/friends/volunteer/markinactivestandard/{groupid}/{volunteerid}', 'POST', false],\r\n      markinactivevolunteernet: ['/api/friends/volunteer/markinactivenet/{groupid}/{volunteerid}', 'POST', false],\r\n      markinactivecustomerstandard: ['/api/friends/customer/markinactivestandard/{groupid}/{customerid}', 'POST', false],\r\n      markinactivecustomernet: ['/api/friends/customer/markinactivenet/{groupid}/{customerid}', 'POST', false],\r\n      friendvolunteerdeletenet: ['/api/friends/volunteer/deletenetprofile/{groupId}/{friendVolunteerNetProfileId}', 'DELETE', false],\r\n      friendvolunteerdeletestandard: ['/api/friends/volunteer/deletestandardprofile/{groupId}/{friendVolunteerStandardProfileId}', 'DELETE', false],\r\n      friendnetgroups: ['/api/friends/organization/getnetfriendshipmanagementgroups', 'GET', false],\r\n      friendstandardgroups: ['/api/friends/organization/GetStandardFriendshipManagementGroups', 'GET', false],\r\n      getfriendmanagementpoolsstandard: ['/api/friends/pool/getfriendmanagementgrouppoolsstandard/{fmgid}', 'GET', false],\r\n      getfriendmanagementpoolsnet: ['/api/friends/pool/getfriendmanagementgrouppoolsnet/{fmgid}', 'GET', false],\r\n      addfriendpoolstandard: ['/api/friends/pool/addfriendpoolstandard', 'POST', true],\r\n      addfriendpoolnet: ['/api/friends/pool/addfriendpoolnet', 'POST', true],\r\n      updatefriendpoolstandard: ['/api/friends/pool/updatefriendpoolstandard', 'PUT', true],\r\n      updatefriendpoolnet: ['/api/friends/pool/updatefriendpoolnet', 'PUT', true],\r\n      getfriendpoolstandard: ['/api/friends/pool/getfriendpoolstandard/{poolid}', 'GET', true],\r\n      getfriendpoolnet: ['/api/friends/pool/getfriendpoolnet/{poolid}', 'GET', true],\r\n      addcustomertopoolstandard: ['/api/friends/pool/addcustomertopoolstandard/{poolid}/{customerid}', 'POST', true],\r\n      addcustomertopoolnet: ['/api/friends/pool/addcustomertopoolnet/{poolid}/{customerid}', 'POST', true],\r\n      addvolunteertopoolstandard: ['/api/friends/pool/addvolunteertopoolstandard/{poolid}/{volunteerid}', 'POST', true],\r\n      addvolunteertopoolnet: ['/api/friends/pool/addvolunteertopoolnet/{poolid}/{volunteerid}', 'POST', true],\r\n      removecustomerfrompoolstandard: ['/api/friends/pool/removecustomerfrompoolstandard/{poolid}/{customerid}', 'DELETE', true],\r\n      removecustomerfrompoolnet: ['/api/friends/pool/removecustomerfrompoolnet/{poolid}/{customerid}', 'DELETE', true],\r\n      removevolunteerfrompoolstandard: ['/api/friends/pool/removevolunteerfrompoolstandard/{poolid}/{volunteerid}', 'DELETE', true],\r\n      removevolunteerfrompoolnet: ['/api/friends/pool/removevolunteerfrompoolnet/{poolid}/{volunteerid}', 'DELETE', true],\r\n      setfriendpoolstatusstandard: ['/api/friends/pool/setfriendpoolstatusstandard/{poolid}/{status}', 'PUT', true],\r\n      setfriendpoolstatusnet: ['/api/friends/pool/setfriendpoolstatusnet/{poolid}/{status}', 'PUT', true],\r\n      deletefriendmanagementpoolstandard: ['/api/friends/pool/deletestandard/{poolid}', 'DELETE', true],\r\n      deletefriendmanagementpoolnet: ['/api/friends/pool/deletenet/{poolid}', 'DELETE', true],\r\n      volunteeridentadd: ['/api/friends/volunteer/addidentfriendvolunteer', 'POST', true],\r\n      brokervolunteeridentadd: ['/api/friends/volunteer/brokeraddidentfriendvolunteer', 'POST', false],\r\n\r\n      volunteeridentupdate: ['/api/friends/volunteer/updateidentfriendvolunteer', 'PUT', true],\r\n\r\n      // Blob\r\n      uploadimage: ['/api/userimage/upload', 'POST', true],\r\n      getimages: ['/api/image/images/List', 'GET', true],\r\n      uploadimages: ['/api/image/images/upload-file', 'GET', true],\r\n      deleteimage: ['/api/image/images/delete', 'DELETE', true],\r\n      downloadimage: ['/api/image/images/download', 'GET', true],\r\n\r\n      // ZipCodes\r\n      zipcodes: ['/api/content/zipcodes', 'GET', false],\r\n      zipcode: ['/api/content/zipcodes/{0}', 'GET', false],\r\n\r\n      // UserRoles\r\n      profileroles: ['/api/user/roles/roles/{0}', 'GET', true],\r\n      setroles: ['/api/user/roles/setuserroles', 'POST', true],\r\n\r\n      // FriendManagementRoles\r\n      setnetbrokerrole: ['/api/friends/friendshiproles/grantnetbrokerrole', 'POST', true],\r\n      setstandardbrokerrole: ['/api/friends/friendshiproles/grantstandardbrokerrole', 'POST', true],\r\n      revokenetbrokerrole: ['/api/friends/friendshiproles/revokenetbrokerrole', 'POST', true],\r\n      revokestandardbrokerrole: ['/api/friends/friendshiproles/revokestandardbrokerrole', 'POST', true],\r\n\r\n      // Messages\r\n      sendmessage: ['/api/message/message/sendprivate', 'POST', true],\r\n      sendstandardfriendshipvolunteermessage: ['/api/message/message/sendstandardfriendshipvolunteermessage', 'POST', true],\r\n      sendnetfriendshipvolunteermessage: ['/api/message/message/sendnetfriendshipvolunteermessage', 'POST', true],\r\n      getMessagesByUserId: ['/api/message/message/getbyuserid/{0}', 'GET', true],\r\n      getmessagesbysectionid: ['/api/message/message/getbysectionid/{0}', 'GET', true],\r\n      getmessagesbydistrictid: ['/api/message/message/getbydistrictid/{0}', 'GET', true],\r\n      fmgmessages: ['/api/message/message/getbyfriendmanagementgroupid/{0}', 'GET', true],\r\n      sendgroupmessage: ['/api/message/message/sendnotification', 'POST', true],\r\n      sendfmgmessage: ['/api/message/message/sendfmgmessage', 'POST', true],\r\n      sendtosectiongroupmanagers: ['/api/message/message/sendtosectiongroupmanagers', 'POST', true],\r\n      sendtoselectedcontact: ['/api/message/message/sendtoselectedvolunteer', 'POST', true],\r\n      updatemessagestatus: ['/api/message/message/updatestatus/{id}/{statusid}', 'POST', true],\r\n      marknotificationasread: ['/api/message/message/marknotificationasread/{notificationid}', 'POST', true],\r\n      applytoactiongroup: ['/api/message/message/applytojoinactiongroup', 'POST', true],\r\n      removenotification: ['/api/message/message/removenotification', 'POST', true],\r\n      removefmgmessage: ['/api/message/message/removefmgmessage', 'POST', true],\r\n      getSubStatus: ['/api/message/message/getsubstatus', 'GET', true],\r\n      setSubStatus: ['/api/message/message/setsubstatus', 'POST', true],\r\n      sendnewprofileeventadminmessages: ['/api/message/message/sendnewprofileeventadminmessages', 'POST', true],\r\n      sendneweventadminmessages: ['/api/message/message/sendneweventadminmessages', 'POST', true]\r\n    },\r\n    supportEmail: 'Oma.tuki@redcross.fi',\r\n    googleMapsApiKey: 'AIzaSyDO90r2afD0-4BS18qa1fdAxumddjgCutY',\r\n    profile: null,\r\n    aduri: 'https://login.microsoftonline.com/redcross.fi/oauth2/authorize?client_id=bee999a3-efda-4386-a5a5-6bfd7379e935&response_type=id_token&scope=openid&nonce=70178cee-bc09-48f7-98f4-4db874335c9e&redirect_uri=https://oma.punainenristi.fi/adsignin&response_mode=fragment',\r\n    sharethisPropertyId: '5a6083b04fc3d70011b2ee01', // public\r\n    //sharethisPropertyId: '5a7c0b6308e4bc00136bbc2a', // localhost\r\n    hupsisUrl: {\r\n      sv: 'https://sv.hupsis.eu', // https://sv.hupsis.eu for live\r\n      fi: 'https://hupsis.eu', // https://hupsis.eu for live\r\n      en: 'https://en.hupsis.eu' // https://en.hupsis.eu/ for live\r\n    },\r\n    ossiUrl: {\r\n      sv: 'https://ossi.punainenristi.fi/',\r\n      fi: 'https://ossi.punainenristi.fi/',\r\n      en: 'https://ossi.punainenristi.fi/'\r\n    },\r\n    messages: [],\r\n    cache: {},\r\n    gettingProfile: false,\r\n    registerId: null,\r\n    token: {\r\n      //refresh: 'http://localhost:3758/api/users/accounts/claims',\r\n      refresh: 'https://spr-vati-oma-webapi.azurewebsites.net/api/users/accounts/claims',\r\n      // These Regex exceptions will be called with bare claimless token, should include the urls that are called\r\n      // on page load to prevent a round-trip to get the claims token and thus lenghtening the load time...\r\n      exceptions: [new RegExp(/.+\\/api\\/content\\/translations\\/cached/),\r\n        new RegExp(/.+\\/api\\/content\\/languages/),\r\n        new RegExp(/.+\\/api\\/content\\/organization\\/sections/),\r\n        new RegExp(/.+\\/api\\/content\\/organization\\/districts/),\r\n        new RegExp(/.+\\/api\\/users\\/accounts\\/getlogintoken/),\r\n        new RegExp(/https:\\/\\/maps\\.googleapis\\.com\\/maps\\/api\\//),\r\n        new RegExp(/.+\\/api\\/users\\/accounts\\/adauthorize/),\r\n        new RegExp(/.+\\/api\\/users\\/accounts\\/emailexists/),\r\n        new RegExp(/.+\\/api\\/users\\/accounts\\/claims/),\r\n        new RegExp(/.+\\/api\\/friends\\/organization\\/getnetfriendshipmanagementgroups/)],\r\n      isRefreshing: false\r\n    },\r\n    sessionJwtToken: undefined\r\n  },\r\n  actions: {\r\n    setSessionJwtToken (context, token) {\r\n      context.commit('setSessionJwtToken', JwtDecode(token))\r\n    },\r\n    // used for setting one of the settings when admin is updating a value.\r\n    setSetting (context, setting) {\r\n      context.commit('setSetting', setting)\r\n    },\r\n    // Used for setting the whole set of settings\r\n    setSettings (context, settings) {\r\n      context.commit('setSettings', settings)\r\n    }\r\n  },\r\n  mutations: {\r\n    setRegisterId (state, idObj) {\r\n      if (idObj && idObj.id && idObj.id !== 0) {\r\n        state.registerId = idObj.id\r\n      }\r\n    },\r\n    setLanguage (state, lang) {\r\n      state.language = lang\r\n    },\r\n    setSectionRoles (state, roles) {\r\n      state.sectionRoles = roles\r\n    },\r\n    setWizardInterests (state, model) {\r\n      state.wizardModel.areasOfInterest = model\r\n    },\r\n    setWizardInvolved (state, model) {\r\n      state.wizardModel.InvolvedEventCategories = model\r\n    },\r\n    setWizardSkills (state, model) {\r\n      state.wizardModel.personalSkills = model\r\n    },\r\n    setWizardLanguages (state, model) {\r\n      state.wizardModel.spokenLanguages = model\r\n    },\r\n    setWizardZipcode (state, model) {\r\n      state.wizardModel.zipCode = model\r\n    },\r\n    setWizardWorkingZip (state, model) {\r\n      state.wizardModel.workingZipCode = model\r\n    },\r\n    setWizardSectionId (state, model) {\r\n      state.wizardModel.sectionId = model\r\n    },\r\n    setWizardTransportation (state, model) {\r\n      state.wizardModel.transportation = model\r\n    },\r\n    setWizardTravelTime (state, model) {\r\n      state.wizardModel.travelTime = model\r\n    },\r\n    setWizardBestTimes (state, model) {\r\n      state.wizardModel.availabilityTimes = model\r\n    },\r\n    setWizardCity (state, model) {\r\n      state.wizardModel.city = model\r\n    },\r\n    setWizardBasicInformation (state, model) {\r\n      state.wizardModel.firstName = model.firstName\r\n      state.wizardModel.lastName = model.lastName\r\n      state.wizardModel.email = model.email\r\n      state.wizardModel.phoneNumber = model.phone\r\n      state.wizardModel.dataProtectionAccepted = model.gdpr\r\n      state.wizardModel.codeOfEthicsAccepted = model.ethics\r\n    },\r\n    setWizardContactInformation (state, model) {\r\n      state.wizardModel.streetAddress = model.streetaddress\r\n      state.wizardModel.zipCode = model.zipcode\r\n      state.wizardModel.city = model.city\r\n      state.wizardModel.country = model.country\r\n      state.wizardModel.age = model.age\r\n      state.wizardModel.nativeLanguage = model.language\r\n      state.wizardModel.preferredContactMethods = model.preferredContactMethods\r\n    },\r\n    setWizardNumberInformation (state, model) {\r\n      state.wizardModel.age = model.Age\r\n      state.wizardModel.travelTime = model.TravelTime\r\n    },\r\n    setWizardVolunteerOnline (state, model) {\r\n      state.wizardModel.volunteerOnline = model\r\n    },\r\n    setTranslations (state, model) {\r\n      state.translations = model\r\n    },\r\n    setSections (state, model) {\r\n      state.sections = model\r\n    },\r\n    setJoinSections (state, model) {\r\n      state.joinsections = model\r\n    },\r\n    setJoinableZips (state, model) {\r\n      state.joinablezipcodes = model\r\n    },\r\n    setDistricts (state, model) {\r\n      state.districts = model\r\n    },\r\n    setInstitutions (state, model) {\r\n      state.institutions = model\r\n    },\r\n    setNetFriendshipGroups (state, model) {\r\n      state.netFriendshipGroups = model\r\n    },\r\n    setEventCategories (state, model) {\r\n      state.eventCategories = model\r\n    },\r\n    setGenders (state, model) {\r\n      state.genders = model\r\n    },\r\n    setInvolvedEventCategories (state, model) {\r\n      state.involvedEventCategories = model\r\n    },\r\n    setPreferredGenders (state, model) {\r\n      state.preferredGenders = model\r\n    },\r\n    setPreferredAges (state, model) {\r\n      state.preferredAge = model\r\n    },\r\n    setPreferredContactMethods (state, model) {\r\n      state.preferredContactMethods = model\r\n    },\r\n    setAvailabilityFrequencies (state, model) {\r\n      state.availabilityFrequency = model\r\n    },\r\n    setDatabaseAvailabilityTimes (state, model) {\r\n      state.databaseAvailabilityTimes = model\r\n    },\r\n    setAvailabilityTimes (state, model) {\r\n      state.availabilityTimes = model\r\n    },\r\n    setCustomerTypes (state, model) {\r\n      state.customerTypes = model\r\n    },\r\n    setNetCustomerTypes (state, model) {\r\n      state.netCustomerTypes = model\r\n    },\r\n    setFriendshipTypes (state, model) {\r\n      state.friendshipTypes = model\r\n    },\r\n    setNetFriendshipTypes (state, model) {\r\n      state.netFriendshipTypes = model\r\n    },\r\n    setCustomerInterests (state, model) {\r\n      state.customerInterests = model\r\n    },\r\n    setCustomerStates (state, model) {\r\n      state.customerStates = model\r\n    },\r\n    setCustomerLanguages (state, model) {\r\n      state.customerLanguages = model\r\n    },\r\n    setGroupLanguages (state, model) {\r\n      state.groupLanguages = model\r\n    },\r\n    setZipCodes (state, model) {\r\n      state.zipCodes = model\r\n    },\r\n    setProfile (state, model) {\r\n      state.profile = model\r\n      state.gettingProfile = false\r\n    },\r\n    setProfileFriendVolunteer (state, model) {\r\n      state.profile.friendInfo = model\r\n    },\r\n    setProfileState (state, model) {\r\n      state.wizardModel.profileState = model\r\n    },\r\n    setStory (state, model) {\r\n      state.wizardModel.story = model\r\n    },\r\n    profileEdit (state, model) {\r\n      state.profile.story = model.story\r\n      state.profile.motto = model.motto\r\n      state.profile.profileState = model.profileState\r\n      state.profile.preferredContactMethods = model.preferredContactMethods\r\n      state.profile.involvedEventCategories = model.involvedEventCategories\r\n    },\r\n    profileEditInvolvedEventCategories (state, value) {\r\n      state.profile.involvedEventCategories = value\r\n    },\r\n    profileFetchStarted (state) {\r\n      state.gettingProfile = true\r\n    },\r\n    profileskills (state, model) {\r\n      state.profile.personalSkills = model\r\n    },\r\n    profileinterest (state, model) {\r\n      state.profile.areasOfInterest = model\r\n    },\r\n    profilelanguages (state, model) {\r\n      state.profile.spokenLanguages = model\r\n    },\r\n    profilepersonal (state, model) {\r\n      state.profile.firstName = model.firstName\r\n      state.profile.lastName = model.lastName\r\n      state.profile.phoneNumber = model.phoneNumber\r\n      state.profile.streetAddress = model.streetAddress\r\n      state.profile.zipCode = model.zipCode\r\n      state.profile.city = model.city\r\n      state.profile.country = model.country\r\n      state.profile.age = model.age\r\n      state.profile.nativeLanguage = model.nativeLanguage\r\n    },\r\n    profilelocation (state, model) {\r\n      state.profile.availabilityTimes = model\r\n    },\r\n    profiletransport (state, model) {\r\n      state.profile.transportation = model\r\n    },\r\n    profiletravel (state, model) {\r\n      state.profile.travelTime = model\r\n    },\r\n    profileworkingzip (state, model) {\r\n      state.profile.workingZipCode = model\r\n    },\r\n    profilesection (state, model) {\r\n      state.profile.sectionId = model\r\n    },\r\n    profileeventadmins (state, model) {\r\n      state.profile.eventAdmins = model\r\n    },\r\n    profileVolunteerOnline (state, model) {\r\n      state.profile.volunteerOnline = model\r\n    },\r\n    setAllLanguages (state, model) {\r\n      state.allLanguages = model\r\n    },\r\n    setSearchFilter (state, filter) {\r\n      state.searchFilter = filter\r\n    },\r\n    setMessages (state, model) {\r\n      state.messages = model\r\n    },\r\n    logout (state) {\r\n      state.gettingProfile = false\r\n      state.profile = null\r\n    },\r\n    setAdminBack (state, model) {\r\n      state.adminBack = model\r\n    },\r\n    addPublicEvent (state, value) {\r\n      var index = _.findIndex(state.publicEvents, function (role) {\r\n        return role.id === value.id\r\n      })\r\n\r\n      if (index !== -1) {\r\n        // If a matching object is found, replace it with the new value\r\n        state.publicEvents[index] = value\r\n      } else {\r\n        // If no matching object is found, add the new value to the array\r\n        state.publicEvents.push(value)\r\n      }\r\n    },\r\n    removePublicEvent (state, value) {\r\n      _.remove(state.publicEvents, function (role) {\r\n        return role.id === value.id\r\n      })\r\n    },\r\n    toCache (state, model) {\r\n      if (model && model.key && model.exp) {\r\n        state.cache[model.key] = { value: model.value, exp: model.exp }\r\n      } else {\r\n        console.log('malformed commit to cache', state, model)\r\n      }\r\n    },\r\n    nullProfile (state) {\r\n      state.profile = null\r\n    },\r\n    setSessionJwtToken (state, value) {\r\n      state.sessionJwtToken = value\r\n    },\r\n    clearSessionJwtToken (state) {\r\n      state.sessionJwtToken = undefined\r\n    },\r\n    setTokenRefreshing (state, value) {\r\n      state.token.isRefreshing = value\r\n    },\r\n    setSettings (state, model) {\r\n      state.omaSettings = model\r\n    },\r\n    setSetting (state, model) {\r\n      state.omaSettings.forEach(function (setting) {\r\n        if (setting.name === model.name) {\r\n          setting.value = model.value\r\n        }\r\n      })\r\n    },\r\n    clearSettings (state) {\r\n      state.omaSettings = []\r\n    },\r\n    updateProfilePicture (state, pictureUri) {\r\n      state.profile.portrait = pictureUri\r\n    }\r\n  }\r\n})\r\n\r\nexport default store\r\n","\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Service.ContentService.Data.Dto Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface EnumDto  {\r\n\tid: number;\r\n\ttext: string;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.ResponseClasses Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface FindResponse<T>  {\r\n\tresults: T[];\r\n\ttotal: number;\r\n}\r\n\r\nexport interface FindUserResponse extends FindResponse<UserProfileDto> {\r\n}\r\n\r\nexport interface SearchResult<TDto>  {\r\n\tresults: TDto[];\r\n\ttotal: number;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Interfaces Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface Paging  {\r\n\tskip: number;\r\n\ttake: number;\r\n}\r\n\r\nexport interface SearchTextCriteria  {\r\n\tsearchString: string;\r\n}\r\n\r\nexport interface Total  {\r\n\ttotal: number;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.Identity Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface AvailabilityTimeDto  {\r\n\tid: number;\r\n\tname: string;\r\n}\r\n\r\nexport interface FriendRoleDataDto  {\r\n\tfriendManagementGroupId: number;\r\n\tuserId: string;\r\n}\r\n\r\nexport interface GroupPublicProfileDto extends PublicProfileDto {\r\n\tareasOfInterest: number[];\r\n\tavailabilityTimes: number[];\r\n\tisAdmin: boolean;\r\n\tnativeLanguage: string;\r\n\tpersonalSkills: number[];\r\n\tprofileState: ProfileState;\r\n\trequestedByAdmin: boolean;\r\n\tspokenLanguages: string[];\r\n\ttransportation: number[];\r\n\ttravelTime: string;\r\n}\r\n\r\nexport interface GroupPublicProfileLightDto extends PublicProfileLightDto {\r\n\tareasOfInterest: number[];\r\n\tavailabilityTimes: number[];\r\n\tisAdmin: boolean;\r\n\tnativeLanguage: string;\r\n\tpersonalSkills: number[];\r\n\tprofileState: ProfileState;\r\n\trequestedByAdmin: boolean;\r\n\tspokenLanguages: string[];\r\n\ttransportation: number[];\r\n\ttravelTime: string;\r\n}\r\n\r\nexport interface LoginDataDto  {\r\n\tcodeOfEthicsAccepted: boolean;\r\n\tdataProtectionAccepted: boolean;\r\n\temail: string;\r\n\tpassword: string;\r\n}\r\n\r\nexport interface LoginUpdateDataDto extends LoginDataDto {\r\n\tcurrentPassword: string;\r\n}\r\n\r\nexport interface ProfileAddressDto  {\r\n\tcity: string;\r\n\tcountry: string;\r\n\tstreetAddress: string;\r\n\tzipCode: string;\r\n}\r\n\r\nexport interface ProfileCanDoActionsDto  {\r\n\tcanBeAnonymized: boolean;\r\n\tcanBeDeleted: boolean;\r\n}\r\n\r\nexport interface ProfileDeleteRequestDto  {\r\n\tcreated: Date;\r\n\tfirstName: string;\r\n\tid: number;\r\n\tlastName: string;\r\n\tmembershipStatus: MembershipStatus;\r\n\torigin: ProfileDeleteRequestOrigin;\r\n\tprofileId: number;\r\n}\r\n\r\nexport interface ProfileHasDto  {\r\n\thasBeenAnonymized: boolean;\r\n\thasCreatedEvents: boolean;\r\n\thasFriendPools: boolean;\r\n\thasFriendPoolsNet: boolean;\r\n\thasFriendPoolsStandard: boolean;\r\n\thasFriendships: boolean;\r\n\thasFriendshipsNet: boolean;\r\n\thasFriendshipsStandard: boolean;\r\n\thasFriendVolunteerGroups: boolean;\r\n\thasFriendVolunteerNetProfile: boolean;\r\n\thasFriendVolunteerProfile: boolean;\r\n\thasFriendVolunteerStandardProfile: boolean;\r\n\thasGroupMemberships: boolean;\r\n\thasLightProfiles: boolean;\r\n\thasMessages: boolean;\r\n\thasNotifications: boolean;\r\n\thasParticipatedInEvents: boolean;\r\n\thasPendingGroupMemberships: boolean;\r\n\thasUserLogin: boolean;\r\n\thasUserRoles: boolean;\r\n}\r\n\r\nexport interface ProfileIdentityDto  {\r\n\taddress: ProfileAddressDto;\r\n\temail: string;\r\n\texist: boolean;\r\n\tfirstName: string;\r\n\tfriendVolunteerId?: number;\r\n\tfriendVolunteerProfileNetId?: number;\r\n\tfriendVolunteerProfileStandardId?: number;\r\n\tlastName: string;\r\n\tprofileId: number;\r\n\tsectionId: number;\r\n\tsectionName: string;\r\n}\r\n\r\nexport interface ProfileUsageDto  {\r\n\tcan: ProfileCanDoActionsDto;\r\n\tfriendManagementGroups: TargetInfo[];\r\n\tfriendPoolsNet: TargetInfo[];\r\n\tfriendPoolsStandard: TargetInfo[];\r\n\tgroups: TargetInfo[];\r\n\tgroupsPending: TargetInfo[];\r\n\thas: ProfileHasDto;\r\n\tidentity: ProfileIdentityDto;\r\n\troles: string[];\r\n}\r\n\r\nexport interface PublicProfileDto  {\r\n\tage?: Date;\r\n\temail: string;\r\n\tfirstName: string;\r\n\tid: number;\r\n\tlastName: string;\r\n\tphone: string;\r\n\tportrait: string;\r\n\tsectionId: number;\r\n\tworkingZipCode: string;\r\n\tzipCode: string;\r\n}\r\n\r\nexport interface PublicProfileLightDto  {\r\n\tage?: Date;\r\n\tfirstName: string;\r\n\tid: number;\r\n\tlastName: string;\r\n\tportrait: string;\r\n\tsectionId: number;\r\n\tworkingZipCode: string;\r\n\tzipCode: string;\r\n}\r\n\r\nexport interface RoleDataBatchDto  {\r\n\troles: string[];\r\n\tuserId: string;\r\n}\r\n\r\nexport interface SimpleUserProfileDto  {\r\n\tage: Date;\r\n\tareasOfInterest: number[];\r\n\tcontactedDate?: Date;\r\n\tcreated?: Date;\r\n\temail: string;\r\n\tfirstName: string;\r\n\tid: string;\r\n\tisNonIdent: boolean;\r\n\tisPublic: boolean;\r\n\tlastName: string;\r\n\tpersonalSkills: number[];\r\n\tphoneNumber: string;\r\n\tportrait: string;\r\n\tprofileId: number;\r\n\tprofileState: ProfileState;\r\n\tsectionId: number;\r\n\tworkingZipCode: string;\r\n\tzipCode: string;\r\n}\r\n\r\nexport interface TargetInfo  {\r\n\tid: number;\r\n\tname: string;\r\n}\r\n\r\nexport interface UserProfileDto  {\r\n\tactionGroups: string[];\r\n\tage: Date;\r\n\tareasOfInterest: number[];\r\n\tavailabilityTimes: number[];\r\n\tcity: string;\r\n\tcodeOfEthicsAccepted: boolean;\r\n\tcontactedDate?: Date;\r\n\tcountry: string;\r\n\tcreated?: Date;\r\n\tdataProtectionAccepted: boolean;\r\n\temail: string;\r\n\teventAdmins: EventAdminDto[];\r\n\tfirstName: string;\r\n\tfriendInfo: FriendVolunteerWithFriendshipsDto;\r\n\tid: string;\r\n\tinvolvedEventCategories: InvolvedEventCategories;\r\n\tisNonIdent: boolean;\r\n\tisPublic: boolean;\r\n\tlastName: string;\r\n\tlockoutEnabled: boolean;\r\n\tmotto: string;\r\n\tnativeLanguage: string;\r\n\totherLanguages: string;\r\n\tpersonalSkills: number[];\r\n\tphoneNumber: string;\r\n\tportrait: string;\r\n\tpreferredContactMethods?: PreferredContactMethods;\r\n\tprofileId: number;\r\n\tprofileState: ProfileState;\r\n\tsectionId: number;\r\n\tspokenLanguages: string[];\r\n\tstandardGroups: string[];\r\n\tstory: string;\r\n\tstreetAddress: string;\r\n\ttrainedDate?: Date;\r\n\ttransportation: number[];\r\n\ttravelTime: string;\r\n\tuseWorkingZipCode: boolean;\r\n\tvolunteerOnline?: boolean;\r\n\tworkingZipCode: string;\r\n\tzipCode: string;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Enumerations Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport enum AreaOfInterest {\r\n\tCollectDonations = 7,\r\n\tFirstAid = 9,\r\n\tFoodHelp = 12,\r\n\tGuideAndTeach = 4,\r\n\tHelpInCrisis = 10,\r\n\tImmigrantSupport = 3,\r\n\tOrganiseActivities = 5,\r\n\tPromoteWellbeing = 6,\r\n\tWorkInATeam = 8,\r\n\tWorkInMulticulturalEnvironment = 11,\r\n\tWorkWithElderly = 2,\r\n\tWorkWithYoung = 1\r\n}\r\nexport enum AvailabilityFrequence {\r\n\tLessThanOnceMonth = 4,\r\n\tNotDefined = 0,\r\n\tOnceFortnight = 2,\r\n\tOnceMonth = 3,\r\n\tOncePerWeek = 1\r\n}\r\nexport enum AvailabilityTimesEnum {\r\n\tWeekdayDaytime = 2,\r\n\tWeekdayEvening = 3,\r\n\tWeekdayMorning = 1,\r\n\tWeekendDaytime = 5,\r\n\tWeekendEvening = 6,\r\n\tWeekendMorning = 4\r\n}\r\nexport enum CustomerState {\r\n\tActive = 2,\r\n\tActiveFriendship = 4,\r\n\tNonActive = 5,\r\n\tNotDefined = 0,\r\n\tOnHold = 6,\r\n\tPendingApproval = 1,\r\n\tPendingFriend = 3\r\n}\r\nexport enum EventCategory {\r\n\tBloodDonation = 13,\r\n\tCollection = 7,\r\n\tFirstAidActivity = 2,\r\n\tFirstAidTraining = 1,\r\n\tFoodHelp = 17,\r\n\tFriendship = 14,\r\n\tHealth = 11,\r\n\tHomeSupport = 10,\r\n\tHumanitary = 4,\r\n\tImmigrants = 9,\r\n\tInternational = 6,\r\n\tMentalSupport = 3,\r\n\tOrganizationActivity = 5,\r\n\tOther = 15,\r\n\tPreparation = 12,\r\n\tSafeHouse = 16,\r\n\tYouth = 8\r\n}\r\nexport enum EventOccurance {\r\n\tBiweekly = 3,\r\n\tMonthly = 4,\r\n\tOnce = 1,\r\n\tWeekly = 2\r\n}\r\nexport enum EventOrganizerType {\r\n\tDistrict = 100,\r\n\tInstitution = 0,\r\n\tSection = 200\r\n}\r\nexport enum FriendPoolStatus {\r\n\tActive = 1,\r\n\tRemoved = 2\r\n}\r\nexport enum FriendshipState {\r\n\tActive = 2,\r\n\tCanceled = 10,\r\n\tPendingApproval = 1,\r\n\tTerminated = 3\r\n}\r\nexport enum Gender {\r\n\tFemale = 2,\r\n\tMale = 1,\r\n\tOther = 4\r\n}\r\nexport enum GroupOrganizerType {\r\n\tDistrict = 100,\r\n\tInstitution = 0,\r\n\tNotSet = -1,\r\n\tSection = 200\r\n}\r\nexport enum GroupType {\r\n\tActionGroup = 1,\r\n\tStandardGroup = 2,\r\n\tUnknown = 0\r\n}\r\nexport enum IsOnlineEventFilterType {\r\n\tAll = -1,\r\n\tOnlyOffline = 0,\r\n\tOnlyOnline = 1\r\n}\r\nexport enum MembershipStatus {\r\n\tActive = 2,\r\n\tDeceased = 4,\r\n\tTerminated = 3,\r\n\tTransfer = 1,\r\n\tUndefined = 0\r\n}\r\nexport enum MembershipType {\r\n\tAnnualMember = 1,\r\n\tHonararyMember = 4,\r\n\tLifeMember = 3,\r\n\tUndefined = 0,\r\n\tYouthMember = 2\r\n}\r\nexport enum MessageStatus {\r\n\tDeleted = 4,\r\n\tHidden = 3,\r\n\tMarkedAsRead = 2,\r\n\tNew = 1\r\n}\r\nexport enum MyProfileLevel {\r\n\tUserLevelA = 0,\r\n\tUserLevelB = 10,\r\n\tUserLevelC = 100\r\n}\r\nexport enum OrderByFriendType {\r\n\tLatestContactedFirst = 3,\r\n\tLongestUncontactedFirst = 4,\r\n\tNewestFirst = 1,\r\n\tNotDefined = 0,\r\n\tOldestFirst = 2\r\n}\r\nexport enum PersonalSkills {\r\n\tCommunicationAndMarketing = 11,\r\n\tCookingAndBaking = 2,\r\n\tDigitalCompetence = 10,\r\n\tEventHosting = 3,\r\n\tEventOrganizaton = 8,\r\n\tFinanceAndAccounting = 12,\r\n\tHealthCareOrFirstAid = 13,\r\n\tMeetingPeople = 1,\r\n\tOrganizational = 5,\r\n\tPhotographyAndVideo = 9,\r\n\tPublicPerformances = 4,\r\n\tRescue = 14,\r\n\tTeamGuide = 6,\r\n\tTrainPeople = 7\r\n}\r\nexport enum ProfileDeleteRequestOrigin {\r\n\tCRM = 2,\r\n\tOma = 1\r\n}\r\nexport enum ProfileState {\r\n\tActive = 1,\r\n\tActiveIndependent = 2,\r\n\tActiveNoNew = 3,\r\n\tAnonymized = 100,\r\n\tError = 0,\r\n\tInactive = 4\r\n}\r\nexport enum ReportFrequency {\r\n\tDaily = 1,\r\n\tNone = 0,\r\n\tWeekly = 7\r\n}\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.Friend Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface CoreFriendManagementGroupItemBaseDto  {\r\n\tfriendManagementGroupId: number;\r\n\tid: number;\r\n\tisNet: boolean;\r\n}\r\n\r\nexport interface CustomerFriendshipInfoDto  {\r\n\tbirthDate: Date;\r\n\tcity: string;\r\n\tfirstName: string;\r\n\tgender: Gender;\r\n\tid: number;\r\n\tlastContacted?: Date;\r\n\tlastName: string;\r\n\tmultipleVolunteers: boolean;\r\n\tshortDescription: string;\r\n\tstate: CustomerState;\r\n\tzipCode: string;\r\n}\r\n\r\nexport interface FindFriendshipCustomerDto  {\r\n\tcustomerId: number;\r\n\tfirstName: string;\r\n\tfriendshipState: FriendshipState;\r\n\tisNetFriend: boolean;\r\n\tlastName: string;\r\n\tstate: CustomerState;\r\n}\r\n\r\nexport interface FindFriendshipVolunteerDto  {\r\n\tfirstName: string;\r\n\tfriendshipState: FriendshipState;\r\n\tfriendVolunteerId: number;\r\n\tisNetFriend: boolean;\r\n\tlastName: string;\r\n\tstate: CustomerState;\r\n}\r\n\r\nexport interface FindPoolDto  {\r\n\tid: number;\r\n\tname: string;\r\n}\r\n\r\nexport interface FriendBrokerDto  {\r\n\tfirstName: string;\r\n\tfriendInfo: FriendVolunteerDto;\r\n\tfullName: string;\r\n\tisBroker: boolean;\r\n\tisGroupManager: boolean;\r\n\tlastName: string;\r\n\tportrait: string;\r\n\tprofileId: number;\r\n\tuserId: string;\r\n}\r\n\r\nexport interface FriendBrokersRequestDto  {\r\n\tfriendManagementGroupId: number;\r\n\tpotentialBrokersOnly: boolean;\r\n\tsearch: string;\r\n\tskip: number;\r\n\ttake: number;\r\n}\r\n\r\nexport interface FriendCustomerFindDto  {\r\n\tbirthdate: Date;\r\n\tcustomerNotForPrivateRelations: boolean;\r\n\tcustomerNotForSpr: boolean;\r\n\temail: string;\r\n\tfirstName: string;\r\n\tfriendManagementGroupId: number;\r\n\tfriendPools: FindPoolDto[];\r\n\tfriendships: FindFriendshipVolunteerDto[];\r\n\tfullname: string;\r\n\tgender: Gender;\r\n\tid: number;\r\n\tlastContacted?: Date;\r\n\tlastFriendshipEndDate: Date;\r\n\tlastName: string;\r\n\tmultipleVolunteers: boolean;\r\n\tshortDescription: string;\r\n\tstate: CustomerState;\r\n\tzipCode: string;\r\n}\r\n\r\nexport interface FriendCustomerNetDto extends FriendCustomerProfileDto {\r\n\tcustomerTypes: NetCustomerTypes;\r\n\tecontactDiscord: string;\r\n\tecontactEmail: string;\r\n\tecontactFreetext: string;\r\n\tecontactInstagram: string;\r\n\tecontactKik: string;\r\n\tecontactSkype: string;\r\n\tecontactTelegram: string;\r\n\temail: string;\r\n\tfriendPools: FriendPoolFindNetDto[];\r\n\tfriendships: FriendshipNetDto[];\r\n}\r\n\r\nexport interface FriendCustomerProfileDto  {\r\n\tavailabilityFrequency: AvailabilityFrequence;\r\n\tbirthdate: Date;\r\n\tcity: string;\r\n\tcontactCity: string;\r\n\tcontactEmail: string;\r\n\tcontactFirstName: string;\r\n\tcontactLastName: string;\r\n\tcontactPhonenumber: string;\r\n\tcontactRelation: string;\r\n\tcontactStreetAddress: string;\r\n\tcontactZipCode: string;\r\n\tcustomerApproval: boolean;\r\n\tcustomerApprovedBy: string;\r\n\tcustomerInterviewed: boolean;\r\n\tcustomerInterviewedBy: string;\r\n\tcustomerInterviewedOnDate?: Date;\r\n\tcustomerLanguages: LanguageDto[];\r\n\tcustomerNotForPrivateRelations: boolean;\r\n\tcustomerNotForPrivateRelationsBy: string;\r\n\tcustomerNotForSpr: boolean;\r\n\tcustomerNotForSprBy: string;\r\n\tcustomerTypeOtherInfo: string;\r\n\tdescription: string;\r\n\tfirstName: string;\r\n\tfriendManagementGroupId: number;\r\n\tfullname: string;\r\n\tgender: Gender;\r\n\tgsmPhone: string;\r\n\thomePhone: string;\r\n\tid: number;\r\n\tinterestOther: string;\r\n\tinterests: Interests;\r\n\tlastContacted?: Date;\r\n\tlastFriendshipEndDate: Date;\r\n\tlastName: string;\r\n\tmultipleVolunteers: boolean;\r\n\tnativeLanguage: string;\r\n\tonHoldComment: string;\r\n\tonHoldUntilDate?: Date;\r\n\totherContact: string;\r\n\totherLanguages: string;\r\n\tpreferredAges: PreferredAges;\r\n\tpreferredGenders: PreferredGenders;\r\n\tprivateNotes: string;\r\n\tshortDescription: string;\r\n\tstartedPending: Date;\r\n\tstate: CustomerState;\r\n\tstreetAddress: string;\r\n\tzipCode: string;\r\n}\r\n\r\nexport interface FriendCustomerStandardDto extends FriendCustomerProfileDto {\r\n\tavailabilityTimes: AvailabilityTimes;\r\n\tcustomerTypes: CustomerTypes;\r\n\temail: string;\r\n\tfriendPools: FriendPoolFindStandardDto[];\r\n\tfriendships: FriendshipStandardDto[];\r\n}\r\n\r\nexport interface FriendManagementDto  {\r\n\tcontactInfo: FriendManagementGroupContactInfoDto[];\r\n\tcustomerCount?: number;\r\n\tfriendRequestFormAllowed: boolean;\r\n\tgroupActivities: FriendManagementGroupActivityDto[];\r\n\tid: number;\r\n\tname: string;\r\n\tnational: boolean;\r\n\tnetFriendship: boolean;\r\n\tsections: string[];\r\n\tvolunteerCount?: number;\r\n\tzipCodes: string[];\r\n}\r\n\r\nexport interface FriendManagementGroupActivityDto  {\r\n\tactivityTypeId: number;\r\n\tdescription: string;\r\n\tfriendManagementGroupId: number;\r\n\tname: string;\r\n\ttranslationKey: string;\r\n}\r\n\r\nexport interface FriendManagementGroupContactInfoDto  {\r\n\taddress: string;\r\n\temail: string;\r\n\tid: number;\r\n\tonCallTimes: string;\r\n\tphone: string;\r\n\ttitle: string;\r\n}\r\n\r\nexport interface FriendManagementGroupItemDto  {\r\n\tfriendRequestFormAllowed: boolean;\r\n\tid: number;\r\n\tname: string;\r\n\tnational: boolean;\r\n\tnetFriendship: boolean;\r\n}\r\n\r\nexport interface FriendManagementLightDto  {\r\n\tcontactInfo: FriendManagementGroupContactInfoDto[];\r\n\tfriendRequestFormAllowed: boolean;\r\n\tgroupActivities: FriendManagementGroupActivityDto[];\r\n\tid: number;\r\n\tname: string;\r\n\tnational: boolean;\r\n\tnetFriendship: boolean;\r\n}\r\n\r\nexport interface FriendPoolBaseDto  {\r\n\taddress: string;\r\n\tassemblyTimes: string;\r\n\tcity: string;\r\n\tcontactInfo: string;\r\n\tdescription: string;\r\n\tfriendManagementGroupId: number;\r\n\tid: number;\r\n\tname: string;\r\n\tnotes: string;\r\n\tpostalCode: string;\r\n\tshortDescription: string;\r\n\tstatus: FriendPoolStatus;\r\n}\r\n\r\nexport interface FriendPoolCustomerSummaryBaseDto  {\r\n\tfirstName: string;\r\n\tlastName: string;\r\n}\r\n\r\nexport interface FriendPoolCustomerSummaryNetDto extends FriendPoolCustomerSummaryBaseDto {\r\n\tcustomerProfileNetId: number;\r\n}\r\n\r\nexport interface FriendPoolCustomerSummaryStandardDto extends FriendPoolCustomerSummaryBaseDto {\r\n\tcustomerProfileStandardId: number;\r\n}\r\n\r\nexport interface FriendPoolFindBaseDto  {\r\n\taddress: string;\r\n\tcity: string;\r\n\tcustomerCount: number;\r\n\tgroupId: number;\r\n\tid: number;\r\n\tname: string;\r\n\tpostalCode: string;\r\n\tshortDescription: string;\r\n\tstatus: FriendPoolStatus;\r\n\tvolunteerCount: number;\r\n}\r\n\r\nexport interface FriendPoolFindNetDto extends FriendPoolFindBaseDto {\r\n}\r\n\r\nexport interface FriendPoolFindStandardDto extends FriendPoolFindBaseDto {\r\n}\r\n\r\nexport interface FriendPoolNetDto extends FriendPoolBaseDto {\r\n\tcustomers: FriendPoolCustomerSummaryNetDto[];\r\n\tvolunteers: FriendPoolVolunteerSummaryNetDto[];\r\n}\r\n\r\nexport interface FriendPoolStandardDto extends FriendPoolBaseDto {\r\n\tcustomers: FriendPoolCustomerSummaryStandardDto[];\r\n\tvolunteers: FriendPoolVolunteerSummaryStandardDto[];\r\n}\r\n\r\nexport interface FriendPoolVolunteerSummaryBaseDto  {\r\n\tfirstName: string;\r\n\tlastName: string;\r\n\tvolunteerId: number;\r\n}\r\n\r\nexport interface FriendPoolVolunteerSummaryNetDto extends FriendPoolVolunteerSummaryBaseDto {\r\n\tfriendVolunteerProfileNetId: number;\r\n}\r\n\r\nexport interface FriendPoolVolunteerSummaryStandardDto extends FriendPoolVolunteerSummaryBaseDto {\r\n\tfriendVolunteerProfileStandardId: number;\r\n}\r\n\r\nexport interface FriendProfileDto  {\r\n\tage: Date;\r\n\tavailabilityTimes: number[];\r\n\tcity: string;\r\n\tcountry: string;\r\n\temail: string;\r\n\tfirstName: string;\r\n\tfriendInfo: FriendVolunteerDto;\r\n\thasFriendInfo: boolean;\r\n\tid: number;\r\n\tinvolvedEventCategories: InvolvedEventCategories;\r\n\tisNonIdent: boolean;\r\n\tlastName: string;\r\n\tnativeLanguage: string;\r\n\totherLanguages: string;\r\n\tphoneNumber: string;\r\n\tspokenLanguages: string[];\r\n\tstreetAddress: string;\r\n\ttrainedDate?: Date;\r\n\ttransportation: number[];\r\n\ttravelTime: string;\r\n\tzipCode: string;\r\n}\r\n\r\nexport interface FriendshipNetDto extends DtoBaseWithId {\r\n\tcustomer: CustomerFriendshipInfoDto;\r\n\tcustomerProfileNetId: number;\r\n\tfriendshipState: FriendshipState;\r\n\tfriendVolunteerProfileNetId: number;\r\n\tstarted: Date;\r\n\tvolunteer: VolunteerFriendshipInfoDto;\r\n}\r\n\r\nexport interface FriendshipStandardDto extends DtoBaseWithId {\r\n\tcustomer: CustomerFriendshipInfoDto;\r\n\tcustomerProfileStandardId: number;\r\n\tfriendshipState: FriendshipState;\r\n\tfriendVolunteerProfileStandardId: number;\r\n\tstarted: Date;\r\n\tvolunteer: VolunteerFriendshipInfoDto;\r\n}\r\n\r\nexport interface FriendVolunteerBaseDto extends DtoBaseWithId {\r\n\tfriendVolunteerNetId?: number;\r\n\tfriendVolunteerStandardId?: number;\r\n\tgender: Gender;\r\n\thasHealthCareTraining: boolean;\r\n\thealthCareTrainingFreetext: string;\r\n\tlastContacted?: Date;\r\n\totherLanguages: string;\r\n\tphone: string;\r\n\tprofileId: number;\r\n}\r\n\r\nexport interface FriendVolunteerBaseExtensionDto<TStandard, TNet> extends FriendVolunteerBaseDto {\r\n\thasNetProfile: boolean;\r\n\thasStandardProfile: boolean;\r\n\tnetProfile: TNet;\r\n\tstandardProfile: TStandard;\r\n}\r\n\r\nexport interface FriendVolunteerDto extends FriendVolunteerBaseExtensionDto<FriendVolunteerProfileStandardDto, FriendVolunteerProfileNetDto> {\r\n}\r\n\r\nexport interface FriendVolunteerFindDto  {\r\n\tgender: Gender;\r\n\thasNetProfile: boolean;\r\n\thasStandardProfile: boolean;\r\n\tid: number;\r\n\tlastContacted?: Date;\r\n\tnetProfile: FriendVolunteerFindProfileDto;\r\n\tstandardProfile: FriendVolunteerFindProfileDto;\r\n}\r\n\r\nexport interface FriendVolunteerFindProfileDto extends CoreFriendManagementGroupItemBaseDto {\r\n\tfriendPools: FindPoolDto[];\r\n\tfriendships: FindFriendshipCustomerDto[];\r\n\tlastFriendshipEndDate: Date;\r\n\tmultipleCustomers: boolean;\r\n\tshortDescription: string;\r\n\tstate: CustomerState;\r\n}\r\n\r\nexport interface FriendVolunteerProfileCommonDto  {\r\n\tavailabilityDetails: string;\r\n\tavailabilityFrequence: AvailabilityFrequence;\r\n\tavailabilityTimes: AvailabilityTimes;\r\n\tfriendManagementGroupId: number;\r\n\tid: number;\r\n\tinterests: Interests;\r\n\tlastFriendshipEndDate: Date;\r\n\tmultipleCustomers: boolean;\r\n\tonHoldDeadline?: Date;\r\n\tonHoldDetails: string;\r\n\totherInterests: string;\r\n\tpreferredAges: PreferredAges;\r\n\tpreferredGenders: PreferredGenders;\r\n\tshortDescription: string;\r\n\tstartedPending: Date;\r\n\tstate: CustomerState;\r\n\tvolunteerInterviewed: boolean;\r\n\tvolunteerInterviewedBy: string;\r\n\tvolunteerInterviewedDate: string;\r\n\tvolunteerInterviewedOnDate?: Date;\r\n}\r\n\r\nexport interface FriendVolunteerProfileNetDto extends FriendVolunteerProfileCommonDto {\r\n\tcustomerTypes: NetCustomerTypes;\r\n\tecontactDiscord: string;\r\n\tecontactEmail: string;\r\n\tecontactFreetext: string;\r\n\tecontactInstagram: string;\r\n\tecontactKik: string;\r\n\tecontactSkype: string;\r\n\tecontactTelegram: string;\r\n\tfriendPools: FriendPoolFindNetDto[];\r\n\tfriendships: FriendshipNetDto[];\r\n\tfriendshipTypes: NetFriendshipTypes;\r\n\tprivateNotes: string;\r\n}\r\n\r\nexport interface FriendVolunteerProfileNetWithFriendshipsDto extends FriendVolunteerProfileNetDto {\r\n}\r\n\r\nexport interface FriendVolunteerProfileStandardDto extends FriendVolunteerProfileCommonDto {\r\n\talternativeCity: string;\r\n\talternativeStreet: string;\r\n\talternativeZipCode: string;\r\n\tcustomerTypes: CustomerTypes;\r\n\tfriendPools: FriendPoolFindStandardDto[];\r\n\tfriendships: FriendshipStandardDto[];\r\n\tfriendshipTypes: FriendshipTypes;\r\n\thasAlternativeAddress: boolean;\r\n\tprivateNotes: string;\r\n}\r\n\r\nexport interface FriendVolunteerProfileStandardWithFriendshipsDto extends FriendVolunteerProfileStandardDto {\r\n}\r\n\r\nexport interface FriendVolunteerWithFriendshipsDto extends FriendVolunteerBaseExtensionDto<FriendVolunteerProfileStandardWithFriendshipsDto, FriendVolunteerProfileNetWithFriendshipsDto> {\r\n}\r\n\r\nexport interface LanguageDto  {\r\n\tdisplayName: string;\r\n\tid: number;\r\n\tisoCode: string;\r\n}\r\n\r\nexport interface LightFriendProfileDto  {\r\n\tavailabilityTimes: number[];\r\n\tfirstName: string;\r\n\tid: number;\r\n\tinvolvedEventCategories: InvolvedEventCategories;\r\n\tisNonIdent: boolean;\r\n\tlastName: string;\r\n\tnativeLanguage: string;\r\n\totherLanguages: string;\r\n\tspokenLanguages: string[];\r\n\ttrainedDate?: Date;\r\n\ttransportation: number[];\r\n\ttravelTime: string;\r\n}\r\n\r\nexport interface UserProfileFindDto  {\r\n\tacceptMarketing?: boolean;\r\n\tage: Date;\r\n\temail: string;\r\n\tfirstName: string;\r\n\tfriendInfo: FriendVolunteerFindDto;\r\n\tisNonIdent: boolean;\r\n\tlastName: string;\r\n\tphoneNumber: string;\r\n\tportrait: string;\r\n\tprofileId: number;\r\n\tsectionId: number;\r\n\ttrainedDate?: Date;\r\n\tuseWorkingZipCode: boolean;\r\n\tworkingZipCode: string;\r\n\tzipCode: string;\r\n}\r\n\r\nexport interface VolunteerFriendshipInfoDto  {\r\n\tbirthDate: Date;\r\n\tfirstName: string;\r\n\tfriendVolunteerProfileNetId?: number;\r\n\tfriendVolunteerProfileStandardId?: number;\r\n\tgender: Gender;\r\n\tisNetProfile: boolean;\r\n\tisNonIdent: boolean;\r\n\tlastName: string;\r\n\tmultipleCustomers: boolean;\r\n\tportrait: string;\r\n\tprofileId: number;\r\n\tsectionId: number;\r\n\tshortDescription: string;\r\n\tstate: CustomerState;\r\n\tvolunteerId: number;\r\n\tzipCode: string;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface DtoBase  {\r\n}\r\n\r\nexport interface DtoBaseWithId extends DtoBase {\r\n\tid: number;\r\n}\r\n\r\nexport interface PagingCriteriaDto  {\r\n\tskip: number;\r\n\ttake: number;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Enumerations.Flags Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport enum AvailabilityTimes {\r\n\tNotDefined = 0,\r\n\tWeekdayDaytime = 2,\r\n\tWeekdayEvening = 4,\r\n\tWeekdayMorning = 1,\r\n\tWeekendDaytime = 16,\r\n\tWeekendEvening = 32,\r\n\tWeekendMorning = 8\r\n}\r\nexport enum CustomerTypes {\r\n\tCarer = 4,\r\n\tCrippled = 64,\r\n\tFamilyWithKids = 1,\r\n\tForeign = 32,\r\n\tHospitalized = 128,\r\n\tMemoryIssues = 16,\r\n\tMentalHealth = 2,\r\n\tMentallyHandicapped = 8,\r\n\tNotDefined = 0\r\n}\r\nexport enum EventTypes {\r\n\tCamp = 64,\r\n\tClub = 8,\r\n\tCollection = 4,\r\n\tCoursesAndTraining = 32,\r\n\tEvent = 1,\r\n\tGroupMeeting = 128,\r\n\tMeeting = 16,\r\n\tOther = 512,\r\n\tPractice = 2,\r\n\tPublicEvent = 256,\r\n\tVolunteerTask = 1024\r\n}\r\nexport enum FriendshipTypes {\r\n\tAcute = 32,\r\n\tFriendshipBroker = 4,\r\n\tGroupLeader = 2,\r\n\tMigri = 64,\r\n\tNotDefined = 0,\r\n\tOneshot = 16,\r\n\tOneToOne = 1,\r\n\tPrison = 8\r\n}\r\nexport enum Interests {\r\n\tAnimals = 32,\r\n\tBeautyTreatments = 1024,\r\n\tComputerGames = 256,\r\n\tCooking = 64,\r\n\tCulture = 1,\r\n\tExercise = 2,\r\n\tHandicrafts = 16,\r\n\tMusic = 512,\r\n\tNature = 8,\r\n\tNotDefined = 0,\r\n\tOutdoors = 16384,\r\n\tReading = 4096,\r\n\tShopping = 2048,\r\n\tSpectatorSports = 4,\r\n\tTravel = 128,\r\n\tVehicles = 8192\r\n}\r\nexport enum InvolvedEventCategories {\r\n\tBloodDonation = 4096,\r\n\tCollection = 64,\r\n\tFirstAidActivity = 2,\r\n\tFirstAidTraining = 1,\r\n\tFoodHelp = 65536,\r\n\tFriendship = 8192,\r\n\tHealth = 1024,\r\n\tHomeSupport = 512,\r\n\tHumanitary = 8,\r\n\tImmigrants = 256,\r\n\tInternational = 32,\r\n\tMentalSupport = 4,\r\n\tNotDefined = 0,\r\n\tOrganizationActivity = 16,\r\n\tOther = 16384,\r\n\tPreparation = 2048,\r\n\tSafeHouse = 32768,\r\n\tYouth = 128\r\n}\r\nexport enum Languages {\r\n\tEnglish = 4,\r\n\tFinnish = 1,\r\n\tNotDefined = 0,\r\n\tSwedish = 2\r\n}\r\nexport enum NetCustomerTypes {\r\n\tCarer = 4,\r\n\tCrippled = 16,\r\n\tFamilyWithKids = 1,\r\n\tForeign = 8,\r\n\tMentalHealth = 2,\r\n\tNotDefined = 0\r\n}\r\nexport enum NetFriendshipTypes {\r\n\tAcute = 32,\r\n\tFriendshipBroker = 4,\r\n\tGroupLeader = 2,\r\n\tNotDefined = 0,\r\n\tOneToOne = 1\r\n}\r\nexport enum PreferredAges {\r\n\tAdultOlder = 8,\r\n\tAdultYounger = 4,\r\n\tChild = 1,\r\n\tElder = 32,\r\n\tNotDefined = 0,\r\n\tPensioner = 16,\r\n\tYoung = 2\r\n}\r\nexport enum PreferredContactMethods {\r\n\tEmail = 2,\r\n\tICE = 8,\r\n\tNotDefined = 0,\r\n\tPhone = 1,\r\n\tTextMessage = 4\r\n}\r\nexport enum PreferredGenders {\r\n\tFemale = 2,\r\n\tMale = 1,\r\n\tNotDefined = 0,\r\n\tOther = 4\r\n}\r\nexport enum TimeWithoutFriends {\r\n\tBetweenHalfAYearAndOneYear = 4,\r\n\tBetweenThreeMonthsAndHalfAYear = 2,\r\n\tLessThanThreeMonths = 1,\r\n\tMoreThanAYear = 8,\r\n\tNotDefined = 0\r\n}\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.Friend.Interfaces Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.Event Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface EventAdminDto extends DtoBaseWithId {\r\n\tdelegatedByProfileId?: number;\r\n\temail: string;\r\n\teventId?: number;\r\n\tisCreator: boolean;\r\n}\r\n\r\nexport interface EventContactDto  {\r\n\temail: string;\r\n\tfirstName: string;\r\n\tlastName: string;\r\n\tphone: string;\r\n}\r\n\r\nexport interface EventDto extends DtoBaseWithId {\r\n\tcategory: InvolvedEventCategories;\r\n\tcontact: EventContactDto;\r\n\tcreatorId: number;\r\n\tendTime: EventTimeDto;\r\n\teventAdmins: EventAdminDto[];\r\n\teventOrganizer: EventOrganizerDto;\r\n\teventRegistration: number;\r\n\teventRoles: EventRoleDto[];\r\n\timage: string;\r\n\timageThumb: string;\r\n\tisAllDay: boolean;\r\n\tisClosed: boolean;\r\n\tisFull: boolean;\r\n\tisOnline: boolean;\r\n\tisPublic: boolean;\r\n\tlanguageId: number;\r\n\tlanguages: Languages;\r\n\tlastOccurrence: Date;\r\n\toccurance: EventOccurance;\r\n\toldImage: string;\r\n\toldImageThumb: string;\r\n\tregistrationDeadline?: Date;\r\n\trepeat: number;\r\n\tshowEmail: boolean;\r\n\tshowParticipants: boolean;\r\n\tshowPhone: boolean;\r\n\tstartTime: EventTimeDto;\r\n\ttranslations: EventTranslatableDto[];\r\n\ttype: EventTypes;\r\n\tzipCode: string;\r\n}\r\n\r\nexport interface EventOrganizerDto extends DtoBaseWithId {\r\n\teventOrganizerType: EventOrganizerType;\r\n\torganizerId: number;\r\n}\r\n\r\nexport interface EventParticipantDto extends DtoBaseWithId {\r\n\tcancellationToken: string;\r\n\tcreated?: Date;\r\n\temail: string;\r\n\tfirstName: string;\r\n\tinterestedInSimilarEvents: boolean;\r\n\tinterestedInSpr: boolean;\r\n\tisLightProfile: boolean;\r\n\tlastName: string;\r\n\tlightProfileId?: number;\r\n\tmoreInfo: string;\r\n\tnotificationSent: boolean;\r\n\tparticipated: boolean;\r\n\tphone: string;\r\n\tprofileId?: number;\r\n\troleIds: number[];\r\n\tzipCode: string;\r\n}\r\n\r\nexport interface EventRoleDto  {\r\n\teventId: number;\r\n\tid: number;\r\n\tmaximumParticipants: number;\r\n\tname: string;\r\n\tparticipants: EventParticipantDto[];\r\n}\r\n\r\nexport interface EventTimeDto  {\r\n\tday: number;\r\n\thour: number;\r\n\tminute: number;\r\n\tmonth: number;\r\n\tyear: number;\r\n}\r\n\r\nexport interface EventTranslatableDto  {\r\n\tcity: string;\r\n\tdescription: string;\r\n\tduration: string;\r\n\texternalUrl: string;\r\n\tlanguageId: number;\r\n\tmoreInfoQuestion: string;\r\n\tname: string;\r\n\tplaceName: string;\r\n\tprice: string;\r\n\tstreetAddress: string;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.RequestClasses Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface BaseSendMessageRequest  {\r\n\tcanReply: boolean;\r\n\tcontent: string;\r\n\tcustomSender: string;\r\n\treceiverId: number;\r\n\tsendAsEmail: boolean;\r\n\tsenderName: string;\r\n\tsenderProfileId: number;\r\n\tsubject: string;\r\n}\r\n\r\nexport interface SendFriendshipVolunteerMessage extends BaseSendMessageRequest {\r\n\tfriendManagementGroupId: number;\r\n\tvolunteerId: number;\r\n}\r\n\r\nexport interface SendMessageRequest extends BaseSendMessageRequest {\r\n\tdistrictId?: number;\r\n\tfriendManagementGroupId?: number;\r\n\tgroupedMessageId: string;\r\n\tgroupId?: number;\r\n\tgroupName: string;\r\n\tlink: string;\r\n\tparentMessageId?: number;\r\n\tsectionId?: number;\r\n\tsectionName: string;\r\n}\r\n\r\nexport interface SendMessageSelectedVolunteersRequest extends BaseSendMessageRequest {\r\n\tcontactList: string[];\r\n\tdistrictId?: number;\r\n\tgroupedMessageId: string;\r\n\tgroupId?: number;\r\n\tgroupName: string;\r\n\tlink: string;\r\n\tsectionId?: number;\r\n}\r\n\r\nexport interface SimpleFindCustomerRequest  {\r\n\tfriendshipStates: number[];\r\n\tgroupId: number;\r\n\torderByNew: boolean;\r\n\tsearchstring: string;\r\n\tskip: number;\r\n\ttake: number;\r\n}\r\n\r\nexport interface SimpleFindVolunteerRequest  {\r\n\tfriendshipStates: number[];\r\n\tgroupId: number;\r\n\torderByNew: boolean;\r\n\tsearchstring: string;\r\n\tskip: number;\r\n\ttake: number;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.Organization Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface DistrictDto  {\r\n\tid: number;\r\n\tname: string;\r\n\tsections: SectionDto[];\r\n}\r\n\r\nexport interface SectionContactDto  {\r\n\temail: string;\r\n\tsectionId: number;\r\n}\r\n\r\nexport interface SectionDto extends SectionReportDto {\r\n\tactionGroups: GroupDto[];\r\n\tdescription: string;\r\n\tdistrictId: number;\r\n\tdistrictName: string;\r\n\tfriendManagementGroupId?: number;\r\n\tfriendManagementGroupIds: number[];\r\n\tlanguage: SectionLanguage;\r\n\tname: string;\r\n\tstandardGroups: GroupDto[];\r\n\tvolunteers: UserProfileDto[];\r\n\tzipCodes: string[];\r\n}\r\n\r\nexport interface SectionLightDto extends SectionReportDto {\r\n\tdescription: string;\r\n\tdistrictId: number;\r\n\tdistrictName: string;\r\n\tfriendManagementGroupId?: number;\r\n\tlanguage: SectionLanguage;\r\n\tname: string;\r\n\tzipCodes: string[];\r\n}\r\n\r\nexport interface SectionReportDto  {\r\n\tcontacts: SectionContactDto[];\r\n\tid: number;\r\n\treportFrequency?: ReportFrequency;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Helpers Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport enum SectionLanguage {\r\n\tBilingual = 2,\r\n\tError = 3,\r\n\tFinnish = 0,\r\n\tSwedish = 1\r\n}\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.Group Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface GroupDetailDto  {\r\n\tcategory?: EventCategory;\r\n\tdescription: string;\r\n\tdistrict: DistrictDto;\r\n\texternalForm: ExternalFormUpdateDto;\r\n\tgroupCreator: PublicProfileDto;\r\n\tgroupOrganizer: GroupOrganizerDto;\r\n\tgroupType: GroupType;\r\n\tid: number;\r\n\tisActive: boolean;\r\n\tisAllLocations: boolean;\r\n\tlanguages: Languages;\r\n\tmembers: GroupPublicProfileDto[];\r\n\tname: string;\r\n\tpendingMembers: GroupPublicProfileDto[];\r\n\tsection: SectionDto;\r\n\ttotalMembers: number;\r\n}\r\n\r\nexport interface GroupDetailLightDto  {\r\n\tcategory?: EventCategory;\r\n\tdescription: string;\r\n\tdistrict: DistrictDto;\r\n\texternalForm: ExternalFormUpdateDto;\r\n\tgroupCreator: PublicProfileDto;\r\n\tgroupOrganizer: GroupOrganizerDto;\r\n\tgroupType: GroupType;\r\n\tid: number;\r\n\tisActive: boolean;\r\n\tisAllLocations: boolean;\r\n\tlanguages: Languages;\r\n\tmembers: GroupPublicProfileLightDto[];\r\n\tname: string;\r\n\tpendingMembers: GroupPublicProfileLightDto[];\r\n\tsection: SectionDto;\r\n\ttotalMembers: number;\r\n}\r\n\r\nexport interface GroupDto  {\r\n\tcategory?: EventCategory;\r\n\tdebugInfo: string;\r\n\tdescription: string;\r\n\tdistrictId: number;\r\n\texternalForm: ExternalFormUpdateDto;\r\n\tgroupCreatorId: number;\r\n\tgroupManagerFirstName: string;\r\n\tgroupManagerLastName: string;\r\n\tgroupOrganizer: GroupOrganizerDto;\r\n\tgroupType: GroupType;\r\n\tid: number;\r\n\tisActive: boolean;\r\n\tisAllLocations: boolean;\r\n\tlanguages: Languages;\r\n\tmembers: number[];\r\n\tname: string;\r\n\tpendingMembers: GroupMemberKeyValueDto[];\r\n\tsectionId: number;\r\n\ttotalMembers: number;\r\n}\r\n\r\nexport interface GroupMemberKeyValueDto  {\r\n\tkey: number;\r\n\tvalue: boolean;\r\n}\r\n\r\nexport interface GroupOrganizerDto extends DtoBaseWithId {\r\n\tgroupOrganizerType: GroupOrganizerType;\r\n\torganizerId?: number;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.ExternalForm Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface ExternalFormDto  {\r\n\tlink: string;\r\n\tname: string;\r\n}\r\n\r\nexport interface ExternalFormUpdateDto extends DtoBaseWithId {\r\n\tlink: string;\r\n\tname: string;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.Organization.Criteria Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface GetDistrictVolunteersCriteria extends GetVolunteersCriteria {\r\n\tdistrictId: number;\r\n}\r\n\r\nexport interface GetSectionVolunteersCriteria extends GetVolunteersCriteria {\r\n\tsectionId: number;\r\n}\r\n\r\nexport interface GetVolunteersCriteria extends PagingCriteriaDto {\r\n\tactivityArea: string;\r\n\tareasOfInterest: AreaOfInterest[];\r\n\tavailabilityTimes: AvailabilityTimesEnum[];\r\n\tcontacted?: boolean;\r\n\tinvolvedEventCategories: InvolvedEventCategories;\r\n\tisAgeBelow30?: boolean;\r\n\tpreferredContactMethods?: PreferredContactMethods;\r\n\tprofileStates: ProfileState[];\r\n\tsearchWord: string;\r\n\tskills: PersonalSkills[];\r\n\tspokenLanguages: string[];\r\n\tvolunteerOnline?: boolean;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.Message Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface MessageDto  {\r\n\tcontent: string;\r\n\tdeleted: boolean;\r\n\tgroupId?: number;\r\n\tgroupName: string;\r\n\tid: number;\r\n\tmessageStatus: MessageStatus;\r\n\tmessageType: number;\r\n\tparentMessageId?: number;\r\n\tsectionId?: number;\r\n\tsectionName: string;\r\n\tsender: string;\r\n\tsenderId?: number;\r\n\tsenderPortrait: string;\r\n\tsent?: Date;\r\n\tsubject: string;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.Identity.MyProfile Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface MyProfileHasDto  {\r\n\thasActionGroupAdmin: boolean;\r\n\thasActiveFriendship: boolean;\r\n\thasDeleteMyProfileRequest: boolean;\r\n\thasFutureEventAsCreator: boolean;\r\n\thasRole: boolean;\r\n}\r\n\r\nexport interface MyProfileIsElementsDto  {\r\n\tisFutureEventCreator: boolean;\r\n\tisSoleActionGroupAdmin: boolean;\r\n\tisSoleFutureEventAdmin: boolean;\r\n\tisSoleOpenGroupAdmin: boolean;\r\n}\r\n\r\nexport interface MyProfileSpecialDto  {\r\n\thas: MyProfileHasDto;\r\n\tis: MyProfileIsElementsDto;\r\n\tlevel: MyProfileLevel;\r\n}\r\n\r\nexport interface MyProfileUsageDto extends ProfileUsageDto {\r\n\tspecial: MyProfileSpecialDto;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.Group.Criteria Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface GetGroupsCriteria extends PagingCriteriaDto {\r\n\tcategories: EventCategory[];\r\n\tdistrictId?: number;\r\n\tgroupId?: number;\r\n\tgroupOrganizers: GroupOrganizerCriteria[];\r\n\tgroupTypes: GroupType[];\r\n\tisActive?: boolean;\r\n\tisAllLocations?: boolean;\r\n\tlanguages: Languages[];\r\n\tprofileId?: number;\r\n\tsearchWord: string;\r\n\tsearchWordSeparator: string;\r\n\tsectionId?: number;\r\n}\r\n\r\nexport interface GroupOrganizerCriteria  {\r\n\tgroupOrganizerType: GroupOrganizerType;\r\n\thashCode: string;\r\n\torganizerId: number;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.Google Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface DistanceResult  {\r\n\tdistance: number;\r\n\tdistanceText: string;\r\n\tduration: number;\r\n\tdurationMinutes: number;\r\n\tdurationText: string;\r\n\tisRealDistance: boolean;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.Friend.SearchResults Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface FindFriendManagementGroupCustomersResult extends FindFriendManagementGroupItemsResult<FriendCustomerFindDto> {\r\n}\r\n\r\nexport interface FindFriendManagementGroupItemsResult<T> extends FriendshipQueryCriteria {\r\n\titems: T[];\r\n\ttotal: number;\r\n}\r\n\r\nexport interface FindFriendManagementGroupVolunteersResult extends FindFriendManagementGroupItemsResult<UserProfileFindDto> {\r\n}\r\n\r\nexport interface MatchScore  {\r\n\tisInappropriateMatch: boolean;\r\n\tscore: number;\r\n\tshowOnList: boolean;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.Friend.Criteria Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface FindFriendManagementGroupContentCriteria extends FriendshipQueryCriteria {\r\n\tages: PreferredAges;\r\n\tcustomerStates: CustomerState[];\r\n\tgenders: Gender[];\r\n\tgroupMembership: boolean;\r\n\tincludeFriendPools: boolean;\r\n\tincludeFriendships: boolean;\r\n\tlanguages: string[];\r\n\tnatives: string[];\r\n\torderByFriendType: OrderByFriendType;\r\n\tsearchString: string;\r\n\tskip: number;\r\n\ttake: number;\r\n\ttimeWithoutFriends: TimeWithoutFriends;\r\n}\r\n\r\nexport interface FindNetFriendManagementGroupContentCriteria extends FindFriendManagementGroupContentCriteria {\r\n\tcustomerTypes: NetCustomerTypes;\r\n\tfriendshipTypes: NetFriendshipTypes;\r\n}\r\n\r\nexport interface FindStandardFriendManagementGroupContentCriteria extends FindFriendManagementGroupContentCriteria {\r\n\tcustomerTypes: CustomerTypes;\r\n\tfriendshipTypes: FriendshipTypes;\r\n}\r\n\r\nexport interface FriendManagementCommand  {\r\n\tgroupId: number;\r\n}\r\n\r\nexport interface FriendshipNetCommandCriteria extends FriendManagementCommand {\r\n\tcustomerProfileNetId: number;\r\n\tvolunteerNetProfileId: number;\r\n}\r\n\r\nexport interface FriendshipQueryCriteria extends FriendManagementCommand {\r\n}\r\n\r\nexport interface FriendshipStandardCommandCriteria extends FriendManagementCommand {\r\n\tcustomerProfileStandardId: number;\r\n\tvolunteerStandardProfileId: number;\r\n}\r\n\r\nexport interface GetFriendProfileByFriendVolunteerIdCriteria  {\r\n\tfriendManagementGroupId: number;\r\n\tfriendVolunteerId: number;\r\n\tincludeFriendPools: boolean;\r\n\tincludeFriendships: boolean;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.Friend.SearchResults.Match Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface FindMatchNetCustomerResult extends FindFriendManagementGroupItemsResult<MatchItemNetVolunteerDto> {\r\n}\r\n\r\nexport interface FindMatchNetVolunteerResult extends FindFriendManagementGroupItemsResult<MatchItemNetCustomerDto> {\r\n}\r\n\r\nexport interface FindMatchStandardCustomerResult extends FindFriendManagementGroupItemsResult<MatchItemStandardVolunteerDto> {\r\n}\r\n\r\nexport interface FindMatchStandardVolunteerResult extends FindFriendManagementGroupItemsResult<MatchItemStandardCustomerDto> {\r\n}\r\n\r\nexport interface MatchDetailCustomerDto extends MatchDetailDto {\r\n\tmultipleVolunteers: boolean;\r\n}\r\n\r\nexport interface MatchDetailDto  {\r\n\tbirthDate: Date;\r\n\tcity: string;\r\n\tcontactImage: string;\r\n\tfirstName: string;\r\n\tgender: Gender;\r\n\tlastFriendshipEndDate: Date;\r\n\tlastName: string;\r\n\tnativeLanguage: string;\r\n\tshortDescription: string;\r\n\tspokenLanguages: string[];\r\n\tstate: CustomerState;\r\n\tzipCode: string;\r\n}\r\n\r\nexport interface MatchDetailNetCustomerDto extends MatchDetailCustomerDto {\r\n\tcustomerProfileNetId: number;\r\n\tcustomerTypes: NetCustomerTypes;\r\n}\r\n\r\nexport interface MatchDetailNetVolunteerDto extends MatchDetailVolunteerDto {\r\n\tcustomerTypes: NetCustomerTypes;\r\n\tfriendVolunteerProfileNetId: number;\r\n}\r\n\r\nexport interface MatchDetailStandardCustomerDto extends MatchDetailCustomerDto {\r\n\tcustomerProfileStandardId: number;\r\n\tcustomerTypes: CustomerTypes;\r\n}\r\n\r\nexport interface MatchDetailStandardVolunteerDto extends MatchDetailVolunteerDto {\r\n\tcustomerTypes: CustomerTypes;\r\n\tfriendVolunteerProfileStandardId: number;\r\n}\r\n\r\nexport interface MatchDetailVolunteerDto extends MatchDetailDto {\r\n\tfriendVolunteerId: number;\r\n\thasNetProfile: boolean;\r\n\thasStandardProfile: boolean;\r\n\tisNonIdent: boolean;\r\n\tmultipleCustomers: boolean;\r\n\tprofileId: number;\r\n\tsectionId: number;\r\n\ttrainedDate?: Date;\r\n}\r\n\r\nexport interface MatchItemBaseDto<T> extends MatchScore {\r\n\tmatch: T;\r\n}\r\n\r\nexport interface MatchItemNetCustomerDto extends MatchItemBaseDto<MatchDetailNetCustomerDto> {\r\n}\r\n\r\nexport interface MatchItemNetVolunteerDto extends MatchItemBaseDto<MatchDetailNetVolunteerDto> {\r\n}\r\n\r\nexport interface MatchItemStandardCustomerDto extends MatchItemBaseDto<MatchDetailStandardCustomerDto> {\r\n}\r\n\r\nexport interface MatchItemStandardVolunteerDto extends MatchItemBaseDto<MatchDetailStandardVolunteerDto> {\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.Event.Search Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface AdvancedEventSearchCriteria extends PagingCriteriaDto {\r\n\tendDate?: Date;\r\n\teventCategory?: InvolvedEventCategories;\r\n\teventOrganizer: EventOrganizerCriteria;\r\n\teventType?: EventTypes;\r\n\tisFullLocale: boolean;\r\n\tisOnline: IsOnlineEventFilterType;\r\n\tisPublic?: boolean;\r\n\tlanguages: Languages[];\r\n\tlocale: string;\r\n\tsearchWord: string;\r\n\tsearchWordDelimiters: string[];\r\n\tstartDate?: Date;\r\n}\r\n\r\nexport interface EventOrganizerCriteria  {\r\n\teventOrganizerType: EventOrganizerType;\r\n\tisValidCriteria: boolean;\r\n\torganizerId: number;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.Crm Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface CrmDataDto  {\r\n\tcity: string;\r\n\tcountry: string;\r\n\tcrmcustomerid: string;\r\n\tdecorations: CrmDecorationDto[];\r\n\temail: string;\r\n\tfirstname: string;\r\n\tlanguage: string;\r\n\tlastname: string;\r\n\tlastPaymentDate?: Date;\r\n\tmembershipstartyear: string;\r\n\tmembershipstatus: MembershipStatus;\r\n\tmembershiptype: MembershipType;\r\n\tphone: string;\r\n\tpositionsoftrust: CrmTrustDto[];\r\n\tpostalcode: string;\r\n\tpostoffice: string;\r\n\tscenarioName: string;\r\n\tscenarioNumber: number;\r\n\tsection: string;\r\n\tstreetaddress: string;\r\n\tvatiprofileid: string;\r\n}\r\n\r\nexport interface CrmDecorationDto  {\r\n\tdecoration: string;\r\n\tgranteddate: string;\r\n\torganization: string;\r\n\tstatus: string;\r\n}\r\n\r\nexport interface CrmTrustDto  {\r\n\tenddate: string;\r\n\torganization: string;\r\n\torganizationlevel: string;\r\n\tposition: string;\r\n\tstartdate: string;\r\n\tstatus: string;\r\n}\r\n\r\n\r\n// GENERATED FILE BY DTOTYPESCRIPTGENERATOR, DO NOT EDIT!\r\n// see DtoTypeScriptGenerator.cs\r\n// SPR.Shared.Models.Dto.OmaSettingsDto Generated from CustomTypeScriptFormatter\r\n/* eslint-disable @typescript-eslint/member-delimiter-style */\r\n/* eslint-disable @typescript-eslint/no-empty-interface */\r\n/* eslint-disable no-multi-spaces */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-tabs */\r\n\r\nexport interface OmaSettingsDto  {\r\n\tname: string;\r\n\ttype: string;\r\n\tvalue: string;\r\n}\r\n\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkspr_oma\"] = self[\"webpackChunkspr_oma\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(5050); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["redirectToLogin","this","$route","path","toLowerCase","startsWith","window","location","href","fullPath","http","interceptors","push","request","next","ua","navigator","userAgent","msie","indexOf","url","Date","getTime","token","sessionStorage","getItem","isException","_","findIndex","state","exceptions","item","test","endpointCalled","find","apiEndpoints","endpoint","Array","isArray","noTokenNeeded","short","lifetime","JSON","parse","atob","split","exp","now","headers","set","sessionJwtToken","dispatch","isRefreshing","commit","get","refresh","then","s","setItem","body","r","console","log","Promise","reject","Error","response","status","__retry","Authorization","x","catch","err","removeItem","render","_vm","_c","_self","_setupProxy","staticClass","key","_m","attrs","_v","_e","staticRenderFns","adminTranslateUrl","_s","$t","ossiUrl","hupsisUrl","friendUrl","adminUrl","on","toLogin","directives","name","rawName","value","hasProfile","expression","$event","logout","toggleBurger","option1Value","class","fiSelected","changeLanguage","svSelected","enSelected","data","$store","language","computed","options","languages","methods","e","setHtmlLang","$i18n","locale","component","style","type","disabled","ariaLabel","tooltip","emitClickEvent","preicon","length","title","icon","getFullYear","staticStyle","versionInfo","versionInfoSeparator","omaWebApiVersionLink","omaApiVersion","appVersion","omaWebApiVersion","apiBases","contentservice","version","created","self","$http","resp","fileVersion","loadMessages","resolve","messageservice","getMessagesByUserId","profile","profileId","messages","sortBy","message","sent","reverse","markMessageAsRead","messageStatus","updateMessage","deleteMessage","updatemessagestatus","messageType","marknotificationasread","replace","id","post","foundMessageIndex","msg","$delete","getMessage","currentStep","steps","ref","tag","adToken","pending","buttonTitle","onNext","onBack","_l","step","index","stepIndicatorClick","interest","text","wizardModel","areasOfInterest","handleCheckbox","checked","tabindex","handleClick","props","String","default","clickEvent","Number","required","collection","mounted","$emit","components","sprcheckbox","selected","Set","interests","isChecked","add","delete","arr","skill","personalSkills","skills","normalizeTranslation","spokenLanguages","model","callback","$$v","slot","domProps","isoCode","displayName","selectEvent","customElements","allLanguages","watch","val","old","registrationLanguages","union","vuixCommit","splice","isCalculating","validationErrors","warnings","handleLocation","sectionsZips","errors","has","sectionZip","volunteerOnline","fieldReference","translationCombined","warning","useTranslations","Boolean","selectedOption","classes","wrapper","input","isRequired","inputId","placeholder","seedSearchText","_k","keyCode","setOption","apply","arguments","movePointerDown","stopPropagation","closeOut","movePointerUp","target","composing","searchText","icons","toggleDropdown","dropdownOpen","dropdown","maxHeight","option","idx","pointer","activeClass","handleClickOutside","setPointerIdx","preventDefault","_t","getOptionDescription","switchToSearch","getOptionValue","maybeAdjustScroll","pixelsToPointerTop","pixelsToPointerBottom","viewport","top","scrollTo","bottom","pointerHeight","$refs","i","children","offsetHeight","element","scrollTop","position","mixins","pointerScroll","Object","undefined","optionLabel","optionKey","showArrow","showDefaultOptions","dark","maxResults","Function","filterBy","toString","includes","matchingOptions","filter","slice","curr","prev","$nextTick","search","focus","document","addEventListener","destroyed","removeEventListener","event","selectedValue","match","$el","contains","classCombined","isValid","_uid","updateValue","noWrap","allowHtml","defaul","hasError","additionalClass","whiteWarnings","rv","cityFromZip","zip","vm","success","failure","uri","zipcode","sectionsFromZip","sections","sec","zipCodes","formatAddress","streetAddress","postalCode","city","join","proxiedGeocode","address","eventservice","geocode","proxiedReverseGeocode","lat","lng","proxiedDistance","origins","destinations","mode","distance","getTravelDistanceTime","origin","destination","transportation","distanceText","durationText","minutes","durationMinutes","isRealDistance","choice","hintTime","travelTime","roundbox","centerText","computedType","hint","handleInput","validatedFields","forEach","fieldName","items","field","rule","remove","validateSection","$validator","validateAll","toLowerCamelCase","availabilityTimes","databaseAvailabilityTimes","firstName","lastName","email","phone","ethics","gdpr","sprinput","selectEmail","phoneNumber","registerErrors","registrationError","facebookLogin","googleLogin","printThis","vuex","UserId","streetaddress","country","dateIsValid","age","preferredContactMethodOptions","preferredContactMethods","alternativePrefix","langPool","languagesJoin","error","wizardStyle","inTitle","$$selectedVal","prototype","call","o","map","_value","day","multiple","dayOptions","month","year","calculatedClass","isSelected","onChecked","bitmaskhelper","bitmaskToArray","integer","mask","Math","pow","arrayToBitmask","reduce","a","b","translateEnumsToBitmask","bitmask","convertBitmaskToInteger","bitmaskValues","regularIntegers","bitmaskValue","exponent","currentBit","convertIntegerToBitmask","regularInteger","use","validatorHasOptionSelected","args","validate","YesNoWarning","AnonNetCustomerRegistrationStep","AnonStandardCustomerRegistrationStep","max","story","onStoryChange","statusOptions","onProfileStateChange","profileStateRadio","AlreadyInvolved","areasOfInvolved","rows","textValue","onKeyDown","subtext","showCounter","maxCharacters","extend","autoResize","calculateHeight","handleWindowResize","ta","autoHeightTextarea","height","minHeight","scrollHeight","evt","translationKey","$parent","baseradiobutton","elements","floor","sprvalidation","profileState","involves","onProfileState","sum","formInfo","membershipTypes","flow","personal","$set","compact","list","maxlength","unit","inputType","$_veeValidate","inputRef","bannerType","bannerText","p","productCode","_q","membershipType","descriptionSwe","descriptionFin","priceCents","nl2br","arg","requiredTitle","calculateAge","bDate","offset","diff","calculateDayDiff","pDate","dates","memberships","membershipsFiltered","orderBy","minAge","maxAge","days","joinsections","showSwedish","protoMail","inputEmail","paymentResponse","invoice","optionsResponse","provider","$bus","parameter","svg","paymentprovider","sprbutton","transactionId","submitted","checkoutUrl","paymentservice","checkout","optionsUrl","paymentoptions","cancelUrl","paymentcancel","confirmUrl","confirminvoice","toDto","$on","submit","beforeDestroy","async","$off","cancel","marketingEmail","dto","httpPromise","confirmInvoice","$router","params","jso","nativeLanguage","toUpperCase","omaId","street","zipCode","dateofBirth","marketingConsentEmail","marketingConsentPhone","marketingSms","section","count","code","locationutils","page","lastHandledZip","lastHandledCityZip","lastHandledLanguage","productListUrl","productlist","source","query","btoa","deep","handler","handleZipChange","citySe","cityFi","getProductList","loadFromWizard","loadFromProfile","order","fail","currentStage","incrementStep","handleError","lcFirst","registerId","register","isFlow","showCto","getEmail","fromQuery","getCustomerUrl","membershipcustomer","cid","pageName","sprCampaign","moreInfoQuestion","description","date","price","eventRoles","startTime","hour","minute","endTime","isAllDay","occurance","repeat","registrationDeadline","contact","translations","image","imageThumb","oldImage","oldImageThumb","placeName","isOnline","isPublic","duration","category","eventAdmins","eventOrganizer","eventOrganizerType","organizerId","customer","isPersonalInfoDone","isLanguageInfoDone","isInterestInfoDone","isFriendInfoDone","isContactInfoDone","onStartClicked","localCustomer","genders","onPrevClicked","onNextClicked","stringifiedItems","previousText","nextText","isSave","checkboxLanguages","customerLanguages","nativeLanguageOptions","mappedCustomerLanguages","customerLanguageOptions","onCustomerLanguageChanged","potential","splitField","original","splt","legth","combineFields","el1","el2","tBool","bool","customerInterests","mustHaveOneGenderSelected","pressedNext","preferredAges","mustHaveOneAgeGroupSelected","homePhone","contactFirstName","contactLastName","contactPhoneNumber","birthdateString","genderString","languageString","lang","otherLanguages","interestsString","interestOther","preferredGenders","econtactEmail","econtactTelegram","econtactKik","econtactInstagram","econtactSkype","econtactDiscord","econtactFreetext","netDescription","customerTypeOtherInfo","privacyStatement","getGendersTranslations","getTranslations","getGenderPreferencesTranslations","getTimeWithoutFriendsTranslations","timeWithoutFriends","getPreferredAgeTranslations","preferredAge","getAvailabilityFrequencyTranslations","availabilityFrequency","getAvailabilityTimesTranslations","getCustomerTypesTranslations","customerTypes","getNetCustomerTypesTranslations","netCustomerTypes","getFriendshipTypesTranslations","friendshipTypes","getInterestsTranslations","getProfileInvolvedEventCategoriesTranslation","getTranslation","involvedEventCategories","getProfilePreferredContactMethodsTranslation","getCustomerStatesTranslations","customerStates","getGroupTypesTranslations","groupTypes","getEventCategoriesTranslations","eventCategories","getEventTypesTranslations","eventTypes","getEventRecurrenceTranslations","eventRecurrenceFrequencies","getTransportationTranslations","getLanguages","getGenderTranslation","getAvailabilityTimesMaskTranslation","integerIntoBitmaskProxy","getAvailabilityTimesTranslation","getGenderPreferencesMaskTranslation","getGenderPreferencesTranslation","getAgePreferencesMaskTranslation","getAgeTranslation","getFriendshipTypesMaskTranslation","getFriendshipTypesTranslation","getNetFriendshipTypesMaskTranslation","getNetFriendshipTypesTranslation","getInterestsMaskTranslation","getInterestsTranslation","getLanguagesMaskTranslation","getLanguagesTranslation","getProfileInvolvedEventCategoriesMaskTranslation","getEventTypesMaskTranslation","getEventTypesTranslation","getProfileInvolvedEventCategoriesMaskItems","getProfileInvolvedEventCategoriesMaskItemsTranslation","getProfilePreferredContactMethodsMaskTranslation","getCustomerTypesMaskTranslation","getCustomerTypesTranslation","getNetCustomerTypesMaskTranslation","getNetCustomerTypesTranslation","getAvailabilityFrequencyTranslation","netFriendshipTypes","groupLanguages","getCustomerStatesTranslation","getGroupTypesTranslation","getEventCategoriesTranslation","getInvolvedEventCategoriesTranslation","getEventRecurrenceTranslation","getTransportationTranslation","getLanguage","langs","keyPrefix","prefix","lowerFirstLetter","charAt","parseArray","array","storeCollection","transKey","results","onFinishClicked","start","fmgid","friendshipGroup","contactInfo","friendRequestFormAllowed","groupActivities","onNetFriendRequestClicked","listItem","isFriendRequest","isEditing","toggleEdit","onCallTimes","contactInfoList","showStandardButton","onFriendRequestClicked","onSave","onCancel","onDelete","editable","isAdding","onAdd","onAddSave","onAddCancel","forminput","stringify","result","readOnly","canEdit","hasActivities","activity","$id","friendshipManagementGroupId","readMode","activated","toCamelCase","line","activityTypeId","stringhelper","str","word","isEmptyOrSpaces","expSeconds","seconds","expMinutes","expHours","hours","fetchItem","expiration","cache","privateFetch","retry","f","otherContact","contactStreetAddress","contactZipCode","contactCity","contactPhonenumber","contactEmail","contactRelation","login","selectFrontPage","toWizard","onViewAllEventsWithAttribute","sprevent","hasEvents","eventsLoading","moreEventsToShow","onShowMoreEventsClick","onViewAllEvents","onEventClicked","showIfFull","showIfClosed","startDate","endDate","translation","eventtype","postcode","eventcategory","isoToId","iso","eventTranslation","languageId","fallbackCode","fallbackLang","y","earmark","isFull","isClosed","isRegistrationDeadlinePassed","sprEvent","eventimage","src","eventDefault","thumb","sameDayEvent","evS","evE","ev","formatTime","time","searchtext","events","eventFilter","take","skip","eventsToShowInitial","eventsToShow","filteredEvents","filtered","some","elem","getEvents","eventallpublic","onSearchChanged","emailOptIn","handleElementClicked","completionPercentage","updateButton","sectionLoading","inAnySection","mySection","districtName","sectionLanguage","viewSection","newNumber","ismessagesloading","messagesLoading","onMessageClicked","viewMessages","myGroups","groupsLoading","viewGroups","addGroup","selectedEventView","eventView","UPCOMING","onEventsUpcomingClick","RECOMMENDED","onEventsRecommendedClick","POPULAR","onEventsPopularClick","VOLUNTEERTASKS","onEventsVolunteerTasksClick","ORGANISER","onEventsOrganiserClick","PARTICIPATING","onEventsParticipatingClick","includeEventsFromPast","includeEventsFromPastClick","excludeEventsFromPastClick","jwtToken","ActionGroupMembership","hasRole","onAddEvent","completionRounded","completion","showNumeric","ceil","showNumericSafe","sender","getStatus","stateClass","groupid","groupId","messageSender","sentDate","subject","portrait","letter","substring","isEmpty","userprofileicon","isReply","parentMessageId","isGroupLink","local","format","uriProfile","userservice","senderId","detailed","isGroupAdmin","viewGroup","group","totalMembers","groupType","openTo","sectionName","groupOrganizer","applyPending","appliedToGroup","isMemberPendingByOwnRequest","isMemberPendingByAdminRequest","isGroupMember","joinActionGroup","acceptInvitation","joinStandardGroup","datalistid","onInput","groupOrganizerType","sprsimpletext","textOnly","groupOrganizerList","groupOrganizerTypeNotSet","groupOrganizerTypeInstitution","groupOrganizerTypeDistrict","groupOrganizerTypeSection","institutions","institutionIndex","institution","districts","districtIndex","district","districtId","j","newVal","setLocalVal","ds","groupOrganizerName","groupview","actionGroups","filterByGroup","openGroups","organizer","activateGroupButton","anonfront","frontPages","successMessages","password","loginClicked","showCheckBoxes","codeOfEthics","dataProtection","onActiveDirectoryLogin","passwordType","toggleType","SPRButton","username","failedLoginAttempt","cameFrom","adFailure","bannerVisible","handleToken","valid","authToken","sessionRedirect","from","Email","Password","codeOfEthicsAccepted","dataProtectionAccepted","reset","showAlertInfo","aduri","adhandler","labels","motto","updateMotto","updateStory","profileStatusOptions","updateProfileState","updatePreferredContactMethods","updateProfileOnBackend","hasInvolvedEventCategories","getInvolvedEventCategories","getAreaOfInterestText","getPersonalSkillsText","userSection","workingZipCode","formatBoolean","databaseIdToText","idToText","formatDate","member","trainText","showMembershipButton","admin","friendInfo","uniqueid","editing","revertChanges","volunteer","standardProfile","createStandard","netProfile","createNet","computedGender","hasHealthCareTraining","healthCareTrainingFreetext","shortDescription","multipleCustomers","computedAlternativeAddress","computedGenderPreference","computedPreferredAges","computedFriendshipTypes","computedInterests","otherInterests","computedAvailabilityTimes","computedAvailabilityFrequence","availabilityDetails","computedCustomerTypes","pill","showDelete","onRemove","initiateDeleteOrAnonymize","crmcustomerid","membershipstartyear","membershipStatus","memberFees","onRadioClicked","onRadioClick","headerTranslation","chooseEditor","editor","updateChildData","childDataSaved","childCanceled","entry","translationPrefix","resolveId","actualData","editSelection","save","cancelButton","datehelper","parseDateFromString","dateString","parts","d","convertToUTC","utcDate","UTC","getMonth","getDate","getHours","getMinutes","getSeconds","toISOString","toUtcWithoutTime","finnishDateFormat","birthdateValidation","nowDay","nowDayString","nowMonth","nowMonthString","nowYear","getUTCFullYear","currentDateAsString","imageChooser","uploadState","feedbackClass","uploadFeedback","changePending","onFileChange","progressButton","editorState","progressText","backButton","cancelText","loading","css","uploadImage","fileInput","click","files","dataTransfer","createImage","file","reader","FileReader","onload","readAsDataURL","uploadimage","fileName","fileBytes","container","ok","disabledSectionsZips","disabledSectionZip","hasChangeDistrictPermissions","hasChangeSectionWithinDistrictPermissions","onVolunteerOnlineChanged","actualDataTransport","editSelectionTransport","reasonable","currentPassword","retypeRequired","confirmed","confirmPassword","validatorEmailExists","store","emailexists","savewarnings","placeholdertext","adminemail","onAddAdmin","onRemoveAdmin","isSaving","profileUsageReportData","deleteMyUserProfile","reportData","special","isTypeA","option2Value","option3Value","option4Value","levelInstructions","hasConsent","isSending","deleteButtonTitle","onDeleteProfile","addEditTitle","onVolunteerChanged","hasStandardProfile","hasNetProfile","removeStandardForm","onVolunteerStandardProfileChanged","removeNetForm","onVolunteerNetProfileChanged","showStandardForm","showNetForm","userGenders","update","localVolunteer","firstError","firstErrorId","firstErrorField","fields","itemsById","errorElement","el","scrollIntoView","showAlert403","showAlertPermissionDenied","showAlertSuccess","html","showAlert","showAlertWarning","showAlertError","closefn","$toast","open","onClose","friendProfile","onFriendProfileChanged","computedInterviewData","isStateChangeDisabled","onInterviewDataChanged","computedOnHoldData","onOnHoldDataChanged","lastContacted","onlastContactedChanged","dateBirthdate","onBirthdayChange","friendCustomerLanguages","isNetProfile","travelOptions","isADate","isNaN","convertFromFinnishDateStringToDate","regex","valToTest","endParts","dayParts","validatorDateIsBefore","checkDate","interviewedByRequired","localOnHoldData","onHold","onHoldChecked","onHoldDetails","onHoldDetailsUpdate","onHoldDeadline","onHoldDeadlineUpdate","hasLastContacted","inActive","goBack","infobutton","subtitle","back","isIdentProfile","cancelModal","showModal","userProfile","existingProfileSectionName","connectProfiles","isNonIdent","computedApprovalData","onApprovalDataChanged","onCustomerCommonChanged","computedSuitabilityData","onSuitabilityDataChanged","birthDateDate","onBirthDateSelected","onCustomerLanguagesChanged","useCustomerTypes","isNet","localApprovalData","modifiers","datePlaceholder","localSuitabilityData","onCustomerChanged","isLoading","noResults","isNetFmg","onSearch","onSort","isCustomerTab","isVolunteerTab","searchFilter","pagesize","total","searchType","customerList","volunteerList","onPageChanged","onPrevious","onItemSelected","poolFilter","poolSearchText","onCustomerFilterChanged","onPoolFilterChanged","languageFilters","ages","filterType","showAll","filterChanged","changeCustomerStatus","changeCustomerTypes","hasGroupMembershipSelected","changeHasGroupMembership","changeGender","changeFriendshipType","motherTongs","changeMotherTongs","changeLanguages","changeAges","changeTimeWithoutFriends","collapsed","heading","collapsedByDefault","filterItems","isCollapsed","label","filteritem","getStateFilterCssClass","changeFilterItem","collapsible","onFilterChanged","poolStatuses","selectedTab","searchPlaceholder","doSearch","sortByList","doSort","addCustomer","addVolunteer","addPool","isOpen","changeSort","computedSortBy","sortitem","chooseItem","selectedItem","onPagerChanged","onPagerPrevious","onPagerNext","hasFriendship","customerNotForSpr","multipleVolunteers","selectCustomer","genderAgeText","zipCodeText","friendship","friendVolunteerId","friendshipState","daysWithoutFriend","lastFriendshipEndDate","pool","onPoolClicked","friendStateStyle","titleText","friendStateStyleOrb","friendname","multipleFriendships","cross","cState","hasCustomer","volunteerState","hasMultipleCustomers","customerId","statisticsvisible","currentPage","maxDisplay","isLastPage","visibility","isFirstPage","onClicked","currentStartNumber","currentEndNumber","fmgId","poolStatus","REMOVED","getAddress","actionView","onJoin","customerCount","volunteerCount","addresshelper","messageBody","sendMessageThread","notes","portraits","focusMessage","canDelete","removed","thread","getThreadChildren","canSendAsEmail","removeMessage","messageSummary","toRem","formattedDate","note","removeNote","deleted","content","replyTo","totalReplies","child","filteredChildren","replyMessage","asEmail","replyToThread","isLast","collapseSelection","showReplyUi","portraitUrl","found","portraitStyle","newValue","handleThreadLoad","getElementById","behavior","scroll","preventScroll","block","whichNote","parentId","resetForm","showRem","hasClaim","sectionId","getThreads","threadId","trunc","hasAdminToFriendManagementGroup","senderPortrait","parseInt","getMessages","handleReply","reply","cb","sendMessage","friendManagementGroupId","link","removefmgmessage","fmgmessages","messageDto","forceSend","sendSuccess","sendfmgmessage","cancelSendMessage","backUrlString","currentGroup","friendManagementGroups","moveCustomerToFmg","cancelMove","loaded","netFriendship","moveCustomer","inactiveText","volunteerid","onAddNewMatch","onVolunteerMatchSelected","isActive","onPoolsUpdated","onBackClicked","onHomeClicked","friendshipStateOverride","customerType","matches","travelData","travelDistanceTime","showDistanceWarningValue","availabilityText","gender","genderPreferences","agePreferences","targetId","contactDetails","customerApprovedBy","customerInterviewedBy","customerNotForSprBy","customerNotForPrivateRelationsBy","contactPerson","formattedOnHoldUntilDate","onHoldComment","showActions","showEditButton","saveCustomer","toggleActivity","privateNotes","isNotChanged","saveChanges","isCustomer","privateNotes0","isPostError","addNoteCommand","immediate","txtArea","querySelector","friendservice","put","setTimeout","selectionEnd","selectionStart","showAllButtons","editCustomer","activityText","inFriendship","onHoldValue","onHoldUpdate","isMoveAdmin","inFriendshipPool","showHold","componentKey","currentDate","datepickerOptions","resultHoldDate","cancelHold","onHoldCommit","initialDate","defaultOptions","limit","inputStyle","showCheck","showInfo","overlayOpacity","dismiss","color","header","nextMonth","headerText","showYear","showMonth","displayInfo","library","weekie","unavailable","checkedDay","background","checkDay","yearItem","setYear","monthItem","setMonth","hitem","setTime","mitem","mins","buttons","clear","check","picked","validatorDateIsAfter","onNewMatch","isHighlightedItem","volunteerId","onSelectFriendship","selectVolunteer","customerState","startedDate","showPoolChooser","onCancelAdd","pools","onPoolChosen","friendManagementGroup","confirmMove","selectedGroup","isGroupSelected","filterOptions","selectOption","closeDropdown","highlighted","hoveredItem","customerIdNumber","onRefresh","volunteerSelected","filteredvolunteers","onVolunteerSelected","score","isFirst","isInappropriate","onPrev","isInappropriateCss","matchData","close","onEndInappropriate","suggest","showInappropriate","markInappropriate","cancelInappropriate","confirmInappropriate","numStars","getStarClass","getDescription","tempScore","star","volunteerInterviewedDate","volunteerInterviewedBy","saveVolunteer","editVolunteer","moveVolunteer","matchAvailabilityFrequency","friendAvailabilityFrequency","customerAvailabilityFrequency","matchAvailabilityTimes","friendAvailabilityTimes","customerAvailabilityTimes","ageMatchFriend","volunteerBirthDate","customerDesiredAge","customerBirthDate","volunteerDesiredAge","isDesiredAge","bdate","desiredAge","calculateBitmaskFromAge","cssClass","isNetItem","transportationText","isAuthorized","onActivate","onCancelPending","onTerminate","selectedFriendship","statuses","selectedStatus","activate","startedPending","selectedStatusText","messaging","startSendMessage","sendAsMail","end","groupIdNumber","backUrl","moveVolunteerToFmg","customerid","onCustomerMatchSelected","hasVolunteer","zipCityText","volunteerIdNumber","customerSelected","filteredcustomers","onCustomerSelected","contactImage","suburbzip","formTitle","localPool","validatorUniquePoolName","getfriendmanagementpoolsstandard","getfriendmanagementpoolsnet","foundSameName","trim","onEnablePool","onDisablePool","onNetCustomerRemoved","onNetVolunteerRemoved","onStandardCustomerRemoved","onStandardVolunteerRemoved","assemblyTimes","onEditPool","ACTIVE","onCustomerRemoved","onCustomerClicked","customers","onVolunteerRemoved","onVolunteerClicked","volunteers","onMemberClicked","cat","catindex","catkey","editTranslation","editorOpen","saving","saveTranslation","transformed","schema","callBack","translationsadmin","keys","langKey","langObj","cats","catKeys","catKey","catObj","keyKeys","k","finalKey","del","onLogin","loginUrl","endpoints","loginObj","getGenderPreference","getAge","getAvailabilityFreq","getAvailabilityTime","getCustomerType","getFriendshipType","getInterest","getCustomerState","getPreferredAgeTranslation","getGenders","getGenderPreferences","getGenderPreferencesMaskTranslations","getPreferredAge","getAgePreferencesMaskTranslations","getAvailabilityFrequency","getAvailabilityTimes","getCustomerTypes","getFriendshipTypes","getInterests","getCustomerStates","mainSearchType","showMainSearchType","createVolunteerButton","newvolunteers","volunteerSearchType","showVolunteerSearchType","allvolunteers","keyvolunteers","sendMessageButton","sendLeaderMessageButton","placeholdergroups","createActionGroupButton","grouplist","placeholderevents","eventSearchType","showEventSearchType","upcomingEventsList","pastEventsList","placeholderdepartment","department","departmentPageLink","groupLink","groupActive","groupAdmins","adminStr","each","members","isAdmin","useradmingroupview","useradmineventview","volunteerRoles","sprsimpledropdown","port","useradminvolunteerview","handleLink","roles","leader","departmentList","createVolunteer","primary","purpose","clientFilters","activeClientFilters","exportVolunteers","toggleAdvancedSearch","includeAdvancedSearch","advancedSearchVisible","onChangedSearchCriteria","onClearSearchCriteria","onPageSizeChanged","trainLink","getTypedProfileId","pagerheadingvisible","pagerClick","pagerPrevious","pagerNext","pageSize","pageSizeChanged","clicked","showContacted","contactedDate","createDateFormat","profileLoadState","profilePreferredContactMethods","profileInvolvedEventCategories","volunteerInterests","volunteerSkills","standardGroups","roleLoadState","userRoles","editClick","markContactedClick","markUnContactedClick","done","actionText","sprportrait","Portrait","padStart","makeRequest","newState","payload1","payload2","setFriendTraining","deleteCustomer","deleteVolunteer","$props","fullName","isBroker","isGroupManager","onMakeBroker","onRemoveBroker","computedRoles","computedUserId","possibleRoles","mutate","editedRoles","availableItems","inactive","active","closeAriaLabel","role","sprdropdown","itemsLoaded","difference","selectedItems","res","chosenItem","sprmulti","postValue","mutatedRoles","possibleToDeleteRole","editedRole","isUndefined","userId","isNationalAdmin","isNationalEmployee","isDistrictAdmin","isEmployee","isJ1","isFriendshipAdmin","isDistrictFriendshipAdmin","isFriendshipGroupManager","v","postEdit","setroles","sectionRoles","isRoleEditingEnabled","searchCriteria","profileStates","contacted","ageBelow30","sectionZips","onClear","fixedWidth","allowempty","searchable","onChange","singleselect","prop","onClick","onOpen","Multiselect","isClosing","isOpening","searchValue","selectSingleOption","handleKeyDown","validateInput","hideDropdown","selectItem","includeAdminSearch","onSelectAll","selectedAll","selectedCount","navigateToSendMessage","clearSelected","messageEnabled","onSelectedClick","onSelected","brokerVolunteers","sendMessageShown","showSendMessage","selectedVolunteers","messageHeader","showRemoveButton","removenotification","showCollapsed","onClearVolunteerList","removeVolunteer","users","hasSelectedVolunteers","selectedContact","removeSuccess","getmessagesbysectionid","sendgroupmessage","sendtosectiongroupmanagers","sendtoselectedcontact","senderProfileId","sendAsEmail","contactList","getmessagesbydistrictid","cancelUserDeletion","deleteUser","hasLoaded","user","isUserEditing","toggleUserEdit","revertUserEdit","originalSectionId","updateUser","saveUser","formattedBirthDate","showRolesEditor","isRolesEditing","toggleRolesEdit","revertRolesEdit","updateRoles","saveRoles","formattedRoles","showPasswordEditor","isPasswordEditing","togglePasswordEdit","revertPasswordEdit","updatePassword","identity","can","canBeAnonymized","canBeDeleted","friendVolunteerProfileNetId","friendVolunteerProfileStandardId","hasBeenAnonymized","hasUserLogin","hasUserRoles","hasCreatedEvents","hasParticipatedInEvents","hasLightProfiles","hasGroupMemberships","hasPendingGroupMemberships","hasMessages","hasNotifications","hasFriendVolunteerProfile","hasFriendVolunteerNetProfile","hasFriendVolunteerStandardProfile","hasFriendVolunteerGroups","hasFriendships","hasFriendshipsNet","hasFriendshipsStandard","hasFriendPools","hasFriendPoolsNet","hasFriendPoolsStandard","groupPending","friendPool","getBooleanClass","profileUsage","localIsEditing","filteredItems","onSelect","editedUser","userLanguages","formattedAge","userAge","onAgeChanged","updateSpokenLanguages","adminSectionZips","adminSectionZip","involvedEventCategoriesOptions","updateProfileInterests","updatePersonalSkills","updateAvailabilityTimes","selectedAvailabilityTimes","transportations","updateTransportation","loginData","savePassword","hasAdmin","toFinnishDate","getProfileDeleteRequestOriginText","getMembershipStatusText","handleDelete","adminnavigation","optionsConstant","concat","updateDescription","sectionZipCodes","contacts","reportFrequency","updateContacts","triggerFetch","pagerPage","pager","performSearch","markContacted","markUnContacted","min","newSkip","markcontacted","u","markuncontacted","isEditMode","cancelChanges","hasDefinition","onAddContact","onRemoveContact","contactsReadOnly","reportFrequencies","frequency","frequencyDefinition","groupName","handleSelection","sprradio","radioGroupColor","changeEvent","initialized","sprradiogroupkey","initialEmails","sectionContacts","sectionReportDto","hasChanges","initial","initialDefinition","current","currentDefinition","toContact","setDefaultFrequency","currentReportFrequency","enums","reportFrequencyTexts","parentNode","toEmail","filteredContacts","groupBy","emailGroup","handleBlur","detectClicks","resetLocals","contactsEditButton","sectioncontacts","descriptioneditor","userlisting","loadedReport","setDistrictDescription","postBody","payload","getContacts","getSectionReport","fetchSectionReport","setSectionReport","fetchSection","sectionbyid","enterFriendshipGroup","canEditContactInfo","onContactAdd","onContactSave","onContactDelete","onFormAllowedChecked","memberSections","national","zipsAll","memberZips","onActivityEdit","onActivitySave","onActivityCancel","onExportClick","searchbox","sectionsbydistrict","writeTitles","wrapQuotesAndComma","containsNumber","padZeros","numZeros","writeLanguage","writeContent","newLine","row","JSONToCSVConvertor","dataForConverting","fileDateStr","exportFileName","csvResult","msSaveOrOpenBlob","utf8Text","ab","ArrayBuffer","uint8Array","Uint8Array","charCode","charCodeAt","Blob","createElement","escape","download","appendChild","removeChild","sectionsexport","onCreateActionGroup","onSaveActionGroup","onCancelSaveActionGroup","actiongroups","onCreateStandardGroup","onSaveStandardGroup","onCancelSaveStandardGroup","standardgroups","selectedlanguages","onLanguageChanged","groupCategories","isActionGroup","onGroupOrganizerChanged","onCancelCreate","onCreateGroup","$vnode","checkpill","validatorHasOptionalGroupOrganizer","grouptype","isDistrictGroup","isSectionGroup","groupCreatorId","isAllLocations","l","getCategories","setDefaultGroupOrganizer","onDisableGroup","onEnableGroup","onDeleteGroup","onSaveGroup","onMakeGroupAdmin","onRemoveGroupAdmin","onDeactivate","externalFormsAvailable","selectedExternalForm","onMakeAdmin","saveStatus","memberId","getMemberName","inProgress","onAddVolunteer","onRemoveVolunteer","onSaveVolunteers","onRemoveVolunteerPill","pendingConsent","volunteerviewsearch","filterId","locations","showPager","updated","refreshLabels","addedPendingVolunteer","cancelAddPendingVolunteer","removePendingVolunteer","selectedVolunteer","payload3","grouprequestmembership","groupaddmembers","findGroupVolunteers","isAddedAlready","isPendingConsent","pendingMembers","added","requestedByAdmin","addPendingVolunteer","cancelPendingAdd","groupremmembers","adminIsCancelling","membershippayload","payload4","groupremmembershiprequest","pendingmember","groupmemberadd","groupMembers","m","findMemberIndex","exchanges","hasAdminToFriendship","DistrictMembership","friendOrganization","loadGroups","groupsall","groups","product","editProduct","createProduct","handlePriceChange","vat","handleVatChange","computedValue","sanitize","isAddFormVisible","deleteRow","addRow","cancelRow","showAddForm","isNew","formData","submitForm","deleteForm","settingsLink","folder","populateImageLib","libImage","blur","selectedImageIndex","contextMenuVisible","filename","showContextMenu","contextMenuY","left","contextMenuX","deleteImage","downloadImage","handleDrop","handleFileChange","userwithrole","getRoles","handleChange","change","getActionView","backbar","legalActions","level","alertAndRedirect","hasPermissions","frv","hasAdminToSection","hasAdminToDistrict","adminBack","handleBackRequest","validateAction","action","SectionMembership","g","linkTo","isFriendshipBroker","isNetFriendshipBroker","netGroups","finalGroups","FriendshipGroups","NetFriendshipGroups","loadGroup","getDto","saveUrl","groupupdate","groupgetbyid","externalForm","toNotes","removeFromGroup","deactivateGroup","isStandardGroup","isCurrentUser","makeGroupAdmin","removeGroupAdmin","showRemove","modalButtons","profileAreasOfInterest","profilePersonalSkills","bmArr","handleClicked","orderedList","searchWord","onGroupTypesChanged","grouplanguages","categories","onCategoriesChanged","onIsAllLocationsChanged","groupSearchType","groupOrganizers","searchWordSeparator","actionTotal","standardTotal","debug","searchingWithGroupId","groupsTotal","getGroups","clearQueryString","currentUrl","URL","history","replaceState","groupspersonal","sectionname","selectedLanguages","createGroupButton","successful","groupsectionadd","subscribeToEmails","subscribeToEmailsText","messageSubject","isPartiallyEdited","allowSendAsEmail","removeInvitation","groupLoading","groupacceptinvitation","groupgetbyidlight","selectImage","setLibraryImage","computedCategory","isCreator","isEventAdmin","isAdd","modalButton","eventStartJoinButton","eventPublishButton","eventEditOpen","isEdit","eventEditButton","eventCopyButton","eventCancelButton","currentTranslation","changeEditorLanguage","deleteTranslation","newTranslation","eventOrganizerData","onEventOrganizerChanged","isVolunteerTask","onRegularEventClick","onVolunteerTaskClick","onBackgroundFileChange","onThumbFileChange","timeEditButton","timeEditorOpen","displayStartDate","handleStartDateInput","eventStartTime","eventEndTime","dateIsAfter","dateisbefore","displayMaxEndDate","displayEndDate","endDateLimit","isRecurring","onRecurringEventChange","recurrenceFrequencyOptions","recurrenceFrequency","onFrequencyUpdate","recurringUntil","recurringUntilLimit","onRecurringUntilUpdate","onRepetitionsUpdate","dateIsBefore","validatorDate","registrationDeadlineLimit","formattedStartDate","formattedEndDate","formattedStartTime","formattedEndTime","occurrenceText","displayRegistrationDeadline","locationEditButton","locationEditorOpen","selectedZipLocation","onIsZipCodeChanged","formattedLocation","showMap","hasLocation","mapIsVisible","mapCenter","mapZoom","geocodeFailed","feeEditButton","feeEditorOpen","descriptionEditButton","descriptionEditorOpen","contactEditButton","contactEditorOpen","adminsEditButton","isEditAdminsOpen","eventRegistrationOptions","eventRegistration","require_protocol","showViewRoles","showNoRolesWarning","showParticipants","onShowParticipantsChanged","contactNotificationsButton","contactNotificationsOpen","contactNotificationInputMail","onAddContactNotification","contactNotifications","contactNotificationFrequencies","onParticipationChanged","onRemoveParticipants","onDownloadParticipants","participantsToRemove","removeParticipants","joinStage","loginJoin","anonJoin","isParticipant","isLoggedIn","onEventJoin","onEventJoinPublic","recurringOptions","recurringDeleteMode","confirmDelete","onConfirmDelete","confirmEventRemoval","hideRemoveModal","strTime","updateTime","validatorColonTime","RegExp","objTime","hrs","initialRoleValidation","maximumParticipants","onUnlimitedParticipantsChanged","selectedMaxParticipants","onMaxParticipantsChanged","participants","any","editRole","editorRoles","deleteRole","deleteRoleText","hasErrors","addRole","iterator","column","getCssClass","formatHeader","sortOrders","filteredData","columns","rowItem","columnKey","hasColumnCallBack","hasItem","iconName","onShowAdditionalModalInfo","formatData","isLeaving","selectedRoles","validateSelectedRoles","eventParticipant","isReadonly","eventOrganizerList","eventOrganizerTypeInstitution","eventOrganizerTypeDistrict","eventOrganizerTypeSection","eventOrganizerName","validatorHasEventOrganizer","toggleCollapse","showIcon","SprCollapsible","singleselectdropdown","checkboxlist","checkboxinput","textareainput","datepicker","timepicker","dropdownnumber","numberinput","VueMap","VueMarker","editeventroles","vieweventroles","eventparticipantsgrid","eventjoin","eventjoinpublic","eventadmins","eventorganizerdropdown","sharethis","pillbox","googlemaps","minStartDate","startDateLimit","imageLib","postError","suppressErrors","removeEvent","availableLanguages","langToAdd","display","border","markers","isUpdating","isCopying","participantDownloadFile","addedAdmins","notificationFrequency","maxDurationSetting","metaInfo","meta","property","hasContactNotifications","getNotificationFrequencyTranslation","c","option1","option2","recurringDeleteModeToBoolean","showMessageFull","showJoinAction","possibleTranslations","availableTranslations","z","creatorId","currentRole","publicRole","participantFound","participant","publicEvents","eventId","eventHasStarted","st","heroImageStyle","thumbImageStyle","validItems","volunteerTaskTypeId","lastOccurrence","externalUrl","maxEndDate","maxDuration","subtract","to","startTimeDate","endTimeDate","endOf","toDate","available","occurence","calculateRecurringUntil","locationText","formattedGeocodeLocation","showEditRoles","oldVal","diffDays","startOf","setActionLanguages","omaSettings","subscribe","mutation","loadEvent","addNewEvent","beforeRouteLeave","getimages","imageNames","endsWith","setAddMode","nextHour","setContactNotifications","getContactNotifications","setMessageFrequency","newZipCode","focusOnErrors","removeModal","hide","registerJoin","joinAuditUrl","externaleventlog","newTranslationInject","cur","skipValidation","bustCache","eventget","rand","random","eventMetaImage","setEditMode","validation","addRolesEl","offsetTop","addurl","eventadd","sendEventAdminMessages","updateurl","eventupdate","sendneweventadminmessages","newEventAdminMessageDto","emails","place","geometry","marker","saveAs","cleanUpAfterCopying","occurrence","eventRole","resetExternalUrl","eventRemoveButton","deleteUrl","eventdelete","workbook","worksheet","addWorksheet","width","headerRow","getRow","font","bold","firstname","lastname","participated","moreInfo","eachCell","cell","alignment","vertical","horizontal","autoFilter","xlsx","writeBuffer","buffer","createObjectURL","dateAsTimestamp","substr","indexToRemove","confirm","removalUrl","eventremoveparticipants","joinurl","roleIds","eventInfo","lightProfileId","cancellationToken","newAdmin","getTimeArr","startTimeArr","hr","strHr","strMin","roundUp","second","millisecond","freq","untilDateString","calculateRepetitions","reps","repetitions","untilDate","until","fromDate","templates","selectTemplateButton","template","activeItemId","setActiveItemId","itemIndex","displayInitialDate","searchStartDate","processStartDate","searchEndDate","isOnlineValues","onIsOnlineChanged","eventCategory","onEventTypesChanged","eventType","eventLanguages","isEventOrganizerIdentifier","obj","tipId","toggleTip","tipContent","linkUrl","linkText","infoPosition","eventLeaveSuccess","onViewEvents","leaveurl","eventleavepublic","myevents","eventtile","eventorganised","eventparticipated","computedSender","urlPlaceholder","findMessage","messageId","replaceUrls","escapedUrl","baseUrl","protocol","hostname","forWhichAccount","sendRestore","restore","expired","getMySection","deleteThanksTitle","onGoToHomepage","fetchSettings","systemservice","settingsall","updateProfile","successCallback","failureCallback","updateidentuser","fetchProfilePromise","getShortToken","updateOwnProfile","updateownprofile","longToken","redirect","reload","fetchProfile","gettingProfile","currentuser","firstLanguage","isoDate","keyLowerCamel","prune","ids","hasRoleDelayed","hasAdminRole","hasFriendshipAdminRole","inSection","inDistrict","decodeJwtToken","allowedInSection","extendToJ2","fmg","belongsToFriendshipGroup","hasAdminToFriendManagementGroups","fmgs","gp","hasBrokerRole","hasNetBrokerRole","netFriendshipGroups","hasTrainingRole","fmgids","netFmgids","getFmgId","fmgclaim","colonIndex","lastIndexOf","verb","authHeader","settings","router","routes","isAnon","route","deletionrequest","alias","encodeURIComponent","poolid","beforeEnter","scrollBehavior","savedPosition","beforeEach","validatorHasCheckboxSelected","faAngleDoubleLeft","faAngleDoubleRight","faAngleDown","faAngleLeft","faAt","faBan","faBars","faBinoculars","faCalendar","faCaretDown","faCaretRight","faCheck","faCheckCircle","faChevronDown","faChevronLeft","faChevronRight","faChevronUp","faCircle","faClock","faComment","faCopyright","faEdit","faEnvelope","faEuroSign","faEye","faEyeSlash","faExclamationTriangle","faFacebookF","faFrown","faSave","faGlobe","faGoogle","faHandshake","faHeart","faHome","faHospital","faIdBadge","faInfoCircle","faLightbulb","faMapMarkerAlt","faPencilAlt","faPhone","faPlus","faPuzzlePiece","faCircleQuestion","faQuoteLeft","faQuoteRight","faRedo","faSync","faSearch","faSmile","faSpinner","faStar","faTrashCan","faTv","faTimes","faTimesCircle","faXTwitter","faTwitter","faUser","faUserPlus","faVenusMars","faWifi","faTrashAlt","faTrash","faUsers","config","productionTip","eventBus","defineProperties","load","libraries","installComponents","baseName","mixin","directive","script","innerHTML","append","promiseDistricts","alldistricts","promiseInstitutions","allinstitutions","promiseNetFriendshipGroups","friendnetgroups","promiseSections","allsections","prosimiseJoinableZips","joinablezipcodes","promiseJoinSections","promiseTranslations","translationscached","promiseAvailabilityFrequency","availabilityfrequencies","promiseAvailabilityTimes","availabilitytimes","promiseCustomerStates","customerstates","promiseCustomerTypes","customertypes","promiseCustomerLanguages","customerlanguages","promiseFriendshipTypes","friendshiptypes","promiseEventCategories","eventcategories","promiseGenders","promiseInterests","promiseInvolvedEventCategories","involvedeventcategories","promiseNetCustomerTypes","netcustomertypes","promiseNetFriendshipTypes","netfriendshiptypes","promisePreferredGenders","preferredgenders","promisePreferredAges","preferredages","promisePreferredContactMethods","preferredcontactmethods","promiseGroupLanguages","promiseZipCodes","zipcodes","promiseDatabaseAvailabilityTimes","databaseAvailabilitytimes","all","host","i18n","fallbackLocale","pushState","h","App","json","webpackContext","req","webpackContextResolve","__webpack_require__","module","exports","optionalBooleanValues","enableRegisterToJoinFlow","hero","acceptMarketing","InvolvedEventCategories","orderByFriendType","NotDefined","selectedCustomer","eventDurationMax","externalformservice","imageservice","producteditor","productsave","translationsupdate","personalskills","areasofinterest","registerwithfriendprofile","userupdate","adminupdate","expiredpasswordupdate","adauth","adregister","resetpassword","userbyprofileid","getvolunteerinfobyemail","findIdentOnly","findSimpleIdentOnly","findEmployees","deleteuser","usermyprofileusage","userprofileusagebyid","deletemyprofile","profiledeleterequests","deleteprofiledeleterequest","mysection","findbyfriendship","membership","findsectionvolunteers","finddistrictvolunteers","eventall","eventsbycriteria","eventsbycriteriapublic","eventleave","eventupcoming","eventrecommended","eventnearby","eventpopular","eventvolunteertasks","trainings","externalformsadd","externalformsupdate","externalformsdelete","externalformsget","externalformsall","settingsupdate","groupsbysection","groupsbydistrict","groupmessages","groupdistrictadd","groupjoin","groupleave","groupmakeadmin","groupremoveadmin","groupmygroups","groupisadmin","groupdelete","groupgethupsislink","customeraddstandard","customeraddnet","anonymousnetcustomeradd","anonymousstandardcustomeradd","customerdeletestandard","customerdeletenet","customerupdatestandard","customerupdatenet","customerupdateprivatenotesnet","customerupdateprivatenotesstandard","customermovetodifferentfmg","customergetstandardbyid","customergetnetbyid","customergetnetsummarybykey","customergetstandardsummarybykey","customersearchstandard","customersearchnet","volunteersearchstandard","volunteerexportstandard","volunteersearchnet","volunteerexportnet","volunteersimplesearch","volunteergetnetprofilebyid","volunteergetstandardprofilebyid","volunteermovestandardtofmg","addnonidentstandardfriendvolunteer","addnonidentnetfriendvolunteer","updatenonidentstandardfriendvolunteer","updatenonidentnetfriendvolunteer","updateidentstandardprofile","updateidentstandardfriendvolunteer","updateidentnetfriendvolunteer","volunteerupdateprivatenotes","volunteerupdateprivatenotesnet","volunteerupdateprivatenotesstandard","customerfindnetmatch","customerfindstandardmatch","volunteerfindnetmatch","volunteerfindstandardmatch","friendshipinitiatenet","friendshipinitiatestandard","friendshipactivatenet","friendshipactivatestandard","friendshipcancelnet","friendshipcancelstandard","friendshipterminatenet","friendshipterminatestandard","friendshipmarkinappropriatenet","friendshipmarkinappropriatestandard","friendshipendinappropriatenet","friendshipendinappropriatestandard","friendOrganizationById","fmgContactInfo","friendOrganizationFindStandardBrokers","friendOrganizationFindNetBrokers","updateFmg","markactivevolunteerstandard","markactivevolunteernet","markactivecustomerstandard","markactivecustomernet","markinactivevolunteerstandard","markinactivevolunteernet","markinactivecustomerstandard","markinactivecustomernet","friendvolunteerdeletenet","friendvolunteerdeletestandard","friendstandardgroups","addfriendpoolstandard","addfriendpoolnet","updatefriendpoolstandard","updatefriendpoolnet","getfriendpoolstandard","getfriendpoolnet","addcustomertopoolstandard","addcustomertopoolnet","addvolunteertopoolstandard","addvolunteertopoolnet","removecustomerfrompoolstandard","removecustomerfrompoolnet","removevolunteerfrompoolstandard","removevolunteerfrompoolnet","setfriendpoolstatusstandard","setfriendpoolstatusnet","deletefriendmanagementpoolstandard","deletefriendmanagementpoolnet","volunteeridentadd","brokervolunteeridentadd","volunteeridentupdate","uploadimages","deleteimage","downloadimage","profileroles","setnetbrokerrole","setstandardbrokerrole","revokenetbrokerrole","revokestandardbrokerrole","sendmessage","sendstandardfriendshipvolunteermessage","sendnetfriendshipvolunteermessage","applytoactiongroup","getSubStatus","setSubStatus","sendnewprofileeventadminmessages","supportEmail","googleMapsApiKey","sharethisPropertyId","sv","fi","en","actions","setSessionJwtToken","context","setSetting","setting","setSettings","mutations","setRegisterId","idObj","setLanguage","setSectionRoles","setWizardInterests","setWizardInvolved","setWizardSkills","setWizardLanguages","setWizardZipcode","setWizardWorkingZip","setWizardSectionId","setWizardTransportation","setWizardTravelTime","setWizardBestTimes","setWizardCity","setWizardBasicInformation","setWizardContactInformation","setWizardNumberInformation","Age","TravelTime","setWizardVolunteerOnline","setTranslations","setSections","setJoinSections","setJoinableZips","setDistricts","setInstitutions","setNetFriendshipGroups","setEventCategories","setGenders","setInvolvedEventCategories","setPreferredGenders","setPreferredAges","setPreferredContactMethods","setAvailabilityFrequencies","setDatabaseAvailabilityTimes","setAvailabilityTimes","setCustomerTypes","setNetCustomerTypes","setFriendshipTypes","setNetFriendshipTypes","setCustomerInterests","setCustomerStates","setCustomerLanguages","setGroupLanguages","setZipCodes","setProfile","setProfileFriendVolunteer","setProfileState","setStory","profileEdit","profileEditInvolvedEventCategories","profileFetchStarted","profileskills","profileinterest","profilelanguages","profilepersonal","profilelocation","profiletransport","profiletravel","profileworkingzip","profilesection","profileeventadmins","profileVolunteerOnline","setAllLanguages","setSearchFilter","setMessages","setAdminBack","addPublicEvent","removePublicEvent","toCache","nullProfile","clearSessionJwtToken","setTokenRefreshing","clearSettings","updateProfilePicture","pictureUri","AreaOfInterest","AvailabilityFrequence","AvailabilityTimesEnum","CustomerState","EventCategory","EventOccurance","EventOrganizerType","FriendPoolStatus","FriendshipState","Gender","GroupOrganizerType","GroupType","IsOnlineEventFilterType","MembershipStatus","MembershipType","MessageStatus","MyProfileLevel","OrderByFriendType","PersonalSkills","ProfileDeleteRequestOrigin","ProfileState","ReportFrequency","AvailabilityTimes","CustomerTypes","EventTypes","FriendshipTypes","Interests","Languages","NetCustomerTypes","NetFriendshipTypes","PreferredAges","PreferredContactMethods","PreferredGenders","TimeWithoutFriends","SectionLanguage","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","every","n","getter","__esModule","definition","defineProperty","enumerable","globalThis","hasOwnProperty","Symbol","toStringTag","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","bind","__webpack_exports__"],"sourceRoot":""}