@amc-technology/ui-library 1.0.88 → 1.0.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","ng://@amc-technology/ui-library/projects/UILibrary/src/app/models/chat.message.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/interaction/interaction.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/scenario/scenario.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/operation/operation.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/models/uilibrary.model.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/Helpers.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/property/property.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/holdtimer/holdtimer.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/duration/duration.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/chat-box/chat-box.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/chat-message/chat-message.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/disposition/disposition.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/activity/activity.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/login/login.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/uilibrary.module.ts"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__values","o","s","Symbol","iterator","m","call","next","value","done","TypeError","IChatMessageType","InteractionComponent","this","minimizedChanged","EventEmitter","isAgentTyping","newMessage","_minimized","prototype","minimized","emit","ngOnInit","minimize","maximize","isConferenceCall","interaction","parties","collapseKeypress","event","code","expandKeypress","Input","Output","Component","selector","template","ScenarioComponent","afterViewChecked","ngAfterViewChecked","onMinimizedChanged","OperationComponent","labelledByText","describedByText","statusText","callType","callId","operationKeypress","operation","handler","operationName","operationMetadata","ValueType","visible","valueType","customOperation","_this","displayOperation","displayKey","displayValue","displayValueType","STRING","customOperations","secondsToHms","seconds_in","Number","h","Math","floor","toString","slice","PropertyComponent","title","_timerId","processedDisplayValue","initValues","property","COUNTER","startCallCounter","window","setInterval","callStartTime","currentTime","Date","getTime","secondsPassed","ngOnDestroy","clearInterval","HoldtimerComponent","displayTime","pastTimeInSeconds","CaculatePastHoldDuration","secondsPassedCurrentCall","holdCounterData","currentHoldStartTime","pastCallDurations","forEach","holdTimerIterator","endTime","startTime","DurationComponent","ChatBoxComponent","renderer","isTyping","lastCount","lastScrollTop","newMessageSent","_isAgentTyping","newMessageText","usernameToColor","colors","colorsIndex","agentColor","selectRootElement","focus","ngAfterViewInit","updatedMessage","newMsgs","messages","e","scrollToBottom","getColor","message","type","AGENT","username","shouldAlignRight","sendNewMessage","preventDefault","setOnFocus","onNewMessageFocus","onKeyup","messagesContainer","nativeElement","scrollTop","Renderer2","ViewChild","static","ChatMessageComponent","alignRight","focusOn","DispositionComponent","dispositionEmitter","selectedDispositionValue","dispositionName","_b","disposition","dispositionMetadata","_c","metadata","checkedDisposition","submitDisposition","selectedDisposition","dispositionId","get","selectAndSubmitDisposition","dispositionKey","ActivityComponent","ActivitySave","OnNameSelectChange","OnRelatedToChange","OnSubjectChange","OnCallNotesChange","isActivityMaximized","onNameSelectChange","activity","WhoObject","getWho","currentTarget","parseWhoObject","whoObject","objectType","objectName","parseWhatObject","whatObject","onRelatedToChange","WhatObject","getWhat","onSubjectChange","Subject","srcElement","onCallNotesChange","trim","id","whoList","objectId","whatList","loadQuickComment","Description","quickCommentList","activitySave","clearActivityFields","LoginComponent","loginDetailsProvided","loginData","header","fields","field","isInvalid","onLogin","loginForm","name","focusOutOfInput","controls","valid","UILibraryModule","injector","ngDoBootstrap","app","customElements","strategyFactory","ElementZoneStrategyFactory","define","createCustomElement","Injector","NgModule","imports","BrowserModule","CommonModule","FormsModule","declarations","entryComponents","bootstrap","exports"],"mappings":";;;;;;;;;;;;;;oFAoDO,SAASA,EAAWC,EAAYC,EAAQC,EAAKC,GAChD,IAA2HC,EAAvHC,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOM,OAAOC,yBAAyBT,EAAQC,GAAOC,EACrH,GAAuB,iBAAZQ,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASZ,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIU,EAAIb,EAAWO,OAAS,EAAGM,GAAK,EAAGA,KAAST,EAAIJ,EAAWa,MAAIL,GAAKH,EAAI,EAAID,EAAEI,GAAKH,EAAI,EAAID,EAAEH,EAAQC,EAAKM,GAAKJ,EAAEH,EAAQC,KAASM,GAChJ,OAAOH,EAAI,GAAKG,GAAKC,OAAOK,eAAeb,EAAQC,EAAKM,GAAIA,EA0DzD,SAASO,EAASC,GACrB,IAAIC,EAAsB,mBAAXC,QAAyBA,OAAOC,SAAUC,EAAIH,GAAKD,EAAEC,GAAIJ,EAAI,EAC5E,GAAIO,EAAG,OAAOA,EAAEC,KAAKL,GACrB,GAAIA,GAAyB,iBAAbA,EAAET,OAAqB,MAAO,CAC1Ce,KAAM,WAEF,OADIN,GAAKH,GAAKG,EAAET,SAAQS,OAAI,GACrB,CAAEO,MAAOP,GAAKA,EAAEH,KAAMW,MAAOR,KAG5C,MAAM,IAAIS,UAAUR,EAAI,0BAA4B,uCChH5CS,eCuBV,SAAAC,IAlBUC,KAAAC,iBAA0C,IAAIC,EAAAA,aAC9CF,KAAAG,cAAgB,IAAID,EAAAA,aACpBF,KAAAI,WAAa,IAAIF,EAAAA,aAiBzBF,KAAKK,YAAa,EA6CtB,OAzDExB,OAAAK,eAAIa,EAAAO,UAAA,aAAU,KAId,WACE,OAAON,KAAKO,eALd,SAAeZ,GACbK,KAAKO,UAAYZ,EACjBK,KAAKC,iBAAiBO,KAAKb,oCAgB7BI,EAAAO,UAAAG,SAAA,aAMAV,EAAAO,UAAAI,SAAA,WACEV,KAAKK,YAAa,GAMpBN,EAAAO,UAAAK,SAAA,WACEX,KAAKK,YAAa,GAMpBN,EAAAO,UAAAM,iBAAA,WACE,SAAIZ,KAAKa,YAAYC,SAAWd,KAAKa,YAAYC,QAAQnC,OAAS,IAMpEoB,EAAAO,UAAAS,iBAAA,SAAiBC,GACI,UAAfA,EAAMC,MACRjB,KAAKU,YAITX,EAAAO,UAAAY,eAAA,SAAeF,GACM,UAAfA,EAAMC,MACRjB,KAAKW,YA9DAxC,EAAA,CAARgD,EAAAA,2CACQhD,EAAA,CAARgD,EAAAA,uCACShD,EAAA,CAATiD,EAAAA,iDACSjD,EAAA,CAATiD,EAAAA,8CACSjD,EAAA,CAATiD,EAAAA,2CANUrB,EAAoB5B,EAAA,CALhCkD,EAAAA,UAAU,CACTC,SAAU,kBACVC,SAAA,urRAGWxB,mBCUT,SAAAyB,IALQxB,KAAAC,iBAAmB,IAAIC,EAAAA,aACvBF,KAAAG,cAAgB,IAAID,EAAAA,aACpBF,KAAAI,WAAa,IAAIF,EAAAA,aACjBF,KAAAyB,iBAAmB,IAAIvB,EAAAA,aAWnC,OAPEsB,EAAAlB,UAAAoB,mBAAA,WACE1B,KAAKyB,iBAAiBjB,QAGxBgB,EAAAlB,UAAAqB,mBAAA,WACE3B,KAAKC,iBAAiBO,QAdfrC,EAAA,CAARgD,EAAAA,wCACQhD,EAAA,CAARgD,EAAAA,uCACShD,EAAA,CAATiD,EAAAA,iDACSjD,EAAA,CAATiD,EAAAA,8CACSjD,EAAA,CAATiD,EAAAA,2CACSjD,EAAA,CAATiD,EAAAA,iDANUI,EAAiBrD,EAAA,CAL7BkD,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,uoFAGWC,mBCSX,SAAAI,IANA5B,KAAA6B,eAAiB,GACjB7B,KAAA8B,gBAAkB,GA8BpB,OAnBEF,EAAAtB,UAAAG,SAAA,WACMT,KAAK+B,YAAc/B,KAAKgC,SAC1BhC,KAAK8B,gBAAqB9B,KAAK+B,WAAU,IAAI/B,KAAKgC,SACzChC,KAAK+B,WACd/B,KAAK8B,gBAAkB9B,KAAK+B,WACnB/B,KAAKgC,WACdhC,KAAK8B,gBAAkB9B,KAAKgC,UAG1BhC,KAAKiC,SACPjC,KAAK6B,eAAiB7B,KAAKiC,SAI/BL,EAAAtB,UAAA4B,kBAAA,SAAkBlB,EAAsBmB,GACnB,UAAfnB,EAAMC,MACRkB,EAAUC,QAAQD,EAAUE,cAAeF,EAAUG,oBAjChDnE,EAAA,CAARgD,EAAAA,0CACQhD,EAAA,CAARgD,EAAAA,sCACQhD,EAAA,CAARgD,EAAAA,wCACQhD,EAAA,CAARgD,EAAAA,0CAJUS,EAAkBzD,EAAA,CAL9BkD,EAAAA,UAAU,CACTC,SAAU,gBACVC,SAAA,47FAGWK,OHAD9B,EAAAA,EAAAA,mBAAAA,EAAAA,iBAAgB,KAC1B,MAAA,QACAA,EAAA,aAAA,eACAA,EAAA,YAAA,kBIyTUyC,IA9BV,SACEjE,EACAqB,EACA6C,EACAC,EACAC,GALF,IAAAC,EAAA3C,KAbAA,KAAA4C,iBAA+B,WAC7BD,EAAKE,WAAaF,EAAKrE,IACvBqE,EAAKG,aAAeH,EAAKhD,OAkBzBK,KAAK1B,IAAMA,EACX0B,KAAKL,MAAQA,EACMK,KAAKwC,QAAb,MAAXA,GAAkCA,EAE7BxC,KAAK+C,iBADG,MAAbN,EAC6BA,EACAF,EAAAA,UAAUS,OACvChD,KAAKiD,iBAAmBP,EACxB1C,KAAK4C,6BCvTOM,EAAaC,GAC3BA,EAAaC,OAAOD,GACpB,IAAME,EAAIC,KAAKC,MAAMJ,EAAa,MAC5B3D,EAAI8D,KAAKC,MAAMJ,EAAa,KAAO,IACnC9D,EAAIiE,KAAKC,MAAMJ,EAAa,KAAO,IAKzC,OAHiBE,EAAI,EAAIA,EAAEG,WAAa,IAAM,KAC7BhE,EAAI,GAAK,IAAMA,EAAEgE,YAAYC,OAAO,GAAK,IAAM,QAC/CpE,EAAI,GAAK,IAAMA,EAAEmE,YAAYC,OAAO,GAAK,OD+ThDlB,EAAAA,EAAAA,YAAAA,EAAAA,UAAS,KACnBA,EAAA,OAAA,GAAA,SACAA,EAAAA,EAAA,QAAA,GAAA,2BEtSA,SAAAmB,IAhBA1D,KAAA6B,eAAiB,GACjB7B,KAAA2D,MAAQ,GAiBN3D,KAAK4D,SAAW,KAChB5D,KAAK6D,sBAAwB,GA+DjC,OAzDEH,EAAApD,UAAAG,SAAA,WACMT,KAAK+B,YAAc/B,KAAKgC,SAC1BhC,KAAK6B,eAAoB7B,KAAK+B,WAAU,IAAI/B,KAAKgC,SACxChC,KAAK+B,WACd/B,KAAK6B,eAAiB7B,KAAK+B,WAClB/B,KAAKgC,WACdhC,KAAK6B,eAAiB7B,KAAKgC,UAGzBhC,KAAKgC,UAAYhC,KAAKiC,OACxBjC,KAAK2D,MAAW3D,KAAKgC,SAAQ,IAAIhC,KAAKiC,OAC7BjC,KAAKgC,SACdhC,KAAK2D,MAAQ3D,KAAKgC,SACThC,KAAKiC,SACdjC,KAAK2D,MAAQ3D,KAAKiC,QAGpBjC,KAAK8D,cAMPJ,EAAApD,UAAAwD,WAAA,WACM9D,KAAK+D,SAAShB,mBAAqBR,EAAAA,UAAUyB,QAC/ChE,KAAKiE,mBAELjE,KAAK6D,sBAAwB7D,KAAK+D,SAASjB,cAOvCY,EAAApD,UAAA2D,iBAAR,WAAA,IAAAtB,EAAA3C,KACuB,MAAjBA,KAAK4D,WACP5D,KAAK4D,SAAWM,OAAOC,aAAY,WACjC,IAAMC,EAAwBzB,EAAKoB,SAASjB,aACtCuB,GAAsB,IAAIC,MAAOC,UAAY,IAC7CC,EAAwBlB,KAAKC,MAAM,EAAiBa,EAAgB,KAC1EzB,EAAKkB,sBAAwBX,EAAasB,KACzC,OAOPd,EAAApD,UAAAmE,YAAA,WACMzE,KAAK+D,SAAShB,mBAAqBR,EAAAA,UAAUyB,SAE1B,MAAjBhE,KAAK4D,WACPc,cAAc1E,KAAK4D,UACnB5D,KAAK4D,SAAW,OAnFbzF,EAAA,CAARgD,EAAAA,0CACQhD,EAAA,CAARgD,EAAAA,sCACQhD,EAAA,CAARgD,EAAAA,wCACQhD,EAAA,CAARgD,EAAAA,wCALUuC,EAAiBvF,EAAA,CAL7BkD,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,whGAGWmC,mBCMX,SAAAiB,IAHA3E,KAAA6B,eAAiB,GAIf7B,KAAK4E,YAAc,cAmDvB,OAhDED,EAAArE,UAAAG,SAAA,WACMT,KAAK+B,YAAc/B,KAAKiC,OAC1BjC,KAAK6B,eAAoB7B,KAAK+B,WAAU,IAAI/B,KAAKiC,OACxCjC,KAAK+B,WACd/B,KAAK6B,eAAiB7B,KAAK+B,WAClB/B,KAAKiC,SACdjC,KAAK6B,eAAiB7B,KAAKiC,QAG7BjC,KAAKiE,oBAKCU,EAAArE,UAAA2D,iBAAR,WAAA,IAAAtB,EAAA3C,KACQ6E,EAAoB7E,KAAK8E,2BACV,MAAjB9E,KAAK4D,WACP5D,KAAK4D,SAAWM,OAAOC,aAAY,WACjC,IAAME,GAAsB,IAAIC,MAAOC,UAAY,IAC7CQ,EAAmCzB,KAAKC,MAAM,EAAiBZ,EAAKqC,gBAAgBC,qBAAuB,KACjHtC,EAAKiC,YAAc1B,EAAa6B,GAC9B,IAAM7B,EAAa2B,EAAoBE,KACxC,OAICJ,EAAArE,UAAAwE,yBAAR,WACE,IAAID,EAAoB,EAMxB,OALI7E,KAAKgF,gBAAgBE,mBACvBlF,KAAKgF,gBAAgBE,kBAAkBC,SAAQ,SAACC,GAC9CP,IAAsBO,EAAkBC,QAAUD,EAAkBE,WAAa,OAG9ET,GAOTF,EAAArE,UAAAmE,YAAA,WAEuB,MAAjBzE,KAAK4D,WACPc,cAAc1E,KAAK4D,UACnB5D,KAAK4D,SAAW,OAxDXzF,EAAA,CAARgD,EAAAA,+CACQhD,EAAA,CAARgD,EAAAA,0CACQhD,EAAA,CAARgD,EAAAA,sCAHUwD,EAAkBxG,EAAA,CAL9BkD,EAAAA,UAAU,CACTC,SAAU,gBACVC,SAAA,koFAGWoD,mBCQX,SAAAY,IAJAvF,KAAA6B,eAAiB,GAKf7B,KAAK4E,YAAc,cAqCvB,OAlCEW,EAAAjF,UAAAG,SAAA,WACMT,KAAK+B,YAAc/B,KAAKiC,OAC1BjC,KAAK6B,eAAoB7B,KAAK+B,WAAU,IAAI/B,KAAKiC,OACxCjC,KAAK+B,WACd/B,KAAK6B,eAAiB7B,KAAK+B,WAClB/B,KAAKiC,SACdjC,KAAK6B,eAAiB7B,KAAKiC,QAG7BjC,KAAKiE,oBAMCsB,EAAAjF,UAAA2D,iBAAR,WAAA,IAAAtB,EAAA3C,KACuB,MAAjBA,KAAK4D,WACP5D,KAAK4D,SAAWM,OAAOC,aAAY,WACjC,IAAMC,EAAwBzB,EAAK2C,UAC7BjB,GAAsB,IAAIC,MAAOC,UAAY,IAC7CC,EAAwBlB,KAAKC,MAAM,EAAiBa,EAAgB,KAC1EzB,EAAKiC,YAActB,KAAKC,MAAMiB,EAAgB,IAAM,KAAO,IAAOA,EAAgB,IAAKf,OAAO,KAC7F,OAIP8B,EAAAjF,UAAAmE,YAAA,WAEuB,MAAjBzE,KAAK4D,WACPc,cAAc1E,KAAK4D,UACnB5D,KAAK4D,SAAW,OA3CXzF,EAAA,CAARgD,EAAAA,0CACQhD,EAAA,CAARgD,EAAAA,sCACQhD,EAAA,CAARgD,EAAAA,yCAHUoE,EAAiBpH,EAAA,CAL7BkD,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,8lFAGWgE,mBCoCX,SAAAC,EAAoBC,GAAAzF,KAAAyF,SAAAA,EA/BXzF,KAAA0F,UAAW,EAIZ1F,KAAA2F,WAAa,EACb3F,KAAA4F,cAAgB,EAChB5F,KAAA6F,gBAAiB,EACzB7F,KAAA8F,gBAAiB,EACP9F,KAAAG,cAAgB,IAAID,EAAAA,aAEpBF,KAAAI,WAAa,IAAIF,EAAAA,aAC3BF,KAAA+F,eAAiB,GAKjB/F,KAAAgG,gBAAkD,GAClDhG,KAAAiG,OAAS,CACP,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFjG,KAAAkG,YAAc,EACdlG,KAAAmG,WAAa,UAyGf,OArGIX,EAAAlF,UAAAG,SAAA,WACET,KAAKyF,SAASW,kBAAkB,cAAcC,SAGnDb,EAAAlF,UAAAgG,gBAAA,WACGtG,KAAKyF,SAASW,kBAAkB,cAAcC,SAGhDb,EAAAlF,UAAAiG,eAAA,WAEE,IACE,YAA4B,IAAjBvG,KAAKwG,SAA2BxG,KAAKwG,QAAQ7H,OAAS,EAExDqB,KAAKwG,QAELxG,KAAKyG,SAEf,MAAOC,YAGA1G,KAAK6F,iBAkBfL,EAAAlF,UAAAoB,mBAAA,WACM1B,KAAK2F,YAAc3F,KAAKyG,SAAS9H,SACnCqB,KAAK2F,UAAY3F,KAAKyG,SAAS9H,OAC/BqB,KAAK2G,mBAKTnB,EAAAlF,UAAAsG,SAAA,SAASC,GACP,OAAIA,EAAQC,MAAQD,EAAQC,OAAShH,EAAAA,iBAAiBiH,MAC7C/G,KAAKmG,WACHU,EAAQG,UACZhH,KAAKgG,gBAAgBa,EAAQG,YAChChH,KAAKgG,gBAAgBa,EAAQG,UAAYhH,KAAKiG,OAAOjG,KAAKkG,aAC1DlG,KAAKkG,aAAelG,KAAKkG,YAAc,GAAKlG,KAAKiG,OAAOtH,QAEnDqB,KAAKgG,gBAAgBa,EAAQG,WAE7BhH,KAAKiG,OAAO,IAIvBT,EAAAlF,UAAA2G,iBAAA,SAAiBJ,GACf,OAAOA,EAAQC,MAAQD,EAAQC,OAAShH,EAAAA,iBAAiBiH,OAG3DvB,EAAAlF,UAAA4G,eAAA,SAAelG,GACbhB,KAAK6F,gBAAiB,EACtB7E,EAAMmG,iBACFnH,KAAK+F,iBACP/F,KAAKI,WAAWI,KAAKR,KAAK+F,gBAC1B/F,KAAK+F,eAAiB,IAExB/F,KAAKyF,SAASW,kBAAkB,cAAcC,SAGhDb,EAAAlF,UAAA8G,WAAA,SAAWpG,GACThB,KAAKyF,SAASW,kBAAkB,cAAcC,SAGhDb,EAAAlF,UAAA+G,kBAAA,SAAkBrG,GAChBhB,KAAK2G,iBACL,IAAMjB,EAAW1E,GAAShB,KAAK+F,eAAepH,OAAS,EACnD+G,IAAa1F,KAAK8F,iBACpB9F,KAAK8F,eAAiBJ,EACtB1F,KAAKG,cAAcK,KAAKkF,KAI5BF,EAAAlF,UAAAgH,QAAA,WACE,IAAM5B,EAAW1F,KAAK+F,eAAepH,OAAS,EAC1C+G,IAAa1F,KAAK8F,iBACpB9F,KAAK8F,eAAiBJ,EACtB1F,KAAKG,cAAcK,KAAKkF,KAI5BF,EAAAlF,UAAAqG,eAAA,WACE,IACE3G,KAAKuH,kBAAkBC,cAAcC,WAAa,GAEpD,MAAOf,+CArGoBgB,EAAAA,aAhCpBvJ,EAAA,CAARgD,EAAAA,wCACQhD,EAAA,CAARgD,EAAAA,wCAEQhD,EAAA,CAARgD,EAAAA,wCACQhD,EAAA,CAARgD,EAAAA,uCAKShD,EAAA,CAATiD,EAAAA,8CAESjD,EAAA,CAATiD,EAAAA,2CAGiDjD,EAAA,CAAjDwJ,EAAAA,UAAU,oBAAqB,CAAEC,QAAQ,6CACCzJ,EAAA,CAA1CwJ,EAAAA,UAAU,YAAa,CAAEC,QAAQ,qCAhBvBpC,EAAgBrH,EAAA,CAL5BkD,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,ggGAGWiE,mBCOX,SAAAqC,IARS7H,KAAA8H,YAAa,EAMZ9H,KAAA+H,QAAU,IAAI7H,EAAAA,aAS1B,OALE2H,EAAAvH,UAAAG,SAAA,WACET,KAAK+H,QAAQvH,MAAK,IAZXrC,EAAA,CAARgD,EAAAA,uCACQhD,EAAA,CAARgD,EAAAA,0CACQhD,EAAA,CAARgD,EAAAA,wCACQhD,EAAA,CAARgD,EAAAA,qCACQhD,EAAA,CAARgD,EAAAA,yCACQhD,EAAA,CAARgD,EAAAA,qCACQhD,EAAA,CAARgD,EAAAA,6CACShD,EAAA,CAATiD,EAAAA,wCARUyG,EAAoB1J,EAAA,CALhCkD,EAAAA,UAAU,CACTC,SAAU,mBACVC,SAAA,woEAGWsG,mBCSX,SAAAG,IALUhI,KAAAiI,mBAAqB,IAAI/H,EAAAA,aAEnCF,KAAAkI,yBAAmC,GACnClI,KAAAmI,gBAA0B,GAkC5B,OA9BEH,EAAA1H,UAAAG,SAAA,uBACE,IAAuB,IAAA2H,EAAAjJ,EAAAa,KAAKqI,YAAYC,qBAAmBC,EAAAH,EAAA1I,QAAA6I,EAAA3I,KAAA2I,EAAAH,EAAA1I,OAAE,CAAxD,IAAM8I,EAAQD,EAAA5I,MACjB,GAAqB,WAAjB6I,EAASlK,IAAkB,CAC7B0B,KAAKmI,gBAAkB,eAAeK,EAAS7I,MAE/C,yGAIAK,KAAKqI,YAAYI,qBACnBzI,KAAKkI,yBAA2BlI,KAAKqI,YAAYI,qBAIrDT,EAAA1H,UAAAoI,kBAAA,WACE,IAAMC,EAA0C,CAC9CC,cAAe5I,KAAKkI,yBACpBC,gBAAiBnI,KAAKqI,YAAYA,YAAYQ,IAAI7I,KAAKkI,0BACvDI,oBAAqBtI,KAAKqI,YAAYC,qBAGxCtI,KAAKiI,mBAAmBzH,KAAKmI,IAG/BX,EAAA1H,UAAAwI,2BAAA,SAA2B9H,EAAsB+H,GAC5B,UAAf/H,EAAMC,OACRjB,KAAKkI,yBAA2Ba,EAChC/I,KAAK0I,sBApCAvK,EAAA,CAARgD,EAAAA,2CAEShD,EAAA,CAATiD,EAAAA,mDAHU4G,EAAoB7J,EAAA,CALhCkD,EAAAA,UAAU,CACTC,SAAU,kBACVC,SAAA,itEAGWyG,mBCUX,SAAAgB,IANQhJ,KAAAiJ,aAAwC,IAAI/I,EAAAA,aAC5CF,KAAAkJ,mBAA8C,IAAIhJ,EAAAA,aAClDF,KAAAmJ,kBAA6C,IAAIjJ,EAAAA,aACjDF,KAAAoJ,gBAA2C,IAAIlJ,EAAAA,aAC/CF,KAAAqJ,kBAA6C,IAAInJ,EAAAA,aAGvDF,KAAKsJ,qBAAsB,EAuD/B,OApDEN,EAAA1I,UAAAG,SAAA,aAGOuI,EAAA1I,UAAAiJ,mBAAP,SAA0BvI,GACxBhB,KAAKwJ,SAASC,UAAYzJ,KAAK0J,OAAO1I,EAAM2I,cAAchK,OAC1DK,KAAKkJ,mBAAmB1I,KAAKR,KAAKwJ,WAG7BR,EAAA1I,UAAAsJ,eAAP,SAAsBC,GACpB,OAAOA,EAAUC,WAAa,KAAOD,EAAUE,YAG1Cf,EAAA1I,UAAA0J,gBAAP,SAAuBC,GACrB,OAAOA,EAAWH,WAAa,KAAOG,EAAWF,YAG5Cf,EAAA1I,UAAA4J,kBAAP,SAAyBlJ,GACvBhB,KAAKwJ,SAASW,WAAanK,KAAKoK,QAAQpJ,EAAM2I,cAAchK,OAC5DK,KAAKmJ,kBAAkB3I,KAAKR,KAAKwJ,WAG5BR,EAAA1I,UAAA+J,gBAAP,SAAuBrJ,GACrBhB,KAAKwJ,SAASc,QAAUtJ,EAAMuJ,WAAW5K,MACzCK,KAAKoJ,gBAAgB5I,KAAKR,KAAKwJ,WAE1BR,EAAA1I,UAAAkK,kBAAP,SAAyBxJ,GACvBhB,KAAKwJ,SAASc,QAAUtJ,EAAMuJ,WAAW5K,MAAM8K,OAC/CzK,KAAKqJ,kBAAkB7I,KAAKR,KAAKwJ,WAG5BR,EAAA1I,UAAAoJ,OAAP,SAAcgB,GACZ,IAAK,IAAIzL,EAAI,EAAGA,EAAIe,KAAKwJ,SAASmB,QAAQhM,OAAQM,IAChD,GAAIe,KAAKwJ,SAASmB,QAAQ1L,GAAG2L,WAAaF,EACxC,OAAO1K,KAAKwJ,SAASmB,QAAQ1L,IAI5B+J,EAAA1I,UAAA8J,QAAP,SAAeM,GACb,IAAK,IAAIzL,EAAI,EAAGA,EAAIe,KAAKwJ,SAASqB,SAASlM,OAAQM,IACjD,GAAIe,KAAKwJ,SAASqB,SAAS5L,GAAG2L,WAAaF,EACzC,OAAO1K,KAAKwJ,SAASqB,SAAS5L,IAK7B+J,EAAA1I,UAAAwK,iBAAP,SAAwBnL,GACtBK,KAAKwJ,SAASuB,YAAc/K,KAAKwJ,SAASuB,YAAc/K,KAAKwJ,SAASwB,iBAAiBrL,IAGlFqJ,EAAA1I,UAAA2K,aAAP,SAAoBC,GAClBlL,KAAKiJ,aAAazI,KAAKR,KAAKwJ,WA7DvBrL,EAAA,CAARgD,EAAAA,wCACShD,EAAA,CAATiD,EAAAA,6CACSjD,EAAA,CAATiD,EAAAA,mDACSjD,EAAA,CAATiD,EAAAA,kDACSjD,EAAA,CAATiD,EAAAA,gDACSjD,EAAA,CAATiD,EAAAA,kDARY4H,EAAiB7K,EAAA,CAL7BkD,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,0gKAGWyH,mBCKX,SAAAmC,IAFUnL,KAAAoL,qBAAuB,IAAIlL,EAAAA,aAgCvC,OA5BEiL,EAAA7K,UAAAG,SAAA,mBACOT,KAAKqL,UAAUC,SAClBtL,KAAKqL,UAAUC,OAAS,aAG1B,IAAkB,IAAAlD,EAAAjJ,EAAAa,KAAKqL,UAAUE,QAAMhD,EAAAH,EAAA1I,QAAA6I,EAAA3I,KAAA2I,EAAAH,EAAA1I,OAAE,CAApC,IAAI8L,EAAKjD,EAAA5I,MACP6L,EAAMC,YACTD,EAAMC,WAAY,uGAKxBN,EAAA7K,UAAAoL,QAAA,SAAQC,eACN,IAAoB,IAAAvD,EAAAjJ,EAAAa,KAAKqL,UAAUE,QAAMhD,EAAAH,EAAA1I,QAAA6I,EAAA3I,KAAA2I,EAAAH,EAAA1I,OAAE,CAAtC,IAAM8L,EAAKjD,EAAA5I,MACd6L,EAAM7L,MAAQgM,EAAUhM,MAAM6L,EAAMI,wGAGtC5L,KAAKoL,qBAAqB5K,KAAKR,KAAKqL,YAGtCF,EAAA7K,UAAAuL,gBAAA,SAAgBF,EAAmBH,GAC5BG,EAAUG,SAASN,EAAMI,MAAMG,QAClCP,EAAMC,WAAY,IA3BbtN,EAAA,CAARgD,EAAAA,yCACShD,EAAA,CAATiD,EAAAA,qDAFU+J,EAAchN,EAAA,CAL1BkD,EAAAA,UAAU,CACTC,SAAU,YACVC,SAAA,u/EAGW4J,mBC6BX,SAAAa,EAAoBC,GAAAjM,KAAAiM,SAAAA,EA2CtB,OAzCED,EAAA1L,UAAA4L,cAAA,SAAcC,GACZ,IAAKC,eAAevD,IAAI,8BAA+B,CACrD,IAAMwD,EAAkB,IAAIC,EAAAA,2BAC1B9K,EACAxB,KAAKiM,UAEPG,eAAeG,OACb,6BACAC,EAAAA,oBAAoBhL,EAAmB,CACrCyK,SAAUjM,KAAKiM,SACfI,gBAAiBA,KAIvB,IAAKD,eAAevD,IAAI,iCAAkC,CAClDwD,EAAkB,IAAIC,EAAAA,2BAC1BtE,EACAhI,KAAKiM,UAEPG,eAAeG,OACb,gCACAC,EAAAA,oBAAoBxE,EAAsB,CACxCiE,SAAUjM,KAAKiM,SACfI,gBAAiBA,KAIvB,IAAKD,eAAevD,IAAI,2BAA4B,CAC5CwD,EAAkB,IAAIC,EAAAA,2BAC1BnB,EACAnL,KAAKiM,UAEPG,eAAeG,OACb,0BACAC,EAAAA,oBAAoBrB,EAAgB,CAClCc,SAAUjM,KAAKiM,SACfI,gBAAiBA,gDAtCKI,EAAAA,YADnBT,EAAe7N,EAAA,CAnB3BuO,EAAAA,SAAS,CACRC,QAAS,CAACC,EAAAA,cAAeC,EAAAA,aAAcC,EAAAA,aACvCC,aAAc,CACZhN,EACAyB,EACAI,EACA8B,EACAiB,EACAY,EACAC,EACAqC,EACAG,EACAgB,EACAmC,GAEF6B,gBAAiB,CAACxL,EAAmBwG,EAAsBmD,GAC3D8B,UAAW,GACXC,QAAS,CAAC1L,EAAmBwG,EAAsBmD,MAExCa","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export interface IChatMessage {\r\n username?: string;\r\n text: string;\r\n /**\r\n * What type of chat message. Defaults to OTHER_PERSON\r\n */\r\n type?: IChatMessageType;\r\n timestamp?: string;\r\n userIcon?: URL;\r\n}\r\n\r\nexport enum IChatMessageType {\r\n AGENT = 'AGENT',\r\n OTHER_PERSON = 'OTHER_PERSON',\r\n INFORMATION = 'INFORMATION'\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChildren, QueryList } from '@angular/core';\r\nimport { IChatMessage, IInteraction } from '../../models/uilibrary.model';\r\nimport { ChatBoxComponent } from '../chat-box/chat-box.component'\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Component({\r\n selector: 'amc-interaction',\r\n templateUrl: './interaction.component.html',\r\n styleUrls: ['./interaction.component.scss', './../uilibrary.module.scss']\r\n})\r\nexport class InteractionComponent implements OnInit {\r\n\r\n @Input() interaction: IInteraction;\r\n @Input() newMsgs: IChatMessage[];\r\n @Output() minimizedChanged: EventEmitter<boolean> = new EventEmitter();\r\n @Output() isAgentTyping = new EventEmitter<boolean>();\r\n @Output() newMessage = new EventEmitter<string>();\r\n /**\r\n * @ignore\r\n */\r\n minimized: boolean;\r\n set _minimized(value) {\r\n this.minimized = value;\r\n this.minimizedChanged.emit(value);\r\n }\r\n get _minimized() {\r\n return this.minimized;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor() {\r\n this._minimized = false;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnInit() {\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n minimize(): void {\r\n this._minimized = true;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n maximize(): void {\r\n this._minimized = false;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n isConferenceCall(): boolean {\r\n if (this.interaction.parties && this.interaction.parties.length > 1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n collapseKeypress(event: KeyboardEvent) {\r\n if (event.code === 'Enter') {\r\n this.minimize();\r\n }\r\n }\r\n\r\n expandKeypress(event: KeyboardEvent) {\r\n if (event.code === 'Enter') {\r\n this.maximize();\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n AfterViewChecked\r\n} from '@angular/core';\r\nimport { IChatMessage, IScenario } from '../../models/uilibrary.model';\r\n\r\n@Component({\r\n selector: 'amc-scenario',\r\n templateUrl: './scenario.component.html',\r\n styleUrls: ['./scenario.component.scss', './../uilibrary.module.scss']\r\n})\r\nexport class ScenarioComponent implements AfterViewChecked {\r\n @Input() scenario: IScenario;\r\n @Input() newMsgs: IChatMessage[];\r\n @Output() minimizedChanged = new EventEmitter();\r\n @Output() isAgentTyping = new EventEmitter<boolean>();\r\n @Output() newMessage = new EventEmitter<string>();\r\n @Output() afterViewChecked = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n ngAfterViewChecked() {\r\n this.afterViewChecked.emit();\r\n }\r\n\r\n onMinimizedChanged() {\r\n this.minimizedChanged.emit();\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { IOperation } from '../../models/uilibrary.model';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Component({\r\n selector: 'amc-operation',\r\n templateUrl: './operation.component.html',\r\n styleUrls: ['./operation.component.scss', './../uilibrary.module.scss']\r\n})\r\nexport class OperationComponent implements OnInit {\r\n @Input() statusText: string;\r\n @Input() callId: string;\r\n @Input() callType: string;\r\n @Input() operations: IOperation[];\r\n\r\n labelledByText = '';\r\n describedByText = '';\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor() {\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnInit() {\r\n if (this.statusText && this.callType) {\r\n this.describedByText = `${this.statusText} ${this.callType}`;\r\n } else if (this.statusText) {\r\n this.describedByText = this.statusText;\r\n } else if (this.callType) {\r\n this.describedByText = this.callType\r\n }\r\n\r\n if (this.callId) {\r\n this.labelledByText = this.callId;\r\n }\r\n }\r\n\r\n operationKeypress(event: KeyboardEvent, operation: IOperation) {\r\n if (event.code === 'Enter') {\r\n operation.handler(operation.operationName, operation.operationMetadata);\r\n }\r\n }\r\n}\r\n","import { IChatSettings } from './chat.settings';\r\nimport { IChatMessage } from './chat.message';\r\n\r\nexport * from './chat.message';\r\nexport * from './chat.settings';\r\n\r\n/**\r\n * It is collection of Interaction which need to be displayed on scenario component.\r\n */\r\nexport interface IScenario {\r\n interactions: IInteraction[];\r\n}\r\n\r\nexport interface IInteraction {\r\n /**\r\n * Unique id for the interaction.\r\n * Note: this interactionId is also used to provide id for the div element.\r\n */\r\n interactionId: string;\r\n properties?: Property[];\r\n associatedData?: Property[];\r\n startTime: number;\r\n displayCallTimer: boolean;\r\n /**\r\n * parties is supposed to contain data about all the participants in call except agent himself.\r\n */\r\n parties?: IParty[];\r\n /**\r\n * Operations/buttons which needs to be displayed in interaction and its handlers.\r\n */\r\n operations?: IOperation[];\r\n\r\n /**\r\n * It contains URLs for minimize, maximize, interaction specific icon urls for interaction.\r\n * And header number which needs to be displayed at top.\r\n */\r\n UIHeadersData: IInteractionUIHeaders;\r\n\r\n /**\r\n * Should contain identifying information about the main party in the interaction.\r\n */\r\n subheaderData: IPartyHeader;\r\n\r\n /**\r\n * This enables and configures the chat UI\r\n */\r\n chat?: {\r\n settings: IChatSettings;\r\n messages: IChatMessage[];\r\n isCustomerTyping?: boolean;\r\n };\r\n}\r\n\r\nexport interface IActivity {\r\n interactionId: string;\r\n WhoObject: IActivityDetails;\r\n WhatObject: IActivityDetails;\r\n whoList: IActivityDetails[];\r\n whatList: IActivityDetails[];\r\n CallType: string;\r\n CallDurationInSeconds: string;\r\n Subject: string;\r\n SubjectFieldName: string;\r\n NameFieldName: string;\r\n RelatedToFieldName: string;\r\n Description: string;\r\n Status: string;\r\n ActivityDate: string;\r\n TimeStamp: Date;\r\n ActivityId: string;\r\n quickCommentList: string[];\r\n}\r\n\r\nexport interface IActivityDetails {\r\n objectType: string;\r\n displayName: string;\r\n objectName: string;\r\n objectId: string;\r\n url: string;\r\n}\r\n\r\n/**\r\n * This contains the main identifying information about the interaction.\r\n */\r\nexport interface IPartyHeader {\r\n /**\r\n * Image that identifies the type of interaction\r\n * or the type of the identifying information(ex: phone icon for phone number)\r\n */\r\n image?: URL;\r\n /**\r\n * The tooltip to be displayed when the image is hovered over\r\n */\r\n tooltip?: string;\r\n /**\r\n * The value to be displayed\r\n */\r\n value: string;\r\n}\r\n\r\n/**\r\n * It contains URLs for minimize, maximize, interaction specific icon urls for interaction.\r\n * And header number which needs to be displayed at top.\r\n */\r\nexport interface IInteractionUIHeaders {\r\n /**\r\n * Minimize icon url.\r\n */\r\n minimizeUrl: URL;\r\n\r\n /**\r\n * Maximize Icon url.\r\n */\r\n maximizeUrl: URL;\r\n\r\n /**\r\n * This is the URL for the status image.\r\n * @memberof IInteractionUIHeaders\r\n */\r\n statusUrl: URL;\r\n\r\n /**\r\n * This is the handler for focus(Triggered on click of status).\r\n * @memberof IInteractionUIHeaders\r\n */\r\n focusHandler?: IFocus;\r\n\r\n /**\r\n * This is the text which is going to be displayed for status of the call.\r\n *\r\n * @memberof IInteractionUIHeaders\r\n */\r\n statusText: string;\r\n\r\n /**\r\n *This member will contain the text related to the direction of the call. E.g Inbound, Outbound etc.\r\n * @memberof IInteractionUIHeaders\r\n */\r\n directionText: string;\r\n\r\n /**\r\n *This data will be used to display hold counter whihc will be the combination of the current hold time and complete hold time.\r\n * @memberof IInteractionUIHeaders\r\n */\r\n holdCounterData?: IHoldCounterData;\r\n\r\n /**\r\n *If this value is set to true then hold counter is displayed based on the holdCounterData.\r\n * @memberof IInteractionUIHeaders\r\n */\r\n displayHoldCounter: boolean;\r\n}\r\nexport interface ICallDuration {\r\n startTime: number;\r\n endTime: number;\r\n}\r\nexport interface IHoldCounterData {\r\n pastCallDurations?: ICallDuration[];\r\n currentHoldStartTime: number;\r\n}\r\n\r\n/**\r\n * It contains Operation Icon URL and its hadlers which need to be displayed in Interaction.\r\n */\r\nexport interface IFocus {\r\n /**\r\n * metadata related to operation.\r\n */\r\n operationMetadata?: IMetadata[];\r\n /**\r\n * name of the operation.\r\n */\r\n operationName: string;\r\n /**\r\n * Handler which needs to be invoked when someone clicks on the operation icon.\r\n */\r\n handler: (operationName: string, operationMetadata?: IMetadata[]) => void;\r\n}\r\n\r\n/**\r\n * It contains Operation Icon URL and its hadlers which need to be displayed in Interaction.\r\n */\r\nexport interface IOperation {\r\n /**\r\n * metadata related to operation.\r\n */\r\n operationMetadata?: IMetadata[];\r\n /**\r\n * name of the operation.\r\n */\r\n operationName: string;\r\n /**\r\n * URL for the icon of operations.\r\n */\r\n icon: URL;\r\n /**\r\n * Title which needs to be doisplayed when someone hovers over the icon.\r\n */\r\n title: string;\r\n /**\r\n * Handler which needs to be invoked when someone clicks on the operation icon.\r\n */\r\n handler: (operationName: string, operationMetadata?: IMetadata[]) => void;\r\n /**\r\n * Browser accesskey to jump instantly to this operation Should conform to AMC norms and consist of a single printable character.\r\n */\r\n accesskey?: string\r\n}\r\n\r\n/**\r\n * This contains properties and operations to be displayed for conference member.\r\n */\r\nexport interface IParty {\r\n header: IPartyHeader;\r\n properties: Property[];\r\n operations: IOperation[];\r\n}\r\n\r\n/**\r\n * key value pairs which can be used amongst other interfaces/classes to store metadata of those entities.\r\n */\r\n\r\nexport interface IMetadata {\r\n key: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * This interface contains key value pairs, some custom operation which generates display key and display value.\r\n * Also it includes custom operation handler for click event on properties.\r\n */\r\nexport interface IProperty {\r\n /**\r\n * KEY value to be displayed on component.\r\n */\r\n displayKey?: string;\r\n\r\n /**\r\n * VALUE to be displayed on component.\r\n */\r\n displayValue?: any;\r\n displayValueType: ValueType;\r\n propertyMetadata?: IMetadata[];\r\n\r\n /**\r\n * Click event handler for property.\r\n */\r\n customOperations?: IEventHandler;\r\n /**\r\n * This flag decides if PROPERTY will be displayed on component or not.\r\n */\r\n visible: boolean;\r\n}\r\n\r\n/**\r\n * A helper method to make instances of [IProperty]\r\n */\r\nexport class Property implements IProperty {\r\n private key: string;\r\n private value: any;\r\n /**\r\n * KEY value to be displayed on component.\r\n */\r\n displayKey?: string;\r\n\r\n /**\r\n * VALUE to be displayed on component.\r\n */\r\n displayValue?: any;\r\n displayValueType: ValueType;\r\n propertyMetadata?: IMetadata[];\r\n\r\n /**\r\n * Click event handler for property.\r\n */\r\n customOperations?: IEventHandler;\r\n /**\r\n * This flag decides if PROPERTY will be displayed on component or not.\r\n */\r\n visible: boolean;\r\n\r\n /**\r\n * Operation responsible for generating displayKey and dispkayValur from key and value.\r\n */\r\n displayOperation: () => void = () => {\r\n this.displayKey = this.key;\r\n this.displayValue = this.value;\r\n }\r\n\r\n /**\r\n *\r\n * @param key\r\n * @param value : if value type is COUNTER then value should be start time in MilliSeconds.\r\n * @param visible\r\n * @param valueType\r\n * @param customOperation\r\n */\r\n constructor(\r\n key: string,\r\n value: any,\r\n visible?: boolean,\r\n valueType?: ValueType,\r\n customOperation?: IEventHandler\r\n ) {\r\n this.key = key;\r\n this.value = value;\r\n visible != null ? (this.visible = visible) : (this.visible = true);\r\n valueType != null\r\n ? (this.displayValueType = valueType)\r\n : (this.displayValueType = ValueType.STRING);\r\n this.customOperations = customOperation;\r\n this.displayOperation();\r\n }\r\n}\r\n\r\n/**\r\n * Interface which contains eventName and handler associated with it.\r\n */\r\nexport interface IEventHandler {\r\n eventName: string;\r\n handler: (eventName: string, eventMetadata?: IMetadata[]) => void;\r\n eventMetadata?: IMetadata[];\r\n}\r\n\r\n/**\r\n * enum for Value types of PROPERTY.\r\n */\r\nexport enum ValueType {\r\n STRING,\r\n COUNTER\r\n}\r\n","export function secondsToHms(seconds_in: number): string {\r\n seconds_in = Number(seconds_in);\r\n const h = Math.floor(seconds_in / 3600);\r\n const m = Math.floor(seconds_in % 3600 / 60);\r\n const s = Math.floor(seconds_in % 3600 % 60);\r\n\r\n const hDisplay = h > 0 ? h.toString() + ':' : '';\r\n const mDisplay = m > 0 ? ('0' + m.toString()).slice(-2) + ':' : '00:';\r\n const sDisplay = s > 0 ? ('0' + s.toString()).slice(-2) : '00';\r\n return hDisplay + mDisplay + sDisplay;\r\n}\r\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { ValueType, IProperty } from '../../models/uilibrary.model';\r\nimport { secondsToHms } from '../../Helpers';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Component({\r\n selector: 'amc-property',\r\n templateUrl: './property.component.html',\r\n styleUrls: ['./property.component.scss', './../uilibrary.module.scss']\r\n})\r\nexport class PropertyComponent implements OnInit, OnDestroy {\r\n\r\n @Input() statusText: string;\r\n @Input() callId: string;\r\n @Input() callType: string;\r\n @Input() property: IProperty;\r\n\r\n labelledByText = '';\r\n title = '';\r\n\r\n /**\r\n * @ignore\r\n */\r\n processedDisplayValue: string;\r\n\r\n /**\r\n * @ignore\r\n */\r\n private _timerId?: number;\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor() {\r\n\r\n this._timerId = null;\r\n this.processedDisplayValue = '';\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnInit() {\r\n if (this.statusText && this.callType) {\r\n this.labelledByText = `${this.statusText} ${this.callType}`;\r\n } else if (this.statusText) {\r\n this.labelledByText = this.statusText;\r\n } else if (this.callType) {\r\n this.labelledByText = this.callType\r\n }\r\n\r\n if (this.callType && this.callId) {\r\n this.title = `${this.callType} ${this.callId}`\r\n } else if (this.callType) {\r\n this.title = this.callType;\r\n } else if (this.callId) {\r\n this.title = this.callId;\r\n }\r\n\r\n this.initValues();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n initValues(): void {\r\n if (this.property.displayValueType === ValueType.COUNTER) {\r\n this.startCallCounter();\r\n } else {\r\n this.processedDisplayValue = this.property.displayValue;\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n private startCallCounter(): void {\r\n if (this._timerId == null) {\r\n this._timerId = window.setInterval(() => {\r\n const callStartTime: number = this.property.displayValue;\r\n const currentTime: number = new Date().getTime() / 1000;\r\n const secondsPassed: number = Math.floor((currentTime) - (callStartTime / 1000));\r\n this.processedDisplayValue = secondsToHms(secondsPassed);\r\n }, 1000);\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnDestroy(): void {\r\n if (this.property.displayValueType === ValueType.COUNTER) {\r\n // clear the timer.\r\n if (this._timerId != null) {\r\n clearInterval(this._timerId);\r\n this._timerId = null;\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { IHoldCounterData, ICallDuration } from '../../models/uilibrary.model';\r\nimport { secondsToHms } from '../../Helpers';\r\n\r\n@Component({\r\n selector: 'amc-holdtimer',\r\n templateUrl: './holdtimer.component.html',\r\n styleUrls: ['./holdtimer.component.scss', './../uilibrary.module.scss']\r\n})\r\nexport class HoldtimerComponent implements OnInit, OnDestroy {\r\n @Input() holdCounterData: IHoldCounterData;\r\n @Input() statusText: string;\r\n @Input() callId: string;\r\n\r\n displayTime: string;\r\n labelledByText = '';\r\n\r\n private _timerId?: number;\r\n constructor() {\r\n this.displayTime = '00:00/00:00';\r\n }\r\n\r\n ngOnInit() {\r\n if (this.statusText && this.callId) {\r\n this.labelledByText = `${this.statusText} ${this.callId}`;\r\n } else if (this.statusText) {\r\n this.labelledByText = this.statusText;\r\n } else if (this.callId) {\r\n this.labelledByText = this.callId\r\n }\r\n\r\n this.startCallCounter();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n private startCallCounter(): void {\r\n const pastTimeInSeconds = this.CaculatePastHoldDuration();\r\n if (this._timerId == null) {\r\n this._timerId = window.setInterval(() => {\r\n const currentTime: number = new Date().getTime() / 1000;\r\n const secondsPassedCurrentCall: number = Math.floor((currentTime) - (this.holdCounterData.currentHoldStartTime / 1000));\r\n this.displayTime = secondsToHms(secondsPassedCurrentCall) +\r\n '/' + secondsToHms(pastTimeInSeconds + secondsPassedCurrentCall);\r\n }, 1000);\r\n }\r\n }\r\n\r\n private CaculatePastHoldDuration(): number {\r\n let pastTimeInSeconds = 0;\r\n if (this.holdCounterData.pastCallDurations) {\r\n this.holdCounterData.pastCallDurations.forEach((holdTimerIterator: ICallDuration) => {\r\n pastTimeInSeconds += (holdTimerIterator.endTime - holdTimerIterator.startTime) / 1000;\r\n });\r\n }\r\n return pastTimeInSeconds;\r\n\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnDestroy(): void {\r\n // clear the timer.\r\n if (this._timerId != null) {\r\n clearInterval(this._timerId);\r\n this._timerId = null;\r\n }\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'amc-duration',\r\n templateUrl: './duration.component.html',\r\n styleUrls: ['./duration.component.scss', './../uilibrary.module.scss']\r\n})\r\nexport class DurationComponent implements OnInit, OnDestroy {\r\n @Input() statusText: string;\r\n @Input() callId: string;\r\n @Input() startTime: number;\r\n\r\n displayTime: string;\r\n labelledByText = '';\r\n\r\n private _timerId?: number;\r\n\r\n constructor() {\r\n this.displayTime = '00:00/00:00';\r\n }\r\n\r\n ngOnInit() {\r\n if (this.statusText && this.callId) {\r\n this.labelledByText = `${this.statusText} ${this.callId}`;\r\n } else if (this.statusText) {\r\n this.labelledByText = this.statusText;\r\n } else if (this.callId) {\r\n this.labelledByText = this.callId\r\n }\r\n\r\n this.startCallCounter();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n private startCallCounter(): void {\r\n if (this._timerId == null) {\r\n this._timerId = window.setInterval(() => {\r\n const callStartTime: number = this.startTime;\r\n const currentTime: number = new Date().getTime() / 1000;\r\n const secondsPassed: number = Math.floor((currentTime) - (callStartTime / 1000));\r\n this.displayTime = Math.floor(secondsPassed / 60) + ':' + ('0' + (secondsPassed % 60)).slice(-2);\r\n }, 1000);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // clear the timer.\r\n if (this._timerId != null) {\r\n clearInterval(this._timerId);\r\n this._timerId = null;\r\n }\r\n }\r\n\r\n}\r\n","import { THIS_EXPR } from '@angular/compiler/src/output/output_ast';\r\nimport { Component, Input, Output, EventEmitter, ViewChild, ElementRef, AfterViewChecked, AfterViewInit, OnInit, Renderer2 } from '@angular/core';\r\nimport { IChatMessage, IChatMessageType } from '../../models/chat.message';\r\nimport { IChatSettings } from '../../models/chat.settings';\r\n\r\n@Component({\r\n selector: 'app-chat-box',\r\n templateUrl: './chat-box.component.html',\r\n styleUrls: ['./chat-box.component.scss'],\r\n})\r\nexport class ChatBoxComponent implements AfterViewChecked, AfterViewInit, OnInit {\r\n @Input() settings: IChatSettings;\r\n @Input() isTyping = false;\r\n\r\n @Input() messages: IChatMessage[];\r\n @Input() newMsgs: IChatMessage[];\r\n private lastCount = -1;\r\n private lastScrollTop = 0;\r\n private newMessageSent = false;\r\n _isAgentTyping = false;\r\n @Output() isAgentTyping = new EventEmitter<boolean>();\r\n\r\n @Output() newMessage = new EventEmitter<string>();\r\n newMessageText = '';\r\n\r\n @ViewChild('MessagesContainer', { static: true }) messagesContainer: ElementRef;\r\n @ViewChild('autofocus', { static: false }) autofocus: ElementRef;\r\n\r\n usernameToColor: { [username: string]: string } = {};\r\n colors = [\r\n '#c2c4c4',\r\n '#ffab91',\r\n '#f48fb1',\r\n '#29b6f6',\r\n '#e1bee7',\r\n '#9ccc65',\r\n '#ffc107',\r\n '#26c6da',\r\n '#cddc39',\r\n ];\r\n colorsIndex = 0;\r\n agentColor = '#2db0e0';\r\n\r\n constructor(private renderer:Renderer2) {\r\n }\r\n ngOnInit(): void {\r\n this.renderer.selectRootElement('#autofocus').focus();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.renderer.selectRootElement('#autofocus').focus();\r\n }\r\n\r\n updatedMessage(): IChatMessage[] {\r\n\r\n try {\r\n if (typeof this.newMsgs !== 'undefined' && this.newMsgs.length > 0) {\r\n //this.scrollToBottom();\r\n return this.newMsgs;\r\n } else {\r\n return this.messages;\r\n }\r\n }catch (e) { }\r\n finally {\r\n\r\n if (this.newMessageSent){\r\n // //this.scrollToBottom();\r\n // var messageDiv = document.getElementById('msgScroll');\r\n // if (messageDiv !== null){\r\n // //window.scrollTo(0, messageDiv.clientHeight);\r\n // window.scrollTo(0, messageDiv.scrollHeight);\r\n // }\r\n // // if (this.messagesContainer.nativeElement.scrollTop + this.messagesContainer.nativeElement.clientHeight >= this.messagesContainer.nativeElement.scrollHeight){\r\n // // this.messagesContainer.nativeElement.scrollTop = this.messagesContainer.nativeElement.scrollHeight;\r\n // // }\r\n\r\n // this.newMessageSent = false;\r\n //this.scrollToBottom();\r\n }\r\n\r\n }\r\n}\r\n\r\n ngAfterViewChecked() {\r\n if (this.lastCount !== this.messages.length) {\r\n this.lastCount = this.messages.length;\r\n this.scrollToBottom();\r\n\r\n }\r\n }\r\n\r\n getColor(message: IChatMessage) {\r\n if (message.type && message.type === IChatMessageType.AGENT) {\r\n return this.agentColor;\r\n } else if (message.username) {\r\n if (!this.usernameToColor[message.username]) {\r\n this.usernameToColor[message.username] = this.colors[this.colorsIndex];\r\n this.colorsIndex = (this.colorsIndex + 1) % this.colors.length;\r\n }\r\n return this.usernameToColor[message.username];\r\n } else {\r\n return this.colors[0];\r\n }\r\n }\r\n\r\n shouldAlignRight(message: IChatMessage) {\r\n return message.type && message.type === IChatMessageType.AGENT;\r\n }\r\n\r\n sendNewMessage(event) {\r\n this.newMessageSent = true;\r\n event.preventDefault();\r\n if (this.newMessageText) {\r\n this.newMessage.emit(this.newMessageText);\r\n this.newMessageText = '';\r\n }\r\n this.renderer.selectRootElement('#autofocus').focus();\r\n }\r\n\r\n setOnFocus(event) {\r\n this.renderer.selectRootElement('#autofocus').focus();\r\n }\r\n\r\n onNewMessageFocus(event: boolean) {\r\n this.scrollToBottom();\r\n const isTyping = event && this.newMessageText.length > 0;\r\n if (isTyping !== this._isAgentTyping) {\r\n this._isAgentTyping = isTyping;\r\n this.isAgentTyping.emit(isTyping);\r\n }\r\n }\r\n\r\n onKeyup() {\r\n const isTyping = this.newMessageText.length > 0;\r\n if (isTyping !== this._isAgentTyping) {\r\n this._isAgentTyping = isTyping;\r\n this.isAgentTyping.emit(isTyping);\r\n }\r\n }\r\n\r\n scrollToBottom() {\r\n try {\r\n this.messagesContainer.nativeElement.scrollTop += 10;\r\n }\r\n catch (e) { }\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-chat-message',\r\n templateUrl: './chat-message.component.html',\r\n styleUrls: ['./chat-message.component.scss']\r\n})\r\nexport class ChatMessageComponent implements OnInit {\r\n @Input() message: string;\r\n @Input() alignRight = false;\r\n @Input() username: string;\r\n @Input() color: string;\r\n @Input() timestamp: string;\r\n @Input() image: string;\r\n @Input() fallbackImage: string;\r\n @Output() focusOn = new EventEmitter<any>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.focusOn.emit(true);\r\n }\r\n\r\n\r\n}\r\n","import { IDisposition, IDispositionResult } from './../../models/disposition.interface';\r\nimport { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'amc-disposition',\r\n templateUrl: './disposition.component.html',\r\n styleUrls: ['./disposition.component.css']\r\n})\r\nexport class DispositionComponent implements OnInit {\r\n @Input() disposition: IDisposition;\r\n\r\n @Output() dispositionEmitter = new EventEmitter<IDispositionResult>();\r\n\r\n selectedDispositionValue: string = '';\r\n dispositionName: string = '';\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n for (const metadata of this.disposition.dispositionMetadata) {\r\n if (metadata.key === 'callId') {\r\n this.dispositionName = `disposition_${metadata.value}`;\r\n\r\n break;\r\n }\r\n }\r\n\r\n if (this.disposition.checkedDisposition) {\r\n this.selectedDispositionValue = this.disposition.checkedDisposition;\r\n }\r\n }\r\n\r\n submitDisposition() {\r\n const selectedDisposition: IDispositionResult = {\r\n dispositionId: this.selectedDispositionValue,\r\n dispositionName: this.disposition.disposition.get(this.selectedDispositionValue),\r\n dispositionMetadata: this.disposition.dispositionMetadata\r\n };\r\n\r\n this.dispositionEmitter.emit(selectedDisposition);\r\n }\r\n\r\n selectAndSubmitDisposition(event: KeyboardEvent, dispositionKey: string) {\r\n if (event.code === 'Enter') {\r\n this.selectedDispositionValue = dispositionKey;\r\n this.submitDisposition();\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IActivity, IActivityDetails } from '../../models/uilibrary.model';\r\n\r\n@Component({\r\n selector: 'app-activity',\r\n templateUrl: './activity.component.html',\r\n styleUrls: ['./activity.component.css']\r\n})\r\nexport class ActivityComponent implements OnInit {\r\n\r\nisActivityMaximized: boolean;\r\n@Input() activity: IActivity;\r\n@Output() ActivitySave: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n@Output() OnNameSelectChange: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n@Output() OnRelatedToChange: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n@Output() OnSubjectChange: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n@Output() OnCallNotesChange: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n\r\n constructor() {\r\n this.isActivityMaximized = true;\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public onNameSelectChange(event) {\r\n this.activity.WhoObject = this.getWho(event.currentTarget.value);\r\n this.OnNameSelectChange.emit(this.activity);\r\n }\r\n\r\n public parseWhoObject(whoObject: IActivityDetails): string {\r\n return whoObject.objectType + ': ' + whoObject.objectName;\r\n }\r\n\r\n public parseWhatObject(whatObject: IActivityDetails): string {\r\n return whatObject.objectType + ': ' + whatObject.objectName;\r\n }\r\n\r\n public onRelatedToChange(event) {\r\n this.activity.WhatObject = this.getWhat(event.currentTarget.value);\r\n this.OnRelatedToChange.emit(this.activity);\r\n }\r\n\r\n public onSubjectChange(event) {\r\n this.activity.Subject = event.srcElement.value;\r\n this.OnSubjectChange.emit(this.activity);\r\n }\r\n public onCallNotesChange(event) {\r\n this.activity.Subject = event.srcElement.value.trim();\r\n this.OnCallNotesChange.emit(this.activity);\r\n }\r\n\r\n public getWho(id): IActivityDetails {\r\n for (let i = 0; i < this.activity.whoList.length; i++) {\r\n if (this.activity.whoList[i].objectId === id) {\r\n return this.activity.whoList[i];\r\n }\r\n }\r\n }\r\n public getWhat(id): IActivityDetails {\r\n for (let i = 0; i < this.activity.whatList.length; i++) {\r\n if (this.activity.whatList[i].objectId === id) {\r\n return this.activity.whatList[i];\r\n }\r\n }\r\n }\r\n\r\n public loadQuickComment(value) {\r\n this.activity.Description = this.activity.Description + this.activity.quickCommentList[value];\r\n }\r\n\r\n public activitySave(clearActivityFields) {\r\n this.ActivitySave.emit(this.activity);\r\n }\r\n}\r\n","import { ILoginData } from './../../models/login.interface';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'amc-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.css']\r\n})\r\nexport class LoginComponent implements OnInit {\r\n @Input() loginData: ILoginData;\r\n @Output() loginDetailsProvided = new EventEmitter<ILoginData>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if (!this.loginData.header) {\r\n this.loginData.header = 'Login';\r\n }\r\n\r\n for (let field of this.loginData.fields) {\r\n if (!field.isInvalid) {\r\n field.isInvalid = false;\r\n }\r\n }\r\n }\r\n\r\n onLogin(loginForm: NgForm) {\r\n for (const field of this.loginData.fields) {\r\n field.value = loginForm.value[field.name];\r\n }\r\n\r\n this.loginDetailsProvided.emit(this.loginData);\r\n }\r\n\r\n focusOutOfInput(loginForm: NgForm, field) {\r\n if (!loginForm.controls[field.name].valid) {\r\n field.isInvalid = true;\r\n }\r\n\r\n // console.log(loginForm);\r\n // console.log(field);\r\n }\r\n}\r\n","import { NgModule, Injector } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { InteractionComponent } from './components/interaction/interaction.component';\r\nimport { ScenarioComponent } from './components/scenario/scenario.component';\r\nimport { OperationComponent } from './components/operation/operation.component';\r\nimport { PropertyComponent } from './components/property/property.component';\r\nimport { HoldtimerComponent } from './components/holdtimer/holdtimer.component';\r\nimport { DurationComponent } from './components/duration/duration.component';\r\nimport { ChatBoxComponent } from './components/chat-box/chat-box.component';\r\nimport { ChatMessageComponent } from './components/chat-message/chat-message.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { createCustomElement } from '@angular/elements';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { ElementZoneStrategyFactory } from 'elements-zone-strategy';\r\nimport { DispositionComponent } from './components/disposition/disposition.component';\r\nimport { ActivityComponent } from './components/activity/activity.component';\r\nimport { LoginComponent } from './components/login/login.component';\r\n\r\n@NgModule({\r\n imports: [BrowserModule, CommonModule, FormsModule],\r\n declarations: [\r\n InteractionComponent,\r\n ScenarioComponent,\r\n OperationComponent,\r\n PropertyComponent,\r\n HoldtimerComponent,\r\n DurationComponent,\r\n ChatBoxComponent,\r\n ChatMessageComponent,\r\n DispositionComponent,\r\n ActivityComponent,\r\n LoginComponent\r\n ],\r\n entryComponents: [ScenarioComponent, DispositionComponent, LoginComponent],\r\n bootstrap: [],\r\n exports: [ScenarioComponent, DispositionComponent, LoginComponent]\r\n})\r\nexport class UILibraryModule {\r\n constructor(private injector: Injector) { }\r\n\r\n ngDoBootstrap(app) {\r\n if (!customElements.get('amc-webcomponents-scenario')) {\r\n const strategyFactory = new ElementZoneStrategyFactory(\r\n ScenarioComponent,\r\n this.injector\r\n );\r\n customElements.define(\r\n 'amc-webcomponents-scenario',\r\n createCustomElement(ScenarioComponent, {\r\n injector: this.injector,\r\n strategyFactory: strategyFactory\r\n })\r\n );\r\n }\r\n if (!customElements.get('amc-webcomponents-disposition')) {\r\n const strategyFactory = new ElementZoneStrategyFactory(\r\n DispositionComponent,\r\n this.injector\r\n );\r\n customElements.define(\r\n 'amc-webcomponents-disposition',\r\n createCustomElement(DispositionComponent, {\r\n injector: this.injector,\r\n strategyFactory: strategyFactory\r\n })\r\n );\r\n }\r\n if (!customElements.get('amc-webcomponents-login')) {\r\n const strategyFactory = new ElementZoneStrategyFactory(\r\n LoginComponent,\r\n this.injector\r\n );\r\n customElements.define(\r\n 'amc-webcomponents-login',\r\n createCustomElement(LoginComponent, {\r\n injector: this.injector,\r\n strategyFactory: strategyFactory\r\n })\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport * from './models/uilibrary.model';\r\n"]}
1
+ {"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","ng://@amc-technology/ui-library/projects/UILibrary/src/app/models/chat.message.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/interaction/interaction.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/scenario/scenario.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/operation/operation.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/models/uilibrary.model.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/Helpers.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/property/property.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/holdtimer/holdtimer.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/duration/duration.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/chat-box/chat-box.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/chat-message/chat-message.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/disposition/disposition.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/activity/activity.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/components/login/login.component.ts","ng://@amc-technology/ui-library/projects/UILibrary/src/app/uilibrary.module.ts"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__values","o","s","Symbol","iterator","m","call","next","value","done","TypeError","IChatMessageType","InteractionComponent","this","minimizedChanged","EventEmitter","isAgentTyping","newMessage","_minimized","prototype","minimized","emit","ngOnInit","minimize","maximize","isConferenceCall","interaction","parties","collapseKeypress","event","code","expandKeypress","Input","Output","Component","selector","template","ScenarioComponent","afterViewChecked","ngAfterViewChecked","onMinimizedChanged","OperationComponent","labelledByText","describedByText","statusText","callType","callId","operationKeypress","operation","handler","operationName","operationMetadata","ValueType","visible","valueType","customOperation","_this","displayOperation","displayKey","displayValue","displayValueType","STRING","customOperations","secondsToHms","seconds_in","Number","h","Math","floor","toString","slice","PropertyComponent","title","_timerId","processedDisplayValue","initValues","property","COUNTER","startCallCounter","window","setInterval","callStartTime","currentTime","Date","getTime","secondsPassed","ngOnDestroy","clearInterval","HoldtimerComponent","displayTime","pastTimeInSeconds","CaculatePastHoldDuration","secondsPassedCurrentCall","holdCounterData","currentHoldStartTime","pastCallDurations","forEach","holdTimerIterator","endTime","startTime","DurationComponent","ChatBoxComponent","renderer","isTyping","lastCount","lastScrollTop","newMessageSent","_isAgentTyping","newMessageText","usernameToColor","colors","colorsIndex","agentColor","selectRootElement","focus","ngAfterViewInit","updatedMessage","newMsgs","messages","e","scrollToBottom","getColor","message","type","AGENT","username","shouldAlignRight","sendNewMessage","preventDefault","setOnFocus","onNewMessageFocus","onKeyup","messagesContainer","nativeElement","scrollTop","Renderer2","ViewChild","static","ChatMessageComponent","alignRight","focusOn","DispositionComponent","dispositionEmitter","selectedDispositionValue","dispositionName","_b","disposition","dispositionMetadata","_c","metadata","checkedDisposition","submitDisposition","selectedDisposition","dispositionId","get","selectAndSubmitDisposition","dispositionKey","ActivityComponent","ActivitySave","OnNameSelectChange","OnRelatedToChange","OnSubjectChange","OnCallNotesChange","isActivityMaximized","onNameSelectChange","activity","WhoObject","getWho","currentTarget","parseWhoObject","whoObject","objectType","objectName","parseWhatObject","whatObject","onRelatedToChange","WhatObject","getWhat","onSubjectChange","Subject","srcElement","onCallNotesChange","trim","id","whoList","objectId","whatList","loadQuickComment","Description","quickCommentList","activitySave","clearActivityFields","LoginComponent","loginDetailsProvided","loginData","header","fields","field","isInvalid","onLogin","loginForm","name","focusOutOfInput","controls","valid","UILibraryModule","injector","ngDoBootstrap","app","customElements","strategyFactory","ElementZoneStrategyFactory","define","createCustomElement","Injector","NgModule","imports","BrowserModule","CommonModule","FormsModule","declarations","entryComponents","bootstrap","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export interface IChatMessage {\r\n username?: string;\r\n text: string;\r\n /**\r\n * What type of chat message. Defaults to OTHER_PERSON\r\n */\r\n type?: IChatMessageType;\r\n timestamp?: string;\r\n userIcon?: URL;\r\n}\r\n\r\nexport enum IChatMessageType {\r\n AGENT = 'AGENT',\r\n OTHER_PERSON = 'OTHER_PERSON',\r\n INFORMATION = 'INFORMATION'\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChildren, QueryList } from '@angular/core';\r\nimport { IChatMessage, IInteraction } from '../../models/uilibrary.model';\r\nimport { ChatBoxComponent } from '../chat-box/chat-box.component'\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Component({\r\n selector: 'amc-interaction',\r\n templateUrl: './interaction.component.html',\r\n styleUrls: ['./interaction.component.scss', './../uilibrary.module.scss']\r\n})\r\nexport class InteractionComponent implements OnInit {\r\n\r\n @Input() interaction: IInteraction;\r\n @Input() newMsgs: IChatMessage[];\r\n @Output() minimizedChanged: EventEmitter<boolean> = new EventEmitter();\r\n @Output() isAgentTyping = new EventEmitter<boolean>();\r\n @Output() newMessage = new EventEmitter<string>();\r\n /**\r\n * @ignore\r\n */\r\n minimized: boolean;\r\n set _minimized(value) {\r\n this.minimized = value;\r\n this.minimizedChanged.emit(value);\r\n }\r\n get _minimized() {\r\n return this.minimized;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor() {\r\n this._minimized = false;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnInit() {\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n minimize(): void {\r\n this._minimized = true;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n maximize(): void {\r\n this._minimized = false;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n isConferenceCall(): boolean {\r\n if (this.interaction.parties && this.interaction.parties.length > 1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n collapseKeypress(event: KeyboardEvent) {\r\n if (event.code === 'Enter') {\r\n this.minimize();\r\n }\r\n }\r\n\r\n expandKeypress(event: KeyboardEvent) {\r\n if (event.code === 'Enter') {\r\n this.maximize();\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n AfterViewChecked\r\n} from '@angular/core';\r\nimport { IChatMessage, IScenario } from '../../models/uilibrary.model';\r\n\r\n@Component({\r\n selector: 'amc-scenario',\r\n templateUrl: './scenario.component.html',\r\n styleUrls: ['./scenario.component.scss', './../uilibrary.module.scss']\r\n})\r\nexport class ScenarioComponent implements AfterViewChecked {\r\n @Input() scenario: IScenario;\r\n @Input() newMsgs: IChatMessage[];\r\n @Output() minimizedChanged = new EventEmitter();\r\n @Output() isAgentTyping = new EventEmitter<boolean>();\r\n @Output() newMessage = new EventEmitter<string>();\r\n @Output() afterViewChecked = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n ngAfterViewChecked() {\r\n this.afterViewChecked.emit();\r\n }\r\n\r\n onMinimizedChanged() {\r\n this.minimizedChanged.emit();\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { IOperation } from '../../models/uilibrary.model';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Component({\r\n selector: 'amc-operation',\r\n templateUrl: './operation.component.html',\r\n styleUrls: ['./operation.component.scss', './../uilibrary.module.scss']\r\n})\r\nexport class OperationComponent implements OnInit {\r\n @Input() statusText: string;\r\n @Input() callId: string;\r\n @Input() callType: string;\r\n @Input() operations: IOperation[];\r\n\r\n labelledByText = '';\r\n describedByText = '';\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor() {\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnInit() {\r\n if (this.statusText && this.callType) {\r\n this.describedByText = `${this.statusText} ${this.callType}`;\r\n } else if (this.statusText) {\r\n this.describedByText = this.statusText;\r\n } else if (this.callType) {\r\n this.describedByText = this.callType\r\n }\r\n\r\n if (this.callId) {\r\n this.labelledByText = this.callId;\r\n }\r\n }\r\n\r\n operationKeypress(event: KeyboardEvent, operation: IOperation) {\r\n if (event.code === 'Enter') {\r\n operation.handler(operation.operationName, operation.operationMetadata);\r\n }\r\n }\r\n}\r\n","import { IChatSettings } from './chat.settings';\r\nimport { IChatMessage } from './chat.message';\r\n\r\nexport * from './chat.message';\r\nexport * from './chat.settings';\r\n\r\n/**\r\n * It is collection of Interaction which need to be displayed on scenario component.\r\n */\r\nexport interface IScenario {\r\n interactions: IInteraction[];\r\n}\r\n\r\nexport interface IInteraction {\r\n /**\r\n * Unique id for the interaction.\r\n * Note: this interactionId is also used to provide id for the div element.\r\n */\r\n interactionId: string;\r\n properties?: Property[];\r\n associatedData?: Property[];\r\n startTime: number;\r\n displayCallTimer: boolean;\r\n /**\r\n * parties is supposed to contain data about all the participants in call except agent himself.\r\n */\r\n parties?: IParty[];\r\n /**\r\n * Operations/buttons which needs to be displayed in interaction and its handlers.\r\n */\r\n operations?: IOperation[];\r\n\r\n /**\r\n * It contains URLs for minimize, maximize, interaction specific icon urls for interaction.\r\n * And header number which needs to be displayed at top.\r\n */\r\n UIHeadersData: IInteractionUIHeaders;\r\n\r\n /**\r\n * Should contain identifying information about the main party in the interaction.\r\n */\r\n subheaderData: IPartyHeader;\r\n\r\n /**\r\n * This enables and configures the chat UI\r\n */\r\n chat?: {\r\n settings: IChatSettings;\r\n messages: IChatMessage[];\r\n isCustomerTyping?: boolean;\r\n };\r\n}\r\n\r\nexport interface IActivity {\r\n interactionId: string;\r\n WhoObject: IActivityDetails;\r\n WhatObject: IActivityDetails;\r\n whoList: IActivityDetails[];\r\n whatList: IActivityDetails[];\r\n CallType: string;\r\n CallDurationInSeconds: string;\r\n Subject: string;\r\n SubjectFieldName: string;\r\n NameFieldName: string;\r\n RelatedToFieldName: string;\r\n Description: string;\r\n Status: string;\r\n ActivityDate: string;\r\n TimeStamp: Date;\r\n ActivityId: string;\r\n quickCommentList: string[];\r\n}\r\n\r\nexport interface IActivityDetails {\r\n objectType: string;\r\n displayName: string;\r\n objectName: string;\r\n objectId: string;\r\n url: string;\r\n}\r\n\r\n/**\r\n * This contains the main identifying information about the interaction.\r\n */\r\nexport interface IPartyHeader {\r\n /**\r\n * Image that identifies the type of interaction\r\n * or the type of the identifying information(ex: phone icon for phone number)\r\n */\r\n image?: URL;\r\n /**\r\n * The tooltip to be displayed when the image is hovered over\r\n */\r\n tooltip?: string;\r\n /**\r\n * The value to be displayed\r\n */\r\n value: string;\r\n}\r\n\r\n/**\r\n * It contains URLs for minimize, maximize, interaction specific icon urls for interaction.\r\n * And header number which needs to be displayed at top.\r\n */\r\nexport interface IInteractionUIHeaders {\r\n /**\r\n * Minimize icon url.\r\n */\r\n minimizeUrl: URL;\r\n\r\n /**\r\n * Maximize Icon url.\r\n */\r\n maximizeUrl: URL;\r\n\r\n /**\r\n * This is the URL for the status image.\r\n * @memberof IInteractionUIHeaders\r\n */\r\n statusUrl: URL;\r\n\r\n /**\r\n * This is the handler for focus(Triggered on click of status).\r\n * @memberof IInteractionUIHeaders\r\n */\r\n focusHandler?: IFocus;\r\n\r\n /**\r\n * This is the text which is going to be displayed for status of the call.\r\n *\r\n * @memberof IInteractionUIHeaders\r\n */\r\n statusText: string;\r\n\r\n /**\r\n *This member will contain the text related to the direction of the call. E.g Inbound, Outbound etc.\r\n * @memberof IInteractionUIHeaders\r\n */\r\n directionText: string;\r\n\r\n /**\r\n *This data will be used to display hold counter whihc will be the combination of the current hold time and complete hold time.\r\n * @memberof IInteractionUIHeaders\r\n */\r\n holdCounterData?: IHoldCounterData;\r\n\r\n /**\r\n *If this value is set to true then hold counter is displayed based on the holdCounterData.\r\n * @memberof IInteractionUIHeaders\r\n */\r\n displayHoldCounter: boolean;\r\n}\r\nexport interface ICallDuration {\r\n startTime: number;\r\n endTime: number;\r\n}\r\nexport interface IHoldCounterData {\r\n pastCallDurations?: ICallDuration[];\r\n currentHoldStartTime: number;\r\n}\r\n\r\n/**\r\n * It contains Operation Icon URL and its hadlers which need to be displayed in Interaction.\r\n */\r\nexport interface IFocus {\r\n /**\r\n * metadata related to operation.\r\n */\r\n operationMetadata?: IMetadata[];\r\n /**\r\n * name of the operation.\r\n */\r\n operationName: string;\r\n /**\r\n * Handler which needs to be invoked when someone clicks on the operation icon.\r\n */\r\n handler: (operationName: string, operationMetadata?: IMetadata[]) => void;\r\n}\r\n\r\n/**\r\n * It contains Operation Icon URL and its hadlers which need to be displayed in Interaction.\r\n */\r\nexport interface IOperation {\r\n /**\r\n * metadata related to operation.\r\n */\r\n operationMetadata?: IMetadata[];\r\n /**\r\n * name of the operation.\r\n */\r\n operationName: string;\r\n /**\r\n * URL for the icon of operations.\r\n */\r\n icon: URL;\r\n /**\r\n * Title which needs to be doisplayed when someone hovers over the icon.\r\n */\r\n title: string;\r\n /**\r\n * Handler which needs to be invoked when someone clicks on the operation icon.\r\n */\r\n handler: (operationName: string, operationMetadata?: IMetadata[]) => void;\r\n /**\r\n * Browser accesskey to jump instantly to this operation Should conform to AMC norms and consist of a single printable character.\r\n */\r\n accesskey?: string\r\n}\r\n\r\n/**\r\n * This contains properties and operations to be displayed for conference member.\r\n */\r\nexport interface IParty {\r\n header: IPartyHeader;\r\n properties: Property[];\r\n operations: IOperation[];\r\n}\r\n\r\n/**\r\n * key value pairs which can be used amongst other interfaces/classes to store metadata of those entities.\r\n */\r\n\r\nexport interface IMetadata {\r\n key: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * This interface contains key value pairs, some custom operation which generates display key and display value.\r\n * Also it includes custom operation handler for click event on properties.\r\n */\r\nexport interface IProperty {\r\n /**\r\n * KEY value to be displayed on component.\r\n */\r\n displayKey?: string;\r\n\r\n /**\r\n * VALUE to be displayed on component.\r\n */\r\n displayValue?: any;\r\n displayValueType: ValueType;\r\n propertyMetadata?: IMetadata[];\r\n\r\n /**\r\n * Click event handler for property.\r\n */\r\n customOperations?: IEventHandler;\r\n /**\r\n * This flag decides if PROPERTY will be displayed on component or not.\r\n */\r\n visible: boolean;\r\n}\r\n\r\n/**\r\n * A helper method to make instances of [IProperty]\r\n */\r\nexport class Property implements IProperty {\r\n private key: string;\r\n private value: any;\r\n /**\r\n * KEY value to be displayed on component.\r\n */\r\n displayKey?: string;\r\n\r\n /**\r\n * VALUE to be displayed on component.\r\n */\r\n displayValue?: any;\r\n displayValueType: ValueType;\r\n propertyMetadata?: IMetadata[];\r\n\r\n /**\r\n * Click event handler for property.\r\n */\r\n customOperations?: IEventHandler;\r\n /**\r\n * This flag decides if PROPERTY will be displayed on component or not.\r\n */\r\n visible: boolean;\r\n\r\n /**\r\n * Operation responsible for generating displayKey and dispkayValur from key and value.\r\n */\r\n displayOperation: () => void = () => {\r\n this.displayKey = this.key;\r\n this.displayValue = this.value;\r\n }\r\n\r\n /**\r\n *\r\n * @param key\r\n * @param value : if value type is COUNTER then value should be start time in MilliSeconds.\r\n * @param visible\r\n * @param valueType\r\n * @param customOperation\r\n */\r\n constructor(\r\n key: string,\r\n value: any,\r\n visible?: boolean,\r\n valueType?: ValueType,\r\n customOperation?: IEventHandler\r\n ) {\r\n this.key = key;\r\n this.value = value;\r\n visible != null ? (this.visible = visible) : (this.visible = true);\r\n valueType != null\r\n ? (this.displayValueType = valueType)\r\n : (this.displayValueType = ValueType.STRING);\r\n this.customOperations = customOperation;\r\n this.displayOperation();\r\n }\r\n}\r\n\r\n/**\r\n * Interface which contains eventName and handler associated with it.\r\n */\r\nexport interface IEventHandler {\r\n eventName: string;\r\n handler: (eventName: string, eventMetadata?: IMetadata[]) => void;\r\n eventMetadata?: IMetadata[];\r\n}\r\n\r\n/**\r\n * enum for Value types of PROPERTY.\r\n */\r\nexport enum ValueType {\r\n STRING,\r\n COUNTER\r\n}\r\n","export function secondsToHms(seconds_in: number): string {\r\n seconds_in = Number(seconds_in);\r\n const h = Math.floor(seconds_in / 3600);\r\n const m = Math.floor(seconds_in % 3600 / 60);\r\n const s = Math.floor(seconds_in % 3600 % 60);\r\n\r\n const hDisplay = h > 0 ? h.toString() + ':' : '';\r\n const mDisplay = m > 0 ? ('0' + m.toString()).slice(-2) + ':' : '00:';\r\n const sDisplay = s > 0 ? ('0' + s.toString()).slice(-2) : '00';\r\n return hDisplay + mDisplay + sDisplay;\r\n}\r\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { ValueType, IProperty } from '../../models/uilibrary.model';\r\nimport { secondsToHms } from '../../Helpers';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Component({\r\n selector: 'amc-property',\r\n templateUrl: './property.component.html',\r\n styleUrls: ['./property.component.scss', './../uilibrary.module.scss']\r\n})\r\nexport class PropertyComponent implements OnInit, OnDestroy {\r\n\r\n @Input() statusText: string;\r\n @Input() callId: string;\r\n @Input() callType: string;\r\n @Input() property: IProperty;\r\n\r\n labelledByText = '';\r\n title = '';\r\n\r\n /**\r\n * @ignore\r\n */\r\n processedDisplayValue: string;\r\n\r\n /**\r\n * @ignore\r\n */\r\n private _timerId?: number;\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor() {\r\n\r\n this._timerId = null;\r\n this.processedDisplayValue = '';\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnInit() {\r\n if (this.statusText && this.callType) {\r\n this.labelledByText = `${this.statusText} ${this.callType}`;\r\n } else if (this.statusText) {\r\n this.labelledByText = this.statusText;\r\n } else if (this.callType) {\r\n this.labelledByText = this.callType\r\n }\r\n\r\n if (this.callType && this.callId) {\r\n this.title = `${this.callType} ${this.callId}`\r\n } else if (this.callType) {\r\n this.title = this.callType;\r\n } else if (this.callId) {\r\n this.title = this.callId;\r\n }\r\n\r\n this.initValues();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n initValues(): void {\r\n if (this.property.displayValueType === ValueType.COUNTER) {\r\n this.startCallCounter();\r\n } else {\r\n this.processedDisplayValue = this.property.displayValue;\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n private startCallCounter(): void {\r\n if (this._timerId == null) {\r\n this._timerId = window.setInterval(() => {\r\n const callStartTime: number = this.property.displayValue;\r\n const currentTime: number = new Date().getTime() / 1000;\r\n const secondsPassed: number = Math.floor((currentTime) - (callStartTime / 1000));\r\n this.processedDisplayValue = secondsToHms(secondsPassed);\r\n }, 1000);\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnDestroy(): void {\r\n if (this.property.displayValueType === ValueType.COUNTER) {\r\n // clear the timer.\r\n if (this._timerId != null) {\r\n clearInterval(this._timerId);\r\n this._timerId = null;\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { IHoldCounterData, ICallDuration } from '../../models/uilibrary.model';\r\nimport { secondsToHms } from '../../Helpers';\r\n\r\n@Component({\r\n selector: 'amc-holdtimer',\r\n templateUrl: './holdtimer.component.html',\r\n styleUrls: ['./holdtimer.component.scss', './../uilibrary.module.scss']\r\n})\r\nexport class HoldtimerComponent implements OnInit, OnDestroy {\r\n @Input() holdCounterData: IHoldCounterData;\r\n @Input() statusText: string;\r\n @Input() callId: string;\r\n\r\n displayTime: string;\r\n labelledByText = '';\r\n\r\n private _timerId?: number;\r\n constructor() {\r\n this.displayTime = '00:00/00:00';\r\n }\r\n\r\n ngOnInit() {\r\n if (this.statusText && this.callId) {\r\n this.labelledByText = `${this.statusText} ${this.callId}`;\r\n } else if (this.statusText) {\r\n this.labelledByText = this.statusText;\r\n } else if (this.callId) {\r\n this.labelledByText = this.callId\r\n }\r\n\r\n this.startCallCounter();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n private startCallCounter(): void {\r\n const pastTimeInSeconds = this.CaculatePastHoldDuration();\r\n if (this._timerId == null) {\r\n this._timerId = window.setInterval(() => {\r\n const currentTime: number = new Date().getTime() / 1000;\r\n const secondsPassedCurrentCall: number = Math.floor((currentTime) - (this.holdCounterData.currentHoldStartTime / 1000));\r\n this.displayTime = secondsToHms(secondsPassedCurrentCall) +\r\n '/' + secondsToHms(pastTimeInSeconds + secondsPassedCurrentCall);\r\n }, 1000);\r\n }\r\n }\r\n\r\n private CaculatePastHoldDuration(): number {\r\n let pastTimeInSeconds = 0;\r\n if (this.holdCounterData.pastCallDurations) {\r\n this.holdCounterData.pastCallDurations.forEach((holdTimerIterator: ICallDuration) => {\r\n pastTimeInSeconds += (holdTimerIterator.endTime - holdTimerIterator.startTime) / 1000;\r\n });\r\n }\r\n return pastTimeInSeconds;\r\n\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnDestroy(): void {\r\n // clear the timer.\r\n if (this._timerId != null) {\r\n clearInterval(this._timerId);\r\n this._timerId = null;\r\n }\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'amc-duration',\r\n templateUrl: './duration.component.html',\r\n styleUrls: ['./duration.component.scss', './../uilibrary.module.scss']\r\n})\r\nexport class DurationComponent implements OnInit, OnDestroy {\r\n @Input() statusText: string;\r\n @Input() callId: string;\r\n @Input() startTime: number;\r\n\r\n displayTime: string;\r\n labelledByText = '';\r\n\r\n private _timerId?: number;\r\n\r\n constructor() {\r\n this.displayTime = '00:00/00:00';\r\n }\r\n\r\n ngOnInit() {\r\n if (this.statusText && this.callId) {\r\n this.labelledByText = `${this.statusText} ${this.callId}`;\r\n } else if (this.statusText) {\r\n this.labelledByText = this.statusText;\r\n } else if (this.callId) {\r\n this.labelledByText = this.callId\r\n }\r\n\r\n this.startCallCounter();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n private startCallCounter(): void {\r\n if (this._timerId == null) {\r\n this._timerId = window.setInterval(() => {\r\n const callStartTime: number = this.startTime;\r\n const currentTime: number = new Date().getTime() / 1000;\r\n const secondsPassed: number = Math.floor((currentTime) - (callStartTime / 1000));\r\n this.displayTime = Math.floor(secondsPassed / 60) + ':' + ('0' + (secondsPassed % 60)).slice(-2);\r\n }, 1000);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // clear the timer.\r\n if (this._timerId != null) {\r\n clearInterval(this._timerId);\r\n this._timerId = null;\r\n }\r\n }\r\n\r\n}\r\n","import { THIS_EXPR } from '@angular/compiler/src/output/output_ast';\r\nimport { Component, Input, Output, EventEmitter, ViewChild, ElementRef, AfterViewChecked, AfterViewInit, OnInit, Renderer2 } from '@angular/core';\r\nimport { IChatMessage, IChatMessageType } from '../../models/chat.message';\r\nimport { IChatSettings } from '../../models/chat.settings';\r\n\r\n@Component({\r\n selector: 'app-chat-box',\r\n templateUrl: './chat-box.component.html',\r\n styleUrls: ['./chat-box.component.scss'],\r\n})\r\nexport class ChatBoxComponent implements AfterViewChecked, AfterViewInit, OnInit {\r\n @Input() settings: IChatSettings;\r\n @Input() isTyping = false;\r\n\r\n @Input() messages: IChatMessage[];\r\n @Input() newMsgs: IChatMessage[];\r\n private lastCount = -1;\r\n private lastScrollTop = 0;\r\n private newMessageSent = false;\r\n _isAgentTyping = false;\r\n @Output() isAgentTyping = new EventEmitter<boolean>();\r\n\r\n @Output() newMessage = new EventEmitter<string>();\r\n newMessageText = '';\r\n\r\n @ViewChild('MessagesContainer', { static: true }) messagesContainer: ElementRef;\r\n @ViewChild('autofocus', { static: false }) autofocus: ElementRef;\r\n\r\n usernameToColor: { [username: string]: string } = {};\r\n colors = [\r\n '#c2c4c4',\r\n '#ffab91',\r\n '#f48fb1',\r\n '#29b6f6',\r\n '#e1bee7',\r\n '#9ccc65',\r\n '#ffc107',\r\n '#26c6da',\r\n '#cddc39',\r\n ];\r\n colorsIndex = 0;\r\n agentColor = '#2db0e0';\r\n\r\n constructor(private renderer:Renderer2) {\r\n }\r\n ngOnInit(): void {\r\n this.renderer.selectRootElement('#autofocus').focus();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.renderer.selectRootElement('#autofocus').focus();\r\n }\r\n\r\n updatedMessage(): IChatMessage[] {\r\n\r\n try {\r\n if (typeof this.newMsgs !== 'undefined' && this.newMsgs.length > 0) {\r\n //this.scrollToBottom();\r\n return this.newMsgs;\r\n } else {\r\n return this.messages;\r\n }\r\n }catch (e) { }\r\n finally {\r\n\r\n if (this.newMessageSent){\r\n // //this.scrollToBottom();\r\n // var messageDiv = document.getElementById('msgScroll');\r\n // if (messageDiv !== null){\r\n // //window.scrollTo(0, messageDiv.clientHeight);\r\n // window.scrollTo(0, messageDiv.scrollHeight);\r\n // }\r\n // // if (this.messagesContainer.nativeElement.scrollTop + this.messagesContainer.nativeElement.clientHeight >= this.messagesContainer.nativeElement.scrollHeight){\r\n // // this.messagesContainer.nativeElement.scrollTop = this.messagesContainer.nativeElement.scrollHeight;\r\n // // }\r\n\r\n // this.newMessageSent = false;\r\n //this.scrollToBottom();\r\n }\r\n\r\n }\r\n}\r\n\r\n ngAfterViewChecked() {\r\n if (this.lastCount !== this.messages.length) {\r\n this.lastCount = this.messages.length;\r\n this.scrollToBottom();\r\n\r\n }\r\n }\r\n\r\n getColor(message: IChatMessage) {\r\n if (message.type && message.type === IChatMessageType.AGENT) {\r\n return this.agentColor;\r\n } else if (message.username) {\r\n if (!this.usernameToColor[message.username]) {\r\n this.usernameToColor[message.username] = this.colors[this.colorsIndex];\r\n this.colorsIndex = (this.colorsIndex + 1) % this.colors.length;\r\n }\r\n return this.usernameToColor[message.username];\r\n } else {\r\n return this.colors[0];\r\n }\r\n }\r\n\r\n shouldAlignRight(message: IChatMessage) {\r\n return message.type && message.type === IChatMessageType.AGENT;\r\n }\r\n\r\n sendNewMessage(event) {\r\n this.scrollToBottom();\r\n this.newMessageSent = true;\r\n event.preventDefault();\r\n if (this.newMessageText) {\r\n this.newMessage.emit(this.newMessageText);\r\n this.newMessageText = '';\r\n }\r\n this.renderer.selectRootElement('#autofocus').focus();\r\n }\r\n\r\n setOnFocus(event) {\r\n this.renderer.selectRootElement('#autofocus').focus();\r\n }\r\n\r\n onNewMessageFocus(event: boolean) {\r\n this.scrollToBottom();\r\n const isTyping = event && this.newMessageText.length > 0;\r\n if (isTyping !== this._isAgentTyping) {\r\n this._isAgentTyping = isTyping;\r\n this.isAgentTyping.emit(isTyping);\r\n }\r\n }\r\n\r\n onKeyup() {\r\n const isTyping = this.newMessageText.length > 0;\r\n if (isTyping !== this._isAgentTyping) {\r\n this._isAgentTyping = isTyping;\r\n this.isAgentTyping.emit(isTyping);\r\n }\r\n }\r\n\r\n scrollToBottom() {\r\n try {\r\n this.messagesContainer.nativeElement.scrollTop += 100000;\r\n }\r\n catch (e) { }\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-chat-message',\r\n templateUrl: './chat-message.component.html',\r\n styleUrls: ['./chat-message.component.scss']\r\n})\r\nexport class ChatMessageComponent implements OnInit {\r\n @Input() message: string;\r\n @Input() alignRight = false;\r\n @Input() username: string;\r\n @Input() color: string;\r\n @Input() timestamp: string;\r\n @Input() image: string;\r\n @Input() fallbackImage: string;\r\n @Output() focusOn = new EventEmitter<any>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.focusOn.emit(true);\r\n }\r\n\r\n\r\n}\r\n","import { IDisposition, IDispositionResult } from './../../models/disposition.interface';\r\nimport { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'amc-disposition',\r\n templateUrl: './disposition.component.html',\r\n styleUrls: ['./disposition.component.css']\r\n})\r\nexport class DispositionComponent implements OnInit {\r\n @Input() disposition: IDisposition;\r\n\r\n @Output() dispositionEmitter = new EventEmitter<IDispositionResult>();\r\n\r\n selectedDispositionValue: string = '';\r\n dispositionName: string = '';\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n for (const metadata of this.disposition.dispositionMetadata) {\r\n if (metadata.key === 'callId') {\r\n this.dispositionName = `disposition_${metadata.value}`;\r\n\r\n break;\r\n }\r\n }\r\n\r\n if (this.disposition.checkedDisposition) {\r\n this.selectedDispositionValue = this.disposition.checkedDisposition;\r\n }\r\n }\r\n\r\n submitDisposition() {\r\n const selectedDisposition: IDispositionResult = {\r\n dispositionId: this.selectedDispositionValue,\r\n dispositionName: this.disposition.disposition.get(this.selectedDispositionValue),\r\n dispositionMetadata: this.disposition.dispositionMetadata\r\n };\r\n\r\n this.dispositionEmitter.emit(selectedDisposition);\r\n }\r\n\r\n selectAndSubmitDisposition(event: KeyboardEvent, dispositionKey: string) {\r\n if (event.code === 'Enter') {\r\n this.selectedDispositionValue = dispositionKey;\r\n this.submitDisposition();\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IActivity, IActivityDetails } from '../../models/uilibrary.model';\r\n\r\n@Component({\r\n selector: 'app-activity',\r\n templateUrl: './activity.component.html',\r\n styleUrls: ['./activity.component.css']\r\n})\r\nexport class ActivityComponent implements OnInit {\r\n\r\nisActivityMaximized: boolean;\r\n@Input() activity: IActivity;\r\n@Output() ActivitySave: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n@Output() OnNameSelectChange: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n@Output() OnRelatedToChange: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n@Output() OnSubjectChange: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n@Output() OnCallNotesChange: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n\r\n constructor() {\r\n this.isActivityMaximized = true;\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public onNameSelectChange(event) {\r\n this.activity.WhoObject = this.getWho(event.currentTarget.value);\r\n this.OnNameSelectChange.emit(this.activity);\r\n }\r\n\r\n public parseWhoObject(whoObject: IActivityDetails): string {\r\n return whoObject.objectType + ': ' + whoObject.objectName;\r\n }\r\n\r\n public parseWhatObject(whatObject: IActivityDetails): string {\r\n return whatObject.objectType + ': ' + whatObject.objectName;\r\n }\r\n\r\n public onRelatedToChange(event) {\r\n this.activity.WhatObject = this.getWhat(event.currentTarget.value);\r\n this.OnRelatedToChange.emit(this.activity);\r\n }\r\n\r\n public onSubjectChange(event) {\r\n this.activity.Subject = event.srcElement.value;\r\n this.OnSubjectChange.emit(this.activity);\r\n }\r\n public onCallNotesChange(event) {\r\n this.activity.Subject = event.srcElement.value.trim();\r\n this.OnCallNotesChange.emit(this.activity);\r\n }\r\n\r\n public getWho(id): IActivityDetails {\r\n for (let i = 0; i < this.activity.whoList.length; i++) {\r\n if (this.activity.whoList[i].objectId === id) {\r\n return this.activity.whoList[i];\r\n }\r\n }\r\n }\r\n public getWhat(id): IActivityDetails {\r\n for (let i = 0; i < this.activity.whatList.length; i++) {\r\n if (this.activity.whatList[i].objectId === id) {\r\n return this.activity.whatList[i];\r\n }\r\n }\r\n }\r\n\r\n public loadQuickComment(value) {\r\n this.activity.Description = this.activity.Description + this.activity.quickCommentList[value];\r\n }\r\n\r\n public activitySave(clearActivityFields) {\r\n this.ActivitySave.emit(this.activity);\r\n }\r\n}\r\n","import { ILoginData } from './../../models/login.interface';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'amc-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.css']\r\n})\r\nexport class LoginComponent implements OnInit {\r\n @Input() loginData: ILoginData;\r\n @Output() loginDetailsProvided = new EventEmitter<ILoginData>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if (!this.loginData.header) {\r\n this.loginData.header = 'Login';\r\n }\r\n\r\n for (let field of this.loginData.fields) {\r\n if (!field.isInvalid) {\r\n field.isInvalid = false;\r\n }\r\n }\r\n }\r\n\r\n onLogin(loginForm: NgForm) {\r\n for (const field of this.loginData.fields) {\r\n field.value = loginForm.value[field.name];\r\n }\r\n\r\n this.loginDetailsProvided.emit(this.loginData);\r\n }\r\n\r\n focusOutOfInput(loginForm: NgForm, field) {\r\n if (!loginForm.controls[field.name].valid) {\r\n field.isInvalid = true;\r\n }\r\n\r\n // console.log(loginForm);\r\n // console.log(field);\r\n }\r\n}\r\n","import { NgModule, Injector } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { InteractionComponent } from './components/interaction/interaction.component';\r\nimport { ScenarioComponent } from './components/scenario/scenario.component';\r\nimport { OperationComponent } from './components/operation/operation.component';\r\nimport { PropertyComponent } from './components/property/property.component';\r\nimport { HoldtimerComponent } from './components/holdtimer/holdtimer.component';\r\nimport { DurationComponent } from './components/duration/duration.component';\r\nimport { ChatBoxComponent } from './components/chat-box/chat-box.component';\r\nimport { ChatMessageComponent } from './components/chat-message/chat-message.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { createCustomElement } from '@angular/elements';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { ElementZoneStrategyFactory } from 'elements-zone-strategy';\r\nimport { DispositionComponent } from './components/disposition/disposition.component';\r\nimport { ActivityComponent } from './components/activity/activity.component';\r\nimport { LoginComponent } from './components/login/login.component';\r\n\r\n@NgModule({\r\n imports: [BrowserModule, CommonModule, FormsModule],\r\n declarations: [\r\n InteractionComponent,\r\n ScenarioComponent,\r\n OperationComponent,\r\n PropertyComponent,\r\n HoldtimerComponent,\r\n DurationComponent,\r\n ChatBoxComponent,\r\n ChatMessageComponent,\r\n DispositionComponent,\r\n ActivityComponent,\r\n LoginComponent\r\n ],\r\n entryComponents: [ScenarioComponent, DispositionComponent, LoginComponent],\r\n bootstrap: [],\r\n exports: [ScenarioComponent, DispositionComponent, LoginComponent]\r\n})\r\nexport class UILibraryModule {\r\n constructor(private injector: Injector) { }\r\n\r\n ngDoBootstrap(app) {\r\n if (!customElements.get('amc-webcomponents-scenario')) {\r\n const strategyFactory = new ElementZoneStrategyFactory(\r\n ScenarioComponent,\r\n this.injector\r\n );\r\n customElements.define(\r\n 'amc-webcomponents-scenario',\r\n createCustomElement(ScenarioComponent, {\r\n injector: this.injector,\r\n strategyFactory: strategyFactory\r\n })\r\n );\r\n }\r\n if (!customElements.get('amc-webcomponents-disposition')) {\r\n const strategyFactory = new ElementZoneStrategyFactory(\r\n DispositionComponent,\r\n this.injector\r\n );\r\n customElements.define(\r\n 'amc-webcomponents-disposition',\r\n createCustomElement(DispositionComponent, {\r\n injector: this.injector,\r\n strategyFactory: strategyFactory\r\n })\r\n );\r\n }\r\n if (!customElements.get('amc-webcomponents-login')) {\r\n const strategyFactory = new ElementZoneStrategyFactory(\r\n LoginComponent,\r\n this.injector\r\n );\r\n customElements.define(\r\n 'amc-webcomponents-login',\r\n createCustomElement(LoginComponent, {\r\n injector: this.injector,\r\n strategyFactory: strategyFactory\r\n })\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport * from './models/uilibrary.model';\r\n"]}
@@ -85,6 +85,7 @@ let ChatBoxComponent = class ChatBoxComponent {
85
85
  return message.type && message.type === IChatMessageType.AGENT;
86
86
  }
87
87
  sendNewMessage(event) {
88
+ this.scrollToBottom();
88
89
  this.newMessageSent = true;
89
90
  event.preventDefault();
90
91
  if (this.newMessageText) {
@@ -113,7 +114,7 @@ let ChatBoxComponent = class ChatBoxComponent {
113
114
  }
114
115
  scrollToBottom() {
115
116
  try {
116
- this.messagesContainer.nativeElement.scrollTop += 10;
117
+ this.messagesContainer.nativeElement.scrollTop += 100000;
117
118
  }
118
119
  catch (e) { }
119
120
  }
@@ -153,4 +154,4 @@ ChatBoxComponent = __decorate([
153
154
  })
154
155
  ], ChatBoxComponent);
155
156
  export { ChatBoxComponent };
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFtYy10ZWNobm9sb2d5L3VpLWxpYnJhcnkvIiwic291cmNlcyI6WyJwcm9qZWN0cy9VSUxpYnJhcnkvc3JjL2FwcC9jb21wb25lbnRzL2NoYXQtYm94L2NoYXQtYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xKLE9BQU8sRUFBZ0IsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVEzRSxJQUFhLGdCQUFnQixHQUE3QixNQUFhLGdCQUFnQjtJQWlDM0IsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQS9CN0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUlsQixjQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUMvQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUNiLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU1QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNsRCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUtwQixvQkFBZSxHQUFtQyxFQUFFLENBQUM7UUFDckQsV0FBTSxHQUFHO1lBQ1AsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1NBQ1YsQ0FBQztRQUNGLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxTQUFTLENBQUM7SUFHdkIsQ0FB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QUErQjtBQUNyQztJQUExQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO21EQUF1QjtBQWhCdEQsZ0JBQWdCO0lBTDVCLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxjQUFjO1FBQ3hCLDJ5Q0FBd0M7O0tBRXpDLENBQUM7R0FDVyxnQkFBZ0IsQ0F3STVCO1NBeElZLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRISVNfRVhQUiB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyL3NyYy9vdXRwdXQvb3V0cHV0X2FzdCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0NoZWNrZWQsIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElDaGF0TWVzc2FnZSwgSUNoYXRNZXNzYWdlVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9jaGF0Lm1lc3NhZ2UnO1xyXG5pbXBvcnQgeyBJQ2hhdFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoYXQuc2V0dGluZ3MnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY2hhdC1ib3gnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGF0LWJveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2hhdC1ib3guY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENoYXRCb3hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkLCBBZnRlclZpZXdJbml0LCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHNldHRpbmdzOiBJQ2hhdFNldHRpbmdzO1xyXG4gIEBJbnB1dCgpIGlzVHlwaW5nID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIG1lc3NhZ2VzOiBJQ2hhdE1lc3NhZ2VbXTtcclxuICBASW5wdXQoKSBuZXdNc2dzOiBJQ2hhdE1lc3NhZ2VbXTtcclxuICBwcml2YXRlIGxhc3RDb3VudCA9IC0xO1xyXG4gIHByaXZhdGUgbGFzdFNjcm9sbFRvcCA9IDA7XHJcbiAgcHJpdmF0ZSBuZXdNZXNzYWdlU2VudCA9IGZhbHNlO1xyXG4gIF9pc0FnZW50VHlwaW5nID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIGlzQWdlbnRUeXBpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBuZXdNZXNzYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgbmV3TWVzc2FnZVRleHQgPSAnJztcclxuXHJcbiAgQFZpZXdDaGlsZCgnTWVzc2FnZXNDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBtZXNzYWdlc0NvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdhdXRvZm9jdXMnLCB7IHN0YXRpYzogZmFsc2UgfSkgYXV0b2ZvY3VzOiBFbGVtZW50UmVmO1xyXG5cclxuICB1c2VybmFtZVRvQ29sb3I6IHsgW3VzZXJuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gIGNvbG9ycyA9IFtcclxuICAgICcjYzJjNGM0JyxcclxuICAgICcjZmZhYjkxJyxcclxuICAgICcjZjQ4ZmIxJyxcclxuICAgICcjMjliNmY2JyxcclxuICAgICcjZTFiZWU3JyxcclxuICAgICcjOWNjYzY1JyxcclxuICAgICcjZmZjMTA3JyxcclxuICAgICcjMjZjNmRhJyxcclxuICAgICcjY2RkYzM5JyxcclxuICBdO1xyXG4gIGNvbG9yc0luZGV4ID0gMDtcclxuICBhZ2VudENvbG9yID0gJyMyZGIwZTAnO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOlJlbmRlcmVyMikge1xyXG4gIH1cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KCcjYXV0b2ZvY3VzJykuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudCgnI2F1dG9mb2N1cycpLmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVkTWVzc2FnZSgpOiBJQ2hhdE1lc3NhZ2VbXSAge1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5uZXdNc2dzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm5ld01zZ3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIC8vdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm5ld01zZ3M7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZXM7XHJcbiAgICAgIH1cclxuICAgIH1jYXRjaCAoZSkgeyB9XHJcbiAgICBmaW5hbGx5IHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubmV3TWVzc2FnZVNlbnQpe1xyXG4gICAgICAgICAgLy8gLy90aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICAgICAgICAvLyB2YXIgbWVzc2FnZURpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtc2dTY3JvbGwnKTtcclxuICAgICAgICAgIC8vIGlmIChtZXNzYWdlRGl2ICE9PSBudWxsKXtcclxuICAgICAgICAgIC8vICAgLy93aW5kb3cuc2Nyb2xsVG8oMCwgbWVzc2FnZURpdi5jbGllbnRIZWlnaHQpO1xyXG4gICAgICAgICAgLy8gICB3aW5kb3cuc2Nyb2xsVG8oMCwgbWVzc2FnZURpdi5zY3JvbGxIZWlnaHQpO1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgLy8gLy8gaWYgKHRoaXMubWVzc2FnZXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgKyB0aGlzLm1lc3NhZ2VzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0ID49IHRoaXMubWVzc2FnZXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQpe1xyXG4gICAgICAgICAgLy8gLy8gICB0aGlzLm1lc3NhZ2VzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy5tZXNzYWdlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcclxuICAgICAgICAgIC8vIC8vIH1cclxuXHJcbiAgICAgICAgICAvLyB0aGlzLm5ld01lc3NhZ2VTZW50ID0gZmFsc2U7XHJcbiAgICAgICAgICAvL3RoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgICAgICB9XHJcblxyXG4gIH1cclxufVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICBpZiAodGhpcy5sYXN0Q291bnQgIT09IHRoaXMubWVzc2FnZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMubGFzdENvdW50ID0gdGhpcy5tZXNzYWdlcy5sZW5ndGg7XHJcbiAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb2xvcihtZXNzYWdlOiBJQ2hhdE1lc3NhZ2UpIHtcclxuICAgIGlmIChtZXNzYWdlLnR5cGUgJiYgbWVzc2FnZS50eXBlID09PSBJQ2hhdE1lc3NhZ2VUeXBlLkFHRU5UKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFnZW50Q29sb3I7XHJcbiAgICB9IGVsc2UgaWYgKG1lc3NhZ2UudXNlcm5hbWUpIHtcclxuICAgICAgaWYgKCF0aGlzLnVzZXJuYW1lVG9Db2xvclttZXNzYWdlLnVzZXJuYW1lXSkge1xyXG4gICAgICAgIHRoaXMudXNlcm5hbWVUb0NvbG9yW21lc3NhZ2UudXNlcm5hbWVdID0gdGhpcy5jb2xvcnNbdGhpcy5jb2xvcnNJbmRleF07XHJcbiAgICAgICAgdGhpcy5jb2xvcnNJbmRleCA9ICh0aGlzLmNvbG9yc0luZGV4ICsgMSkgJSB0aGlzLmNvbG9ycy5sZW5ndGg7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMudXNlcm5hbWVUb0NvbG9yW21lc3NhZ2UudXNlcm5hbWVdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29sb3JzWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvdWxkQWxpZ25SaWdodChtZXNzYWdlOiBJQ2hhdE1lc3NhZ2UpIHtcclxuICAgIHJldHVybiBtZXNzYWdlLnR5cGUgJiYgbWVzc2FnZS50eXBlID09PSBJQ2hhdE1lc3NhZ2VUeXBlLkFHRU5UO1xyXG4gIH1cclxuXHJcbiAgc2VuZE5ld01lc3NhZ2UoZXZlbnQpIHtcclxuICAgIHRoaXMubmV3TWVzc2FnZVNlbnQgPSB0cnVlO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGlmICh0aGlzLm5ld01lc3NhZ2VUZXh0KSB7XHJcbiAgICAgIHRoaXMubmV3TWVzc2FnZS5lbWl0KHRoaXMubmV3TWVzc2FnZVRleHQpO1xyXG4gICAgICB0aGlzLm5ld01lc3NhZ2VUZXh0ID0gJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KCcjYXV0b2ZvY3VzJykuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIHNldE9uRm9jdXMoZXZlbnQpICB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KCcjYXV0b2ZvY3VzJykuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIG9uTmV3TWVzc2FnZUZvY3VzKGV2ZW50OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICBjb25zdCBpc1R5cGluZyA9IGV2ZW50ICYmIHRoaXMubmV3TWVzc2FnZVRleHQubGVuZ3RoID4gMDtcclxuICAgIGlmIChpc1R5cGluZyAhPT0gdGhpcy5faXNBZ2VudFR5cGluZykge1xyXG4gICAgICB0aGlzLl9pc0FnZW50VHlwaW5nID0gaXNUeXBpbmc7XHJcbiAgICAgIHRoaXMuaXNBZ2VudFR5cGluZy5lbWl0KGlzVHlwaW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS2V5dXAoKSB7XHJcbiAgICBjb25zdCBpc1R5cGluZyA9IHRoaXMubmV3TWVzc2FnZVRleHQubGVuZ3RoID4gMDtcclxuICAgIGlmIChpc1R5cGluZyAhPT0gdGhpcy5faXNBZ2VudFR5cGluZykge1xyXG4gICAgICB0aGlzLl9pc0FnZW50VHlwaW5nID0gaXNUeXBpbmc7XHJcbiAgICAgIHRoaXMuaXNBZ2VudFR5cGluZy5lbWl0KGlzVHlwaW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNjcm9sbFRvQm90dG9tKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5tZXNzYWdlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCArPSAxMDtcclxuICAgIH1cclxuICAgIGNhdGNoIChlKSB7IH1cclxuICB9XHJcbn1cclxuIl19
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFtYy10ZWNobm9sb2d5L3VpLWxpYnJhcnkvIiwic291cmNlcyI6WyJwcm9qZWN0cy9VSUxpYnJhcnkvc3JjL2FwcC9jb21wb25lbnRzL2NoYXQtYm94L2NoYXQtYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xKLE9BQU8sRUFBZ0IsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVEzRSxJQUFhLGdCQUFnQixHQUE3QixNQUFhLGdCQUFnQjtJQWlDM0IsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQS9CN0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUlsQixjQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUMvQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUNiLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU1QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNsRCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUtwQixvQkFBZSxHQUFtQyxFQUFFLENBQUM7UUFDckQsV0FBTSxHQUFHO1lBQ1AsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1NBQ1YsQ0FBQztRQUNGLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxTQUFTLENBQUM7SUFHdkIsQ0FB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QUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzsyREFBK0I7QUFDckM7SUFBMUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQzttREFBdUI7QUFoQnRELGdCQUFnQjtJQUw1QixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsY0FBYztRQUN4QiwyeUNBQXdDOztLQUV6QyxDQUFDO0dBQ1csZ0JBQWdCLENBeUk1QjtTQXpJWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUSElTX0VYUFIgfSBmcm9tICdAYW5ndWxhci9jb21waWxlci9zcmMvb3V0cHV0L291dHB1dF9hc3QnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBBZnRlclZpZXdDaGVja2VkLCBBZnRlclZpZXdJbml0LCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJQ2hhdE1lc3NhZ2UsIElDaGF0TWVzc2FnZVR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2hhdC5tZXNzYWdlJztcclxuaW1wb3J0IHsgSUNoYXRTZXR0aW5ncyB9IGZyb20gJy4uLy4uL21vZGVscy9jaGF0LnNldHRpbmdzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNoYXQtYm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hhdC1ib3guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoYXQtYm94LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGF0Qm94Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCwgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IHtcclxuICBASW5wdXQoKSBzZXR0aW5nczogSUNoYXRTZXR0aW5ncztcclxuICBASW5wdXQoKSBpc1R5cGluZyA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBtZXNzYWdlczogSUNoYXRNZXNzYWdlW107XHJcbiAgQElucHV0KCkgbmV3TXNnczogSUNoYXRNZXNzYWdlW107XHJcbiAgcHJpdmF0ZSBsYXN0Q291bnQgPSAtMTtcclxuICBwcml2YXRlIGxhc3RTY3JvbGxUb3AgPSAwO1xyXG4gIHByaXZhdGUgbmV3TWVzc2FnZVNlbnQgPSBmYWxzZTtcclxuICBfaXNBZ2VudFR5cGluZyA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBpc0FnZW50VHlwaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBAT3V0cHV0KCkgbmV3TWVzc2FnZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIG5ld01lc3NhZ2VUZXh0ID0gJyc7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ01lc3NhZ2VzQ29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSkgbWVzc2FnZXNDb250YWluZXI6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnYXV0b2ZvY3VzJywgeyBzdGF0aWM6IGZhbHNlIH0pIGF1dG9mb2N1czogRWxlbWVudFJlZjtcclxuXHJcbiAgdXNlcm5hbWVUb0NvbG9yOiB7IFt1c2VybmFtZTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICBjb2xvcnMgPSBbXHJcbiAgICAnI2MyYzRjNCcsXHJcbiAgICAnI2ZmYWI5MScsXHJcbiAgICAnI2Y0OGZiMScsXHJcbiAgICAnIzI5YjZmNicsXHJcbiAgICAnI2UxYmVlNycsXHJcbiAgICAnIzljY2M2NScsXHJcbiAgICAnI2ZmYzEwNycsXHJcbiAgICAnIzI2YzZkYScsXHJcbiAgICAnI2NkZGMzOScsXHJcbiAgXTtcclxuICBjb2xvcnNJbmRleCA9IDA7XHJcbiAgYWdlbnRDb2xvciA9ICcjMmRiMGUwJztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjpSZW5kZXJlcjIpIHtcclxuICB9XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudCgnI2F1dG9mb2N1cycpLmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQoJyNhdXRvZm9jdXMnKS5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlZE1lc3NhZ2UoKTogSUNoYXRNZXNzYWdlW10gIHtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodHlwZW9mIHRoaXMubmV3TXNncyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5uZXdNc2dzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvL3RoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5uZXdNc2dzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VzO1xyXG4gICAgICB9XHJcbiAgICB9Y2F0Y2ggKGUpIHsgfVxyXG4gICAgZmluYWxseSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm5ld01lc3NhZ2VTZW50KXtcclxuICAgICAgICAgIC8vIC8vdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG4gICAgICAgICAgLy8gdmFyIG1lc3NhZ2VEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXNnU2Nyb2xsJyk7XHJcbiAgICAgICAgICAvLyBpZiAobWVzc2FnZURpdiAhPT0gbnVsbCl7XHJcbiAgICAgICAgICAvLyAgIC8vd2luZG93LnNjcm9sbFRvKDAsIG1lc3NhZ2VEaXYuY2xpZW50SGVpZ2h0KTtcclxuICAgICAgICAgIC8vICAgd2luZG93LnNjcm9sbFRvKDAsIG1lc3NhZ2VEaXYuc2Nyb2xsSGVpZ2h0KTtcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIC8vIC8vIGlmICh0aGlzLm1lc3NhZ2VzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wICsgdGhpcy5tZXNzYWdlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCA+PSB0aGlzLm1lc3NhZ2VzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0KXtcclxuICAgICAgICAgIC8vIC8vICAgdGhpcy5tZXNzYWdlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHRoaXMubWVzc2FnZXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgICAgICAvLyAvLyB9XHJcblxyXG4gICAgICAgICAgLy8gdGhpcy5uZXdNZXNzYWdlU2VudCA9IGZhbHNlO1xyXG4gICAgICAgICAgLy90aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICB9XHJcbn1cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgaWYgKHRoaXMubGFzdENvdW50ICE9PSB0aGlzLm1lc3NhZ2VzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmxhc3RDb3VudCA9IHRoaXMubWVzc2FnZXMubGVuZ3RoO1xyXG4gICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29sb3IobWVzc2FnZTogSUNoYXRNZXNzYWdlKSB7XHJcbiAgICBpZiAobWVzc2FnZS50eXBlICYmIG1lc3NhZ2UudHlwZSA9PT0gSUNoYXRNZXNzYWdlVHlwZS5BR0VOVCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5hZ2VudENvbG9yO1xyXG4gICAgfSBlbHNlIGlmIChtZXNzYWdlLnVzZXJuYW1lKSB7XHJcbiAgICAgIGlmICghdGhpcy51c2VybmFtZVRvQ29sb3JbbWVzc2FnZS51c2VybmFtZV0pIHtcclxuICAgICAgICB0aGlzLnVzZXJuYW1lVG9Db2xvclttZXNzYWdlLnVzZXJuYW1lXSA9IHRoaXMuY29sb3JzW3RoaXMuY29sb3JzSW5kZXhdO1xyXG4gICAgICAgIHRoaXMuY29sb3JzSW5kZXggPSAodGhpcy5jb2xvcnNJbmRleCArIDEpICUgdGhpcy5jb2xvcnMubGVuZ3RoO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLnVzZXJuYW1lVG9Db2xvclttZXNzYWdlLnVzZXJuYW1lXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbG9yc1swXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3VsZEFsaWduUmlnaHQobWVzc2FnZTogSUNoYXRNZXNzYWdlKSB7XHJcbiAgICByZXR1cm4gbWVzc2FnZS50eXBlICYmIG1lc3NhZ2UudHlwZSA9PT0gSUNoYXRNZXNzYWdlVHlwZS5BR0VOVDtcclxuICB9XHJcblxyXG4gIHNlbmROZXdNZXNzYWdlKGV2ZW50KSB7XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICB0aGlzLm5ld01lc3NhZ2VTZW50ID0gdHJ1ZTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAodGhpcy5uZXdNZXNzYWdlVGV4dCkge1xyXG4gICAgICB0aGlzLm5ld01lc3NhZ2UuZW1pdCh0aGlzLm5ld01lc3NhZ2VUZXh0KTtcclxuICAgICAgdGhpcy5uZXdNZXNzYWdlVGV4dCA9ICcnO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudCgnI2F1dG9mb2N1cycpLmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRPbkZvY3VzKGV2ZW50KSAge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudCgnI2F1dG9mb2N1cycpLmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBvbk5ld01lc3NhZ2VGb2N1cyhldmVudDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG4gICAgY29uc3QgaXNUeXBpbmcgPSBldmVudCAmJiB0aGlzLm5ld01lc3NhZ2VUZXh0Lmxlbmd0aCA+IDA7XHJcbiAgICBpZiAoaXNUeXBpbmcgIT09IHRoaXMuX2lzQWdlbnRUeXBpbmcpIHtcclxuICAgICAgdGhpcy5faXNBZ2VudFR5cGluZyA9IGlzVHlwaW5nO1xyXG4gICAgICB0aGlzLmlzQWdlbnRUeXBpbmcuZW1pdChpc1R5cGluZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbktleXVwKCkge1xyXG4gICAgY29uc3QgaXNUeXBpbmcgPSB0aGlzLm5ld01lc3NhZ2VUZXh0Lmxlbmd0aCA+IDA7XHJcbiAgICBpZiAoaXNUeXBpbmcgIT09IHRoaXMuX2lzQWdlbnRUeXBpbmcpIHtcclxuICAgICAgdGhpcy5faXNBZ2VudFR5cGluZyA9IGlzVHlwaW5nO1xyXG4gICAgICB0aGlzLmlzQWdlbnRUeXBpbmcuZW1pdChpc1R5cGluZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzY3JvbGxUb0JvdHRvbSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgKz0gMTAwMDAwO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHsgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -85,6 +85,7 @@ var ChatBoxComponent = /** @class */ (function () {
85
85
  return message.type && message.type === IChatMessageType.AGENT;
86
86
  };
87
87
  ChatBoxComponent.prototype.sendNewMessage = function (event) {
88
+ this.scrollToBottom();
88
89
  this.newMessageSent = true;
89
90
  event.preventDefault();
90
91
  if (this.newMessageText) {
@@ -113,7 +114,7 @@ var ChatBoxComponent = /** @class */ (function () {
113
114
  };
114
115
  ChatBoxComponent.prototype.scrollToBottom = function () {
115
116
  try {
116
- this.messagesContainer.nativeElement.scrollTop += 10;
117
+ this.messagesContainer.nativeElement.scrollTop += 100000;
117
118
  }
118
119
  catch (e) { }
119
120
  };
@@ -154,4 +155,4 @@ var ChatBoxComponent = /** @class */ (function () {
154
155
  return ChatBoxComponent;
155
156
  }());
156
157
  export { ChatBoxComponent };
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFtYy10ZWNobm9sb2d5L3VpLWxpYnJhcnkvIiwic291cmNlcyI6WyJwcm9qZWN0cy9VSUxpYnJhcnkvc3JjL2FwcC9jb21wb25lbnRzL2NoYXQtYm94L2NoYXQtYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xKLE9BQU8sRUFBZ0IsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVEzRTtJQWlDRSwwQkFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQS9CN0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUlsQixjQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUMvQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUNiLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU1QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNsRCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUtwQixvQkFBZSxHQUFtQyxFQUFFLENBQUM7UUFDckQsV0FBTSxHQUFHO1lBQ1AsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1NBQ1YsQ0FBQztRQUNGLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxTQUFTLENBQUM7SUFHdkIsQ0FBQztJQUNDLG1DQUFRLEdBQVI7UUFDRSxJQUFJLENB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LE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzsrREFBK0I7SUFDckM7UUFBMUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQzt1REFBdUI7SUFoQnRELGdCQUFnQjtRQUw1QixTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsY0FBYztZQUN4QiwyeUNBQXdDOztTQUV6QyxDQUFDO09BQ1csZ0JBQWdCLENBd0k1QjtJQUFELHVCQUFDO0NBQUEsQUF4SUQsSUF3SUM7U0F4SVksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVEhJU19FWFBSIH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXIvc3JjL291dHB1dC9vdXRwdXRfYXN0JztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3Q2hlY2tlZCwgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSUNoYXRNZXNzYWdlLCBJQ2hhdE1lc3NhZ2VUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoYXQubWVzc2FnZSc7XHJcbmltcG9ydCB7IElDaGF0U2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2hhdC5zZXR0aW5ncyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jaGF0LWJveCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXQtYm94LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jaGF0LWJveC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hhdEJveENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIEFmdGVyVmlld0luaXQsIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgc2V0dGluZ3M6IElDaGF0U2V0dGluZ3M7XHJcbiAgQElucHV0KCkgaXNUeXBpbmcgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgbWVzc2FnZXM6IElDaGF0TWVzc2FnZVtdO1xyXG4gIEBJbnB1dCgpIG5ld01zZ3M6IElDaGF0TWVzc2FnZVtdO1xyXG4gIHByaXZhdGUgbGFzdENvdW50ID0gLTE7XHJcbiAgcHJpdmF0ZSBsYXN0U2Nyb2xsVG9wID0gMDtcclxuICBwcml2YXRlIG5ld01lc3NhZ2VTZW50ID0gZmFsc2U7XHJcbiAgX2lzQWdlbnRUeXBpbmcgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgaXNBZ2VudFR5cGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgQE91dHB1dCgpIG5ld01lc3NhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBuZXdNZXNzYWdlVGV4dCA9ICcnO1xyXG5cclxuICBAVmlld0NoaWxkKCdNZXNzYWdlc0NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pIG1lc3NhZ2VzQ29udGFpbmVyOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2F1dG9mb2N1cycsIHsgc3RhdGljOiBmYWxzZSB9KSBhdXRvZm9jdXM6IEVsZW1lbnRSZWY7XHJcblxyXG4gIHVzZXJuYW1lVG9Db2xvcjogeyBbdXNlcm5hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgY29sb3JzID0gW1xyXG4gICAgJyNjMmM0YzQnLFxyXG4gICAgJyNmZmFiOTEnLFxyXG4gICAgJyNmNDhmYjEnLFxyXG4gICAgJyMyOWI2ZjYnLFxyXG4gICAgJyNlMWJlZTcnLFxyXG4gICAgJyM5Y2NjNjUnLFxyXG4gICAgJyNmZmMxMDcnLFxyXG4gICAgJyMyNmM2ZGEnLFxyXG4gICAgJyNjZGRjMzknLFxyXG4gIF07XHJcbiAgY29sb3JzSW5kZXggPSAwO1xyXG4gIGFnZW50Q29sb3IgPSAnIzJkYjBlMCc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6UmVuZGVyZXIyKSB7XHJcbiAgfVxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQoJyNhdXRvZm9jdXMnKS5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KCcjYXV0b2ZvY3VzJykuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZWRNZXNzYWdlKCk6IElDaGF0TWVzc2FnZVtdICB7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLm5ld01zZ3MgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubmV3TXNncy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgLy90aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubmV3TXNncztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlcztcclxuICAgICAgfVxyXG4gICAgfWNhdGNoIChlKSB7IH1cclxuICAgIGZpbmFsbHkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5uZXdNZXNzYWdlU2VudCl7XHJcbiAgICAgICAgICAvLyAvL3RoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgICAgICAgIC8vIHZhciBtZXNzYWdlRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21zZ1Njcm9sbCcpO1xyXG4gICAgICAgICAgLy8gaWYgKG1lc3NhZ2VEaXYgIT09IG51bGwpe1xyXG4gICAgICAgICAgLy8gICAvL3dpbmRvdy5zY3JvbGxUbygwLCBtZXNzYWdlRGl2LmNsaWVudEhlaWdodCk7XHJcbiAgICAgICAgICAvLyAgIHdpbmRvdy5zY3JvbGxUbygwLCBtZXNzYWdlRGl2LnNjcm9sbEhlaWdodCk7XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAvLyAvLyBpZiAodGhpcy5tZXNzYWdlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCArIHRoaXMubWVzc2FnZXNDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgPj0gdGhpcy5tZXNzYWdlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCl7XHJcbiAgICAgICAgICAvLyAvLyAgIHRoaXMubWVzc2FnZXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLm1lc3NhZ2VzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgICAgICAgLy8gLy8gfVxyXG5cclxuICAgICAgICAgIC8vIHRoaXMubmV3TWVzc2FnZVNlbnQgPSBmYWxzZTtcclxuICAgICAgICAgIC8vdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgfVxyXG59XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgIGlmICh0aGlzLmxhc3RDb3VudCAhPT0gdGhpcy5tZXNzYWdlcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5sYXN0Q291bnQgPSB0aGlzLm1lc3NhZ2VzLmxlbmd0aDtcclxuICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbG9yKG1lc3NhZ2U6IElDaGF0TWVzc2FnZSkge1xyXG4gICAgaWYgKG1lc3NhZ2UudHlwZSAmJiBtZXNzYWdlLnR5cGUgPT09IElDaGF0TWVzc2FnZVR5cGUuQUdFTlQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYWdlbnRDb2xvcjtcclxuICAgIH0gZWxzZSBpZiAobWVzc2FnZS51c2VybmFtZSkge1xyXG4gICAgICBpZiAoIXRoaXMudXNlcm5hbWVUb0NvbG9yW21lc3NhZ2UudXNlcm5hbWVdKSB7XHJcbiAgICAgICAgdGhpcy51c2VybmFtZVRvQ29sb3JbbWVzc2FnZS51c2VybmFtZV0gPSB0aGlzLmNvbG9yc1t0aGlzLmNvbG9yc0luZGV4XTtcclxuICAgICAgICB0aGlzLmNvbG9yc0luZGV4ID0gKHRoaXMuY29sb3JzSW5kZXggKyAxKSAlIHRoaXMuY29sb3JzLmxlbmd0aDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy51c2VybmFtZVRvQ29sb3JbbWVzc2FnZS51c2VybmFtZV07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb2xvcnNbMF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG91bGRBbGlnblJpZ2h0KG1lc3NhZ2U6IElDaGF0TWVzc2FnZSkge1xyXG4gICAgcmV0dXJuIG1lc3NhZ2UudHlwZSAmJiBtZXNzYWdlLnR5cGUgPT09IElDaGF0TWVzc2FnZVR5cGUuQUdFTlQ7XHJcbiAgfVxyXG5cclxuICBzZW5kTmV3TWVzc2FnZShldmVudCkge1xyXG4gICAgdGhpcy5uZXdNZXNzYWdlU2VudCA9IHRydWU7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKHRoaXMubmV3TWVzc2FnZVRleHQpIHtcclxuICAgICAgdGhpcy5uZXdNZXNzYWdlLmVtaXQodGhpcy5uZXdNZXNzYWdlVGV4dCk7XHJcbiAgICAgIHRoaXMubmV3TWVzc2FnZVRleHQgPSAnJztcclxuICAgIH1cclxuICAgIHRoaXMucmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQoJyNhdXRvZm9jdXMnKS5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgc2V0T25Gb2N1cyhldmVudCkgIHtcclxuICAgIHRoaXMucmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQoJyNhdXRvZm9jdXMnKS5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgb25OZXdNZXNzYWdlRm9jdXMoZXZlbnQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgIGNvbnN0IGlzVHlwaW5nID0gZXZlbnQgJiYgdGhpcy5uZXdNZXNzYWdlVGV4dC5sZW5ndGggPiAwO1xyXG4gICAgaWYgKGlzVHlwaW5nICE9PSB0aGlzLl9pc0FnZW50VHlwaW5nKSB7XHJcbiAgICAgIHRoaXMuX2lzQWdlbnRUeXBpbmcgPSBpc1R5cGluZztcclxuICAgICAgdGhpcy5pc0FnZW50VHlwaW5nLmVtaXQoaXNUeXBpbmcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25LZXl1cCgpIHtcclxuICAgIGNvbnN0IGlzVHlwaW5nID0gdGhpcy5uZXdNZXNzYWdlVGV4dC5sZW5ndGggPiAwO1xyXG4gICAgaWYgKGlzVHlwaW5nICE9PSB0aGlzLl9pc0FnZW50VHlwaW5nKSB7XHJcbiAgICAgIHRoaXMuX2lzQWdlbnRUeXBpbmcgPSBpc1R5cGluZztcclxuICAgICAgdGhpcy5pc0FnZW50VHlwaW5nLmVtaXQoaXNUeXBpbmcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9Cb3R0b20oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wICs9IDEwO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHsgfVxyXG4gIH1cclxufVxyXG4iXX0=
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFtYy10ZWNobm9sb2d5L3VpLWxpYnJhcnkvIiwic291cmNlcyI6WyJwcm9qZWN0cy9VSUxpYnJhcnkvc3JjL2FwcC9jb21wb25lbnRzL2NoYXQtYm94L2NoYXQtYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xKLE9BQU8sRUFBZ0IsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVEzRTtJQWlDRSwwQkFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQS9CN0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUlsQixjQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUMvQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUNiLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU1QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNsRCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUtwQixvQkFBZSxHQUFtQyxFQUFFLENBQUM7UUFDckQsV0FBTSxHQUFHO1lBQ1AsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1NBQ1YsQ0FBQztRQUNGLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxTQUFTLENBQUM7SUFHdkIsQ0FBQztJQUNDLG1DQUFRLEdBQVI7UUFDRSxJQUFJLENB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QUFqRCxTQUFTLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7K0RBQStCO0lBQ3JDO1FBQTFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7dURBQXVCO0lBaEJ0RCxnQkFBZ0I7UUFMNUIsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLGNBQWM7WUFDeEIsMnlDQUF3Qzs7U0FFekMsQ0FBQztPQUNXLGdCQUFnQixDQXlJNUI7SUFBRCx1QkFBQztDQUFBLEFBeklELElBeUlDO1NBeklZLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRISVNfRVhQUiB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyL3NyYy9vdXRwdXQvb3V0cHV0X2FzdCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0NoZWNrZWQsIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElDaGF0TWVzc2FnZSwgSUNoYXRNZXNzYWdlVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9jaGF0Lm1lc3NhZ2UnO1xyXG5pbXBvcnQgeyBJQ2hhdFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoYXQuc2V0dGluZ3MnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY2hhdC1ib3gnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGF0LWJveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2hhdC1ib3guY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENoYXRCb3hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkLCBBZnRlclZpZXdJbml0LCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHNldHRpbmdzOiBJQ2hhdFNldHRpbmdzO1xyXG4gIEBJbnB1dCgpIGlzVHlwaW5nID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIG1lc3NhZ2VzOiBJQ2hhdE1lc3NhZ2VbXTtcclxuICBASW5wdXQoKSBuZXdNc2dzOiBJQ2hhdE1lc3NhZ2VbXTtcclxuICBwcml2YXRlIGxhc3RDb3VudCA9IC0xO1xyXG4gIHByaXZhdGUgbGFzdFNjcm9sbFRvcCA9IDA7XHJcbiAgcHJpdmF0ZSBuZXdNZXNzYWdlU2VudCA9IGZhbHNlO1xyXG4gIF9pc0FnZW50VHlwaW5nID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIGlzQWdlbnRUeXBpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBuZXdNZXNzYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgbmV3TWVzc2FnZVRleHQgPSAnJztcclxuXHJcbiAgQFZpZXdDaGlsZCgnTWVzc2FnZXNDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBtZXNzYWdlc0NvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdhdXRvZm9jdXMnLCB7IHN0YXRpYzogZmFsc2UgfSkgYXV0b2ZvY3VzOiBFbGVtZW50UmVmO1xyXG5cclxuICB1c2VybmFtZVRvQ29sb3I6IHsgW3VzZXJuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gIGNvbG9ycyA9IFtcclxuICAgICcjYzJjNGM0JyxcclxuICAgICcjZmZhYjkxJyxcclxuICAgICcjZjQ4ZmIxJyxcclxuICAgICcjMjliNmY2JyxcclxuICAgICcjZTFiZWU3JyxcclxuICAgICcjOWNjYzY1JyxcclxuICAgICcjZmZjMTA3JyxcclxuICAgICcjMjZjNmRhJyxcclxuICAgICcjY2RkYzM5JyxcclxuICBdO1xyXG4gIGNvbG9yc0luZGV4ID0gMDtcclxuICBhZ2VudENvbG9yID0gJyMyZGIwZTAnO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOlJlbmRlcmVyMikge1xyXG4gIH1cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KCcjYXV0b2ZvY3VzJykuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudCgnI2F1dG9mb2N1cycpLmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVkTWVzc2FnZSgpOiBJQ2hhdE1lc3NhZ2VbXSAge1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5uZXdNc2dzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm5ld01zZ3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIC8vdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm5ld01zZ3M7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZXM7XHJcbiAgICAgIH1cclxuICAgIH1jYXRjaCAoZSkgeyB9XHJcbiAgICBmaW5hbGx5IHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubmV3TWVzc2FnZVNlbnQpe1xyXG4gICAgICAgICAgLy8gLy90aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICAgICAgICAvLyB2YXIgbWVzc2FnZURpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtc2dTY3JvbGwnKTtcclxuICAgICAgICAgIC8vIGlmIChtZXNzYWdlRGl2ICE9PSBudWxsKXtcclxuICAgICAgICAgIC8vICAgLy93aW5kb3cuc2Nyb2xsVG8oMCwgbWVzc2FnZURpdi5jbGllbnRIZWlnaHQpO1xyXG4gICAgICAgICAgLy8gICB3aW5kb3cuc2Nyb2xsVG8oMCwgbWVzc2FnZURpdi5zY3JvbGxIZWlnaHQpO1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgLy8gLy8gaWYgKHRoaXMubWVzc2FnZXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgKyB0aGlzLm1lc3NhZ2VzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0ID49IHRoaXMubWVzc2FnZXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQpe1xyXG4gICAgICAgICAgLy8gLy8gICB0aGlzLm1lc3NhZ2VzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy5tZXNzYWdlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcclxuICAgICAgICAgIC8vIC8vIH1cclxuXHJcbiAgICAgICAgICAvLyB0aGlzLm5ld01lc3NhZ2VTZW50ID0gZmFsc2U7XHJcbiAgICAgICAgICAvL3RoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgICAgICB9XHJcblxyXG4gIH1cclxufVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICBpZiAodGhpcy5sYXN0Q291bnQgIT09IHRoaXMubWVzc2FnZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMubGFzdENvdW50ID0gdGhpcy5tZXNzYWdlcy5sZW5ndGg7XHJcbiAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb2xvcihtZXNzYWdlOiBJQ2hhdE1lc3NhZ2UpIHtcclxuICAgIGlmIChtZXNzYWdlLnR5cGUgJiYgbWVzc2FnZS50eXBlID09PSBJQ2hhdE1lc3NhZ2VUeXBlLkFHRU5UKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFnZW50Q29sb3I7XHJcbiAgICB9IGVsc2UgaWYgKG1lc3NhZ2UudXNlcm5hbWUpIHtcclxuICAgICAgaWYgKCF0aGlzLnVzZXJuYW1lVG9Db2xvclttZXNzYWdlLnVzZXJuYW1lXSkge1xyXG4gICAgICAgIHRoaXMudXNlcm5hbWVUb0NvbG9yW21lc3NhZ2UudXNlcm5hbWVdID0gdGhpcy5jb2xvcnNbdGhpcy5jb2xvcnNJbmRleF07XHJcbiAgICAgICAgdGhpcy5jb2xvcnNJbmRleCA9ICh0aGlzLmNvbG9yc0luZGV4ICsgMSkgJSB0aGlzLmNvbG9ycy5sZW5ndGg7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMudXNlcm5hbWVUb0NvbG9yW21lc3NhZ2UudXNlcm5hbWVdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29sb3JzWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvdWxkQWxpZ25SaWdodChtZXNzYWdlOiBJQ2hhdE1lc3NhZ2UpIHtcclxuICAgIHJldHVybiBtZXNzYWdlLnR5cGUgJiYgbWVzc2FnZS50eXBlID09PSBJQ2hhdE1lc3NhZ2VUeXBlLkFHRU5UO1xyXG4gIH1cclxuXHJcbiAgc2VuZE5ld01lc3NhZ2UoZXZlbnQpIHtcclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgIHRoaXMubmV3TWVzc2FnZVNlbnQgPSB0cnVlO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGlmICh0aGlzLm5ld01lc3NhZ2VUZXh0KSB7XHJcbiAgICAgIHRoaXMubmV3TWVzc2FnZS5lbWl0KHRoaXMubmV3TWVzc2FnZVRleHQpO1xyXG4gICAgICB0aGlzLm5ld01lc3NhZ2VUZXh0ID0gJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KCcjYXV0b2ZvY3VzJykuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIHNldE9uRm9jdXMoZXZlbnQpICB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KCcjYXV0b2ZvY3VzJykuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIG9uTmV3TWVzc2FnZUZvY3VzKGV2ZW50OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICBjb25zdCBpc1R5cGluZyA9IGV2ZW50ICYmIHRoaXMubmV3TWVzc2FnZVRleHQubGVuZ3RoID4gMDtcclxuICAgIGlmIChpc1R5cGluZyAhPT0gdGhpcy5faXNBZ2VudFR5cGluZykge1xyXG4gICAgICB0aGlzLl9pc0FnZW50VHlwaW5nID0gaXNUeXBpbmc7XHJcbiAgICAgIHRoaXMuaXNBZ2VudFR5cGluZy5lbWl0KGlzVHlwaW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS2V5dXAoKSB7XHJcbiAgICBjb25zdCBpc1R5cGluZyA9IHRoaXMubmV3TWVzc2FnZVRleHQubGVuZ3RoID4gMDtcclxuICAgIGlmIChpc1R5cGluZyAhPT0gdGhpcy5faXNBZ2VudFR5cGluZykge1xyXG4gICAgICB0aGlzLl9pc0FnZW50VHlwaW5nID0gaXNUeXBpbmc7XHJcbiAgICAgIHRoaXMuaXNBZ2VudFR5cGluZy5lbWl0KGlzVHlwaW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNjcm9sbFRvQm90dG9tKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5tZXNzYWdlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCArPSAxMDAwMDA7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZSkgeyB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -538,6 +538,7 @@ let ChatBoxComponent = class ChatBoxComponent {
538
538
  return message.type && message.type === IChatMessageType.AGENT;
539
539
  }
540
540
  sendNewMessage(event) {
541
+ this.scrollToBottom();
541
542
  this.newMessageSent = true;
542
543
  event.preventDefault();
543
544
  if (this.newMessageText) {
@@ -566,7 +567,7 @@ let ChatBoxComponent = class ChatBoxComponent {
566
567
  }
567
568
  scrollToBottom() {
568
569
  try {
569
- this.messagesContainer.nativeElement.scrollTop += 10;
570
+ this.messagesContainer.nativeElement.scrollTop += 100000;
570
571
  }
571
572
  catch (e) { }
572
573
  }