{"version":3,"sources":["ixp-flow.js"],"names":["runtime","_","components","dependencies","Modernizr","$","jQuery","v1_11","canTouchThis","touch","hammerPaths","component","paths","join","flags","debug","cdn","getCdnPath","define","url","getInstanceExport","window","Hammer","getInstanceVersion","instance","VERSION","hammerTime","callback","require","then","constants","merge","flowSelector","data","componentRoot","initClass","modes","modeAttr","normalMode","editMode","steps","previousStep","activeStepOut","activeStepIn","activeStep","attrPlacement","attrTransitioning","progress","wrapperSelector","doneStep","clickable","progressInit","templates","badgeUi","progressBar","progressItem","nextButton","previousButton","regex","style","RegExp","id","iter","label","tooltip","behaviors","nextStep","firstStep","lastStep","convert","transitions","allSteps","classSlideVertical","classSlideHorizontal","classFade","allClasses","step","duration","easing","events","resized","extensibility","commands","navigate","scrollto","navigating","navigated","registerExtensibility","statics","updateProgress","stepCount","instanceId","$el","getProgressBar","children","length","remove","removeClass","addClass","progressTmpl","replace","append","$steps","progressItems","i","$step","eq","attr","itemTmpl","push","first","html","updateControls","controlTmpl","getFlowScaffolding","scaffoldingKey","builder","options","container","scaffoldContainer","scaffold","content","scaffolding","customClass","getDefaultThemes","flow","flow-progress","flow-progress-align-horizontal","flow-progress-align-vertical","flow-transition","getStepScaffolding","flowstep","flowstep-transition","register","initialize","this","transitionEndEventName","eventNamespace","progressSelector","previousSelector","nextSelector","stepDelegateSelector","seq","looping_enabled","_updateSteps","_updateControls","_updateProgress","debouncedCleanSteps","debounce","bind","_cleanSteps","maxWait","on","_onTransitionEnd","activeHeight","inStudio","stepsWrap","outerHeight","show","debouncedShow","leading","trailing","_onResize","onBehavior","_onBehaviorGotoNext","_onBehaviorGotoPrevious","_onBehaviorGotoFirst","_onBehaviorGotoLast","onDocumentReady","recalculateVisibility","delay","navigation_enabled","me","hammerInstance","$swipeTarget","find","off","e","preventDefault","isClicked","loop","interaction","source","direction","DIRECTION_RIGHT","DIRECTION_DOWN","previous","next","autoplay_enabled","startAuto","stopAuto","autoTimer","clearInterval","autoPlayDuration","dur","autoplay_delay","newDur","parseInt","isNaN","Math","abs","setInterval","extend","maxseq","autoplay_stop_on_navigation","autoplayPaused","currSeq","maxStep","targetSeq","isLooping","force","showInit","_getSteps","currStep","filter","targetStep","ee","index","element","cancel","triggerExtensibility","isForward","targetProgressItem","prevAll","csstransitions","_doTransitions","siblings","hide","css","left","top","setTimeout","is","liveballTag","$data","pushInteraction","assign","name","_getTransition","getStyle","$target","stepClasses","hasClass","stepStyle","$parent","currentStep","targetStyle","currentStyle","_doTransition","active","opacity","fadeTo","prop","amount","outerWidth","movement","animateOpts","animate","queue","complete","toggle","_getActiveHeight","_updateHeight","_isOwnStep","target","removeAttr","scrollTopAllowed","change_scroll_top","scrollToDeferred","preventScrollToStep","scrollTo","speed","inViewport","tolerance","edge","updateUrlHash","_resolveScrollTo","_onProgressClick","sourceTarget","_onFocusClick","event","keyCode","_onClickGotoNext","_onClickGotoPrevious","_onFocusClickGotoNext","_onFocusClickGotoPrevious","max","curr","originalEvent","inputs","handled","behaviourName","_shouldShowProgress","className","indexOf","classes","len","isClickable","inEditMode","clickEventName","keyUpEventName","$body","scrollTop","newHeight","studioApp","componentsManager","trigger","fixed_height","each","height","_createElementBadgeUi","$div","elementBadgeUi","_toggleElementBadgeUi","allowedDropTargets","allowedChildrenTypes","onGetCommandMap","fn","_onCommandNavigate","_onCommandScrollTo","$stepsContainer","closest","stepOwnerId","_getOwnStepFromElement","$nextStep","parent","log","targetIsStep","anchor","$descendantTarget","inArray","map","promise","Promise","resolve","reject","status","envelope","getExtensibilityEnvelope","done","undefined","getParamMapOverrides","val","onGetScaffolding","onGetCssClassesToPreserve","onStudioStateChanged","state","pagePlaceholders","onListenToStudioEvents","$badgeExtensibility","$flow","flowInstanceId","step_tag","step_navigation_tooltip","disallowedChildrenTypes","ixp"],"mappings":"CAAA,SAAUA,GACN,GAAIC,GAAID,EAAQE,WAAWC,aAAaF,EACpCG,EAAYJ,EAAQE,WAAWC,aAAaC,UAC5CC,EAAIL,EAAQE,WAAWC,aAAaG,OAAOC,MAE3CC,IAAiBJ,EAAUK,MAE3BC,GACAC,UAAWX,EAAQY,MAAMC,KAAK,iCAAmCb,EAAQc,MAAMC,MAAQ,mBAAqB,wBAC5GC,IAAKhB,EAAQY,MAAMK,WAAW,uCAGlCjB,GAAQG,aAAae,OAAO,UACxBC,IAAKT,EAAYM,IAEjBI,kBAAmB,WACf,MAAOC,QAAOC,QAElBC,mBAAoB,SAASC,GACzB,MAAOF,QAAOG,UAItB,IAAIC,GAAa,SAASC,GACtB3B,EAAQG,aAAayB,QAAQ,UACxBC,KAAK,SAASP,GACXK,EAASL,MAKjBQ,EAAY9B,EAAQE,WAAW4B,UAAUC,OACzCC,aAAc,uBAAyBhC,EAAQE,WAAW4B,UAAU5B,WAAW+B,KAAKC,cAAgB,IACpGC,UAAW,0BAEXC,OACIC,SAAU,qBACVC,WAAY,SACZC,SAAU,QAGdC,OACIC,aAAc,0BACdC,cAAe,uCACfC,aAAc,wCACdC,WAAY,4BACZC,cAAe,+BACfC,kBAAmB,oCAGvBC,UACIC,gBAAiB,+BACjBC,SAAU,mCACVL,WAAY,qCACZM,UAAW,wCACXC,aAAc,oCAGlBC,WACIC,QAAS,+MACTC,YAAa,0KACbC,aAAc,8IACdC,WAAY,sIACZC,eAAgB,+IAGpBC,OACIC,MAAO,GAAIC,QAAO,YAAa,KAC/BC,GAAI,GAAID,QAAO,SAAU,KACzBE,KAAM,GAAIF,QAAO,WAAY,KAC7BG,MAAO,GAAIH,QAAO,YAAa,KAC/BI,QAAS,GAAIJ,QAAO,cAAe,MAGvCK,WACIC,SAAU,YACVzB,aAAc,YACd0B,UAAW,aACXC,SAAU,YACVC,QAAS,eACTC,aACIC,UACIC,mBAAoB,kCACpBC,qBAAsB,oCACtBC,UAAW,8BACXC,WAAY,iGAEhBC,MACIJ,mBAAoB,8BACpBC,qBAAsB,gCACtBC,UAAW,0BACXC,WAAY,qFAEhBE,SAAU,IACVC,OAAQ,WAIhBF,MACIG,QACIC,QAAS,qBAIjBC,eACIC,UACIC,SAAU,YACVC,SAAU,aAGdL,QACIM,WAAY,cACZC,UAAW,gBAKvBtF,GAAQE,WAAWqF,sBAAsB,YACrCL,SAAUpD,EAAUmD,cAAcC,aAClCH,OAAQjD,EAAUmD,cAAcF,YAGpC,IAAIS,IACAC,eAAgB,SAAS9B,EAAO+B,EAAWC,EAAYC,GACnD,GAAIC,GAAiB,WACjB,MAAOD,GAAIE,SAAS,4BAGpBxC,EAAcuC,GAClB,IAAIH,EAAY,GAAe,SAAV/B,EAIjB,YAHIL,EAAYyC,QACZzC,EAAY0C,SAQpB,IAHAJ,EAAIK,YAAY,mCAChBL,EAAIM,SAAS,kCAET5C,EAAYyC,OACZzC,EAAYwC,WAAWA,WAAWE,aAC/B,CACH,GAAIG,GAAerE,EAAUsB,UAAUE,WACvC6C,GAAeA,EAAaC,QAAQtE,EAAU4B,MAAMC,MAAOA,GAC3DwC,EAAeA,EAAaC,QAAQtE,EAAU4B,MAAMG,GAAI8B,GACxDC,EAAIS,OAAOF,GACX7C,EAAcuC,IAMlB,IAAK,GAHDS,GAASV,EAAIE,SAAS,6BAA6BA,WAEnDS,KACKC,EAAI,EAAGA,EAAId,EAAWc,IAAK,CAChC,GAAIC,GAAQH,EAAOI,GAAGF,GAClBxC,EAAUyC,GAASA,EAAME,KAAK,yCAA2C,EAC7D,MAAZ3C,IACAA,EAAU,4BAA8BA,EAAU,IAGtD,IAAI4C,GAAW9E,EAAUsB,UAAUG,YACnCqD,GAAWA,EAASR,QAAQtE,EAAU4B,MAAMI,KAAM0C,GAClDI,EAAWA,EAASR,QAAQtE,EAAU4B,MAAMK,MAAOyC,EAAI,GACvDI,EAAWA,EAASR,QAAQtE,EAAU4B,MAAMG,GAAI8B,GAChDiB,EAAWA,EAASR,QAAQtE,EAAU4B,MAAMM,QAASA,GACrDuC,EAAcM,KAAKD,GAEvBtD,EAAYwC,WAAWgB,QAAQC,KAAKR,EAAc1F,KAAK,KAEzC,cAAV8C,EACAL,EAAY4C,SAASpE,EAAUiB,SAASG,WAExCI,EAAY2C,YAAYnE,EAAUiB,SAASG,WAG/CI,EAAY4C,SAASpE,EAAUiB,SAASI,eAG5C6D,eAAgB,SAAStB,EAAWC,EAAYC,GAC5C,IAAKF,EAED,WADAE,GAAIE,SAAS,sEAAsEE,QAIvF,KAAIJ,EAAIE,SAAS,sEAAsEC,OAAvF,CAIA,GAAIkB,GAAc,GAEdL,EAAW9E,EAAUsB,UAAUK,cACnCmD,GAAWA,EAASR,QAAQtE,EAAU4B,MAAMG,GAAI8B,GAChDsB,GAAeL,EAEfA,EAAW9E,EAAUsB,UAAUI,WAC/BoD,EAAWA,EAASR,QAAQtE,EAAU4B,MAAMG,GAAI8B,GAChDsB,GAAeL,EAEfhB,EAAIS,OAAOY,KAGfC,mBAAoB,SAASC,EAAgBC,EAASC,GAIlD,IAAK,GAHDC,GAAYF,EAAQG,kBAAkB,QAEtC/E,KACKgE,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,GAAI5B,GAAOwC,EAAQI,SAAS,gBAAiB,YAC7ChF,GAAMqE,KAAKjC,GAKf,MAFA0C,GAAUG,QAAQC,YAAclF,GAG5BkF,aAAeJ,GACf3D,OACIgE,YAAaP,EAAQQ,kBACqBC,KAAQ,GACRC,gBAAiB,6BACjBC,iCAAkC,GAClCC,+BAAgC,GAChCC,kBAAmB,QAMzEC,mBAAoB,SAASf,EAAgBC,EAASC,GAClD,GAAIC,GAAYF,EAAQG,kBAAkB,YAE1C,QACIG,aAAeJ,GACf3D,OACIgE,YAAaP,EAAQQ,kBAAmBO,SAAY,GAAIC,sBAAuB,QAM/FpI,GAAQE,WAAWmI,SAAS,YACxBC,WAAY,SAASjB,GACjBkB,KAAKC,uBAAyB,sBAAwBD,KAAKE,eAAiB,kBAAoBF,KAAKE,eAAiB,mBAAqBF,KAAKE,eAAiB,iBAAmBF,KAAKE,eACzLF,KAAKG,iBAAmB,4BAA8BH,KAAK5C,WAAa,KACxE4C,KAAKI,iBAAmB,8BAAgCJ,KAAK5C,WAAa,KAC1E4C,KAAKK,aAAe,0BAA4BL,KAAK5C,WAAa,KAClE4C,KAAKM,qBAAuB,yBAA2BN,KAAK5C,WAAa,gCACzE4C,KAAKO,IAAM,EAEPP,KAAKQ,iBACLR,KAAK3C,IAAIK,YAAY,iCAGzBsC,KAAKS,eACLT,KAAKU,kBACLV,KAAKW,kBAELX,KAAKY,oBAAsBlJ,EAAEmJ,SAASnJ,EAAEoJ,KAAKd,KAAKe,YAAaf,MAAO,IAAMgB,QAAS,MACrFhB,KAAK3C,IAAI4D,GAAGjB,KAAKC,uBAAwBD,KAAKM,qBAAsB5I,EAAEoJ,KAAKd,KAAKkB,iBAAkBlB,OAElGA,KAAKmB,aAAenB,KAAKoB,SAAWpB,KAAKqB,UAAUC,cAAgB,EAEnEtB,KAAKuB,MACDlF,KAAM2D,KAAKO,MAGfP,KAAKwB,cAAgB9J,EAAEmJ,SAASb,KAAKuB,KAAM,KAAOE,SAAW,EAAMC,UAAY,IAE/EjK,EAAQ+E,OAAOyE,GAAGjB,KAAMA,KAAK5C,WAAa7D,EAAU8C,KAAKG,OAAOC,QAAS/E,EAAEmJ,SAASnJ,EAAEoJ,KAAKd,KAAK2B,UAAW3B,MAAO,IAAMgB,QAAS,MAE5HhB,KAAKoB,WACNpB,KAAK4B,WAAW5B,KAAK3C,IAAK9D,EAAUmC,UAAUC,SAAUqE,KAAK6B,qBAC7D7B,KAAK4B,WAAW5B,KAAK3C,IAAK9D,EAAUmC,UAAUxB,aAAc8F,KAAK8B,yBACjE9B,KAAK4B,WAAW5B,KAAK3C,IAAK9D,EAAUmC,UAAUE,UAAWoE,KAAK+B,sBAC9D/B,KAAK4B,WAAW5B,KAAK3C,IAAK9D,EAAUmC,UAAUG,SAAUmE,KAAKgC,uBAIrEC,gBAAiB,WAGb,GAFAjC,KAAK2B,YACL3B,KAAKkC,uBAAwBC,MAAO,KAC/BnC,KAAKoB,SAAU,CAChB,GAAInJ,GAAgB+H,KAAKoC,mBAAoB,CACzC,GAAIC,GAAKrC,IACT7G,GAAW,SAASJ,GAChB,IAAKsJ,EAAGC,eAAgB,CACpB,GAAIC,GAAeF,EAAGhF,IAAImF,KAAK,yBAA2BH,EAAGjF,WAAa,KAC1EiF,GAAGC,eAAiB,GAAIvJ,GAAOwJ,EAAa,IAGhDF,EAAGC,eAAeG,IAAI,SACtBJ,EAAGC,eAAerB,GAAG,QAAS,SAASyB,GACnCA,EAAEC,gBAEF,IAAI7D,IACA8D,WAAW,EACXC,KAAMR,EAAG7B,gBACTsC,aACIC,OAAQ,QACRC,UAAWN,EAAEM,WAGjBN,GAAEM,YAAcjK,EAAOkK,iBAAmBP,EAAEM,YAAcjK,EAAOmK,eACjEb,EAAGc,SAASrE,GAEZuD,EAAGe,KAAKtE,OAKpBkB,KAAKqD,kBACLrD,KAAKsD,YAGb,OAAO,GAEXC,SAAU,WACFvD,KAAKwD,YACLC,cAAczD,KAAKwD,iBACZxD,MAAKwD,YAGpBF,UAAW,WAGP,GAFAtD,KAAKuD,YAEDvD,KAAKoB,SAAT,CAIA,IAAKpB,KAAK0D,iBAAkB,CACxB,GAAIC,GAAM,GACV,IAAI3D,KAAK4D,eAAgB,CACrB,GAAIC,GAASC,SAAS9D,KAAK4D,eAAgB,GACtCG,OAAMF,KACPF,EAAMK,KAAKC,IAAa,IAATJ,IAGvB7D,KAAK0D,iBAAmBC,EAE5B,GAAItB,GAAKrC,IACTA,MAAKwD,UAAYU,YAAY,WACzB7B,EAAGe,MAAOP,KAAMR,EAAG7B,mBACpBR,KAAK0D,oBAIZnC,KAAM,SAASzC,GACXA,EAAUpH,EAAEyM,QACW9H,KAAM,EACNc,UAAW6C,KAAKoE,QACjBtF,OAElBA,EAAQ8D,WAAa9D,EAAQ8D,aAAc,IACvC5C,KAAKqD,mBAAqBrD,KAAKqE,8BAC/BrE,KAAKsE,gBAAiB,GAE1BtE,KAAKuD,WAGT,IAAIgB,GAAUvE,KAAKO,IACfiE,EAAU1F,EAAQ3B,UAClBsH,EAAY3F,EAAQzC,KAEpBqI,GAAY,CAiBhB,IAhBID,GAAaD,EACT1F,EAAQ+D,QAAS,GACjB4B,EAAY,EACZC,GAAY,GAEZD,EAAYD,EAAU,EAEnBC,EAAY,IACf3F,EAAQ+D,QAAS,GACjB4B,EAAYD,EAAU,EACtBE,GAAY,GAEZD,EAAY,GAIf3F,EAAQ6F,QAAS3E,KAAK4E,UAAYL,IAAYE,EAAnD,CAIA,GAAIxK,GAAQ+F,KAAK6E,YACbC,EAAW7K,EAAM8K,OAAO,OAASR,EAAU,KAC3CS,EAAa/K,EAAM8K,OAAO,OAASN,EAAY,KAE/CQ,GACAhL,MAAOuK,EACPnI,MAAQ6I,MAAOX,EAASY,QAASL,EAAS,IAC1CE,YAAcE,MAAOT,EAAWU,QAASH,EAAW,IACpDI,QAAQ,EAKZ,IAHApF,KAAKqF,qBAAqB9L,EAAUmD,cAAcF,OAAOM,WAAYmI,GAErER,EAAYQ,EAAGD,YAAcC,EAAGD,WAAWE,QACvCD,EAAGG,QAAUX,GAAaD,GAAWC,EAAY,IAC/C3F,EAAQ6F,OAAS3E,KAAK4E,UAAYH,IAAcF,GADtD,CAKA,GAAIe,IAAY,IACXtF,KAAK4E,UAAaF,EAA0B,IAAdD,IAAsBC,GAAaD,EAAYF,KAC9Ee,GAAY,EAGhB,IAAItC,GAAYsC,EAAY,UAAY,WACpC9K,EAAyB,IAAdiK,EAAkB,QAAUA,IAAeD,EAAU,EAAK,MAAQ,SAM7ExG,EAAgBgC,KAAK3C,IAAImF,KAAKxC,KAAKG,kBACnCoF,EAAqBvH,EAAc+G,OAAO,OAASN,EAAY,IAEnEzG,GAAcN,YAAYnE,EAAUiB,SAASH,WAAa,IAAMd,EAAUiB,SAASE,UACnF6K,EAAmBC,UAAU7H,SAASpE,EAAUiB,SAASE,UACzD6K,EAAmB5H,SAASpE,EAAUiB,SAASH,YAY/C2F,KAAK3C,IAAIe,KAAK,0BAA2B4E,GACzChD,KAAK3C,IAAIe,KAAK,yBAA0B5D,EAExC,IAAI6H,GAAKrC,IA2CT,IAzCInI,GAAaA,EAAU4N,kBAAmB,EACtCzF,KAAK4E,UAELE,EAAS1G,KAAK7E,EAAUU,MAAMM,kBAAmB,SACjDyK,EAAW5G,KAAK7E,EAAUU,MAAMM,kBAAmB,SACnDyF,KAAK3F,WAAa2K,EAClBhF,KAAK0F,eAAeJ,EAAWN,EAAYF,KAE3CE,EAAWW,WAAWvH,KAAK7E,EAAUU,MAAMK,cAAe,OAAOsL,OACjEZ,EACK5G,KAAK7E,EAAUU,MAAMK,cAAe,MACpCuL,KACGC,KAAM,EACNC,IAAK,IAERxE,OACLvB,KAAK3F,WAAa2K,GAGlBhF,KAAK4E,SACLoB,WAAW,WACPlB,EAAS1G,KAAK7E,EAAUU,MAAMM,kBAAmB,SACjDyK,EAAW5G,KAAK7E,EAAUU,MAAMM,kBAAmB,SACnD8H,EAAGhI,WAAa2K,EAEZ3C,EAAGhF,IAAI4I,GAAG,YACVD,WAAW,WACP3D,EAAGtB,eACJ,IAER,IAEHiE,EAAWW,WAAWvH,KAAK7E,EAAUU,MAAMK,cAAe,OAC1D0K,EAAW5G,KAAK7E,EAAUU,MAAMK,cAAe,MAC/C0F,KAAK3F,WAAa2K,GAI1BhF,KAAKO,IAAMkE,EACXzE,KAAK2B,YAED7C,EAAQ8D,WAAa9D,EAAQ8D,aAAc,GACvC9J,OAAOoN,YAAa,CACpB,GAAIC,GAAQnB,EAAWtL,KAAK,oBACd,MAAVyM,GACAD,YAAYC,GAKnBnG,KAAK4E,WACN5E,KAAK3C,IAAIK,YAAYnE,EAAUK,WAC/BoG,KAAK4E,UAAW,GAIhB9F,EAAQgE,aACR9C,KAAKoG,gBAAgB1O,EAAE2O,QACnBC,KAAM,aACNjK,KAAM2D,KAAKO,KACZzB,EAAQgE,eAIV9C,KAAKoB,UAAY4D,EAAWxC,KAAK,sBAAuBjJ,EAAUmC,UAAUI,QAAS,KAAK0B,QAC3F/F,EAAQqE,aAIhByK,eAAgB,SAASrI,GACrB,GAAIsI,GAAW,SAASC,EAASC,GAC7B,MAAID,GAAQE,SAASD,EAAYzK,oBACtB,SACAwK,EAAQE,SAASD,EAAYxK,sBAC7B,SACAuK,EAAQE,SAASD,EAAYvK,WAC7B,OAEJ,MAGPyK,EAAYJ,EAAStI,EAAO3E,EAAUmC,UAAUK,YAAYM,KAChE,KAAKuK,EAAW,CACZ,GAAIC,GAAU7G,KAAK3C,GACnBuJ,GAAYJ,EAASK,EAAQtN,EAAUmC,UAAUK,YAAYC,UAEjE,MAAO4K,IAGXlB,eAAgB,SAASJ,EAAWN,EAAY8B,GAC5C,GAAIC,GAAc/G,KAAKuG,eAAevB,GAClCgC,EAAehH,KAAKuG,eAAeO,EACvC,IAAoB,WAAhBC,GAA4C,WAAhBA,EAA0B,CACtD,GAAI1E,GAAKrC,IACTgF,GAAWzD,KAAK,EAAG,WACfc,EAAG4E,cAAcH,EAAaE,EAAc1B,GAAW,GACvDjD,EAAG4E,cAAcjC,EAAY+B,EAAazB,GAAW,SAGzDtF,MAAKiH,cAAcH,EAAaE,EAAc1B,GAAW,GACzDtF,KAAKiH,cAAcjC,EAAY+B,EAAazB,GAAW,IAI/D2B,cAAe,SAAS/I,EAAO9C,EAAOkK,EAAW4B,GACxCA,GAAUA,KAAW,IACtBA,GAAS,EAEb,IAAI7E,GAAKrC,IACT,IAAc,SAAV5E,EAAkB,CAClB,GAAI+L,GAAUD,EAAS,EAAI,CAC3BhJ,GAAMkJ,OACF7N,EAAUmC,UAAUK,YAAYO,SAChC6K,EACA5N,EAAUmC,UAAUK,YAAYQ,OAChC,WACQ2K,GACA7E,EAAGtB,oBAIZ,IAAc,WAAV3F,GAAgC,WAAVA,EAAoB,CACjD,GAAIiM,GAAMC,CACI,YAAVlM,GACAiM,EAAO,OACPC,EAAStH,KAAKqB,UAAUkG,aAAe,OAEvCF,EAAO,MACPC,EAAStH,KAAKqB,UAAUC,cAAgB,KAE5C,IAAIkG,GAAWlC,EAAY,KAAO,KAC9BmC,IACJA,GAAYJ,GAAQG,EAAWF,EAE/BpJ,EAAMwJ,QAAQD,GACVnL,SAAU/C,EAAUmC,UAAUK,YAAYO,SAC1CqL,OAAO,EACPC,SAAU,WACFV,GACA7E,EAAGtB,qBAKf7C,GAAM2J,OAAOX,GACTA,GACAlH,KAAKe,eAKjBoC,SAAU,SAASrE,GACfA,EAAUpH,EAAEyM,OAAOrF,OAAiBzC,KAAM2D,KAAKO,IAAM,IACrDP,KAAKwB,cAAc1C,IAGvBsE,KAAM,SAAStE,GACXA,EAAUpH,EAAEyM,OAAOrF,OAAiBzC,KAAM2D,KAAKO,IAAM,IACrDP,KAAKwB,cAAc1C,IAIvB6C,UAAW,SAAUe,GACZ1C,KAAKoB,UAAYpB,KAAKmB,eAAiBnB,KAAK8H,oBAC7C9H,KAAK+H,iBAIb7G,iBAAkB,SAASwB,GACnB1C,KAAKgI,WAAWlQ,EAAE4K,EAAEuF,UACpBjI,KAAKY,uBAIbG,YAAa,WACT,GAAI9G,GAAQ+F,KAAK6E,WACjB7E,MAAK3F,WAAW+D,KAAK7E,EAAUU,MAAMK,cAAe,MACpDL,EAAMiO,WAAW3O,EAAUU,MAAMM,mBACjCyF,KAAK3F,WAAWsL,WAAWvH,KAAK7E,EAAUU,MAAMK,cAAe,MAE/D,IAAI6N,IAAoBnI,KAAKoB,UAAYpB,KAAKoI,iBAC1CD,IAAqBnI,KAAKqI,kBAAoBrI,KAAKqI,iBAAiBC,sBACpEH,GAAmB,GAEnBA,GACA1Q,EAAQ8Q,SAASvI,KAAK3F,YAClBmO,MAAQjP,EAAUmC,UAAUK,YAAYO,SAAW,EACnDmM,YACIC,UAAW,EACXC,KAAM,OAEVC,eAAe,IAIvB5I,KAAKkC,uBAAwBC,MAAO,GAEpC,IAAI8C,IACAhL,MAAO+F,KAAKoE,OACZ/H,MAAQ6I,MAAOlF,KAAKO,IAAK4E,QAASlL,EAAM8K,OAAO,OAAS/E,KAAKO,IAAM,KAAK,IAE5EP,MAAKqF,qBAAqB9L,EAAUmD,cAAcF,OAAOO,UAAWkI,GAEpEjF,KAAK6I,iBAAiB,aAElB7I,KAAKsE,iBACLtE,KAAKsE,gBAAiB,EACtBtE,KAAKsD,cAIbwF,iBAAkB,SAASpG,GACvBA,EAAEC,gBAEF,IAAIsF,GAASvF,EAAEuF,MAEfjI,MAAKuB,MACDlF,KAAM2D,KAAKlI,EAAEmQ,GAAQvO,KAAK,QAC1BkJ,WAAW,EACXE,aACIC,OAAQ,QACRgG,aAAc,eAK1BC,cAAe,SAASC,GACpB,GAAqB,IAAjBA,EAAMC,SAAkC,IAAjBD,EAAMC,QAAe,CAC5CD,EAAMtG,gBACN,IAAIsF,GAASgB,EAAMhB,MAEnBjI,MAAKuB,MACDlF,KAAM2D,KAAKlI,EAAEmQ,GAAQvO,KAAK,QAC1BkJ,WAAW,EACXE,aACIC,OAAQ,QACRgG,aAAc,gBAM9BI,iBAAkB,SAASzG,GACvBA,EAAEC,iBAEF3C,KAAKoD,MACDR,WAAW,EACXC,KAAM7C,KAAKQ,gBACXsC,aACIC,OAAQ,QACRgG,aAAc,WAK1BK,qBAAsB,SAAU1G,GAC5BA,EAAEC,iBAEF3C,KAAKmD,UACDP,WAAW,EACXC,KAAM7C,KAAKQ,gBACXsC,aACIC,OAAQ,QACRgG,aAAc,eAK1BM,sBAAuB,SAASJ,GACP,IAAjBA,EAAMC,SAAkC,IAAjBD,EAAMC,UAC7BD,EAAMtG,iBAEN3C,KAAKoD,MACDR,WAAW,EACXC,KAAM7C,KAAKQ,gBACXsC,aACIC,OAAQ,WACRgG,aAAc,YAM9BO,0BAA2B,SAAUL,GACZ,IAAjBA,EAAMC,SAAkC,IAAjBD,EAAMC,UAC7BD,EAAMtG,iBAEN3C,KAAKmD,UACDP,WAAW,EACXC,KAAM7C,KAAKQ,gBACXsC,aACIC,OAAQ,WACRgG,aAAc,gBAM9BlH,oBAAqB,SAASa,GAC1BA,EAAEC,gBAEF,IAAI4G,GAAMvJ,KAAKoE,OACXoF,EAAOxJ,KAAKO,GAEhB,IAAIiJ,EAAOD,EAAK,CACZ,GAAI7G,EAAE+G,eAAiB/G,EAAE+G,cAAclQ,EAAUmQ,OAAOlN,OAAOmN,QAAU3J,KAAK5C,YAC1E,MAEJsF,GAAE+G,cAAclQ,EAAUmQ,OAAOlN,OAAOmN,QAAU3J,KAAK5C,aAAc,EAErE4C,KAAKoD,MACDR,WAAW,EACXE,aACIC,OAAQ,WACR6G,cAAerQ,EAAUmC,UAAUC,cAMnDmG,wBAAyB,SAASY,GAC9BA,EAAEC,gBAEF,IAAI6G,GAAOxJ,KAAKO,GAChB,IAAIiJ,EAAO,EAAG,CACV,GAAI9G,EAAE+G,eAAiB/G,EAAE+G,cAAclQ,EAAUmQ,OAAOlN,OAAOmN,QAAU3J,KAAK5C,YAC1E,MAEJsF,GAAE+G,cAAclQ,EAAUmQ,OAAOlN,OAAOmN,QAAU3J,KAAK5C,aAAc,EAErE4C,KAAKmD,UACDP,WAAW,EACXE,aACIC,OAAQ,WACR6G,cAAerQ,EAAUmC,UAAUxB,kBAMnD6H,qBAAsB,SAASW,GAC3BA,EAAEC,iBAEED,EAAE+G,eAAiB/G,EAAE+G,cAAclQ,EAAUmQ,OAAOlN,OAAOmN,QAAU3J,KAAK5C,cAG9EsF,EAAE+G,cAAclQ,EAAUmQ,OAAOlN,OAAOmN,QAAU3J,KAAK5C,aAAc,EAErE4C,KAAKuB,MACDlF,KAAM,EACNuG,WAAW,EACXE,aACIC,OAAQ,WACR6G,cAAerQ,EAAUmC,UAAUE,eAK/CoG,oBAAqB,SAASU,GAC1BA,EAAEC,iBAEED,EAAE+G,eAAiB/G,EAAE+G,cAAclQ,EAAUmQ,OAAOlN,OAAOmN,QAAU3J,KAAK5C,cAG9EsF,EAAE+G,cAAclQ,EAAUmQ,OAAOlN,OAAOmN,QAAU3J,KAAK5C,aAAc,EAErE4C,KAAKuB,MACDlF,KAAM2D,KAAKoE,OACXxB,WAAW,EACXE,aACIC,OAAQ,WACR6G,cAAerQ,EAAUmC,UAAUG,cAM/CgJ,UAAW,WACP,MAAO7E,MAAKqB,UAAU9D,SAAS,6BAGnCkD,aAAc,WACVT,KAAKqB,UAAYrB,KAAK3C,IAAIE,SAAS,6BAA6BgB,OAChE,IAAItE,GAAQ+F,KAAK6E,WACjB7E,MAAKoE,OAASnK,EAAMuD,QAExBqM,oBAAqB,WACjB,GAAIC,GAAY9J,KAAK3C,IAAIe,KAAK,UAAY,EAC1C,KAAK0L,EACD,OAAO,CACJ,IAAIA,EAAUC,QAAQ,8BACzB,OAAO,CAYP,KAAK,GAVDC,IACA,6BACA,sCACA,gCACA,qCACA,+BACA,+BACA,+BAGK/L,EAAG,EAAGgM,EAAMD,EAAQxM,OAAQS,EAAIgM,EAAKhM,IAC1C,GAAI+B,KAAK3C,IAAIsJ,SAASqD,EAAQ/L,IAC1B,OAAO,CAKnB,QAAO,GAGX0C,gBAAiB,WACb,GAAIuJ,IAAclK,KAAKmK,YAAqBnK,KAAKoC,mBAE7ChH,EAAQ,MACR4E,MAAK6J,wBACLzO,EAAQ8O,EAAc,YAAc,UAGxC,IAAIE,GAAiB,QAAUpK,KAAKE,eAChCmK,EAAiB,QAAUrK,KAAKE,cACpCF,MAAK3C,IAAIoF,IAAI2H,EAAgBpK,KAAKG,kBAClCH,KAAK3C,IAAIoF,IAAI4H,EAAgBrK,KAAKG,kBAElClD,EAAQC,eAAe9B,EAAO4E,KAAKoE,OAAQpE,KAAK5C,WAAY4C,KAAK3C,KAE7D6M,IACAlK,KAAK3C,IAAI4D,GAAGmJ,EAAgBpK,KAAKG,iBAAkBzI,EAAEoJ,KAAKd,KAAK8I,iBAAkB9I,OACjFA,KAAK3C,IAAI4D,GAAGoJ,EAAgBrK,KAAKG,iBAAkBzI,EAAEoJ,KAAKd,KAAKgJ,cAAehJ,SAItFU,gBAAiB,WACb,GAAI0J,GAAiB,QAAUpK,KAAKE,eAChCmK,EAAiB,QAAUrK,KAAKE,eAChC4J,EAAY9J,KAAK3C,IAAIe,KAAK,UAAY,EAC1C,OAAI4B,MAAKmK,aAAeL,GAAcA,EAAUC,QAAQ,iCAAqCD,EAAUC,QAAQ,0CACvG/J,KAAKoB,WACLpB,KAAK3C,IAAIoF,IAAI2H,EAAgBpK,KAAKI,kBAClCJ,KAAK3C,IAAIoF,IAAI2H,EAAgBpK,KAAKK,cAClCpD,EAAQwB,eAAe,EAAGuB,KAAK5C,WAAY4C,KAAK3C,QAKxD2C,KAAK3C,IAAIoF,IAAI2H,EAAgBpK,KAAKI,kBAClCJ,KAAK3C,IAAIoF,IAAI2H,EAAgBpK,KAAKK,cAClCL,KAAK3C,IAAIoF,IAAI4H,EAAgBrK,KAAKI,kBAClCJ,KAAK3C,IAAIoF,IAAI4H,EAAgBrK,KAAKK,cAElCpD,EAAQwB,eAAeuB,KAAKoE,OAAQpE,KAAK5C,WAAY4C,KAAK3C,KAE1D2C,KAAK3C,IAAI4D,GAAGmJ,EAAgBpK,KAAKI,iBAAkB1I,EAAEoJ,KAAKd,KAAKoJ,qBAAsBpJ,OACrFA,KAAK3C,IAAI4D,GAAGmJ,EAAgBpK,KAAKK,aAAc3I,EAAEoJ,KAAKd,KAAKmJ,iBAAkBnJ,OAC7EA,KAAK3C,IAAI4D,GAAGoJ,EAAgBrK,KAAKI,iBAAkB1I,EAAEoJ,KAAKd,KAAKsJ,0BAA2BtJ,WAC1FA,MAAK3C,IAAI4D,GAAGoJ,EAAgBrK,KAAKK,aAAc3I,EAAEoJ,KAAKd,KAAKqJ,sBAAuBrJ,SAGtF+H,cAAe,WACX,GAAIuC,GAAQtK,KAAKlI,EAAE,QACfyS,EAAYD,EAAMC,YAElBC,EAAYxK,KAAK8H,kBAEhB9H,MAAKmK,WAINnK,KAAKqB,UAAUwE,IAAI,SAAU,SAH7B7F,KAAKqB,UAAUwE,IAAI,SAAU2E,EAAY,MACzCF,EAAMC,UAAUA,IAKhBvK,KAAKmB,eAAiBqJ,IAEtBxK,KAAKmB,aAAeqJ,EAEhBxK,KAAKoB,UAAYpB,KAAKyK,WACtBzK,KAAKyK,UAAUC,kBAAkBC,QAAQ,gBAAiBvN,WAAY4C,KAAK5C,eAKvF0K,iBAAkB,WACd,GAAI0C,GAAY,EAEZvQ,EAAQ+F,KAAK6E,YACbL,EAAUvK,EAAMuD,OAAS,CAS7B,IANIwC,KAAKO,IAAMiE,EACXxE,KAAKO,IAAMiE,EACJxE,KAAKO,IAAM,IAClBP,KAAKO,IAAM,GAGXP,KAAK4K,aAAc,CACnB,GAAIvI,GAAKrC,IACT/F,GAAM4Q,KAAK,WACP,GAAIC,GAASzI,EAAGvK,EAAEkI,MAAMsB,aACpBwJ,GAASN,IACTA,EAAYM,SAIhB9K,MAAKO,KAAO,GAAKP,KAAKO,IAAMtG,EAAMuD,SAClCgN,EAAYxK,KAAKlI,EAAEmC,EAAM+F,KAAKO,MAAMe,cAQ5C,OAJkB,KAAdkJ,GAAoBxK,KAAKmB,cAAgBnB,KAAKmB,aAAe,IAC7DqJ,EAAYxK,KAAKmB,cAGdqJ,GAGXO,sBAAuB,SAASC,GAC5BhL,KAAKiL,eAAiBD,EAAKlN,OAAOvE,EAAUsB,UAAUC,SAAS+M,QAAQ7H,KAAKmK,WAC5E,IAAI9H,GAAKrC,IACTgL,GAAKxI,KAAK,qCAAqCvB,GAAG,QAAS,SAASyB,GAChEL,EAAGR,oBAAoBa,KAE3BsI,EAAKxI,KAAK,qCAAqCvB,GAAG,QAAS,SAASyB,GAChEL,EAAGP,wBAAwBY,MAInCwI,sBAAuB,SAAS3J,GACvBvB,KAAKiL,gBAGVjL,KAAKiL,eAAepD,OAAOtG,IAI/B4J,mBAAoB,WAChB,OAAQ,YAAa,WAGzBC,qBAAsB,WAClB,OAAQ,kBAGZC,gBAAiB,WACb,GAAI1O,KAOJ,OANAA,GAASpD,EAAUmD,cAAcC,SAASC,WACtC0O,GAAItL,KAAKuL,oBAEb5O,EAASpD,EAAUmD,cAAcC,SAASE,WACtCyO,GAAItL,KAAKwL,oBAEN7O,GAGXqL,WAAY,SAAS3K,GACjB,IAAKA,EAAI4I,GAAG,4BACR,OAAO,CAEX,IAAIwF,GAAkBpO,EAAIqO,QAAQ,6BAC9BC,EAAcF,EAAgBrN,KAAK,sBACvC,OAAOuN,KAAgB3L,KAAK5C,YAGhCwO,uBAAwB,SAASvO,GAC7B,GAAI2C,KAAKgI,WAAW3K,GAChB,MAAOA,EAGX,IAAIwO,GAAYxO,EAAIyO,SAASJ,QAAQ,2BACrC,IAAKG,EAAUrO,OAIf,MAAOwC,MAAK4L,uBAAuBC,IAGvCL,mBAAoB,SAAS9I,GAGzB,GAFAjL,EAAQsU,IAAI,+BAAgC/L,KAAM0C,GAE7CA,EAAL,CAIA1C,KAAK6I,iBAAiB,UAEtB,IAAIxM,GAAM6B,EACN8N,GAAe,CACnB,IAAItJ,EAAEyC,SAAWzC,EAAEuJ,OAAQ,CACvB,GAAIC,EAMJ,IAJIA,EADAxJ,EAAEyC,QACkBnF,KAAK3C,IAAImF,KAAKE,EAAEyC,SAEhBnF,KAAK3C,IAAImF,KAAK,qBAAuBE,EAAEuJ,OAAS,MAEpEC,EAAkB1O,OAAQ,CAO1B,GANAU,EAAQgO,EACHlM,KAAKgI,WAAWkE,KACjBF,GAAe,EACf9N,EAAQ8B,KAAK4L,uBAAuBM,KAGnChO,IAAUA,EAAMV,OACjB,MAIJnB,GAAO2D,KAAKlI,EAAEqU,QAAQjO,EAAME,KAAK,MAAOF,EAAM4N,SAASvO,SAAS,4BAA4B6O,IAAI,WAAa,MAAOpM,MAAK1E,WAE1H,CAAA,IAAIoH,EAAErG,KAGT,MAFAA,GAAOqG,EAAErG,KAKb2D,KAAKqI,kBACDC,qBAAqB,EAGzB,IAAIjG,GAAKrC,KACLqM,EAAU,GAAIC,SAAQ,SAAUC,EAASC,GACzCnK,EAAGgG,iBAAiBkE,QAAUA,EAC9BlK,EAAGgG,iBAAiBmE,OAASA,IAG7BvH,GACA5I,KAAMA,EACNoQ,OAAQ,UACRJ,QAASA,EACT1J,gBAAgB,EAGhBqJ,KACA/G,EAAGE,QAAUnF,KAAK3C,IAAI,GAClB2C,KAAKoI,kBACLnD,EAAGwD,YACCC,UAAW,EACXC,KAAM,OAGV1D,EAAGwD,YAAeC,UAAW,KAIrC1I,KAAKqI,iBAAiBqE,SAAW1M,KAAK2M,yBAAyB1H,GAE3DjF,KAAKO,MAAQlE,GACb2D,KAAK6I,iBAAiB,aAG1B7I,KAAKuB,MAAOlF,KAAMA,IAClB2D,KAAKqF,qBAAqB,KAAMJ,GAAM2H,KAAMlK,EAAEkK,SAGlD/D,iBAAkB,SAAS4D,GACnBzM,KAAKqI,mBACLrI,KAAKqI,iBAAiBqE,SAASD,OAASA,EACxCzM,KAAKqI,iBAAiBkE,QAAQvM,KAAKqI,iBAAiBqE,UACpD1M,KAAKqI,iBAAmBwE,SAIhCtB,mBAAoB,SAAS7I,GACzB1C,KAAKuB,MAAOlF,KAAMqG,EAAErG,QAGxByQ,qBAAsB,WAClB,OACIlC,aAAc,SAASmC,GACnB/M,KAAK4K,aAAuB,SAARmC,EACpB/M,KAAK2B,aAETnB,gBAAiB,SAASuM,GACtB/M,KAAKQ,gBAAkBuM,EACvB/M,KAAK3C,IAAIK,YAAY,iCAAkCsC,KAAKQ,oBAKxEwM,iBAAkB,SAASpO,EAAgBC,EAASC,GAChD,MAAO7B,GAAQ0B,mBAAmBC,EAAgBC,EAASC,IAG/DmO,0BAA2B,WACvB,OAAS,IAAK1T,EAAUK,YAG5BsT,qBAAsB,WAClB,GAAIC,GAAQnN,KAAKyK,UAAU0C,KACI,YAA3BA,EAAMC,kBACNpN,KAAK3C,IAAIe,KAAK7E,EAAUM,MAAMC,SAAUP,EAAUM,MAAME,YACpDiG,KAAKmK,aACLnK,KAAKmK,YAAa,EAClBnK,KAAK+H,gBACL/H,KAAKU,kBACLV,KAAKkL,uBAAsB,MAG/BlL,KAAK3C,IAAIe,KAAK7E,EAAUM,MAAMC,SAAUP,EAAUM,MAAMG,UACnDgG,KAAKmK,aACNnK,KAAKmK,YAAa,EAClBnK,KAAK+H,gBACL/H,KAAKU,kBACLV,KAAKkL,uBAAsB,MAKvCmC,uBAAwB,SAAS7Q,GAC7BwD,KAAKkN,uBACL1Q,EAAOyE,GAAG,gBAAiB,SAASyB,GAC5BA,GAAKA,EAAEK,QAAUL,EAAEK,OAAOzH,KAAO0E,KAAK5C,YAAcsF,EAAEK,OAAOoC,SACzDzC,EAAEK,OAAOoC,SAAWnF,KAAKlI,EAAE4K,EAAEK,OAAOoC,SAASwB,SAASpN,EAAUK,aAChEoG,KAAK4E,UAAW,GAGnBlC,GAAKA,EAAEtF,aAAe4C,KAAK5C,aAC5B4C,KAAKS,eACLT,KAAKW,kBACLX,KAAKU,kBACLV,KAAKuB,MACDlF,KAAM2D,KAAKO,IACXoE,OAAO,MAGhB3E,MACHxD,EAAOyE,GAAG,0BAA2B,SAASyB,GACvCA,EAAEtF,aAAe4C,KAAK5C,YACtB4C,KAAK+K,sBAAsBrI,EAAE4K,sBAEjCtN,SAKXvI,EAAQE,WAAWmI,SAAS,iBACxBC,WAAY,SAASjB,GACjB,GAAIyO,GAAQvN,KAAK3C,IAAIqO,QAAQnS,EAAUE,aACvCuG,MAAKwN,eAAiBD,EAAMnP,KAAK7E,EAAU5B,WAAW+B,KAAKC,gBAG/DsI,gBAAiB,WAEb,MADAjC,MAAK3C,IAAI4D,GAAG,SAAWjB,KAAKE,eAAgBxI,EAAEoJ,KAAKd,KAAK2B,UAAW3B,QAC5D,GAGX2B,UAAW,WACPlK,EAAQ+E,OAAOmO,QAAQ3K,KAAKwN,eAAiBjU,EAAU8C,KAAKG,OAAOC,SAAWW,WAAY4C,KAAK5C,cAGnG0P,qBAAsB,WAClB,OACIW,SAAU,SAASV,GACXA,GACA/M,KAAK3C,IAAIe,KAAK,yBAA0B2O,IAGhDW,wBAAyB,SAASX,GAC1BA,GACA/M,KAAK3C,IAAIe,KAAK,uCAAwC2O,MAMtEY,wBAAyB,WACrB,OAAQ,kBAGZxC,mBAAoB,WAChB,OAAQ,aAGZ6B,iBAAkB,SAASpO,EAAgBC,EAASC,GAChD,MAAO7B,GAAQ0C,mBAAmBf,EAAgBC,EAASC,OAGpEhG,OAAO8U,IAAInW","file":"ixp-flow.min.js","sourcesContent":["(function(runtime) {\n var _ = runtime.components.dependencies._;\n var Modernizr = runtime.components.dependencies.Modernizr;\n var $ = runtime.components.dependencies.jQuery.v1_11;\n\n var canTouchThis = !!Modernizr.touch;\n\n var hammerPaths = {\n component: runtime.paths.join('/Global/UxPlugins/ixp-flow/js/', (runtime.flags.debug ? '/hammer-2.0.4.js' : '/hammer-2.0.4.min.js')),\n cdn: runtime.paths.getCdnPath('/libs/hammer.js/2.0.4/hammer.min.js')\n };\n\n runtime.dependencies.define('hammer', {\n url: hammerPaths.cdn,\n\n getInstanceExport: function() {\n return window.Hammer;\n },\n getInstanceVersion: function(instance) {\n return Hammer.VERSION;\n }\n });\n\n var hammerTime = function(callback) {\n runtime.dependencies.require('hammer')\n .then(function(Hammer) {\n callback(Hammer);\n });\n };\n\n\n var constants = runtime.components.constants.merge({\n flowSelector: '.ixp-component-flow[' + runtime.components.constants.components.data.componentRoot + ']',\n initClass: 'ixp-component-flow-init',\n\n modes: {\n modeAttr: 'data-ixp-flow-mode',\n normalMode: 'normal',\n editMode: 'edit'\n },\n\n steps: {\n previousStep: 'ixp-component-flow-prev',\n activeStepOut: 'ixp-component-flow-out ixp-flow-prev',\n activeStepIn: 'ixp-component-flow-in ixp-flow-active',\n activeStep: 'ixp-component-flow-active',\n attrPlacement: 'data-ixp-flow-step-placement',\n attrTransitioning: 'data-ixp-flow-step-transitioning'\n },\n\n progress: {\n wrapperSelector: '.ixp-component-flow-progress',\n doneStep: 'ixp-component-flow-progress-done',\n activeStep: 'ixp-component-flow-progress-active',\n clickable: 'ixp-component-flow-progress-clickable',\n progressInit: 'ixp-component-flow-progress-init'\n },\n\n templates: {\n badgeUi: '
',\n progressBar: '
',\n progressItem: '
  • %%label%%
  • ',\n nextButton: '
    ',\n previousButton: '
    '\n },\n\n regex: {\n style: new RegExp('%%style%%', 'g'),\n id: new RegExp('%%ID%%', 'g'),\n iter: new RegExp('%%iter%%', 'g'),\n label: new RegExp('%%label%%', 'g'),\n tooltip: new RegExp('%%TOOLTIP%%', 'g')\n },\n\n behaviors: {\n nextStep: 'flow-next',\n previousStep: 'flow-back',\n firstStep: 'flow-first',\n lastStep: 'flow-last',\n convert: 'flow-convert',\n transitions: {\n allSteps: {\n classSlideVertical: 'ixp-component-flow-vertical-all',\n classSlideHorizontal: 'ixp-component-flow-horizontal-all',\n classFade: 'ixp-component-flow-fade-all',\n allClasses: 'ixp-component-flow-vertical-all ixp-component-flow-horizontal-all ixp-component-flow-fade-all'\n },\n step: {\n classSlideVertical: 'ixp-component-flow-vertical',\n classSlideHorizontal: 'ixp-component-flow-horizontal',\n classFade: 'ixp-component-flow-fade',\n allClasses: 'ixp-component-flow-vertical ixp-component-flow-horizontal ixp-component-flow-fade'\n },\n duration: 500,\n easing: 'linear'\n }\n },\n\n step: {\n events: {\n resized: ':flowstep:resize'\n }\n },\n\n extensibility: {\n commands: {\n navigate: ':navigate',\n scrollto: ':scrollto'\n },\n\n events: {\n navigating: ':navigating',\n navigated: ':navigated'\n }\n }\n });\n\n runtime.components.registerExtensibility('ixp-flow', {\n commands: constants.extensibility.commands || {},\n events: constants.extensibility.events || {}\n });\n\n var statics = {\n updateProgress: function(style, stepCount, instanceId, $el) {\n var getProgressBar = function() {\n return $el.children('[data-ixp-progress-bar]');\n };\n\n var progressBar = getProgressBar();\n if (stepCount < 1 || style === 'none') {\n if (progressBar.length) {\n progressBar.remove();\n }\n return;\n }\n\n $el.removeClass('ixp-component-flow-progress-off');\n $el.addClass('ixp-component-flow-progress-on');\n\n if (progressBar.length) {\n progressBar.children().children().remove();\n } else {\n var progressTmpl = constants.templates.progressBar;\n progressTmpl = progressTmpl.replace(constants.regex.style, style);\n progressTmpl = progressTmpl.replace(constants.regex.id, instanceId);\n $el.append(progressTmpl);\n progressBar = getProgressBar();\n }\n\n var $steps = $el.children('.ixp-component-flow-steps').children();\n\n var progressItems = [];\n for (var i = 0; i < stepCount; i++) {\n var $step = $steps.eq(i);\n var tooltip = $step && $step.attr('data-ixp-component-flow-step-tooltip') || '';\n if (tooltip !== '') {\n tooltip = 'data-ixp-c-flow-tooltip=\"' + tooltip + '\"';\n }\n\n var itemTmpl = constants.templates.progressItem;\n itemTmpl = itemTmpl.replace(constants.regex.iter, i);\n itemTmpl = itemTmpl.replace(constants.regex.label, i + 1);\n itemTmpl = itemTmpl.replace(constants.regex.id, instanceId);\n itemTmpl = itemTmpl.replace(constants.regex.tooltip, tooltip);\n progressItems.push(itemTmpl);\n }\n progressBar.children().first().html(progressItems.join(''));\n\n if (style === 'clickable') {\n progressBar.addClass(constants.progress.clickable);\n } else {\n progressBar.removeClass(constants.progress.clickable);\n }\n\n progressBar.addClass(constants.progress.progressInit);\n },\n\n updateControls: function(stepCount, instanceId, $el) {\n if (!stepCount) {\n $el.children('.ixp-component-flow-control-back, .ixp-component-flow-control-next').remove();\n return;\n }\n\n if ($el.children('.ixp-component-flow-control-back, .ixp-component-flow-control-next').length) {\n return;\n }\n\n var controlTmpl = '';\n\n var itemTmpl = constants.templates.previousButton;\n itemTmpl = itemTmpl.replace(constants.regex.id, instanceId);\n controlTmpl += itemTmpl;\n\n itemTmpl = constants.templates.nextButton;\n itemTmpl = itemTmpl.replace(constants.regex.id, instanceId);\n controlTmpl += itemTmpl;\n\n $el.append(controlTmpl);\n },\n\n getFlowScaffolding: function(scaffoldingKey, builder, options) {\n var container = builder.scaffoldContainer('Flow');\n\n var steps = [];\n for (var i = 1; i < 4; i++) {\n var step = builder.scaffold('ixp-flow-step', 'Flow Step');\n steps.push(step);\n }\n\n container.content.scaffolding = steps;\n\n return {\n scaffolding: [ container ],\n style: {\n customClass: builder.getDefaultThemes({\n 'flow': '',\n 'flow-progress': 'ixp-component-flow-default',\n 'flow-progress-align-horizontal': '',\n 'flow-progress-align-vertical': '',\n 'flow-transition': ''\n })\n }\n };\n },\n\n getStepScaffolding: function(scaffoldingKey, builder, options) {\n var container = builder.scaffoldContainer('Flow Step');\n\n return {\n scaffolding: [ container ],\n style: {\n customClass: builder.getDefaultThemes({ 'flowstep': '', 'flowstep-transition': '' })\n }\n };\n }\n };\n\n runtime.components.register('ixp-flow', {\n initialize: function(options) {\n this.transitionEndEventName = 'webkitTransitionEnd' + this.eventNamespace + ' otransitionend' + this.eventNamespace + ' msTransitionEnd' + this.eventNamespace + ' transitionend' + this.eventNamespace;\n this.progressSelector = '[data-ixp-action-toggle=\"' + this.instanceId + '\"]';\n this.previousSelector = '[data-ixp-action-previous=\"' + this.instanceId + '\"]';\n this.nextSelector = '[data-ixp-action-next=\"' + this.instanceId + '\"]';\n this.stepDelegateSelector = '[data-ixp-flow-steps=\"' + this.instanceId + '\"] > .ixp-component-flow-step';\n this.seq = 0;\n\n if (this.looping_enabled) {\n this.$el.removeClass('ixp-component-flow-no-looping');\n }\n\n this._updateSteps();\n this._updateControls();\n this._updateProgress();\n\n this.debouncedCleanSteps = _.debounce(_.bind(this._cleanSteps, this), 50, { maxWait: 100 });\n this.$el.on(this.transitionEndEventName, this.stepDelegateSelector, _.bind(this._onTransitionEnd, this));\n\n this.activeHeight = this.inStudio ? this.stepsWrap.outerHeight() : 0;\n\n this.show({\n step: this.seq\n });\n\n this.debouncedShow = _.debounce(this.show, 250, { 'leading': true, 'trailing': false });\n\n runtime.events.on(this, this.instanceId + constants.step.events.resized, _.debounce(_.bind(this._onResize, this), 10, { maxWait: 20 }));\n\n if (!this.inStudio) {\n this.onBehavior(this.$el, constants.behaviors.nextStep, this._onBehaviorGotoNext);\n this.onBehavior(this.$el, constants.behaviors.previousStep, this._onBehaviorGotoPrevious);\n this.onBehavior(this.$el, constants.behaviors.firstStep, this._onBehaviorGotoFirst);\n this.onBehavior(this.$el, constants.behaviors.lastStep, this._onBehaviorGotoLast);\n }\n },\n\n onDocumentReady: function() {\n this._onResize();\n this.recalculateVisibility({ delay: 1 });\n if (!this.inStudio) {\n if (canTouchThis && this.navigation_enabled) {\n var me = this;\n hammerTime(function(Hammer) {\n if (!me.hammerInstance) {\n var $swipeTarget = me.$el.find('[data-ixp-flow-steps=\"' + me.instanceId + '\"]');\n me.hammerInstance = new Hammer($swipeTarget[0]);\n }\n\n me.hammerInstance.off('swipe');\n me.hammerInstance.on('swipe', function(e) {\n e.preventDefault();\n\n var options = {\n isClicked: true,\n loop: me.looping_enabled,\n interaction: {\n source: 'swipe',\n direction: e.direction\n }\n };\n if (e.direction === Hammer.DIRECTION_RIGHT || e.direction === Hammer.DIRECTION_DOWN) {\n me.previous(options);\n } else {\n me.next(options);\n }\n });\n });\n }\n if (this.autoplay_enabled) {\n this.startAuto();\n }\n }\n return true;\n },\n stopAuto: function() {\n if (this.autoTimer) {\n clearInterval(this.autoTimer);\n delete this.autoTimer;\n }\n },\n startAuto: function() {\n this.stopAuto();\n\n if (this.inStudio) {\n return;\n }\n\n if (!this.autoPlayDuration) {\n var dur = 4000;\n if (this.autoplay_delay) {\n var newDur = parseInt(this.autoplay_delay, 10);\n if (!isNaN(newDur)) {\n dur = Math.abs(newDur * 1000);\n }\n }\n this.autoPlayDuration = dur;\n }\n var me = this;\n this.autoTimer = setInterval(function() {\n me.next({ loop: me.looping_enabled }); // Do not pass interaction object here, means auto_play is not user interaction\n }, this.autoPlayDuration);\n },\n\n // public methods\n show: function(options) {\n options = _.extend({\n step: 0,\n stepCount: this.maxseq\n }, options || {});\n\n if (options.isClicked && options.isClicked === true) {\n if (this.autoplay_enabled && !this.autoplay_stop_on_navigation) {\n this.autoplayPaused = true;\n }\n this.stopAuto();\n }\n\n var currSeq = this.seq;\n var maxStep = options.stepCount;\n var targetSeq = options.step;\n\n var isLooping = false;\n if (targetSeq >= maxStep) {\n if (options.loop === true) {\n targetSeq = 0;\n isLooping = true;\n } else {\n targetSeq = maxStep - 1;\n }\n } else if (targetSeq < 0) {\n if (options.loop === true) {\n targetSeq = maxStep - 1;\n isLooping = true;\n } else {\n targetSeq = 0;\n }\n }\n\n if (!options.force && this.showInit && currSeq === targetSeq) {\n return;\n }\n\n var steps = this._getSteps();\n var currStep = steps.filter(':eq(' + currSeq + ')');\n var targetStep = steps.filter(':eq(' + targetSeq + ')');\n\n var ee = {\n steps: maxStep,\n step: { index: currSeq, element: currStep[0] },\n targetStep: { index: targetSeq, element: targetStep[0] },\n cancel: false\n };\n this.triggerExtensibility(constants.extensibility.events.navigating, ee);\n\n targetSeq = ee.targetStep && ee.targetStep.index;\n if (ee.cancel || targetSeq >= maxStep || targetSeq < 0 ||\n (!options.force && this.showInit && targetSeq === currSeq)) {\n return;\n }\n\n var isForward = false;\n if (!this.showInit || (isLooping & targetSeq === 0) || (!isLooping && targetSeq > currSeq)) {\n isForward = true;\n }\n\n var direction = isForward ? 'forward' : 'backward';\n var progress = targetSeq === 0 ? 'start' : targetSeq === (maxStep - 1) ? 'end' : 'middle';\n\n //console.log('current: ' + currSeq);\n //console.log('target: ' + targetSeq);\n\n // TOGGLE PROGRESS SEQ\n var progressItems = this.$el.find(this.progressSelector);\n var targetProgressItem = progressItems.filter(':eq(' + targetSeq + ')');\n\n progressItems.removeClass(constants.progress.activeStep + ' ' + constants.progress.doneStep);\n targetProgressItem.prevAll().addClass(constants.progress.doneStep);\n targetProgressItem.addClass(constants.progress.activeStep);\n\n /**\n *\n * data-ixp-flow-direction = forward || backward\n * data-ixp-flow-step-transitioning = leave || enter\n * [data-ixp-flow-step-transitioning]\n * removeAttr('data-ixp-flow-step-transitioning')\n * data-ixp-flow-step-placement = in || out\n *\n *\n */\n this.$el.attr('data-ixp-flow-direction', direction);\n this.$el.attr('data-ixp-flow-progress', progress);\n\n var me = this;\n\n if (Modernizr && Modernizr.csstransitions !== true) {\n if (this.showInit) {\n // Use JS animations - slide, fade, etc\n currStep.attr(constants.steps.attrTransitioning, 'leave');\n targetStep.attr(constants.steps.attrTransitioning, 'enter');\n this.activeStep = targetStep;\n this._doTransitions(isForward, targetStep, currStep);\n } else {\n targetStep.siblings().attr(constants.steps.attrPlacement, 'out').hide();\n targetStep\n .attr(constants.steps.attrPlacement, 'in')\n .css({\n left: 0,\n top: 0\n })\n .show();\n this.activeStep = targetStep;\n }\n } else {\n if (this.showInit) {\n setTimeout(function() {\n currStep.attr(constants.steps.attrTransitioning, 'leave');\n targetStep.attr(constants.steps.attrTransitioning, 'enter');\n me.activeStep = targetStep;\n\n if (me.$el.is(':hidden')) {\n setTimeout(function() {\n me._cleanSteps();\n }, 1);\n }\n }, 1);\n } else {\n targetStep.siblings().attr(constants.steps.attrPlacement, 'out');\n targetStep.attr(constants.steps.attrPlacement, 'in');\n this.activeStep = targetStep;\n }\n }\n\n this.seq = targetSeq;\n this._onResize();\n\n if (options.isClicked && options.isClicked === true) {\n if (window.liveballTag) {\n var $data = targetStep.data('ixp-component-tag');\n if ($data !== '') {\n liveballTag($data);\n }\n }\n }\n\n if (!this.showInit) {\n this.$el.removeClass(constants.initClass);\n this.showInit = true;\n }\n\n // Push step moved interaction here\n if (options.interaction) {\n this.pushInteraction(_.assign({\n name: 'step moved',\n step: this.seq\n }, options.interaction));\n }\n\n // Mark user as converted when opened defined slide\n if (!this.inStudio && targetStep.find('[data-ixp-behavior-'+ constants.behaviors.convert +']').length) {\n runtime.convert();\n }\n },\n\n _getTransition: function($step) {\n var getStyle = function($target, stepClasses) {\n if ($target.hasClass(stepClasses.classSlideVertical)) {\n return 'slideY';\n } else if ($target.hasClass(stepClasses.classSlideHorizontal)) {\n return 'slideX';\n } else if ($target.hasClass(stepClasses.classFade)) {\n return 'fade';\n }\n return null;\n };\n\n var stepStyle = getStyle($step, constants.behaviors.transitions.step);\n if (!stepStyle) {\n var $parent = this.$el;\n stepStyle = getStyle($parent,constants.behaviors.transitions.allSteps);\n }\n return stepStyle;\n },\n\n _doTransitions: function(isForward, targetStep, currentStep) {\n var targetStyle = this._getTransition(targetStep);\n var currentStyle = this._getTransition(currentStep);\n if (targetStyle === 'slideX' || targetStyle === 'slideY') {\n var me = this;\n targetStep.show(0, function() {\n me._doTransition(currentStep, currentStyle, isForward, false);\n me._doTransition(targetStep, targetStyle, isForward, true);\n });\n } else {\n this._doTransition(currentStep, currentStyle, isForward, false);\n this._doTransition(targetStep, targetStyle, isForward, true);\n }\n },\n\n _doTransition: function($step, style, isForward, active) {\n if (!active && active !== false) {\n active = false;\n }\n var me = this;\n if (style === 'fade') {\n var opacity = active ? 1 : 0;\n $step.fadeTo(\n constants.behaviors.transitions.duration,\n opacity,\n constants.behaviors.transitions.easing,\n function() {\n if (active) {\n me._cleanSteps();\n }\n }\n );\n } else if (style === 'slideX' || style === 'slideY') {\n var prop, amount;\n if (style === 'slideX') {\n prop = 'left';\n amount = this.stepsWrap.outerWidth() + \"px\";\n } else {\n prop = 'top';\n amount = this.stepsWrap.outerHeight() + \"px\";\n }\n var movement = isForward ? '-=' : '+=';\n var animateOpts = {};\n animateOpts[prop] = movement + amount;\n\n $step.animate(animateOpts, {\n duration: constants.behaviors.transitions.duration,\n queue: false,\n complete: function() {\n if (active) {\n me._cleanSteps();\n }\n }\n });\n } else {\n $step.toggle(active);\n if (active){\n this._cleanSteps();\n }\n }\n },\n\n previous: function(options) {\n options = _.extend(options || {}, { step: this.seq - 1 });\n this.debouncedShow(options);\n },\n\n next: function(options) {\n options = _.extend(options || {}, { step: this.seq + 1 });\n this.debouncedShow(options);\n },\n\n // events\n _onResize: function (e) {\n if (!this.inStudio || this.activeHeight !== this._getActiveHeight()) {\n this._updateHeight();\n }\n },\n\n _onTransitionEnd: function(e) {\n if (this._isOwnStep($(e.target))) {\n this.debouncedCleanSteps();\n }\n },\n\n _cleanSteps: function() {\n var steps = this._getSteps();\n this.activeStep.attr(constants.steps.attrPlacement, 'in');\n steps.removeAttr(constants.steps.attrTransitioning);\n this.activeStep.siblings().attr(constants.steps.attrPlacement, 'out');\n\n var scrollTopAllowed = !this.inStudio && this.change_scroll_top;\n if (scrollTopAllowed && (this.scrollToDeferred && this.scrollToDeferred.preventScrollToStep)) {\n scrollTopAllowed = false;\n }\n if (scrollTopAllowed) {\n runtime.scrollTo(this.activeStep, {\n speed: (constants.behaviors.transitions.duration / 2),\n inViewport: {\n tolerance: 1,\n edge: 'top'\n },\n updateUrlHash: false\n });\n }\n\n this.recalculateVisibility({ delay: 1 });\n\n var ee = {\n steps: this.maxseq,\n step: { index: this.seq, element: steps.filter(':eq(' + this.seq + ')')[0] }\n };\n this.triggerExtensibility(constants.extensibility.events.navigated, ee);\n\n this._resolveScrollTo('completed');\n\n if (this.autoplayPaused) {\n this.autoplayPaused = false;\n this.startAuto();\n }\n },\n\n _onProgressClick: function(e) {\n e.preventDefault();\n\n var target = e.target;\n\n this.show({\n step: this.$(target).data('step'),\n isClicked: true,\n interaction: {\n source: 'click',\n sourceTarget: 'progress'\n }\n });\n },\n\n _onFocusClick: function(event) {\n if (event.keyCode == 13 || event.keyCode == 32) {\n event.preventDefault();\n var target = event.target;\n\n this.show({\n step: this.$(target).data('step'),\n isClicked: true,\n interaction: {\n source: 'keyup',\n sourceTarget: 'progress'\n }\n });\n }\n },\n\n _onClickGotoNext: function(e) {\n e.preventDefault();\n\n this.next({\n isClicked: true,\n loop: this.looping_enabled,\n interaction: {\n source: 'click',\n sourceTarget: 'next'\n }\n });\n },\n\n _onClickGotoPrevious: function (e) {\n e.preventDefault();\n\n this.previous({\n isClicked: true,\n loop: this.looping_enabled,\n interaction: {\n source: 'click',\n sourceTarget: 'previous'\n }\n });\n },\n\n _onFocusClickGotoNext: function(event) {\n if (event.keyCode == 13 || event.keyCode == 32) {\n event.preventDefault();\n\n this.next({\n isClicked: true,\n loop: this.looping_enabled,\n interaction: {\n source: 'keyboard',\n sourceTarget: 'next'\n }\n });\n }\n },\n\n _onFocusClickGotoPrevious: function (event) {\n if (event.keyCode == 13 || event.keyCode == 32) {\n event.preventDefault();\n\n this.previous({\n isClicked: true,\n loop: this.looping_enabled,\n interaction: {\n source: 'keyboard',\n sourceTarget: 'previous'\n }\n });\n }\n },\n\n _onBehaviorGotoNext: function(e) {\n e.preventDefault();\n\n var max = this.maxseq;\n var curr = this.seq;\n\n if (curr < max) {\n if (e.originalEvent && e.originalEvent[constants.inputs.events.handled + this.instanceId]) {\n return;\n }\n e.originalEvent[constants.inputs.events.handled + this.instanceId] = true;\n\n this.next({\n isClicked: true,\n interaction: {\n source: 'behavior',\n behaviourName: constants.behaviors.nextStep\n }\n });\n }\n },\n\n _onBehaviorGotoPrevious: function(e) {\n e.preventDefault();\n\n var curr = this.seq;\n if (curr > 0) {\n if (e.originalEvent && e.originalEvent[constants.inputs.events.handled + this.instanceId]) {\n return;\n }\n e.originalEvent[constants.inputs.events.handled + this.instanceId] = true;\n\n this.previous({\n isClicked: true,\n interaction: {\n source: 'behavior',\n behaviourName: constants.behaviors.previousStep\n }\n });\n }\n },\n\n _onBehaviorGotoFirst: function(e) {\n e.preventDefault();\n\n if (e.originalEvent && e.originalEvent[constants.inputs.events.handled + this.instanceId]) {\n return;\n }\n e.originalEvent[constants.inputs.events.handled + this.instanceId] = true;\n\n this.show({\n step: 0,\n isClicked: true,\n interaction: {\n source: 'behavior',\n behaviourName: constants.behaviors.firstStep\n }\n });\n },\n\n _onBehaviorGotoLast: function(e) {\n e.preventDefault();\n\n if (e.originalEvent && e.originalEvent[constants.inputs.events.handled + this.instanceId]) {\n return;\n }\n e.originalEvent[constants.inputs.events.handled + this.instanceId] = true;\n\n this.show({\n step: this.maxseq,\n isClicked: true,\n interaction: {\n source: 'behavior',\n behaviourName: constants.behaviors.lastStep\n }\n });\n },\n\n // setup functions\n _getSteps: function() {\n return this.stepsWrap.children('.ixp-component-flow-step');\n },\n\n _updateSteps: function() {\n this.stepsWrap = this.$el.children('.ixp-component-flow-steps').first();\n var steps = this._getSteps();\n this.maxseq = steps.length;\n },\n _shouldShowProgress: function() {\n var className = this.$el.attr('class') || '';\n if (!className) {\n return false;\n } else if (className.indexOf('ixp-c-flow-style-brand-') > -1) {\n return true;\n } else {\n var classes = [\n 'ixp-component-flow-default',\n 'ixp-component-flow-dots-light-solid',\n 'ixp-component-flow-dots-light',\n 'ixp-component-flow-dots-dark-solid',\n 'ixp-component-flow-dots-dark',\n 'ixp-component-flow-bar-light',\n 'ixp-component-flow-bar-dark'\n ];\n\n for (var i= 0, len = classes.length; i < len; i++) {\n if (this.$el.hasClass(classes[i])) {\n return true;\n }\n }\n }\n\n return false;\n },\n\n _updateProgress: function() {\n var isClickable = this.inEditMode ? false : this.navigation_enabled;\n\n var style = 'none';\n if (this._shouldShowProgress()) {\n style = isClickable ? 'clickable' : 'display';\n }\n\n var clickEventName = 'click' + this.eventNamespace;\n var keyUpEventName = 'keyup' + this.eventNamespace;\n this.$el.off(clickEventName, this.progressSelector);\n this.$el.off(keyUpEventName, this.progressSelector);\n\n statics.updateProgress(style, this.maxseq, this.instanceId, this.$el);\n\n if (isClickable) {\n this.$el.on(clickEventName, this.progressSelector, _.bind(this._onProgressClick, this));\n this.$el.on(keyUpEventName, this.progressSelector, _.bind(this._onFocusClick, this));\n }\n },\n\n _updateControls: function() {\n var clickEventName = 'click' + this.eventNamespace;\n var keyUpEventName = 'keyup' + this.eventNamespace;\n var className = this.$el.attr('class') || '';\n if (this.inEditMode || !className || (className.indexOf('ixp-c-flow-style-brand-') === -1 && className.indexOf('ixp-component-flow-controls-') === -1)) {\n if (this.inStudio) {\n this.$el.off(clickEventName, this.previousSelector);\n this.$el.off(clickEventName, this.nextSelector);\n statics.updateControls(0, this.instanceId, this.$el);\n }\n return;\n }\n\n this.$el.off(clickEventName, this.previousSelector);\n this.$el.off(clickEventName, this.nextSelector);\n this.$el.off(keyUpEventName, this.previousSelector);\n this.$el.off(keyUpEventName, this.nextSelector);\n\n statics.updateControls(this.maxseq, this.instanceId, this.$el);\n\n this.$el.on(clickEventName, this.previousSelector, _.bind(this._onClickGotoPrevious, this));\n this.$el.on(clickEventName, this.nextSelector, _.bind(this._onClickGotoNext, this));\n this.$el.on(keyUpEventName, this.previousSelector, _.bind(this._onFocusClickGotoPrevious, this));\n this.$el.on(keyUpEventName, this.nextSelector, _.bind(this._onFocusClickGotoNext, this));\n },\n\n _updateHeight: function() {\n var $body = this.$('body');\n var scrollTop = $body.scrollTop();\n\n var newHeight = this._getActiveHeight();\n\n if (!this.inEditMode) {\n this.stepsWrap.css('height', newHeight + 'px');\n $body.scrollTop(scrollTop);\n } else {\n this.stepsWrap.css('height', 'auto');\n }\n\n if (this.activeHeight !== newHeight) {\n // Keep track of the current flow step's height.\n this.activeHeight = newHeight;\n\n if (this.inStudio && this.studioApp) {\n this.studioApp.componentsManager.trigger('rmw:reflowed', {instanceId: this.instanceId});\n }\n }\n },\n\n _getActiveHeight: function () {\n var newHeight = 0;\n\n var steps = this._getSteps(),\n maxStep = steps.length - 1;\n\n // Adjust current step, if necessary.\n if (this.seq > maxStep) {\n this.seq = maxStep;\n } else if (this.seq < 0) {\n this.seq = 0;\n }\n\n if (this.fixed_height) {\n var me = this;\n steps.each(function () {\n var height = me.$(this).outerHeight();\n if (height > newHeight) {\n newHeight = height;\n }\n });\n } else {\n if (this.seq >= 0 && this.seq < steps.length) {\n newHeight = this.$(steps[this.seq]).outerHeight();\n }\n }\n\n if (newHeight === 0 && (this.activeHeight && this.activeHeight > 0)) {\n newHeight = this.activeHeight;\n }\n\n return newHeight;\n },\n\n _createElementBadgeUi: function($div) {\n this.elementBadgeUi = $div.append(constants.templates.badgeUi).toggle(!this.inEditMode);\n var me = this;\n $div.find('[data-ixp-flow-action=\"nextStep\"]').on('click', function(e) {\n me._onBehaviorGotoNext(e);\n });\n $div.find('[data-ixp-flow-action=\"prevStep\"]').on('click', function(e) {\n me._onBehaviorGotoPrevious(e);\n });\n },\n\n _toggleElementBadgeUi: function(show) {\n if (!this.elementBadgeUi) {\n return;\n }\n this.elementBadgeUi.toggle(show);\n },\n\n // creative studio functions\n allowedDropTargets: function () {\n return ['Container', 'Column'];\n },\n\n allowedChildrenTypes: function() {\n return ['ixp-flow-step'];\n },\n\n onGetCommandMap: function() {\n var commands = {};\n commands[constants.extensibility.commands.navigate] = {\n fn: this._onCommandNavigate\n };\n commands[constants.extensibility.commands.scrollto] = {\n fn: this._onCommandScrollTo\n };\n return commands;\n },\n\n _isOwnStep: function($el) {\n if (!$el.is('.ixp-component-flow-step')) {\n return false;\n }\n var $stepsContainer = $el.closest('.ixp-component-flow-steps');\n var stepOwnerId = $stepsContainer.attr('data-ixp-flow-steps');\n return stepOwnerId === this.instanceId;\n },\n\n _getOwnStepFromElement: function($el) {\n if (this._isOwnStep($el)) {\n return $el;\n }\n\n var $nextStep = $el.parent().closest('.ixp-component-flow-step');\n if (!$nextStep.length) {\n return;\n }\n\n return this._getOwnStepFromElement($nextStep);\n },\n\n _onCommandScrollTo: function(e) {\n runtime.log('_onCommandScrollTo called on', this, e);\n\n if (!e) {\n return;\n }\n\n this._resolveScrollTo('aborted');\n\n var step, $step;\n var targetIsStep = true;\n if (e.element || e.anchor) {\n var $descendantTarget;\n if (e.element) {\n $descendantTarget = this.$el.find(e.element);\n } else {\n $descendantTarget = this.$el.find('[data-ixp-anchor=\"' + e.anchor + '\"]');\n }\n if ($descendantTarget.length) {\n $step = $descendantTarget;\n if (!this._isOwnStep($descendantTarget)) {\n targetIsStep = false;\n $step = this._getOwnStepFromElement($descendantTarget);\n }\n\n if (!$step || !$step.length) {\n return;\n }\n\n //step = $step.index();\n step = this.$.inArray($step.attr('id'), $step.parent().children('.ixp-component-flow-step').map(function() { return this.id }));\n }\n } else if (e.step) {\n step = e.step;\n } else {\n return;\n }\n\n this.scrollToDeferred = {\n preventScrollToStep: true\n };\n\n var me = this;\n var promise = new Promise(function (resolve, reject) {\n me.scrollToDeferred.resolve = resolve;\n me.scrollToDeferred.reject = reject;\n });\n\n var ee = {\n step: step,\n status: 'pending',\n promise: promise,\n preventDefault: false\n };\n\n if (targetIsStep) {\n ee.element = this.$el[0];\n if (this.change_scroll_top) {\n ee.inViewport = {\n tolerance: 1,\n edge: 'top'\n };\n } else {\n ee.inViewport = { tolerance: 0.5 };\n }\n }\n\n this.scrollToDeferred.envelope = this.getExtensibilityEnvelope(ee);\n\n if (this.seq === step) {\n this._resolveScrollTo('completed');\n }\n\n this.show({ step: step });\n this.triggerExtensibility(null, ee, { done: e.done });\n },\n\n _resolveScrollTo: function(status) {\n if (this.scrollToDeferred) {\n this.scrollToDeferred.envelope.status = status;\n this.scrollToDeferred.resolve(this.scrollToDeferred.envelope);\n this.scrollToDeferred = undefined;\n }\n },\n\n _onCommandNavigate: function(e) {\n this.show({ step: e.step });\n },\n\n getParamMapOverrides: function() {\n return {\n fixed_height: function(val) {\n this.fixed_height = val === \"true\";\n this._onResize();\n },\n looping_enabled: function(val) {\n this.looping_enabled = val;\n this.$el.removeClass('ixp-component-flow-no-looping', !this.looping_enabled);\n }\n }\n },\n\n onGetScaffolding: function(scaffoldingKey, builder, options) {\n return statics.getFlowScaffolding(scaffoldingKey, builder, options);\n },\n\n onGetCssClassesToPreserve: function() {\n return [ '!'+ constants.initClass ];\n },\n\n onStudioStateChanged: function() {\n var state = this.studioApp.state;\n if (state.pagePlaceholders === 'hidden') {\n this.$el.attr(constants.modes.modeAttr, constants.modes.normalMode);\n if (this.inEditMode) {\n this.inEditMode = false;\n this._updateHeight();\n this._updateControls();\n this._toggleElementBadgeUi(true);\n }\n } else {\n this.$el.attr(constants.modes.modeAttr, constants.modes.editMode);\n if (!this.inEditMode) {\n this.inEditMode = true;\n this._updateHeight();\n this._updateControls();\n this._toggleElementBadgeUi(false);\n }\n }\n },\n\n onListenToStudioEvents: function(events) {\n this.onStudioStateChanged();\n events.on('page:reflowed', function(e) {\n if (e && e.source && e.source.id === this.instanceId && e.source.element) {\n if (e.source.element && this.$(e.source.element).hasClass(constants.initClass)) {\n this.showInit = false;\n }\n }\n if (!e || e.instanceId !== this.instanceId) {\n this._updateSteps();\n this._updateProgress();\n this._updateControls();\n this.show({\n step: this.seq,\n force: true\n });\n }\n }, this);\n events.on('element:badge:activated', function(e) {\n if (e.instanceId === this.instanceId) {\n this._createElementBadgeUi(e.$badgeExtensibility);\n }\n }, this);\n }\n });\n\n\n runtime.components.register('ixp-flow-step', {\n initialize: function(options) {\n var $flow = this.$el.closest(constants.flowSelector);\n this.flowInstanceId = $flow.attr(constants.components.data.componentRoot);\n },\n\n onDocumentReady: function() {\n this.$el.on('resize' + this.eventNamespace, _.bind(this._onResize, this));\n return true;\n },\n\n _onResize: function() {\n runtime.events.trigger(this.flowInstanceId + constants.step.events.resized, { instanceId: this.instanceId });\n },\n\n getParamMapOverrides: function() {\n return {\n step_tag: function(val) {\n if (val) {\n this.$el.attr('data-ixp-component-tag', val);\n }\n },\n step_navigation_tooltip: function(val) {\n if (val) {\n this.$el.attr('data-ixp-component-flow-step-tooltip', val);\n }\n }\n }\n },\n\n disallowedChildrenTypes: function() {\n return ['ixp-flow-step'];\n },\n\n allowedDropTargets: function () {\n return ['ixp-flow'];\n },\n\n onGetScaffolding: function(scaffoldingKey, builder, options) {\n return statics.getStepScaffolding(scaffoldingKey, builder, options);\n }\n });\n})(window.ixp.runtime);\n"]}