{"version":3,"sources":["webpack:///Course/CoursePreviewNew/course_main.bundle.js","webpack:///webpack/bootstrap fdcae33949839c1e76f4","webpack:///./Course/CoursePreviewNew/course_main.js","webpack:///./Course/CourseNew/QuestionTypes.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","1231","__webpack_exports__","value","__WEBPACK_IMPORTED_MODULE_0__CourseNew_QuestionTypes__","_slicedToArray","sliceIterator","arr","_arr","_n","_d","_e","undefined","_s","_i","Symbol","iterator","next","done","push","length","err","Array","isArray","TypeError","closeCourseDialog","_$main","removeClass","detach","appendTo","$","parentItem","bindCourseStep","listSlide","window","course","ListSlide","_$step","find","_$slide_prev","_$slide_next","_$slide_finish","index","findIndex","x","SlideId","ActiveSlide","css","addClass","empty","off","entries","slide","_$gotoSlide","SlideName","click","displayActiveSlide","hasClass","console","log","markAsReadSlide","_$center","remove","Description","src","attr","indexOf","id","split","tempDom","video","outerHTML","append","UrlBackground","SlideContentList","youtubeId","_$wrapElement","_$qaElement","item","ContentTypeName","_$itemHtml","XAxis","YAxis","Width","Height","ContentText","frEditor","FroalaEditor","key","toolbarInline","charCounterCount","attribution","toolbarVisibleWithoutSelection","fontSizeDefaultSelection","fontSizeSelection","heightMax","height","events","html","set","edit","ContentData","getYoutubeId","includes","Shared","isValidUrl","ContentTex","RenderQuestion","Question","QuestionType","onDataChange","saveSubscribe","_saveSubscribe","getPDFId","zoom","_scale","changedVal","qa","e","CanMoveNext","moveStatus","YesNoAnswer","YesSecondary","updateChildren","NoSecondary","ScaleAverage","DisplaySecondaryCondition","ScaleSecondary","AllowMultiSelectOption","SelectedOptions","activeIndex","SelectedOptionNumber","displayed","update","url","regExp","match","startIndex","endIndex","substring","_csWidth","_csHeight","_$courseCenter","document","ready","keyup","keyCode","on","this","open","location","replace","showPreviewCourse","slideId","courseid","getQueryParam","StaticCourseId","currentCourseID","width","Math","min","ajax","data","type","success","assessmentInfor","ContactFirstName","ResponderFirstname","ContactLastName","ResponderLastname","Gender","ResponderGender","openDialogInfor","title","des","result","close","875","QuestionText","bindDisabled","self","element","props","disabled","answerArea","bindDisplayed","hide","show","bindValue","questionArea","getVocative","valueProp","activeItem","render","random","toString","substr","DomId","elementTemplate","CharactersLength","StyleColor","StyleFontSize","StyleFontFamily","elementDom","searchVal","lastTxt","searchTxt","target","setTimeout","preventEventIf","onChange","getProps","setProps","QuestionAttachment","style","display","convertByteSize","input","form","file","File","files","formData","FormData","ContactTemplateResponderDetailsID","text","size","val","URL","createObjectURL","FileName","AddData","save","preventDefault","stopPropagation","originalEvent","dataTransfer","trigger","tempLink","createElement","body","appendChild","href","QuestionAttachmentId","setAttribute","download","removeChild","revokeObjectURL","setBusy","contentType","processData","JBErrorCode","Error","gsAlert","dialog","dialogClass","message","btnok_text","btnclose_text","ID","QuestionNumber","prop","QuestionDate","datepicker","Date","parseInt","first","dateFormat","changeMonth","changeYear","yearRange","beforeShow","inst","dpDiv","formatDate","QuestionYesNo","each","_thisItem","secondary","QuestionOption","_content","parent","selectedOptions","Option1","Option2","Option3","Option4","Option5","_$lbl","_$chk","prev","otionValue","checked","checkSubActionData","CTRDsId","OptionValue","ResponderType","canNextQuestion","IsDirectRejection","MoveStatus","secondaryElement","closest","QuestionScale","elementWrap","ui","slider","HideNumberOptions","ScaleMinRange","ScaleMaxRange","range","max","step","stop","QuestionMood","QuestionImage","ImageW","ImageH","ImageId","saveCroppie","scaleCroppie","removeCroppie","actions","imagePanel","opts","viewport","boundary","enableExif","enableZoom","enableResize","croppieItem","croppie","img","Image","onload","canvas","ctx","getContext","iw","ih","scale","iwScaled","ihScaled","drawImage","thumb","quality","then","resp","toDataURL","alertify","QuestionVideo","videoRecord","Type","dataChangeCallBack","qaElement","nodeDom","AskAttachmentId","createDownloadSection","itemData","itemElement","attachment","AskAttachmentName","AskAttachmentSize","insertAfter","IsDownloadedAttachment","post","ContactTemplateResponderDetailsId","toFixed","str","_responder","_heshe","_HeShe","_hisher","_HisHer","_jobTitle","JobTitle","_jobLocation","JobLocation","toLowerCase","_extends","assign","arguments","source","_RenderQuestion"],"mappings":"CAAS,SAAUA,GCIjB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUE,OAGnC,IAAIC,GAASF,EAAiBD,IAC7BI,EAAGJ,EACHK,GAAG,EACHH,WAUD,OANAJ,GAAQE,GAAUM,KAAKH,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG/DI,EAAOE,GAAI,EAGJF,EAAOD,QAvBf,GAAID,KA4BJF,GAAoBQ,EAAIT,EAGxBC,EAAoBS,EAAIP,EAGxBF,EAAoBU,EAAI,SAASP,EAASQ,EAAMC,GAC3CZ,EAAoBa,EAAEV,EAASQ,IAClCG,OAAOC,eAAeZ,EAASQ,GAC9BK,cAAc,EACdC,YAAY,EACZC,IAAKN,KAMRZ,EAAoBmB,EAAI,SAASf,GAChC,GAAIQ,GAASR,GAAUA,EAAOgB,WAC7B,WAAwB,MAAOhB,GAAgB,SAC/C,WAA8B,MAAOA,GAEtC,OADAJ,GAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASQ,EAAQC,GAAY,MAAOR,QAAOS,UAAUC,eAAejB,KAAKc,EAAQC,IAGzGtB,EAAoByB,EAAI,GAGjBzB,EAAoBA,EAAoB0B,EAAI,QDM/CC,KACA,SAAUvB,EAAQwB,EAAqB5B,GAE7C,YACAc,QAAOC,eAAea,EAAqB,cAAgBC,OAAO,GAC7C,IAAIC,GAAyD9B,EAAoB,KAClG+B,EAAiB,WAAc,QAASC,GAAcC,EAAK5B,GAAK,GAAI6B,MAAeC,GAAK,EAAUC,GAAK,EAAWC,MAAKC,EAAW,KAAM,IAAK,GAAiCC,GAA7BC,EAAKP,EAAIQ,OAAOC,cAAmBP,GAAMI,EAAKC,EAAGG,QAAQC,QAAoBV,EAAKW,KAAKN,EAAGV,QAAYxB,GAAK6B,EAAKY,SAAWzC,GAA3D8B,GAAK,IAAoE,MAAOY,GAAOX,GAAK,EAAMC,EAAKU,EAAO,QAAU,KAAWZ,GAAMK,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIJ,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUD,EAAK5B,GAAK,GAAI2C,MAAMC,QAAQhB,GAAQ,MAAOA,EAAY,IAAIQ,OAAOC,WAAY5B,QAAOmB,GAAQ,MAAOD,GAAcC,EAAK5B,EAAa,MAAM,IAAI6C,WAAU,6DExEtlB,WAwGI,QAASC,KACLC,EAAOC,YAAY,UACnBD,EAAOE,SACPF,EAAOG,SAAS,QAEhBC,EAAE,QAAQH,YAAY,kBAGtBI,KAKJ,QAASC,KACL,GAAIC,GAAYC,OAAOC,OAAOC,UAE1BC,EAASX,EAAOY,KAAK,gBACrBC,EAAeb,EAAOY,KAAK,eAC3BE,EAAed,EAAOY,KAAK,eAC3BG,EAAiBf,EAAOY,KAAK,iBAC7BI,EAAQR,OAAOC,OAAOC,UAAUO,UAAU,SAAAC,GAAA,MAAKA,GAAEC,SAAWX,OAAOY,YAAYD,SAC/EH,IAASR,OAAOC,OAAOC,UAAUhB,OAAS,GAC1CoB,EAAaO,KAAM,QAAW,SAC9BN,EAAeM,KAAM,QAAW,WAGhCP,EAAaO,KAAM,QAAW,SAC9BN,EAAeM,KAAM,QAAW,UAGhCL,GAAS,EACTH,EAAaS,SAAS,iBAGtBT,EAAaZ,YAAY,iBAG7BU,EAAOY,QACPV,EAAaW,MACbV,EAAaU,KA1BS,4BA6BtB,YAA2B9D,OAAO+D,QAAQlB,GAA1C,+CAAsD,wBAA5CS,EAA4C,KAArCU,EAAqC,MA7BhC,SA6BLA,EAAPV,GACN,GAAIW,GAAcvB,EAAEA,sBAAqBsB,EAAMP,SAAWX,OAAOY,YAAYD,QAAU,WAAa,IAAlF,YAAgGO,EAAME,UAAtG,YAClBD,GAAYE,MAAM,WACdrB,OAAOY,YAAcZ,OAAOC,OAAOC,UAAUM,GAC7Cc,MAEJH,EAAYxB,SAASQ,IANRe,EAAPV,IA7BY,6EAuCjBH,EAAakB,SAAS,kBACvBlB,EAAagB,MAAM,WACf,GAAIb,GAAQR,OAAOC,OAAOC,UAAUO,UAAU,SAAAC,GAAA,MAAKA,GAAEC,SAAWX,OAAOY,YAAYD,SACnFa,SAAQC,IAAI,QAASjB,GAEjBA,EAAQ,GAAGA,IACfR,OAAOY,YAAcZ,OAAOC,OAAOC,UAAUM,GAC7Cc,MAKHhB,EAAaiB,SAAS,kBACvBjB,EAAae,MAAM,WAEf,GAAIb,GAAQR,OAAOC,OAAOC,UAAUO,UAAU,SAAAC,GAAA,MAAKA,GAAEC,SAAWX,OAAOY,YAAYD,SACnFa,SAAQC,IAAI,QAASjB,GAEjBA,EAAQR,OAAOC,OAAOC,UAAUhB,OAAS,GAAGsB,IAChDR,OAAOY,YAAcZ,OAAOC,OAAOC,UAAUM,GAC7Cc,MAMZ,QAASI,MAGT,QAASJ,KACLI,IACA9B,EAAE,kBAAkBiB,KAAM,QAAW,QACrC,IAAIc,GAAWnC,EAAOY,KAAK,iBAC3BuB,GAASZ,QACTnB,EAAE,mBAAmBgC,SACrB9B,GAEA,IAAIoB,GAAQlB,OAAOY,WAInB,IAHAY,QAAQC,IAAI,gBAAiBzB,OAAOY,aACpCpB,EAAOC,YAAY,gBAEfyB,EAAMW,aAAejC,EAAEsB,EAAMW,aAAazB,KAAK,aAAalB,OAAS,EAAG,CACxE,GAAI4C,GAAMlC,EAAEA,EAAEsB,EAAMW,aAAazB,KAAK,aAAa,IAAIA,KAAK,UAAU2B,KAAK,MAC3E,IAAID,EAAIE,QAAQ,MAAQ,EAAG,CACvB,GAAIC,GAAKH,EAAII,MAAM,KAAK,GAAGA,MAAM,UAAU,EAC3CJ,wGAA2GG,MAE1G,CACD,GAAIA,GAAKH,EAAII,MAAM,UAAU,EAC7BJ,wGAA2GG,EAG/G,GAAIE,GAAUvC,EAAEA,EAAEsB,EAAMW,aAAazB,KAAK,aAAa,IAAIA,KAAK,UAAU2B,KAAK,MAAOD,GAAKC,KAAK,QAAS,YAAYjB,SAAS,cAE1HsB,EAAQD,EAAQ,GAAGE,SACvBV,GAASW,OAAOF,GAChBT,EAASb,SAAS,oBAEbI,GAAMqB,eACXZ,EAASd,IAAI,mBAAb,QAAyCK,EAAMqB,cAA/C,MAGAZ,EAASd,IAAI,UAAW,SAGxBc,EAASd,IAAI,aAAc,OApCL,4BAuC1B,YAAiBK,EAAMsB,iBAAvB,+CAAyC,IA4C7BC,GAwCAC,EAMAC,EAQAD,EAMAC,EAxGHC,EAAgC,SAvCf,SAuCjBA,GAEL,GAA4B,QAAxBA,EAAKC,gBAA2B,CAChCrB,QAAQC,IAAI,qBACZ,IAAIQ,6CACAa,EAAalD,EAAEA,0CACIqC,EADN,yGAEYW,EAAKG,MAFjB,mDAGWH,EAAKI,MAHhB,qDAIaJ,EAAKK,MAJlB,sDAKcL,EAAKM,OALnB,0CAMGN,EAAKO,YANR,SAOjBL,GAAWnD,SAASgC,EAEpB,IAAIyB,GAAW,GAAIC,cAAJ,IAAqBpB,GAChCqB,IAAK,4EACLC,eAAe,EACfC,kBAAkB,EAClBC,aAAa,EACbC,gCAAgC,EAChCC,yBAA0B,KAC1BC,mBAAmB,EACnBC,UAAWjE,EAAEkD,GAAYgB,SACzBC,QACI,YAAe,WACXX,EAASY,KAAKC,IAAIrB,EAAKO,aACvBC,EAASc,KAAKlD,cAMzB,IAA4B,SAAxB4B,EAAKC,gBAA4B,CACtC,GAAIC,GAAalD,EAAEA,0IAEUgD,EAAKG,MAFjB,mDAGWH,EAAKI,MAHhB,qDAIaJ,EAAKK,MAJlB,sDAKcL,EAAKM,OALnB,sGAO4BN,EAAKuB,YAPjC,KAQjBrB,GAAWnD,SAASgC,OAEnB,IAA4B,SAAxBiB,EAAKC,gBAEV,GADIJ,EAAY2B,EAAaxB,EAAKO,aAC9BV,EAAU4B,SAAS,SAAU,CAC7B,GAAIvB,GAAalD,EAAEA,+MAEMgD,EAAKG,MAFb,mDAGOH,EAAKI,MAHZ,qDAISJ,EAAKK,MAJd,sDAKUL,EAAKM,OALf,gFAOET,EAPF,cAQjBK,GAAWnD,SAASgC,OAEnB,IAAI2C,OAAOC,WAAW3B,EAAK4B,YAAa,CACzC,GAAI1B,GAAalD,EAAEA,+MAEMgD,EAAKG,MAFb,mDAGOH,EAAKI,MAHZ,qDAISJ,EAAKK,MAJd,sDAKUL,EAAKM,OALf,gFAOEN,EAAK4B,WAPP,cAQjB1B,GAAWnD,SAASgC,OAEnB,CACD,GAAImB,GAAalD,EAAEA,kLAGUgD,EAAKG,MAHjB,uDAIWH,EAAKI,MAJhB,yDAKaJ,EAAKK,MALlB,0DAMcL,EAAKM,OANnB,+JASsCT,EATtC,2FAYjBK,GAAWnD,SAASgC,OAGK,yBAAxBiB,EAAKC,iBACNH,EAAgB9C,EAAEA,8FACOgD,EAAKG,MADd,mDAEQH,EAAKI,MAFb,qDAGUJ,EAAKK,MAHf,qDAKpBP,EAAc/C,SAASgC,GACnBgB,EAAc8B,YAAe7B,EAAK8B,SAASC,aAAc/B,EAAK8B,SAAU9B,EAAK8B,SAAUE,EAAcC,GACzGlC,EAAYhD,SAAS+C,GAErBC,EAAYvC,KAAK,kBAAkBS,IAAI,SAAU+B,EAAKM,OAASP,EAAYvC,KAAK,YAAY0D,WAG/D,wBAAxBlB,EAAKC,iBACVrB,QAAQC,IAAI,mCACRiB,EAAgB9C,EAAEA,8FACOgD,EAAKG,MADd,mDAEQH,EAAKI,MAFb,qDAGUJ,EAAKK,MAHf,qDAKpBP,EAAc/C,SAASgC,GACnBgB,EAAc8B,YAAe7B,EAAK8B,SAASC,aAAc/B,EAAK8B,SAAU9B,EAAK8B,SAAUE,EAAcE,GACzGnC,EAAYhD,SAAS+C,GAErBC,EAAYvC,KAAK,kBAAkBS,IAAI,SAAU+B,EAAKM,OAASP,EAAYvC,KAAK,YAAY0D,YAEtFlB,EAAKO,aAAe,IAAIkB,SAAS,eACvCzE,gLAE6BgD,EAAKG,MAFlC,mDAG4BH,EAAKI,MAHjC,qDAI8BJ,EAAKK,MAJnC,sDAK+BL,EAAKM,OALpC,yFAO4B6B,EAASnC,EAAKO,aAP1C,uFAQYxD,SAASgC,GAEQ,eAAxBiB,EAAKC,iBAA4D,iBAAxBD,EAAKC,gBACnDjD,gLAE6BgD,EAAKG,MAFlC,mDAG4BH,EAAKI,MAHjC,qDAI8BJ,EAAKK,MAJnC,sDAK+BL,EAAKM,OALpC,wGAO0CN,EAAKO,YAP/C,iFASYxD,SAASgC,GAEQ,gBAAxBiB,EAAKC,iBACVjD,yGAE6BgD,EAAKG,MAFlC,mDAG4BH,EAAKI,MAHjC,qDAI8BJ,EAAKK,MAJnC,sDAK+BL,EAAKM,OALpC,sDAORN,EAAKO,YAPG,8DAQgBP,EAAKO,YARrB,0DASWxD,SAASgC,IA9InBiB,IAvCiB,6EAwL1BjB,EAASd,KAAMmE,KAAS,IAAMC,EAAf,MAGnB,QAASL,GAAaM,EAAYC,EAAIC,EAAGC,EAAaC,GAElD9D,QAAQC,IAAI,mBAAoB0D,EAChC,IAAIvC,GAAOuC,CAEX,IAAyB,SAArBvC,EAAK+B,cAEoB,IAArB/B,EAAK2C,aACDnG,MAAMC,QAAQuD,EAAK4C,eAAeC,GAAe,EAAM7C,EAAK4C,cAC5DpG,MAAMC,QAAQuD,EAAK8C,cAAcD,GAAe,EAAO7C,EAAK8C,eAEtC,IAArB9C,EAAK2C,cACNnG,MAAMC,QAAQuD,EAAK4C,eAAeC,GAAe,EAAO7C,EAAK4C,cAC7DpG,MAAMC,QAAQuD,EAAK8C,cAAcD,GAAe,EAAM7C,EAAK8C,kBAIlE,IAAyB,SAArB9C,EAAK+B,aACN/B,EAAK+C,cAAgB/C,EAAKgD,0BACtBxG,MAAMC,QAAQuD,EAAKiD,iBAAiBJ,GAAe,EAAM7C,EAAKiD,gBAG9DzG,MAAMC,QAAQuD,EAAKiD,iBAAiBJ,GAAe,EAAO7C,EAAKiD,oBAGtE,IAAyB,UAArBjD,EAAK+B,aACV,GAAI/B,EAAKkD,uBACL,IAAK,GAAIrJ,GAAI,EAAGA,GAAK,GAAIA,KAChBmG,EAAKmD,iBAAmB,IAAI1B,SAAS5H,GAClC2C,MAAMC,QAAQuD,EAAKA,SAASnG,EAAd,eAA8BgJ,GAAe,EAAM7C,EAAKA,SAASnG,EAAd,cAGjE2C,MAAMC,QAAQuD,EAAKA,SAASnG,EAAd,eAA8BgJ,GAAe,EAAO7C,EAAKA,SAASnG,EAAd,kBAI7E,CACD,GAAIuJ,GAAcpD,EAAKqD,oBACvB,IAAmB,MAAfD,EACA,IAAK,GAAIvJ,GAAI,EAAGA,GAAK,GAAIA,IACjBuJ,GAAevJ,EACX2C,MAAMC,QAAQuD,EAAKA,SAASnG,EAAd,eAA8BgJ,GAAe,EAAM7C,EAAKA,SAASnG,EAAd,cAGjE2C,MAAMC,QAAQuD,EAAKA,SAASnG,EAAd,eAA8BgJ,GAAe,EAAO7C,EAAKA,SAASnG,EAAd,eAQ9F,QAASgJ,GAAeS,EAAW7H,GAAK,2BACpC,YAAiBA,EAAjB,+CAAsB,IAAbuE,GAAa,OAClBA,GAAKsD,UAAYA,EACjBtD,EAAKuD,UAH2B,8EAOxC,QAAS/B,GAAagC,GAClB,GAAIA,GAAMA,GAAO,GACbC,EAAS,+DACTC,EAAQF,EAAIE,MAAMD,EAEtB,OAAIC,IAA6B,KAApBA,EAAM,GAAGpH,OACX,iCAAmCoH,EAAM,GAAK,uBAE9CF,EAIf,QAASrB,GAASqB,GACd,GAAIA,EAAI/B,SAAS,OAAQ,CACrB,GAAIkC,GAAaH,EAAIpE,QAAQ,OAAS,EAClCwE,EAAWJ,EAAIpE,QAAQ,IAAKuE,EAChC,QAAiB,GAAbC,EACOJ,EAAIK,UAAUF,EAAYC,GAG1BJ,EAAIK,UAAUF,GAI7B,GAAIH,EAAI/B,SAAS,QAAS,CACtB,GAAIkC,GAAaH,EAAIpE,QAAQ,QAAU,EACnCwE,EAAWJ,EAAIpE,QAAQ,IAAKuE,EAChC,OAAOH,GAAIK,UAAUF,EAAYC,GAGrC,GAAIJ,EAAI/B,SAAS,OAAQ,CACrB,GAAIkC,GAAaH,EAAIpE,QAAQ,OAAS,EAClCwE,EAAWJ,EAAIpE,QAAQ,IAAKuE,EAChC,OAAOH,GAAIK,UAAUF,EAAYC,IA7czC,GAGIE,GACAC,EAGA1B,EAPAzF,EAAS,KACTK,KACAgF,KAMAC,KAEA8B,EAAiB,IACrBhH,GAAEiH,UAAUC,MAAM,WACdtH,EAASI,EAAE,gBACXgH,EAAiBpH,EAAOY,KAAK,kBAC7BR,EAAEiH,UAAUE,MAAM,SAAU3B,GACN,KAAdA,EAAE4B,SACFzH,MAIRK,EAAE,QAAQoB,IAAI,QAAS,6BAA6BiG,GAAG,QAAS,4BAA6B,WACrFrH,EAAEsH,MAAMnF,KAAK,UACb/B,OAAOmH,KAAKvH,EAAEsH,MAAMnF,KAAK,QAAS,UAGlC/B,OAAOoH,SAASC,QAAQzH,EAAEsH,MAAMnF,KAAK,aAOjD/B,OAAOsH,kBAAoB,SAAUC,GACjCvH,OAAOwH,SAAWlD,OAAOmD,cAAc,aAAenD,OAAOmD,cAAc,aAAezH,OAAO0H,gBAAkB1H,OAAO2H,gBAE3GnI,EAAOY,KAAK,kBAClBW,QAGTnB,EAAE,QAAQkB,SAAS,kBAEnBtB,EAAOE,SACPF,EAAOG,SAAS,QAChBH,EAAOsB,SAAS,UAEhB4F,EAAWlH,EAAOY,KAAK,yBAAyBwH,QAAU,OAC1DjB,EAAYnH,EAAOY,KAAK,yBAAyB0D,SAAW,OAE5DtC,QAAQC,IAAR,UAAsBiF,EAAtB,UAAwCC,EAAxC,OAGA1B,EAAS4C,KAAKC,IAAIpB,EAAW,IAAKC,EAAY,KAC9CC,EAAe/F,KAAM+G,MAAO,IAAK9D,OAAQ,MACzClE,EAAE,mBAAmBiB,KAAM+G,MAAO,MAElCpI,EAAOY,KAAK,iBAAiBY,MAAMK,MAAM,WACrC9B,MAGJC,EAAOY,KAAK,iBAAiBY,MAAMK,MAAM,WACrC9B,MAIJK,EAAEmI,MACE3B,IAAK,oBACL4B,MAAQR,mBACRS,KAAM,MACNC,QAAS,SAAUF,GAEfhI,OAAOC,OAAS+H,EAChBhI,OAAOmI,iBACHC,iBAAkBJ,EAAKK,mBACvBC,gBAAiBN,EAAKO,kBACtBC,OAAQR,EAAKS,iBAGbT,EAAK9H,WAAa8H,EAAK9H,UAAUhB,OAAS,GAEtCc,OAAOY,YADP2G,EACqBS,EAAK9H,UAAUE,KAAK,SAAAM,GAAA,MAAKA,GAAEC,SAAW4G,IAGtCS,EAAK9H,UAAU,GAExCoB,KAGAtB,OAAO0I,iBACHC,MAAO,eACPC,IAAK,uBACLV,QAAS,SAAUW,KAEnBC,MAAO,SAAUD,eF8bnCE,IACA,SAAUvM,EAAQwB,EAAqB5B,GAE7C,YG/hBA,SAAS4M,KAkFL,QAASC,KACe,MAAhBC,EAAKC,WAImB,IAAxBD,EAAKE,MAAMC,SACXH,EAAKI,WAAWvH,KAAK,mBAAmB,GAGxCmH,EAAKI,WAAWvH,KAAK,mBAAmB,IAGhD,QAASwH,KACe,MAAhBL,EAAKC,WAGoB,IAAzBD,EAAKE,MAAMlD,UACXgD,EAAKC,QAAQK,OAGbN,EAAKC,QAAQM,QAGrB,QAASC,KACe,MAAhBR,EAAKC,UAGTD,EAAKS,aAAa3F,KAAK4F,EAAYV,EAAKE,MAAL,WACnCF,EAAKI,WAAWtF,KAAKkF,EAAKE,MAAMF,EAAKE,MAAMS,aA7G/C,GAAIX,GAAOhC,IAwHX,OAvHAA,MAAKkC,OACDnB,KAAM,OACN4B,UAAW,aACXV,QAAS,KACTQ,aAAc,KACdzD,WAAW,EACXmD,UAAU,EACVS,WAAY,MAEhB5C,KAAK6C,OAAS,SAAUnH,EAAMwG,GAC1BF,EAAKtG,KAAOA,EACZsG,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,EACjC,IAAInH,GAAKA,OAAO4F,KAAKmC,SAASC,SAAS,IAAIC,OAAO,EAClDhB,GAAKjH,GAAKA,EACViH,EAAKtG,KAAKuH,MAAQlI,CAElB,IAAImI,0EAEmCnI,EAFnC,+EAIeiH,EAAKE,MAAMiB,iBAAX,gDAA8EnB,EAAKE,MAAMiB,iBAAzF,SAJf,+BAIgKpI,EAJhK,4DAIgOiH,EAAKE,MAAMkB,YAAc,WAJzP,eAIgRpB,EAAKE,MAAMmB,eAAiB,WAJ5S,gBAIqUrB,EAAKE,MAAMoB,gBAJhV,wEAOAC,EAAa7K,EAAEwK,EAEnBlB,GAAKC,QAAUsB,EACfvB,EAAKS,aAAec,EAAWrK,KAAX,oBAAoC6B,EAApC,KACpBiH,EAAKI,WAAamB,EAAWrK,KAAX,sBAAsC6B,EAAtC,KAElBiH,EAAKI,WAAWtB,KAAK,eAAgBkB,EAGrC,IAAIwB,GAAY,KACZC,EAAU,IAiCd,OAhCAzB,GAAKI,WAAWtI,IAAI,qCACfiG,GAAG,oCAAqC,SAAC7B,GACtC,GAAIwF,GAAYhL,EAAEwF,EAAEyF,QAAQ7G,MAC5B0G,GAAYI,WAAW,WACnB,GAAIF,GAAahL,EAAEwF,EAAEyF,QAAQ7G,QAAU4G,GAAaD,EAAS,CAEzD,GADAA,EAAUC,EACNG,EAAe3F,EAAG8D,EAAKE,MAAMC,UAC7B,MAEJ,IAAkC,kBAAvBH,GAAKE,MAAM4B,SAAwB,CAC1C,GAAI9F,GAAatF,EAAEwF,EAAEyF,QAAQ7G,MAC7BkF,GAAKE,MAAMF,EAAKE,MAAMS,WAAa3E,EACnCgE,EAAKtG,KAAKsG,EAAKE,MAAMS,WAAa3E,EAClCgE,EAAKE,MAAM4B,SAAS9F,EAAYgE,EAAKE,MAAOhE,MAGrD,OAKX6D,IAEAM,IAEAG,IAKAR,EAAKtG,KAAKuD,OAAS+C,EAAK/C,OAEjBsE,GAGXvD,KAAK+D,SAAW,WACZ,MAAO/B,GAAKE,OAGhBlC,KAAKgE,SAAW,SAAU9B,GACtBF,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,GACjCH,IACAM,IACAG,KAkCJxC,KAAKf,OAAS,WACV+C,EAAKE,MAAL,KAAkBF,EAAKE,MAAUF,EAAKtG,MACtCqG,IACAM,KAKGrC,KAGX,QAASiE,KA+LL,QAASlC,KACe,MAAhBC,EAAKC,WAImB,IAAxBD,EAAKE,MAAMC,UACXH,EAAKI,WAAW,GAAGD,UAAW,EAC9BH,EAAKI,WAAW,GAAG8B,MAAMC,QAAU,SAGnCnC,EAAKI,WAAW,GAAGD,UAAW,EAC9BH,EAAKI,WAAW,GAAG8B,MAAMC,QAAU,iBAG3C,QAAS9B,KACe,MAAhBL,EAAKC,WAGoB,IAAzBD,EAAKE,MAAMlD,UACXgD,EAAKC,QAAQK,OAGbN,EAAKC,QAAQM,QAGW,IAAxBP,EAAKE,MAAMC,SACXH,EAAKI,WAAW,GAAG8B,MAAMC,QAAU,OAGnCnC,EAAKI,WAAW,GAAG8B,MAAMC,QAAU,gBAG3C,QAAS3B,KACe,MAAhBR,EAAKC,SAGTD,EAAKS,aAAa3F,KAAK4F,EAAYV,EAAKE,MAAL,WAlOvC,GAAIF,GAAOhC,IA8OX,OA7OAA,MAAKkC,OACDnB,KAAM,aACN4B,UAAW,iBACXV,QAAS,KACTQ,aAAc,KACdzD,WAAW,EACXmD,UAAU,EACVS,WAAY,MAEhB5C,KAAK6C,OAAS,SAAUnH,EAAMwG,GAC1BF,EAAKtG,KAAOA,EACZsG,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,EACjC,IAAInH,GAAKA,OAAO4F,KAAKmC,SAASC,SAAS,IAAIC,OAAO,EAClDhB,GAAKjH,GAAKA,EACViH,EAAKtG,KAAKuH,MAAQlI,CAElB,IAAImI,0EAEmCnI,EAFnC,kBAEyDiH,EAAKE,MAAMkB,YAAc,WAFlF,eAEyGpB,EAAKE,MAAMmB,eAAiB,WAFrI,gBAE8JrB,EAAKE,MAAMoB,gBAFzK,8GAI8CvI,EAJ9C,gGAK8EA,EAL9E,8GAMoDA,EANpD,uGAOqDA,EAPrD,KAOiG,MAAtCiH,EAAKE,MAAL,qBAA6C,0BAA4B,IAPpI,KAO0IF,EAAKE,MAAL,wBAAwC,IAPlL,MAO0LkC,EAAgBpC,EAAKE,MAAL,wBAP1M,2EAQqDnH,EARrD,KAQiG,MAAtCiH,EAAKE,MAAL,qBAA6C,0BAA4B,IARpI,0FAYAqB,EAAa7K,EAAEwK,EA+GnB,OA7GAlB,GAAKC,QAAUsB,EACfvB,EAAKS,aAAec,EAAWrK,KAAX,oBAAoC6B,EAApC,KACpBiH,EAAKI,WAAamB,EAAWrK,KAAX,wBAAwC6B,EAAxC,KAClBiH,EAAKqC,MAAQd,EAAWrK,KAAX,kBAAkC6B,EAAlC,KACbiH,EAAKsC,KAAOf,EAAWrK,KAAX,2BAA2C6B,EAA3C,KACZiH,EAAKI,WAAWtB,KAAK,qBAAsBkB,GAG3CA,EAAKqC,MACAvK,IAAI,UACJiG,GAAG,SAAU,SAAU7B,GACpB,IAAI2F,EAAe3F,EAAG8D,EAAKE,MAAMC,WAGC,kBAAvBH,GAAKE,MAAM4B,SAAwB,CAC1C,GAAIO,GAAQrC,EAAKqC,MAEbE,EAAO,GAAIC,OAAMH,EAAM,GAAGI,MAAM,IAAKJ,EAAM,GAAGI,MAAM,GAAG5O,MACvD6O,EAAW,GAAIC,SACnBD,GAAStJ,OAAO,WAAYmJ,EAAK1O,MACjC6O,EAAStJ,OAAO,OAAQmJ,GACxBG,EAAStJ,OAAO,oCAAqC4G,EAAKE,MAAM0C,mCAChE5C,EAAKC,QAAQ/I,KAAb,yBAA2C6B,EAA3C,KAAkD8J,KAAQN,EAAK1O,KAA/D,MAAyEuO,EAAgBG,EAAKO,MAA9F,KAAwGvC,OACxGP,EAAKC,QAAQ/I,KAAb,yBAA2C6B,EAA3C,KAAkDwH,OAClD8B,EAAMU,IAAI,IAEV/C,EAAKgD,IAAMA,IAAIC,gBAAgBV,GAC/BvC,EAAKkD,SAAWX,EAAK1O,KAErBmM,EAAKE,MAAMF,EAAKE,MAAMS,WAAa4B,EAAK1O,KACxCmM,EAAKtG,KAAKsG,EAAKE,MAAMS,WAAa4B,EAAK1O,KAEvCmM,EAAKmD,QAAUT,EACf1C,EAAKoD,KAAKlH,MAItB8D,EAAKsC,KAAKvE,GAAG,2DAA4D,SAAU7B,GAC/EA,EAAEmH,iBACFnH,EAAEoH,oBAEDvF,GAAG,qBAAsB,WACtBiC,EAAKsC,KAAK1K,SAAS,iBAEtBmG,GAAG,yBAA0B,WAC1BiC,EAAKsC,KAAK/L,YAAY,iBAEzBwH,GAAG,OAAQ,SAAU7B,GAClB,GAAIqG,GAAOrG,EAAEqH,cAAcC,aAAaf,MAAM,GAC1CC,EAAW,GAAIC,SACnBD,GAAStJ,OAAO,WAAYmJ,EAAK1O,MACjC6O,EAAStJ,OAAO,OAAQmJ,GACxBG,EAAStJ,OAAO,oCAAqC4G,EAAKE,MAAM0C,mCAChE5C,EAAKC,QAAQ/I,KAAb,yBAA2C6B,EAA3C,KAAkD8J,KAAQN,EAAK1O,KAA/D,MAAyEuO,EAAgBG,EAAKO,MAA9F,KAAwGvC,OACxGP,EAAKC,QAAQ/I,KAAb,yBAA2C6B,EAA3C,KAAkDwH,OAElDP,EAAKgD,IAAMA,IAAIC,gBAAgBV,GAC/BvC,EAAKkD,SAAWX,EAAK1O,KAErBmM,EAAKE,MAAMF,EAAKE,MAAMS,WAAa4B,EAAK1O,KACxCmM,EAAKtG,KAAKsG,EAAKE,MAAMS,WAAa4B,EAAK1O,KAEvCmM,EAAKmD,QAAUT,EACf1C,EAAKoD,KAAKlH,KAGD8D,EAAKC,QAAQ/I,KAAb,wBAA0C6B,EAA1C,KACNjB,IAAI,oBAAoBiG,GAAG,mBAAoB,WACtDiC,EAAKqC,MAAMoB,QAAQ,WAERzD,EAAKC,QAAQ/I,KAAb,yBAA2C6B,EAA3C,KACNjB,IAAI,kBAAkBiG,GAAG,iBAAkB,WAEhD,GAAI2F,GAAW/F,SAASgG,cAAc,IACtChG,UAASiG,KAAKC,YAAYH,GAC1BA,EAASxB,MAAMC,QAAU,OACzBuB,EAASI,KAAO9D,EAAKgD,KAAL,0CAAuDhD,EAAKE,MAAM6D,qBAClFL,EAASM,aAAa,WAAYhE,EAAKkD,cAEN,KAAtBQ,EAASO,UAChBP,EAASM,aAAa,SAAU,UAKpCpC,WAAW,WACP8B,EAASvL,QACTwF,SAASiG,KAAKM,YAAYR,GAC1B5M,OAAOkM,IAAImB,gBAAgBT,EAASI,OAErC,OAMP/D,IAEAM,IAEAG,IAKAR,EAAKtG,KAAKuD,OAAS+C,EAAK/C,OAIjBsE,GAGXvD,KAAKoF,KAAO,SAAUlH,GAClBd,OAAOgJ,QAAQpE,EAAKsC,MAAM,GAC1B5L,EAAEmI,MACE3B,IAAK,yBACL6B,KAAM,OACND,KAAMkB,EAAKmD,QACXkB,aAAa,EACbC,aAAa,EACbtF,QAAS,SAAUF,GAEf,GADA1D,OAAOgJ,QAAQpE,EAAKsC,MAAM,GACtBxD,EAAKE,SAAWuF,YAAYC,MAa5B,WAZA1N,QAAO2N,QAAQC,QACX3F,KAAM,SACN4F,YAAa,aACblF,MAAO,wBACPC,IAAKZ,EAAK8F,QACVC,WAAY,KACZC,cAAe,SACf9F,QAAS,SAAUW,KAEnBC,MAAO,SAAUD,MAMzBK,GAAKE,MAAMF,EAAKE,MAAMS,WAAa7B,EAAKiG,GACxC/E,EAAKtG,KAAKsG,EAAKE,MAAMS,WAAa7B,EAAKiG,GACvC/E,EAAKE,MAAM4B,SAAS,KAAM9B,EAAKE,MAAOhE,OAQlD8B,KAAK+D,SAAW,WACZ,MAAO/B,GAAKE,OAGhBlC,KAAKgE,SAAW,SAAU9B,GACtBF,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,GACjCH,IACAM,IACAG,KA2CJxC,KAAKf,OAAS,WACV+C,EAAKE,MAAL,KAAkBF,EAAKE,MAAUF,EAAKtG,MACtCqG,IACAM,KAKGrC,KAGX,QAASgH,KA6EL,QAASjF,KACe,MAAhBC,EAAKC,WAImB,IAAxBD,EAAKE,MAAMC,SACXH,EAAKI,WAAW6E,KAAK,YAAY,GAGjCjF,EAAKI,WAAW6E,KAAK,YAAY,IAGzC,QAAS5E,KACe,MAAhBL,EAAKC,WAGoB,IAAzBD,EAAKE,MAAMlD,UACXgD,EAAKC,QAAQK,OAGbN,EAAKC,QAAQM,QAGrB,QAASC,KACe,MAAhBR,EAAKC,UAGTD,EAAKS,aAAa3F,KAAK4F,EAAYV,EAAKE,MAAL,WACnCF,EAAKI,WAAW2C,IAAI/C,EAAKE,MAAMF,EAAKE,MAAMS,aAxG9C,GAAIX,GAAOhC,IAmHX,OAlHAA,MAAKkC,OACDnB,KAAM,SACN4B,UAAW,eACXV,QAAS,KACTQ,aAAc,KACdzD,WAAW,EACXmD,UAAU,EACVS,WAAY,MAEhB5C,KAAK6C,OAAS,SAAUnH,EAAMwG,GAC1BF,EAAKtG,KAAOA,EACZsG,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,EACjC,IAAInH,GAAKA,OAAO4F,KAAKmC,SAASC,SAAS,IAAIC,OAAO,EAClDhB,GAAKjH,GAAKA,EACViH,EAAKtG,KAAKuH,MAAQlI,CAGlB,IAAImI,0EAEmCnI,EAFnC,kBAEyDiH,EAAKE,MAAMkB,YAAc,WAFlF,eAEyGpB,EAAKE,MAAMmB,eAAiB,WAFrI,gBAE8JrB,EAAKE,MAAMoB,gBAFzK,iNAKqDvI,EALrD,+FAQAwI,EAAa7K,EAAEwK,EAoCnB,OAlCAlB,GAAKC,QAAUsB,EACfvB,EAAKS,aAAec,EAAWrK,KAAX,oBAAoC6B,EAApC,KACpBiH,EAAKI,WAAamB,EAAWrK,KAAX,uBAAuC6B,EAAvC,KAElBiH,EAAKI,WAAWtB,KAAK,eAAgBkB,GAGrCA,EAAKI,WACAtI,IAAI,qCACJiG,GAAG,oCAAqC,SAAU7B,GAC/C,IAAI2F,EAAe3F,EAAG8D,EAAKE,MAAMC,WAGC,kBAAvBH,GAAKE,MAAM4B,SAAwB,CAC1C,GAAI9F,GAAauF,EAAWrK,KAAX,uBAAuC6B,EAAvC,KAA8CgK,KAC/D/C,GAAKE,MAAMF,EAAKE,MAAMS,WAAa3E,EACnCgE,EAAKtG,KAAKsG,EAAKE,MAAMS,WAAa3E,EAClCgE,EAAKE,MAAM4B,SAAS9F,EAAYgE,EAAKE,MAAOhE,MAMxD6D,IAEAM,IAEAG,IAKAR,EAAKtG,KAAKuD,OAAS+C,EAAK/C,OAEjBsE,GAGXvD,KAAK+D,SAAW,WACZ,MAAO/B,GAAKE,OAGhBlC,KAAKgE,SAAW,SAAU9B,GACtBF,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,GACjCH,IACAM,IACAG,KAkCJxC,KAAKf,OAAS,WACV+C,EAAKE,MAAL,KAAkBF,EAAKE,MAAUF,EAAKtG,MACtCqG,IACAM,KAKGrC,KAGX,QAASkH,KA4FL,QAASnF,KACe,MAAhBC,EAAKC,WAImB,IAAxBD,EAAKE,MAAMC,SACXH,EAAKI,WAAW6E,KAAK,YAAY,GAGjCjF,EAAKI,WAAW6E,KAAK,YAAY,IAGzC,QAAS5E,KACe,MAAhBL,EAAKC,WAGoB,IAAzBD,EAAKE,MAAMlD,UACXgD,EAAKC,QAAQK,OAGbN,EAAKC,QAAQM,QAGrB,QAASC,KACe,MAAhBR,EAAKC,UAGTD,EAAKS,aAAa3F,KAAK4F,EAAYV,EAAKE,MAAL,WACK,MAApCF,EAAKE,MAAMF,EAAKE,MAAMS,YACtBX,EAAKI,WAAW+E,WAAW,UAAW,GAAIC,MAAKC,SAASrF,EAAKE,MAAMF,EAAKE,MAAMS,WAAWxC,QAAQ,YAAa,QAxHtH,GAAI6B,GAAOhC,IAqIX,OApIAA,MAAKkC,OACDnB,KAAM,OACN4B,UAAW,aACXV,QAAS,KACTQ,aAAc,KACdzD,WAAW,EACXmD,UAAU,EACVS,WAAY,MAEhB5C,KAAK6C,OAAS,SAAUnH,EAAMwG,GAC1BF,EAAKtG,KAAOA,EACZsG,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,EACjC,IAAInH,GAAKA,KAAK4F,KAAKmC,SAASC,SAAS,IAAIC,OAAO,EAChDhB,GAAKjH,GAAKA,EACViH,EAAKtG,KAAKuH,MAAQlI,CAGlB,IAAImI,0EAEmCnI,EAFnC,kBAEyDiH,EAAKE,MAAMkB,YAAc,WAFlF,eAEyGpB,EAAKE,MAAMmB,eAAiB,WAFrI,gBAE8JrB,EAAKE,MAAMoB,gBAFzK,oTAOmDvI,EAPnD,kIAYAwI,EAAa7K,EAAEwK,EA+CnB,OA7CAlB,GAAKC,QAAUsB,EACfvB,EAAKS,aAAec,EAAWrK,KAAX,oBAAoC6B,EAApC,KACpBiH,EAAKI,WAAamB,EAAWrK,KAAX,qBAAqC6B,EAArC,KAA4CuM,QAC9DtF,EAAKI,WAAW+E,YACZI,WAAY,WACZC,aAAa,EACbC,YAAY,EACZC,UAAW,YACXC,WAAY,SAAUtD,EAAOuD,GACzBlP,EAAEkP,EAAKC,OAAOjO,SAAS,oBAG/BoI,EAAKI,WAAWtB,KAAK,eAAgBkB,GAGrCA,EAAKI,WACAtI,IAAI,qCACJiG,GAAG,oCAAqC,SAAU7B,GAC/C,IAAI2F,EAAe3F,EAAG8D,EAAKE,MAAMC,WAGC,kBAAvBH,GAAKE,MAAM4B,SAAwB,CAC1C,GAAI9F,GAAauF,EAAWrK,KAAX,qBAAqC6B,EAArC,KAA4CgK,KACvD/G,KACFA,EAAatF,EAAEyO,WAAWW,WAAW,WAAYvE,EAAWrK,KAAX,qBAAqC6B,EAArC,KAA4CoM,WAAW,aAE5GnF,EAAKE,MAAMF,EAAKE,MAAMS,WAAa3E,EACnCgE,EAAKtG,KAAKsG,EAAKE,MAAMS,WAAa3E,EAClCgE,EAAKE,MAAM4B,SAAS9F,EAAYgE,EAAKE,MAAOhE,MAMxD6D,IAEAM,IAEAG,IAKAR,EAAKtG,KAAKuD,OAAS+C,EAAK/C,OAEjBsE,GAGXvD,KAAK+D,SAAW,WACZ,MAAO/B,GAAKE,OAGhBlC,KAAKgE,SAAW,SAAU9B,GACtBF,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,GACjCH,IACAM,IACAG,KAqCJxC,KAAKf,OAAS,WACV+C,EAAKE,MAAL,KAAkBF,EAAKE,MAAUF,EAAKtG,MACtCqG,IACAM,KAKGrC,KAGX,QAAS+H,KAiGL,QAAShG,KACe,MAAhBC,EAAKC,WAImB,IAAxBD,EAAKE,MAAMC,SACXH,EAAKC,QAAQpH,KAAK,YAAY,GAG9BmH,EAAKC,QAAQpH,KAAK,YAAY,IAGtC,QAASwH,KACe,MAAhBL,EAAKC,WAGoB,IAAzBD,EAAKE,MAAMlD,UACXgD,EAAKC,QAAQK,OAGbN,EAAKC,QAAQM,QAGrB,QAASC,KACe,MAAhBR,EAAKC,UAGTD,EAAKS,aAAa3F,KAAK4F,EAAYV,EAAKE,MAAL,WACnCF,EAAKC,QAAQ/I,KAAb,2BAA6C8I,EAAKjH,GAAlD,KAAyDiN,KAAK,WAC1D,GAAIC,GAAYvP,EAAEsH,KACdiI,GAAUnH,KAAK,SAAWkB,EAAKE,MAAMF,EAAKE,MAAMS,WAChDsF,EAAUrO,SAAS,UAGnBqO,EAAU1P,YAAY,aAlIlC,GAAIyJ,GAAOhC,IA8IX,OA7IAA,MAAKkC,OACDnB,KAAM,QACN4B,UAAW,cACXV,QAAS,KACTjD,WAAW,EACXmD,UAAU,EACVS,WAAY,MAEhB5C,KAAK6C,OAAS,SAAUnH,EAAMwG,GAC1BF,EAAKtG,KAAOA,EAEZsG,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,EACjC,IAAInH,GAAKA,MAAM4F,KAAKmC,SAASC,SAAS,IAAIC,OAAO,EACjDhB,GAAKjH,GAAKA,EACViH,EAAKtG,KAAKuH,MAAQlI,CAGlB,IAAImI,GAAkBA,+FACyCnI,EAD3D,oFAE8DA,EAF9D,iKAI0EA,EAJ1E,kCAIgHiH,EAAKE,MAAMkB,YAAc,WAJzI,eAIgKpB,EAAKE,MAAMmB,eAAiB,WAJ5L,gBAIqNrB,EAAKE,MAAMoB,gBAJhO,oGAK0EvI,EAL1E,oCAKkHiH,EAAKE,MAAMkB,YAAc,WAL3I,eAKkKpB,EAAKE,MAAMmB,eAAiB,WAL9L,gBAKuNrB,EAAKE,MAAMoB,gBALlO,4JA6CJ,IAlCAtB,EAAKC,QAAUvJ,EAAEwK,GAEjBlB,EAAKS,aAAeT,EAAKC,QAAQ/I,KAAb,oBAAsC6B,EAAtC,KACpBiH,EAAKI,WAAaJ,EAAKC,QAAQ/I,KAAb,uBAAyC6B,EAAzC,KAClBiH,EAAKC,QAAQnB,KAAK,sBAAuBkB,GAIzCD,IAEAM,IAEAG,IAGAR,EAAKC,QAAQ/I,KAAb,2BAA6C6B,EAA7C,KAAoDjB,IAAI,SAASiG,GAAG,QAAS,SAAU7B,GACnF,IAAI2F,EAAe3F,EAAG8D,EAAKE,MAAMC,UAAjC,CAGAH,EAAKC,QAAQ/I,KAAb,2BAA6C6B,EAA7C,KAAoDxC,YAAY,SAEhE,IAAI0P,GAAYvP,EAAEsH,KAIlB,IAHAiI,EAAUrO,SAAS,UACnBU,QAAQC,IAAI0N,EAAUnH,KAAK,QAEO,kBAAvBkB,GAAKE,MAAM4B,SAAwB,CAC1C,GAAI9F,GAAaiK,EAAUnH,KAAK,MAChCkB,GAAKE,MAAMF,EAAKE,MAAMS,WAAa3E,EACnCgE,EAAKtG,KAAKsG,EAAKE,MAAMS,WAAa3E,EAClCgE,EAAKE,MAAM4B,SAAS9F,EAAYgE,EAAKE,MAAOhE,GAAG,EAAM,UAK9B,MAA3B8D,EAAKE,MAAM5D,aAAsB,4BACjC,YAAsB0D,EAAKE,MAAM5D,aAAjC,+CAA+C,IAAtC4J,GAAsC,OACpB3K,GAAe2K,EAAUzK,aAAcyK,EAAWlG,EAAKE,MAAMU,WAAYZ,EAAKE,MAAM4B,SAAU9B,EAAKrE,eACzGlF,SAASuJ,EAAKC,UAHF,8EAMrC,GAA8B,MAA1BD,EAAKE,MAAM1D,YAAqB,4BAChC,YAAsBwD,EAAKE,MAAM1D,YAAjC,+CAA8C,IAArC0J,GAAqC,OACnB3K,GAAe2K,EAAUzK,aAAcyK,EAAWlG,EAAKE,MAAMU,WAAYZ,EAAKE,MAAM4B,SAAU9B,EAAKrE,eACzGlF,SAASuJ,EAAKC,UAHH,8EAapC,MAHAD,GAAKtG,KAAKuD,OAAS+C,EAAK/C,OAGjB+C,EAAKC,SAGhBjC,KAAK+D,SAAW,WACZ,MAAO/B,GAAKE,OAGhBlC,KAAKgE,SAAW,SAAU9B,GACtBF,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,GACjCF,EAAKD,eACLC,EAAKK,gBACLL,EAAKQ,aA0CTxC,KAAKf,OAAS,WACV+C,EAAKE,MAAL,KAAkBF,EAAKE,MAAUF,EAAKtG,MACtCqG,IACAM,KAIGrC,KAGX,QAASmI,KAoLL,QAASpG,KACe,MAAhBC,EAAKC,WAImB,IAAxBD,EAAKE,MAAMC,SACXH,EAAKC,QAAQpH,KAAK,YAAY,GAG9BmH,EAAKC,QAAQpH,KAAK,YAAY,IAGtC,QAASwH,KACe,MAAhBL,EAAKC,WAGoB,IAAzBD,EAAKE,MAAMlD,UACXgD,EAAKC,QAAQK,OAGbN,EAAKC,QAAQM,OAIjBP,EAAKC,QAAQ/I,KAAb,2BAA6C8I,EAAKjH,IAAMiN,KAAK,SAAU1O,GACnE,GAAI2O,GAAYvP,EAAEsH,KACbgC,GAAKE,MAAM,UAAY5I,EAAQ,KAChC2O,EAAU3F,UAItB,QAASE,KACe,MAAhBR,EAAKC,UAGTD,EAAKS,aAAa3F,KAAK4F,EAAYV,EAAKE,MAAL,WAC/BF,EAAKE,MAAMtD,uBACXoD,EAAKC,QAAQ/I,KAAb,IAAsB8I,EAAKjH,GAA3B,2BAAwDiN,KAAK,SAAU1O,GACnE,GAAI2O,GAAYvP,EAAEsH,MACdoI,EAAWH,EAAUI,SAASnP,KAAK,YAAY4D,KAAK4F,EAAYV,EAAKE,MAAM,UAAY5I,EAAQ,OAC9F0I,EAAKE,MAAMrD,iBAAmB,IAAI1B,SAAS8K,EAAUlD,OACtDkD,EAAUpN,KAAK,WAAW,GAG1BoN,EAAUpN,KAAK,WAAW,GAG9BuN,EAASzO,KACL,MAASqI,EAAKE,MAAMkB,YAAc,UAClC,YAAapB,EAAKE,MAAMmB,eAAiB,UACzC,cAAerB,EAAKE,MAAMoB,iBAAmB,cAKrDtB,EAAKC,QAAQ/I,KAAb,IAAsB8I,EAAKjH,GAA3B,2BAAwDiN,KAAK,SAAU1O,GACnE,GAAI2O,GAAYvP,EAAEsH,MACdoI,EAAWH,EAAUI,SAASnP,KAAK,YAAY4D,KAAK4F,EAAYV,EAAKE,MAAM,UAAY5I,EAAQ,KAC/F2O,GAAUlD,OAAS/C,EAAKE,MAAMF,EAAKE,MAAMS,WACzCsF,EAAUpN,KAAK,WAAW,GAG1BoN,EAAUpN,KAAK,WAAW,GAG9BuN,EAASzO,KACL,MAASqI,EAAKE,MAAMkB,YAAc,UAClC,YAAapB,EAAKE,MAAMmB,eAAiB,UACzC,cAAerB,EAAKE,MAAMoB,iBAAmB,eAvP7D,GAAItB,GAAOhC,IAoQX,OAnQAA,MAAKkC,OACDnB,KAAM,SACN4B,UAAW,uBACX2F,gBAAiB,kBACjBrG,QAAS,KACTjD,WAAW,EACXmD,UAAU,EACVoG,QAAS,GACTC,QAAS,GACTC,QAAS,GACTC,QAAS,GACTC,QAAS,GACT/F,WAAY,MAEhB5C,KAAK6C,OAAS,SAAUnH,EAAMwG,GAC1BF,EAAKtG,KAAOA,EAEZsG,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,EAEjC,IACInH,IADUiH,EAAKE,MAAMF,EAAKE,MAAMS,WAC3B5H,OAAO4F,KAAKmC,SAASC,SAAS,IAAIC,OAAO,IAE9CE,yEAEmCnI,EAFnC,4DAGsCA,EAHtC,qGAKiDA,EALjD,mEAKoHA,EALpH,uCAK2JA,EAL3J,wGAMiDA,EANjD,oEAMqHA,EANrH,sCAM2JA,EAN3J,wGAOiDA,EAPjD,oEAOqHA,EAPrH,sCAO2JA,EAP3J,wGAQiDA,EARjD,oEAQqHA,EARrH,sCAQ2JA,EAR3J,wGASiDA,EATjD,oEASqHA,EATrH,sCAS2JA,EAT3J,wGAUiDA,EAVjD,oEAUqHA,EAVrH,sCAU2JA,EAV3J,wGAWiDA,EAXjD,oEAWqHA,EAXrH,sCAW2JA,EAX3J,wGAYiDA,EAZjD,oEAYqHA,EAZrH,sCAY2JA,EAZ3J,wGAaiDA,EAbjD,oEAaqHA,EAbrH,sCAa2JA,EAb3J,wGAciDA,EAdjD,qEAcsHA,EAdtH,qCAc2JA,EAd3J,oHAkBAwI,EAAa7K,EAAEwK,EAEnBlB,GAAKjH,GAAKA,EACViH,EAAKtG,KAAKuH,MAAQlI,EAElBiH,EAAKC,QAAUsB,EACfvB,EAAKS,aAAec,EAAWrK,KAAX,oBAAoC6B,EAApC,KACpBiH,EAAKI,WAAamB,EAAWrK,KAAX,uBAAuC6B,EAAvC,KAClBiH,EAAKC,QAAQnB,KAAK,iBAAkBkB,GAIpCD,IAEAM,IAEAG,IAGAe,EAAWrK,KAAX,IAAoB6B,EAApB,aAAmCiN,KAAK,WACpC,GAAIY,GAAQlQ,EAAEsH,KACd4I,GAAMjP,KACF,eAAgBqI,EAAKE,MAAMkB,YAAc,cAE7CwF,EAAM9O,IAAI,SAASiG,GAAG,QAAS,SAAU7B,GACrC,GAAI2K,GAAQD,EAAME,KAAK,0BAInBC,EAAa,EAEjB,KAAIlF,EAAe3F,EAAG8D,EAAKE,MAAMC,UAAjC,CAGA,GAAIH,EAAKE,MAAMtD,uBACXiK,EAAM,GAAGG,SAAU,MAElB,4BAGD,YAAiBzF,EAAWrK,KAAX,IAAoB6B,EAApB,+BAAqDA,EAArD,KAAjB,+CAA8E,SACrEiO,SAAU,GAJlB,6EAMDH,EAAM,GAAGG,SAAU,EAGvB,GAAkC,kBAAvBhH,GAAKE,MAAM4B,SAAwB,CAC1C,GAAI9F,GAAa6K,EAAM9D,KACnB/C,GAAKE,MAAMtD,wBACa,GAApBiK,EAAM,GAAGG,QACLhH,EAAKE,MAAMF,EAAKE,MAAMoG,kBACtBtG,EAAKE,MAAMF,EAAKE,MAAMoG,iBAAmBtG,EAAKE,MAAMF,EAAKE,MAAMoG,iBAAmB,IAAMtK,EACxFgE,EAAKtG,KAAKsG,EAAKE,MAAMoG,iBAAmBtG,EAAKtG,KAAKsG,EAAKE,MAAMoG,iBAAmB,IAAMtK,IAGtFgE,EAAKE,MAAMF,EAAKE,MAAMoG,iBAAmBtK,EACzCgE,EAAKtG,KAAKsG,EAAKE,MAAMoG,iBAAmBtK,IAI5CgE,EAAKE,MAAMF,EAAKE,MAAMoG,iBAAmBtG,EAAKE,MAAMF,EAAKE,MAAMoG,iBAAiBnI,QAAvC,IAAmDnC,EAAnD,IAAqEmC,QAArE,GAAgFnC,EAAhF,IACzCgE,EAAKtG,KAAKsG,EAAKE,MAAMoG,iBAAmBtG,EAAKtG,KAAKsG,EAAKE,MAAMoG,iBAAiBnI,QAAtC,IAAkDnC,EAAlD,IAAoEmC,QAApE,GAA+EnC,EAA/E,KAI5C+K,EAAa/G,EAAKtG,KAAKsG,EAAKE,MAAMoG,mBAIV,GAApBO,EAAM,GAAGG,SACThH,EAAKE,MAAMF,EAAKE,MAAMS,WAAa3E,EACnCgE,EAAKtG,KAAKsG,EAAKE,MAAMS,WAAa3E,IAGlCgE,EAAKE,MAAMF,EAAKE,MAAMS,WAAa,KACnCX,EAAKtG,KAAKsG,EAAKE,MAAMS,WAAa,MAItCoG,EAAa/G,EAAKtG,KAAKsG,EAAKE,MAAMS,WAItC,IAAIsG,IACAC,QAASlH,EAAKtG,KAAKkJ,kCAEnBuE,YAAaJ,EACbK,cAAe,SAEnB1Q,GAAEmI,MACEE,KAAM,OACN7B,IAAK,qCACL4B,KAAMmI,EAENjI,QAAS,SAAUF,GAEf,GADAxG,QAAQC,IAAIuG,GACsB,kBAAvBkB,GAAKE,MAAM4B,SAAwB,CAC1C,GAAIuF,IAAkB,CACSvI,GAAKwI,oBAChCD,GAAkB,GAEtBrH,EAAKE,MAAM4B,SAAS9F,EAAYgE,EAAKE,MAAOhE,EAAGmL,EAAiBvI,EAAKyI,qBAU7F,KAAK,GAAIhU,GAAI,EAAGA,GAAK,GAAIA,IACrB,GAAyC,MAArCyM,EAAKE,MAAL,SAAoB3M,EAApB,aAA2C,4BAC3C,YAAsByM,EAAKE,MAAL,SAAoB3M,EAApB,aAAtB,+CAAyD,IAAhD2S,GAAgD,QACjDsB,EAAmBjM,EAAe2K,EAAUzK,aAAcyK,EAAWlG,EAAKE,MAAMU,WAAYZ,EAAKE,MAAM4B,SAAU9B,EAAKrE,cAC1H6L,GAAiB/Q,SAAS8K,EAAWrK,KAAX,IAAoB6B,EAApB,IAA0BxF,GAAKkU,QAA/B,2BAAkE1O,GAAM7B,KAAK,cAHhE,8EAYnD,MADA8I,GAAKtG,KAAKuD,OAAS+C,EAAK/C,OACjBsE,GAGXvD,KAAK+D,SAAW,WACZ,MAAO/B,GAAKE,OAGhBlC,KAAKgE,SAAW,SAAU9B,GACtBF,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,GACjCH,IACAM,IACAG,KA6EJxC,KAAKf,OAAS,WACV+C,EAAKE,MAAL,KAAkBF,EAAKE,MAAUF,EAAKtG,MACtCqG,IACAM,KAIGrC,KAIX,QAAS0J,KA+FL,QAAS3H,KACmB,MAApBC,EAAK2H,eAImB,IAAxB3H,EAAKE,MAAMC,SAGXzJ,EAAEkR,GAAGC,QAAS1H,UAAU,GAAQH,EAAKI,YAKrC1J,EAAEkR,GAAGC,QAAS1H,UAAU,GAASH,EAAKI,aAK9C,QAASC,KACe,MAAhBL,EAAKC,WAGoB,IAAzBD,EAAKE,MAAMlD,UACXgD,EAAKC,QAAQK,OAGbN,EAAKC,QAAQM,QAGrB,QAASC,KAEe,MAAhBR,EAAKC,UAGTD,EAAKS,aAAa3F,KAAK4F,EAAYV,EAAKE,MAAL,WAC/BF,EAAKE,MAAL,cACAF,EAAKC,QAAQ/I,KAAK,qBAAqBoO,QAAQzC,KAAK7C,EAAKE,MAAL,eAlI5D,GAAIF,GAAOhC,IA6IX,OA5IAA,MAAKkC,OACDnB,KAAM,QACN4B,UAAW,eACXV,QAAS,KACTjD,WAAW,EACXmD,UAAU,EACVS,WAAY,MAEhB5C,KAAK6C,OAAS,SAAUnH,EAAMwG,GAC1BF,EAAKtG,KAAOA,EAEZsG,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,EACjC,IAAInH,GAAKA,OAAO4F,KAAKmC,SAASC,SAAS,IAAIC,OAAO,EAClDhB,GAAKjH,GAAKA,EACViH,EAAKtG,KAAKuH,MAAQlI,CAIlB,IAAI4O,GAAcjR,EAAEA,uCAAsCsJ,EAAKE,MAAM4H,kBAAoB,+BAAiC,IAAxG,oEACqC/O,EADrC,kBAC2DiH,EAAKE,MAAMkB,YAAc,WADpF,eAC2GpB,EAAKE,MAAMmB,eAAiB,WADvI,gBACgKrB,EAAKE,MAAMoB,gBAD3K,6EAEwCvI,EAFxC,4CAGmC,MAA5BiH,EAAKE,MAAM6H,eAAqD,MAA5B/H,EAAKE,MAAM8H,cAChE,+CACEhI,EAAKE,MAAM6H,cACX,6BACA/H,EAAKE,MAAM8H,cACX,eAAiB,IART,uCAiDlB,IArCAhI,EAAKC,QAAU0H,EACf3H,EAAKS,aAAekH,EAAYzQ,KAAZ,oBAAqC6B,EAArC,KACpBiH,EAAKI,WAAauH,EAAYzQ,KAAZ,uBAAwC6B,EAAxC,KAGlB4O,EAAY7I,KAAK,gBAAiBkB,GAGlCtJ,EAAEkR,GAAGC,QACDI,MAAO,MACPlT,MAAOiL,EAAKE,MAAMF,EAAKE,MAAMS,WAC7B/B,IAAKoB,EAAKE,MAAM6H,cAChBG,IAAKlI,EAAKE,MAAM8H,cAChBG,KAAM,EACNnQ,MAAO,SAAUkE,EAAG0L,GAChBD,EAAYzQ,KAAK,qBAAqBoO,QAAQzC,KAAK7C,EAAKE,MAAM4H,kBAAoB,GAAKF,EAAG7S,QAE9FqT,KAAM,SAAUlM,EAAG0L,GAEf,GAAI5L,GAAa4L,EAAG7S,KACpBiL,GAAKE,MAAMF,EAAKE,MAAMS,WAAa3E,EACnCgE,EAAKtG,KAAKsG,EAAKE,MAAMS,WAAa3E,EAElCgE,EAAKE,MAAM4B,SAAS9F,EAAYgE,EAAKE,MAAOhE,GAAG,EAAM,OAGzDiE,SAAUH,EAAKE,MAAMC,UACtBH,EAAKI,YAIRL,IAEAM,IAEAG,IAEiC,MAA7BR,EAAKE,MAAMvD,eAAwB,4BACnC,YAAsBqD,EAAKE,MAAMvD,eAAjC,+CAAiD,IAAxCuJ,GAAwC,OACtB3K,GAAe2K,EAAUzK,aAAcyK,EAAWlG,EAAKE,MAAMU,WAAYZ,EAAKE,MAAM4B,SAAU9B,EAAKrE,eACzGlF,SAASkR,IAHK,8EAYvC,MAFA3H,GAAKtG,KAAKuD,OAAS+C,EAAK/C,OAEjB0K,GAGX3J,KAAK+D,SAAW,WACZ,MAAO/B,GAAKE,OAGhBlC,KAAKgE,SAAW,SAAU9B,GACtBF,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,GACjCH,IACAM,IACAG,KA2CJxC,KAAKf,OAAS,WACV+C,EAAKE,MAAL,KAAkBF,EAAKE,MAAUF,EAAKtG,MACtCqG,IACAM,KAIGrC,KAGX,QAASqK,KA4FL,QAAStI,KACe,MAAhBC,EAAKC,UAImB,IAAxBD,EAAKE,MAAMC,UACXH,EAAKI,WAAWlJ,KAAhB,eAAoCY,MAI5C,QAASuI,KACe,MAAhBL,EAAKC,WAGoB,IAAzBD,EAAKE,MAAMlD,UACXgD,EAAKC,QAAQK,OAGbN,EAAKC,QAAQM,QAGrB,QAASC,KACe,MAAhBR,EAAKC,UAGTD,EAAKS,aAAa3F,KAAK4F,EAAYV,EAAKE,MAAL,WACnCF,EAAKI,WAAWlJ,KAAhB,wBAA6C8I,EAAKE,MAAMF,EAAKE,MAAMS,WAAnE,KAAkF/I,SAAS,WArH/F,GAAIoI,GAAOhC,IA8HX,OA7HAA,MAAKkC,OACDnB,KAAM,OACN4B,UAAW,uBACXV,QAAS,KACTQ,aAAc,KACdzD,WAAW,EACXmD,UAAU,EACVS,WAAY,MAEhB5C,KAAK6C,OAAS,SAAUnH,EAAMwG,GAC1BF,EAAKtG,KAAOA,EACZsG,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,EACjC,IAAInH,GAAKA,OAAO4F,KAAKmC,SAASC,SAAS,IAAIC,OAAO,EAClDhB,GAAKjH,GAAKA,EACViH,EAAKtG,KAAKuH,MAAQlI,CAElB,IAAImI,0EAEmCnI,EAFnC,0GAI2CA,EAJ3C,g7BAqBuBA,EArBvB,uDAwBAwI,EAAa7K,EAAEwK,EAoCnB,OAlCAlB,GAAKC,QAAUsB,EACfvB,EAAKS,aAAec,EAAWrK,KAAX,oBAAoC6B,EAApC,KACpBiH,EAAKI,WAAamB,EAAWrK,KAAX,qBAAqC6B,EAArC,KAElBiH,EAAKI,WAAWtB,KAAK,eAAgBkB,GAGrCA,EAAKI,WAAWlJ,KAAhB,eAAoCY,IAAI,SAASiG,GAAG,QAAS,SAAU7B,GAGnE,GAFA8D,EAAKI,WAAWlJ,KAAhB,eAAoCX,YAAY,UAChDG,EAAEsH,MAAMpG,SAAS,WACbiK,EAAe3F,EAAG8D,EAAKE,MAAMC,WAGC,kBAAvBH,GAAKE,MAAM4B,SAAwB,CAC1C,GAAI9F,GAAatF,EAAEsH,MAAMc,KAAK,MAC9BkB,GAAKE,MAAMF,EAAKE,MAAMS,WAAa3E,EACnCgE,EAAKtG,KAAKsG,EAAKE,MAAMS,WAAa3E,EAClCgE,EAAKE,MAAM4B,SAAS9F,EAAYgE,EAAKE,MAAOhE,MAMpD6D,IAEAM,IAEAG,IAKAR,EAAKtG,KAAKuD,OAAS+C,EAAK/C,OAEjBsE,GAGXvD,KAAK+D,SAAW,WACZ,MAAO/B,GAAKE,OAGhBlC,KAAKgE,SAAW,SAAU9B,GACtBF,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,GACjCH,IACAM,IACAG,KAgCJxC,KAAKf,OAAS,WACV+C,EAAKE,MAAL,KAAkBF,EAAKE,MAAUF,EAAKtG,MACtCqG,IACAM,KAGGrC,KAGX,QAASsK,KA+UL,QAASvI,KACe,MAAhBC,EAAKC,UAImB,IAAxBD,EAAKE,MAAMC,WACXH,EAAKC,QAAQ/I,KAAb,kBAAoCwB,SACpCsH,EAAKI,WAAWlJ,KAAhB,iBAAsCwB,SACtCsH,EAAKI,WAAWlJ,KAAhB,uBAA4CwB,UAGpD,QAAS2H,KACe,MAAhBL,EAAKC,WAGoB,IAAzBD,EAAKE,MAAMlD,UACXgD,EAAKC,QAAQK,OAGbN,EAAKC,QAAQM,QAGW,IAAxBP,EAAKE,MAAMC,SACXH,EAAKI,WAAW,GAAG8B,MAAMC,QAAU,OAGnCnC,EAAKI,WAAW,GAAG8B,MAAMC,QAAU,gBAG3C,QAAS3B,KACe,MAAhBR,EAAKC,SAGTD,EAAKS,aAAa3F,KAAK4F,EAAYV,EAAKE,MAAL,WA/WvC,GAAIF,GAAOhC,IA2XX,OA1XAA,MAAKkC,OACDnB,KAAM,QACN4B,UAAW,UACXV,QAAS,KACTQ,aAAc,KACdzD,WAAW,EACXmD,UAAU,EACVS,WAAY,KACZ2H,OAAQ,KACRC,OAAQ,MAEZxK,KAAK6C,OAAS,SAAUnH,EAAMwG,GAE1BF,EAAKtG,KAAOA,EACZsG,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,EACjC,IAAInH,GAAKA,OAAO4F,KAAKmC,SAASC,SAAS,IAAIC,OAAO,EAClDhB,GAAKjH,GAAKA,EACViH,EAAKtG,KAAKuH,MAAQlI,CAGlB,IAAImI,0EAEmCnI,EAFnC,kBAEyDiH,EAAKE,MAAMkB,YAAc,WAFlF,eAEyGpB,EAAKE,MAAMmB,eAAiB,WAFrI,gBAE8JrB,EAAKE,MAAMoB,gBAFzK,oEAG4CtB,EAAKE,MAAMuI,QAAU,GAAK,cAHtE,0DAIyC1P,EAJzC,oBAI8DiH,EAAKE,MAAMqI,OAAUvI,EAAKE,MAAMqI,OAAS,KAAQ,QAJ/G,eAImIvI,EAAKE,MAAMsI,OAAUxI,EAAKE,MAAMsI,OAAS,KAAQ,QAJpL,uFAKmEzP,EALnE,2GAMiDA,EANjD,4JAS+CA,EAT/C,mKAcgCiH,EAAKE,MAAMuI,QAAU,GAAK,cAd1D,cAcoF1P,EAdpF,6EAe6DA,EAf7D,iEAkBAwI,EAAa7K,EAAEwK,EAEnBlB,GAAKC,QAAUsB,EACfvB,EAAKS,aAAec,EAAWrK,KAAX,oBAAoC6B,EAApC,KACpBiH,EAAKI,WAAamB,EAAWrK,KAAX,0BAA0C6B,EAA1C,KAClBiH,EAAKqC,MAAQd,EAAWrK,KAAX,kBAAkC6B,EAAlC,KACbiH,EAAKsC,KAAOf,EAAWrK,KAAX,sBAAsC6B,EAAtC,KACZiH,EAAKI,WAAWtB,KAAK,gBAAiBkB,GAEtCA,EAAK0I,YAAcnH,EAAWrK,KAAX,6BAA6C6B,EAA7C,KACnBiH,EAAK2I,aAAepH,EAAWrK,KAAX,8BAA8C6B,EAA9C,KACpBiH,EAAK4I,cAAgBrH,EAAWrK,KAAX,+BAA+C6B,EAA/C,KAErBiH,EAAK6I,QAAUtH,EAAWrK,KAAX,2BAA2C6B,EAA3C,KAEfiH,EAAK8I,WAAavH,EAAWrK,KAAX,wBAAwC6B,EAAxC,IAElB,IAAIgQ,IACAC,UACItK,MAAOsB,EAAKE,MAAMqI,OAClB3N,OAAQoF,EAAKE,MAAMsI,QAEvBS,UACIvK,MAAOsB,EAAKE,MAAMqI,OAClB3N,OAAQoF,EAAKE,MAAMsI,QAEvBU,YAAY,EACZC,YAAY,EACZC,cAAc,EAuMlB,OApMKpJ,GAAKE,MAAMF,EAAKE,MAAMS,aACvBoI,EAAKE,UACDvK,MAAOsB,EAAKE,MAAMqI,OAClB3N,OAAQoF,EAAKE,MAAMsI,QAGvBO,EAAKI,YAAa,EAClBJ,EAAKK,cAAe,GAGxBpJ,EAAKqJ,YAAcrJ,EAAK8I,WAAWQ,QAAQP,GAEvC/I,EAAKE,MAAMF,EAAKE,MAAMS,YACtBX,EAAKqJ,YAAYC,QAAQ,QACrBpM,0BAA2B8C,EAAKE,MAAMF,EAAKE,MAAMS,WAAjD,YAAuE5H,EAAvE,MAMRiH,EAAKqC,MACAvK,IAAI,UACJiG,GAAG,SAAU,SAAU7B,GAEpB,GADAd,OAAOgJ,QAAQpE,EAAKsC,MAAM,IACtBT,EAAe3F,EAAG8D,EAAKE,MAAMC,WAGC,kBAAvBH,GAAKE,MAAM4B,SAAwB,CAC1C,GAAIO,GAAQrC,EAAKqC,MASbkH,EAAM,GAAIC,MAEdD,GAAIE,OAAS,WACT,GAAIC,GAAS/L,SAASgG,cAAc,UAChCgG,EAAMD,EAAOE,WAAW,MACxBC,EAAKN,EAAI7K,MACToL,EAAKP,EAAI3O,OACTmP,EAAQpL,KAAKC,IAAKoB,EAAKE,MAAMqI,OAASsB,EAAM7J,EAAKE,MAAMsI,OAASsB,GAChEE,EAAWH,EAAKE,EAChBE,EAAWH,EAAKC,CACpBL,GAAOhL,MAAQsL,EACfN,EAAO9O,OAASqP,EAChBN,EAAIO,UAAUX,EAAK,EAAG,EAAGS,EAAUC,EAEnC,IAAIE,GAAQ,GAAIX,MAChBW,GAAMV,OAAS,WAEXnR,QAAQC,IAAI,gBAGZyH,EAAKgD,IAAMmH,EAAMvR,IACjBoH,EAAKkD,SAAWb,EAAM,GAAGI,MAAM,GAAG5O,KAGlCmM,EAAKC,QAAQ/I,KAAK,aAAaX,YAAY,YAE3CyJ,EAAK8I,WAAWQ,QAAQ,WAExBtJ,EAAKqJ,YAAcrJ,EAAK8I,WAAWQ,SAC/BN,UACItK,MAAOsL,EACPpP,OAAQqP,GAEZhB,UACIvK,MAAOsL,EACPpP,OAAQqP,GAEZf,YAAY,EACZC,YAAY,IAGhBnJ,EAAK8I,WAAWQ,QAAQ,QACpBpM,IAAK8C,EAAKgD,MAGd1K,QAAQC,KAAMyR,WAAUC,aACxB3R,QAAQC,IAAI,oBAGZqJ,WAAW,WAGP5B,EAAKqJ,YAAYC,QAAQ,UACrBvK,KAAM,OACN+D,KAAM,WACNsH,QAAS,IACVC,KAAK,SAAUC,GACdhS,QAAQC,IAAI+R,EACZ,IAAI5H,GAAW,GAAIC,SACnBD,GAAStJ,OAAO,oCAAqC4G,EAAKE,MAAM0C,mCAChEF,EAAStJ,OAAO,OAAQkR,EAAM,kBAE9BtK,EAAKmD,QAAUT,EACf1C,EAAKoD,KAAKlH,MAKf,MAEPiO,EAAMvR,IAAM8Q,EAAOa,UAAU,YAAa,IAG9ChB,EAAI3Q,IAAMoK,IAAIC,gBAAgBZ,EAAM,GAAGI,MAAM,OAUxCzC,EAAKC,QAAQ/I,KAAb,0BAA4C6B,EAA5C,KACNjB,IAAI,oBAAoBiG,GAAG,mBAAoB,SAAC7B,GACvDA,EAAEmH,iBACFnH,EAAEoH,kBAEFtD,EAAKqC,MAAMoB,QAAQ,WAEvBzD,EAAK4I,cAAc9Q,IAAI,SAASiG,GAAG,QAAS,SAAU7B,GAClD8D,EAAKsC,KAAK1K,SAAS,YACfoI,EAAKqJ,cACLrJ,EAAK8I,WAAWQ,QAAQ,WACxBtJ,EAAKqJ,YAAcrJ,EAAK8I,WAAWQ,SAC/BN,UACItK,MAAOsB,EAAKE,MAAMqI,OAClB3N,OAAQoF,EAAKE,MAAMsI,QAEvBS,UACIvK,MAAOsB,EAAKE,MAAMqI,OAClB3N,OAAQoF,EAAKE,MAAMsI,QAEvBU,YAAY,EACZC,YAAY,IAGhBnJ,EAAK8I,WAAWQ,QAAQ,QACpBpM,IAAK8C,EAAKgD,SAMtBhD,EAAK0I,YAAY5Q,IAAI,SAASiG,GAAG,QAAS,SAAU7B,GAEhD5D,QAAQC,IAAI,oBAEZyH,EAAKqJ,YAAYC,QAAQ,UACrBvK,KAAM,OACN+D,MACIpE,MAAOsB,EAAKE,MAAMqI,OAClB3N,OAAQoF,EAAKE,MAAMsI,UAExB6B,KAAK,SAAUC,GACd,GAAI5H,GAAW,GAAIC,SACnBD,GAAStJ,OAAO,oCAAqC4G,EAAKE,MAAM0C,mCAChEF,EAAStJ,OAAO,OAAQkR,EAAM,mBAE9BtK,EAAKmD,QAAUT,EACf1C,EAAKoD,KAAKlH,OAUlB8D,EAAK2I,aAAa7Q,MAAMiG,GAAG,QAAS,cAMpCgC,IAEAM,IAEAG,IAKAR,EAAKtG,KAAKuD,OAAS+C,EAAK/C,OAIjBsE,GAGXvD,KAAKoF,KAAO,SAAUlH,GAClBd,OAAOgJ,QAAQpE,EAAKsC,MAAM,GAC1B5L,EAAEmI,MACE3B,IAAK,yBACL6B,KAAM,OACND,KAAMkB,EAAKmD,QACXkB,aAAa,EACbC,aAAa,EACbtF,QAAS,SAAUF,GAEf,GADA1D,OAAOgJ,QAAQpE,EAAKsC,MAAM,GACtBxD,EAAKE,SAAWuF,YAAYC,MAa5B,WAZA1N,QAAO2N,QAAQC,QACX3F,KAAM,SACN4F,YAAa,aACblF,MAAO,wBACPC,IAAKZ,EAAK8F,QACVC,WAAY,KACZC,cAAe,SACf9F,QAAS,SAAUW,KAEnBC,MAAO,SAAUD,MAOzB6K,UAASxL,QAAQ,2BAEjBgB,EAAKE,MAAMF,EAAKE,MAAMS,WAAa7B,EAAKiG,GACxC/E,EAAKtG,KAAKsG,EAAKE,MAAMS,WAAa7B,EAAKiG,GAGvC/E,EAAKtG,KAAL,OAAsBsG,EAAKE,MAAL,OACtBF,EAAKtG,KAAL,OAAsBsG,EAAKE,MAAL,OAKtBF,EAAKE,MAAM4B,SAAS,KAAM9B,EAAKE,MAAOhE,OAMlD8B,KAAK+D,SAAW,WAUZ,MAAO/B,GAAKE,OAGhBlC,KAAKgE,SAAW,SAAU9B,GACtBF,EAAKE,MAAL,KAAkBF,EAAKE,MAAUA,GACjCH,IACAM,IACAG,KAwCJxC,KAAKf,OAAS,WACV+C,EAAKE,MAAL,KAAkBF,EAAKE,MAAUF,EAAKtG,MACtCqG,IACAM,KAKGrC,KAIX,QAASyM,KAEL,GAAIvR,GAAQ,GAAIwR,YAEhB,OADA1M,MAAK6C,OAAS3H,EAAM2H,OACb7C,KAIX,QAASzC,GAAeoP,EAAMjR,EAAMkH,EAAYgK,EAAoBjP,EAAef,GAC/E,GAAIiQ,GAAY,IAChB,QAAQF,GACJ,IAAK,OACDE,EAAY,GAAI/K,EAChB,MACJ,KAAK,QACD+K,EAAY,GAAInD,EAChB,MACJ,KAAK,QACDmD,EAAY,GAAI9E,EAChB,MACJ,KAAK,SACD8E,EAAY,GAAI1E,EAChB,MACJ,KAAK,QACD0E,EAAY,GAAIJ,EAChB,MACJ,KAAK,OACDI,EAAY,GAAI3F,EAChB,MACJ,KAAK,SACD2F,EAAY,GAAI7F,EAChB,MACJ,KAAK,aACD6F,EAAY,GAAI5I,EAChB,MACJ,KAAK,OACD4I,EAAY,GAAIxC,EAChB,MACJ,KAAK,QACDwC,EAAY,GAAIvC,GAGxBuC,EAAUlP,cAAgBA,CAC1B,IAAImP,GAAUD,EAAUhK,OAAOnH,EAAjB,KAA4BA,GAAMoI,SAAU8I,EAAoBhQ,WAK9E,OAH4B,OAAxBlB,EAAKqR,iBACLC,EAAsBtR,EAAMoR,GAEzBA,EAIX,QAASE,GAAsBC,EAAUC,GACrC,GAAIC,GAAazU,EAAEA,mHACwCuU,EAASG,mBAAqB,IADxE,MACgFhJ,EAAgB6I,EAASI,mBADzG,0EAEsE,MAA5BJ,EAASF,gBAA0B,0BAA4B,IAFzG,0DAKjBI,GAAWG,YAAYJ,EAAYhU,KAAZ,oBAAqC+T,EAAShK,MAA9C,MACvBvK,qCAAqC4U,YAAYH,GAClCzU,EAAE,eAAgByU,GAAY5K,OACpCzI,IAAI,kBAAkBiG,GAAG,iBAAkB,WAChDkN,EAASM,wBAAyB,EAClC7U,EAAE8U,KAAK,sCAAwCC,kCAAmCR,EAASrI,mCAAqC,cAGhI9L,OAAOoH,SAAS4F,KAAhB,0CAAiEmH,EAASF,kBAIlF,QAAS3I,GAAgBU,GACrB,MAAIA,IAAQ,SACAA,EAAO,KAAO,MAAM4I,QAAQ,GAAK,MAGjC5I,EAAO,MAAM4I,QAAQ,GAAK,KAI1C,QAAS7J,GAAe3F,EAAGiE,GACvB,QAAIA,IACAjE,EAAEmH,iBACFnH,EAAEoH,mBACK,GAKf,QAAS5C,GAAYiL,GACjB,GAAIC,GAAa9U,OAAOmI,eAExB,IAAW,MAAP0M,GAA6B,MAAdC,EACf,MAAOD,EAEX,IAgBIE,GAAUD,EAAW1M,kBAAoB0M,EAAWxM,gBACpD0M,EAAUF,EAAW1M,kBAAoB0M,EAAWxM,gBACpD2M,GAAaH,EAAW1M,kBAAoB0M,EAAWxM,iBAAvD,KACA4M,GAAaJ,EAAW1M,kBAAoB0M,EAAWxM,iBAAvD,KAMA6M,EAAYL,EAAWM,SAAWN,EAAWM,SAAW,GACxDC,EAAeP,EAAWQ,YAAcR,EAAWQ,YAAc,EAmCrE,OAlCAT,GAAMA,EAAIxN,QAAQ,aAAcgO,GAC3BhO,QAAQ,oBAAqB8N,GAG9BN,EADAC,EAAWtM,QAA6C,MAAnCsM,EAAWtM,OAAO+M,cACjCV,EAAIxN,QAAQ,qBA/BZ,MAgCDA,QAAQ,qBA/BP,MAgCDA,QAAQ,sBA/BN,OAgCFA,QAAQ,sBA/BN,OAgCFA,QAAQ,sBA/BN,OAgCFA,QAAQ,sBA/BN,OAgCFA,QAAQ,8BA/BF,WAgCNA,QAAQ,8BA/BF,WAiCJyN,EAAWtM,QAA6C,MAAnCsM,EAAWtM,OAAO+M,cACxCV,EAAIxN,QAAQ,qBAhCX,OAiCFA,QAAQ,qBAhCN,OAiCFA,QAAQ,sBAhCN,OAiCFA,QAAQ,sBAhCN,OAiCFA,QAAQ,sBAlCN,OAmCFA,QAAQ,sBAlCN,OAmCFA,QAAQ,8BAlCF,WAmCNA,QAAQ,8BAlCF,WAqCLwN,EAAIxN,QAAQ,qBAAsB0N,GACnC1N,QAAQ,qBAAsB2N,GAC9B3N,QAAQ,sBAAuB4N,GAC/B5N,QAAQ,sBAAuB6N,GAC/B7N,QAAQ,sBAnCH,QAoCLA,QAAQ,sBAnCH,QAoCLA,QAAQ,8BAnCC,YAoCTA,QAAQ,8BAnCC,YAsCXwN,EAAIxN,QAAQ,0BAA2ByN,EAAW1M,kBAAkBf,QAAQ,yBAA0ByN,EAAWxM,iBHvxC7FlM,EAAoBU,EAAEkB,EAAqB,IAAK,WAAa,MAAOyG,IAEnG,IAAI+Q,GAAWtY,OAAOuY,QAAU,SAAU5K,GAAU,IAAK,GAAIpO,GAAI,EAAGA,EAAIiZ,UAAUxW,OAAQzC,IAAK,CAAE,GAAIkZ,GAASD,UAAUjZ,EAAI,KAAK,GAAI6G,KAAOqS,GAAczY,OAAOS,UAAUC,eAAejB,KAAKgZ,EAAQrS,KAAQuH,EAAOvH,GAAOqS,EAAOrS,IAAY,MAAOuH,GGyxCvP7K,QAAO4V,gBAAkBnR","file":"Course/CoursePreviewNew/course_main.bundle.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1231);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 1231:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__CourseNew_QuestionTypes__ = __webpack_require__(875);\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\n(function () {\n ////courseid\n ////ActiveSlide\n var _$main = null;\n var parentItem = [];\n var saveSubscribe = [];\n var _csWidth;\n var _csHeight;\n\n var _scale;\n var _saveSubscribe = [];\n\n var _$courseCenter = null;\n $(document).ready(function () {\n _$main = $(\"#course_main\");\n _$courseCenter = _$main.find(\".course_center\");\n $(document).keyup(function (e) {\n if (e.keyCode === 27) {\n closeCourseDialog(); // esc\n }\n });\n\n $(\"body\").off(\"click\", \"#course_main .item-text a\").on(\"click\", \"#course_main .item-text a\", function () {\n if ($(this).attr(\"target\")) {\n window.open($(this).attr(\"href\"), '_blank');\n } else {\n window.location.replace($(this).attr(\"href\"));\n }\n });\n });\n\n window.showPreviewCourse = function (slideId) {\n window.courseid = Shared.getQueryParam(\"CourseId\") || Shared.getQueryParam(\"courseID\") || window.StaticCourseId || window.currentCourseID;\n\n var _$center = _$main.find(\".course_center\");\n _$center.empty();\n\n //element = $(\"#employerdetails_coursedetails\");\n $(\"body\").addClass(\"preview-course\");\n\n _$main.detach();\n _$main.appendTo(\"body\");\n _$main.addClass(\"active\");\n\n _csWidth = _$main.find(\".course_slide_details\").width() - 33.333;\n _csHeight = _$main.find(\".course_slide_details\").height() - 33.333;\n\n console.log(\"{CS w: \" + _csWidth + \"px , h:\" + _csHeight + \"px}\");\n\n _scale = Math.min(_csWidth / 900, _csHeight / 675);\n _$courseCenter.css({ width: 900, height: 675 });\n $(\".review-section\").css({ width: 900 });\n\n _$main.find(\".course_close\").off().click(function () {\n closeCourseDialog();\n });\n\n _$main.find(\".slide_finish\").off().click(function () {\n closeCourseDialog();\n });\n\n $.ajax({\n url: '/Course/GetCourse',\n data: { courseid: courseid },\n type: 'GET',\n success: function success(data) {\n\n window.course = data;\n window.assessmentInfor = {\n ContactFirstName: data.ResponderFirstname,\n ContactLastName: data.ResponderLastname,\n Gender: data.ResponderGender\n };\n\n if (data.ListSlide && data.ListSlide.length > 0) {\n if (slideId) {\n window.ActiveSlide = data.ListSlide.find(function (x) {\n return x.SlideId == slideId;\n });\n } else {\n window.ActiveSlide = data.ListSlide[0];\n }\n displayActiveSlide();\n } else {\n window.openDialogInfor({\n title: \"Empty course\",\n des: \"This course is empty\",\n success: function success(result) {},\n close: function close(result) {}\n });\n }\n }\n });\n };\n\n function closeCourseDialog() {\n _$main.removeClass(\"active\");\n _$main.detach();\n _$main.appendTo(\"body\");\n\n $(\"body\").removeClass(\"preview-course\");\n\n //reload list\n parentItem = [];\n //course.loadList();\n }\n\n function bindCourseStep() {\n var listSlide = window.course.ListSlide;\n\n var _$step = _$main.find(\".course_step\");\n var _$slide_prev = _$main.find(\".slide_prev\");\n var _$slide_next = _$main.find(\".slide_next\");\n var _$slide_finish = _$main.find(\".slide_finish\");\n var index = window.course.ListSlide.findIndex(function (x) {\n return x.SlideId == window.ActiveSlide.SlideId;\n });\n if (index >= window.course.ListSlide.length - 1) {\n _$slide_next.css({ \"display\": \"none\" });\n _$slide_finish.css({ \"display\": \"flex\" });\n } else {\n _$slide_next.css({ \"display\": \"flex\" });\n _$slide_finish.css({ \"display\": \"none\" });\n }\n\n if (index <= 0) {\n _$slide_prev.addClass(\"btn__disabled\");\n } else {\n _$slide_prev.removeClass(\"btn__disabled\");\n }\n\n _$step.empty();\n _$slide_prev.off();\n _$slide_next.off();\n\n //bind slide step\n\n var _loop = function _loop(slide, _index) {\n var _$gotoSlide = $(\"\");\n _$gotoSlide.click(function () {\n window.ActiveSlide = window.course.ListSlide[_index];\n displayActiveSlide();\n });\n _$gotoSlide.appendTo(_$step);\n };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = Object.entries(listSlide)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ref = _step.value;\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n var _index = _ref2[0];\n var slide = _ref2[1];\n\n _loop(slide, _index);\n }\n\n //bind prev\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (!_$slide_prev.hasClass(\"btn__disabled\")) {\n _$slide_prev.click(function () {\n var index = window.course.ListSlide.findIndex(function (x) {\n return x.SlideId == window.ActiveSlide.SlideId;\n });\n console.log(\"index\", index);\n\n if (index > 0) index--;\n window.ActiveSlide = window.course.ListSlide[index];\n displayActiveSlide();\n });\n }\n\n //bind next\n if (!_$slide_next.hasClass(\"btn__disabled\")) {\n _$slide_next.click(function () {\n //saveCurrentQuestion();\n var index = window.course.ListSlide.findIndex(function (x) {\n return x.SlideId == window.ActiveSlide.SlideId;\n });\n console.log(\"index\", index);\n\n if (index < window.course.ListSlide.length - 1) index++;\n window.ActiveSlide = window.course.ListSlide[index];\n displayActiveSlide();\n });\n }\n }\n\n function markAsReadSlide() {}\n\n function displayActiveSlide() {\n markAsReadSlide();\n $(\".course_bottom\").css({ \"display\": \"flex\" });\n var _$center = _$main.find(\".course_center\");\n _$center.empty();\n $(\".review-section\").remove();\n bindCourseStep();\n\n var slide = window.ActiveSlide;\n console.log(\"Display Slide\", window.ActiveSlide);\n _$main.removeClass(\"has_video_bg\");\n //display backgroud\n if (slide.Description && $(slide.Description).find(\".fr-video\").length > 0) {\n var src = $($(slide.Description).find(\".fr-video\")[0]).find(\"iframe\").attr(\"src\");\n if (src.indexOf(\"?\") > -1) {\n var id = src.split(\"?\")[0].split(\"embed/\")[1];\n src += \"&autoplay=1&controls=0&disablekb=1&loop=1&rel=0&showinfo=0&color=white&iv_load_policy=3&playlist=\" + id;\n } else {\n var id = src.split(\"embed/\")[1];\n src += \"?autoplay=1&controls=0&disablekb=1&loop=1&rel=0&showinfo=0&color=white&iv_load_policy=3&playlist=\" + id;\n }\n\n var tempDom = $($(slide.Description).find(\".fr-video\")[0]).find(\"iframe\").attr(\"src\", src).attr(\"allow\", \"autoplay\").addClass(\"ytb-iframe\");\n\n var video = tempDom[0].outerHTML;\n _$center.append(video);\n _$center.addClass(\"has_video_bg\");\n } else if (slide.UrlBackground) {\n _$center.css(\"background-image\", \"url('\" + slide.UrlBackground + \"')\");\n //_$center.css(\"background-repeat\", \"no-repeat\");\n //_$center.css(\"background-size\", \"100%\");\n _$center.css(\"opacity\", \"0.99\");\n } else {\n _$center.css(\"background\", \"#fff\");\n }\n\n var _loop2 = function _loop2(item) {\n ////display text///\n if (item.ContentTypeName == \"Text\") {\n console.log(\"Froala editor init\");\n var _id = \"information-panel-item[data-froala='1']\";\n var _$itemHtml = $(\"\\n
\" + item.ContentText + \"
\");\n _$itemHtml.appendTo(_$center);\n\n var frEditor = new FroalaEditor(\"#\" + _id, {\n key: '6LF5g1D4C3I3C5B3E4F-11SLJCKHXOSLMc1YGSGb1ZXHSe1CgB5A4D4A3E3C2A10A19B6B2==',\n toolbarInline: true,\n charCounterCount: false,\n attribution: false,\n toolbarVisibleWithoutSelection: true,\n fontSizeDefaultSelection: '24',\n fontSizeSelection: true,\n heightMax: $(_$itemHtml).height(),\n events: {\n 'initialized': function initialized() {\n frEditor.html.set(item.ContentText);\n frEditor.edit.off();\n }\n\n }\n });\n } else if (item.ContentTypeName == \"Image\") {\n var _$itemHtml2 = $(\"\\n \");\n _$itemHtml2.appendTo(_$center);\n } else if (item.ContentTypeName == \"Video\") {\n youtubeId = getYoutubeId(item.ContentText);\n\n if (youtubeId.includes(\"youtu\")) {\n var _$itemHtml3 = $(\"\\n \");\n _$itemHtml3.appendTo(_$center);\n } else if (Shared.isValidUrl(item.ContentTex)) {\n var _$itemHtml4 = $(\"\\n \");\n _$itemHtml4.appendTo(_$center);\n } else {\n var _$itemHtml5 = $(\"\\n \\n \");\n _$itemHtml5.appendTo(_$center);\n }\n } else if (item.ContentTypeName == \"Interactive Responder\") {\n _$wrapElement = $(\"
\");\n\n _$wrapElement.appendTo(_$center);\n _$qaElement = Object(__WEBPACK_IMPORTED_MODULE_0__CourseNew_QuestionTypes__[\"a\" /* RenderQuestion */])(item.Question.QuestionType, item.Question, item.Question, onDataChange, saveSubscribe);\n\n _$qaElement.appendTo(_$wrapElement);\n\n _$qaElement.find(\".preview_video\").css(\"height\", item.Height - _$qaElement.find(\".qa-area\").height());\n }\n //this is list question\n else if (item.ContentTypeName == \"Interactive Reviewer\") {\n console.log(\"____________review_____________\");\n _$wrapElement = $(\"
\");\n\n _$wrapElement.appendTo(_$center);\n _$qaElement = Object(__WEBPACK_IMPORTED_MODULE_0__CourseNew_QuestionTypes__[\"a\" /* RenderQuestion */])(item.Question.QuestionType, item.Question, item.Question, onDataChange, _saveSubscribe);\n\n _$qaElement.appendTo(_$wrapElement);\n\n _$qaElement.find(\".preview_video\").css(\"height\", item.Height - _$qaElement.find(\".qa-area\").height());\n } else if ((item.ContentText || \"\").includes(\"google.com/\")) {\n $(\"\").appendTo(_$center);\n } else if (item.ContentTypeName == \"Power point\" || item.ContentTypeName == \"Word Document\") {\n $(\"\").appendTo(_$center);\n } else if (item.ContentTypeName == \"Pdf document\") {\n $(\"\\n \\n \").appendTo(_$center);\n }\n };\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = slide.SlideContentList[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var item = _step2.value;\n var youtubeId;\n\n var _$wrapElement;\n\n var _$qaElement;\n\n var _$wrapElement;\n\n var _$qaElement;\n\n _loop2(item);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n _$center.css({ zoom: 100 * _scale + \"%\" });\n }\n\n function onDataChange(changedVal, qa, e, CanMoveNext, moveStatus) {\n\n console.log('item changed!!! ', qa);\n var item = qa;\n\n if (item.QuestionType == \"YesNo\") {\n\n if (item.YesNoAnswer === true) {\n if (Array.isArray(item.YesSecondary)) updateChildren(true, item.YesSecondary);\n if (Array.isArray(item.NoSecondary)) updateChildren(false, item.NoSecondary);\n } else if (item.YesNoAnswer === false) {\n if (Array.isArray(item.YesSecondary)) updateChildren(false, item.YesSecondary);\n if (Array.isArray(item.NoSecondary)) updateChildren(true, item.NoSecondary);\n }\n } else if (item.QuestionType == \"Scale\") {\n //for Scale\n if (item.ScaleAverage >= item.DisplaySecondaryCondition) {\n if (Array.isArray(item.ScaleSecondary)) updateChildren(true, item.ScaleSecondary);\n } else {\n if (Array.isArray(item.ScaleSecondary)) updateChildren(false, item.ScaleSecondary);\n }\n } else if (item.QuestionType == \"Option\") {\n //for Option\n if (item.AllowMultiSelectOption) {\n for (var i = 1; i <= 20; i++) {\n if ((item.SelectedOptions || \"\").includes(i)) {\n if (Array.isArray(item[\"Option\" + i + \"Secondary\"])) updateChildren(true, item[\"Option\" + i + \"Secondary\"]);\n } else {\n if (Array.isArray(item[\"Option\" + i + \"Secondary\"])) updateChildren(false, item[\"Option\" + i + \"Secondary\"]);\n }\n }\n } else {\n var activeIndex = item.SelectedOptionNumber;\n if (activeIndex != null) {\n for (var _i = 1; _i <= 20; _i++) {\n if (activeIndex == _i) {\n if (Array.isArray(item[\"Option\" + _i + \"Secondary\"])) updateChildren(true, item[\"Option\" + _i + \"Secondary\"]);\n } else {\n if (Array.isArray(item[\"Option\" + _i + \"Secondary\"])) updateChildren(false, item[\"Option\" + _i + \"Secondary\"]);\n }\n }\n }\n }\n }\n }\n\n function updateChildren(displayed, arr) {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = arr[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var item = _step3.value;\n\n item.displayed = displayed;\n item.update();\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n\n function getYoutubeId(url) {\n var url = url || \"\";\n var regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n var match = url.match(regExp);\n\n if (match && match[2].length === 11) {\n return \"https://www.youtube.com/embed/\" + match[2] + \"?rel=0&enablejsapi=1\";\n } else {\n return url;\n }\n }\n\n function getPDFId(url) {\n if (url.includes(\"id=\")) {\n var startIndex = url.indexOf(\"id=\") + 3;\n var endIndex = url.indexOf(\"/\", startIndex);\n if (endIndex != -1) {\n return url.substring(startIndex, endIndex);\n } else {\n return url.substring(startIndex);\n }\n }\n\n if (url.includes(\"key=\")) {\n var startIndex = url.indexOf(\"key=\") + 4;\n var endIndex = url.indexOf(\"#\", startIndex);\n return url.substring(startIndex, endIndex);\n }\n\n if (url.includes(\"/d/\")) {\n var startIndex = url.indexOf(\"/d/\") + 3;\n var endIndex = url.indexOf(\"/\", startIndex);\n return url.substring(startIndex, endIndex);\n }\n }\n})();\n\n/***/ }),\n\n/***/ 875:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return RenderQuestion; });\n/* unused harmony export getVocative */\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n////////////////////Question Types///////////////////////\nfunction QuestionText() {\n var self = this;\n this.props = {\n type: \"Text\",\n valueProp: \"TextAnswer\",\n element: null,\n questionArea: null,\n displayed: true,\n disabled: false,\n activeItem: null\n };\n this.render = function (item, props) {\n self.item = item;\n self.props = _extends({}, self.props, props);\n var id = \"txt_\" + Math.random().toString(36).substr(2);\n self.id = id;\n self.item.DomId = id;\n //create template \n var elementTemplate = \"
\\n
\\n
\\n
\\n
\\n
\";\n var elementDom = $(elementTemplate);\n\n self.element = elementDom;\n self.questionArea = elementDom.find(\".qa-ask[data-for=\" + id + \"]\");\n self.answerArea = elementDom.find(\".textarea[data-for=\" + id + \"]\");\n\n self.answerArea.data(\"QuestionText\", self);\n\n ////bind handler ///\n var searchVal = null;\n var lastTxt = null;\n self.answerArea.off(\"propertychange change paste input\").on(\"propertychange change paste input\", function (e) {\n var searchTxt = $(e.target).html();\n searchVal = setTimeout(function () {\n if (searchTxt == $(e.target).html() && searchTxt != lastTxt) {\n lastTxt = searchTxt;\n if (preventEventIf(e, self.props.disabled)) {\n return;\n }\n if (typeof self.props.onChange == \"function\") {\n var changedVal = $(e.target).html();\n self.props[self.props.valueProp] = changedVal;\n self.item[self.props.valueProp] = changedVal;\n self.props.onChange(changedVal, self.props, e); //data, this, event\n }\n }\n }, 250);\n });\n\n ////bind essential props ////\n //disabled\n bindDisabled();\n //displayed\n bindDisplayed();\n //value\n bindValue();\n\n //return $ element\n //self.props.DOM = elementDom;\n //set update function\n self.item.update = self.update;\n\n return elementDom;\n };\n //get props\n this.getProps = function () {\n return self.props;\n };\n //set props\n this.setProps = function (props) {\n self.props = _extends({}, self.props, props);\n bindDisabled();\n bindDisplayed();\n bindValue();\n };\n\n function bindDisabled() {\n if (self.element == null) {\n return;\n }\n\n if (self.props.disabled === true) {\n self.answerArea.attr('contenteditable', false);\n } else {\n self.answerArea.attr('contenteditable', true);\n }\n }\n function bindDisplayed() {\n if (self.element == null) {\n return;\n }\n if (self.props.displayed === false) {\n self.element.hide();\n } else {\n self.element.show();\n }\n }\n function bindValue() {\n if (self.element == null) {\n return;\n }\n self.questionArea.html(getVocative(self.props[\"Question\"]));\n self.answerArea.html(self.props[self.props.valueProp]);\n }\n\n this.update = function () {\n self.props = _extends({}, self.props, self.item);\n bindDisabled();\n bindDisplayed();\n //bindValue();\n //self.questionArea.focus();\n };\n\n return this;\n}\n\nfunction QuestionAttachment() {\n var self = this;\n this.props = {\n type: \"Attachment\",\n valueProp: \"AttachmentName\",\n element: null,\n questionArea: null,\n displayed: true,\n disabled: false,\n activeItem: null\n };\n this.render = function (item, props) {\n self.item = item;\n self.props = _extends({}, self.props, props);\n var id = \"att_\" + Math.random().toString(36).substr(2);\n self.id = id;\n self.item.DomId = id;\n //create template \n var elementTemplate = \"
\\n
\\n
\\n
\\n \\n
Drag and drop or upload file
\\n
\" + (self.props[\"QuestionAttachmentName\"] || \"\") + \" - \" + convertByteSize(self.props[\"QuestionAttachmentSize\"]) + \"
\\n
Download
\\n
\\n
\\n
\";\n var elementDom = $(elementTemplate);\n\n self.element = elementDom;\n self.questionArea = elementDom.find(\".qa-ask[data-for=\" + id + \"]\");\n self.answerArea = elementDom.find(\".filePicker[data-for=\" + id + \"]\");\n self.input = elementDom.find(\"input[data-for=\" + id + \"]\");\n self.form = elementDom.find(\".qa-attachment[data-for=\" + id + \"]\");\n self.answerArea.data(\"QuestionAttachment\", self);\n\n ////bind handler ///\n self.input.off(\"change\").on(\"change\", function (e) {\n if (preventEventIf(e, self.props.disabled)) {\n return;\n }\n if (typeof self.props.onChange == \"function\") {\n var input = self.input;\n\n var file = new File([input[0].files[0]], input[0].files[0].name);\n var formData = new FormData();\n formData.append('filename', file.name);\n formData.append('blob', file);\n formData.append('ContactTemplateResponderDetailsID', self.props.ContactTemplateResponderDetailsID);\n self.element.find(\".qa-fileName[data-for=\" + id + \"]\").text(file.name + \" - \" + convertByteSize(file.size) + \" \").show();\n self.element.find(\".qa-download[data-for=\" + id + \"]\").show();\n input.val(\"\");\n\n self.URL = URL.createObjectURL(file);\n self.FileName = file.name;\n\n self.props[self.props.valueProp] = file.name;\n self.item[self.props.valueProp] = file.name;\n //self.props.onChange(null, self.props, e);//data, this, event\n self.AddData = formData;\n self.save(e);\n }\n });\n //bind drag and drop\n self.form.on('drag dragstart dragend dragover dragenter dragleave drop', function (e) {\n e.preventDefault();\n e.stopPropagation();\n }).on('dragover dragenter', function () {\n self.form.addClass('is-dragover');\n }).on('dragleave dragend drop', function () {\n self.form.removeClass('is-dragover');\n }).on('drop', function (e) {\n var file = e.originalEvent.dataTransfer.files[0];\n var formData = new FormData();\n formData.append('filename', file.name);\n formData.append('blob', file);\n formData.append('ContactTemplateResponderDetailsID', self.props.ContactTemplateResponderDetailsID);\n self.element.find(\".qa-fileName[data-for=\" + id + \"]\").text(file.name + \" - \" + convertByteSize(file.size) + \" \").show();\n self.element.find(\".qa-download[data-for=\" + id + \"]\").show();\n\n self.URL = URL.createObjectURL(file);\n self.FileName = file.name;\n\n self.props[self.props.valueProp] = file.name;\n self.item[self.props.valueProp] = file.name;\n //self.props.onChange(null, self.props, e);//data, this, event\n self.AddData = formData;\n self.save(e);\n });\n\n var filePicker = self.element.find(\".filePicker[data-for=\" + id + \"]\");\n filePicker.off(\"click.uploadFile\").on(\"click.uploadFile\", function () {\n self.input.trigger(\"click\");\n });\n var download = self.element.find(\".qa-download[data-for=\" + id + \"]\");\n download.off(\"click.downLoad\").on(\"click.downLoad\", function () {\n\n var tempLink = document.createElement('a');\n document.body.appendChild(tempLink);\n tempLink.style.display = 'none';\n tempLink.href = self.URL || \"/Assessment/GetDocumentByDocumentId?id=\" + self.props.QuestionAttachmentId;\n tempLink.setAttribute('download', self.FileName);\n\n if (typeof tempLink.download === 'undefined') {\n tempLink.setAttribute('target', '_blank');\n }\n\n setTimeout(function () {\n tempLink.click();\n document.body.removeChild(tempLink);\n window.URL.revokeObjectURL(tempLink.href);\n }, 100);\n });\n\n ////bind essential props ////\n //disabled\n bindDisabled();\n //displayed\n bindDisplayed();\n //value\n bindValue();\n\n //return $ element\n //self.props.DOM = elementDom;\n //set update function\n self.item.update = self.update;\n\n //self.saveSubscribe.push(self.save);\n\n return elementDom;\n };\n\n this.save = function (e) {\n Shared.setBusy(self.form, true);\n $.ajax({\n url: \"/Assessment/AttachFile\",\n type: 'post',\n data: self.AddData,\n contentType: false,\n processData: false,\n success: function success(data) {\n Shared.setBusy(self.form, false);\n if (data.success == JBErrorCode.Error) {\n window.gsAlert.dialog({\n type: \"danger\",\n dialogClass: \"simple-dlg\",\n title: \"Some thing went wrong\",\n des: data.message,\n btnok_text: \"OK\",\n btnclose_text: \"Cancel\",\n success: function success(result) {},\n close: function close(result) {}\n });\n return;\n }\n\n self.props[self.props.valueProp] = data.ID;\n self.item[self.props.valueProp] = data.ID;\n self.props.onChange(null, self.props, e); //data, this, event\n\n }\n });\n };\n\n //get props\n this.getProps = function () {\n return self.props;\n };\n //set props\n this.setProps = function (props) {\n self.props = _extends({}, self.props, props);\n bindDisabled();\n bindDisplayed();\n bindValue();\n };\n\n function bindDisabled() {\n if (self.element == null) {\n return;\n }\n\n if (self.props.disabled === true) {\n self.answerArea[0].disabled = true;\n self.answerArea[0].style.display = \"none\";\n } else {\n self.answerArea[0].disabled = false;\n self.answerArea[0].style.display = \"inline-block\";\n }\n }\n function bindDisplayed() {\n if (self.element == null) {\n return;\n }\n if (self.props.displayed === false) {\n self.element.hide();\n } else {\n self.element.show();\n }\n\n if (self.props.disabled === true) {\n self.answerArea[0].style.display = \"none\";\n } else {\n self.answerArea[0].style.display = \"inline-block\";\n }\n }\n function bindValue() {\n if (self.element == null) {\n return;\n }\n self.questionArea.html(getVocative(self.props[\"Question\"]));\n //self.answerArea.html(self.props[self.props.valueProp]);\n }\n\n this.update = function () {\n self.props = _extends({}, self.props, self.item);\n bindDisabled();\n bindDisplayed();\n //bindValue();\n //self.questionArea.focus();\n };\n\n return this;\n}\n\nfunction QuestionNumber() {\n var self = this;\n this.props = {\n type: \"Number\",\n valueProp: \"NumberAnswer\",\n element: null,\n questionArea: null,\n displayed: true,\n disabled: false,\n activeItem: null\n };\n this.render = function (item, props) {\n self.item = item;\n self.props = _extends({}, self.props, props);\n var id = \"num_\" + Math.random().toString(36).substr(2);\n self.id = id;\n self.item.DomId = id;\n\n //create template \n var elementTemplate = \"
\\n
\\n
\\n
Please enter a number to answer!
\\n \\n
\\n
\";\n var elementDom = $(elementTemplate);\n\n self.element = elementDom;\n self.questionArea = elementDom.find(\".qa-ask[data-for=\" + id + \"]\");\n self.answerArea = elementDom.find(\".qa-number[data-for=\" + id + \"]\");\n\n self.answerArea.data(\"QuestionText\", self);\n\n ////bind handler ///\n self.answerArea.off(\"propertychange change paste input\").on(\"propertychange change paste input\", function (e) {\n if (preventEventIf(e, self.props.disabled)) {\n return;\n }\n if (typeof self.props.onChange == \"function\") {\n var changedVal = elementDom.find(\".qa-number[data-for=\" + id + \"]\").val();\n self.props[self.props.valueProp] = changedVal;\n self.item[self.props.valueProp] = changedVal;\n self.props.onChange(changedVal, self.props, e); //data, this, event\n }\n });\n\n ////bind essential props ////\n //disabled\n bindDisabled();\n //displayed\n bindDisplayed();\n //value\n bindValue();\n\n //return $ element\n //self.props.DOM = elementDom;\n //set update function\n self.item.update = self.update;\n\n return elementDom;\n };\n //get props\n this.getProps = function () {\n return self.props;\n };\n //set props\n this.setProps = function (props) {\n self.props = _extends({}, self.props, props);\n bindDisabled();\n bindDisplayed();\n bindValue();\n };\n\n function bindDisabled() {\n if (self.element == null) {\n return;\n }\n\n if (self.props.disabled === true) {\n self.answerArea.prop('disabled', true);\n } else {\n self.answerArea.prop('disabled', false);\n }\n }\n function bindDisplayed() {\n if (self.element == null) {\n return;\n }\n if (self.props.displayed === false) {\n self.element.hide();\n } else {\n self.element.show();\n }\n }\n function bindValue() {\n if (self.element == null) {\n return;\n }\n self.questionArea.html(getVocative(self.props[\"Question\"]));\n self.answerArea.val(self.props[self.props.valueProp]);\n }\n\n this.update = function () {\n self.props = _extends({}, self.props, self.item);\n bindDisabled();\n bindDisplayed();\n //bindValue();\n //self.questionArea.focus();\n };\n\n return this;\n}\n\nfunction QuestionDate() {\n var self = this;\n this.props = {\n type: \"Date\",\n valueProp: \"DateAnswer\",\n element: null,\n questionArea: null,\n displayed: true,\n disabled: false,\n activeItem: null\n };\n this.render = function (item, props) {\n self.item = item;\n self.props = _extends({}, self.props, props);\n var id = \"d_\" + Math.random().toString(36).substr(2);\n self.id = id;\n self.item.DomId = id;\n\n //create template \n var elementTemplate = \"
\\n
\\n
\\n
Please enter a date to answer!
\\n
\\n
\\n \\n
\\n
\\u200B \\n
\\n
\";\n var elementDom = $(elementTemplate);\n\n self.element = elementDom;\n self.questionArea = elementDom.find(\".qa-ask[data-for=\" + id + \"]\");\n self.answerArea = elementDom.find(\".qa-date[data-for=\" + id + \"]\").first();\n self.answerArea.datepicker({\n dateFormat: 'dd/mm/yy',\n changeMonth: true,\n changeYear: true,\n yearRange: '1900:2100',\n beforeShow: function beforeShow(input, inst) {\n $(inst.dpDiv).addClass('cs-datepicker');\n }\n });\n self.answerArea.data(\"QuestionText\", self);\n\n ////bind handler ///\n self.answerArea.off(\"propertychange change paste input\").on(\"propertychange change paste input\", function (e) {\n if (preventEventIf(e, self.props.disabled)) {\n return;\n }\n if (typeof self.props.onChange == \"function\") {\n var changedVal = elementDom.find(\".qa-date[data-for=\" + id + \"]\").val();\n if (!!changedVal) {\n changedVal = $.datepicker.formatDate('yy-mm-dd', elementDom.find(\".qa-date[data-for=\" + id + \"]\").datepicker(\"getDate\")); //changedVal.datepicker(\"getDate\").slice(0, 10)\n }\n self.props[self.props.valueProp] = changedVal;\n self.item[self.props.valueProp] = changedVal;\n self.props.onChange(changedVal, self.props, e); //data, this, event\n }\n });\n\n ////bind essential props ////\n //disabled\n bindDisabled();\n //displayed\n bindDisplayed();\n //value\n bindValue();\n\n //return $ element\n //self.props.DOM = elementDom;\n //set update function\n self.item.update = self.update;\n\n return elementDom;\n };\n //get props\n this.getProps = function () {\n return self.props;\n };\n //set props\n this.setProps = function (props) {\n self.props = _extends({}, self.props, props);\n bindDisabled();\n bindDisplayed();\n bindValue();\n };\n\n function bindDisabled() {\n if (self.element == null) {\n return;\n }\n\n if (self.props.disabled === true) {\n self.answerArea.prop('disabled', true);\n } else {\n self.answerArea.prop('disabled', false);\n }\n }\n function bindDisplayed() {\n if (self.element == null) {\n return;\n }\n if (self.props.displayed === false) {\n self.element.hide();\n } else {\n self.element.show();\n }\n }\n function bindValue() {\n if (self.element == null) {\n return;\n }\n self.questionArea.html(getVocative(self.props[\"Question\"]));\n if (self.props[self.props.valueProp] != null) {\n self.answerArea.datepicker('setDate', new Date(parseInt(self.props[self.props.valueProp].replace(/[^0-9 +]/g, ''))));\n }\n }\n\n this.update = function () {\n self.props = _extends({}, self.props, self.item);\n bindDisabled();\n bindDisplayed();\n //bindValue();\n //self.questionArea.focus();\n };\n\n return this;\n}\n\nfunction QuestionYesNo() {\n var self = this;\n this.props = {\n type: \"YesNo\",\n valueProp: \"YesNoAnswer\",\n element: null,\n displayed: true,\n disabled: false,\n activeItem: null\n };\n this.render = function (item, props) {\n self.item = item;\n ////this ///\n self.props = _extends({}, self.props, props);\n var id = \"yn_\" + Math.random().toString(36).substr(2);\n self.id = id;\n self.item.DomId = id;\n\n //create template \n var elementTemplate = \"
\\n
\\n
\\n
\\n
Yes
\\n
No
\\n
\\n
\\n
\";\n\n //let elementWrap = $(elementTemplate);\n self.element = $(elementTemplate);\n\n self.questionArea = self.element.find(\".qa-ask[data-for=\" + id + \"]\");\n self.answerArea = self.element.find(\".qa-answer[data-for=\" + id + \"]\");\n self.element.data(\"QuestionYesNoAnswer\", self);\n\n ////bind essential props ////\n //disabled\n bindDisabled();\n //displayed\n bindDisplayed();\n //value\n bindValue();\n\n ////bind handler ///\n self.element.find(\".qa-yesno-item[data-for=\" + id + \"]\").off(\"click\").on(\"click\", function (e) {\n if (preventEventIf(e, self.props.disabled)) {\n return;\n }\n self.element.find(\".qa-yesno-item[data-for=\" + id + \"]\").removeClass(\"active\");\n\n var _thisItem = $(this);\n _thisItem.addClass(\"active\");\n console.log(_thisItem.data(\"val\"));\n\n if (typeof self.props.onChange == \"function\") {\n var changedVal = _thisItem.data(\"val\");\n self.props[self.props.valueProp] = changedVal;\n self.item[self.props.valueProp] = changedVal; //reflect item\n self.props.onChange(changedVal, self.props, e, true, null); //data, this, event\n }\n });\n\n if (self.props.YesSecondary != null) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = self.props.YesSecondary[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var secondary = _step.value;\n\n var secondaryElement = RenderQuestion(secondary.QuestionType, secondary, self.props.activeItem, self.props.onChange, self.saveSubscribe);\n secondaryElement.appendTo(self.element);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n if (self.props.NoSecondary != null) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = self.props.NoSecondary[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _secondary = _step2.value;\n\n var _secondaryElement = RenderQuestion(_secondary.QuestionType, _secondary, self.props.activeItem, self.props.onChange, self.saveSubscribe);\n _secondaryElement.appendTo(self.element);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n\n //self.props.DOM = self.element;\n\n //set update function\n self.item.update = self.update;\n\n //return $ element\n return self.element;\n };\n //get props\n this.getProps = function () {\n return self.props;\n };\n //set props\n this.setProps = function (props) {\n self.props = _extends({}, self.props, props);\n self.bindDisabled();\n self.bindDisplayed();\n self.bindValue();\n };\n\n function bindDisabled() {\n if (self.element == null) {\n return;\n }\n\n if (self.props.disabled === true) {\n self.element.attr('disabled', true);\n } else {\n self.element.attr('disabled', false);\n }\n }\n function bindDisplayed() {\n if (self.element == null) {\n return;\n }\n if (self.props.displayed === false) {\n self.element.hide();\n } else {\n self.element.show();\n }\n }\n function bindValue() {\n if (self.element == null) {\n return;\n }\n self.questionArea.html(getVocative(self.props[\"Question\"]));\n self.element.find(\".qa-yesno-item[data-for=\" + self.id + \"]\").each(function () {\n var _thisItem = $(this);\n if (_thisItem.data(\"val\") === self.props[self.props.valueProp]) {\n _thisItem.addClass(\"active\");\n } else {\n _thisItem.removeClass(\"active\");\n }\n });\n }\n\n this.update = function () {\n self.props = _extends({}, self.props, self.item);\n bindDisabled();\n bindDisplayed();\n //bindValue();\n };\n\n return this;\n}\n\nfunction QuestionOption() {\n var self = this;\n this.props = {\n type: \"Option\",\n valueProp: \"SelectedOptionNumber\",\n selectedOptions: \"SelectedOptions\",\n element: null,\n displayed: true,\n disabled: false,\n Option1: \"\",\n Option2: \"\",\n Option3: \"\",\n Option4: \"\",\n Option5: \"\",\n activeItem: null\n };\n this.render = function (item, props) {\n self.item = item;\n ////this ///\n self.props = _extends({}, self.props, props);\n //create template \n var textVal = self.props[self.props.valueProp];\n var id = \"opt_\" + Math.random().toString(36).substr(2);\n\n var elementTemplate = \"
\\n
\\n
\\n
\\n

\\n

\\n

\\n

\\n

\\n

\\n

\\n

\\n

\\n

\\n
\\n
\\n
\";\n var elementDom = $(elementTemplate);\n\n self.id = id;\n self.item.DomId = id;\n\n self.element = elementDom;\n self.questionArea = elementDom.find(\".qa-ask[data-for=\" + id + \"]\");\n self.answerArea = elementDom.find(\".qa-answer[data-for=\" + id + \"]\");\n self.element.data(\"QuestionOption\", self);\n\n ////bind essential props ////\n //disabled\n bindDisabled();\n //displayed\n bindDisplayed();\n //value\n bindValue();\n\n ////bind handler ///\n elementDom.find(\".\" + id + \" .chk_lbl\").each(function () {\n var _$lbl = $(this);\n _$lbl.css({\n \"border-color\": self.props.StyleColor || \"#565656c4\"\n });\n _$lbl.off(\"click\").on(\"click\", function (e) {\n var _$chk = _$lbl.prev(\"input[type='checkbox']\");\n\n var otionValue = \"\";\n\n if (preventEventIf(e, self.props.disabled)) {\n return;\n }\n if (self.props.AllowMultiSelectOption) {\n _$chk[0].checked = true;\n } else {\n // elementDom.find(`.${id} input[type='checkbox'][id^=${id}]`).attr('checked', false);\n //$(this).attr('checked', true);\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = elementDom.find(\".\" + id + \" input[type='checkbox'][id^=\" + id + \"]\")[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _item = _step3.value;\n\n _item.checked = false;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n _$chk[0].checked = true;\n }\n\n if (typeof self.props.onChange == \"function\") {\n var changedVal = _$chk.val();\n if (self.props.AllowMultiSelectOption) {\n ///for multiple\n if (_$chk[0].checked == true) {\n if (self.props[self.props.selectedOptions]) {\n self.props[self.props.selectedOptions] = self.props[self.props.selectedOptions] + \",\" + changedVal;\n self.item[self.props.selectedOptions] = self.item[self.props.selectedOptions] + \",\" + changedVal;\n } else {\n self.props[self.props.selectedOptions] = changedVal;\n self.item[self.props.selectedOptions] = changedVal;\n }\n } else {\n self.props[self.props.selectedOptions] = self.props[self.props.selectedOptions].replace(\",\" + changedVal, \"\").replace(\"\" + changedVal, \"\");\n self.item[self.props.selectedOptions] = self.item[self.props.selectedOptions].replace(\",\" + changedVal, \"\").replace(\"\" + changedVal, \"\");\n //self.props.onChange(changedVal, self.props, e);//data, this, event\n }\n\n otionValue = self.item[self.props.selectedOptions];\n } else {\n ///for single\n if (_$chk[0].checked == true) {\n self.props[self.props.valueProp] = changedVal;\n self.item[self.props.valueProp] = changedVal;\n } else {\n self.props[self.props.valueProp] = null;\n self.item[self.props.valueProp] = null;\n //self.props.onChange(changedVal, self.props, e);//data, this, event\n }\n\n otionValue = self.item[self.props.valueProp];\n }\n\n ////////////check if question can move next////\n var checkSubActionData = {\n CTRDsId: self.item.ContactTemplateResponderDetailsID,\n //OptionValue: self.item[self.props.selectedOptions],\n OptionValue: otionValue,\n ResponderType: \"Option\"\n };\n $.ajax({\n type: 'POST',\n url: \"/Assessment/GetAfterAnsweredAction\",\n data: checkSubActionData,\n\n success: function success(data) {\n console.log(data);\n if (typeof self.props.onChange == \"function\") {\n var canNextQuestion = true;\n if ( /*data.IsMoveToStatus ||*/data.IsDirectRejection) {\n canNextQuestion = false;\n }\n self.props.onChange(changedVal, self.props, e, canNextQuestion, data.MoveStatus); //data, this, event\n }\n }\n });\n }\n });\n });\n\n //create secondary\n for (var i = 1; i <= 20; i++) {\n if (self.props[\"Option\" + i + \"Secondary\"] != null) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = self.props[\"Option\" + i + \"Secondary\"][Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var secondary = _step4.value;\n\n var secondaryElement = RenderQuestion(secondary.QuestionType, secondary, self.props.activeItem, self.props.onChange, self.saveSubscribe);\n secondaryElement.appendTo(elementDom.find(\"#\" + id + \"_\" + i).closest(\".divQuestionCheckOption.\" + id).find(\".content\"));\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n }\n }\n\n //return $ element\n //self.props.DOM = elementDom;\n //set update function\n self.item.update = self.update;\n return elementDom;\n };\n //get props\n this.getProps = function () {\n return self.props;\n };\n //set props\n this.setProps = function (props) {\n self.props = _extends({}, self.props, props);\n bindDisabled();\n bindDisplayed();\n bindValue();\n };\n\n function bindDisabled() {\n if (self.element == null) {\n return;\n }\n\n if (self.props.disabled === true) {\n self.element.attr('disabled', true);\n } else {\n self.element.attr('disabled', false);\n }\n }\n function bindDisplayed() {\n if (self.element == null) {\n return;\n }\n if (self.props.displayed === false) {\n self.element.hide();\n } else {\n self.element.show();\n }\n\n //bind each element\n self.element.find(\".divQuestionCheckOption.\" + self.id).each(function (index) {\n var _thisItem = $(this);\n if (!self.props[\"Option\" + (index + 1)]) {\n _thisItem.hide();\n }\n });\n }\n function bindValue() {\n if (self.element == null) {\n return;\n }\n self.questionArea.html(getVocative(self.props[\"Question\"]));\n if (self.props.AllowMultiSelectOption) {\n //////for multiple///\n self.element.find(\".\" + self.id + \" input[type='checkbox']\").each(function (index) {\n var _thisItem = $(this);\n var _content = _thisItem.parent().find(\".content\").html(getVocative(self.props[\"Option\" + (index + 1)]));\n if ((self.props.SelectedOptions || \"\").includes(_thisItem.val())) {\n _thisItem.attr('checked', true);\n } else {\n _thisItem.attr('checked', false);\n }\n\n _content.css({\n \"color\": self.props.StyleColor || \"inherit\",\n \"font-size\": self.props.StyleFontSize || \"inherit\",\n \"font-family\": self.props.StyleFontFamily || \"inherit\"\n });\n });\n } else {\n self.element.find(\".\" + self.id + \" input[type='checkbox']\").each(function (index) {\n var _thisItem = $(this);\n var _content = _thisItem.parent().find(\".content\").html(getVocative(self.props[\"Option\" + (index + 1)]));\n if (_thisItem.val() == self.props[self.props.valueProp]) {\n _thisItem.attr('checked', true);\n } else {\n _thisItem.attr('checked', false);\n }\n\n _content.css({\n \"color\": self.props.StyleColor || \"inherit\",\n \"font-size\": self.props.StyleFontSize || \"inherit\",\n \"font-family\": self.props.StyleFontFamily || \"inherit\"\n });\n });\n }\n }\n\n this.update = function () {\n self.props = _extends({}, self.props, self.item);\n bindDisabled();\n bindDisplayed();\n //bindValue();\n };\n\n return this;\n}\n\nfunction QuestionScale() {\n var self = this;\n this.props = {\n type: \"Scale\",\n valueProp: \"ScaleAverage\",\n element: null,\n displayed: true,\n disabled: false,\n activeItem: null\n };\n this.render = function (item, props) {\n self.item = item;\n ////this ///\n self.props = _extends({}, self.props, props);\n var id = \"scl_\" + Math.random().toString(36).substr(2);\n self.id = id;\n self.item.DomId = id;\n\n //create template \n var elementWrap = $(\"
\\n
\\n
\\n \" + (self.props.ScaleMinRange != null && self.props.ScaleMaxRange != null ? \"
\" + self.props.ScaleMinRange + \"
\" + self.props.ScaleMaxRange + \"
\" : \"\") + \"\\n
\");\n\n self.element = elementWrap;\n self.questionArea = elementWrap.find(\".qa-ask[data-for=\" + id + \"]\");\n self.answerArea = elementWrap.find(\".qa-answer[data-for=\" + id + \"]\");\n\n elementWrap.data(\"QuestionScale\", self);\n\n ////bind handler ///\n $.ui.slider({\n range: \"min\",\n value: self.props[self.props.valueProp],\n min: self.props.ScaleMinRange,\n max: self.props.ScaleMaxRange,\n step: 1,\n slide: function slide(e, ui) {\n elementWrap.find(\".ui-slider-handle\").first().text(self.props.HideNumberOptions ? \"\" : ui.value); //???this have to take fisrtttttttttt???\n },\n stop: function stop(e, ui) {\n\n var changedVal = ui.value;\n self.props[self.props.valueProp] = changedVal;\n self.item[self.props.valueProp] = changedVal; //reflect item\n\n self.props.onChange(changedVal, self.props, e, true, null); //data, this, event\n },\n disabled: self.props.disabled\n }, self.answerArea);\n\n ////bind essential props ////\n //disabled\n bindDisabled();\n //displayed\n bindDisplayed();\n //value\n bindValue();\n\n if (self.props.ScaleSecondary != null) {\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = self.props.ScaleSecondary[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var secondary = _step5.value;\n\n var secondaryElement = RenderQuestion(secondary.QuestionType, secondary, self.props.activeItem, self.props.onChange, self.saveSubscribe);\n secondaryElement.appendTo(elementWrap);\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n }\n\n //return $ element\n //self.props.DOM = elementWrap;\n //set update function\n self.item.update = self.update;\n\n return elementWrap;\n };\n //get props\n this.getProps = function () {\n return self.props;\n };\n //set props\n this.setProps = function (props) {\n self.props = _extends({}, self.props, props);\n bindDisabled();\n bindDisplayed();\n bindValue();\n };\n\n function bindDisabled() {\n if (self.elementWrap == null) {\n return;\n }\n\n if (self.props.disabled === true) {\n //self.element.attr('disabled', true);\n //self.answerArea.slider({ disabled: true });\n $.ui.slider({ disabled: true }, self.answerArea);\n } else {\n //self.element.attr('disabled', false);\n //self.answerArea.slider({ disabled: false });\n $.ui.slider({ disabled: false }, self.answerArea);\n }\n }\n\n function bindDisplayed() {\n if (self.element == null) {\n return;\n }\n if (self.props.displayed === false) {\n self.element.hide();\n } else {\n self.element.show();\n }\n }\n function bindValue() {\n\n if (self.element == null) {\n return;\n }\n self.questionArea.html(getVocative(self.props[\"Question\"]));\n if (self.props[\"ScaleAverage\"]) {\n self.element.find(\".ui-slider-handle\").first().text(self.props[\"ScaleAverage\"]); //???this have to take fisrtttttttttt???\n }\n }\n\n this.update = function () {\n self.props = _extends({}, self.props, self.item);\n bindDisabled();\n bindDisplayed();\n //bindValue();\n };\n\n return this;\n}\n\nfunction QuestionMood() {\n var self = this;\n this.props = {\n type: \"Mood\",\n valueProp: \"SelectedOptionNumber\",\n element: null,\n questionArea: null,\n displayed: true,\n disabled: false,\n activeItem: null\n };\n this.render = function (item, props) {\n self.item = item;\n self.props = _extends({}, self.props, props);\n var id = \"moo_\" + Math.random().toString(36).substr(2);\n self.id = id;\n self.item.DomId = id;\n //create template \n var elementTemplate = \"
\\n
\\n
\\n
\\n
\\n
Poor
\\n
\\n
\\n
Needs Work
\\n
\\n
\\n
Okay
\\n
\\n
\\n
Good
\\n
\\n
\\n
Excellent
\\n
\\n
\\n
\\n
\\n
\";\n var elementDom = $(elementTemplate);\n\n self.element = elementDom;\n self.questionArea = elementDom.find(\".qa-ask[data-for=\" + id + \"]\");\n self.answerArea = elementDom.find(\".qa-mood[data-for=\" + id + \"]\");\n\n self.answerArea.data(\"QuestionText\", self);\n\n self.answerArea.find(\".mood-value\").off(\"click\").on(\"click\", function (e) {\n self.answerArea.find(\".mood-value\").removeClass(\"active\");\n $(this).addClass(\"active\");\n if (preventEventIf(e, self.props.disabled)) {\n return;\n }\n if (typeof self.props.onChange == \"function\") {\n var changedVal = $(this).data(\"for\");\n self.props[self.props.valueProp] = changedVal;\n self.item[self.props.valueProp] = changedVal;\n self.props.onChange(changedVal, self.props, e); //data, this, event\n }\n });\n\n ////bind essential props ////\n //disabled\n bindDisabled();\n //displayed\n bindDisplayed();\n //value\n bindValue();\n\n //return $ element\n //self.props.DOM = elementDom;\n //set update function\n self.item.update = self.update;\n\n return elementDom;\n };\n //get props\n this.getProps = function () {\n return self.props;\n };\n //set props\n this.setProps = function (props) {\n self.props = _extends({}, self.props, props);\n bindDisabled();\n bindDisplayed();\n bindValue();\n };\n\n function bindDisabled() {\n if (self.element == null) {\n return;\n }\n\n if (self.props.disabled === true) {\n self.answerArea.find(\".mood-value\").off();\n }\n }\n function bindDisplayed() {\n if (self.element == null) {\n return;\n }\n if (self.props.displayed === false) {\n self.element.hide();\n } else {\n self.element.show();\n }\n }\n function bindValue() {\n if (self.element == null) {\n return;\n }\n self.questionArea.html(getVocative(self.props[\"Question\"]));\n self.answerArea.find(\".mood-value[data-for=\" + self.props[self.props.valueProp] + \"]\").addClass(\"active\");\n }\n\n this.update = function () {\n self.props = _extends({}, self.props, self.item);\n bindDisabled();\n bindDisplayed();\n };\n\n return this;\n}\n\nfunction QuestionImage() {\n var self = this;\n this.props = {\n type: \"Image\",\n valueProp: \"ImageId\",\n element: null,\n questionArea: null,\n displayed: true,\n disabled: false,\n activeItem: null,\n ImageW: null,\n ImageH: null\n };\n this.render = function (item, props) {\n\n self.item = item;\n self.props = _extends({}, self.props, props);\n var id = \"att_\" + Math.random().toString(36).substr(2);\n self.id = id;\n self.item.DomId = id;\n\n //create template \n var elementTemplate = \"
\\n
\\n
\\n
\\n \\n
\\n Upload Image\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
Remove image
\\n
\\n
\";\n var elementDom = $(elementTemplate);\n\n self.element = elementDom;\n self.questionArea = elementDom.find(\".qa-ask[data-for=\" + id + \"]\");\n self.answerArea = elementDom.find(\".image-picker[data-for=\" + id + \"]\");\n self.input = elementDom.find(\"input[data-for=\" + id + \"]\");\n self.form = elementDom.find(\".qa-image[data-for=\" + id + \"]\");\n self.answerArea.data(\"QuestionImage\", self);\n\n self.saveCroppie = elementDom.find(\".image-item-save[data-for=\" + id + \"]\");\n self.scaleCroppie = elementDom.find(\".image-item-scale[data-for=\" + id + \"]\");\n self.removeCroppie = elementDom.find(\".image-item-remove[data-for=\" + id + \"]\");\n\n self.actions = elementDom.find(\".image-actions[data-for=\" + id + \"]\");\n\n self.imagePanel = elementDom.find(\".image-wrap[data-for=\" + id + \"]\");\n\n var opts = {\n viewport: {\n width: self.props.ImageW,\n height: self.props.ImageH\n },\n boundary: {\n width: self.props.ImageW,\n height: self.props.ImageH\n },\n enableExif: true,\n enableZoom: false,\n enableResize: false\n };\n\n if (!self.props[self.props.valueProp]) {\n opts.boundary = {\n width: self.props.ImageW,\n height: self.props.ImageH\n };\n\n opts.enableZoom = true;\n opts.enableResize = true;\n }\n\n self.croppieItem = self.imagePanel.croppie(opts);\n\n if (self.props[self.props.valueProp]) {\n self.croppieItem.croppie('bind', {\n url: \"/Image/GetImage?id=\" + self.props[self.props.valueProp] + \"&imageid=\" + id + \")\"\n });\n }\n\n ////bind handler ///\n self.input.off(\"change\").on(\"change\", function (e) {\n Shared.setBusy(self.form, true);\n if (preventEventIf(e, self.props.disabled)) {\n return;\n }\n if (typeof self.props.onChange == \"function\") {\n var input = self.input;\n\n //var file = new File([input[0].files[0]], input[0].files[0].name);\n\n //self.URL = URL.createObjectURL(file);\n //self.FileName = file.name;\n\n\n var img = new Image();\n\n img.onload = function () {\n var canvas = document.createElement(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\n var iw = img.width;\n var ih = img.height;\n var scale = Math.min(self.props.ImageW / iw, self.props.ImageH / ih);\n var iwScaled = iw * scale;\n var ihScaled = ih * scale;\n canvas.width = iwScaled;\n canvas.height = ihScaled;\n ctx.drawImage(img, 0, 0, iwScaled, ihScaled);\n\n var thumb = new Image();\n thumb.onload = function () {\n\n console.log(\"thumb loaded\");\n\n self.URL = thumb.src;\n self.FileName = input[0].files[0].name;\n\n //\n self.element.find(\".no-image\").removeClass(\"no-image\");\n\n self.imagePanel.croppie(\"destroy\");\n\n self.croppieItem = self.imagePanel.croppie({\n viewport: {\n width: iwScaled,\n height: ihScaled\n },\n boundary: {\n width: iwScaled,\n height: ihScaled\n },\n enableExif: true,\n enableZoom: false\n });\n\n self.imagePanel.croppie(\"bind\", {\n url: self.URL\n });\n\n console.log({ iwScaled: iwScaled, ihScaled: ihScaled });\n console.log(\"saving to server\");\n\n //dont understand why yet\n setTimeout(function () {\n\n self.croppieItem.croppie('result', {\n type: 'blob',\n size: 'original',\n quality: 1\n }).then(function (resp) {\n console.log(resp);\n var formData = new FormData();\n formData.append('ContactTemplateResponderDetailsID', self.props.ContactTemplateResponderDetailsID);\n formData.append('blob', resp, \"fileupload.png\");\n\n self.AddData = formData;\n self.save(e);\n });\n }, 200);\n };\n thumb.src = canvas.toDataURL(\"image/png\", 1);\n };\n img.src = URL.createObjectURL(input[0].files[0]);\n }\n });\n\n var filePicker = self.element.find(\".image-picker[data-for=\" + id + \"]\");\n filePicker.off(\"click.uploadFile\").on(\"click.uploadFile\", function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n self.input.trigger(\"click\");\n });\n self.removeCroppie.off(\"click\").on(\"click\", function (e) {\n self.form.addClass(\"no-image\");\n if (self.croppieItem) {\n self.imagePanel.croppie(\"destroy\");\n self.croppieItem = self.imagePanel.croppie({\n viewport: {\n width: self.props.ImageW,\n height: self.props.ImageH\n },\n boundary: {\n width: self.props.ImageW,\n height: self.props.ImageH\n },\n enableExif: true,\n enableZoom: false\n });\n\n self.imagePanel.croppie(\"bind\", {\n url: self.URL\n });\n }\n });\n\n self.saveCroppie.off(\"click\").on(\"click\", function (e) {\n\n console.log(\"saving to server\");\n\n self.croppieItem.croppie('result', {\n type: 'blob',\n size: {\n width: self.props.ImageW,\n height: self.props.ImageH\n }\n }).then(function (resp) {\n var formData = new FormData();\n formData.append('ContactTemplateResponderDetailsID', self.props.ContactTemplateResponderDetailsID);\n formData.append('blob', resp, \"fileupload.blob\");\n\n self.AddData = formData;\n self.save(e);\n });\n });\n\n self.scaleCroppie.off().on(\"click\", function () {});\n\n ////bind essential props ////\n //disabled\n bindDisabled();\n //displayed\n bindDisplayed();\n //value\n bindValue();\n\n //return $ element\n //self.props.DOM = elementDom;\n //set update function\n self.item.update = self.update;\n\n //self.saveSubscribe.push(self.save);\n\n return elementDom;\n };\n\n this.save = function (e) {\n Shared.setBusy(self.form, true);\n $.ajax({\n url: \"/Assessment/AttachFile\",\n type: 'post',\n data: self.AddData,\n contentType: false,\n processData: false,\n success: function success(data) {\n Shared.setBusy(self.form, false);\n if (data.success == JBErrorCode.Error) {\n window.gsAlert.dialog({\n type: \"danger\",\n dialogClass: \"simple-dlg\",\n title: \"Some thing went wrong\",\n des: data.message,\n btnok_text: \"OK\",\n btnclose_text: \"Cancel\",\n success: function success(result) {},\n close: function close(result) {}\n });\n return;\n }\n\n alertify.success(\"upload image successful\");\n\n self.props[self.props.valueProp] = data.ID;\n self.item[self.props.valueProp] = data.ID;\n\n //more about size of image\n self.item[\"ImageW\"] = self.props[\"ImageW\"];\n self.item[\"ImageH\"] = self.props[\"ImageH\"];\n\n self.props.onChange(null, self.props, e); //data, this, event\n }\n });\n };\n\n //get props\n this.getProps = function () {\n\n //\n //self.props[\"imageWidth\"] = self.image.width();\n //self.props[\"imageHeight\"] = self.image.height();\n //console.log({\n // w: self.image.width(),\n // h: self.image.height()\n //});\n\n return self.props;\n };\n //set props\n this.setProps = function (props) {\n self.props = _extends({}, self.props, props);\n bindDisabled();\n bindDisplayed();\n bindValue();\n };\n\n function bindDisabled() {\n if (self.element == null) {\n return;\n }\n\n if (self.props.disabled === true) {\n self.element.find(\".image-actions\").remove();\n self.answerArea.find(\".image-picker\").remove();\n self.answerArea.find(\".input[type='file']\").remove();\n }\n }\n function bindDisplayed() {\n if (self.element == null) {\n return;\n }\n if (self.props.displayed === false) {\n self.element.hide();\n } else {\n self.element.show();\n }\n\n if (self.props.disabled === true) {\n self.answerArea[0].style.display = \"none\";\n } else {\n self.answerArea[0].style.display = \"inline-block\";\n }\n }\n function bindValue() {\n if (self.element == null) {\n return;\n }\n self.questionArea.html(getVocative(self.props[\"Question\"]));\n //self.answerArea.html(self.props[self.props.valueProp]);\n }\n\n this.update = function () {\n self.props = _extends({}, self.props, self.item);\n bindDisabled();\n bindDisplayed();\n //bindValue();\n //self.questionArea.focus();\n };\n\n return this;\n}\n\nfunction QuestionVideo() {\n\n var video = new videoRecord();\n this.render = video.render;\n return this;\n}\n\nfunction RenderQuestion(Type, item, activeItem, dataChangeCallBack, saveSubscribe, height) {\n var qaElement = null;\n switch (Type) {\n case \"Text\":\n qaElement = new QuestionText();\n break;\n case \"Scale\":\n qaElement = new QuestionScale();\n break;\n case \"YesNo\":\n qaElement = new QuestionYesNo();\n break;\n case \"Option\":\n qaElement = new QuestionOption();\n break;\n case \"Video\":\n qaElement = new QuestionVideo();\n break;\n case \"Date\":\n qaElement = new QuestionDate();\n break;\n case \"Number\":\n qaElement = new QuestionNumber();\n break;\n case \"Attachment\":\n qaElement = new QuestionAttachment();\n break;\n case \"Mood\":\n qaElement = new QuestionMood();\n break;\n case \"Image\":\n qaElement = new QuestionImage();\n break;\n }\n qaElement.saveSubscribe = saveSubscribe;\n var nodeDom = qaElement.render(item, _extends({}, item, { onChange: dataChangeCallBack, height: height }));\n\n if (item.AskAttachmentId != null) {\n createDownloadSection(item, nodeDom);\n }\n return nodeDom;\n}\n\nfunction createDownloadSection(itemData, itemElement) {\n var attachment = $(\"
\\n
\" + (itemData.AskAttachmentName || \"\") + \" - \" + convertByteSize(itemData.AskAttachmentSize) + \"
\\n
Download
\\n
\");\n //\n attachment.insertAfter(itemElement.find(\".qa-ask[data-for=\" + itemData.DomId + \"]\"));\n $(\"
\").insertAfter(attachment);\n var download = $('.qa-download', attachment).show();\n download.off(\"click.downLoad\").on(\"click.downLoad\", function () {\n itemData.IsDownloadedAttachment = true;\n $.post(\"/Assessment/MarkQuestionDownloaded\", { ContactTemplateResponderDetailsId: itemData.ContactTemplateResponderDetailsID }, function () {});\n window.location.href = \"/Assessment/GetDocumentByDocumentId?id=\" + itemData.AskAttachmentId;\n });\n}\n\nfunction convertByteSize(size) {\n if (size >= 1024 * 1024) {\n //MB\n return (size / 1024 / 1024).toFixed(1) + 'MB';\n } else {\n return (size / 1024).toFixed(1) + 'KB';\n }\n}\n\nfunction preventEventIf(e, disabled) {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return true;\n }\n return false;\n};\n\nfunction getVocative(str) {\n var _responder = window.assessmentInfor;\n\n if (str == null || _responder == null) {\n return str;\n }\n var _he = \"he\";\n var _He = \"He\";\n var _his = \"his\";\n var _His = \"His\";\n var _him = \"him\";\n var _Him = \"Him\";\n var _himSelf = \"himself\";\n var _HimSelf = \"Himself\";\n\n var _she = \"she\";\n var _She = \"She\";\n var _her = \"her\";\n var _Her = \"Her\";\n var _herSelf = \"herself\";\n var _HerSelf = \"Herself\";\n\n var _heshe = _responder.ContactFirstName || _responder.ContactLastName;\n var _HeShe = _responder.ContactFirstName || _responder.ContactLastName;\n var _hisher = (_responder.ContactFirstName || _responder.ContactLastName) + \"'s\";\n var _HisHer = (_responder.ContactFirstName || _responder.ContactLastName) + \"'s\";\n var _himher = \"them\";\n var _HimHer = \"Them\";\n var _himherSelf = \"themself\";\n var _HimHerSelf = \"Themself\";\n\n var _jobTitle = _responder.JobTitle ? _responder.JobTitle : \"\";\n var _jobLocation = _responder.JobLocation ? _responder.JobLocation : \"\";\n str = str.replace(\"{Location}\", _jobLocation).replace(\"{VacancyPosition}\", _jobTitle);\n\n if (_responder.Gender && _responder.Gender.toLowerCase() == \"ma\") {\n str = str.replace(/{Responder:heshe}/g, _he).replace(/{Responder:HeShe}/g, _He).replace(/{Responder:hisher}/g, _his).replace(/{Responder:HisHer}/g, _His).replace(/{Responder:himher}/g, _him).replace(/{Responder:HimHer}/g, _Him).replace(/{Responder:himselfherself}/g, _himSelf).replace(/{Responder:HimselfHerself}/g, _HimSelf);\n } else if (_responder.Gender && _responder.Gender.toLowerCase() == \"fe\") {\n str = str.replace(/{Responder:heshe}/g, _she).replace(/{Responder:HeShe}/g, _She).replace(/{Responder:hisher}/g, _her).replace(/{Responder:HisHer}/g, _Her).replace(/{Responder:himher}/g, _her).replace(/{Responder:HimHer}/g, _Her).replace(/{Responder:himselfherself}/g, _herSelf).replace(/{Responder:HimselfHerself}/g, _HerSelf);\n } else {\n str = str.replace(/{Responder:heshe}/g, _heshe).replace(/{Responder:HeShe}/g, _HeShe).replace(/{Responder:hisher}/g, _hisher).replace(/{Responder:HisHer}/g, _HisHer).replace(/{Responder:himher}/g, _himher).replace(/{Responder:HimHer}/g, _HimHer).replace(/{Responder:himselfherself}/g, _himherSelf).replace(/{Responder:HimselfHerself}/g, _HimHerSelf);\n }\n\n return str.replace(/{Responder:FirstName}/ig, _responder.ContactFirstName).replace(/{Responder:LastName}/ig, _responder.ContactLastName);\n}\n\nwindow._RenderQuestion = RenderQuestion;\n\n\n\n/***/ })\n\n/******/ });\n\n\n// WEBPACK FOOTER //\n// Course/CoursePreviewNew/course_main.bundle.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1231);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap fdcae33949839c1e76f4","import { RenderQuestion } from './../CourseNew/QuestionTypes'\r\n(() => {\r\n ////courseid\r\n ////ActiveSlide\r\n var _$main = null;\r\n var parentItem = [];\r\n var saveSubscribe = [];\r\n var _csWidth;\r\n var _csHeight;\r\n\r\n\r\n var _scale;\r\n var _saveSubscribe = [];\r\n\r\n var _$courseCenter = null\r\n $(document).ready(function () {\r\n _$main = $(\"#course_main\")\r\n _$courseCenter = _$main.find(\".course_center\")\r\n $(document).keyup(function (e) {\r\n if (e.keyCode === 27) {\r\n closeCourseDialog(); // esc\r\n }\r\n });\r\n\r\n $(\"body\").off(\"click\", \"#course_main .item-text a\").on(\"click\", \"#course_main .item-text a\", function () {\r\n if ($(this).attr(\"target\")) {\r\n window.open($(this).attr(\"href\"), '_blank');\r\n }\r\n else {\r\n window.location.replace($(this).attr(\"href\"));\r\n }\r\n });\r\n })\r\n\r\n\r\n\r\n window.showPreviewCourse = function (slideId) {\r\n window.courseid = Shared.getQueryParam(\"CourseId\") || Shared.getQueryParam(\"courseID\") || window.StaticCourseId || window.currentCourseID;\r\n\r\n var _$center = _$main.find(\".course_center\");\r\n _$center.empty();\r\n\r\n //element = $(\"#employerdetails_coursedetails\");\r\n $(\"body\").addClass(\"preview-course\");\r\n\r\n _$main.detach();\r\n _$main.appendTo(\"body\");\r\n _$main.addClass(\"active\");\r\n\r\n _csWidth = _$main.find(\".course_slide_details\").width() - 33.333;\r\n _csHeight = _$main.find(\".course_slide_details\").height() - 33.333;\r\n\r\n console.log(`{CS w: ${_csWidth}px , h:${_csHeight}px}`)\r\n\r\n\r\n _scale = Math.min(_csWidth / 900, _csHeight / 675);\r\n _$courseCenter.css({ width: 900, height: 675 })\r\n $(\".review-section\").css({ width: 900 })\r\n\r\n _$main.find(\".course_close\").off().click(function () {\r\n closeCourseDialog();\r\n })\r\n\r\n _$main.find(\".slide_finish\").off().click(function () {\r\n closeCourseDialog();\r\n })\r\n\r\n\r\n $.ajax({\r\n url: '/Course/GetCourse',\r\n data: { courseid },\r\n type: 'GET',\r\n success: function (data) {\r\n\r\n window.course = data;\r\n window.assessmentInfor = {\r\n ContactFirstName: data.ResponderFirstname,\r\n ContactLastName: data.ResponderLastname,\r\n Gender: data.ResponderGender\r\n }\r\n\r\n if (data.ListSlide && data.ListSlide.length > 0) {\r\n if (slideId) {\r\n window.ActiveSlide = data.ListSlide.find(x => x.SlideId == slideId);\r\n }\r\n else {\r\n window.ActiveSlide = data.ListSlide[0];\r\n }\r\n displayActiveSlide();\r\n }\r\n else {\r\n window.openDialogInfor({\r\n title: \"Empty course\",\r\n des: \"This course is empty\",\r\n success: function (result) {\r\n },\r\n close: function (result) {\r\n },\r\n })\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n function closeCourseDialog() {\r\n _$main.removeClass(\"active\");\r\n _$main.detach();\r\n _$main.appendTo(\"body\");\r\n\r\n $(\"body\").removeClass(\"preview-course\");\r\n\r\n //reload list\r\n parentItem = [];\r\n //course.loadList();\r\n }\r\n\r\n\r\n function bindCourseStep() {\r\n var listSlide = window.course.ListSlide;\r\n\r\n var _$step = _$main.find(\".course_step\");\r\n var _$slide_prev = _$main.find(\".slide_prev\");\r\n var _$slide_next = _$main.find(\".slide_next\");\r\n var _$slide_finish = _$main.find(\".slide_finish\");\r\n let index = window.course.ListSlide.findIndex(x => x.SlideId == window.ActiveSlide.SlideId);\r\n if (index >= window.course.ListSlide.length - 1) {\r\n _$slide_next.css({ \"display\": \"none\" })\r\n _$slide_finish.css({ \"display\": \"flex\" })\r\n }\r\n else {\r\n _$slide_next.css({ \"display\": \"flex\" })\r\n _$slide_finish.css({ \"display\": \"none\" })\r\n }\r\n\r\n if (index <= 0) {\r\n _$slide_prev.addClass(\"btn__disabled\");\r\n }\r\n else {\r\n _$slide_prev.removeClass(\"btn__disabled\");\r\n }\r\n\r\n _$step.empty();\r\n _$slide_prev.off();\r\n _$slide_next.off();\r\n\r\n //bind slide step\r\n for (let [index, slide] of Object.entries(listSlide)) {\r\n let _$gotoSlide = $(``)\r\n _$gotoSlide.click(function () {\r\n window.ActiveSlide = window.course.ListSlide[index];\r\n displayActiveSlide();\r\n })\r\n _$gotoSlide.appendTo(_$step)\r\n }\r\n\r\n //bind prev\r\n if (!_$slide_prev.hasClass(\"btn__disabled\")) {\r\n _$slide_prev.click(function () {\r\n let index = window.course.ListSlide.findIndex(x => x.SlideId == window.ActiveSlide.SlideId);\r\n console.log(\"index\", index)\r\n\r\n if (index > 0) index--;\r\n window.ActiveSlide = window.course.ListSlide[index];\r\n displayActiveSlide();\r\n })\r\n }\r\n\r\n //bind next\r\n if (!_$slide_next.hasClass(\"btn__disabled\")) {\r\n _$slide_next.click(function () {\r\n //saveCurrentQuestion();\r\n let index = window.course.ListSlide.findIndex(x => x.SlideId == window.ActiveSlide.SlideId);\r\n console.log(\"index\", index)\r\n\r\n if (index < window.course.ListSlide.length - 1) index++;\r\n window.ActiveSlide = window.course.ListSlide[index];\r\n displayActiveSlide();\r\n })\r\n }\r\n }\r\n\r\n\r\n function markAsReadSlide() {\r\n }\r\n\r\n function displayActiveSlide() {\r\n markAsReadSlide();\r\n $(\".course_bottom\").css({ \"display\": \"flex\" })\r\n var _$center = _$main.find(\".course_center\");\r\n _$center.empty();\r\n $(\".review-section\").remove();\r\n bindCourseStep();\r\n\r\n let slide = window.ActiveSlide;\r\n console.log(\"Display Slide\", window.ActiveSlide);\r\n _$main.removeClass(\"has_video_bg\")\r\n //display backgroud\r\n if (slide.Description && $(slide.Description).find(\".fr-video\").length > 0) {\r\n var src = $($(slide.Description).find(\".fr-video\")[0]).find(\"iframe\").attr(\"src\");\r\n if (src.indexOf(\"?\") > -1) {\r\n var id = src.split(\"?\")[0].split(\"embed/\")[1];\r\n src += `&autoplay=1&controls=0&disablekb=1&loop=1&rel=0&showinfo=0&color=white&iv_load_policy=3&playlist=${id}`;\r\n }\r\n else {\r\n var id = src.split(\"embed/\")[1];\r\n src += `?autoplay=1&controls=0&disablekb=1&loop=1&rel=0&showinfo=0&color=white&iv_load_policy=3&playlist=${id}`;\r\n }\r\n\r\n var tempDom = $($(slide.Description).find(\".fr-video\")[0]).find(\"iframe\").attr(\"src\", src).attr(\"allow\", \"autoplay\").addClass(\"ytb-iframe\");\r\n\r\n var video = tempDom[0].outerHTML;\r\n _$center.append(video);\r\n _$center.addClass(\"has_video_bg\")\r\n }\r\n else if (slide.UrlBackground) {\r\n _$center.css(\"background-image\", `url('${slide.UrlBackground}')`);\r\n //_$center.css(\"background-repeat\", \"no-repeat\");\r\n //_$center.css(\"background-size\", \"100%\");\r\n _$center.css(\"opacity\", \"0.99\");\r\n }\r\n else {\r\n _$center.css(\"background\", \"#fff\");\r\n }\r\n\r\n for (let item of slide.SlideContentList) {\r\n ////display text///\r\n if (item.ContentTypeName == \"Text\") {\r\n console.log(\"Froala editor init\");\r\n let id = `information-panel-item[data-froala='1']`;\r\n let _$itemHtml = $(`\r\n
${item.ContentText}
`)\r\n _$itemHtml.appendTo(_$center);\r\n\r\n let frEditor = new FroalaEditor(`#${id}`, {\r\n key: '6LF5g1D4C3I3C5B3E4F-11SLJCKHXOSLMc1YGSGb1ZXHSe1CgB5A4D4A3E3C2A10A19B6B2==',\r\n toolbarInline: true,\r\n charCounterCount: false,\r\n attribution: false,\r\n toolbarVisibleWithoutSelection: true,\r\n fontSizeDefaultSelection: '24',\r\n fontSizeSelection: true,\r\n heightMax: $(_$itemHtml).height(),\r\n events: {\r\n 'initialized': function () {\r\n frEditor.html.set(item.ContentText);\r\n frEditor.edit.off();\r\n },\r\n\r\n }\r\n })\r\n }\r\n else if (item.ContentTypeName == \"Image\") {\r\n let _$itemHtml = $(`\r\n `)\r\n _$itemHtml.appendTo(_$center);\r\n }\r\n else if (item.ContentTypeName == \"Video\") {\r\n var youtubeId = getYoutubeId(item.ContentText);\r\n if (youtubeId.includes(\"youtu\")) {\r\n let _$itemHtml = $(`\r\n `)\r\n _$itemHtml.appendTo(_$center);\r\n }\r\n else if (Shared.isValidUrl(item.ContentTex)) {\r\n let _$itemHtml = $(`\r\n `)\r\n _$itemHtml.appendTo(_$center);\r\n }\r\n else {\r\n let _$itemHtml = $(`\r\n \r\n `)\r\n _$itemHtml.appendTo(_$center);\r\n }\r\n }\r\n else if (item.ContentTypeName == \"Interactive Responder\") {\r\n var _$wrapElement = $(`
`);\r\n _$wrapElement.appendTo(_$center);\r\n var _$qaElement = RenderQuestion(item.Question.QuestionType, item.Question, item.Question, onDataChange, saveSubscribe);\r\n _$qaElement.appendTo(_$wrapElement);\r\n\r\n _$qaElement.find(\".preview_video\").css(\"height\", item.Height - _$qaElement.find(\".qa-area\").height());\r\n }\r\n //this is list question\r\n else if (item.ContentTypeName == \"Interactive Reviewer\") {\r\n console.log(\"____________review_____________\")\r\n var _$wrapElement = $(`
`);\r\n _$wrapElement.appendTo(_$center);\r\n var _$qaElement = RenderQuestion(item.Question.QuestionType, item.Question, item.Question, onDataChange, _saveSubscribe);\r\n _$qaElement.appendTo(_$wrapElement);\r\n\r\n _$qaElement.find(\".preview_video\").css(\"height\", item.Height - _$qaElement.find(\".qa-area\").height());\r\n }\r\n else if ((item.ContentText || \"\").includes(\"google.com/\")) {\r\n $(``).appendTo(_$center);\r\n }\r\n else if (item.ContentTypeName == \"Power point\" || item.ContentTypeName == \"Word Document\") {\r\n $(``).appendTo(_$center);\r\n }\r\n else if (item.ContentTypeName == \"Pdf document\") {\r\n $(`\r\n \r\n `).appendTo(_$center);\r\n }\r\n }\r\n _$center.css({ zoom: `${100 * _scale}%` })\r\n }\r\n\r\n function onDataChange(changedVal, qa, e, CanMoveNext, moveStatus) {\r\n\r\n console.log('item changed!!! ', qa);\r\n let item = qa;\r\n\r\n if (item.QuestionType == \"YesNo\") {\r\n\r\n if (item.YesNoAnswer === true) {\r\n if (Array.isArray(item.YesSecondary)) updateChildren(true, item.YesSecondary)\r\n if (Array.isArray(item.NoSecondary)) updateChildren(false, item.NoSecondary)\r\n }\r\n else if (item.YesNoAnswer === false) {\r\n if (Array.isArray(item.YesSecondary)) updateChildren(false, item.YesSecondary)\r\n if (Array.isArray(item.NoSecondary)) updateChildren(true, item.NoSecondary)\r\n }\r\n\r\n }\r\n else if (item.QuestionType == \"Scale\") {//for Scale\r\n if (item.ScaleAverage >= item.DisplaySecondaryCondition) {\r\n if (Array.isArray(item.ScaleSecondary)) updateChildren(true, item.ScaleSecondary)\r\n }\r\n else {\r\n if (Array.isArray(item.ScaleSecondary)) updateChildren(false, item.ScaleSecondary)\r\n }\r\n }\r\n else if (item.QuestionType == \"Option\") {//for Option\r\n if (item.AllowMultiSelectOption) {\r\n for (let i = 1; i <= 20; i++) {\r\n if ((item.SelectedOptions || \"\").includes(i)) {\r\n if (Array.isArray(item[`Option${i}Secondary`])) updateChildren(true, item[`Option${i}Secondary`])\r\n }\r\n else {\r\n if (Array.isArray(item[`Option${i}Secondary`])) updateChildren(false, item[`Option${i}Secondary`])\r\n }\r\n }\r\n }\r\n else {\r\n let activeIndex = item.SelectedOptionNumber;\r\n if (activeIndex != null) {\r\n for (let i = 1; i <= 20; i++) {\r\n if (activeIndex == i) {\r\n if (Array.isArray(item[`Option${i}Secondary`])) updateChildren(true, item[`Option${i}Secondary`])\r\n }\r\n else {\r\n if (Array.isArray(item[`Option${i}Secondary`])) updateChildren(false, item[`Option${i}Secondary`])\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function updateChildren(displayed, arr) {\r\n for (let item of arr) {\r\n item.displayed = displayed;\r\n item.update();\r\n }\r\n }\r\n\r\n function getYoutubeId(url) {\r\n var url = url || \"\"\r\n var regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\r\n var match = url.match(regExp);\r\n\r\n if (match && match[2].length === 11) {\r\n return \"https://www.youtube.com/embed/\" + match[2] + \"?rel=0&enablejsapi=1\"\r\n } else {\r\n return url;\r\n }\r\n }\r\n\r\n function getPDFId(url) {\r\n if (url.includes(\"id=\")) {\r\n var startIndex = url.indexOf(\"id=\") + 3;\r\n var endIndex = url.indexOf(\"/\", startIndex);\r\n if (endIndex != -1) {\r\n return url.substring(startIndex, endIndex);\r\n }\r\n else {\r\n return url.substring(startIndex);\r\n }\r\n }\r\n\r\n if (url.includes(\"key=\")) {\r\n var startIndex = url.indexOf(\"key=\") + 4;\r\n var endIndex = url.indexOf(\"#\", startIndex);\r\n return url.substring(startIndex, endIndex);\r\n }\r\n\r\n if (url.includes(\"/d/\")) {\r\n var startIndex = url.indexOf(\"/d/\") + 3;\r\n var endIndex = url.indexOf(\"/\", startIndex);\r\n return url.substring(startIndex, endIndex);\r\n }\r\n }\r\n\r\n})()\n\n\n// WEBPACK FOOTER //\n// ./Course/CoursePreviewNew/course_main.js","\r\n////////////////////Question Types///////////////////////\r\nfunction QuestionText() {\r\n let self = this;\r\n this.props = {\r\n type: \"Text\",\r\n valueProp: \"TextAnswer\",\r\n element: null,\r\n questionArea: null,\r\n displayed: true,\r\n disabled: false,\r\n activeItem: null\r\n }\r\n this.render = function (item, props) {\r\n self.item = item;\r\n self.props = { ...self.props, ...props };\r\n let id = `txt_${Math.random().toString(36).substr(2)}`;\r\n self.id = id;\r\n self.item.DomId = id;\r\n //create template \r\n var elementTemplate =\r\n `
\r\n
\r\n
\r\n
\r\n
\r\n
`;\r\n var elementDom = $(elementTemplate);\r\n\r\n self.element = elementDom;\r\n self.questionArea = elementDom.find(`.qa-ask[data-for=${id}]`);\r\n self.answerArea = elementDom.find(`.textarea[data-for=${id}]`);\r\n\r\n self.answerArea.data(\"QuestionText\", self);\r\n\r\n ////bind handler ///\r\n var searchVal = null;\r\n var lastTxt = null;\r\n self.answerArea.off(\"propertychange change paste input\")\r\n .on(\"propertychange change paste input\", (e) => {\r\n let searchTxt = $(e.target).html();\r\n searchVal = setTimeout(function () {\r\n if (searchTxt == $(e.target).html() && searchTxt != lastTxt) {\r\n lastTxt = searchTxt;\r\n if (preventEventIf(e, self.props.disabled)) {\r\n return;\r\n }\r\n if (typeof self.props.onChange == \"function\") {\r\n var changedVal = $(e.target).html();\r\n self.props[self.props.valueProp] = changedVal;\r\n self.item[self.props.valueProp] = changedVal;\r\n self.props.onChange(changedVal, self.props, e);//data, this, event\r\n }\r\n }\r\n }, 250);\r\n });\r\n\r\n ////bind essential props ////\r\n //disabled\r\n bindDisabled();\r\n //displayed\r\n bindDisplayed();\r\n //value\r\n bindValue();\r\n\r\n //return $ element\r\n //self.props.DOM = elementDom;\r\n //set update function\r\n self.item.update = self.update\r\n\r\n return elementDom;\r\n }\r\n //get props\r\n this.getProps = function () {\r\n return self.props;\r\n }\r\n //set props\r\n this.setProps = function (props) {\r\n self.props = { ...self.props, ...props };\r\n bindDisabled();\r\n bindDisplayed()\r\n bindValue();\r\n }\r\n\r\n function bindDisabled() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n\r\n if (self.props.disabled === true) {\r\n self.answerArea.attr('contenteditable', false);\r\n }\r\n else {\r\n self.answerArea.attr('contenteditable', true);\r\n }\r\n }\r\n function bindDisplayed() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n if (self.props.displayed === false) {\r\n self.element.hide();\r\n }\r\n else {\r\n self.element.show();\r\n }\r\n }\r\n function bindValue() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n self.questionArea.html(getVocative(self.props[\"Question\"]));\r\n self.answerArea.html(self.props[self.props.valueProp]);\r\n }\r\n\r\n this.update = function () {\r\n self.props = { ...self.props, ...self.item }\r\n bindDisabled();\r\n bindDisplayed()\r\n //bindValue();\r\n //self.questionArea.focus();\r\n }\r\n\r\n return this;\r\n}\r\n\r\nfunction QuestionAttachment() {\r\n let self = this;\r\n this.props = {\r\n type: \"Attachment\",\r\n valueProp: \"AttachmentName\",\r\n element: null,\r\n questionArea: null,\r\n displayed: true,\r\n disabled: false,\r\n activeItem: null\r\n }\r\n this.render = function (item, props) {\r\n self.item = item;\r\n self.props = { ...self.props, ...props };\r\n let id = `att_${Math.random().toString(36).substr(2)}`;\r\n self.id = id;\r\n self.item.DomId = id;\r\n //create template \r\n var elementTemplate =\r\n `
\r\n
\r\n
\r\n
\r\n \r\n
Drag and drop or upload file
\r\n
${self.props[\"QuestionAttachmentName\"] || \"\"} - ${convertByteSize(self.props[\"QuestionAttachmentSize\"])}
\r\n
Download
\r\n
\r\n
\r\n
`;\r\n var elementDom = $(elementTemplate);\r\n\r\n self.element = elementDom;\r\n self.questionArea = elementDom.find(`.qa-ask[data-for=${id}]`);\r\n self.answerArea = elementDom.find(`.filePicker[data-for=${id}]`);\r\n self.input = elementDom.find(`input[data-for=${id}]`);\r\n self.form = elementDom.find(`.qa-attachment[data-for=${id}]`);\r\n self.answerArea.data(\"QuestionAttachment\", self);\r\n\r\n ////bind handler ///\r\n self.input\r\n .off(\"change\")\r\n .on(\"change\", function (e) {\r\n if (preventEventIf(e, self.props.disabled)) {\r\n return;\r\n }\r\n if (typeof self.props.onChange == \"function\") {\r\n var input = self.input;\r\n\r\n var file = new File([input[0].files[0]], input[0].files[0].name);\r\n var formData = new FormData();\r\n formData.append('filename', file.name);\r\n formData.append('blob', file);\r\n formData.append('ContactTemplateResponderDetailsID', self.props.ContactTemplateResponderDetailsID);\r\n self.element.find(`.qa-fileName[data-for=${id}]`).text(`${file.name} - ${convertByteSize(file.size)} `).show();\r\n self.element.find(`.qa-download[data-for=${id}]`).show();\r\n input.val(\"\");\r\n\r\n self.URL = URL.createObjectURL(file);\r\n self.FileName = file.name;\r\n\r\n self.props[self.props.valueProp] = file.name;\r\n self.item[self.props.valueProp] = file.name;\r\n //self.props.onChange(null, self.props, e);//data, this, event\r\n self.AddData = formData;\r\n self.save(e);\r\n }\r\n })\r\n //bind drag and drop\r\n self.form.on('drag dragstart dragend dragover dragenter dragleave drop', function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n })\r\n .on('dragover dragenter', function () {\r\n self.form.addClass('is-dragover');\r\n })\r\n .on('dragleave dragend drop', function () {\r\n self.form.removeClass('is-dragover');\r\n })\r\n .on('drop', function (e) {\r\n var file = e.originalEvent.dataTransfer.files[0];\r\n var formData = new FormData();\r\n formData.append('filename', file.name);\r\n formData.append('blob', file);\r\n formData.append('ContactTemplateResponderDetailsID', self.props.ContactTemplateResponderDetailsID);\r\n self.element.find(`.qa-fileName[data-for=${id}]`).text(`${file.name} - ${convertByteSize(file.size)} `).show();\r\n self.element.find(`.qa-download[data-for=${id}]`).show();\r\n\r\n self.URL = URL.createObjectURL(file);\r\n self.FileName = file.name;\r\n\r\n self.props[self.props.valueProp] = file.name;\r\n self.item[self.props.valueProp] = file.name;\r\n //self.props.onChange(null, self.props, e);//data, this, event\r\n self.AddData = formData;\r\n self.save(e);\r\n });\r\n\r\n let filePicker = self.element.find(`.filePicker[data-for=${id}]`);\r\n filePicker.off(\"click.uploadFile\").on(\"click.uploadFile\", () => {\r\n self.input.trigger(\"click\");\r\n });\r\n let download = self.element.find(`.qa-download[data-for=${id}]`);\r\n download.off(\"click.downLoad\").on(\"click.downLoad\", () => {\r\n\r\n var tempLink = document.createElement('a');\r\n document.body.appendChild(tempLink);\r\n tempLink.style.display = 'none';\r\n tempLink.href = self.URL || (`/Assessment/GetDocumentByDocumentId?id=${self.props.QuestionAttachmentId}`);\r\n tempLink.setAttribute('download', self.FileName);\r\n\r\n if (typeof tempLink.download === 'undefined') {\r\n tempLink.setAttribute('target', '_blank');\r\n }\r\n\r\n\r\n\r\n setTimeout(function () {\r\n tempLink.click();\r\n document.body.removeChild(tempLink);\r\n window.URL.revokeObjectURL(tempLink.href);\r\n\r\n }, 100)\r\n\r\n });\r\n\r\n ////bind essential props ////\r\n //disabled\r\n bindDisabled();\r\n //displayed\r\n bindDisplayed();\r\n //value\r\n bindValue();\r\n\r\n //return $ element\r\n //self.props.DOM = elementDom;\r\n //set update function\r\n self.item.update = self.update;\r\n\r\n //self.saveSubscribe.push(self.save);\r\n\r\n return elementDom;\r\n }\r\n\r\n this.save = function (e) {\r\n Shared.setBusy(self.form, true)\r\n $.ajax({\r\n url: \"/Assessment/AttachFile\",\r\n type: 'post',\r\n data: self.AddData,\r\n contentType: false,\r\n processData: false,\r\n success: function (data) {\r\n Shared.setBusy(self.form, false)\r\n if (data.success == JBErrorCode.Error) {\r\n window.gsAlert.dialog({\r\n type: \"danger\",\r\n dialogClass: \"simple-dlg\",\r\n title: \"Some thing went wrong\",\r\n des: data.message,\r\n btnok_text: \"OK\",\r\n btnclose_text: \"Cancel\",\r\n success: function (result) {\r\n },\r\n close: function (result) {\r\n },\r\n })\r\n return;\r\n }\r\n\r\n self.props[self.props.valueProp] = data.ID;\r\n self.item[self.props.valueProp] = data.ID;\r\n self.props.onChange(null, self.props, e);//data, this, event\r\n\r\n\r\n }\r\n });\r\n }\r\n\r\n //get props\r\n this.getProps = function () {\r\n return self.props;\r\n }\r\n //set props\r\n this.setProps = function (props) {\r\n self.props = { ...self.props, ...props };\r\n bindDisabled();\r\n bindDisplayed()\r\n bindValue();\r\n }\r\n\r\n function bindDisabled() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n\r\n if (self.props.disabled === true) {\r\n self.answerArea[0].disabled = true;\r\n self.answerArea[0].style.display = \"none\";\r\n }\r\n else {\r\n self.answerArea[0].disabled = false;\r\n self.answerArea[0].style.display = \"inline-block\";\r\n }\r\n }\r\n function bindDisplayed() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n if (self.props.displayed === false) {\r\n self.element.hide();\r\n }\r\n else {\r\n self.element.show();\r\n }\r\n\r\n if (self.props.disabled === true) {\r\n self.answerArea[0].style.display = \"none\";\r\n }\r\n else {\r\n self.answerArea[0].style.display = \"inline-block\";\r\n }\r\n }\r\n function bindValue() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n self.questionArea.html(getVocative(self.props[\"Question\"]));\r\n //self.answerArea.html(self.props[self.props.valueProp]);\r\n }\r\n\r\n this.update = function () {\r\n self.props = { ...self.props, ...self.item }\r\n bindDisabled();\r\n bindDisplayed()\r\n //bindValue();\r\n //self.questionArea.focus();\r\n }\r\n\r\n return this;\r\n}\r\n\r\nfunction QuestionNumber() {\r\n let self = this;\r\n this.props = {\r\n type: \"Number\",\r\n valueProp: \"NumberAnswer\",\r\n element: null,\r\n questionArea: null,\r\n displayed: true,\r\n disabled: false,\r\n activeItem: null\r\n }\r\n this.render = function (item, props) {\r\n self.item = item;\r\n self.props = { ...self.props, ...props };\r\n let id = `num_${Math.random().toString(36).substr(2)}`;\r\n self.id = id;\r\n self.item.DomId = id;\r\n\r\n //create template \r\n var elementTemplate =\r\n `
\r\n
\r\n
\r\n
Please enter a number to answer!
\r\n \r\n
\r\n
`;\r\n var elementDom = $(elementTemplate);\r\n\r\n self.element = elementDom;\r\n self.questionArea = elementDom.find(`.qa-ask[data-for=${id}]`);\r\n self.answerArea = elementDom.find(`.qa-number[data-for=${id}]`);\r\n\r\n self.answerArea.data(\"QuestionText\", self);\r\n\r\n ////bind handler ///\r\n self.answerArea\r\n .off(\"propertychange change paste input\")\r\n .on(\"propertychange change paste input\", function (e) {\r\n if (preventEventIf(e, self.props.disabled)) {\r\n return;\r\n }\r\n if (typeof self.props.onChange == \"function\") {\r\n var changedVal = elementDom.find(`.qa-number[data-for=${id}]`).val();\r\n self.props[self.props.valueProp] = changedVal;\r\n self.item[self.props.valueProp] = changedVal;\r\n self.props.onChange(changedVal, self.props, e);//data, this, event\r\n }\r\n })\r\n\r\n ////bind essential props ////\r\n //disabled\r\n bindDisabled();\r\n //displayed\r\n bindDisplayed();\r\n //value\r\n bindValue();\r\n\r\n //return $ element\r\n //self.props.DOM = elementDom;\r\n //set update function\r\n self.item.update = self.update\r\n\r\n return elementDom;\r\n }\r\n //get props\r\n this.getProps = function () {\r\n return self.props;\r\n }\r\n //set props\r\n this.setProps = function (props) {\r\n self.props = { ...self.props, ...props };\r\n bindDisabled();\r\n bindDisplayed()\r\n bindValue();\r\n }\r\n\r\n function bindDisabled() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n\r\n if (self.props.disabled === true) {\r\n self.answerArea.prop('disabled', true);\r\n }\r\n else {\r\n self.answerArea.prop('disabled', false);\r\n }\r\n }\r\n function bindDisplayed() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n if (self.props.displayed === false) {\r\n self.element.hide();\r\n }\r\n else {\r\n self.element.show();\r\n }\r\n }\r\n function bindValue() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n self.questionArea.html(getVocative(self.props[\"Question\"]));\r\n self.answerArea.val(self.props[self.props.valueProp]);\r\n }\r\n\r\n this.update = function () {\r\n self.props = { ...self.props, ...self.item }\r\n bindDisabled();\r\n bindDisplayed()\r\n //bindValue();\r\n //self.questionArea.focus();\r\n }\r\n\r\n return this;\r\n}\r\n\r\nfunction QuestionDate() {\r\n let self = this;\r\n this.props = {\r\n type: \"Date\",\r\n valueProp: \"DateAnswer\",\r\n element: null,\r\n questionArea: null,\r\n displayed: true,\r\n disabled: false,\r\n activeItem: null\r\n }\r\n this.render = function (item, props) {\r\n self.item = item;\r\n self.props = { ...self.props, ...props };\r\n let id = `d_${Math.random().toString(36).substr(2)}`;\r\n self.id = id;\r\n self.item.DomId = id;\r\n\r\n //create template \r\n var elementTemplate =\r\n `
\r\n
\r\n
\r\n
Please enter a date to answer!
\r\n
\r\n
\r\n \r\n
\r\n
​ \r\n
\r\n
`;\r\n var elementDom = $(elementTemplate);\r\n\r\n self.element = elementDom;\r\n self.questionArea = elementDom.find(`.qa-ask[data-for=${id}]`);\r\n self.answerArea = elementDom.find(`.qa-date[data-for=${id}]`).first();\r\n self.answerArea.datepicker({\r\n dateFormat: 'dd/mm/yy',\r\n changeMonth: true,\r\n changeYear: true,\r\n yearRange: '1900:2100',\r\n beforeShow: function (input, inst) {\r\n $(inst.dpDiv).addClass('cs-datepicker');\r\n },\r\n });\r\n self.answerArea.data(\"QuestionText\", self);\r\n\r\n ////bind handler ///\r\n self.answerArea\r\n .off(\"propertychange change paste input\")\r\n .on(\"propertychange change paste input\", function (e) {\r\n if (preventEventIf(e, self.props.disabled)) {\r\n return;\r\n }\r\n if (typeof self.props.onChange == \"function\") {\r\n var changedVal = elementDom.find(`.qa-date[data-for=${id}]`).val();\r\n if (!!changedVal) {\r\n changedVal = $.datepicker.formatDate('yy-mm-dd', elementDom.find(`.qa-date[data-for=${id}]`).datepicker(\"getDate\")) //changedVal.datepicker(\"getDate\").slice(0, 10)\r\n }\r\n self.props[self.props.valueProp] = changedVal;\r\n self.item[self.props.valueProp] = changedVal;\r\n self.props.onChange(changedVal, self.props, e);//data, this, event\r\n }\r\n })\r\n\r\n ////bind essential props ////\r\n //disabled\r\n bindDisabled();\r\n //displayed\r\n bindDisplayed();\r\n //value\r\n bindValue();\r\n\r\n //return $ element\r\n //self.props.DOM = elementDom;\r\n //set update function\r\n self.item.update = self.update\r\n\r\n return elementDom;\r\n }\r\n //get props\r\n this.getProps = function () {\r\n return self.props;\r\n }\r\n //set props\r\n this.setProps = function (props) {\r\n self.props = { ...self.props, ...props };\r\n bindDisabled();\r\n bindDisplayed()\r\n bindValue();\r\n }\r\n\r\n function bindDisabled() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n\r\n if (self.props.disabled === true) {\r\n self.answerArea.prop('disabled', true);\r\n }\r\n else {\r\n self.answerArea.prop('disabled', false);\r\n }\r\n }\r\n function bindDisplayed() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n if (self.props.displayed === false) {\r\n self.element.hide();\r\n }\r\n else {\r\n self.element.show();\r\n }\r\n }\r\n function bindValue() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n self.questionArea.html(getVocative(self.props[\"Question\"]));\r\n if (self.props[self.props.valueProp] != null) {\r\n self.answerArea.datepicker('setDate', new Date(parseInt(self.props[self.props.valueProp].replace(/[^0-9 +]/g, ''))));\r\n\r\n }\r\n }\r\n\r\n this.update = function () {\r\n self.props = { ...self.props, ...self.item }\r\n bindDisabled();\r\n bindDisplayed()\r\n //bindValue();\r\n //self.questionArea.focus();\r\n }\r\n\r\n return this;\r\n}\r\n\r\nfunction QuestionYesNo() {\r\n let self = this;\r\n this.props = {\r\n type: \"YesNo\",\r\n valueProp: \"YesNoAnswer\",\r\n element: null,\r\n displayed: true,\r\n disabled: false,\r\n activeItem: null\r\n }\r\n this.render = function (item, props) {\r\n self.item = item;\r\n ////this ///\r\n self.props = { ...self.props, ...props };\r\n let id = `yn_${Math.random().toString(36).substr(2)}`;\r\n self.id = id;\r\n self.item.DomId = id;\r\n\r\n //create template \r\n let elementTemplate = `
\r\n
\r\n
\r\n
\r\n
Yes
\r\n
No
\r\n
\r\n
\r\n
`;\r\n\r\n //let elementWrap = $(elementTemplate);\r\n self.element = $(elementTemplate);\r\n\r\n self.questionArea = self.element.find(`.qa-ask[data-for=${id}]`);\r\n self.answerArea = self.element.find(`.qa-answer[data-for=${id}]`);\r\n self.element.data(\"QuestionYesNoAnswer\", self);\r\n\r\n ////bind essential props ////\r\n //disabled\r\n bindDisabled();\r\n //displayed\r\n bindDisplayed();\r\n //value\r\n bindValue();\r\n\r\n ////bind handler ///\r\n self.element.find(`.qa-yesno-item[data-for=${id}]`).off(\"click\").on(\"click\", function (e) {\r\n if (preventEventIf(e, self.props.disabled)) {\r\n return;\r\n }\r\n self.element.find(`.qa-yesno-item[data-for=${id}]`).removeClass(\"active\");\r\n\r\n let _thisItem = $(this);\r\n _thisItem.addClass(\"active\");\r\n console.log(_thisItem.data(\"val\"));\r\n\r\n if (typeof self.props.onChange == \"function\") {\r\n let changedVal = _thisItem.data(\"val\")\r\n self.props[self.props.valueProp] = changedVal;\r\n self.item[self.props.valueProp] = changedVal;//reflect item\r\n self.props.onChange(changedVal, self.props, e, true, null);//data, this, event\r\n }\r\n })\r\n\r\n\r\n if (self.props.YesSecondary != null) {\r\n for (let secondary of self.props.YesSecondary) {\r\n let secondaryElement = RenderQuestion(secondary.QuestionType, secondary, self.props.activeItem, self.props.onChange, self.saveSubscribe);\r\n secondaryElement.appendTo(self.element);\r\n }\r\n }\r\n if (self.props.NoSecondary != null) {\r\n for (let secondary of self.props.NoSecondary) {\r\n let secondaryElement = RenderQuestion(secondary.QuestionType, secondary, self.props.activeItem, self.props.onChange, self.saveSubscribe);\r\n secondaryElement.appendTo(self.element);\r\n }\r\n }\r\n\r\n //self.props.DOM = self.element;\r\n\r\n //set update function\r\n self.item.update = self.update\r\n\r\n //return $ element\r\n return self.element;\r\n }\r\n //get props\r\n this.getProps = function () {\r\n return self.props;\r\n }\r\n //set props\r\n this.setProps = function (props) {\r\n self.props = { ...self.props, ...props };\r\n self.bindDisabled();\r\n self.bindDisplayed();\r\n self.bindValue();\r\n }\r\n\r\n function bindDisabled() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n\r\n if (self.props.disabled === true) {\r\n self.element.attr('disabled', true);\r\n }\r\n else {\r\n self.element.attr('disabled', false);\r\n }\r\n }\r\n function bindDisplayed() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n if (self.props.displayed === false) {\r\n self.element.hide();\r\n }\r\n else {\r\n self.element.show();\r\n }\r\n }\r\n function bindValue() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n self.questionArea.html(getVocative(self.props[\"Question\"]));\r\n self.element.find(`.qa-yesno-item[data-for=${self.id}]`).each(function () {\r\n var _thisItem = $(this);\r\n if (_thisItem.data(\"val\") === self.props[self.props.valueProp]) {\r\n _thisItem.addClass(\"active\");\r\n }\r\n else {\r\n _thisItem.removeClass(\"active\");\r\n }\r\n });\r\n }\r\n\r\n this.update = function () {\r\n self.props = { ...self.props, ...self.item }\r\n bindDisabled();\r\n bindDisplayed()\r\n //bindValue();\r\n }\r\n\r\n return this;\r\n}\r\n\r\nfunction QuestionOption() {\r\n let self = this;\r\n this.props = {\r\n type: \"Option\",\r\n valueProp: \"SelectedOptionNumber\",\r\n selectedOptions: \"SelectedOptions\",\r\n element: null,\r\n displayed: true,\r\n disabled: false,\r\n Option1: \"\",\r\n Option2: \"\",\r\n Option3: \"\",\r\n Option4: \"\",\r\n Option5: \"\",\r\n activeItem: null\r\n }\r\n this.render = function (item, props) {\r\n self.item = item;\r\n ////this ///\r\n self.props = { ...self.props, ...props };\r\n //create template \r\n var textVal = self.props[self.props.valueProp];\r\n var id = `opt_${Math.random().toString(36).substr(2)}`;\r\n\r\n var elementTemplate =\r\n `
\r\n
\r\n
\r\n
\r\n

\r\n

\r\n

\r\n

\r\n

\r\n

\r\n

\r\n

\r\n

\r\n

\r\n
\r\n
\r\n
`;\r\n var elementDom = $(elementTemplate);\r\n\r\n self.id = id;\r\n self.item.DomId = id;\r\n\r\n self.element = elementDom;\r\n self.questionArea = elementDom.find(`.qa-ask[data-for=${id}]`);\r\n self.answerArea = elementDom.find(`.qa-answer[data-for=${id}]`);\r\n self.element.data(\"QuestionOption\", self);\r\n\r\n ////bind essential props ////\r\n //disabled\r\n bindDisabled();\r\n //displayed\r\n bindDisplayed();\r\n //value\r\n bindValue();\r\n\r\n ////bind handler ///\r\n elementDom.find(`.${id} .chk_lbl`).each(function () {\r\n let _$lbl = $(this);\r\n _$lbl.css({\r\n \"border-color\": self.props.StyleColor || \"#565656c4\",\r\n })\r\n _$lbl.off(\"click\").on(\"click\", function (e) {\r\n let _$chk = _$lbl.prev(\"input[type='checkbox']\");\r\n\r\n\r\n\r\n var otionValue = \"\";\r\n\r\n if (preventEventIf(e, self.props.disabled)) {\r\n return;\r\n }\r\n if (self.props.AllowMultiSelectOption) {\r\n _$chk[0].checked = true;\r\n }\r\n else {\r\n // elementDom.find(`.${id} input[type='checkbox'][id^=${id}]`).attr('checked', false);\r\n //$(this).attr('checked', true);\r\n for (let item of elementDom.find(`.${id} input[type='checkbox'][id^=${id}]`)) {\r\n item.checked = false;\r\n }\r\n _$chk[0].checked = true;\r\n }\r\n\r\n if (typeof self.props.onChange == \"function\") {\r\n var changedVal = _$chk.val();\r\n if (self.props.AllowMultiSelectOption) {///for multiple\r\n if (_$chk[0].checked == true) {\r\n if (self.props[self.props.selectedOptions]) {\r\n self.props[self.props.selectedOptions] = self.props[self.props.selectedOptions] + \",\" + changedVal\r\n self.item[self.props.selectedOptions] = self.item[self.props.selectedOptions] + \",\" + changedVal\r\n }\r\n else {\r\n self.props[self.props.selectedOptions] = changedVal\r\n self.item[self.props.selectedOptions] = changedVal\r\n }\r\n }\r\n else {\r\n self.props[self.props.selectedOptions] = self.props[self.props.selectedOptions].replace(`,${changedVal}`, ``).replace(`${changedVal}`, ``);\r\n self.item[self.props.selectedOptions] = self.item[self.props.selectedOptions].replace(`,${changedVal}`, ``).replace(`${changedVal}`, ``);\r\n //self.props.onChange(changedVal, self.props, e);//data, this, event\r\n }\r\n\r\n otionValue = self.item[self.props.selectedOptions];\r\n\r\n }\r\n else {///for single\r\n if (_$chk[0].checked == true) {\r\n self.props[self.props.valueProp] = changedVal;\r\n self.item[self.props.valueProp] = changedVal;\r\n }\r\n else {\r\n self.props[self.props.valueProp] = null;\r\n self.item[self.props.valueProp] = null;\r\n //self.props.onChange(changedVal, self.props, e);//data, this, event\r\n }\r\n\r\n otionValue = self.item[self.props.valueProp];\r\n }\r\n\r\n ////////////check if question can move next////\r\n var checkSubActionData = {\r\n CTRDsId: self.item.ContactTemplateResponderDetailsID,\r\n //OptionValue: self.item[self.props.selectedOptions],\r\n OptionValue: otionValue,\r\n ResponderType: \"Option\",\r\n }\r\n $.ajax({\r\n type: 'POST',\r\n url: \"/Assessment/GetAfterAnsweredAction\",\r\n data: checkSubActionData,\r\n\r\n success: function (data) {\r\n console.log(data);\r\n if (typeof self.props.onChange == \"function\") {\r\n var canNextQuestion = true;\r\n if (/*data.IsMoveToStatus ||*/ data.IsDirectRejection) {\r\n canNextQuestion = false;\r\n }\r\n self.props.onChange(changedVal, self.props, e, canNextQuestion, data.MoveStatus);//data, this, event\r\n }\r\n }\r\n })\r\n\r\n }\r\n })\r\n })\r\n\r\n //create secondary\r\n for (let i = 1; i <= 20; i++) {\r\n if (self.props[`Option${i}Secondary`] != null) {\r\n for (let secondary of self.props[`Option${i}Secondary`]) {\r\n let secondaryElement = RenderQuestion(secondary.QuestionType, secondary, self.props.activeItem, self.props.onChange, self.saveSubscribe);\r\n secondaryElement.appendTo(elementDom.find(`#${id}_${i}`).closest(`.divQuestionCheckOption.${id}`).find(\".content\"));\r\n }\r\n }\r\n }\r\n\r\n //return $ element\r\n //self.props.DOM = elementDom;\r\n //set update function\r\n self.item.update = self.update\r\n return elementDom;\r\n }\r\n //get props\r\n this.getProps = function () {\r\n return self.props;\r\n }\r\n //set props\r\n this.setProps = function (props) {\r\n self.props = { ...self.props, ...props };\r\n bindDisabled();\r\n bindDisplayed();\r\n bindValue();\r\n }\r\n\r\n function bindDisabled() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n\r\n if (self.props.disabled === true) {\r\n self.element.attr('disabled', true);\r\n }\r\n else {\r\n self.element.attr('disabled', false);\r\n }\r\n }\r\n function bindDisplayed() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n if (self.props.displayed === false) {\r\n self.element.hide();\r\n }\r\n else {\r\n self.element.show();\r\n }\r\n\r\n //bind each element\r\n self.element.find(`.divQuestionCheckOption.${self.id}`).each(function (index) {\r\n var _thisItem = $(this);\r\n if (!self.props[\"Option\" + (index + 1)]) {\r\n _thisItem.hide();\r\n }\r\n })\r\n }\r\n function bindValue() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n self.questionArea.html(getVocative(self.props[\"Question\"]));\r\n if (self.props.AllowMultiSelectOption) {//////for multiple///\r\n self.element.find(`.${self.id} input[type='checkbox']`).each(function (index) {\r\n var _thisItem = $(this);\r\n let _content = _thisItem.parent().find(\".content\").html(getVocative(self.props[\"Option\" + (index + 1)]));\r\n if ((self.props.SelectedOptions || \"\").includes(_thisItem.val())) {\r\n _thisItem.attr('checked', true);\r\n }\r\n else {\r\n _thisItem.attr('checked', false);\r\n }\r\n\r\n _content.css({\r\n \"color\": self.props.StyleColor || \"inherit\",\r\n \"font-size\": self.props.StyleFontSize || \"inherit\",\r\n \"font-family\": self.props.StyleFontFamily || \"inherit\",\r\n })\r\n })\r\n }\r\n else {\r\n self.element.find(`.${self.id} input[type='checkbox']`).each(function (index) {\r\n var _thisItem = $(this);\r\n let _content = _thisItem.parent().find(\".content\").html(getVocative(self.props[\"Option\" + (index + 1)]));\r\n if (_thisItem.val() == self.props[self.props.valueProp]) {\r\n _thisItem.attr('checked', true);\r\n }\r\n else {\r\n _thisItem.attr('checked', false);\r\n }\r\n\r\n _content.css({\r\n \"color\": self.props.StyleColor || \"inherit\",\r\n \"font-size\": self.props.StyleFontSize || \"inherit\",\r\n \"font-family\": self.props.StyleFontFamily || \"inherit\",\r\n })\r\n })\r\n }\r\n }\r\n\r\n this.update = function () {\r\n self.props = { ...self.props, ...self.item }\r\n bindDisabled();\r\n bindDisplayed()\r\n //bindValue();\r\n }\r\n\r\n return this;\r\n}\r\n\r\n\r\nfunction QuestionScale() {\r\n let self = this;\r\n this.props = {\r\n type: \"Scale\",\r\n valueProp: \"ScaleAverage\",\r\n element: null,\r\n displayed: true,\r\n disabled: false,\r\n activeItem: null\r\n }\r\n this.render = function (item, props) {\r\n self.item = item;\r\n ////this ///\r\n self.props = { ...self.props, ...props };\r\n let id = `scl_${Math.random().toString(36).substr(2)}`;\r\n self.id = id;\r\n self.item.DomId = id;\r\n\r\n\r\n //create template \r\n var elementWrap = $(`
\r\n
\r\n
\r\n ${self.props.ScaleMinRange != null && self.props.ScaleMaxRange != null ?\r\n \"
\"\r\n + self.props.ScaleMinRange\r\n + \"
\"\r\n + self.props.ScaleMaxRange\r\n + \"
\" : \"\"\r\n }\r\n
`)\r\n\r\n self.element = elementWrap;\r\n self.questionArea = elementWrap.find(`.qa-ask[data-for=${id}]`);\r\n self.answerArea = elementWrap.find(`.qa-answer[data-for=${id}]`);\r\n\r\n\r\n elementWrap.data(\"QuestionScale\", self);\r\n\r\n ////bind handler ///\r\n $.ui.slider({\r\n range: \"min\",\r\n value: self.props[self.props.valueProp],\r\n min: self.props.ScaleMinRange,\r\n max: self.props.ScaleMaxRange,\r\n step: 1,\r\n slide: function (e, ui) {\r\n elementWrap.find(\".ui-slider-handle\").first().text(self.props.HideNumberOptions ? \"\" : ui.value);//???this have to take fisrtttttttttt???\r\n },\r\n stop: function (e, ui) {\r\n\r\n var changedVal = ui.value;\r\n self.props[self.props.valueProp] = changedVal;\r\n self.item[self.props.valueProp] = changedVal;//reflect item\r\n\r\n self.props.onChange(changedVal, self.props, e, true, null);//data, this, event\r\n\r\n },\r\n disabled: self.props.disabled\r\n }, self.answerArea)\r\n\r\n ////bind essential props ////\r\n //disabled\r\n bindDisabled();\r\n //displayed\r\n bindDisplayed();\r\n //value\r\n bindValue();\r\n\r\n if (self.props.ScaleSecondary != null) {\r\n for (let secondary of self.props.ScaleSecondary) {\r\n let secondaryElement = RenderQuestion(secondary.QuestionType, secondary, self.props.activeItem, self.props.onChange, self.saveSubscribe);\r\n secondaryElement.appendTo(elementWrap);\r\n }\r\n }\r\n\r\n //return $ element\r\n //self.props.DOM = elementWrap;\r\n //set update function\r\n self.item.update = self.update\r\n\r\n return elementWrap;\r\n }\r\n //get props\r\n this.getProps = function () {\r\n return self.props;\r\n }\r\n //set props\r\n this.setProps = function (props) {\r\n self.props = { ...self.props, ...props };\r\n bindDisabled();\r\n bindDisplayed();\r\n bindValue();\r\n }\r\n\r\n function bindDisabled() {\r\n if (self.elementWrap == null) {\r\n return;\r\n }\r\n\r\n if (self.props.disabled === true) {\r\n //self.element.attr('disabled', true);\r\n //self.answerArea.slider({ disabled: true });\r\n $.ui.slider({ disabled: true }, self.answerArea)\r\n }\r\n else {\r\n //self.element.attr('disabled', false);\r\n //self.answerArea.slider({ disabled: false });\r\n $.ui.slider({ disabled: false }, self.answerArea)\r\n\r\n }\r\n }\r\n\r\n function bindDisplayed() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n if (self.props.displayed === false) {\r\n self.element.hide();\r\n }\r\n else {\r\n self.element.show();\r\n }\r\n }\r\n function bindValue() {\r\n\r\n if (self.element == null) {\r\n return;\r\n }\r\n self.questionArea.html(getVocative(self.props[\"Question\"]));\r\n if (self.props[\"ScaleAverage\"]) {\r\n self.element.find(\".ui-slider-handle\").first().text(self.props[\"ScaleAverage\"]);//???this have to take fisrtttttttttt???\r\n }\r\n }\r\n\r\n this.update = function () {\r\n self.props = { ...self.props, ...self.item }\r\n bindDisabled();\r\n bindDisplayed()\r\n //bindValue();\r\n }\r\n\r\n return this;\r\n}\r\n\r\nfunction QuestionMood() {\r\n let self = this;\r\n this.props = {\r\n type: \"Mood\",\r\n valueProp: \"SelectedOptionNumber\",\r\n element: null,\r\n questionArea: null,\r\n displayed: true,\r\n disabled: false,\r\n activeItem: null\r\n }\r\n this.render = function (item, props) {\r\n self.item = item;\r\n self.props = { ...self.props, ...props };\r\n let id = `moo_${Math.random().toString(36).substr(2)}`;\r\n self.id = id;\r\n self.item.DomId = id;\r\n //create template \r\n var elementTemplate =\r\n `
\r\n
\r\n
\r\n
\r\n
\r\n
Poor
\r\n
\r\n
\r\n
Needs Work
\r\n
\r\n
\r\n
Okay
\r\n
\r\n
\r\n
Good
\r\n
\r\n
\r\n
Excellent
\r\n
\r\n
\r\n
\r\n
\r\n
`;\r\n var elementDom = $(elementTemplate);\r\n\r\n self.element = elementDom;\r\n self.questionArea = elementDom.find(`.qa-ask[data-for=${id}]`);\r\n self.answerArea = elementDom.find(`.qa-mood[data-for=${id}]`);\r\n\r\n self.answerArea.data(\"QuestionText\", self);\r\n\r\n\r\n self.answerArea.find(`.mood-value`).off(\"click\").on(\"click\", function (e) {\r\n self.answerArea.find(`.mood-value`).removeClass(\"active\");\r\n $(this).addClass(\"active\");\r\n if (preventEventIf(e, self.props.disabled)) {\r\n return;\r\n }\r\n if (typeof self.props.onChange == \"function\") {\r\n var changedVal = $(this).data(\"for\");\r\n self.props[self.props.valueProp] = changedVal;\r\n self.item[self.props.valueProp] = changedVal;\r\n self.props.onChange(changedVal, self.props, e);//data, this, event\r\n }\r\n })\r\n\r\n ////bind essential props ////\r\n //disabled\r\n bindDisabled();\r\n //displayed\r\n bindDisplayed();\r\n //value\r\n bindValue();\r\n\r\n //return $ element\r\n //self.props.DOM = elementDom;\r\n //set update function\r\n self.item.update = self.update\r\n\r\n return elementDom;\r\n }\r\n //get props\r\n this.getProps = function () {\r\n return self.props;\r\n }\r\n //set props\r\n this.setProps = function (props) {\r\n self.props = { ...self.props, ...props };\r\n bindDisabled();\r\n bindDisplayed()\r\n bindValue();\r\n }\r\n\r\n function bindDisabled() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n\r\n if (self.props.disabled === true) {\r\n self.answerArea.find(`.mood-value`).off();\r\n }\r\n\r\n }\r\n function bindDisplayed() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n if (self.props.displayed === false) {\r\n self.element.hide();\r\n }\r\n else {\r\n self.element.show();\r\n }\r\n }\r\n function bindValue() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n self.questionArea.html(getVocative(self.props[\"Question\"]));\r\n self.answerArea.find(`.mood-value[data-for=${self.props[self.props.valueProp]}]`).addClass(\"active\");\r\n }\r\n\r\n this.update = function () {\r\n self.props = { ...self.props, ...self.item }\r\n bindDisabled();\r\n bindDisplayed()\r\n }\r\n\r\n return this;\r\n}\r\n\r\nfunction QuestionImage() {\r\n let self = this;\r\n this.props = {\r\n type: \"Image\",\r\n valueProp: \"ImageId\",\r\n element: null,\r\n questionArea: null,\r\n displayed: true,\r\n disabled: false,\r\n activeItem: null,\r\n ImageW: null,\r\n ImageH: null,\r\n }\r\n this.render = function (item, props) {\r\n \r\n self.item = item;\r\n self.props = { ...self.props, ...props };\r\n let id = `att_${Math.random().toString(36).substr(2)}`;\r\n self.id = id;\r\n self.item.DomId = id;\r\n\r\n //create template \r\n var elementTemplate =\r\n `
\r\n
\r\n
\r\n
\r\n \r\n
\r\n Upload Image\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
Remove image
\r\n
\r\n
`;\r\n var elementDom = $(elementTemplate);\r\n\r\n self.element = elementDom;\r\n self.questionArea = elementDom.find(`.qa-ask[data-for=${id}]`);\r\n self.answerArea = elementDom.find(`.image-picker[data-for=${id}]`);\r\n self.input = elementDom.find(`input[data-for=${id}]`);\r\n self.form = elementDom.find(`.qa-image[data-for=${id}]`);\r\n self.answerArea.data(\"QuestionImage\", self);\r\n\r\n self.saveCroppie = elementDom.find(`.image-item-save[data-for=${id}]`);\r\n self.scaleCroppie = elementDom.find(`.image-item-scale[data-for=${id}]`);\r\n self.removeCroppie = elementDom.find(`.image-item-remove[data-for=${id}]`);\r\n\r\n self.actions = elementDom.find(`.image-actions[data-for=${id}]`);\r\n\r\n self.imagePanel = elementDom.find(`.image-wrap[data-for=${id}]`);\r\n\r\n var opts = {\r\n viewport: {\r\n width: self.props.ImageW,\r\n height: self.props.ImageH\r\n },\r\n boundary: {\r\n width: self.props.ImageW,\r\n height: self.props.ImageH\r\n },\r\n enableExif: true,\r\n enableZoom: false,\r\n enableResize: false\r\n }\r\n\r\n if (!self.props[self.props.valueProp]) {\r\n opts.boundary = {\r\n width: self.props.ImageW,\r\n height: self.props.ImageH\r\n }\r\n\r\n opts.enableZoom = true;\r\n opts.enableResize = true;\r\n }\r\n\r\n self.croppieItem = self.imagePanel.croppie(opts);\r\n\r\n if (self.props[self.props.valueProp]) {\r\n self.croppieItem.croppie('bind', {\r\n url: `/Image/GetImage?id=${self.props[self.props.valueProp]}&imageid=${id})`,\r\n });\r\n }\r\n\r\n\r\n ////bind handler ///\r\n self.input\r\n .off(\"change\")\r\n .on(\"change\", function (e) {\r\n Shared.setBusy(self.form, true)\r\n if (preventEventIf(e, self.props.disabled)) {\r\n return;\r\n }\r\n if (typeof self.props.onChange == \"function\") {\r\n var input = self.input;\r\n\r\n //var file = new File([input[0].files[0]], input[0].files[0].name);\r\n\r\n //self.URL = URL.createObjectURL(file);\r\n //self.FileName = file.name;\r\n\r\n\r\n\r\n var img = new Image;\r\n\r\n img.onload = function () {\r\n var canvas = document.createElement(\"canvas\");\r\n var ctx = canvas.getContext(\"2d\");\r\n var iw = img.width;\r\n var ih = img.height;\r\n var scale = Math.min((self.props.ImageW / iw), (self.props.ImageH / ih));\r\n var iwScaled = iw * scale;\r\n var ihScaled = ih * scale;\r\n canvas.width = iwScaled;\r\n canvas.height = ihScaled;\r\n ctx.drawImage(img, 0, 0, iwScaled, ihScaled);\r\n\r\n var thumb = new Image();\r\n thumb.onload = function () {\r\n\r\n console.log(\"thumb loaded\");\r\n\r\n\r\n self.URL = thumb.src;\r\n self.FileName = input[0].files[0].name;\r\n\r\n //\r\n self.element.find(\".no-image\").removeClass(\"no-image\");\r\n\r\n self.imagePanel.croppie(\"destroy\");\r\n\r\n self.croppieItem = self.imagePanel.croppie({\r\n viewport: {\r\n width: iwScaled,\r\n height: ihScaled\r\n },\r\n boundary: {\r\n width: iwScaled,\r\n height: ihScaled\r\n },\r\n enableExif: true,\r\n enableZoom: false,\r\n });\r\n\r\n self.imagePanel.croppie(\"bind\", {\r\n url: self.URL,\r\n });\r\n\r\n console.log({ iwScaled, ihScaled });\r\n console.log(\"saving to server\")\r\n\r\n //dont understand why yet\r\n setTimeout(function () {\r\n\r\n\r\n self.croppieItem.croppie('result', {\r\n type: 'blob',\r\n size: 'original',\r\n quality: 1,\r\n }).then(function (resp) {\r\n console.log(resp)\r\n var formData = new FormData();\r\n formData.append('ContactTemplateResponderDetailsID', self.props.ContactTemplateResponderDetailsID);\r\n formData.append('blob', resp, \"fileupload.png\");\r\n\r\n self.AddData = formData;\r\n self.save(e);\r\n\r\n\r\n });\r\n\r\n }, 200);\r\n }\r\n thumb.src = canvas.toDataURL(\"image/png\", 1);\r\n\r\n }\r\n img.src = URL.createObjectURL(input[0].files[0]);\r\n\r\n\r\n\r\n\r\n\r\n }\r\n })\r\n\r\n\r\n let filePicker = self.element.find(`.image-picker[data-for=${id}]`);\r\n filePicker.off(\"click.uploadFile\").on(\"click.uploadFile\", (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n self.input.trigger(\"click\");\r\n });\r\n self.removeCroppie.off(\"click\").on(\"click\", function (e) {\r\n self.form.addClass(\"no-image\")\r\n if (self.croppieItem) {\r\n self.imagePanel.croppie(\"destroy\");\r\n self.croppieItem = self.imagePanel.croppie({\r\n viewport: {\r\n width: self.props.ImageW,\r\n height: self.props.ImageH\r\n },\r\n boundary: {\r\n width: self.props.ImageW,\r\n height: self.props.ImageH\r\n },\r\n enableExif: true,\r\n enableZoom: false,\r\n });\r\n\r\n self.imagePanel.croppie(\"bind\", {\r\n url: self.URL,\r\n });\r\n }\r\n })\r\n\r\n\r\n self.saveCroppie.off(\"click\").on(\"click\", function (e) {\r\n\r\n console.log(\"saving to server\")\r\n\r\n self.croppieItem.croppie('result', {\r\n type: 'blob',\r\n size: {\r\n width: self.props.ImageW,\r\n height: self.props.ImageH\r\n }\r\n }).then(function (resp) {\r\n var formData = new FormData();\r\n formData.append('ContactTemplateResponderDetailsID', self.props.ContactTemplateResponderDetailsID);\r\n formData.append('blob', resp, \"fileupload.blob\");\r\n\r\n self.AddData = formData;\r\n self.save(e);\r\n\r\n\r\n });\r\n\r\n\r\n\r\n })\r\n\r\n\r\n self.scaleCroppie.off().on(\"click\", function () {\r\n\r\n })\r\n\r\n ////bind essential props ////\r\n //disabled\r\n bindDisabled();\r\n //displayed\r\n bindDisplayed();\r\n //value\r\n bindValue();\r\n\r\n //return $ element\r\n //self.props.DOM = elementDom;\r\n //set update function\r\n self.item.update = self.update;\r\n\r\n //self.saveSubscribe.push(self.save);\r\n\r\n return elementDom;\r\n }\r\n\r\n this.save = function (e) {\r\n Shared.setBusy(self.form, true)\r\n $.ajax({\r\n url: \"/Assessment/AttachFile\",\r\n type: 'post',\r\n data: self.AddData,\r\n contentType: false,\r\n processData: false,\r\n success: function (data) {\r\n Shared.setBusy(self.form, false)\r\n if (data.success == JBErrorCode.Error) {\r\n window.gsAlert.dialog({\r\n type: \"danger\",\r\n dialogClass: \"simple-dlg\",\r\n title: \"Some thing went wrong\",\r\n des: data.message,\r\n btnok_text: \"OK\",\r\n btnclose_text: \"Cancel\",\r\n success: function (result) {\r\n },\r\n close: function (result) {\r\n },\r\n })\r\n return;\r\n }\r\n\r\n\r\n alertify.success(\"upload image successful\")\r\n\r\n self.props[self.props.valueProp] = data.ID;\r\n self.item[self.props.valueProp] = data.ID;\r\n\r\n //more about size of image\r\n self.item[\"ImageW\"] = self.props[\"ImageW\"];\r\n self.item[\"ImageH\"] = self.props[\"ImageH\"];\r\n\r\n\r\n\r\n \r\n self.props.onChange(null, self.props, e);//data, this, event\r\n }\r\n });\r\n }\r\n\r\n //get props\r\n this.getProps = function () {\r\n\r\n //\r\n //self.props[\"imageWidth\"] = self.image.width();\r\n //self.props[\"imageHeight\"] = self.image.height();\r\n //console.log({\r\n // w: self.image.width(),\r\n // h: self.image.height()\r\n //});\r\n\r\n return self.props;\r\n }\r\n //set props\r\n this.setProps = function (props) {\r\n self.props = { ...self.props, ...props };\r\n bindDisabled();\r\n bindDisplayed()\r\n bindValue();\r\n }\r\n\r\n function bindDisabled() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n\r\n if (self.props.disabled === true) {\r\n self.element.find(`.image-actions`).remove();\r\n self.answerArea.find(`.image-picker`).remove();\r\n self.answerArea.find(`.input[type='file']`).remove();\r\n }\r\n }\r\n function bindDisplayed() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n if (self.props.displayed === false) {\r\n self.element.hide();\r\n }\r\n else {\r\n self.element.show();\r\n }\r\n\r\n if (self.props.disabled === true) {\r\n self.answerArea[0].style.display = \"none\";\r\n }\r\n else {\r\n self.answerArea[0].style.display = \"inline-block\";\r\n }\r\n }\r\n function bindValue() {\r\n if (self.element == null) {\r\n return;\r\n }\r\n self.questionArea.html(getVocative(self.props[\"Question\"]));\r\n //self.answerArea.html(self.props[self.props.valueProp]);\r\n }\r\n\r\n this.update = function () {\r\n self.props = { ...self.props, ...self.item }\r\n bindDisabled();\r\n bindDisplayed()\r\n //bindValue();\r\n //self.questionArea.focus();\r\n }\r\n\r\n return this;\r\n}\r\n\r\n\r\nfunction QuestionVideo() {\r\n\r\n var video = new videoRecord();\r\n this.render = video.render;\r\n return this;\r\n}\r\n\r\n\r\nfunction RenderQuestion(Type, item, activeItem, dataChangeCallBack, saveSubscribe, height) {\r\n let qaElement = null;\r\n switch (Type) {\r\n case \"Text\":\r\n qaElement = new QuestionText();\r\n break;\r\n case \"Scale\":\r\n qaElement = new QuestionScale();\r\n break;\r\n case \"YesNo\":\r\n qaElement = new QuestionYesNo();\r\n break;\r\n case \"Option\":\r\n qaElement = new QuestionOption();\r\n break;\r\n case \"Video\":\r\n qaElement = new QuestionVideo();\r\n break;\r\n case \"Date\":\r\n qaElement = new QuestionDate();\r\n break;\r\n case \"Number\":\r\n qaElement = new QuestionNumber();\r\n break;\r\n case \"Attachment\":\r\n qaElement = new QuestionAttachment();\r\n break;\r\n case \"Mood\":\r\n qaElement = new QuestionMood();\r\n break;\r\n case \"Image\":\r\n qaElement = new QuestionImage();\r\n break;\r\n }\r\n qaElement.saveSubscribe = saveSubscribe;\r\n var nodeDom = qaElement.render(item, { ...item, onChange: dataChangeCallBack, height });\r\n\r\n if (item.AskAttachmentId != null) {\r\n createDownloadSection(item, nodeDom);\r\n }\r\n return nodeDom;\r\n}\r\n\r\n\r\nfunction createDownloadSection(itemData, itemElement) {\r\n let attachment = $(`
\r\n
${itemData.AskAttachmentName || \"\"} - ${convertByteSize(itemData.AskAttachmentSize)}
\r\n
Download
\r\n
`);\r\n //\r\n attachment.insertAfter(itemElement.find(`.qa-ask[data-for=${itemData.DomId}]`));\r\n $(`
`).insertAfter(attachment);\r\n let download = $('.qa-download', attachment).show();\r\n download.off(\"click.downLoad\").on(\"click.downLoad\", () => {\r\n itemData.IsDownloadedAttachment = true;\r\n $.post(\"/Assessment/MarkQuestionDownloaded\", { ContactTemplateResponderDetailsId: itemData.ContactTemplateResponderDetailsID }, function () {\r\n\r\n });\r\n window.location.href = `/Assessment/GetDocumentByDocumentId?id=${itemData.AskAttachmentId}`;\r\n });\r\n}\r\n\r\nfunction convertByteSize(size) {\r\n if (size >= 1024 * 1024) {//MB\r\n return (size / 1024 / 1024).toFixed(1) + 'MB'\r\n }\r\n else {\r\n return (size / 1024).toFixed(1) + 'KB'\r\n }\r\n}\r\n\r\nfunction preventEventIf(e, disabled) {\r\n if (disabled) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nfunction getVocative(str) {\r\n var _responder = window.assessmentInfor;\r\n\r\n if (str == null || _responder == null) {\r\n return str;\r\n }\r\n var _he = \"he\"\r\n var _He = \"He\"\r\n var _his = \"his\"\r\n var _His = \"His\"\r\n var _him = \"him\"\r\n var _Him = \"Him\"\r\n var _himSelf = \"himself\"\r\n var _HimSelf = \"Himself\"\r\n\r\n var _she = \"she\"\r\n var _She = \"She\"\r\n var _her = \"her\"\r\n var _Her = \"Her\"\r\n var _herSelf = \"herself\"\r\n var _HerSelf = \"Herself\"\r\n\r\n var _heshe = (_responder.ContactFirstName || _responder.ContactLastName)\r\n var _HeShe = (_responder.ContactFirstName || _responder.ContactLastName)\r\n var _hisher = `${_responder.ContactFirstName || _responder.ContactLastName}'s`\r\n var _HisHer = `${_responder.ContactFirstName || _responder.ContactLastName}'s`\r\n var _himher = \"them\"\r\n var _HimHer = \"Them\"\r\n var _himherSelf = \"themself\"\r\n var _HimHerSelf = \"Themself\"\r\n\r\n var _jobTitle = _responder.JobTitle ? _responder.JobTitle : \"\";\r\n var _jobLocation = _responder.JobLocation ? _responder.JobLocation : \"\";\r\n str = str.replace(\"{Location}\", _jobLocation)\r\n .replace(\"{VacancyPosition}\", _jobTitle);\r\n\r\n if (_responder.Gender && _responder.Gender.toLowerCase() == \"ma\") {\r\n str = str.replace(/{Responder:heshe}/g, _he)\r\n .replace(/{Responder:HeShe}/g, _He)\r\n .replace(/{Responder:hisher}/g, _his)\r\n .replace(/{Responder:HisHer}/g, _His)\r\n .replace(/{Responder:himher}/g, _him)\r\n .replace(/{Responder:HimHer}/g, _Him)\r\n .replace(/{Responder:himselfherself}/g, _himSelf)\r\n .replace(/{Responder:HimselfHerself}/g, _HimSelf)\r\n\r\n } else if (_responder.Gender && _responder.Gender.toLowerCase() == \"fe\") {\r\n str = str.replace(/{Responder:heshe}/g, _she)\r\n .replace(/{Responder:HeShe}/g, _She)\r\n .replace(/{Responder:hisher}/g, _her)\r\n .replace(/{Responder:HisHer}/g, _Her)\r\n .replace(/{Responder:himher}/g, _her)\r\n .replace(/{Responder:HimHer}/g, _Her)\r\n .replace(/{Responder:himselfherself}/g, _herSelf)\r\n .replace(/{Responder:HimselfHerself}/g, _HerSelf)\r\n }\r\n else {\r\n str = str.replace(/{Responder:heshe}/g, _heshe)\r\n .replace(/{Responder:HeShe}/g, _HeShe)\r\n .replace(/{Responder:hisher}/g, _hisher)\r\n .replace(/{Responder:HisHer}/g, _HisHer)\r\n .replace(/{Responder:himher}/g, _himher)\r\n .replace(/{Responder:HimHer}/g, _HimHer)\r\n .replace(/{Responder:himselfherself}/g, _himherSelf)\r\n .replace(/{Responder:HimselfHerself}/g, _HimHerSelf)\r\n }\r\n\r\n return str.replace(/{Responder:FirstName}/ig, _responder.ContactFirstName).replace(/{Responder:LastName}/ig, _responder.ContactLastName)\r\n}\r\n\r\n\r\nwindow._RenderQuestion = RenderQuestion;\r\n\r\nexport { RenderQuestion, getVocative };\n\n\n// WEBPACK FOOTER //\n// ./Course/CourseNew/QuestionTypes.js"],"sourceRoot":""}