{"version":3,"sources":["webpack:///./src/views/review-enhancement/ReviewEnhancement.vue?a29f","webpack:///./src/views/review-enhancement/components/ReviewProgress.vue?5722","webpack:///./src/views/review-enhancement/components/ProgressStep.vue?02e7","webpack:///./src/views/review-enhancement/components/ProgressStep.vue","webpack:///./src/views/review-enhancement/components/ProgressStep.vue?1134","webpack:///./src/views/review-enhancement/components/ReviewProgress.vue","webpack:///./src/views/review-enhancement/components/ReviewProgress.vue?e008","webpack:///./src/views/review-enhancement/ReviewEnhancement.vue","webpack:///./src/views/review-enhancement/ReviewEnhancement.vue?25be","webpack:///./src/views/review-enhancement/components/ReviewProgress.vue?45e5","webpack:///./src/views/review-enhancement/components/ProgressStep.vue?9e57","webpack:///./src/shared-components/AchievementHeader.vue?0043","webpack:///./src/views/review-enhancement/ReviewEnhancement.vue?455e","webpack:///./src/shared-components/AchievementHeader.vue?5437","webpack:///./src/shared-components/AchievementHeader.vue","webpack:///./src/shared-components/AchievementHeader.vue?f3c6"],"names":["_hoisted_1","key","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_banner","_component_achievement_header","_component_review_progress","_component_media_uploader","_component_profile","_component_terms","_component_powered_by_okendo","_component_view_state","_directive_analytics","viewState","onSubmit","submitUpdatedReview","$t","onClickUpgradeButton","isEligibleForUpgrade","hasMedia","isSending","isMediaUploadSectionVisible","mediaFromReview","length","media","streamId","src","thumbnailUrl","durationSeconds","formatDuration","modelValue","mediaBlocks","$event","isProfileSectionVisible","hasSubmitted","isOptedIn","actionButtonText","eventName","hasPreviouslyOptedIn","onRetry","loadReviewEnhancement","errorCode","n","ref","_component_progress_step","okeClass","isStuck","areAllStepsComplete","progressSteps","step","index","text","icon","percentCompleted","style","left","leftSpacing","onClick","clickUpgradeButton","disabled","_component_icon","isComplete","height","radius","width","cx","cy","r","innerRadius","circumference","strokeWidth","stroke","strokeColor","strokeDashoffset","fill","Math","PI","store","state","settings","colors","progressCompleteStepColor","this","props","String","Number","Boolean","components","Icon","__exports__","createStickyObserver","removeStickyObserver","profile","reviewerProfile","imageUrl","subscriber","previewMode","reviewForm","body","review","videoThumbnails","disableMediaCapture","disableSocialLogin","disableProfilePictureUpload","isReviewStepComplete","push","isMediaStepComplete","isAvatarStepComplete","every","$emit","observer","IntersectionObserver","entry","isIntersecting","observe","$refs","intersectionTarget","disconnect","numberOfSteps","spacing","ProgressStep","emits","window","scrollTo","getMediaFromReview","isPreviewMode","$router","replace","path","query","$route","productId","hasProfileImageOnLoad","socialConnectionIdOnLoad","socialMediaUserId","editToken","reviewMedia","isMediaCaptureEnabled","reward","banner","imageRewardText","videoRewardText","order","remainingProductsToReview","product","attributes","hasUpdated","socialRewardText","socialMediaType","customAvatar","hasImageUpgrade","filter","mediaBlock","type","hasVideoUpgrade","hasSocialUpgrade","reviewRequestId","duration","reviewer","avatarUrl","isSocialLoginEnabled","isProfilePictureUploadEnabled","some","progress","dispatch","alertData","content","status","elementId","reviewId","Error","sequenceContext","undefined","reviewToUpdate","isTestMode","email","name","hasUpdatedSocialLogin","socialConnection","socialConnectionUserId","hasUpdatedAvatar","customAvatarStreamId","label","value","commit","achievedReward","achieved","previouslyAchieved","previouslyAchievedReward","reviewerName","reviewEnhanced","isNothingToUpdate","data","error","description","includes","isPreviouslyReviewed","AchievementHeader","Attribute","Banner","MediaUploader","PoweredByOkendo","Profile","ReviewProgress","Terms","ViewState","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_component_tooltip","isReviewEnhancementPage","areAchievementHeadersVisible","hidePartyPopper","achievement","subheading","headings","achievementHeading","isCouponUpgrade","coupon","isIncompleteCouponDark","getAchievedValueText","valueType","isCompleteCouponDark","onMouseenter","onCouponTooltipMouseenter","onMouseleave","onCouponTooltipMouseleave","hover","show","showCouponTooltip","couponCopied","default","copyCouponToClipboard","_","currencySymbol","defaultSubmitText","points","getTitleCaseRewardCurrencyPlural","couponCompleteColor","couponIncompleteColor","rewardCurrency","charAt","toUpperCase","substr","toLowerCase","navigator","clipboard","fallbackCopyCouponToClipboard","writeText","displayCouponCopiedMessage","hideCouponCopiedMessage","textarea","document","createElement","top","position","appendChild","focus","select","execCommand","removeChild","clearTimeout","displayCouponCopiedMessageTimeout","setTimeout","couponTooltipDuration","onCouponTooltipMouseleaveTimeout","couponTooltipCloseDelay","Tooltip"],"mappings":"0MAGMA,EAAa,CACjBC,IAAK,EACLC,MAAO,UAEHC,EAAa,CAAED,MAAO,6FACtBE,EAAa,CACjBH,IAAK,EACLC,MAAO,2BAEHG,EAAa,CAAEH,MAAO,0EACtBI,EAAa,CAAEJ,MAAO,4CACtBK,EAAa,CAAC,OACdC,EAAa,CACjBP,IAAK,EACLC,MAAO,iCAEHO,EAAa,CACjBR,IAAK,EACLC,MAAO,4BAEHQ,EAAa,CAAC,cACdC,EAAc,CAClBV,IAAK,EACLC,MAAO,uDAEHU,EAAc,CAAEX,IAAK,GAErB,SAAUY,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,IAAMC,EAAoB,eAAkB,UACtCC,EAAgC,eAAkB,sBAClDC,EAA6B,eAAkB,mBAC/CC,EAA4B,eAAkB,kBAC9CC,EAAqB,eAAkB,WACvCC,EAAmB,eAAkB,SACrCC,EAA+B,eAAkB,qBACjDC,EAAwB,eAAkB,cAC1CC,EAAuB,eAAkB,aAE/C,OAAQ,iBAAc,eAAoB,OAAW,KAAM,CACrC,YAAnBd,EAAKe,WACD,iBAAc,eAAaT,EAAmB,CAAEnB,IAAK,KACtD,eAAoB,IAAI,GACR,YAAnBa,EAAKe,WACD,iBAAc,eAAoB,MAAO7B,EAAY,CACpD,eAAaqB,GACb,eAAoB,OAAQ,CAC1BS,SAAUf,EAAO,KAAOA,EAAO,GAAK,iBAEhD,kBAAcD,EAAKiB,qBAAuBjB,EAAKiB,oBAAL,MAAAjB,EAAI,aAAgC,CAAC,cAClE,CACD,eAAoB,MAAOX,EAAY,eAAiBW,EAAKkB,GAAG,uBAAwB,GACxF,eAAaV,EAA4B,CACvCW,qBAAsBnB,EAAKiB,oBAC3BG,qBAAsBpB,EAAKoB,qBAC3BC,SAAUrB,EAAKqB,SACfC,UAAWtB,EAAKsB,WACf,KAAM,EAAG,CAAC,uBAAwB,uBAAwB,WAAY,cACxEtB,EAAKuB,6BACD,iBAAc,eAAoB,MAAOjC,EAAY,CACpD,eAAoB,SAAU,CAC5BF,MAAO,eAAgB,CAAC,CAAE,6BAA8BY,EAAKwB,gBAAgBC,QAAU,2EACtF,eAAiBzB,EAAKkB,GAAG,sBAAuB,GAClDlB,EAAKwB,gBAAgBC,QACjB,iBAAc,eAAoB,OAAW,CAAEtC,IAAK,GAAK,CACxD,eAAoB,MAAOI,EAAY,eAAiBS,EAAKkB,GAAG,wDAAyD,GACzH,eAAoB,MAAO1B,EAAY,EACpC,gBAAW,GAAO,eAAoB,OAAW,KAAM,eAAYQ,EAAKwB,iBAAiB,SAACE,GACzF,OAAQ,iBAAc,eAAoB,MAAO,CAC/CvC,IAAKuC,EAAMC,SACXvC,MAAO,wBACN,CACD,eAAoB,MAAO,CACzBwC,IAAKF,EAAMG,aACXzC,MAAO,4BACN,KAAM,EAAGK,GACXiC,EAAMI,iBACF,iBAAc,eAAoB,MAAOpC,EAAY,eAAiBM,EAAK+B,eAAeL,EAAMI,kBAAmB,IACpH,eAAoB,IAAI,QAE5B,SAEL,KACH,eAAoB,IAAI,GAC5B,eAAarB,EAA2B,CACtCuB,WAAYhC,EAAKiC,YACjB,sBAAuBhC,EAAO,KAAOA,EAAO,GAAK,SAACiC,GAAD,OAAmBlC,EAAKiC,YAAeC,IACxF9C,MAAO,2BACN,KAAM,EAAG,CAAC,kBAEf,eAAoB,IAAI,GAC3BY,EAAKmC,yBACD,iBAAc,eAAoB,WAAYxC,EAAY,CACzD,eAAae,EAAoB,CAAE0B,aAAcpC,EAAKoC,cAAgB,KAAM,EAAG,CAAC,oBAElF,eAAoB,IAAI,GAC5B,eAAoB,MAAO,CACzBhD,MAAO,eAAgB,CAAC,CAClB,2BAA4BY,EAAKqC,UACjC,6BAA8BrC,EAAKqC,WACpC,gBACJ,CACD,gBAAgB,eAAoB,SAAU,CAC5C,aAAcrC,EAAKkB,GAAGlB,EAAKsC,kBAC3BlD,MAAO,YACN,CACAY,EAAKsB,WACD,iBAAc,eAAoB,MAAOzB,KACzC,iBAAc,eAAoB,OAAQC,EAAa,eAAiBE,EAAKkB,GAAGlB,EAAKsC,mBAAoB,KAC7G,EAAG1C,GAAa,CACjB,CAACkB,EAAsB,CAAEyB,UAAW,2BAErC,GACH,eAAa5B,EAAkB,CAAE6B,sBAAsB,IACvD,eAAa5B,IACZ,OAEL,eAAoB,IAAI,GAC5B,eAAaC,EAAuB,CAClC4B,QAASzC,EAAK0C,sBACd,aAAc1C,EAAKe,UACnB4B,UAAW3C,EAAK2C,WACf,KAAM,EAAG,CAAC,UAAW,aAAc,eACrC,I,0SC3HC,EAAe,SAAAC,GAAC,OAAK,eAAa,mBAAmBA,EAAEA,IAAI,iBAAcA,GACzE,EAAa,CACjBC,IAAK,qBACLzD,MAAO,uCAEH,EAA2B,GAAa,kBAAmB,eAAoB,MAAO,CAAEA,MAAO,yBAA2B,MAAO,MACjI,EAAa,CAAC,YACd,EAAa,CACjBD,IAAK,EACLC,MAAO,sDAEH,EAAa,CAAED,IAAK,GAEpB,SAAU,EAAOa,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,IAAMyC,EAA2B,eAAkB,iBAC7ChC,EAAuB,eAAkB,aAE/C,OAAQ,iBAAc,eAAoB,OAAW,KAAM,CACzD,eAAoB,MAAO,EAAY,KAAM,KAC7C,eAAoB,MAAO,CACzB1B,MAAO,eAAgB,CAAC,CAACY,EAAK+C,SAAU,CAAEC,QAAShD,EAAKgD,QAASC,oBAAqBjD,EAAKiD,sBAAwB,sBAClH,CACD,GACC,gBAAW,GAAO,eAAoB,OAAW,KAAM,eAAYjD,EAAKkD,eAAe,SAACC,EAAMC,GAC7F,OAAQ,iBAAc,eAAaN,EAA0B,CAC3D3D,IAAKgE,EAAKE,KACVC,KAAMH,EAAKG,KACXD,KAAMF,EAAKE,KACXE,iBAAkBJ,EAAKI,iBACvBC,MAAO,eAAgB,CAAEC,KAAMzD,EAAK0D,YAAYN,KAChDH,oBAAqBjD,EAAKiD,qBACzB,KAAM,EAAG,CAAC,OAAQ,OAAQ,mBAAoB,QAAS,2BACxD,MACJ,gBAAgB,eAAoB,SAAU,CAC5CU,QAAS1D,EAAO,KAAOA,EAAO,GAEtC,kBAAcD,EAAK4D,oBAAsB5D,EAAK4D,mBAAL,MAAA5D,EAAI,aACrC6D,UAAW7D,EAAKiD,oBAChB7D,MAAO,2CACN,CACAY,EAAKsB,WACD,iBAAc,eAAoB,MAAO,KACzC,iBAAc,eAAoB,OAAQ,EAAY,eAAiBtB,EAAKkB,GAAGlB,EAAKsC,mBAAoB,KAC5G,EAAG,GAAa,CACjB,CAACxB,EAAsB,CAAEyB,UAAW,wCAErC,IACF,I,4BC/CC,EAAa,CAAEnD,MAAO,iDACtB,EAAa,CAAC,SAAU,SACxB,EAAa,CAAC,KAAM,KAAM,IAAK,mBAAoB,eAAgB,UACnE,EAAa,CAAEA,MAAO,uBAEtB,SAAU,EAAOY,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,IAAMyD,EAAkB,eAAkB,QAE1C,OAAQ,iBAAc,eAAoB,MAAO,CAC/C1E,MAAO,eAAgB,CAAC,iBAAkB,CAAE2E,WAAY/D,EAAK+D,WAAYd,oBAAqBjD,EAAKiD,wBAClG,CACD,eAAoB,MAAO,EAAY,CACrC,eAAaa,EAAiB,CAC5BR,KAAMtD,EAAKsD,KACXlE,MAAO,eAAgB,CAAC,CACZ,gBAAiBY,EAAK+D,WACtB,2BAA4B/D,EAAK+D,YAClC,wBACV,KAAM,EAAG,CAAC,OAAQ,aAEtB,iBAAc,eAAoB,MAAO,CACxCC,OAAsB,EAAdhE,EAAKiE,OACbC,MAAqB,EAAdlE,EAAKiE,OACZ7E,MAAO,uBACN,CACD,eAAoB,SAAU,CAC5B+E,GAAInE,EAAKiE,OACTG,GAAIpE,EAAKiE,OACTI,EAAGrE,EAAKsE,YACR,6BAAuBtE,EAAKuE,cAA5B,YAA6CvE,EAAKuE,eAClD,eAAgBvE,EAAKwE,YACrBC,OAAQzE,EAAK0E,YACblB,MAAO,eAAgB,CAAEmB,iBAAkB3E,EAAK2E,mBAChDC,KAAM,eACL,KAAM,GAAI,IACZ,EAAG,IACN,eAAoB,MAAO,EAAY,eAAiB5E,EAAKkB,GAAGlB,EAAKqD,OAAQ,IAC5E,G,0BCtBgB,EAArB,8TAEa,IAFb,+CAGkB,GAHlB,+CAIkB,EAAKY,OAA4B,EAAnB,EAAKO,aAJrC,iDAKuC,EAAnB,EAAKF,YAAkBO,KAAKC,IALhD,mEAMkBC,EAAA,KAAMC,MAAMC,SAASA,SAASC,cANhD,aAMkB,EAAsCC,iCANxD,QAMqF,WANrF,uDAQI,WACI,OAAOC,KAAKb,cAAgBa,KAAK7B,iBAAmB,IAAM6B,KAAKb,gBATvE,sBAYI,WACI,OAAOa,KAAK7B,iBAAmB,OAbvC,GAA0C,QAArB,EAAY,gBAZhC,eAAQ,CACL8B,MAAO,CACH/B,KAAMgC,OACNjC,KAAMiC,OACN/B,iBAAkBgC,OAClBtC,oBAAqBuC,SAEzBC,WAAY,CACRC,OAAA,MAEJX,QAAA,QAEiB,W,iCCVrB,MAAMY,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAAS,KAErD,QCYM,EAArB,oXAIc,GAJd,oGAOI,WACIP,KAAKQ,yBARb,2BAWI,WACIR,KAAKS,yBAZb,gCAeI,WACI,QAASd,EAAA,KAAMC,MAAMc,QAAQC,gBAAgBC,WAhBrD,gCAmBI,WAAwB,MACpB,QAAIjB,EAAA,KAAMC,MAAMiB,WAAWC,gBAIlBnB,EAAA,KAAMC,MAAMmB,WAAWC,QAAS,UAACrB,EAAA,KAAMC,MAAMqB,OAAOA,cAApB,QAAC,EAA2BD,SAxB7E,+BA2BI,WAAuB,MACnB,EAAoCrB,EAAA,KAAMC,MAAMqB,OAAxCA,EAAR,EAAQA,OAAQC,EAAhB,EAAgBA,gBAChB,OAAOlB,KAAK/D,YAAa,OAACgF,QAAD,IAACA,GAAD,UAACA,EAAQ3E,aAAT,QAAC,EAAeD,WAAY6E,EAAgB7E,SA7B7E,yBAgCI,WACI,MAAiFsD,EAAA,KAAMC,MAAMC,SAASA,SAA9FsB,EAAR,EAAQA,oBAAqBC,EAA7B,EAA6BA,mBAAoBC,EAAjD,EAAiDA,4BAG3CvD,EAA4B,CAAC,CAC/BI,KAAM,eACND,KAAM,eACNE,iBAAkB6B,KAAKsB,qBAAuB,IAAM,IA2BxD,OAxBKH,GACDrD,EAAcyD,KAAK,CACfrD,KAAM,cACND,KAAM,qBACNE,iBAAkB6B,KAAKwB,oBAAsB,IAAM,IAItDJ,GAAuBC,GACxBvD,EAAcyD,KAAK,CACfrD,KAAM,UACND,KAAM,sBACNE,iBAAkB6B,KAAKyB,qBAAuB,IAAM,IAYrD3D,IAlEf,+BAqEI,WACI,OAAOkC,KAAKlC,cAAc4D,OAAM,SAAA3D,GAAI,OAAIA,EAAKI,iBAAmB,QAtExE,4BAyEI,WACI,OAAO6B,KAAKhE,qBAAuB,iBAAmB,kBA1E9D,gCA6EI,WACIgE,KAAK2B,MAAM,wBA9EnB,kCAiFI,WAAoB,WAChB3B,KAAK4B,SAAW,IAAIC,sBAAqB,YAAY,0BAAVC,EAAU,KACjD,EAAKlE,SAAWkE,EAAMC,kBAG1B/B,KAAK4B,SAASI,QAAQhC,KAAKiC,MAAMC,sBAtFzC,kCAyFI,WACQlC,KAAK4B,UACL5B,KAAK4B,SAASO,eA3F1B,yBA+FI,SAAYnE,GACR,IAAMoE,EAAgBpC,KAAKlC,cAAczB,OAGnCgG,EAAUrC,KAAKnC,oBACf,GAAK,EAAIG,EACR,IAAMoE,GAAkBpE,EAAQ,IAGvC,qBAAeqE,EAAf,iBAxGR,GAA4C,QAAvB,EAAc,gBAdlC,eAAQ,CACLhC,WAAY,CACRC,OAAA,KACAgC,aAAA,GAEJrC,MAAO,CACHhE,SAAUmE,QACVpE,qBAAsBoE,QACtBzC,SAAUuC,OACVhE,UAAWkE,SAEfmC,MAAO,CAAC,sBACR5C,QAAA,QAEiB,Y,UCdrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,GAAQ,CAAC,YAAY,qBAE1E,U,8EC2BM,GAArB,kQACgB,GADhB,+CAEgC,IAFhC,mDAG+B,IAH/B,iDAImB,GAJnB,6CAKiC,WALjC,6CAM2B,WAN3B,0DAO4B,GAP5B,oHAUI,WACI6C,OAAOC,SAAS,EAAG,GACnB,gBAAc,CAAEtF,UAAW,cAE3B6C,KAAK5D,gBAAkB4D,KAAK0C,qBAC5B1C,KAAK1C,0BAfb,4FAkBI,kGACQ0C,KAAK2C,cADb,uBAEQ3C,KAAKrE,UAAY,UAFzB,6BAMS,gBAAoBqE,KAAK5D,iBANlC,uBAOQ4D,KAAK4C,QAAQC,QAAQ,CACjBC,KAAM,cACNC,MAAO/C,KAAKgD,OAAOD,QAT/B,mDAgBc,gBAAgB/C,KAAKgD,OAAOD,MAAME,WAhBhD,UAiBQjD,KAAKkD,wBAA0BvD,EAAA,KAAMC,MAAMc,QAAQC,gBAAgBC,SACnEZ,KAAKmD,yBAA2BxD,EAAA,KAAMC,MAAMc,QAAQC,gBAAgByC,kBAC/DzD,EAAA,KAAMC,MAAMqB,OAAOoC,UAnBhC,kCAqBkBrD,KAAK4C,QAAQC,QAAQ,CACvBC,KAAM,eACNC,MAAO/C,KAAKgD,OAAOD,QAvBnC,QA2BQ/C,KAAKrE,UAAY,UA3BzB,qDA8BQ,gBAAmB,EAAD,IAClBqE,KAAKrE,UAAY,QA/BzB,0DAlBJ,yFAqDI,WACI,MAAoCgE,EAAA,KAAMC,MAAMqB,OAAxCA,EAAR,EAAQA,OAAQC,EAAhB,EAAgBA,gBACVoC,GAAoB,OAANrC,QAAM,IAANA,OAAA,EAAAA,EAAQ3E,QAAS,GACrC,+BAAWgH,GAAX,eAA2BpC,MAxDnC,uCA2DI,WACI,IAAKlB,KAAKuD,sBACN,OAAO,EAGX,IAAQC,EAAW7D,EAAA,KAAMC,MAAM6D,OAAvBD,OACR,QAASA,EAAOE,mBAAqBF,EAAOG,kBAAoB3D,KAAK5D,gBAAgBC,SAjE7F,oBAoEI,WACI,QAAS2D,KAAKnD,YAAYR,SArElC,qBAwEI,WACI,OAAOsD,EAAA,KAAMC,MAAMc,QAAQzD,YAzEnC,qCA4EI,WACI,OAAO0C,EAAA,KAAMC,MAAMgE,MAAMC,4BA7EjC,iCAgFI,WACI,IAAQhE,EAAaF,EAAA,KAAMC,MAAMC,SAAzBA,SACR,OAAQA,EAASsB,sBAlFzB,0BAqFI,WACI,OAAOxB,EAAA,KAAMC,MAAMkE,QAAQA,QAAQC,aAtF3C,4BAyFI,WACI,OAAO/D,KAAKhE,qBAAuB,iBAAmBgE,KAAKgE,WAAa,gBAAkB,SA1FlG,sBA6FI,WACI,OAAOhE,KAAK/D,WAAc+D,KAAKkD,yBAA2BvD,EAAA,KAAMC,MAAMc,QAAQC,gBAAgBC,WA9FtG,gCAiGI,WACI,IAAKjB,EAAA,KAAMC,MAAM6D,OAAOD,OACpB,OAAO,EAGX,MAA+D7D,EAAA,KAAMC,MAAM6D,OAAOD,OAA1EE,EAAR,EAAQA,gBAAiBC,EAAzB,EAAyBA,gBAAiBM,EAA1C,EAA0CA,iBAC1C,EAA0CtE,EAAA,KAAMC,MAAMc,QAAQC,gBAAtDuD,EAAR,EAAQA,gBAAiBC,EAAzB,EAAyBA,aAEnBC,KAAqBV,IAAmB1D,KAAKnD,YAAYwH,QAAO,SAAAC,GAAU,MAAwB,UAApBA,EAAWC,QAAkBlI,QAC3GmI,KAAqBb,IAAmB3D,KAAKnD,YAAYwH,QAAO,SAAAC,GAAU,MAAwB,UAApBA,EAAWC,QAAkBlI,QAC3GoI,KAAsBR,IAAqBC,IAAmBC,GAEpE,OAAOC,GAAmBI,GAAmBC,IA7GrD,yBAgHI,WACI,OAAO9E,EAAA,KAAMC,MAAMiB,WAAWC,cAjHtC,sBAoHI,WACI,MAA6C,SAAtCnB,EAAA,KAAMC,MAAMgE,MAAMc,kBArHjC,4BAwHI,SAAeC,GACX,OAAO,gBAAeA,KAzH9B,+BA4HI,WACI,IAAQD,EAAoB/E,EAAA,KAAMC,MAAMgE,MAAhCc,gBACR,MAA2B,SAApBA,IA9Hf,iCAiII,WACI,OAAO/E,EAAA,KAAMC,MAAMc,QAAQC,gBAAgByC,oBAAsBpD,KAAKmD,2BAlI9E,4BAqII,WAAoB,YAChB,OAAO,UAAAxD,EAAA,KAAMC,MAAMqB,OAAOA,cAAnB,eAA2B2D,SAASC,aAAclF,EAAA,KAAMC,MAAMc,QAAQC,gBAAgBC,WACzF,UAAAjB,EAAA,KAAMC,MAAMqB,OAAOA,cAAnB,mBAA2B2D,SAAST,oBAApC,eAAkD5H,aAAlD,UAA+DoD,EAAA,KAAMC,MAAMc,QAAQC,gBAAgBwD,oBAAnG,aAA+D,EAAkD5H,YAvI7H,gCA0II,WACI,IAAQsD,EAAaF,EAAA,KAAMC,MAAMC,SAAzBA,SACR,OAAQA,EAASuB,qBA5IzB,yCA+II,WACI,IAAQvB,EAAaF,EAAA,KAAMC,MAAMC,SAAzBA,SACR,OAAQA,EAASwB,8BAjJzB,mCAoJI,WACI,OAAQrB,KAAKkD,wBAA0BlD,KAAK8E,sBAAwB9E,KAAK+E,iCArJjF,0FAwJI,wIACQ/E,KAAK9D,YAAa8D,KAAK2C,cAD/B,qDAKQ3C,KAAKnD,YAAYmI,MAAK,SAAA1I,GAAK,OAAIA,EAAM2I,SAAW,OALxD,uBAMQtF,EAAA,KAAMuF,SAAsB,CACxBX,KAAM,aACNY,UAAW,CACPC,QAASpF,KAAKlE,GAAG,+DACjBuJ,OAAQ,UAVxB,6BAgBIrF,KAAKhD,cAAe,EACpBgD,KAAK9D,WAAY,EAjBrB,EAuBQyD,EAAA,KAAMC,MAvBd,IAoBQgE,MAAS0B,EApBjB,EAoBiBA,UAAWZ,EApB5B,EAoB4BA,gBACT/D,EArBnB,EAqBQD,QAAWC,gBArBnB,IAsBQM,OAAUoC,EAtBlB,EAsBkBA,UAAWpC,EAtB7B,EAsB6BA,OAGpBoC,GAAa,OAACpC,QAAD,IAACA,KAAQsE,SAzB/B,uBA0BcC,MAAM,mEA1BpB,eA6BUC,EAAmBf,GAAmBY,EAAa,CACrDZ,kBACAY,kBACAI,EAEEC,EAAqD,CACvDtC,YACAuC,WAAY5F,KAAK4F,WACjBhB,SAAU,CACNiB,MAAOlF,EAAgBkF,OAAS,GAChCC,KAAMnF,EAAgBmF,MAAQ,IAElCL,mBAGAzF,KAAK/D,WACL0J,EAAerJ,MAAQ,gBAAuB0D,KAAKnD,cAGnDmD,KAAK+F,wBACLJ,EAAef,SAASoB,iBAAmBrF,EAAgBuD,gBAC3DyB,EAAef,SAASqB,uBAAyBtF,EAAgByC,mBAGjEpD,KAAKkG,mBACLP,EAAef,SAASC,UAAYlE,EAAgBC,SACpD+E,EAAef,SAASuB,qBAAxB,UAA+CxF,EAAgBwD,oBAA/D,aAA+C,EAA8B5H,UAvDrF,oBA2DiC,gBAAa0E,EAAOsE,SAAUI,GA3D/D,iBA2DgBnC,EA3DhB,EA2DgBA,OAER,gBAAc,CACVrG,UAAW,wBACXiJ,MAAO,WACPC,MAAOpF,EAAOsE,WAGd/B,IACA7D,EAAA,KAAM2G,OAAoB,CACtB/B,KAAM,uBACNgC,eAAgB/C,EAAOgD,WAGvBhD,EAAOiD,oBACP9G,EAAA,KAAM2G,OAAoB,CACtB/B,KAAM,gCACNmC,yBAA0BlD,EAAOiD,sBAK7C9G,EAAA,KAAM2G,OAAoB,CACtB/B,KAAM,2BACNlB,eAAWqC,IAIf/F,EAAA,KAAM2G,OAAoB,CACtB/B,KAAM,uBACNtD,SACA0F,aAAchG,EAAgBmF,KAC9Bc,eAAgB5G,KAAKgE,aA3FjC,sDA+Fc6C,EA/Fd,sCA+FmC,KAAmCC,YA/FtE,iBA+FmC,EAAyCC,aA/F5E,iBA+FmC,EAAgDC,mBA/FnF,aA+FmC,EAA6DC,SAAS,qBAG7FJ,EACA,gBAAc,CACV1J,UAAW,wBACXiJ,MAAO,WACPC,MAAOpF,EAAOsE,YAIlBvF,KAAKzC,UAAY,oBACjByC,KAAKrE,UAAY,SA3G7B,QA+GIgE,EAAA,KAAM2G,OAAoB,CACtB/B,KAAM,6BACNtH,WAAW,IAGf0C,EAAA,KAAM2G,OAAoB,CACtB/B,KAAM,qCACN2C,sBAAsB,IAG1BlH,KAAK4C,QAAQC,QAAQ,CACjBC,KAAM,cACNC,MAAO/C,KAAKgD,OAAOD,QA3H3B,2DAxJJ,8DAA+C,QAA1B,GAAiB,gBAdrC,eAAQ,CACL1C,WAAY,CACR8G,qBAAA,KACAC,YAAA,KACAC,SAAA,KACAC,gBAAA,KACAC,kBAAA,KACAC,UAAA,KACAC,eAAA,GACAC,QAAA,KACAC,aAAA,MAEJhI,QAAA,QAEiB,c,UC7BrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAShF,GAAQ,CAAC,YAAY,qBAE1E,iB,oCCTf,W,oCCAA,W,oCCAA,W,oFCAA,W,sECGMb,EAAa,CACjBC,IAAK,EACLC,MAAO,yBAEHC,EAAa,CACjBF,IAAK,EACLC,MAAO,uBAEHE,EAAa,CACjBH,IAAK,EACLC,MAAO,4BAEHG,EAAa,CACjBJ,IAAK,EACLC,MAAO,yBAEHI,EAAa,CAAEJ,MAAO,qDACtBK,EAAa,CAAEL,MAAO,+DACtBM,EAAa,CAAEN,MAAO,+DACtBO,EAAa,CAAEP,MAAO,+BACtBQ,EAAa,CAAER,MAAO,uBACtBS,EAAc,CAAET,MAAO,4BACvBU,EAAc,CAAEV,MAAO,4BACvB4N,EAAc,CAAE5N,MAAO,4BACvB6N,EAAc,CAAE7N,MAAO,4BACvB8N,EAAc,CAClB/N,IAAK,EACLC,MAAO,wDAEH+N,EAAc,CAAE/N,MAAO,4BACvBgO,EAAc,CAAEhO,MAAO,4BACvBiO,EAAc,CAClBlO,IAAK,EACLC,MAAO,4BAGH,SAAUW,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,IAAMyD,EAAkB,eAAkB,QACpCwJ,EAAqB,eAAkB,WAE7C,OAAQ,iBAAc,eAAoB,MAAO,CAC/ClO,MAAO,eAAgB,CAAC,CAAE,0BAA2BY,EAAKuN,yBAA2B,mBACpF,CACAvN,EAAKwN,8BACD,iBAAc,eAAoB,MAAOtO,EAAY,CAClDc,EAAKyN,gBAEH,eAAoB,IAAI,IADvB,iBAAc,eAAoB,MAAOpO,EAAY,OAE1D,eAAoB,MAAO,CACzBD,MAAO,eAAgB,CAAE,6BAA8BY,EAAK0N,YAAYC,cACvE,EACA,gBAAW,GAAO,eAAoB,OAAW,KAAM,eAAY3N,EAAK0N,YAAYE,UAAU,SAACC,GAC9F,OAAQ,iBAAc,eAAoB,MAAO,CAC/C1O,IAAK0O,EACLzO,MAAO,yBACN,eAAiBY,EAAKkB,GAAG2M,IAAsB,MAChD,OACH,GACF7N,EAAK0N,YAAYC,YACb,iBAAc,eAAoB,MAAOrO,EAAY,eAAiBU,EAAKkB,GAAGlB,EAAK0N,YAAYC,aAAc,IAC9G,eAAoB,IAAI,MAE9B,eAAoB,IAAI,GAC3B3N,EAAK0N,YAAYI,iBAAmB9N,EAAK0N,YAAY7B,oBAAsB7L,EAAK0N,YAAYK,QACxF,iBAAc,eAAoB,MAAOxO,EAAY,CACpD,eAAoB,MAAOC,EAAY,CACrC,eAAoB,MAAOC,EAAY,CACrC,eAAaqE,EAAiB,CAC5B1E,MAAO,eAAgB,CAAC,CAAE,gBAAiBY,EAAKgO,wBAA0B,mBAC1E1K,KAAM,QACL,KAAM,EAAG,CAAC,YAEf,eAAoB,MAAO5D,EAAY,eAAiBM,EAAKiO,qBAAqBjO,EAAK0N,YAAY7B,mBAAmBJ,MAAOzL,EAAK0N,YAAY7B,mBAAmBqC,YAAa,KAEhL,eAAoB,MAAOvO,EAAY,CACrC,eAAamE,EAAiB,CAC5BR,KAAM,cACNlE,MAAO,qBAGX,eAAoB,MAAOQ,EAAY,CACrC,eAAoB,MAAOC,EAAa,CACtC,eAAaiE,EAAiB,CAC5B1E,MAAO,eAAgB,CAAC,CAAE,gBAAiBY,EAAKmO,sBAAwB,mBACxE7K,KAAM,QACL,KAAM,EAAG,CAAC,YAEf,eAAoB,MAAOxD,EAAa,eAAiBE,EAAKiO,qBAAqBjO,EAAK0N,YAAYK,OAAOtC,MAAOzL,EAAK0N,YAAYK,OAAOG,YAAa,QAG1JlO,EAAK0N,YAAYjC,OAAmC,WAA1BrG,KAAKsI,YAAY/D,MACzC,iBAAc,eAAa2D,EAAoB,CAC9CnO,IAAK,EACLiP,aAAcpO,EAAKqO,0BACnBC,aAActO,EAAKuO,0BACnBC,OAAO,EACPC,KAAMzO,EAAK0O,kBACXlE,QAASxK,EAAK2O,aAAe3O,EAAKkB,GAAG,UAAYlB,EAAKkB,GAAG,iBACzD9B,MAAO,yBACN,CACDwP,QAAS,iBAAS,iBAAM,CACtB,eAAoB,SAAU,CAC5BjL,QAAS1D,EAAO,KAAOA,EAAO,GAE9C,kBAAcD,EAAK6O,uBAAyB7O,EAAK6O,sBAAL,MAAA7O,EAAI,aAChCZ,MAAO,6EACN,CACD,eAAoB,MAAO4N,EAAa,CACtC,eAAalJ,EAAiB,CAC5B1E,MAAO,eAAgB,CAAC,CAAE,gBAAiBY,EAAKmO,sBAAwB,mBACxE7K,KAAM,QACL,KAAM,EAAG,CAAC,YAEf,eAAoB,MAAO2J,EAAa,eAAiBjN,EAAK0N,YAAYjC,OAAQ,SAGtFqD,EAAG,GACF,EAAG,CAAC,eAAgB,eAAgB,OAAQ,aAC9C9O,EAAK0N,YAAYjC,OAAmC,WAA1BrG,KAAKsI,YAAY/D,MACzC,iBAAc,eAAoB,MAAOuD,EAAa,CACrD,eAAoB,MAAOC,EAAa,CACtC,eAAarJ,EAAiB,CAC5B1E,MAAO,eAAgB,CAAC,CAAE,gBAAiBY,EAAKmO,sBAAwB,mBACxE7K,KAAM,QACL,KAAM,EAAG,CAAC,YAEf,eAAoB,MAAO8J,EAAa,eAAiBpN,EAAK0N,YAAYjC,OAAQ,MAEpF,eAAoB,IAAI,GAC/BzL,EAAK0N,YAAYtB,aACb,iBAAc,eAAoB,MAAOiB,EAAa,eAAiBrN,EAAKkB,GAAGlB,EAAK0N,YAAYtB,cAAe,IAChH,eAAoB,IAAI,IAC3B,G,wPCtHgB,EAArB,6QAC4B,KAD5B,iDAEmB,GAFnB,sDAGwB,GAHxB,oNAM8B,KAN9B,sDAQI,WACI,IAAQnH,EAAaF,EAAA,KAAMC,MAAMC,SAAzBA,SACR,OAAqC,KAAtB,OAARA,QAAQ,IAARA,OAAA,EAAAA,EAAUwI,mBAVzB,kCAaI,SAAqBhC,EAAeyC,GAChC,MAAqB,iBAAdA,EACD9I,KAAKlE,GAAG,8BAA+B,CAAE6N,eAAgB3J,KAAK2J,eAAgBtD,UAC9ErG,KAAKlE,GAAG,eAAgB,CAAEuK,YAhBxC,mCAmBI,WACI,MAA4B,uBAArBrG,KAAKgD,OAAO8C,OApB3B,wCAuBI,WACI,IAAQoB,EAAyBvH,EAAA,KAAMC,MAAMkE,QAArCoD,qBACR,QAASA,GAAwBlH,KAAKmI,2BAzB9C,0BA4BI,WACI,OAAOxI,EAAA,KAAMC,MAAMiB,WAAW8I,iBA7BtC,uBAgCI,WACI,MAA6ChK,EAAA,KAAMC,MAAM4D,OAAjDA,EAAR,EAAQA,OAAQkD,EAAhB,EAAgBA,yBACVkD,EAAoBjK,EAAA,KAAMC,MAAMqB,OAAO2F,eAAiB,kBAAoB,oBAElF,cAAQpD,QAAR,IAAQA,OAAR,EAAQA,EAAQe,MACZ,IAAK,SACD,wCACOf,GADP,IAEI6C,MAAO7C,EAAOwD,YACdA,YAA8B,MAAjBxD,EAAO6C,MAAgB,iCAAmC,kCACvEmC,SAAU,CAACoB,EAAmB5J,KAAKlE,GAAL,0BAAmC,CAAE+N,OAAQ7J,KAAK8J,wCAExF,IAAK,QACD,wCACOtG,GADP,IAEI6C,WAAOX,EACPsB,iBAAatB,EACb8C,SAAU,CAACoB,GACXrB,WAAY,oFAEpB,IAAK,SACD,OAAI/E,EAAOkF,iBAAmBhC,EAC1B,iCACOlD,GADP,IAEIiD,mBAAoBC,EACpB8B,SAAU,CAAC,oBACXD,WAAY,+EAGpB,iCACO/E,GADP,IAEIgF,SAAU,CAACoB,EAAD,2BACVrB,WAAY,+EAEpB,QACI,MAAO,CACHC,SAAU,CAACoB,GACXrB,WAAY,gDArEhC,gCA0EI,WAAwB,QACpB,OAAO,eAAM,oBAAC5I,EAAA,KAAMC,MAAMC,SAASA,SAASC,cAA/B,aAAC,EAAsCiK,2BAAvC,QAA8D,aA3EnF,kCA8EI,WAA0B,QACtB,OAAO,eAAM,oBAACpK,EAAA,KAAMC,MAAMC,SAASA,SAASC,cAA/B,aAAC,EAAsCkK,6BAAvC,QAAgE,aA/ErF,8CAkFI,WACI,IAAMC,EAAiB,iBACvB,OAAOA,EAAepH,QAAQ,UAAU,SAAA5E,GAAI,OAAIA,EAAKiM,OAAO,GAAGC,cAAgBlM,EAAKmM,OAAO,GAAGC,mBApFtG,4FAuFI,uGACUpM,EAAO+B,KAAKsI,YAAYjC,MAEA,WAA1BrG,KAAKsI,YAAY/D,MAAsBtG,EAH/C,oDAOI+B,KAAKsJ,mBAAoB,EAEpBgB,UAAUC,UATnB,uBAUQvK,KAAKwK,8BAA8BvM,GAV3C,oDAecqM,UAAUC,UAAUE,UAAUxM,GAf5C,QAgBQ+B,KAAK0K,6BAhBb,qDAmBQ1K,KAAK2K,0BAnBb,0DAvFJ,oGA8GI,SAA8B1M,GAC1B,IAAM2M,EAAWC,SAASC,cAAc,YACxCF,EAASvE,MAAQpI,EACjB2M,EAASxM,MAAM2M,IAAM,IACrBH,EAASxM,MAAMC,KAAO,IACtBuM,EAASxM,MAAMU,MAAQ,IACvB8L,EAASxM,MAAMQ,OAAS,IACxBgM,EAASxM,MAAM4M,SAAW,QAC1BH,SAAS7J,KAAKiK,YAAYL,GAC1BA,EAASM,QACTN,EAASO,SAET,IACQN,SAASO,YAAY,SACrBpL,KAAK0K,6BAGb,SACI1K,KAAK2K,0BAGTE,SAAS7J,KAAKqK,YAAYT,KAnIlC,wCAsII,WAA0B,WACtB5K,KAAKuJ,cAAe,EAEhB,mBACA+B,aAAatL,KAAKuL,mCAClBvL,KAAKuL,kCAAoCC,YAAW,WAChD,EAAKrC,8BACNnJ,KAAKyL,0BA7IpB,qCAiJI,WACIzL,KAAKuJ,cAAe,IAlJ5B,uCAqJI,WACIvJ,KAAKsJ,mBAAoB,IAtJjC,uCAyJI,WAAyB,WACrBtJ,KAAKsJ,mBAAoB,EACzBgC,aAAatL,KAAK0L,kCAClB1L,KAAK0L,iCAAmCF,YAAW,WAC/C,EAAKb,4BACN3K,KAAK2L,6BA9JhB,GAA+C,QAA1B,EAAiB,gBANrC,eAAQ,CACLtL,WAAY,CACRC,OAAA,KACAsL,UAAA,SAGa,W,iCCVrB,MAAMrL,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAAS5F,GAAQ,CAAC,YAAY,qBAE1E","file":"js/reviewEnhancement.8ad697fa.js","sourcesContent":["import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-700cffb9\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 1,\n class: \"c-main\"\n}\nconst _hoisted_2 = { class: \"u-textAlign--center u-fontWeight--semibold u-fontSize-vue--medium u-marginBottomUI--small\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"u-marginBottomUI--large\"\n}\nconst _hoisted_4 = { class: \"u-fontSize-vue--small u-marginBottomUI--xxSmall u-fontColor--secondary\" }\nconst _hoisted_5 = { class: \"c-currentMedia u-marginBottomUI--xxSmall\" }\nconst _hoisted_6 = [\"src\"]\nconst _hoisted_7 = {\n key: 0,\n class: \"c-currentMedia-block-duration\"\n}\nconst _hoisted_8 = {\n key: 1,\n class: \"u-marginBottomUI--xLarge\"\n}\nconst _hoisted_9 = [\"aria-label\"]\nconst _hoisted_10 = {\n key: 0,\n class: \"c-loader c-loader--medium c-loader--buttonFontColor\"\n}\nconst _hoisted_11 = { key: 1 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_banner = _resolveComponent(\"banner\")!\n const _component_achievement_header = _resolveComponent(\"achievement-header\")!\n const _component_review_progress = _resolveComponent(\"review-progress\")!\n const _component_media_uploader = _resolveComponent(\"media-uploader\")!\n const _component_profile = _resolveComponent(\"profile\")!\n const _component_terms = _resolveComponent(\"terms\")!\n const _component_powered_by_okendo = _resolveComponent(\"powered-by-okendo\")!\n const _component_view_state = _resolveComponent(\"view-state\")!\n const _directive_analytics = _resolveDirective(\"analytics\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_ctx.viewState === 'content')\n ? (_openBlock(), _createBlock(_component_banner, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_ctx.viewState === 'content')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_achievement_header),\n _createElementVNode(\"form\", {\n onSubmit: _cache[1] || (_cache[1] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.submitUpdatedReview && _ctx.submitUpdatedReview(...args)), [\"prevent\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('Add to Your Review')), 1),\n _createVNode(_component_review_progress, {\n onClickUpgradeButton: _ctx.submitUpdatedReview,\n isEligibleForUpgrade: _ctx.isEligibleForUpgrade,\n hasMedia: _ctx.hasMedia,\n isSending: _ctx.isSending\n }, null, 8, [\"onClickUpgradeButton\", \"isEligibleForUpgrade\", \"hasMedia\", \"isSending\"]),\n (_ctx.isMediaUploadSectionVisible)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"legend\", {\n class: _normalizeClass([{ 'u-paddingBottomUI--xSmall': !_ctx.mediaFromReview.length }, \"u-fontSize-vue--regular u-fontWeight--semibold u-paddingTopUI--xSmall\"])\n }, _toDisplayString(_ctx.$t('Photos and Videos')), 3),\n (_ctx.mediaFromReview.length)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(_ctx.$t('Thank you for your previous uploads, add more below')), 1),\n _createElementVNode(\"div\", _hoisted_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.mediaFromReview, (media) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: media.streamId,\n class: \"c-currentMedia-block\"\n }, [\n _createElementVNode(\"img\", {\n src: media.thumbnailUrl,\n class: \"c-currentMedia-block-img\"\n }, null, 8, _hoisted_6),\n (media.durationSeconds)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _toDisplayString(_ctx.formatDuration(media.durationSeconds)), 1))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_media_uploader, {\n modelValue: _ctx.mediaBlocks,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.mediaBlocks) = $event)),\n class: \"u-marginBottomUI--large\"\n }, null, 8, [\"modelValue\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.isProfileSectionVisible)\n ? (_openBlock(), _createElementBlock(\"fieldset\", _hoisted_8, [\n _createVNode(_component_profile, { hasSubmitted: _ctx.hasSubmitted }, null, 8, [\"hasSubmitted\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", {\n class: _normalizeClass([{\n 'u-marginBottomUI--xSmall': _ctx.isOptedIn,\n 'u-marginBottomUI--xxSmall': !_ctx.isOptedIn\n }, \"c-form-row\"])\n }, [\n _withDirectives(_createElementVNode(\"button\", {\n \"aria-label\": _ctx.$t(_ctx.actionButtonText),\n class: \"c-button\"\n }, [\n (_ctx.isSending)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_ctx.$t(_ctx.actionButtonText)), 1))\n ], 8, _hoisted_9), [\n [_directive_analytics, { eventName: 'click-update-review' }]\n ])\n ], 2),\n _createVNode(_component_terms, { hasPreviouslyOptedIn: true }),\n _createVNode(_component_powered_by_okendo)\n ], 32)\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_view_state, {\n onRetry: _ctx.loadReviewEnhancement,\n \"view-state\": _ctx.viewState,\n errorCode: _ctx.errorCode\n }, null, 8, [\"onRetry\", \"view-state\", \"errorCode\"])\n ], 64))\n}","import { createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-29640a6c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n ref: \"intersectionTarget\",\n class: \"c-reviewProgress-intersectionTarget\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"c-reviewProgress-line\" }, null, -1))\nconst _hoisted_3 = [\"disabled\"]\nconst _hoisted_4 = {\n key: 0,\n class: \"c-loader c-loader--small c-loader--buttonFontColor\"\n}\nconst _hoisted_5 = { key: 1 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_progress_step = _resolveComponent(\"progress-step\")!\n const _directive_analytics = _resolveDirective(\"analytics\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, null, 512),\n _createElementVNode(\"div\", {\n class: _normalizeClass([[_ctx.okeClass, { isStuck: _ctx.isStuck, areAllStepsComplete: _ctx.areAllStepsComplete }], \"c-reviewProgress\"])\n }, [\n _hoisted_2,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.progressSteps, (step, index) => {\n return (_openBlock(), _createBlock(_component_progress_step, {\n key: step.text,\n icon: step.icon,\n text: step.text,\n percentCompleted: step.percentCompleted,\n style: _normalizeStyle({ left: _ctx.leftSpacing(index) }),\n areAllStepsComplete: _ctx.areAllStepsComplete\n }, null, 8, [\"icon\", \"text\", \"percentCompleted\", \"style\", \"areAllStepsComplete\"]))\n }), 128)),\n _withDirectives(_createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.clickUpgradeButton && _ctx.clickUpgradeButton(...args))),\n disabled: !_ctx.areAllStepsComplete,\n class: \"c-button c-reviewProgress-upgradeButton\"\n }, [\n (_ctx.isSending)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_5, _toDisplayString(_ctx.$t(_ctx.actionButtonText)), 1))\n ], 8, _hoisted_3), [\n [_directive_analytics, { eventName: 'click-progress-bar-update-review' }]\n ])\n ], 2)\n ], 64))\n}","import { resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString } from \"vue\"\n\nconst _hoisted_1 = { class: \"c-progressStep-icon u-marginBottomUI--xxSmall\" }\nconst _hoisted_2 = [\"height\", \"width\"]\nconst _hoisted_3 = [\"cx\", \"cy\", \"r\", \"stroke-dasharray\", \"stroke-width\", \"stroke\"]\nconst _hoisted_4 = { class: \"c-progressStep-text\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_icon = _resolveComponent(\"icon\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"c-progressStep\", { isComplete: _ctx.isComplete, areAllStepsComplete: _ctx.areAllStepsComplete }])\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_icon, {\n icon: _ctx.icon,\n class: _normalizeClass([{\n 'c-icon--white': _ctx.isComplete,\n 'c-icon--reviewStepColor': !_ctx.isComplete\n }, \"c-icon--reviewStep\"])\n }, null, 8, [\"icon\", \"class\"])\n ]),\n (_openBlock(), _createElementBlock(\"svg\", {\n height: _ctx.radius * 2,\n width: _ctx.radius * 2,\n class: \"c-progressStep-ring\"\n }, [\n _createElementVNode(\"circle\", {\n cx: _ctx.radius,\n cy: _ctx.radius,\n r: _ctx.innerRadius,\n \"stroke-dasharray\": `${_ctx.circumference} ${_ctx.circumference}`,\n \"stroke-width\": _ctx.strokeWidth,\n stroke: _ctx.strokeColor,\n style: _normalizeStyle({ strokeDashoffset: _ctx.strokeDashoffset }),\n fill: \"transparent\"\n }, null, 12, _hoisted_3)\n ], 8, _hoisted_2)),\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(_ctx.$t(_ctx.text)), 1)\n ], 2))\n}","\nimport { Options, Vue } from 'vue-class-component';\nimport Icon from '@/shared-components/Icon.vue';\nimport store from '@/store';\n\n@Options({\n props: {\n icon: String,\n text: String,\n percentCompleted: Number,\n areAllStepsComplete: Boolean\n },\n components: {\n Icon\n },\n store\n})\nexport default class ProgressStep extends Vue {\n percentCompleted!: number;\n radius = 25;\n strokeWidth = 2;\n innerRadius = this.radius - this.strokeWidth * 2;\n circumference = this.innerRadius * 2 * Math.PI;\n strokeColor = store.state.settings.settings.colors?.progressCompleteStepColor ?? '#0E7D81';\n\n get strokeDashoffset(): number {\n return this.circumference - this.percentCompleted / 100 * this.circumference;\n }\n\n get isComplete(): boolean {\n return this.percentCompleted > 99;\n }\n}\n\n","import { render } from \"./ProgressStep.vue?vue&type=template&id=5c4833ba&ts=true\"\nimport script from \"./ProgressStep.vue?vue&type=script&lang=ts\"\nexport * from \"./ProgressStep.vue?vue&type=script&lang=ts\"\n\nimport \"./ProgressStep.vue?vue&type=style&index=0&id=5c4833ba&lang=scss\"\n\nimport exportComponent from \"C:\\\\Octopus\\\\Applications\\\\Prod\\\\okendo.reviews-recorder-vue\\\\0.2.0.1570\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { Options, Vue } from 'vue-class-component';\n\nimport Icon from '@/shared-components/Icon.vue';\nimport ProgressStep from './ProgressStep.vue';\nimport store from '@/store';\n\n@Options({\n components: {\n Icon,\n ProgressStep\n },\n props: {\n hasMedia: Boolean,\n isEligibleForUpgrade: Boolean,\n okeClass: String,\n isSending: Boolean\n },\n emits: ['clickUpgradeButton'],\n store\n})\nexport default class ReviewProgress extends Vue {\n hasMedia!: boolean;\n isEligibleForUpgrade!: boolean;\n // bonusStepsPercentage?: number;\n isStuck = false;\n observer?: IntersectionObserver;\n\n mounted(): void {\n this.createStickyObserver();\n }\n\n beforeUnmount(): void {\n this.removeStickyObserver();\n }\n\n get isAvatarStepComplete(): boolean {\n return !!store.state.profile.reviewerProfile.imageUrl;\n }\n\n get isReviewStepComplete(): boolean {\n if (store.state.subscriber.previewMode) {\n return true;\n }\n\n return !!store.state.reviewForm.body || !!store.state.review.review?.body;\n }\n\n get isMediaStepComplete(): boolean {\n const { review, videoThumbnails } = store.state.review;\n return this.hasMedia || !!review?.media?.length || !!videoThumbnails.length;\n }\n\n get progressSteps(): StepInfo[] {\n const { disableMediaCapture, disableSocialLogin, disableProfilePictureUpload } = store.state.settings.settings;\n // const { bonusQuestions } = whereverBonusQuestionsAreFrom;\n\n const progressSteps: StepInfo[] = [{\n icon: 'star-outline',\n text: 'Write Review',\n percentCompleted: this.isReviewStepComplete ? 100 : 0\n }];\n\n if (!disableMediaCapture) {\n progressSteps.push({\n icon: 'photo-video',\n text: 'Add Photo or Video',\n percentCompleted: this.isMediaStepComplete ? 100 : 0\n });\n }\n\n if (!disableSocialLogin || !disableProfilePictureUpload) {\n progressSteps.push({\n icon: 'profile',\n text: 'Add Profile Picture',\n percentCompleted: this.isAvatarStepComplete ? 100 : 0\n });\n }\n\n // if (bonusQuestions) {\n // progressSteps.push({\n // icon: 'checkbox',\n // text: 'Bonus Questions',\n // percentCompleted: this.bonusStepsPercentage ?? 0\n // });\n // }\n\n return progressSteps;\n }\n\n get areAllStepsComplete(): boolean {\n return this.progressSteps.every(step => step.percentCompleted > 99);\n }\n\n get actionButtonText(): string {\n return this.isEligibleForUpgrade ? 'Upgrade Review' : 'Update Review';\n }\n\n clickUpgradeButton(): void {\n this.$emit('clickUpgradeButton');\n }\n\n createStickyObserver(): void {\n this.observer = new IntersectionObserver(([entry]) => {\n this.isStuck = !entry.isIntersecting;\n });\n\n this.observer.observe(this.$refs.intersectionTarget as HTMLElement);\n }\n\n removeStickyObserver(): void {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n leftSpacing(index: number): string {\n const numberOfSteps = this.progressSteps.length;\n\n // push them all together to the left or evenly space them\n const spacing = this.areAllStepsComplete\n ? 11 + 2 * index\n : (100 / numberOfSteps) * (index + 0.5);\n\n // subtract half the width of the step to centre each one\n return `calc(${spacing}% - 34px)`;\n }\n}\n\ninterface StepInfo {\n icon: string;\n text: StepInfoText;\n percentCompleted: number;\n}\n\ntype StepInfoText = 'Write Review' | 'Add Photo or Video' | 'Add Profile Picture' | 'Bonus Questions';\n","import { render } from \"./ReviewProgress.vue?vue&type=template&id=29640a6c&scoped=true&ts=true\"\nimport script from \"./ReviewProgress.vue?vue&type=script&lang=ts\"\nexport * from \"./ReviewProgress.vue?vue&type=script&lang=ts\"\n\nimport \"./ReviewProgress.vue?vue&type=style&index=0&id=29640a6c&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\Octopus\\\\Applications\\\\Prod\\\\okendo.reviews-recorder-vue\\\\0.2.0.1570\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-29640a6c\"]])\n\nexport default __exports__","\nimport { Options, Vue } from 'vue-class-component';\nimport { AttributeView, Media, ReviewResource } from '@okendo/reviews-common';\n\nimport Banner from '@/shared-components/Banner.vue';\nimport PoweredByOkendo from '@/shared-components/PoweredByOkendo.vue';\nimport Profile from '@/shared-components/profile/Profile.vue';\nimport Terms from '@/shared-components/Terms.vue';\nimport MediaUploader from '@/shared-components/MediaUploader.vue';\nimport Attribute from '@/shared-components/Attribute.vue';\nimport ReviewProgress from '@/views/review-enhancement/components/ReviewProgress.vue';\nimport { formatDuration, formatMediaToTranscode } from '@/utils/mediaUploadUtil';\nimport store from '@/store';\nimport { APIError, postAnalytics, postErrorAnalytics, updateReview } from '@/utils/api';\nimport ViewState, { ViewStateStatus } from '@/shared-components/ViewState.vue';\nimport AchievementHeader from '@/shared-components/AchievementHeader.vue';\nimport { StoreMethod } from '@/store/storeTypings';\nimport { verifyProductId } from '@/utils/productUtils';\nimport { isReviewUpgradeable } from '@/utils/upgradeReviewUtil';\nimport { AxiosResponse } from 'axios';\nimport { ErrorCode } from '@/utils/errorUtils';\n\n@Options({\n components: {\n AchievementHeader,\n Attribute,\n Banner,\n MediaUploader,\n PoweredByOkendo,\n Profile,\n ReviewProgress,\n Terms,\n ViewState\n },\n store\n})\nexport default class ReviewEnhancement extends Vue {\n isSending = false;\n mediaBlocks: MediaBlock[] = [];\n mediaFromReview: Media[] = [];\n hasSubmitted = false;\n viewState: ViewStateStatus = 'loading';\n errorCode: ErrorCode = 'unknown';\n hasProfileImageOnLoad = false;\n socialConnectionIdOnLoad?: string;\n\n mounted(): void {\n window.scrollTo(0, 0);\n postAnalytics({ eventName: 'page-open' });\n\n this.mediaFromReview = this.getMediaFromReview();\n this.loadReviewEnhancement();\n }\n\n async loadReviewEnhancement(): Promise {\n if (this.isPreviewMode) {\n this.viewState = 'content';\n return;\n }\n\n if (!isReviewUpgradeable(this.mediaFromReview)) {\n this.$router.replace({\n path: 'post-review',\n query: this.$route.query\n });\n\n return;\n }\n\n try {\n await verifyProductId(this.$route.query.productId);\n this.hasProfileImageOnLoad = !!store.state.profile.reviewerProfile.imageUrl;\n this.socialConnectionIdOnLoad = store.state.profile.reviewerProfile.socialMediaUserId;\n if (!store.state.review.editToken) {\n // Instead of an error screen, just redirect to the \"Post Review\" page\n await this.$router.replace({\n path: '/post-review',\n query: this.$route.query\n });\n }\n\n this.viewState = 'content';\n }\n catch (error) {\n postErrorAnalytics(error);\n this.viewState = 'error';\n }\n }\n\n getMediaFromReview(): Media[] {\n const { review, videoThumbnails } = store.state.review;\n const reviewMedia = review?.media || [];\n return [...reviewMedia, ...videoThumbnails];\n }\n\n get isMediaUploadSectionVisible(): boolean {\n if (!this.isMediaCaptureEnabled) {\n return false;\n }\n\n const { reward } = store.state.banner;\n return !!reward.imageRewardText || !!reward.videoRewardText || !this.mediaFromReview.length;\n }\n\n get hasMedia(): boolean {\n return !!this.mediaBlocks.length;\n }\n\n get isOptedIn(): boolean {\n return store.state.profile.isOptedIn;\n }\n\n get remainingProductsToReview() {\n return store.state.order.remainingProductsToReview;\n }\n\n get isMediaCaptureEnabled(): boolean {\n const { settings } = store.state.settings;\n return !settings.disableMediaCapture;\n }\n\n get attributesList(): AttributeView.DataAttribute[] | undefined {\n return store.state.product.product.attributes;\n }\n\n get actionButtonText(): string {\n return this.isEligibleForUpgrade ? 'Upgrade Review' : this.hasUpdated ? 'Update Review' : 'Skip';\n }\n\n get hasUpdated(): boolean {\n return this.hasMedia || (!this.hasProfileImageOnLoad && !!store.state.profile.reviewerProfile.imageUrl);\n }\n\n get isEligibleForUpgrade(): boolean {\n if (!store.state.banner.reward) {\n return false;\n }\n\n const { imageRewardText, videoRewardText, socialRewardText } = store.state.banner.reward;\n const { socialMediaType, customAvatar } = store.state.profile.reviewerProfile;\n\n const hasImageUpgrade = !!(imageRewardText && this.mediaBlocks.filter(mediaBlock => mediaBlock.type === 'image').length);\n const hasVideoUpgrade = !!(videoRewardText && this.mediaBlocks.filter(mediaBlock => mediaBlock.type === 'video').length);\n const hasSocialUpgrade = !!(socialRewardText && (socialMediaType || customAvatar));\n\n return hasImageUpgrade || hasVideoUpgrade || hasSocialUpgrade;\n }\n\n get isPreviewMode(): boolean {\n return store.state.subscriber.previewMode;\n }\n\n get isTestMode(): boolean {\n return store.state.order.reviewRequestId === 'test';\n }\n\n formatDuration(duration: number): string {\n return formatDuration(duration);\n }\n\n get isEmailInputVisible(): boolean {\n const { reviewRequestId } = store.state.order;\n return reviewRequestId === 'test';\n }\n\n get hasUpdatedSocialLogin(): boolean {\n return store.state.profile.reviewerProfile.socialMediaUserId !== this.socialConnectionIdOnLoad;\n }\n\n get hasUpdatedAvatar(): boolean {\n return store.state.review.review?.reviewer.avatarUrl !== store.state.profile.reviewerProfile.imageUrl ||\n store.state.review.review?.reviewer.customAvatar?.streamId !== store.state.profile.reviewerProfile.customAvatar?.streamId;\n }\n\n get isSocialLoginEnabled(): boolean {\n const { settings } = store.state.settings;\n return !settings.disableSocialLogin;\n }\n\n get isProfilePictureUploadEnabled(): boolean {\n const { settings } = store.state.settings;\n return !settings.disableProfilePictureUpload;\n }\n\n get isProfileSectionVisible(): boolean {\n return !this.hasProfileImageOnLoad && (this.isSocialLoginEnabled || this.isProfilePictureUploadEnabled);\n }\n\n async submitUpdatedReview(): Promise {\n if (this.isSending || this.isPreviewMode) {\n return;\n }\n\n if (this.mediaBlocks.some(media => media.progress < 100)) {\n store.dispatch({\n type: 'alert/SHOW',\n alertData: {\n content: this.$t('Please wait for media to finish uploading before submitting'),\n status: 'fail'\n }\n });\n return;\n }\n\n this.hasSubmitted = true;\n this.isSending = true;\n\n const {\n order: { elementId, reviewRequestId },\n profile: { reviewerProfile },\n review: { editToken, review }\n } = store.state;\n\n if (!editToken || !review?.reviewId) {\n throw Error('Should not be possible to be on this page without an edit token');\n }\n\n const sequenceContext = (reviewRequestId && elementId) ? {\n reviewRequestId,\n elementId\n } : undefined;\n\n const reviewToUpdate: ReviewResource.UpdateReview.Review = {\n editToken,\n isTestMode: this.isTestMode,\n reviewer: {\n email: reviewerProfile.email || '',\n name: reviewerProfile.name || ''\n },\n sequenceContext\n };\n\n if (this.hasMedia) {\n reviewToUpdate.media = formatMediaToTranscode(this.mediaBlocks);\n }\n\n if (this.hasUpdatedSocialLogin) {\n reviewToUpdate.reviewer.socialConnection = reviewerProfile.socialMediaType;\n reviewToUpdate.reviewer.socialConnectionUserId = reviewerProfile.socialMediaUserId;\n }\n\n if (this.hasUpdatedAvatar) {\n reviewToUpdate.reviewer.avatarUrl = reviewerProfile.imageUrl;\n reviewToUpdate.reviewer.customAvatarStreamId = reviewerProfile.customAvatar?.streamId;\n }\n\n try {\n const { reward } = await updateReview(review.reviewId, reviewToUpdate);\n\n postAnalytics({\n eventName: 'action-updated-review',\n label: 'reviewId',\n value: review.reviewId\n });\n\n if (reward) {\n store.commit({\n type: 'reward/UPDATE_REWARD',\n achievedReward: reward.achieved\n });\n\n if (reward.previouslyAchieved) {\n store.commit({\n type: 'reward/UPDATE_PREVIOUS_REWARD',\n previouslyAchievedReward: reward.previouslyAchieved\n });\n }\n }\n\n store.commit({\n type: 'review/UPDATE_EDIT_TOKEN',\n editToken: undefined\n });\n\n // Update review\n store.commit({\n type: 'review/UPDATE_REVIEW',\n review,\n reviewerName: reviewerProfile.name,\n reviewEnhanced: this.hasUpdated\n });\n }\n catch (error) {\n const isNothingToUpdate = (error as AxiosResponse)?.data?.error?.description?.includes('Nothing to update');\n // Need some more validation here? If it's an invalid token, it should say so\n\n if (isNothingToUpdate) {\n postAnalytics({\n eventName: 'action-skipped-update',\n label: 'reviewId',\n value: review.reviewId\n });\n }\n else {\n this.errorCode = 'product-not-found';\n this.viewState = 'error';\n }\n }\n\n store.commit({\n type: 'profile/UPDATE_IS_OPTED_IN',\n isOptedIn: true\n });\n\n store.commit({\n type: 'product/UPDATE_PREVIOUSLY_REVIEWED',\n isPreviouslyReviewed: false\n });\n\n this.$router.replace({\n path: 'post-review',\n query: this.$route.query\n });\n }\n}\n","import { render } from \"./ReviewEnhancement.vue?vue&type=template&id=700cffb9&scoped=true&ts=true\"\nimport script from \"./ReviewEnhancement.vue?vue&type=script&lang=ts\"\nexport * from \"./ReviewEnhancement.vue?vue&type=script&lang=ts\"\n\nimport \"./ReviewEnhancement.vue?vue&type=style&index=0&id=700cffb9&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\Octopus\\\\Applications\\\\Prod\\\\okendo.reviews-recorder-vue\\\\0.2.0.1570\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-700cffb9\"]])\n\nexport default __exports__","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ReviewProgress.vue?vue&type=style&index=0&id=29640a6c&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ProgressStep.vue?vue&type=style&index=0&id=5c4833ba&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./AchievementHeader.vue?vue&type=style&index=0&id=5fbbeb13&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ReviewEnhancement.vue?vue&type=style&index=0&id=700cffb9&lang=scss&scoped=true\"","import { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5fbbeb13\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"c-achievement-headers\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"c-achievement-emoji\"\n}\nconst _hoisted_3 = {\n key: 1,\n class: \"c-achievement-subheading\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"c-achievement-upgrade\"\n}\nconst _hoisted_5 = { class: \"c-achievement-prize c-achievement-prize--disabled\" }\nconst _hoisted_6 = { class: \"c-achievement-prize-icon c-achievement-prize-icon--disabled\" }\nconst _hoisted_7 = { class: \"c-achievement-prize-text c-achievement-prize-text--disabled\" }\nconst _hoisted_8 = { class: \"c-achievement-upgrade-arrow\" }\nconst _hoisted_9 = { class: \"c-achievement-prize\" }\nconst _hoisted_10 = { class: \"c-achievement-prize-icon\" }\nconst _hoisted_11 = { class: \"c-achievement-prize-text\" }\nconst _hoisted_12 = { class: \"c-achievement-prize-icon\" }\nconst _hoisted_13 = { class: \"c-achievement-prize-text\" }\nconst _hoisted_14 = {\n key: 3,\n class: \"c-achievement-prize c-achievement-prize--transparent\"\n}\nconst _hoisted_15 = { class: \"c-achievement-prize-icon\" }\nconst _hoisted_16 = { class: \"c-achievement-prize-text\" }\nconst _hoisted_17 = {\n key: 4,\n class: \"c-achievement-subheading\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_icon = _resolveComponent(\"icon\")!\n const _component_tooltip = _resolveComponent(\"tooltip\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([{ 'u-marginBottomUI--small': _ctx.isReviewEnhancementPage }, \"c-achievement\"])\n }, [\n (_ctx.areAchievementHeadersVisible)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (!_ctx.hidePartyPopper)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, \"🎉\"))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", {\n class: _normalizeClass({ 'u-marginBottomUI--xxxSmall': _ctx.achievement.subheading })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.achievement.headings, (achievementHeading) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: achievementHeading,\n class: \"c-achievement-heading\"\n }, _toDisplayString(_ctx.$t(achievementHeading)), 1))\n }), 128))\n ], 2),\n (_ctx.achievement.subheading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(_ctx.achievement.subheading)), 1))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.achievement.isCouponUpgrade && _ctx.achievement.previouslyAchieved && _ctx.achievement.coupon)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_icon, {\n class: _normalizeClass([{ 'c-icon--white': _ctx.isIncompleteCouponDark }, \"c-icon--xSmall\"]),\n icon: \"gift\"\n }, null, 8, [\"class\"])\n ]),\n _createElementVNode(\"div\", _hoisted_7, _toDisplayString(_ctx.getAchievedValueText(_ctx.achievement.previouslyAchieved.value, _ctx.achievement.previouslyAchieved.valueType)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_icon, {\n icon: \"arrow-right\",\n class: \"c-icon--xSmall\"\n })\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(_component_icon, {\n class: _normalizeClass([{ 'c-icon--white': _ctx.isCompleteCouponDark }, \"c-icon--xSmall\"]),\n icon: \"gift\"\n }, null, 8, [\"class\"])\n ]),\n _createElementVNode(\"div\", _hoisted_11, _toDisplayString(_ctx.getAchievedValueText(_ctx.achievement.coupon.value, _ctx.achievement.coupon.valueType)), 1)\n ])\n ]))\n : (_ctx.achievement.value && this.achievement.type === 'coupon')\n ? (_openBlock(), _createBlock(_component_tooltip, {\n key: 2,\n onMouseenter: _ctx.onCouponTooltipMouseenter,\n onMouseleave: _ctx.onCouponTooltipMouseleave,\n hover: false,\n show: _ctx.showCouponTooltip,\n content: _ctx.couponCopied ? _ctx.$t('Copied') : _ctx.$t('Click to copy'),\n class: \"c-achievement-tooltip\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.copyCouponToClipboard && _ctx.copyCouponToClipboard(...args))),\n class: \"c-achievement-prize c-achievement-button c-achievement-prize--transparent\"\n }, [\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(_component_icon, {\n class: _normalizeClass([{ 'c-icon--white': _ctx.isCompleteCouponDark }, \"c-icon--xSmall\"]),\n icon: \"gift\"\n }, null, 8, [\"class\"])\n ]),\n _createElementVNode(\"div\", _hoisted_13, _toDisplayString(_ctx.achievement.value), 1)\n ])\n ]),\n _: 1\n }, 8, [\"onMouseenter\", \"onMouseleave\", \"show\", \"content\"]))\n : (_ctx.achievement.value && this.achievement.type !== 'coupon')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, [\n _createVNode(_component_icon, {\n class: _normalizeClass([{ 'c-icon--white': _ctx.isCompleteCouponDark }, \"c-icon--xSmall\"]),\n icon: \"gift\"\n }, null, 8, [\"class\"])\n ]),\n _createElementVNode(\"div\", _hoisted_16, _toDisplayString(_ctx.achievement.value), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.achievement.description)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, _toDisplayString(_ctx.$t(_ctx.achievement.description)), 1))\n : _createCommentVNode(\"\", true)\n ], 2))\n}","\nimport { Options, Vue } from 'vue-class-component';\n\nimport store from '@/store';\nimport { CouponValue, Review } from '@okendo/reviews-common';\nimport Icon from '@/shared-components/Icon.vue';\nimport { isMobile } from '@/utils/deviceUtils';\nimport { getRewardCurrencyPlural } from '@/utils/rewardUtils';\nimport { isDark } from '@/utils/recorderStyling';\nimport Tooltip from '@/shared-components/Tooltip.vue';\n\n@Options({\n components: {\n Icon,\n Tooltip\n }\n})\nexport default class AchievementHeader extends Vue {\n couponTooltipDuration = 3000;\n couponCopied = false;\n showCouponTooltip = false;\n displayCouponCopiedMessageTimeout: number | undefined;\n onCouponTooltipMouseleaveTimeout: number | undefined;\n couponTooltipCloseDelay = 200;\n\n get hidePartyPopper(): boolean {\n const { settings } = store.state.settings;\n return settings?.hidePartyPopper === true;\n }\n\n getAchievedValueText(value: number, valueType: CouponValue.ValueType): string {\n return valueType === 'fixed_amount'\n ? this.$t('{currencySymbol}{value} off', { currencySymbol: this.currencySymbol, value })\n : this.$t('{value}% off', { value });\n }\n\n get isReviewEnhancementPage(): boolean {\n return this.$route.name === 'Review Enhancement';\n }\n\n get areAchievementHeadersVisible(): boolean {\n const { isPreviouslyReviewed } = store.state.product;\n return !(isPreviouslyReviewed && this.isReviewEnhancementPage);\n }\n\n get currencySymbol(): string {\n return store.state.subscriber.currencySymbol;\n }\n\n get achievement(): Achievement {\n const { reward, previouslyAchievedReward } = store.state.reward;\n const defaultSubmitText = store.state.review.reviewEnhanced ? 'Review Updated!' : 'Review Submitted!';\n\n switch (reward?.type) {\n case 'points':\n return {\n ...reward,\n value: reward.description,\n description: reward.value === '1' ? 'Has been added to your account' : 'Have been added to your account',\n headings: [defaultSubmitText, this.$t(`You've Earned {points}!`, { points: this.getTitleCaseRewardCurrencyPlural() })]\n };\n case 'event':\n return {\n ...reward,\n value: undefined,\n description: undefined,\n headings: [defaultSubmitText],\n subheading: 'You may have qualified for a reward! Check the rewards program for more details'\n };\n case 'coupon':\n if (reward.isCouponUpgrade && previouslyAchievedReward) {\n return {\n ...reward,\n previouslyAchieved: previouslyAchievedReward,\n headings: ['Coupon Upgraded!'],\n subheading: 'Please find your unique coupon code below. It has also been emailed to you'\n };\n }\n return {\n ...reward,\n headings: [defaultSubmitText, `You've Earned a Coupon!`],\n subheading: 'Please find your unique coupon code below. It has also been emailed to you'\n };\n default:\n return {\n headings: [defaultSubmitText],\n subheading: 'Thanks for sharing your feedback with us!'\n };\n }\n }\n\n get isCompleteCouponDark(): boolean {\n return isDark(store.state.settings.settings.colors?.couponCompleteColor ?? '#0E7D81');\n }\n\n get isIncompleteCouponDark(): boolean {\n return isDark(store.state.settings.settings.colors?.couponIncompleteColor ?? '#E5E5EC');\n }\n\n getTitleCaseRewardCurrencyPlural(): string {\n const rewardCurrency = getRewardCurrencyPlural();\n return rewardCurrency.replace(/\\w\\S*/g, text => text.charAt(0).toUpperCase() + text.substr(1).toLowerCase());\n }\n\n async copyCouponToClipboard(): Promise {\n const text = this.achievement.value;\n\n if (this.achievement.type !== 'coupon' || !text) {\n return;\n }\n\n this.showCouponTooltip = true;\n\n if (!navigator.clipboard) {\n this.fallbackCopyCouponToClipboard(text);\n return;\n }\n\n try {\n await navigator.clipboard.writeText(text);\n this.displayCouponCopiedMessage();\n }\n catch {\n this.hideCouponCopiedMessage();\n }\n }\n\n fallbackCopyCouponToClipboard(text: string): void {\n const textarea = document.createElement('textarea');\n textarea.value = text;\n textarea.style.top = '0';\n textarea.style.left = '0';\n textarea.style.width = '0';\n textarea.style.height = '0';\n textarea.style.position = 'fixed';\n document.body.appendChild(textarea);\n textarea.focus();\n textarea.select();\n\n try {\n if (document.execCommand('copy')) {\n this.displayCouponCopiedMessage();\n }\n }\n catch {\n this.hideCouponCopiedMessage();\n }\n\n document.body.removeChild(textarea);\n }\n\n displayCouponCopiedMessage(): void {\n this.couponCopied = true;\n\n if (isMobile()) {\n clearTimeout(this.displayCouponCopiedMessageTimeout);\n this.displayCouponCopiedMessageTimeout = setTimeout(() => {\n this.onCouponTooltipMouseleave();\n }, this.couponTooltipDuration);\n }\n }\n\n hideCouponCopiedMessage(): void {\n this.couponCopied = false;\n }\n\n onCouponTooltipMouseenter(): void {\n this.showCouponTooltip = true;\n }\n\n onCouponTooltipMouseleave(): void {\n this.showCouponTooltip = false;\n clearTimeout(this.onCouponTooltipMouseleaveTimeout);\n this.onCouponTooltipMouseleaveTimeout = setTimeout(() => {\n this.hideCouponCopiedMessage();\n }, this.couponTooltipCloseDelay);\n }\n}\n\ninterface Achievement extends Partial {\n headings?: string[];\n subheading?: string;\n previouslyAchieved?: CouponValue;\n}\n","import { render } from \"./AchievementHeader.vue?vue&type=template&id=5fbbeb13&scoped=true&ts=true\"\nimport script from \"./AchievementHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./AchievementHeader.vue?vue&type=script&lang=ts\"\n\nimport \"./AchievementHeader.vue?vue&type=style&index=0&id=5fbbeb13&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\Octopus\\\\Applications\\\\Prod\\\\okendo.reviews-recorder-vue\\\\0.2.0.1570\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5fbbeb13\"]])\n\nexport default __exports__"],"sourceRoot":""}