{"version":3,"sources":["webpack:///./packages/jquery-kyle-menu/monkey-patches.js","webpack:///./packages/jquery-kyle-menu/popup.js","webpack:///./packages/jquery-kyle-menu/index.js","webpack:///./packages/jqueryui/menu.js"],"names":["proto","$","ui","menu","prototype","originalRefresh","refresh","extend","call","this","that","items","element","find","inputGroupLabeled","bind","event","RegExp","test","target","tagName","preventDefault","inputIDCount","each","labelElement","closest","length","insertBefore","attr","textInput","children","focus","selected","setTimeout","blur","index","item","current","parent","is","addClass","prepend","role","prev","html","after","before","next","hide","keyCode","SPACE","active","select","stopImmediatePropagation","stopPropagation","UP","trigger","DOWN","prop","remove","removeAttr","toggleClass","siblings","collapseAll","_trigger","idIncrement","suppressExpandOnFocus","widget","version","options","position","my","at","managed","expandOnFocus","show","effect","duration","_create","generatedId","generatedRole","_beforeClose","onMouseDown","noFocus","isOpen","close","open","clearTimeout","closeTimer","_delay","focusPopup","_on","keydown","TAB","ESCAPE","mouseup","mouseClickTimer","window","click","mousedown","tabbables","first","last","shiftKey","focusout","focusin","keyup","focusTrigger","document","add","_destroy","removeClass","unbind","of","_show","removeTabIndex","_hide","KyleMenu","constructor","forEach","m","$trigger","data","$ariaMenuWrapper","opts","defaults","noButton","buttonOpts","addDropArrow","append","button","keepButtonActive","$menu","menuOpts","popup","popupOpts","appendMenuTo","on","e","tabKey","which","pressTab","Event","popupInstance","_open","self","appendTo","apply","arguments","$placeholder","insertAfter","args","notifyMenuActiveOnParent","$notifyParent","menuselect","popupopen","onOpen","popupclose","onClose","adjustCarat","$target","originalEvent","type","el","createEvent","initEvent","dispatchEvent","returnFocusTo","requestAnimationFrame","body","activeElement","hasClass","$carat","triggerWidth","outerWidth","triggerOffsetLeft","offset","left","mbox","getBoundingClientRect","tbox","caratIsBelow","top","height","caratY","pointToDropDownFrom","pageX","differenceInOffset","actualOffset","caratOffset","Math","min","max","css","prependTo","within","collision","fn","kyleMenu","thisOrParentIsHidden","some","parents","andSelf","mouseHandled","defaultElement","delay","icons","submenu","menus","activeMenu","uniqueId","tabIndex","eventNamespace","proxy","disabled","not","has","expand","currentTarget","mouseleave","eq","contains","removeUniqueId","elem","_keydown","match","character","skip","regex","escape","value","replace","PAGE_UP","previousPage","PAGE_DOWN","nextPage","HOME","_move","END","previous","LEFT","collapse","RIGHT","ENTER","_activate","previousFilter","String","fromCharCode","filterTimer","filter","text","nextAll","icon","submenus","_itemRole","submenuCarat","listbox","nested","focused","_scrollIntoView","_close","timer","_startOpening","borderTop","paddingTop","scroll","elementHeight","itemHeight","_hasScroll","parseFloat","scrollTop","fromFocus","all","currentMenu","startMenu","end","newItem","isFirstItem","prevAll","isLastItem","direction","base","outerHeight"],"mappings":";;;;;AA6BA,MAAMA,EAAQC,IAAEC,GAAGC,KAAKC,UACtBC,EAAkBL,EAAMM;AAE1BL,IAAEM,OAAOP,EAAO,CACdM,UACED,EAAgBG,KAAKC;AACrB,MAAMC,EAAOD;AACb,MAAME,EAAQF,KAAKG,QAAQC,KAAK;AAChC,IAAIC,EAAoB;AAExBL,KAAKG,QAAQG,KAAK,cAAc,SAASC,GAClC,IAAIC,OAAO,QAAQC,KAAKF,EAAMG,OAAOC,UAAUJ,EAAMK;AAG5D,IAAIC,EAAe;AACnBb,KAAKG,QAAQC,KAAK,+CAA+CU,MAAK,WACpE,MAAMC,EAAevB,IAAEQ,MAAMgB,QAAQ;AACrC,GAAID,EAAaE,OAAQ,CACvBzB,IAAEQ,MAAMkB,aAAaH;AAEhBvB,IAAEQ,MAAMmB,KAAK,OAChB3B,IAAEQ,MAAMmB,KAAK,KAAM,YAAcN;AAGnCE,EAAaI,KAAK,MAAO3B,IAAEQ,MAAMmB,KAAK;AAG1CnB,KAAKG,QAAQG,KAAK,aAAa,SAASC,GACtC,MAAMa,EAAY5B,IAAEe,EAAMG,QACvBN,KAAK,oBACLiB,SAAS;AACRD,EAAUH,QAAQG,EAAU,GAAGE;AAGrCtB,KAAKG,QACFG,KAAK,aAAa,SAASC,GAC1B,MAAMgB,EAAW/B,IAAEe,EAAMG,QACtBN,KAAK,8BACLY,QAAQ;AACPO,EAASN,QACXO,YAAW,WACTvB,EAAKqB,MAAMf,EAAOgB,KACjB,MAGNjB,KAAK,YAAY,SAASC,GACzB,MAAMa,EAAY5B,IAAEe,EAAMG,QAAQN,KAAK;AACnCgB,EAAUH,QAAQG,EAAU,GAAGK;AAGvCvB,EAAMmB,SAAS,KAAKP,MAAK,SAASY,EAAOC,GACvC,MAAMC,EAAUpC,IAAEmC,GAChBE,EAASD,EAAQC;AAEnB,GAAID,EAAQP,WAAWS,GAAG,+CAAgD,CACxEF,EAAQZ,QAAQ,MAAMe,SAAS;AAE/B,GAAIH,EAAQP,SAAS,0BAA0BS,GAAG,YAAa,CAC7DF,EAAQI,QAAQ;AAChBH,EAAOV,KAAK,CACVc,KAAM,mBACN,eAAgB,cAEb,GAAIL,EAAQP,SAAS,uBAAuBS,GAAG,YAAa,CACjEF,EAAQI,QAAQ;AAChBH,EAAOV,KAAK,CACVc,KAAM,gBACN,eAAgB,cAEb,GAAIL,EAAQP,SAAS,uBAAuBJ,OAAQ,CACzDW,EAAQI,QAAQ;AAChBH,EAAOV,KAAK,CACVc,KAAM,gBACN,eAAgB,eAGlBJ,EAAOV,KAAK,CACVc,KAAM,mBACN,eAAgB;AAIhBL,EAAQP,WAAWS,GAAG,wBACxBD,EAAOV,KAAK,cAAeS,EAAQP,SAAS,uBAAuBF,KAAK;AAG1E,GAAIU,EAAOK,OAAOjB,SAAWY,EAAOK,OAAOb,SAAS,KAAKJ,OAAQ,CAC/DY,EACGK,OACAH,SAAS,qBACTI,KAAK,qCAAuCN,EAAOK,OAAOC,OAAS,WACnE7B,KAAK,cAAc,SAASC,GAC3B,OAAO,SAER6B,MAAM;AACT/B,EAAoB,UAEpBwB,EAAOK,OAAOjB,SACbY,EACEK,OACAb,SAAS,KACTA,WACAS,GAAG,gDAEND,EAAOQ,OAAO;AAGhB,GACEhC,GACAwB,EAAOS,OAAOrB,SACbY,EACES,OACAjB,SAAS,KACTA,WACAS,GAAG,+CACN,CACAD,EAAOO,MAAM;AACb/B,EAAoB,WAEpBwB,EAAOS,OAAOrB,SACbY,EACES,OACAjB,SAAS,KACTA,WACAS,GAAG,gDAEND,EAAOO,MAAM;AAGfR,EAAQP,SAAS,+CAA+CkB;AAIpErC,EAAMI,KAAK,gBAAgB,SAASC,GAClC,GAAIA,EAAMiC,UAAYhD,IAAEC,GAAG+C,QAAQC,MAAO,CACxC,GACExC,EAAKyC,OACFrB,SAAS,KACTA,WACAS,GAAG,+CACN,CACA7B,EAAK0C,OAAOpC;AACZA,EAAMqC,2BAERrC,EAAMK;AAIVV,EACGE,KAAK,sBACLE,KAAK,WAAW,SAASC,GACxBA,EAAMsC;AACN,GAAItC,EAAMiC,UAAYhD,IAAEC,GAAG+C,QAAQM,GAAI,CACrC7C,EAAKE,QAAQ4C,QAAQ;AACrB/C,KAAKyB;AACLxB,EAAKqB,MACHf,EACAf,IAAEQ,MACCgB,QAAQ,iBACRkB,QAGP,GAAI3B,EAAMiC,UAAYhD,IAAEC,GAAG+C,QAAQQ,KAAM,CACvC/C,EAAKE,QAAQ4C,QAAQ;AACrB/C,KAAKyB;AACLxB,EAAKqB,MACHf,EACAf,IAAEQ,MACCgB,QAAQ,iBACRsB,YAIRhC,KAAK,SAAS,SAASC,GACtBA,EAAMsC,sBAGZF,OAAOpC,GAEL,MAAMd,EAAK,CAETkC,KAAM3B,KAAK0C,QAAUlD,IAAEe,EAAMG,QAAQM,QAAQ;AAG/C,GACEvB,EAAGkC,KACAN,SAAS,KACTA,WACAS,GAAG,0BAEN,GAAqC,UAAjCrC,EAAGkC,KAAKR,KAAK,gBAA6B,CAC5C1B,EAAGkC,KAAKN,SAAS,KAAKW,QAAQ;AAC9BvC,EAAGkC,KAAKR,KAAK,eAAgB;AAC7B1B,EAAGkC,KACAN,SAAS,KACTA,SAAS,0BACT4B,KAAK,UAAW,WAChBF,QAAQ,eACN,GAAqC,SAAjCtD,EAAGkC,KAAKR,KAAK,gBAA4B,CAClD1B,EAAGkC,KACAN,SAAS,KACTA,SAAS,sBACT6B;AACHzD,EAAGkC,KAAKR,KAAK,eAAgB;AAC7B1B,EAAGkC,KACAN,SAAS,KACTA,SAAS,0BACT8B,WAAW,WACXJ,QAAQ,UAIf,GACEtD,EAAGkC,KACAN,SAAS,KACTA,WACAS,GAAG,wBAE+B,UAAjCrC,EAAGkC,KAAKR,KAAK,gBAA6B,CAC5C1B,EAAGkC,KACAN,SAAS,KACTA,SAAS,0BACT+B,YAAY;AACf3D,EAAGkC,KAAKR,KAAK,eAAgB;AAC7B1B,EAAGkC,KACAN,SAAS,KACTA,SAAS,uBACT4B,KAAK,UAAW,WAChBF,QAAQ;AACXtD,EAAGkC,KAAK0B,SAAS,gBAAkB7D,IAAEC,EAAGkC,MAAMR,KAAK,eAAiB,KAAKL,MAAK,WAC5EtB,IAAEQ,MAAMmB,KAAK,eAAgB;AAC7B3B,IAAEQ,MACCqB,SAAS,KACTA,SAAS,yBACT+B,YAAY;AACf5D,IAAEQ,MACCqB,SAAS,KACTA,SAAS,uBACT8B,WAAW,cAMjB1D,EAAGkC,KACDN,SAAS,KACTA,WACAS,GAAG,gDAEN9B,KAAKsD;AACPtD,KAAKuD,SAAS,SAAUhD,EAAOd;;;;;ACnQnC,IAAI+D,EAAc,EACjBC,EAAwB;AAEzBjE,IAAEkE,OAAQ,WAAY,CACrBC,QAAS,WACTC,QAAS,CACRC,SAAU,CACTC,GAAI,WACJC,GAAI,eAELC,QAAS,MACTC,cAAe,MACfC,KAAM,CACLC,OAAQ,YAERC,SAAU,GAEX7B,KAAM,CACL4B,OAAQ,UAERC,SAAU,IAGZC,QAAS,WACFrE,KAAK4D,QAAQb,UAClB/C,KAAK4D,QAAQb,QAAU/C,KAAKG,QAAQ+B;AAGrC,IAAMlC,KAAKG,QAAQgB,KAAM,MAAS,CACjCnB,KAAKG,QAAQgB,KAAM,KAAM,YAAcqC;AACvCxD,KAAKsE,YAAc,KAGpB,IAAMtE,KAAKG,QAAQgB,KAAM,UAClBnB,KAAK4D,QAAQI,QAAW,CAC7BhE,KAAKG,QAAQgB,KAAM,OAAQ;AAC3BnB,KAAKuE,cAAgB,KAIvBvE,KAAK4D,QAAQb,QACX5B,KAAM,gBAAiB,QACvBA,KAAM,YAAanB,KAAKG,QAAQgB,KAAM;AAExCnB,KAAKG,QACH4B,SAAU;AACZ/B,KAAKwE;AACLxE,KAAKG,QAAQoC;AAGb,IAAIkC,EAAc,SAAUlE,GAC3B,IAAImE,EAAU;AAGTlF,IAAGe,EAAMG,QAASoB,GAAI,WAC1B4C,EAAU;AAEX,GAAI1E,KAAK2E,OAAQ,CAChBlB,EAAwB;AACxBzD,KAAK4E;AACL,OAED5E,KAAK6E,KAAMtE;AACXuE,aAAc9E,KAAK+E;AACnB/E,KAAKgF,QAAQ,WACNN,GACL1E,KAAKiF,eAEJ;AAEJjF,KAAKkF,IAAIlF,KAAK4D,QAAQb,QAAS,CAC9BoC,QAAS,SAAU5E,GAClB,OAASA,EAAMiC,SACd,KAAKhD,IAAEC,GAAG+C,QAAQ4C,IAEjBpF,KAAKG,QAAQoC;AACbvC,KAAK4E,MAAOrE;AACZ;AACD,KAAKf,IAAEC,GAAG+C,QAAQ6C,OACZrF,KAAK2E,QACT3E,KAAK4E,MAAOrE;AAEb;AAED,KAAKf,IAAEC,GAAG+C,QAAQC,MAClB,KAAKjD,IAAEC,GAAG+C,QAAQQ,KAClB,KAAKxD,IAAEC,GAAG+C,QAAQM,GAEjBvC,EAAMK;AACNkE,aAAc9E,KAAK+E;AACnB/E,KAAKgF,QAAO,WACXhF,KAAK6E,KAAMtE;AACXP,KAAKiF,WAAY1E,KACf,KAKN+E,QAAS,SAAU/E,GAClBP,KAAKuF,gBAAkBC,OAAOhE,WAAW,kBACjCxB,KAAKuF,iBACXjF,KAAKN,MAAO,IAEfyF,MAAO,SAAUlF,GAChBA,EAAMsC;AACNtC,EAAMK;AAEAZ,KAAKuF,iBACVd,EAAY1E,KAAMC,KAAMO,IAG1BmF,UAAWjB;AAGPzE,KAAK4D,QAAQK,eACjBjE,KAAKkF,IAAKlF,KAAK4D,QAAQb,QAAS,CAC/BzB,MAAQ,SAAUf,GACXkD,GACLzD,KAAKgF,QAAQ,WACNhF,KAAK2E,QACV3E,KAAK6E,KAAMtE,KAEV;AAEJP,KAAKgF,QAAQ,WACZvB,EAAwB,QACtB,MAEJhC,KAAM,SAAUlB,GACfkD,EAAwB;AAIrBzD,KAAK4D,QAAQI,SAElBhE,KAAKkF,IAAI,CAAEC,QAAU,SAAU5E,GAC7B,GAAKA,EAAMiC,UAAYhD,IAAEC,GAAG+C,QAAQ4C,IACnC;AAED,IAAIO,EAAYnG,IAAG,YAAaQ,KAAKG,SACpCyF,EAAQD,EAAUC,QAClBC,EAAQF,EAAUE;AACnB,GAAKtF,EAAMG,SAAWmF,EAAM,IAAQtF,EAAMuF,UAGnC,GAAKvF,EAAMG,SAAWkF,EAAO,IAAOrF,EAAMuF,SAAW,CAC3DD,EAAKvE,MAAO;AACZf,EAAMK,sBAL8C,CACpDgF,EAAMtE,MAAO;AACbf,EAAMK;AASVZ,KAAKkF,IAAI,CACRa,SAAU,SAAUxF,GAGnBP,KAAK+E,WAAa/E,KAAKgF,QAAQ,WAC9BhF,KAAK4E,MAAOrE,KACV,MAEJyF,QAAS,SAAUzF,GAClBuE,aAAc9E,KAAK+E,aAEpBO,QAAS,SAAU/E,GAClBuE,aAAc9E,KAAK+E;AAIrB/E,KAAKkF,IAAI,CACRe,MAAO,SAAU1F,GAChB,GAAKA,EAAMiC,UAAYhD,IAAEC,GAAG+C,QAAQ6C,QAAUrF,KAAKG,QAAQ2B,GAAI,YAAe,CAC7E9B,KAAK4E,MAAOrE;AACZP,KAAKkG;AAKRlG,KAAKkF,IAAKlF,KAAKmG,SAAU,CACxBV,MAAO,SAAUlF,GACXP,KAAK2E,SAAWnF,IAAGe,EAAMG,QAASM,QAAShB,KAAKG,QAAQiG,IAAKpG,KAAK4D,QAAQb,UAAY9B,QAC1FjB,KAAK4E,MAAOrE,OAMhB8F,SAAU,WACTrG,KAAKG,QACH+D,OACAoC,YAAa,YACbnD,WAAY,eACZA,WAAY,iBACZoD,OAAQ;AAEVvG,KAAK4D,QAAQb,QACXI,WAAY,iBACZA,WAAY;AAETnD,KAAKsE,aACTtE,KAAKG,QAAQgD,WAAY;AAErBnD,KAAKuE,eACTvE,KAAKG,QAAQgD,WAAY,SAI3B0B,KAAM,SAAUtE,GACf,IAAIsD,EAAWrE,IAAEM,OAAQ,GAAI,CAC5B0G,GAAIxG,KAAK4D,QAAQb,SACf/C,KAAK4D,QAAQC;AAEhB7D,KAAKyG,MAAOzG,KAAKG,QAASH,KAAK4D,QAAQM;AACvClE,KAAKG,QACHgB,KAAM,cAAe,SACrBA,KAAM,gBAAiB,QACvB0C,SAAUA;AAGZ7D,KAAK4D,QAAQb,QAAQ5B,KAAM,YAAa;AACxCnB,KAAK2E,OAAS;AACd3E,KAAKuD,SAAU,OAAQhD,IAGxB0E,WAAY,SAAU1E,GACrB,IAAMP,KAAK4D,QAAQI,QAAU,CAG5B,IAAI2B,EAAY3F,KAAKG,QAAQC,KAAM;AACnCJ,KAAK0G,eAAiB;AACtB,IAAMf,EAAU1E,OAAS,CACxB,IAAMjB,KAAKG,QAAQ2B,GAAG,aAAe,CACpC9B,KAAKG,QAAQgB,KAAK,WAAY;AAC9BnB,KAAK0G,eAAiB,KAEvBf,EAAYA,EAAUS,IAAKpG,KAAKG,QAAS,IAE1CwF,EAAUC,QAAQtE,MAAO,GAE1BtB,KAAKuD,SAAU,aAAchD,IAG9B2F,aAAc,SAAU3F,GACvBkD,EAAwB;AACxBzD,KAAK4D,QAAQb,QAAQzB;AACrBtB,KAAKuD,SAAU,eAAgBhD,IAGhCqE,MAAO,SAAUrE,GAChBP,KAAKwE;AACLxE,KAAK2G,MAAO3G,KAAKG,QAASH,KAAK4D,QAAQrB;AAEvCvC,KAAK4D,QAAQb,QAAQ5B,KAAM,WAAa;AACnCnB,KAAK0G,gBACT1G,KAAKG,QAAQgD,WAAY;AAE1BnD,KAAK2E,OAAS;AACd3E,KAAKuD,SAAU,QAAShD,IAGzBiE,aAAc,WACbxE,KAAKG,QACHgB,KAAM,cAAe,QACrBA,KAAM,gBAAiB;AC7PZ,MAAMyF,EACnBC,YAAY9D,EAASa,GAClB,CAAC,SAAU,SAAU,UAAW,QAAS,oBAAoBkD,QAC5DC,GAAM/G,KAAK+G,GAAK/G,KAAK+G,GAAGzG,KAAKN;AAE/BA,KAAKgH,SAAWxH,IAAEuD,GAASkE,KAAK,WAAYjH;AAC5CA,KAAKkH,iBAAmBlH,KAAKgH,SAASnF;AACtC7B,KAAKmH,KAAO3H,IAAEM,OAAO,KAAM,GAAI8G,EAASQ,SAAUxD;AAElD,IAAK5D,KAAKmH,KAAKE,SAAU,CACnBrH,KAAKmH,KAAKG,WAAWC,cACvBvH,KAAKgH,SAASQ,OAAO;AAEvBxH,KAAKgH,SAASS,OAAOzH,KAAKmH,KAAKG;AAI/BtH,KAAKgH,SAAS1G,KAAK,oBAAqBN,KAAK0H,kBAG/C1H,KAAK2H,MAAQ3H,KAAKgH,SACf1E,OACA5C,KAAKM,KAAKmH,KAAKS,UACfC,MAAM7H,KAAKmH,KAAKW,WAChB/F,SAAS;AAMZ,GAAI/B,KAAKmH,KAAKY,aAAc,CAE1B/H,KAAK2H,MAAMK,GAAG,CACZ7C,QAAS8C,IACP,GAAIA,EAAEzF,UAAYhD,IAAEC,GAAG+C,QAAQ4C,IAAK,CAClC,IAAI8C;AAEFA,EADED,EAAEnC,SACK,CACPqC,MAAO3I,IAAEC,GAAG+C,QAAQ4C,IACpBU,SAAU,MAGH,CACPqC,MAAO3I,IAAEC,GAAG+C,QAAQ4C;AAIxB,MAAMgD,EAAW5I,IAAE6I,MAAM,UAAWH;AACpClI,KAAKgH,SAAS1F,QAAQyB,QAAQqF;AAKpC,MAAME,EAAgBtI,KAAK2H,MAAMV,KAAK;AACtC,MAAMsB,EAAQD,EAAczD;AAC5B,MAAM2D,EAAOxI;AAEbsI,EAAczD,KAAO,WACnB2D,EAAKb,MAAMc,SAASD,EAAKrB,KAAKY;AAC9B,OAAOQ,EAAMG,MAAM1I,KAAM2I;AAG3B3I,KAAK4I,aAAepJ,IAAE,gCAAgCqJ,YAAY7I,KAAK2H;AACvE3H,KAAK2H,MAAMrH,KAAK,QAAS,IAAIwI,IAAS9I,KAAK4I,aAAa7F,WAAW+F,IAOjE9I,KAAKmH,KAAK4B,2BACZ/I,KAAKgJ,cAAgBhJ,KAAKgH,SAAShG,QAAQhB,KAAKmH,KAAK4B;AAGvD/I,KAAK2H,MAAMK,GAAG,CACZiB,WAAYjJ,KAAK2C,OACjBuG,UAAWlJ,KAAKmJ,OAChBC,WAAYpJ,KAAKqJ,UAIrBF,OAAO5I,GACLP,KAAKkH,iBAAiB/F,KAAK,OAAQ;AACnCnB,KAAKsJ,YAAY/I;AACjBP,KAAK2H,MAAM5F,SAAS;AAChB/B,KAAKmH,KAAK4B,0BAA0B/I,KAAKgJ,cAAcjH,SAAS,eAGtE8C,OACE7E,KAAK2H,MAAME,MAAM,QAGnBlF,OAAOsF,EAAGxI,GACR,IAAI8J;AACJ,GAAkD,WAA7CtB,EAAEuB,eAAiBvB,EAAEuB,cAAcC,QAAsBF,EAAU/J,IAAEC,EAAGkC,MAAMvB,KAAK,MAAO,CAC7F6H,EAAErH;AACF,MAAM8I,EAAKH,EAAQ;AACnB,MAAMhJ,EAAQ4F,SAASwD,YAAY;AACnCpJ,EAAMqJ,UAAU,QAAS,KAAM;AAC/BF,EAAGG,cAActJ,GAEnBP,KAAK4E,QAGPyE,UACMrJ,KAAKmH,KAAKY,cAAc/H,KAAK2H,MAAMzG,aAAalB,KAAK4I;AACzD5I,KAAKgH,SAASV,YAAY;AAC1BtG,KAAKkH,iBAAiB/D,WAAW;AACjCnD,KAAK2H,MAAMrB,YAAY;AACnBtG,KAAKmH,KAAK4B,0BAA0B/I,KAAKgJ,cAAc1C,YAAY;AAOnEtG,KAAKmH,KAAK2C,gBAAkB9J,KAAKmH,KAAK2C,cAAc7G,KAAK,aAE3D8G,sBAAsB,KAChB5D,SAAS6D,OAAS7D,SAAS8D,eAE7BjK,KAAKmH,KAAK2C,cAAcxI,UAMhCsD,QACE5E,KAAK2H,MAAMuC,SAAS,kBAAoBlK,KAAK2H,MAAME,MAAM,SAASvB,YAAY,iBAGhFoB,mBACM1H,KAAK2H,MAAM7F,GAAG,mBAAqB9B,KAAKgH,SAASlF,GAAG,qBACtD9B,KAAKgH,SAASjF,SAAS,mBAK3BuH,YAAY/I,GACNP,KAAKmK,QAAQnK,KAAKmK,OAAOjH;AACzBlD,KAAKgH,SAASlF,GAAG,qBAAqB9B,KAAKgH,SAASjF,SAAS;AAEjE,MAAMqI,EAAepK,KAAKgH,SAASqD;AACnC,MAAMC,EAAoBtK,KAAKgH,SAASuD,SAASC;AAGjD,MAAMC,EAAOzK,KAAK2H,MAAM,GAAG+C;AAC3B,MAAMC,EAAO3K,KAAKgH,SAAS,GAAG0D;AAC9B,MAAME,EAAeH,EAAKI,IAAMJ,EAAKK,OAASH,EAAKE;AACnD,MAAME,EAASN,EAAKK,OAAS;AAG7B,MAAME,EAAsBzK,EAAM0K,OAASX,EAAoBF,EAAe;AAC9E,MAAMc,EAAqBZ,EAAoBtK,KAAK2H,MAAM4C,SAASC;AACnE,MAAMW,EAAeH,EAAsBhL,KAAKgH,SAASuD,SAASC;AAClE,MAAMY,EAAcC,KAAKC,IAAID,KAAKE,IAAI,EAAGJ,GAAef,EAAe,GAAKc;AAC5ElL,KAAKmK,OAAS3K,IAAE,+CAA+CgM,IAAI,OAAQJ;AACvER,GACF5K,KAAKmK,OAAOqB,IAAI,MAAOT,GAAQS,IAAI,YAAa;AAElDxL,KAAKmK,OAAOsB,UAAUzL,KAAK2H,QAhKVf,EAmKZQ,SAAW,CAChBU,UAAW,CACTjE,SAAU,CACRC,GAAI,aACJC,GAAI,gBACJwG,OAAQ,SACRmB,OAAQ,QACRC,UAAW,YAGfrE,WAAY,CACVC,aAAc;AAMpB/H,IAAEoM,GAAGC,SAAW,SAASjI,GACvB,OAAO5D,KAAKc,MAAK,WACVtB,IAAEQ,MAAMiH,OAAO4E,UAAU,IAAIjF,EAAS5G,KAAM4D,Q;ACpNrD;AAAA;AAAA;AAAA;AAmBA,SAASkI,IACP,MAAO,GAAGC,KAAKhM,KAAK,IAAEC,MAAMgM,UAAUC,WAAW,SAASvC,GACxD,MAA+B,QAAxB,IAAE8B,IAAI9B,EAAI,cAIrB,IAAIwC,EAAe;AAEnB,IAAExI,OAAQ,UAAW,CACpBC,QAAS,WACTwI,eAAgB,OAChBC,MAAO,IACPxI,QAAS,CACRyI,MAAO,CACNC,QAAS,qBAEVC,MAAO,KACP1I,SAAU,CACTC,GAAI,WACJC,GAAI,aAEL9B,KAAM,OAGNR,KAAM,KACNH,MAAO,KACPqB,OAAQ,MAGT0B,QAAS,WACRrE,KAAKwM,WAAaxM,KAAKG;AACvBH,KAAKG,QACHsM,WACA1K,SAAU,qDACVqB,YAAa,kBAAmBpD,KAAKG,QAAQC,KAAM,YAAaa,QAChEE,KAAK,CACLc,KAAMjC,KAAK4D,QAAQ3B,KACnByK,SAAU,IAIVpM,KAAM,QAAUN,KAAK2M,eAAgB,IAAEC,OAAM,SAAUrM,GAClDP,KAAK4D,QAAQiJ,UACjBtM,EAAMK,mBAELZ;AAECA,KAAK4D,QAAQiJ,UACjB7M,KAAKG,QACH4B,SAAU,qBACVZ,KAAM,gBAAiB;AAG1BnB,KAAKkF,IAAI,CAGR,8BAA+B,SAAU3E,GACxCA,EAAMK,kBAEP,+BAAgC,SAAUL,GACzCA,EAAMK,kBAEP,6BAA8B,SAAUL,GACvC,IAAIG,EAAS,IAAGH,EAAMG;AACtB,IAAMwL,GAAgBxL,EAAOM,QAAS,iBAAkB8L,IAAK,sBAAuB7L,OAAS,CAC5FiL,EAAe;AAEflM,KAAK2C,OAAQpC;AAERP,KAAKG,QAAQ4M,IAAK,YAAa9L,OACnCjB,KAAKgN,OAAQzM,GACDP,KAAKG,QAAQ2B,GAAG,WAE5B9B,KAAKG,QAAQmB,UAIhB,2BAA4B,SAAUf,GACrC,IAAIG,EAAS,IAAGH,EAAM0M;AAGtBvM,EAAO2C,WAAWhC,SAAU,oBAAqBiF,YAAa;AAC9DtG,KAAKsB,MAAOf,EAAOG,IAEpBwM,WAAY,cACZ,sBAAuB,cACvB5L,MAAO,SAAUf,GAGhB,IAAIoB,EAAO3B,KAAK0C,QAAU1C,KAAKG,QAAQkB,SAAU,iBAAkByL,IAAIhB,GAAsBqB,GAAI;AAE5FxL,EAAKV,QACMjB,KAAKsB,MAAMf,EAAOoB,IAGnCF,KAAM,SAAUlB,GACfP,KAAKgF,QAAO,WACL,IAAEoI,SAAUpN,KAAKG,QAAQ,GAAIH,KAAKmG,SAAS,GAAG8D,gBACnDjK,KAAKsD,YAAa/C,OAIrB4E,QAAS;AAGVnF,KAAKH;AAGLG,KAAKkF,IAAKlF,KAAKmG,SAAU,CACxBV,MAAO,SAAUlF,GACV,IAAGA,EAAMG,QAASM,QAAS,YAAaC,QAC7CjB,KAAKsD,YAAa/C;AAInB2L,EAAe,UAKlB7F,SAAU,WAETrG,KAAKG,QACHgD,WAAY,yBACZ/C,KAAM,YAAa6L,UAClB3F,YAAa,mEACbnD,WAAY,QACZA,WAAY,YACZA,WAAY,mBACZA,WAAY,iBACZA,WAAY,eACZA,WAAY,iBACZkK,iBACAnJ;AAGHlE,KAAKG,QAAQC,KAAM,iBACjBkG,YAAa,gBACbnD,WAAY,QACZA,WAAY,iBACZ9B,SAAU,KACTgM,iBACA/G,YAAa,gCACbnD,WAAY,YACZA,WAAY,QACZA,WAAY,iBACZ9B,WAAWP,MAAM,WACjB,IAAIwM,EAAO,IAAGtN;AACTsN,EAAKrG,KAAM,0BACfqG,EAAKpK;AAKTlD,KAAKG,QAAQC,KAAM,oBAAqBkG,YAAa,sCAGtDiH,SAAU,SAAUhN,GACnB,IAAIiN,EAAOtL,EAAMuL,EAAWC,EAAMC,EACjC/M,EAAiB;AAElB,SAASgN,EAAQC,GAChB,OAAOA,EAAMC,QAAS,8BAA+B,QAGtD,OAASvN,EAAMiC,SACf,KAAK,IAAE/C,GAAG+C,QAAQuL,QACjB/N,KAAKgO,aAAczN;AACnB;AACD,KAAK,IAAEd,GAAG+C,QAAQyL,UACjBjO,KAAKkO,SAAU3N;AACf;AACD,KAAK,IAAEd,GAAG+C,QAAQ2L,KACjBnO,KAAKoO,MAAO,QAAS,QAAS7N;AAC9B;AACD,KAAK,IAAEd,GAAG+C,QAAQ6L,IACjBrO,KAAKoO,MAAO,OAAQ,OAAQ7N;AAC5B;AACD,KAAK,IAAEd,GAAG+C,QAAQM,GACjB9C,KAAKsO,SAAU/N;AACf;AACD,KAAK,IAAEd,GAAG+C,QAAQQ,KACjBhD,KAAKsC,KAAM/B;AACX;AACD,KAAK,IAAEd,GAAG+C,QAAQ+L,KACjBvO,KAAKwO,SAAUjO;AACf;AACD,KAAK,IAAEd,GAAG+C,QAAQiM,MACXzO,KAAK0C,OAAOZ,GAAI,uBACrB9B,KAAKgN,OAAQzM;AAEd;AACD,KAAK,IAAEd,GAAG+C,QAAQkM,MAClB,KAAK,IAAEjP,GAAG+C,QAAQC,MACjBzC,KAAK2O,UAAWpO;AAChB;AACD,KAAK,IAAEd,GAAG+C,QAAQ6C,OACjBrF,KAAKwO,SAAUjO;AACf;AACD,QACCK,EAAiB;AACjBsB,EAAOlC,KAAK4O,gBAAkB;AAC9BnB,EAAYoB,OAAOC,aAAcvO,EAAMiC;AACvCkL,EAAO;AAEP5I,aAAc9E,KAAK+O;AAEdtB,IAAcvL,EAClBwL,EAAO,KAEPD,EAAYvL,EAAOuL;AAGpBE,EAAQ,IAAInN,OAAQ,IAAMoN,EAAQH,GAAa;AAC/CD,EAAQxN,KAAKwM,WAAWnL,SAAU,iBAAkB2N,QAAO,WAC1D,OAAOrB,EAAMlN,KAAM,IAAGT,MAAOqB,SAAS,KAAKyL,IAAIhB,GAAsBmD;AAEtEzB,EAAQE,IAA+C,IAAvCF,EAAM9L,MAAO1B,KAAK0C,OAAOJ,QACxCtC,KAAK0C,OAAOwM,QAAS,iBACrB1B;AAID,IAAMA,EAAMvM,OAAS,CACpBwM,EAAYoB,OAAOC,aAAcvO,EAAMiC;AACvCmL,EAAQ,IAAInN,OAAQ,IAAMoN,EAAQH,GAAa;AAC/CD,EAAQxN,KAAKwM,WAAWnL,SAAU,iBAAkB2N,QAAO,WAC1D,OAAOrB,EAAMlN,KAAM,IAAGT,MAAOqB,SAAS,KAAKyL,IAAIhB,GAAsBmD,WAIvE,GAAKzB,EAAMvM,OAAS,CACnBjB,KAAKsB,MAAOf,EAAOiN;AACnB,GAAKA,EAAMvM,OAAS,EAAI,CACvBjB,KAAK4O,eAAiBnB;AACtBzN,KAAK+O,YAAc/O,KAAKgF,QAAO,kBACvBhF,KAAK4O,iBACV,iBAEI5O,KAAK4O,2BAGN5O,KAAK4O,eAId,GAAKhO,EAAiB,CACrBL,EAAMsC;AACNtC,EAAMK,mBAIR+N,UAAW,SAAUpO,GACdP,KAAK0C,OAAOZ,GAAI,wBAChB9B,KAAK0C,OAAOrB,SAAU,2BAA4BJ,OACtDjB,KAAKgN,OAAQzM,GAEbP,KAAK2C,OAAQpC,KAKhBV,QAAS,WAER,IAAI0M,EACH4C,EAAOnP,KAAK4D,QAAQyI,MAAMC,QAC1B8C,EAAWpP,KAAKG,QAAQC,KAAMJ,KAAK4D,QAAQ2I,MAAQ,kBACjDxK,SAAU,qDACVQ,OACApB,KAAK,CACLc,KAAMjC,KAAK4D,QAAQ3B,KACnB,cAAe,OACf,gBAAiB;AAIpBsK,EAAQ6C,EAAShJ,IAAKpG,KAAKG;AAE3BoM,EAAMlL,SAAU,8BACdU,SAAU,gBACVZ,KAAM,OAAQ,gBACdE,SAAU,KACToL,WACA1K,SAAU,iBACVZ,KAAK,CACLuL,UAAW,EACXzK,KAAMjC,KAAKqP;AAId9C,EAAMlL,SAAU,uBAAwBP,MAAK,WAC5C,IAAIa,EAAO,IAAG3B,MAER,YAAYS,KAAMkB,EAAKsN,SAC5BtN,EAAKI,SAAU;AAKjBwK,EAAMlL,SAAU,sBAAuBF,KAAM,gBAAiB;AAE9DiO,EAAStO,MAAK,WACb,IAAIpB,EAAO,IAAGM,MACb2B,EAAOjC,EAAKwC,KAAM,KAClBoN,EAAe,IAAG,UAChBvN,SAAU,wBAA0BoN,GACpClI,KAAM,wBAAyB;AAElCtF,EACER,KAAM,gBAAiB,QACvBa,QAASsN;AACX5P,EAAKyB,KAAM,kBAAmBQ,EAAKR,KAAM,WAI3CkO,UAAW,WACV,MAAO,CACN3P,KAAM,WACN6P,QAAS,UACPvP,KAAK4D,QAAQ3B,OAGjBX,MAAO,SAAUf,EAAOoB,GACvB,IAAI6N,EAAQC;AACZzP,KAAKyB,KAAMlB,EAAOA,GAAwB,UAAfA,EAAMkJ;AAEjCzJ,KAAK0P,gBAAiB/N;AAEtB3B,KAAK0C,OAASf,EAAKiE;AAEnB6J,EAAUzP,KAAK0C,OAAOrB,SAAU,aAAcU,SAAU;AAGnD/B,KAAK4D,QAAQ3B,MACjBjC,KAAKG,QAAQgB,KAAM,wBAAyBsO,EAAQtO,KAAM;AAI3DnB,KAAK0C,OACHb,SACAb,QAAS,iBACTK,SAAU,WACVU,SAAU;AAEPxB,GAAwB,YAAfA,EAAMkJ,KACnBzJ,KAAK2P,SAEL3P,KAAK4P,MAAQ5P,KAAKgF,QAAO,WACxBhF,KAAK2P,WACH3P,KAAKoM;AAGToD,EAAS7N,EAAKN,SAAU;AACnBmO,EAAOvO,QAAY,SAASR,KAAMF,EAAMkJ,OAC5CzJ,KAAK6P,cAAcL;AAEpBxP,KAAKwM,WAAa7K,EAAKE;AAEvB7B,KAAKuD,SAAU,QAAShD,EAAO,CAAEoB,KAAMA,KAGxC+N,gBAAiB,SAAU/N,GAC1B,IAAImO,EAAWC,EAAYxF,EAAQyF,EAAQC,EAAeC;AAC1D,GAAKlQ,KAAKmQ,aAAe,CACxBL,EAAYM,WAAY,IAAE5E,IAAKxL,KAAKwM,WAAW,GAAI,oBAAwB;AAC3EuD,EAAaK,WAAY,IAAE5E,IAAKxL,KAAKwM,WAAW,GAAI,gBAAoB;AACxEjC,EAAS5I,EAAK4I,SAASM,IAAM7K,KAAKwM,WAAWjC,SAASM,IAAMiF,EAAYC;AACxEC,EAAShQ,KAAKwM,WAAW6D;AACzBJ,EAAgBjQ,KAAKwM,WAAW1B;AAChCoF,EAAavO,EAAKmJ;AAEbP,EAAS,EACbvK,KAAKwM,WAAW6D,UAAWL,EAASzF,GACzBA,EAAS2F,EAAaD,GACjCjQ,KAAKwM,WAAW6D,UAAWL,EAASzF,EAAS0F,EAAgBC,KAKhEzO,KAAM,SAAUlB,EAAO+P,GAChBA,GACLxL,aAAc9E,KAAK4P;AAGpB,IAAM5P,KAAK0C,OACV;AAGD1C,KAAK0C,OAAOrB,SAAU,KAAMiF,YAAa;AACzCtG,KAAK0C,OAAS;AAEd1C,KAAKuD,SAAU,OAAQhD,EAAO,CAAEoB,KAAM3B,KAAK0C,UAG5CmN,cAAe,SAAUvD,GACxBxH,aAAc9E,KAAK4P;AAInB,GAAuC,SAAlCtD,EAAQnL,KAAM,eAClB;AAGDnB,KAAK4P,MAAQ5P,KAAKgF,QAAO,WACxBhF,KAAK2P;AACL3P,KAAKuI,MAAO+D,KACVtM,KAAKoM,QAGT7D,MAAO,SAAU+D,GAChB,IAAIzI,EAAW,IAAE/D,OAAO,CACvB0G,GAAIxG,KAAK0C,QACP1C,KAAK4D,QAAQC;AAEhBiB,aAAc9E,KAAK4P;AACnB5P,KAAKG,QAAQC,KAAM,YAAa0M,IAAKR,EAAQN,QAAS,aACpDzJ,OACApB,KAAM,cAAe;AAEvBmL,EACEpI,OACAf,WAAY,eACZhC,KAAM,gBAAiB,QACvB0C,SAAUA,IAGbP,YAAa,SAAU/C,EAAOgQ,GAC7BzL,aAAc9E,KAAK4P;AACnB5P,KAAK4P,MAAQ5P,KAAKgF,QAAO,WAExB,IAAIwL,EAAcD,EAAMvQ,KAAKG,QAC5B,IAAGI,GAASA,EAAMG,QAASM,QAAShB,KAAKG,QAAQC,KAAM;AAGlDoQ,EAAYvP,SACjBuP,EAAcxQ,KAAKG;AAGpBH,KAAK2P,OAAQa;AAEbxQ,KAAKyB,KAAMlB;AACXP,KAAKwM,WAAagE,IAChBxQ,KAAKoM,QAKTuD,OAAQ,SAAUc,GACXA,IACLA,EAAYzQ,KAAK0C,OAAS1C,KAAK0C,OAAOb,SAAW7B,KAAKG;AAGvDsQ,EACErQ,KAAM,YACLmC,OACApB,KAAM,cAAe,QACrBA,KAAM,gBAAiB,SACxBuP,MACAtQ,KAAM,qBACLkG,YAAa,oBAGjBkI,SAAU,SAAUjO,GACnB,IAAIoQ,EAAU3Q,KAAK0C,QAClB1C,KAAK0C,OAAOb,SAASb,QAAS,gBAAiBhB,KAAKG;AACrD,GAAKwQ,GAAWA,EAAQ1P,OAAS,CAChCjB,KAAK2P;AACL3P,KAAKsB,MAAOf,EAAOoQ,KAIrB3D,OAAQ,SAAUzM,GACjB,IAAIoQ,EAAU3Q,KAAK0C,QAClB1C,KAAK0C,OACHrB,SAAU,aACVA,SAAU,iBACVyL,IAAIhB,GACJlG;AAEH,GAAK+K,GAAWA,EAAQ1P,OAAS,CAChCjB,KAAKuI,MAAOoI,EAAQ9O;AAGpB7B,KAAKgF,QAAO,WACXhF,KAAKsB,MAAOf,EAAOoQ,QAKtBrO,KAAM,SAAU/B,GACfP,KAAKoO,MAAO,OAAQ,QAAS7N,IAG9B+N,SAAU,SAAU/N,GACnBP,KAAKoO,MAAO,OAAQ,OAAQ7N,IAG7BqQ,YAAa,WACZ,OAAO5Q,KAAK0C,SAAW1C,KAAK0C,OAAOmO,QAAS,iBAAkB/D,IAAIhB,GAAsB7K,QAGzF6P,WAAY,WACX,OAAO9Q,KAAK0C,SAAW1C,KAAK0C,OAAOwM,QAAS,iBAAkBpC,IAAIhB,GAAsB7K,QAGzFmN,MAAO,SAAU2C,EAAW/B,EAAQzO,GACnC,IAAI+B;AACCtC,KAAK0C,SAERJ,EADkB,UAAdyO,GAAuC,SAAdA,EACtB/Q,KAAK0C,OACK,UAAdqO,EAAwB,UAAY,WAAa,iBAClDjE,IAAIhB,GACJqB,IAAK,GAEAnN,KAAK0C,OACTqO,EAAY,OAAS,iBACtBjE,IAAIhB,GACJqB,GAAI;AAGF7K,GAASA,EAAKrB,QAAWjB,KAAK0C,SACnCJ,EAAOtC,KAAKwM,WAAWnL,SAAU,iBAAkByL,IAAIhB,GAAuBkD;AAG/EhP,KAAKsB,MAAOf,EAAO+B,IAGpB4L,SAAU,SAAU3N,GACnB,IAAIoB,EAAMqP,EAAMlG;AAEhB,IAAM9K,KAAK0C,OAAS,CACnB1C,KAAKsC,KAAM/B;AACX,OAED,GAAKP,KAAK8Q,aACT;AAED,GAAK9Q,KAAKmQ,aAAe,CACxBa,EAAOhR,KAAK0C,OAAO6H,SAASM;AAC5BC,EAAS9K,KAAKG,QAAQ2K;AACtB9K,KAAK0C,OAAOwM,QAAS,iBAAkBpC,IAAIhB,GAAsBhL,MAAK,WACrEa,EAAO,IAAG3B;AACV,OAAO2B,EAAK4I,SAASM,IAAMmG,EAAOlG,EAAS;AAG5C9K,KAAKsB,MAAOf,EAAOoB,QAEnB3B,KAAKsB,MAAOf,EAAOP,KAAKwM,WAAWnL,SAAU,iBAAkByL,IAAIhB,GAC/D9L,KAAK0C,OAAmB,OAAV,aAIpBsL,aAAc,SAAUzN,GACvB,IAAIoB,EAAMqP,EAAMlG;AAChB,IAAM9K,KAAK0C,OAAS,CACnB1C,KAAKsC,KAAM/B;AACX,OAED,GAAKP,KAAK4Q,cACT;AAED,GAAK5Q,KAAKmQ,aAAe,CACxBa,EAAOhR,KAAK0C,OAAO6H,SAASM;AAC5BC,EAAS9K,KAAKG,QAAQ2K;AACtB9K,KAAK0C,OAAOmO,QAAS,iBAAkB/D,IAAIhB,GAAsBhL,MAAK,WACrEa,EAAO,IAAG3B;AACV,OAAO2B,EAAK4I,SAASM,IAAMmG,EAAOlG,EAAS;AAG5C9K,KAAKsB,MAAOf,EAAOoB,QAEnB3B,KAAKsB,MAAOf,EAAOP,KAAKwM,WAAWnL,SAAU,iBAAkByL,IAAIhB,GAAsBlG,UAI3FuK,WAAY,WACX,OAAOnQ,KAAKG,QAAQ8Q,cAAgBjR,KAAKG,QAAQ8C,KAAM,iBAGxDN,OAAQ,SAAUpC,GAEjB,IAAId,EAAK,CAERkC,KAAM3B,KAAK0C,QAAU,IAAGnC,EAAMG,QAASM,QAAS;AAE3CvB,EAAGkC,KAAKoL,IAAK,YAAa9L,QAC/BjB,KAAKsD,YAAa/C,EAAO;AAE1BP,KAAKuD,SAAU,SAAUhD,EAAOd","file":"76-c-f075640429.js","sourcesContent":["/*\n * Copyright (C) 2011 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see .\n */\n\n/*\n * jQuery UI Input Menu Extension\n *\n * Copyright 2010, Kris Borchers\n * Dual licensed under the MIT or GPL Version 2 licenses.\n *\n * http://github.com/kborchers/jquery-ui-extensions\n */\nimport $ from 'jquery'\nimport 'jqueryui/menu'\n\nconst proto = $.ui.menu.prototype,\n originalRefresh = proto.refresh\n\n$.extend(proto, {\n refresh() {\n originalRefresh.call(this)\n const that = this\n const items = this.element.find('li.ui-menu-item')\n let inputGroupLabeled = false\n\n this.element.bind('click.menu', function(event) {\n if (!new RegExp(/^a$/i).test(event.target.tagName)) event.preventDefault()\n })\n\n let inputIDCount = 0\n this.element.find(\"input[type='checkbox'], input[type='radio']\").each(function() {\n const labelElement = $(this).closest('label')\n if (labelElement.length) {\n $(this).insertBefore(labelElement)\n\n if (!$(this).attr('id')) {\n $(this).attr('id', 'ui-input-' + inputIDCount++)\n }\n\n labelElement.attr('for', $(this).attr('id'))\n }\n })\n this.element.bind('menufocus', function(event) {\n const textInput = $(event.target)\n .find('a.ui-state-focus')\n .children(\"input[type='text']\")\n if (textInput.length) textInput[0].focus()\n })\n // INSTRUCTURE\n this.element\n .bind('popupopen', function(event) {\n const selected = $(event.target)\n .find('input[type=radio][checked]')\n .closest('.ui-menu-item')\n if (selected.length) {\n setTimeout(function() {\n that.focus(event, selected)\n }, 0)\n }\n })\n .bind('menublur', function(event) {\n const textInput = $(event.target).find(\"input[type='text']:focus\")\n if (textInput.length) textInput[0].blur()\n })\n\n items.children('a').each(function(index, item) {\n const current = $(item),\n parent = current.parent()\n\n if (current.children().is(\"input[type='checkbox'], input[type='radio']\")) {\n current.closest('ul').addClass('ui-menu-icons')\n\n if (current.children(\"input[type='checkbox']\").is(':checked')) {\n current.prepend('')\n parent.attr({\n role: 'menuitemcheckbox',\n 'aria-checked': 'true'\n })\n } else if (current.children(\"input[type='radio']\").is(':checked')) {\n current.prepend('')\n parent.attr({\n role: 'menuitemradio',\n 'aria-checked': 'true'\n })\n } else if (current.children(\"input[type='radio']\").length) {\n current.prepend('')\n parent.attr({\n role: 'menuitemradio',\n 'aria-checked': 'false'\n })\n } else {\n parent.attr({\n role: 'menuitemcheckbox',\n 'aria-checked': 'false'\n })\n }\n\n if (current.children().is(\"input[type='radio']\")) {\n parent.attr('radio-group', current.children(\"input[type='radio']\").attr('name'))\n }\n\n if (parent.prev().length && !parent.prev().children('a').length) {\n parent\n .prev()\n .addClass('ui-state-disabled')\n .html(\"\" + parent.prev().html() + '')\n .bind('click.menu', function(event) {\n return false\n })\n .after('

  • ')\n inputGroupLabeled = true\n } else if (\n parent.prev().length &&\n !parent\n .prev()\n .children('a')\n .children()\n .is(\"input[type='checkbox'], input[type='radio']\")\n ) {\n parent.before('

  • ')\n }\n\n if (\n inputGroupLabeled &&\n parent.next().length &&\n !parent\n .next()\n .children('a')\n .children()\n .is(\"input[type='checkbox'], input[type='radio']\")\n ) {\n parent.after('

  • ')\n inputGroupLabeled = false\n } else if (\n parent.next().length &&\n !parent\n .next()\n .children('a')\n .children()\n .is(\"input[type='checkbox'], input[type='radio']\")\n ) {\n parent.after('

  • ')\n }\n\n current.children(\"input[type='checkbox'], input[type='radio']\").hide()\n }\n })\n\n items.bind('keydown.menu', function(event) {\n if (event.keyCode === $.ui.keyCode.SPACE) {\n if (\n that.active\n .children('a')\n .children()\n .is(\"input[type='checkbox'], input[type='radio']\")\n ) {\n that.select(event)\n event.stopImmediatePropagation()\n }\n event.preventDefault()\n }\n })\n\n items\n .find(\"input[type='text']\")\n .bind('keydown', function(event) {\n event.stopPropagation()\n if (event.keyCode === $.ui.keyCode.UP) {\n that.element.trigger('focus')\n this.blur()\n that.focus(\n event,\n $(this)\n .closest('.ui-menu-item')\n .prev()\n )\n }\n if (event.keyCode === $.ui.keyCode.DOWN) {\n that.element.trigger('focus')\n this.blur()\n that.focus(\n event,\n $(this)\n .closest('.ui-menu-item')\n .next()\n )\n }\n })\n .bind('click', function(event) {\n event.stopPropagation()\n })\n },\n select(event) {\n // Save active reference before collapseAll triggers blur\n const ui = {\n // Selecting a menu item removes the active item causing multiple clicks to be missing an item\n item: this.active || $(event.target).closest('.ui-menu-item')\n }\n\n if (\n ui.item\n .children('a')\n .children()\n .is(\"input[type='checkbox']\")\n ) {\n if (ui.item.attr('aria-checked') === 'false') {\n ui.item.children('a').prepend('')\n ui.item.attr('aria-checked', 'true')\n ui.item\n .children('a')\n .children(\"input[type='checkbox']\")\n .prop('checked', 'checked')\n .trigger('change')\n } else if (ui.item.attr('aria-checked') === 'true') {\n ui.item\n .children('a')\n .children('span.ui-icon-check')\n .remove()\n ui.item.attr('aria-checked', 'false')\n ui.item\n .children('a')\n .children(\"input[type='checkbox']\")\n .removeAttr('checked')\n .trigger('change')\n }\n }\n\n if (\n ui.item\n .children('a')\n .children()\n .is(\"input[type='radio']\")\n ) {\n if (ui.item.attr('aria-checked') === 'false') {\n ui.item\n .children('a')\n .children('span.ui-icon-radio-off')\n .toggleClass('ui-icon-radio-on ui-icon-radio-off')\n ui.item.attr('aria-checked', 'true')\n ui.item\n .children('a')\n .children(\"input[type='radio']\")\n .prop('checked', 'checked')\n .trigger('change')\n ui.item.siblings('[radio-group=' + $(ui.item).attr('radio-group') + ']').each(function() {\n $(this).attr('aria-checked', 'false')\n $(this)\n .children('a')\n .children('span.ui-icon-radio-on')\n .toggleClass('ui-icon-radio-on ui-icon-radio-off')\n $(this)\n .children('a')\n .children(\"input[type='radio']\")\n .removeAttr('checked')\n })\n }\n }\n\n if (\n !ui.item\n .children('a')\n .children()\n .is(\"input[type='checkbox'], input[type='radio']\")\n )\n this.collapseAll()\n this._trigger('select', event, ui)\n }\n})\n","/*\n * jQuery UI Popup @VERSION\n *\n * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Popup\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n *\tjquery.ui.position.js\n */\n// INSTRUCTURE modified\nimport $ from 'jquery'\nimport 'jqueryui/core'\nimport 'jqueryui/widget'\nimport 'jqueryui/position'\n\nvar idIncrement = 0,\n\tsuppressExpandOnFocus = false;\n\n$.widget( \"ui.popup\", {\n\tversion: \"@VERSION\",\n\toptions: {\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\"\n\t\t},\n\t\tmanaged: false,\n\t\texpandOnFocus: false,\n\t\tshow: {\n\t\t\teffect: \"slideDown\",\n\t\t\t//duration: \"fast\"\n\t\t\tduration: 0\n\t\t},\n\t\thide: {\n\t\t\teffect: \"fadeOut\",\n\t\t\t//duration: \"fast\"\n\t\t\tduration: 0\n\t\t}\n\t},\n\t_create: function() {\n\t\tif ( !this.options.trigger ) {\n\t\t\tthis.options.trigger = this.element.prev();\n\t\t}\n\n\t\tif ( !this.element.attr( \"id\" ) ) {\n\t\t\tthis.element.attr( \"id\", \"ui-popup-\" + idIncrement++ );\n\t\t\tthis.generatedId = true;\n\t\t}\n\n\t\tif ( !this.element.attr( \"role\" ) ) {\n\t\t\tif ( !this.options.managed ) {\n\t\t\t\tthis.element.attr( \"role\", \"dialog\" );\n\t\t\t\tthis.generatedRole = true;\n\t\t\t}\n\t\t}\n\n\t\tthis.options.trigger\n\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t.attr( \"aria-owns\", this.element.attr( \"id\" ) );\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-popup\" );\n\t\tthis._beforeClose();\n\t\tthis.element.hide();\n\n // INSTRUCTURE moved from switch below for use in click handler\n\t\tvar onMouseDown = function( event ) {\n\t\t\tvar noFocus = false;\n\t\t\t/* TODO: Determine in which cases focus should stay on the trigger after the popup opens\n\t\t\t(should apply for any trigger that has other interaction besides opening the popup, e.g. a text field) */\n\t\t\tif ( $( event.target ).is( \"input\" ) ) {\n\t\t\t\tnoFocus = true;\n\t\t\t}\n\t\t\tif (this.isOpen) {\n\t\t\t\tsuppressExpandOnFocus = true;\n\t\t\t\tthis.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.open( event );\n\t\t\tclearTimeout( this.closeTimer );\n\t\t\tthis._delay( function() {\n\t\t\t\tif ( !noFocus ) {\n\t\t\t\t\tthis.focusPopup();\n\t\t\t\t}\n\t\t\t}, 1 );\n\t\t};\n\t\tthis._on(this.options.trigger, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t\tcase $.ui.keyCode.TAB:\n\t\t\t\t\t\t// Waiting for close() will make popup hide too late, which breaks tab key behavior\n\t\t\t\t\t\tthis.element.hide();\n\t\t\t\t\t\tthis.close( event );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\t\t\t\tif ( this.isOpen ) {\n\t\t\t\t\t\t\tthis.close( event );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t// INSTRUCTURE changed SPACE to use DOWN/UP handler\n\t\t\t\t\tcase $.ui.keyCode.SPACE:\n\t\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\t\t// prevent scrolling\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tclearTimeout( this.closeTimer );\n\t\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\t\tthis.open( event );\n\t\t\t\t\t\t\tthis.focusPopup( event );\n\t\t\t\t\t\t}, 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n // INSTRUCTURE added\n\t\t\tmouseup: function( event ) {\n\t\t\t\tthis.mouseClickTimer = window.setTimeout(function() {\n\t\t\t\t\tdelete this.mouseClickTimer;\n\t\t\t\t}.bind(this), 0);\n\t\t\t},\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\t\t\t\t// INSTRUCTURE added handler for keyboard-triggered clicks\n\t\t\t\tif ( !this.mouseClickTimer ) {\n\t\t\t\t\tonMouseDown.call( this, event );\n\t\t\t\t}\n\t\t\t},\n\t\t\tmousedown: onMouseDown\n\t\t});\n\n\t\tif ( this.options.expandOnFocus ) {\n\t\t\tthis._on( this.options.trigger, {\n\t\t\t\tfocus : function( event ) {\n\t\t\t\t\tif ( !suppressExpandOnFocus ) {\n\t\t\t\t\t\tthis._delay( function() {\n\t\t\t\t\t\t\tif ( !this.isOpen ) {\n\t\t\t\t\t\t\t\tthis.open( event );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, 1);\n\t\t\t\t\t}\n\t\t\t\t\tthis._delay( function() {\n\t\t\t\t\t\tsuppressExpandOnFocus = false;\n\t\t\t\t\t}, 100);\n\t\t\t\t},\n\t\t\t\tblur: function( event ) {\n\t\t\t\t\tsuppressExpandOnFocus = false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif ( !this.options.managed ) {\n\t\t\t//default use case, wrap tab order in popup\n\t\t\tthis._on({ keydown : function( event ) {\n\t\t\t\t\tif ( event.keyCode !== $.ui.keyCode.TAB ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tvar tabbables = $( \":tabbable\", this.element ),\n\t\t\t\t\t\tfirst = tabbables.first(),\n\t\t\t\t\t\tlast = tabbables.last();\n\t\t\t\t\tif ( event.target === last[ 0 ] && !event.shiftKey ) {\n\t\t\t\t\t\tfirst.focus( 1 );\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t} else if ( event.target === first[ 0 ] && event.shiftKey ) {\n\t\t\t\t\t\tlast.focus( 1 );\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._on({\n\t\t\tfocusout: function( event ) {\n\t\t\t\t// use a timer to allow click to clear it and letting that\n\t\t\t\t// handle the closing instead of opening again\n\t\t\t\tthis.closeTimer = this._delay( function() {\n\t\t\t\t\tthis.close( event );\n\t\t\t\t}, 150);\n\t\t\t},\n\t\t\tfocusin: function( event ) {\n\t\t\t\tclearTimeout( this.closeTimer );\n\t\t\t},\n\t\t\tmouseup: function( event ) {\n\t\t\t\tclearTimeout( this.closeTimer );\n\t\t\t}\n\t\t});\n\n\t\tthis._on({\n\t\t\tkeyup: function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE && this.element.is( \":visible\" ) ) {\n\t\t\t\t\tthis.close( event );\n\t\t\t\t\tthis.focusTrigger();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( this.isOpen && !$( event.target ).closest( this.element.add( this.options.trigger ) ).length ) {\n\t\t\t\t\tthis.close( event );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.show()\n\t\t\t.removeClass( \"ui-popup\" )\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t.unbind( \"keypress.ui-popup\");\n\n\t\tthis.options.trigger\n\t\t\t.removeAttr( \"aria-haspopup\" )\n\t\t\t.removeAttr( \"aria-owns\" );\n\n\t\tif ( this.generatedId ) {\n\t\t\tthis.element.removeAttr( \"id\" );\n\t\t}\n\t\tif ( this.generatedRole ) {\n\t\t\tthis.element.removeAttr( \"role\" );\n\t\t}\n\t},\n\n\topen: function( event ) {\n\t\tvar position = $.extend( {}, {\n\t\t\tof: this.options.trigger\n\t\t}, this.options.position );\n\n\t\tthis._show( this.element, this.options.show );\n\t\tthis.element\n\t\t\t.attr( \"aria-hidden\", \"false\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\n\t\t// take trigger out of tab order to allow shift-tab to skip trigger\n\t\tthis.options.trigger.attr( \"tabindex\", -1 );\n\t\tthis.isOpen = true;\n\t\tthis._trigger( \"open\", event );\n\t},\n\n\tfocusPopup: function( event ) {\n\t\tif ( !this.options.managed ) {\n\t\t\t// set focus to the first tabbable element in the popup container\n\t\t\t// if there are no tabbable elements, set focus on the popup itself\n\t\t\tvar tabbables = this.element.find( \":tabbable\" );\n\t\t\tthis.removeTabIndex = false;\n\t\t\tif ( !tabbables.length ) {\n\t\t\t\tif ( !this.element.is(\":tabbable\") ) {\n\t\t\t\t\tthis.element.attr(\"tabindex\", \"0\");\n\t\t\t\t\tthis.removeTabIndex = true;\n\t\t\t\t}\n\t\t\t\ttabbables = tabbables.add( this.element[ 0 ] );\n\t\t\t}\n\t\t\ttabbables.first().focus( 1 );\n\t\t}\n\t\tthis._trigger( \"focusPopup\", event );\n\t},\n\n\tfocusTrigger: function( event ) {\n\t\tsuppressExpandOnFocus = true;\n\t\tthis.options.trigger.focus();\n\t\tthis._trigger( \"focusTrigger\", event );\n\t},\n\n\tclose: function( event ) {\n\t\tthis._beforeClose();\n\t\tthis._hide( this.element, this.options.hide );\n\n\t\tthis.options.trigger.attr( \"tabindex\" , 0 );\n\t\tif ( this.removeTabIndex ) {\n\t\t\tthis.element.removeAttr( \"tabindex\" );\n\t\t}\n\t\tthis.isOpen = false;\n\t\tthis._trigger( \"close\", event );\n\t},\n\n\t_beforeClose: function() {\n\t\tthis.element\n\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t.attr( \"aria-expanded\", \"false\" );\n\t}\n});\n","//\n// Copyright (C) 2011 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see .\n\nimport $ from 'jquery'\nimport './monkey-patches'\nimport 'jqueryui/button'\nimport './popup'\n\n/*\n * PLEASE READ BEFORE MODIFYING THIS FILE:\n * This provides the 'admin cog' menus amongst other things used throughout\n * Canvas. It has been extensively tested for accessibility. Before making\n * any changes to this file, please check with someone about the accessibility\n * repercussions of what you intend to do.\n */\n\nexport default class KyleMenu {\n constructor(trigger, options) {\n ;['onOpen', 'select', 'onClose', 'close', 'keepButtonActive'].forEach(\n m => (this[m] = this[m].bind(this))\n )\n this.$trigger = $(trigger).data('kyleMenu', this)\n this.$ariaMenuWrapper = this.$trigger.parent()\n this.opts = $.extend(true, {}, KyleMenu.defaults, options)\n\n if (!this.opts.noButton) {\n if (this.opts.buttonOpts.addDropArrow) {\n this.$trigger.append('')\n }\n this.$trigger.button(this.opts.buttonOpts)\n\n // this is to undo the removal of the 'ui-state-active' class that jquery.ui.button\n // does by default on mouse out if the menu is still open\n this.$trigger.bind('mouseleave.button', this.keepButtonActive)\n }\n\n this.$menu = this.$trigger\n .next()\n .menu(this.opts.menuOpts)\n .popup(this.opts.popupOpts)\n .addClass('ui-kyle-menu use-css-transitions-for-show-hide')\n\n // passing an appendMenuTo option when initializing a kylemenu helps get around popup being hidden\n // by overflow:scroll on its parents\n // but by doing so we need to make sure that click events still get propagated up in case we\n // were delegating events to a parent container\n if (this.opts.appendMenuTo) {\n // to keep tab order when appended out of place\n this.$menu.on({\n keydown: e => {\n if (e.keyCode === $.ui.keyCode.TAB) {\n let tabKey\n if (e.shiftKey) {\n tabKey = {\n which: $.ui.keyCode.TAB,\n shiftKey: true\n }\n } else {\n tabKey = {\n which: $.ui.keyCode.TAB\n }\n }\n\n const pressTab = $.Event('keydown', tabKey)\n this.$trigger.focus().trigger(pressTab)\n }\n }\n })\n\n const popupInstance = this.$menu.data('popup')\n const _open = popupInstance.open\n const self = this\n // monkey patch just this plugin instance not $.ui.popup.prototype.open\n popupInstance.open = function() {\n self.$menu.appendTo(self.opts.appendMenuTo)\n return _open.apply(this, arguments)\n }\n\n this.$placeholder = $('').insertAfter(this.$menu)\n this.$menu.bind('click', (...args) => this.$placeholder.trigger(...args))\n }\n\n // passing a notifyMenuActiveOn option when initializing a kylemenu helps\n // get around issue of page-specific parent elements needing to know when the menu\n // is active and removed. The value of the option is a CSS selector for a parent\n // element of the trigger.\n if (this.opts.notifyMenuActiveOnParent) {\n this.$notifyParent = this.$trigger.closest(this.opts.notifyMenuActiveOnParent)\n }\n\n this.$menu.on({\n menuselect: this.select,\n popupopen: this.onOpen,\n popupclose: this.onClose\n })\n }\n\n onOpen(event) {\n this.$ariaMenuWrapper.attr('role', 'application')\n this.adjustCarat(event)\n this.$menu.addClass('ui-state-open')\n if (this.opts.notifyMenuActiveOnParent) this.$notifyParent.addClass('menu_active')\n }\n\n open() {\n this.$menu.popup('open')\n }\n\n select(e, ui) {\n let $target\n if ((e.originalEvent && e.originalEvent.type) !== 'click' && ($target = $(ui.item).find('a'))) {\n e.preventDefault()\n const el = $target[0]\n const event = document.createEvent('MouseEvent')\n event.initEvent('click', true, true)\n el.dispatchEvent(event)\n }\n this.close()\n }\n\n onClose() {\n if (this.opts.appendMenuTo) this.$menu.insertBefore(this.$placeholder)\n this.$trigger.removeClass('ui-state-active')\n this.$ariaMenuWrapper.removeAttr('role')\n this.$menu.removeClass('ui-state-open')\n if (this.opts.notifyMenuActiveOnParent) this.$notifyParent.removeClass('menu_active')\n\n // passing a returnFocusTo option when initializing a kylemenu provides an\n // interface to ensure focus is not lost and returned to the body. This was\n // introduced specifically to address the complexity of dynamically-\n // generated menus. This rule will not be honored if the returnFocusTo\n // element becomes disabled.\n if (this.opts.returnFocusTo && !this.opts.returnFocusTo.prop('disabled')) {\n // Wait for one frame to see if anything else has claimed focus.\n requestAnimationFrame(() => {\n if (document.body === document.activeElement) {\n // If focus still remains on the document body, return focus to the originating element.\n this.opts.returnFocusTo.focus()\n }\n })\n }\n }\n\n close() {\n this.$menu.hasClass('ui-state-open') && this.$menu.popup('close').removeClass('ui-state-open')\n }\n\n keepButtonActive() {\n if (this.$menu.is('.ui-state-open') && this.$trigger.is('.btn, .ui-button')) {\n this.$trigger.addClass('ui-state-active')\n }\n }\n\n // handle sticking the carat right below where you clicked on the button\n adjustCarat(event) {\n if (this.$carat) this.$carat.remove()\n if (this.$trigger.is('.btn, .ui-button')) this.$trigger.addClass('ui-state-active')\n\n const triggerWidth = this.$trigger.outerWidth()\n const triggerOffsetLeft = this.$trigger.offset().left\n\n // the menu may have flipped above the trigger\n const mbox = this.$menu[0].getBoundingClientRect()\n const tbox = this.$trigger[0].getBoundingClientRect()\n const caratIsBelow = mbox.top + mbox.height < tbox.top\n const caratY = mbox.height - 2\n\n // if it is a mouse event, it will have a 'pageX' otherwise use the middle of the trigger\n const pointToDropDownFrom = event.pageX || triggerOffsetLeft + triggerWidth / 2\n const differenceInOffset = triggerOffsetLeft - this.$menu.offset().left\n const actualOffset = pointToDropDownFrom - this.$trigger.offset().left\n const caratOffset = Math.min(Math.max(6, actualOffset), triggerWidth - 6) + differenceInOffset\n this.$carat = $('').css('left', caratOffset)\n if (caratIsBelow) {\n this.$carat.css('top', caratY).css('transform', 'rotateX(180deg)')\n }\n this.$carat.prependTo(this.$menu)\n }\n\n static defaults = {\n popupOpts: {\n position: {\n my: 'center top',\n at: 'center bottom',\n offset: '0 10px',\n within: '#main',\n collision: 'flipfit'\n }\n },\n buttonOpts: {\n addDropArrow: true\n }\n }\n}\n\n// expose jQuery plugin\n$.fn.kyleMenu = function(options) {\n return this.each(function() {\n if (!$(this).data().kyleMenu) new KyleMenu(this, options)\n })\n}\n","/*!\n * jQuery UI Menu @VERSION\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Menu\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n *\tjquery.ui.position.js\n */\nimport $ from 'jquery'\nimport './core'\nimport './widget'\n\nfunction thisOrParentIsHidden() {\n return [].some.call($(this).parents().andSelf(), function(el) {\n return $.css(el, 'display') == 'none';\n });\n}\n\nvar mouseHandled = false;\n\n$.widget( \"ui.menu\", {\n\tversion: \"@VERSION\",\n\tdefaultElement: \"
      \",\n\tdelay: 300,\n\toptions: {\n\t\ticons: {\n\t\t\tsubmenu: \"ui-icon-carat-1-e\"\n\t\t},\n\t\tmenus: \"ul\",\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"right top\"\n\t\t},\n\t\trole: \"menu\",\n\n\t\t// callbacks\n\t\tblur: null,\n\t\tfocus: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tthis.activeMenu = this.element;\n\t\tthis.element\n\t\t\t.uniqueId()\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-menu-icons\", !!this.element.find( \".ui-icon\" ).length )\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t// need to catch all clicks on disabled menu\n\t\t\t// not possible through _on\n\t\t\t.bind( \"click\" + this.eventNamespace, $.proxy(function( event ) {\n\t\t\t\tif ( this.options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}, this ));\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.element\n\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t}\n\n\t\tthis._on({\n\t\t\t// Prevent focus from sticking to links inside menu after clicking\n\t\t\t// them (focus should always stay on UL during navigation).\n\t\t\t\"mousedown .ui-menu-item > a\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-state-disabled > a\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-menu-item:has(a)\": function( event ) {\n\t\t\t\tvar target = $( event.target );\n\t\t\t\tif ( !mouseHandled && target.closest( \".ui-menu-item\" ).not( \".ui-state-disabled\" ).length ) {\n\t\t\t\t\tmouseHandled = true;\n\n\t\t\t\t\tthis.select( event );\n\t\t\t\t\t// Open submenu on click\n\t\t\t\t\tif ( this.element.has( \".ui-menu\" ).length ) {\n\t\t\t\t\t\tthis.expand( event );\n\t\t\t\t\t} else if ( !this.element.is(\":focus\") ) {\n\t\t\t\t\t\t// Redirect focus to the menu\n\t\t\t\t\t\tthis.element.focus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"mouseenter .ui-menu-item\": function( event ) {\n\t\t\t\tvar target = $( event.currentTarget );\n\t\t\t\t// Remove ui-state-active class from siblings of the newly focused menu item\n\t\t\t\t// to avoid a jump caused by adjacent elements both having a class with a border\n\t\t\t\ttarget.siblings().children( \".ui-state-active\" ).removeClass( \"ui-state-active\" );\n\t\t\t\tthis.focus( event, target );\n\t\t\t},\n\t\t\tmouseleave: \"collapseAll\",\n\t\t\t\"mouseleave .ui-menu\": \"collapseAll\",\n\t\t\tfocus: function( event ) {\n\t\t\t\t// If there's already an active item, keep it active\n\t\t\t\t// If not, activate the first item\n\t\t\t\tvar item = this.active || this.element.children( \".ui-menu-item\" ).not(thisOrParentIsHidden).eq( 0 );\n\n\t\t\t\tif ( item.length ) {\n this.focus(event, item);\n }\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tif ( !$.contains( this.element[0], this.document[0].activeElement ) ) {\n\t\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tkeydown: \"_keydown\"\n\t\t});\n\n\t\tthis.refresh();\n\n\t\t// Clicks outside of a menu collapse any open menus\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu\" ).length ) {\n\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t}\n\n\t\t\t\t// Reset the mouseHandled flag\n\t\t\t\tmouseHandled = false;\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\t// Destroy (sub)menus\n\t\tthis.element\n\t\t\t.removeAttr( \"aria-activedescendant\" )\n\t\t\t.find( \".ui-menu\" ).andSelf()\n\t\t\t\t.removeClass( \"ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.show();\n\n\t\t// Destroy menu items\n\t\tthis.element.find( \".ui-menu-item\" )\n\t\t\t.removeClass( \"ui-menu-item\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.children( \"a\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.removeClass( \"ui-corner-all ui-state-hover\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"aria-haspopup\" )\n\t\t\t\t.children().each( function() {\n\t\t\t\t\tvar elem = $( this );\n\t\t\t\t\tif ( elem.data( \"ui-menu-submenu-carat\" ) ) {\n\t\t\t\t\t\telem.remove();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t// Destroy menu dividers\n\t\tthis.element.find( \".ui-menu-divider\" ).removeClass( \"ui-menu-divider ui-widget-content\" );\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar match, prev, character, skip, regex,\n\t\t\tpreventDefault = true;\n\n\t\tfunction escape( value ) {\n\t\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\tthis.previousPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\tthis.nextPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tthis._move( \"first\", \"first\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tthis._move( \"last\", \"last\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\t\tthis.previous( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tthis.next( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tif ( !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t}\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ENTER:\n\t\tcase $.ui.keyCode.SPACE:\n\t\t\tthis._activate( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpreventDefault = false;\n\t\t\tprev = this.previousFilter || \"\";\n\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\tskip = false;\n\n\t\t\tclearTimeout( this.filterTimer );\n\n\t\t\tif ( character === prev ) {\n\t\t\t\tskip = true;\n\t\t\t} else {\n\t\t\t\tcharacter = prev + character;\n\t\t\t}\n\n\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\tmatch = this.activeMenu.children( \".ui-menu-item\" ).filter(function() {\n\t\t\t\treturn regex.test( $( this ).children(\"a\").not(thisOrParentIsHidden).text() );\n\t\t\t});\n\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\n\t\t\t\tthis.active.nextAll( \".ui-menu-item\" ) :\n\t\t\t\tmatch;\n\n\t\t\t// If no matches on the current filter, reset to the last character pressed\n\t\t\t// to move down the menu to the first item that starts with that character\n\t\t\tif ( !match.length ) {\n\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\t\tmatch = this.activeMenu.children( \".ui-menu-item\" ).filter(function() {\n\t\t\t\t\treturn regex.test( $( this ).children(\"a\").not(thisOrParentIsHidden).text() );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( match.length ) {\n\t\t\t\tthis.focus( event, match );\n\t\t\t\tif ( match.length > 1 ) {\n\t\t\t\t\tthis.previousFilter = character;\n\t\t\t\t\tthis.filterTimer = this._delay(function() {\n\t\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t\t}, 1000 );\n\t\t\t\t} else {\n\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdelete this.previousFilter;\n\t\t\t}\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_activate: function( event ) {\n\t\tif ( !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\tif ( this.active.children( \"a[aria-haspopup='true']\" ).length ) {\n\t\t\t\tthis.expand( event );\n\t\t\t} else {\n\t\t\t\tthis.select( event );\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\t// Initialize nested menus\n\t\tvar menus,\n\t\t\ticon = this.options.icons.submenu,\n\t\t\tsubmenus = this.element.find( this.options.menus + \":not(.ui-menu)\" )\n\t\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t\t.hide()\n\t\t\t\t.attr({\n\t\t\t\t\trole: this.options.role,\n\t\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t\t});\n\n\t\t// Don't refresh list items that are already adapted\n\t\tmenus = submenus.add( this.element );\n\n\t\tmenus.children( \":not(.ui-menu-item):has(a)\" )\n\t\t\t.addClass( \"ui-menu-item\" )\n\t\t\t.attr( \"role\", \"presentation\" )\n\t\t\t.children( \"a\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.addClass( \"ui-corner-all\" )\n\t\t\t\t.attr({\n\t\t\t\t\ttabIndex: -1,\n\t\t\t\t\trole: this._itemRole()\n\t\t\t\t});\n\n\t\t// Initialize unlinked menu-items containing spaces and/or dashes only as dividers\n\t\tmenus.children( \":not(.ui-menu-item)\" ).each(function() {\n\t\t\tvar item = $( this );\n\t\t\t// hyphen, em dash, en dash\n\t\t\tif ( !/[^\\-—–\\s]/.test( item.text() ) ) {\n\t\t\t\titem.addClass( \"ui-widget-content ui-menu-divider\" );\n\t\t\t}\n\t\t});\n\n\t\t// Add aria-disabled attribute to any disabled menu item\n\t\tmenus.children( \".ui-state-disabled\" ).attr( \"aria-disabled\", \"true\" );\n\n\t\tsubmenus.each(function() {\n\t\t\tvar menu = $( this ),\n\t\t\t\titem = menu.prev( \"a\" ),\n\t\t\t\tsubmenuCarat = $( \"\" )\n\t\t\t\t\t.addClass( \"ui-menu-icon ui-icon \" + icon )\n\t\t\t\t\t.data( \"ui-menu-submenu-carat\", true );\n\n\t\t\titem\n\t\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t\t.prepend( submenuCarat );\n\t\t\tmenu.attr( \"aria-labelledby\", item.attr( \"id\" ) );\n\t\t});\n\t},\n\n\t_itemRole: function() {\n\t\treturn {\n\t\t\tmenu: \"menuitem\",\n\t\t\tlistbox: \"option\"\n\t\t}[ this.options.role ];\n\t},\n\n\tfocus: function( event, item ) {\n\t\tvar nested, focused;\n\t\tthis.blur( event, event && event.type === \"focus\" );\n\n\t\tthis._scrollIntoView( item );\n\n\t\tthis.active = item.first();\n\t\t// Instructure: prevent the focusing of invisible items.\n\t\tfocused = this.active.children( \"a:visible\" ).addClass( \"ui-state-focus\" );\n\t\t// Only update aria-activedescendant if there's a role\n\t\t// otherwise we assume focus is managed elsewhere\n\t\tif ( this.options.role ) {\n\t\t\tthis.element.attr( \"aria-activedescendant\", focused.attr( \"id\" ) );\n\t\t}\n\n\t\t// Highlight active parent menu item, if any\n\t\tthis.active\n\t\t\t.parent()\n\t\t\t.closest( \".ui-menu-item\" )\n\t\t\t.children( \"a:first\" )\n\t\t\t.addClass( \"ui-state-active\" );\n\n\t\tif ( event && event.type === \"keydown\" ) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.timer = this._delay(function() {\n\t\t\t\tthis._close();\n\t\t\t}, this.delay );\n\t\t}\n\n\t\tnested = item.children( \".ui-menu\" );\n\t\tif ( nested.length && ( /^mouse/.test( event.type ) ) ) {\n\t\t\tthis._startOpening(nested);\n\t\t}\n\t\tthis.activeMenu = item.parent();\n\n\t\tthis._trigger( \"focus\", event, { item: item } );\n\t},\n\n\t_scrollIntoView: function( item ) {\n\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n\t\tif ( this._hasScroll() ) {\n\t\t\tborderTop = parseFloat( $.css( this.activeMenu[0], \"borderTopWidth\" ) ) || 0;\n\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[0], \"paddingTop\" ) ) || 0;\n\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n\t\t\tscroll = this.activeMenu.scrollTop();\n\t\t\telementHeight = this.activeMenu.height();\n\t\t\titemHeight = item.height();\n\n\t\t\tif ( offset < 0 ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\n\t\t\t} else if ( offset + itemHeight > elementHeight ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\n\t\t\t}\n\t\t}\n\t},\n\n\tblur: function( event, fromFocus ) {\n\t\tif ( !fromFocus ) {\n\t\t\tclearTimeout( this.timer );\n\t\t}\n\n\t\tif ( !this.active ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active.children( \"a\" ).removeClass( \"ui-state-focus\" );\n\t\tthis.active = null;\n\n\t\tthis._trigger( \"blur\", event, { item: this.active } );\n\t},\n\n\t_startOpening: function( submenu ) {\n\t\tclearTimeout( this.timer );\n\n\t\t// Don't open if already open fixes a Firefox bug that caused a .5 pixel\n\t\t// shift in the submenu position when mousing over the carat icon\n\t\tif ( submenu.attr( \"aria-hidden\" ) !== \"true\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._close();\n\t\t\tthis._open( submenu );\n\t\t}, this.delay );\n\t},\n\n\t_open: function( submenu ) {\n\t\tvar position = $.extend({\n\t\t\tof: this.active\n\t\t}, this.options.position );\n\n\t\tclearTimeout( this.timer );\n\t\tthis.element.find( \".ui-menu\" ).not( submenu.parents( \".ui-menu\" ) )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" );\n\n\t\tsubmenu\n\t\t\t.show()\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\t},\n\n\tcollapseAll: function( event, all ) {\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\t// If we were passed an event, look for the submenu that contains the event\n\t\t\tvar currentMenu = all ? this.element :\n\t\t\t\t$( event && event.target ).closest( this.element.find( \".ui-menu\" ) );\n\n\t\t\t// If we found no valid submenu ancestor, use the main menu to close all sub menus anyway\n\t\t\tif ( !currentMenu.length ) {\n\t\t\t\tcurrentMenu = this.element;\n\t\t\t}\n\n\t\t\tthis._close( currentMenu );\n\n\t\t\tthis.blur( event );\n\t\t\tthis.activeMenu = currentMenu;\n\t\t}, this.delay );\n\t},\n\n\t// With no arguments, closes the currently active menu - if nothing is active\n\t// it closes all menus. If passed an argument, it will search for menus BELOW\n\t_close: function( startMenu ) {\n\t\tif ( !startMenu ) {\n\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\n\t\t}\n\n\t\tstartMenu\n\t\t\t.find( \".ui-menu\" )\n\t\t\t\t.hide()\n\t\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t\t.attr( \"aria-expanded\", \"false\" )\n\t\t\t.end()\n\t\t\t.find( \"a.ui-state-active\" )\n\t\t\t\t.removeClass( \"ui-state-active\" );\n\t},\n\n\tcollapse: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active.parent().closest( \".ui-menu-item\", this.element );\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._close();\n\t\t\tthis.focus( event, newItem );\n\t\t}\n\t},\n\n\texpand: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active\n\t\t\t\t.children( \".ui-menu \" )\n\t\t\t\t.children( \".ui-menu-item\" )\n\t\t\t\t.not(thisOrParentIsHidden)\n\t\t\t\t.first();\n\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._open( newItem.parent() );\n\n\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n\t\t\tthis._delay(function() {\n\t\t\t\tthis.focus( event, newItem );\n\t\t\t});\n\t\t}\n\t},\n\n\tnext: function( event ) {\n\t\tthis._move( \"next\", \"first\", event );\n\t},\n\n\tprevious: function( event ) {\n\t\tthis._move( \"prev\", \"last\", event );\n\t},\n\n\tisFirstItem: function() {\n\t\treturn this.active && !this.active.prevAll( \".ui-menu-item\" ).not(thisOrParentIsHidden).length;\n\t},\n\n\tisLastItem: function() {\n\t\treturn this.active && !this.active.nextAll( \".ui-menu-item\" ).not(thisOrParentIsHidden).length;\n\t},\n\n\t_move: function( direction, filter, event ) {\n\t\tvar next;\n\t\tif ( this.active ) {\n\t\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.not(thisOrParentIsHidden)\n\t\t\t\t\t.eq( -1 );\n\t\t\t} else {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction + \"All\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.not(thisOrParentIsHidden)\n\t\t\t\t\t.eq( 0 );\n\t\t\t}\n\t\t}\n\t\tif ( !next || !next.length || !this.active ) {\n\t\t\tnext = this.activeMenu.children( \".ui-menu-item\" ).not(thisOrParentIsHidden)[ filter ]();\n\t\t}\n\n\t\tthis.focus( event, next );\n\t},\n\n\tnextPage: function( event ) {\n\t\tvar item, base, height;\n\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isLastItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.nextAll( \".ui-menu-item\" ).not(thisOrParentIsHidden).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base - height < 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.children( \".ui-menu-item\" ).not(thisOrParentIsHidden)\n\t\t\t\t[ !this.active ? \"first\" : \"last\" ]() );\n\t\t}\n\t},\n\n\tpreviousPage: function( event ) {\n\t\tvar item, base, height;\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isFirstItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.prevAll( \".ui-menu-item\" ).not(thisOrParentIsHidden).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base + height > 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.children( \".ui-menu-item\" ).not(thisOrParentIsHidden).first() );\n\t\t}\n\t},\n\n\t_hasScroll: function() {\n\t\treturn this.element.outerHeight() < this.element.prop( \"scrollHeight\" );\n\t},\n\n\tselect: function( event ) {\n\t\t// Save active reference before collapseAll triggers blur\n\t\tvar ui = {\n\t\t\t// Selecting a menu item removes the active item causing multiple clicks to be missing an item\n\t\t\titem: this.active || $( event.target ).closest( \".ui-menu-item\" )\n\t\t};\n\t\tif ( !ui.item.has( \".ui-menu\" ).length ) {\n\t\t\tthis.collapseAll( event, true );\n\t\t}\n\t\tthis._trigger( \"select\", event, ui );\n\t}\n});\n\n\n"],"sourceRoot":""}