{"version":3,"sources":["webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/utils.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/breadcrumb/breadcrumb_item.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/breadcrumb/breadcrumb.js"],"names":["isItem","item","Boolean","_item$text","text","length","Array","isArray","items","itemValidator","isGroup","group","every","itemsValidator","hasOnlyListItemsVue2","defaultSlot","nodes","tags","filter","vNode","tag","_vNode$componentOptio","componentOptions","includes","isValidSlotTagVue2","hasOnlyListItemsVue3","fragment","find","node","children","trim","_vNode$type","type","name","isValidSlotTagVue3","hasOnlyListItems","version","startsWith","DISCLOSURE_DROPDOWN_ITEM_NAME","DISCLOSURE_DROPDOWN_GROUP_NAME","DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS","top","bottom","DROPDOWN_SELECTOR","ITEM_SELECTOR","__vue_script__","events","GL_DROPDOWN_SHOWN","GL_DROPDOWN_HIDDEN","GL_DROPDOWN_BEFORE_CLOSE","GL_DROPDOWN_FOCUS_CONTENT","components","GlBaseDropdown","GlDisclosureDropdownItem","GlDisclosureDropdownGroup","props","required","default","validator","toggleText","String","textSrOnly","category","primary","value","variant","size","icon","disabled","loading","toggleId","toggleClass","Object","noCaret","placement","keys","toggleAriaLabelledBy","listAriaLabelledBy","block","dropdownOffset","Number","undefined","fluidWidth","autoClose","positioningStrategy","strategy","startOpened","data","disclosureId","nextFocusedItemIndex","computed","_this$items","this","$scopedSlots","$slots","toggle","open","methods","$refs","baseDropdown","close","$emit","event","code","elements","getFocusableListItemElements","stop","focusItem","focusNextItem","handleAutoClose","_this$$refs$content","content","querySelectorAll","from","offset","target","currentIndex","indexOf","nextIndex","index","_elements$index","focus","closeAndFocus","action","window","requestAnimationFrame","e","closest","$el","uniqueItemId","GL_DROPDOWN_CONTENTS_CLASS","__vue_component__","render","_vm","_h","$createElement","_c","_self","ref","staticClass","attrs","on","_d","$options","onShow","onHide","onBeforeClose","onKeydown","scopedSlots","_u","key","fn","_t","proxy","_v","disclosureTag","class","_l","handleAction","groupItem","_e","staticRenderFns","ITEM_CLASS","BLink","_this$item","_this$item2","href","to","isLink","is","extraAttrs","listeners","click","_item$action","call","_this$item3","_this$item3$extraAttr","_this$item4","_this$item4$extraAttr","_this$item$wrapperCla","_this$item5","wrapperClass","keydown","isCustomContent","MouseEvent","bubbles","cancelable","_this$$refs$item","dispatchEvent","_g","listIndex","wrapperListeners","itemComponent","_b","componentIndex","_s","BORDER_CLASSES","bordered","borderPosition","_this$group","showHeader","nameId","borderClass","groupLabeledBy","inheritAttrs","ariaCurrent","GlBreadcrumbItem","GlAvatar","GlDisclosureDropdown","directives","GlTooltip","ariaLabel","showMoreLabel","autoResize","fittingItems","overflowingItems","totalBreadcrumbsWidth","widthPerItem","resizeDone","opacity","watch","handler","deep","newValue","enableAutoResize","disableAutoResize","debounceMakeBreadcrumbsFit","makeBreadcrumbsFit","resetItems","$nextTick","breadcrumbs","forEach","b","width","clientWidth","containerWidth","startSlicingAt","stopSlicingAt","widthNeeded","push","splice","isLastItem","resizeObserver","ResizeObserver","observe","measureAndMakeBreadcrumbsFit","unobserve","style","$attrs","$listeners","refInFor","getAriaCurrentAttr","avatarPath"],"mappings":"0FAAA,8MAKA,MAIMA,EAASC,GAAQC,QAAQD,IAJTA,KACpB,IAAIE,EACJ,OAAQF,SAAyE,QAA5BE,EAAaF,EAAKG,YAAiC,IAAfD,OAA9C,EAA+EA,EAAWE,QAAU,IAAMC,MAAMC,QAAQN,aAAmC,EAASA,EAAKO,QAE9KC,CAAcR,GAChDS,EAAUC,GAAST,QAAQS,IAAUL,MAAMC,QAAQI,EAAMH,QAAUN,QAAQS,EAAMH,MAAMH,SAE7FM,EAAMH,MAAMI,MAAMZ,GAGZa,EAAiBL,GAASA,EAAMI,MAAMZ,IAAWQ,EAAMI,MAAMF,GAU7DI,EAAuBC,IAC3B,MAAMC,EAAQD,IACd,IAAKT,MAAMC,QAAQS,GACjB,OAAO,EAET,MAAMC,EAAOD,EAAME,OAAOC,GAASA,EAAMC,KACzC,OAAOH,EAAKZ,QAAUY,EAAKL,MAAMQ,GAdRD,KACzB,IAAIE,EAFaD,EAGjB,OAAOlB,QAAQiB,KAHEC,GAGyE,QAApDC,EAAwBF,EAAMG,wBAAwD,IAA1BD,OAAmC,EAASA,EAAsBD,MAAQD,EAAMC,IAH1J,CAAC,+BAAgC,8BAA+B,MAAMG,SAASH,KAe/DI,CAAmBJ,KAEvDK,EAAuBV,IAC3B,MAAMC,EAAQD,IACRW,EAAWV,EAAMW,KAAKC,GAAQtB,MAAMC,QAAQqB,EAAKC,WAAaD,EAAKC,SAASxB,QAElF,OADoBqB,EAAWA,EAASG,SAAWb,GAGlDE,OAAOC,IAAU,IAASA,EAAMf,OAASe,EAAMf,KAAK0B,OAAOzB,OAAS,GAAGO,MAAMO,GAlBrDA,KACzB,IAAIY,EACJ,MAAO,CAAC,IAA+B,KAAgCR,SAAwC,QAA9BQ,EAAcZ,EAAMa,YAAkC,IAAhBD,OAAyB,EAASA,EAAYE,OAAwB,OAAfd,EAAMa,MAgB7FE,CAAmBf,KAEtGgB,EAAmBpB,KAClB,IAAWA,KAGZ,UAAIqB,QAAQC,WAAW,KAClBZ,EAAqBV,GAEvBD,EAAqBC,K,kCChD9B,4GAAMuB,EAAgC,2BAChCC,EAAiC,4BACjCC,EAA6C,CACjDC,IAAK,MACLC,OAAQ,W,kCCJV,uJAYA,MAAMC,EAAoB,IAAI,IACxBC,EAAgB,IAAI,IAsU1B,MAAMC,EArUO,CACXZ,KAAM,uBACNa,OAAQ,CACNC,kBAAA,IACAC,mBAAA,IACAC,yBAAA,IACAC,0BAAA,KAEFC,WAAY,CACVC,eAAA,IACAC,yBAAA,IACAC,0BAAA,KAEFC,MAAO,CAIL/C,MAAO,CACLwB,KAAM1B,MACNkD,UAAU,EACVC,QAAS,IAAM,GACfC,UAAW,KAKbC,WAAY,CACV3B,KAAM4B,OACNJ,UAAU,EACVC,QAAS,IAKXI,WAAY,CACV7B,KAAM9B,QACNsD,UAAU,EACVC,SAAS,GAKXK,SAAU,CACR9B,KAAM4B,OACNJ,UAAU,EACVC,QAAS,IAAsBM,QAC/BL,UAAWM,GAASA,KAAS,KAK/BC,QAAS,CACPjC,KAAM4B,OACNJ,UAAU,EACVC,QAAS,IAAuBA,QAChCC,UAAWM,GAASA,KAAS,KAK/BE,KAAM,CACJlC,KAAM4B,OACNJ,UAAU,EACVC,QAAS,SACTC,UAAWM,GAASA,KAAS,KAK/BG,KAAM,CACJnC,KAAM4B,OACNJ,UAAU,EACVC,QAAS,IAKXW,SAAU,CACRpC,KAAM9B,QACNsD,UAAU,EACVC,SAAS,GAMXY,QAAS,CACPrC,KAAM9B,QACNsD,UAAU,EACVC,SAAS,GAMXa,SAAU,CACRtC,KAAM4B,OACNJ,UAAU,EACVC,QAAS,IAAM,IAAS,yBAK1Bc,YAAa,CACXvC,KAAM,CAAC4B,OAAQtD,MAAOkE,QACtBhB,UAAU,EACVC,QAAS,MAKXgB,QAAS,CACPzC,KAAM9B,QACNsD,UAAU,EACVC,SAAS,GAKXiB,UAAW,CACT1C,KAAM4B,OACNJ,UAAU,EACVC,QAAS,eACTC,UAAWM,GAASQ,OAAOG,KAAK,KAAoBpD,SAASyC,IAM/DY,qBAAsB,CACpB5C,KAAM4B,OACNJ,UAAU,EACVC,QAAS,MAMXoB,mBAAoB,CAClB7C,KAAM4B,OACNJ,UAAU,EACVC,QAAS,MAKXqB,MAAO,CACL9C,KAAM9B,QACNsD,UAAU,EACVC,SAAS,GAMXsB,eAAgB,CACd/C,KAAM,CAACgD,OAAQR,QACfhB,UAAU,EACVC,aAASwB,GAMXC,WAAY,CACVlD,KAAM9B,QACNsD,UAAU,EACVC,SAAS,GAKX0B,UAAW,CACTnD,KAAM9B,QACNsD,UAAU,EACVC,SAAS,GAOX2B,oBAAqB,CACnBpD,KAAM4B,OACNJ,UAAU,EACVC,QAAS,IACTC,UAAW2B,GAAY,CAAC,IAAmB,KAAgB9D,SAAS8D,IAKtEC,YAAa,CACXtD,KAAM9B,QACNsD,UAAU,EACVC,SAAS,IAGb8B,KAAI,KACK,CACLC,aAAc,IAAS,eACvBC,qBAAsB,OAG1BC,SAAU,CACR,gBACE,IAAIC,EACJ,OAAmC,QAA9BA,EAAcC,KAAKpF,aAAmC,IAAhBmF,GAA0BA,EAAYtF,QAEjF,YAAiBuF,KAAKC,aAAapC,SAAWmC,KAAKE,OAAOrC,SACjD,KAEF,OAET,kBACE,OAAOvD,QAAQ0F,KAAKC,aAAaE,UAGrC,UACMH,KAAKN,aACPM,KAAKI,QAGTC,QAAS,CACP,OACEL,KAAKM,MAAMC,aAAaH,QAE1B,QACEJ,KAAKM,MAAMC,aAAaC,SAE1B,SAMER,KAAKS,MAAM,MAEb,cAAcC,GAMZV,KAAKS,MAAM,IAA0BC,IAEvC,SAMEV,KAAKS,MAAM,KACXT,KAAKH,qBAAuB,MAE9B,UAAUa,GACR,MAAM,KACJC,GACED,EACEE,EAAWZ,KAAKa,+BACtB,GAAID,EAASnG,OAAS,EAAG,OACzB,IAAIqG,GAAO,EACPH,IAAS,IACXX,KAAKe,UAAU,EAAGH,GACTD,IAAS,IAClBX,KAAKe,UAAUH,EAASnG,OAAS,EAAGmG,GAC3BD,IAAS,IAClBX,KAAKgB,cAAcN,EAAOE,GAAW,GAC5BD,IAAS,IAClBX,KAAKgB,cAAcN,EAAOE,EAAU,GAC3BD,IAAS,KAASA,IAAS,IACpCX,KAAKiB,gBAAgBP,GAErBI,GAAO,EAELA,GACF,YAAUJ,IAGd,+BACE,IAAIQ,EACJ,MAAMtG,EAAuD,QAA9CsG,EAAsBlB,KAAKM,MAAMa,eAA6C,IAAxBD,OAAiC,EAASA,EAAoBE,iBAAiBpE,GACpJ,OAAO,YAActC,MAAM2G,KAAKzG,GAAS,MAE3C,cAAc8F,EAAOE,EAAUU,GAC7B,MAAM,OACJC,GACEb,EACEc,EAAeZ,EAASa,QAAQF,GAChCG,EAAY,IAAMF,EAAeF,EAAQ,EAAGV,EAASnG,OAAS,GACpEuF,KAAKe,UAAUW,EAAWd,IAE5B,UAAUe,EAAOf,GACf,IAAIgB,EACJ5B,KAAKH,qBAAuB8B,EACY,QAAvCC,EAAkBhB,EAASe,UAAwC,IAApBC,GAAsCA,EAAgBC,SAExG,gBACE7B,KAAKM,MAAMC,aAAauB,iBAE1B,aAAaC,GAGXC,OAAOC,sBAAsB,KAM3BjC,KAAKS,MAAM,SAAUsB,MAGzB,gBAAgBG,GACVlC,KAAKT,WAAa2C,EAAEX,OAAOY,QAAQnF,IAAkBkF,EAAEX,OAAOY,QAAQpF,KAAuBiD,KAAKM,MAAMC,aAAa6B,KACvHpC,KAAK8B,iBAGTO,aAAY,IACH,IAAS,oBAElBjI,OAAA,KAEFkI,2BAAA,KAWA,MAeMC,EAAoB,IACxB,CAAEC,OApBe,WAAa,IAAIC,EAAIzC,KAAS0C,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,mBAAmB,CAACE,IAAI,eAAeC,YAAY,yBAAyBC,MAAM,CAAC,kBAAkBP,EAAIzD,qBAAqB,YAAYyD,EAAI/D,SAAS,cAAc+D,EAAI1E,WAAW,eAAe0E,EAAI9D,YAAY,eAAe8D,EAAIxE,WAAW,SAAWwE,EAAIvE,SAAS,QAAUuE,EAAIpE,QAAQ,KAAOoE,EAAInE,KAAK,KAAOmE,EAAIlE,KAAK,SAAWkE,EAAIjE,SAAS,QAAUiE,EAAIhE,QAAQ,WAAWgE,EAAI5D,QAAQ,UAAY4D,EAAI3D,UAAU,MAAQ2D,EAAIvD,MAAM,OAASuD,EAAItD,eAAe,cAAcsD,EAAInD,WAAW,uBAAuBmD,EAAIjD,qBAAqByD,GAAGR,EAAIS,GAAG,GAAG,CAACT,EAAIU,SAASjG,OAAOC,kBAAkBsF,EAAIW,OAAOX,EAAIU,SAASjG,OAAOE,mBAAmBqF,EAAIY,OAAOZ,EAAIU,SAASjG,OAAOG,yBAAyBoF,EAAIa,cAAcb,EAAIU,SAASjG,OAAOI,0BAA0BmF,EAAIc,YAAYC,YAAYf,EAAIgB,GAAG,CAAEhB,EAAmB,gBAAE,CAACiB,IAAI,SAASC,GAAG,WAAW,MAAO,CAAClB,EAAImB,GAAG,YAAYC,OAAM,GAAM,MAAM,MAAK,IAAO,CAACpB,EAAIqB,GAAG,KAAKrB,EAAImB,GAAG,UAAUnB,EAAIqB,GAAG,KAAKlB,EAAGH,EAAIsB,cAAc,CAACjB,IAAI,UAAUtH,IAAI,YAAYwI,MAAMvB,EAAIU,SAASb,2BAA2BU,MAAM,CAAC,GAAKP,EAAI7C,aAAa,kBAAkB6C,EAAIxD,oBAAsBwD,EAAI/D,SAAS,cAAc,qBAAqB,SAAW,MAAMuE,GAAG,CAAC,QAAUR,EAAIc,UAAU,MAAQd,EAAIxB,kBAAkB,CAACwB,EAAImB,GAAG,WAAU,WAAW,MAAO,CAACnB,EAAIwB,GAAIxB,EAAS,OAAE,SAASpI,EAAKsH,GAAO,MAAO,CAAEc,EAAIrI,OAAOC,GAAO,CAACuI,EAAG,8BAA8B,CAACc,IAAIjB,EAAIJ,eAAeW,MAAM,CAAC,KAAO3I,GAAM4I,GAAG,CAAC,OAASR,EAAIyB,cAAcV,YAAYf,EAAIgB,GAAG,CAAE,cAAehB,EAAIxC,aAAc,CAACyD,IAAI,YAAYC,GAAG,WAAW,MAAO,CAAClB,EAAImB,GAAG,YAAY,KAAK,CAAC,KAAOvJ,MAASwJ,OAAM,GAAM,MAAM,MAAK,MAAS,CAACjB,EAAG,+BAA+B,CAACc,IAAIrJ,EAAKgC,KAAK2G,MAAM,CAAC,SAAqB,IAAVrB,EAAY,MAAQtH,GAAM4I,GAAG,CAAC,OAASR,EAAIyB,cAAcV,YAAYf,EAAIgB,GAAG,CAAEhB,EAAIxC,aAAa,eAAgB,CAACyD,IAAI,cAAcC,GAAG,WAAW,MAAO,CAAClB,EAAImB,GAAG,cAAc,KAAK,CAAC,MAAQvJ,MAASwJ,OAAM,GAAM,MAAM,MAAK,IAAO,CAACpB,EAAIqB,GAAG,KAAMrB,EAAIxC,aAAa,aAAcwC,EAAIwB,GAAI5J,EAAU,OAAE,SAAS8J,GAAW,OAAOvB,EAAG,8BAA8B,CAACc,IAAIjB,EAAIJ,eAAeW,MAAM,CAAC,KAAOmB,GAAWlB,GAAG,CAAC,OAASR,EAAIyB,cAAcV,YAAYf,EAAIgB,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,WAAW,MAAO,CAAClB,EAAImB,GAAG,YAAY,KAAK,CAAC,KAAOO,MAAcN,OAAM,IAAO,MAAK,QAAUpB,EAAI2B,MAAM,aAAW,GAAG3B,EAAIqB,GAAG,KAAKrB,EAAImB,GAAG,WAAW,IAoB50ES,gBAnBA,SAGEhF,EAkB5BpC,OAhBuBoC,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,kCCtXf,uHAOA,MAAMiF,EAAa,uBA6GnB,MAAMrH,EA5GO,CACXZ,KAAM,IACNiI,aACA/G,WAAY,CACVgH,MAAA,KAEF5G,MAAO,CACLtD,KAAM,CACJ+B,KAAMwC,OACNhB,UAAU,EACVC,QAAS,KACTC,UAAW,MAGfgC,SAAU,CACR,SACE,IAAI0E,EAAYC,EAChB,MAA0G,iBAA9D,QAA5BD,EAAaxE,KAAK3F,YAAiC,IAAfmK,OAAwB,EAASA,EAAWE,OAA0H,iBAA9D,QAA7BD,EAAczE,KAAK3F,YAAkC,IAAhBoK,OAAyB,EAASA,EAAYE,KAEpN,kBACE,OAAOrK,QAAQ0F,KAAKC,aAAapC,UAEnC,gBACE,MAAM,KACJxD,GACE2F,KACJ,OAAIA,KAAK4E,OAAe,CACtBC,GAAI,IACJ7B,MAAO,CACL0B,KAAMrK,EAAKqK,KACXC,GAAItK,EAAKsK,MACNtK,EAAKyK,YAEVC,UAAW,CACTC,MAAOhF,KAAK+B,SAGT,CACL8C,GAAI,SACJ7B,MAAO,IACD3I,aAAmC,EAASA,EAAKyK,WACrD1I,KAAM,UAER2I,UAAW,CACTC,MAAO,KACL,IAAIC,EACJ5K,SAA6E,QAAhC4K,EAAe5K,EAAK0H,cAAqC,IAAjBkD,GAAmCA,EAAaC,UAAK7F,EAAWhF,GACrJ2F,KAAK+B,aAKb,YACE,IAAIoD,EAAaC,EACjB,OAAqC,QAA7BD,EAAcnF,KAAK3F,YAAkC,IAAhB8K,GAA+E,QAApDC,EAAwBD,EAAYL,kBAAkD,IAA1BM,GAAoCA,EAAsB5G,SAAW,KAAO,GAElN,iBACE,IAAI6G,EAAaC,EACjB,OAAqC,QAA7BD,EAAcrF,KAAK3F,YAAkC,IAAhBgL,GAA+E,QAApDC,EAAwBD,EAAYP,kBAAkD,IAA1BQ,GAAoCA,EAAsB9G,SAAW,MAAQ,GAEnN,eACE,IAAI+G,EAAuBC,EAC3B,OAAsI,QAA9HD,EAAsD,QAA7BC,EAAcxF,KAAK3F,YAAkC,IAAhBmL,OAAyB,EAASA,EAAYC,oBAAoD,IAA1BF,EAAmCA,EAAwB,IAE3M,mBACE,MAAMR,EAAY,CAChBW,QAAS1F,KAAKuD,WAKhB,OAHIvD,KAAK2F,kBACPZ,EAAUC,MAAQhF,KAAK+B,QAElBgD,IAGX1E,QAAS,CACP,UAAUK,GACR,MAAM,KACJC,GACED,EACJ,GAAIC,IAAS,KAASA,IAAS,IAC7B,GAAIX,KAAK2F,gBACP3F,KAAK+B,aACA,CACL,YAAUrB,GAKV,MAAMwB,EAAI,IAAI0D,WAAW,QAAS,CAChCC,SAAS,EACTC,YAAY,IAKZ,IAAIC,EAHN,GAAI/F,KAAK4E,OACP5E,KAAKM,MAAMjG,KAAK+H,IAAI4D,cAAc9D,QAGO,QAAxC6D,EAAmB/F,KAAKM,MAAMjG,YAAuC,IAArB0L,GAAuCA,EAAiBC,cAAc9D,KAK/H,SACElC,KAAKS,MAAM,SAAUT,KAAK3F,SAa9B,MAeMkI,EAAoB,IACxB,CAAEC,OApBe,WAAa,IAAIC,EAAIzC,KAAS0C,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,KAAKH,EAAIwD,GAAG,CAACjC,MAAM,CAACvB,EAAIU,SAASmB,WAAY7B,EAAIgD,cAAczC,MAAM,CAAC,SAAWP,EAAIyD,UAAU,cAAc,6BAA6BzD,EAAI0D,kBAAkB,CAAC1D,EAAImB,GAAG,WAAU,WAAW,MAAO,CAAChB,EAAGH,EAAI2D,cAAcvB,GAAGpC,EAAIwD,GAAGxD,EAAI4D,GAAG,CAACvD,IAAI,OAAOtH,IAAI,YAAYuH,YAAY,+BAA+BC,MAAM,CAAC,SAAWP,EAAI6D,iBAAiB,YAAY7D,EAAI2D,cAAcpD,OAAM,GAAOP,EAAI2D,cAAcrB,WAAW,CAACnC,EAAG,OAAO,CAACG,YAAY,qCAAqC,CAACN,EAAImB,GAAG,aAAY,WAAW,MAAO,CAACnB,EAAIqB,GAAG,eAAerB,EAAI8D,GAAG9D,EAAIpI,KAAKG,MAAM,mBAAkB,UAAS,IAoBzpB6J,gBAnBA,SAGEhF,EAkB5BpC,OAhBuBoC,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,kCCvJf,kFAMA,MAAMmH,EAAiB,CACrB,CAAC,IAA2C3J,KAAM,mDAClD,CAAC,IAA2CC,QAAS,oDAiEvD,MAAMG,EA/DO,CACXZ,KAAM,IACNkB,WAAY,CACVE,yBAAA,KAEFE,MAAO,CAIL5C,MAAO,CACLqB,KAAMwC,OACNhB,UAAU,EACVC,QAAS,KACTC,UAAW,KAQb2I,SAAU,CACRrK,KAAM9B,QACNsD,UAAU,EACVC,SAAS,GAMX6I,eAAgB,CACdtK,KAAM4B,OACNJ,UAAU,EACVC,QAAS,IAA2ChB,IACpDiB,UAAWM,GAASQ,OAAOG,KAAK,KAA4CpD,SAASyC,KAGzF0B,SAAU,CACR,cACE,OAAOE,KAAKyG,SAAWD,EAAexG,KAAK0G,gBAAkB,MAE/D,aACE,IAAIC,EACJ,OAAO3G,KAAKC,aAAa,iBAAkD,QAA9B0G,EAAc3G,KAAKjF,aAAmC,IAAhB4L,OAAyB,EAASA,EAAYtK,OAEnI,iBACE,OAAO2D,KAAK4G,WAAa5G,KAAK6G,OAAS,OAG3C,UACE7G,KAAK6G,OAAS,IAAS,kCAEzBxG,QAAS,CACP,aAAa0B,GACX/B,KAAKS,MAAM,SAAUsB,IAEvBM,aAAY,IACH,IAAS,sBAapB,MAeME,EAAoB,IACxB,CAAEC,OApBe,WAAa,IAAIC,EAAIzC,KAAS0C,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACoB,MAAMvB,EAAIqE,aAAa,CAAErE,EAAc,WAAEG,EAAG,MAAM,CAACG,YAAY,yDAAyDC,MAAM,CAAC,GAAKP,EAAIoE,OAAO,cAAc,SAAS,CAACpE,EAAImB,GAAG,eAAc,WAAW,MAAO,CAACnB,EAAIqB,GAAGrB,EAAI8D,GAAG9D,EAAI1H,MAAMsB,YAAW,GAAGoG,EAAI2B,KAAK3B,EAAIqB,GAAG,KAAKlB,EAAG,KAAK,CAACG,YAAY,+BAA+BC,MAAM,CAAC,kBAAkBP,EAAIsE,iBAAiB,CAACtE,EAAImB,GAAG,WAAU,WAAW,OAAOnB,EAAIwB,GAAIxB,EAAI1H,MAAW,OAAE,SAASV,GAAM,OAAOuI,EAAG,8BAA8B,CAACc,IAAIjB,EAAIJ,eAAeW,MAAM,CAAC,KAAO3I,GAAM4I,GAAG,CAAC,OAASR,EAAIyB,cAAcV,YAAYf,EAAIgB,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,WAAW,MAAO,CAAClB,EAAImB,GAAG,YAAY,KAAK,CAAC,KAAOvJ,MAASwJ,OAAM,IAAO,MAAK,YAAa,MAoBjwBQ,gBAnBA,SAGEhF,EAkB5BpC,OAhBuBoC,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,4ICvEf,MAAMpC,EAlCO,CACXZ,KAAM,mBACNkB,WAAY,CACVgH,MAAA,KAEFyC,cAAc,EACdrJ,MAAO,CACLnD,KAAM,CACJ4B,KAAM4B,OACNJ,UAAU,EACVC,QAAS,MAEX8G,GAAI,CACFvI,KAAM,CAAC4B,OAAQY,QACfhB,UAAU,EACVC,QAAS,MAEX6G,KAAM,CACJtI,KAAM4B,OACNJ,UAAU,EACVC,QAAS,MAEXoJ,YAAa,CACX7K,KAAM,CAAC4B,OAAQ1D,SACfsD,UAAU,EACVC,SAAS,EACTC,UAAUM,IACmC,IAApC,EAAC,EAAO,QAAQqD,QAAQrD,MCiKvC,MAAM,EAtLO,CACX/B,KAAM,eACNkB,WAAY,CACV2J,iBD+CwB,IACxB,CAAE1E,OApBe,WAAa,IAAIC,EAAIzC,KAAS0C,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACG,YAAY,sBAAsB,CAACH,EAAG,SAAS,CAACI,MAAM,CAAC,KAAOP,EAAIiC,KAAK,GAAKjC,EAAIkC,GAAG,eAAelC,EAAIwE,cAAc,CAACxE,EAAImB,GAAG,WAAU,WAAW,MAAO,CAACnB,EAAIqB,GAAGrB,EAAI8D,GAAG9D,EAAIjI,YAAW,IAAI,IAoB7Q6J,gBAnBA,SAGEhF,EAkB5BpC,OAhBuBoC,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GCxDA8H,SAAA,IACAC,qBAAA,KAEFC,WAAY,CACVC,UAAW,KAEbN,cAAc,EACdrJ,MAAO,CAIL/C,MAAO,CACLwB,KAAM1B,MACNkD,UAAU,EACVC,QAAS,IAAM,CAAC,CACdrD,KAAM,GACNkK,KAAM,KAER5G,UAAWlD,GACFA,EAAMI,MAAMX,IACjB,MAAM0E,EAAOH,OAAOG,KAAK1E,GACzB,OAAO0E,EAAKpD,SAAS,UAAYoD,EAAKpD,SAAS,SAAWoD,EAAKpD,SAAS,UAI9E4L,UAAW,CACTnL,KAAM4B,OACNJ,UAAU,EACVC,QAAS,cAKX2J,cAAe,CACbpL,KAAM4B,OACNJ,UAAU,EACVC,QAAS,IAAM,YAAU,6BAA8B,0BAKzD4J,WAAY,CACVrL,KAAM9B,QACNsD,UAAU,EACVC,SAAS,IAGb,OACE,MAAO,CACL6J,aAAc,IAAI1H,KAAKpF,OAEvB+M,iBAAkB,GAElBC,sBAAuB,EAEvBC,aAAc,GAEdC,YAAY,IAGhBhI,SAAU,CACR,iBACE,OAAOE,KAAK2H,iBAAiBlN,OAAS,GAExC,kBACE,OAAOuF,KAAK8H,WAAa,GAAK,CAC5BC,QAAS,IAGb,YAQE,OAAI/H,KAAK8H,YAA2C,IAA7B9H,KAAK0H,aAAajN,OAChC,CACL,cAAe,EACf,gBAAiB,WACjB,aAAc,SACd,YAAa,UAGV,KAGXuN,MAAO,CACLpN,MAAO,CACLqN,QAAS,+BACTC,MAAM,GAER,WAAWC,GACLA,EAAUnI,KAAKoI,mBAAwBpI,KAAKqI,sBAGpD,UACErI,KAAKsI,2BAA6B,IAAStI,KAAKuI,mBAAoB,KAEtE,UACMvI,KAAKyH,WACPzH,KAAKoI,mBAELpI,KAAK8H,YAAa,GAGtB,gBACE9H,KAAKqI,qBAEPhI,QAAS,CACP,aACEL,KAAK0H,aAAe,IAAI1H,KAAKpF,OAC7BoF,KAAK2H,iBAAmB,IAE1B,qCACE3H,KAAKwI,aACAxI,KAAKyH,aACVzH,KAAK8H,YAAa,QAGZ9H,KAAKyI,YACXzI,KAAK4H,sBAAwB,EACxB5H,KAAKM,MAAMoI,cAChB1I,KAAKM,MAAMoI,YAAYC,QAAQ,CAACC,EAAGjH,KACjC,MAAMkH,EAAQD,EAAExG,IAAI0G,YACpB9I,KAAK4H,uBAAyBiB,EAC9B7I,KAAK6H,aAAalG,GAASkH,IAE7B7I,KAAKuI,wBAEP,qBACEvI,KAAK8H,YAAa,EAClB9H,KAAKwI,aACL,MAAMO,EAAiB/I,KAAKoC,IAAI0G,YAGhC,GAAI9I,KAAK4H,sBAAwBmB,EAAgB,CAE/C,MAAMC,EAAiB,EAGjBC,EAAgBjJ,KAAKpF,MAAMH,OAAS,EAC1C,IAAIyO,EAAclJ,KAAK4H,sBACvB,IAAK,IAAIjG,EAAQqH,EAAgBrH,EAAQsH,IAEvCjJ,KAAK2H,iBAAiBwB,KAAKnJ,KAAK0H,aAAasB,IAC7ChJ,KAAK0H,aAAa0B,OAAOJ,EAAgB,GACzCE,GAAelJ,KAAK6H,aAAalG,KAG7BuH,EAhBY,GAgBgBH,IAPsBpH,GAAS,IAUnE3B,KAAK8H,YAAa,GAEpB,WAAWnG,GACT,OAAOA,IAAU3B,KAAK0H,aAAajN,OAAS,GAE9C,mBAAmBkH,GACjB,QAAO3B,KAAKqJ,WAAW1H,IAAS,QAElC,mBACE3B,KAAKsJ,iBAAmBtJ,KAAKsJ,eAAiB,IAAIC,eAAevJ,KAAKsI,6BACtEtI,KAAKsJ,eAAeE,QAAQxJ,KAAKoC,KACjCpC,KAAKyJ,gCAEP,oBACMzJ,KAAKsJ,iBACPtJ,KAAKsJ,eAAeI,UAAU1J,KAAKoC,KACnCpC,KAAKsJ,eAAiB,MAExBtJ,KAAKwI,gBAaT,MAeM,EAAoB,IACxB,CAAEhG,OApBe,WAAa,IAAIC,EAAIzC,KAAS0C,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACG,YAAY,iBAAiB4G,MAAOlH,EAAmB,gBAAEO,MAAM,CAAC,aAAaP,EAAI8E,YAAY,CAAC3E,EAAG,KAAKH,EAAIwD,GAAGxD,EAAI4D,GAAG,CAACtD,YAAY,iCAAiC,KAAKN,EAAImH,QAAO,GAAOnH,EAAIoH,YAAY,CAAEpH,EAAkB,eAAEG,EAAG,KAAK,CAACG,YAAY,sBAAsB,CAACH,EAAG,yBAAyB,CAACI,MAAM,CAAC,MAAQP,EAAIkF,iBAAiB,cAAclF,EAAI+E,cAAc,cAAc,GAAG,eAAe,GAAG,WAAW,GAAG,KAAO,aAAa,KAAO,YAAY,GAAG/E,EAAI2B,KAAK3B,EAAIqB,GAAG,KAAKrB,EAAIwB,GAAIxB,EAAgB,cAAE,SAASpI,EAAKsH,GAAO,OAAOiB,EAAG,qBAAqB,CAACc,IAAI/B,EAAMmB,IAAI,cAAcgH,UAAS,EAAKH,MAAOlH,EAAa,UAAEO,MAAM,CAAC,KAAO3I,EAAKG,KAAK,KAAOH,EAAKqK,KAAK,GAAKrK,EAAKsK,GAAG,eAAelC,EAAIsH,mBAAmBpI,KAAS,CAAEtH,EAAe,WAAEuI,EAAG,YAAY,CAACG,YAAY,+DAA+DC,MAAM,CAAC,IAAM3I,EAAK2P,WAAW,KAAO,GAAG,cAAc,OAAO,MAAQ,OAAO,cAAc,YAAYvH,EAAI2B,KAAKxB,EAAG,OAAO,CAACG,YAAY,mBAAmB,CAACN,EAAIqB,GAAGrB,EAAI8D,GAAGlM,EAAKG,UAAU,OAAM,MAoB9kC6J,gBAnBA,SAGEhF,EAkB5B,OAhBuBA,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW","file":"commons-pages.groups.analytics.dashboards-pages.groups.harbor.repositories-pages.groups.iteration_ca-b07ae190.ec7189d6.chunk.js","sourcesContent":["import Vue from 'vue';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport { DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';\n\nconst itemValidator = item => {\n var _item$text;\n return (item === null || item === void 0 ? void 0 : (_item$text = item.text) === null || _item$text === void 0 ? void 0 : _item$text.length) > 0 && !Array.isArray(item === null || item === void 0 ? void 0 : item.items);\n};\nconst isItem = item => Boolean(item) && itemValidator(item);\nconst isGroup = group => Boolean(group) && Array.isArray(group.items) && Boolean(group.items.length) &&\n// eslint-disable-next-line unicorn/no-array-callback-reference\ngroup.items.every(isItem);\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst itemsValidator = items => items.every(isItem) || items.every(isGroup);\nconst isListItem = tag => ['gl-disclosure-dropdown-group', 'gl-disclosure-dropdown-item', 'li'].includes(tag);\nconst isValidSlotTagVue2 = vNode => {\n var _vNode$componentOptio;\n return Boolean(vNode) && isListItem(((_vNode$componentOptio = vNode.componentOptions) === null || _vNode$componentOptio === void 0 ? void 0 : _vNode$componentOptio.tag) || vNode.tag);\n};\nconst isValidSlotTagVue3 = vNode => {\n var _vNode$type;\n return [DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME].includes((_vNode$type = vNode.type) === null || _vNode$type === void 0 ? void 0 : _vNode$type.name) || vNode.type === 'li';\n};\nconst hasOnlyListItemsVue2 = defaultSlot => {\n const nodes = defaultSlot();\n if (!Array.isArray(nodes)) {\n return false;\n }\n const tags = nodes.filter(vNode => vNode.tag);\n return tags.length && tags.every(tag => isValidSlotTagVue2(tag));\n};\nconst hasOnlyListItemsVue3 = defaultSlot => {\n const nodes = defaultSlot();\n const fragment = nodes.find(node => Array.isArray(node.children) && node.children.length);\n const targetNodes = fragment ? fragment.children : nodes;\n return targetNodes\n // Remove empty text vNodes\n .filter(vNode => !isString(vNode.text) || vNode.text.trim().length > 0).every(vNode => isValidSlotTagVue3(vNode));\n};\nconst hasOnlyListItems = defaultSlot => {\n if (!isFunction(defaultSlot)) {\n return false;\n }\n if (Vue.version.startsWith('3')) {\n return hasOnlyListItemsVue3(defaultSlot);\n }\n return hasOnlyListItemsVue2(defaultSlot);\n};\n\nexport { hasOnlyListItems, isGroup, isItem, itemsValidator };\n","const DISCLOSURE_DROPDOWN_ITEM_NAME = 'GlDisclosureDropdownItem';\nconst DISCLOSURE_DROPDOWN_GROUP_NAME = 'GlDisclosureDropdownGroup';\nconst DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS = {\n top: 'top',\n bottom: 'bottom'\n};\n\nexport { DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS, DISCLOSURE_DROPDOWN_GROUP_NAME, DISCLOSURE_DROPDOWN_ITEM_NAME };\n","import clamp from 'lodash/clamp';\nimport uniqueId from 'lodash/uniqueId';\nimport { stopEvent, filterVisible } from '../../../../utils/utils';\nimport { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_FOCUS_CONTENT, POSITION_ABSOLUTE, POSITION_FIXED, HOME, END, ARROW_UP, ARROW_DOWN, ENTER, SPACE, GL_DROPDOWN_CONTENTS_CLASS } from '../constants';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';\nimport GlBaseDropdown, { BASE_DROPDOWN_CLASS } from '../base_dropdown/base_dropdown';\nimport GlDisclosureDropdownItem, { ITEM_CLASS } from './disclosure_dropdown_item';\nimport GlDisclosureDropdownGroup from './disclosure_dropdown_group';\nimport { itemsValidator, hasOnlyListItems, isItem } from './utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst DROPDOWN_SELECTOR = `.${BASE_DROPDOWN_CLASS}`;\nconst ITEM_SELECTOR = `.${ITEM_CLASS}`;\nvar script = {\n name: 'GlDisclosureDropdown',\n events: {\n GL_DROPDOWN_SHOWN,\n GL_DROPDOWN_HIDDEN,\n GL_DROPDOWN_BEFORE_CLOSE,\n GL_DROPDOWN_FOCUS_CONTENT\n },\n components: {\n GlBaseDropdown,\n GlDisclosureDropdownItem,\n GlDisclosureDropdownGroup\n },\n props: {\n /**\n * Items to display in the dropdown\n */\n items: {\n type: Array,\n required: false,\n default: () => [],\n validator: itemsValidator\n },\n /**\n * Toggle button text\n */\n toggleText: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Toggle text to be read by screen readers only\n */\n textSrOnly: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Styling option - dropdown's toggle category\n */\n category: {\n type: String,\n required: false,\n default: buttonCategoryOptions.primary,\n validator: value => value in buttonCategoryOptions\n },\n /**\n * Styling option - dropdown's toggle variant\n */\n variant: {\n type: String,\n required: false,\n default: dropdownVariantOptions.default,\n validator: value => value in dropdownVariantOptions\n },\n /**\n * The size of the dropdown toggle\n */\n size: {\n type: String,\n required: false,\n default: 'medium',\n validator: value => value in buttonSizeOptions\n },\n /**\n * Icon name that will be rendered in the toggle button\n */\n icon: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Set to \"true\" to disable the dropdown\n */\n disabled: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Set to \"true\" when dropdown content (items) is loading\n * It will render a small loader in the dropdown toggle and make it disabled\n */\n loading: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Custom toggle id.\n * For instance, it can be referenced by tooltip or popover\n */\n toggleId: {\n type: String,\n required: false,\n default: () => uniqueId('dropdown-toggle-btn-')\n },\n /**\n * Additional CSS classes to customize toggle appearance\n */\n toggleClass: {\n type: [String, Array, Object],\n required: false,\n default: null\n },\n /**\n * Set to \"true\" to hide the caret\n */\n noCaret: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Align disclosure dropdown with respect to the toggle button\n */\n placement: {\n type: String,\n required: false,\n default: 'bottom-start',\n validator: value => Object.keys(dropdownPlacements).includes(value)\n },\n /**\n * The `aria-labelledby` attribute value for the toggle button\n * Provide the string of ids seperated by space\n */\n toggleAriaLabelledBy: {\n type: String,\n required: false,\n default: null\n },\n /**\n * The `aria-labelledby` attribute value for the list of options\n * Provide the string of ids seperated by space\n */\n listAriaLabelledBy: {\n type: String,\n required: false,\n default: null\n },\n /**\n * Render the toggle button as a block element\n */\n block: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Custom offset to be applied to Floating UI's offset middleware.\n * https://floating-ui.com/docs/offset\n */\n dropdownOffset: {\n type: [Number, Object],\n required: false,\n default: undefined\n },\n /**\n * Lets the dropdown extend to match its content's width, up to a maximum width\n * defined by the `$gl-new-dropdown-max-width` variable.\n */\n fluidWidth: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Close the dropdown on item click (action)\n */\n autoClose: {\n type: Boolean,\n required: false,\n default: true\n },\n /**\n * Strategy to be applied by computePosition. If the dropdown's container is too short for it to\n * fit in, setting this to fixed will let it position itself above its container.\n * https://floating-ui.com/docs/computePosition#strategy\n */\n positioningStrategy: {\n type: String,\n required: false,\n default: POSITION_ABSOLUTE,\n validator: strategy => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy)\n },\n /**\n * Opens dropdown on render\n */\n startOpened: {\n type: Boolean,\n required: false,\n default: false\n }\n },\n data() {\n return {\n disclosureId: uniqueId('disclosure-'),\n nextFocusedItemIndex: null\n };\n },\n computed: {\n disclosureTag() {\n var _this$items;\n if ((_this$items = this.items) !== null && _this$items !== void 0 && _this$items.length ||\n // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n hasOnlyListItems(this.$scopedSlots.default || this.$slots.default)) {\n return 'ul';\n }\n return 'div';\n },\n hasCustomToggle() {\n return Boolean(this.$scopedSlots.toggle);\n }\n },\n mounted() {\n if (this.startOpened) {\n this.open();\n }\n },\n methods: {\n open() {\n this.$refs.baseDropdown.open();\n },\n close() {\n this.$refs.baseDropdown.close();\n },\n onShow() {\n /**\n * Emitted when dropdown is shown\n *\n * @event shown\n */\n this.$emit(GL_DROPDOWN_SHOWN);\n },\n onBeforeClose(event) {\n /**\n * Emitted when dropdown is about to be closed\n *\n * @event beforeClose\n */\n this.$emit(GL_DROPDOWN_BEFORE_CLOSE, event);\n },\n onHide() {\n /**\n * Emitted when dropdown is hidden\n *\n * @event hidden\n */\n this.$emit(GL_DROPDOWN_HIDDEN);\n this.nextFocusedItemIndex = null;\n },\n onKeydown(event) {\n const {\n code\n } = event;\n const elements = this.getFocusableListItemElements();\n if (elements.length < 1) return;\n let stop = true;\n if (code === HOME) {\n this.focusItem(0, elements);\n } else if (code === END) {\n this.focusItem(elements.length - 1, elements);\n } else if (code === ARROW_UP) {\n this.focusNextItem(event, elements, -1);\n } else if (code === ARROW_DOWN) {\n this.focusNextItem(event, elements, 1);\n } else if (code === ENTER || code === SPACE) {\n this.handleAutoClose(event);\n } else {\n stop = false;\n }\n if (stop) {\n stopEvent(event);\n }\n },\n getFocusableListItemElements() {\n var _this$$refs$content;\n const items = (_this$$refs$content = this.$refs.content) === null || _this$$refs$content === void 0 ? void 0 : _this$$refs$content.querySelectorAll(ITEM_SELECTOR);\n return filterVisible(Array.from(items || []));\n },\n focusNextItem(event, elements, offset) {\n const {\n target\n } = event;\n const currentIndex = elements.indexOf(target);\n const nextIndex = clamp(currentIndex + offset, 0, elements.length - 1);\n this.focusItem(nextIndex, elements);\n },\n focusItem(index, elements) {\n var _elements$index;\n this.nextFocusedItemIndex = index;\n (_elements$index = elements[index]) === null || _elements$index === void 0 ? void 0 : _elements$index.focus();\n },\n closeAndFocus() {\n this.$refs.baseDropdown.closeAndFocus();\n },\n handleAction(action) {\n // See https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/4376 for\n // detailed explanation why we need requestAnimationFrame\n window.requestAnimationFrame(() => {\n /**\n * Emitted when one of disclosure dropdown items is clicked\n *\n * @event action\n */\n this.$emit('action', action);\n });\n },\n handleAutoClose(e) {\n if (this.autoClose && e.target.closest(ITEM_SELECTOR) && e.target.closest(DROPDOWN_SELECTOR) === this.$refs.baseDropdown.$el) {\n this.closeAndFocus();\n }\n },\n uniqueItemId() {\n return uniqueId(`disclosure-item-`);\n },\n isItem\n },\n GL_DROPDOWN_CONTENTS_CLASS\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-base-dropdown',{ref:\"baseDropdown\",staticClass:\"gl-disclosure-dropdown\",attrs:{\"aria-labelledby\":_vm.toggleAriaLabelledBy,\"toggle-id\":_vm.toggleId,\"toggle-text\":_vm.toggleText,\"toggle-class\":_vm.toggleClass,\"text-sr-only\":_vm.textSrOnly,\"category\":_vm.category,\"variant\":_vm.variant,\"size\":_vm.size,\"icon\":_vm.icon,\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"no-caret\":_vm.noCaret,\"placement\":_vm.placement,\"block\":_vm.block,\"offset\":_vm.dropdownOffset,\"fluid-width\":_vm.fluidWidth,\"positioning-strategy\":_vm.positioningStrategy},on:_vm._d({},[_vm.$options.events.GL_DROPDOWN_SHOWN,_vm.onShow,_vm.$options.events.GL_DROPDOWN_HIDDEN,_vm.onHide,_vm.$options.events.GL_DROPDOWN_BEFORE_CLOSE,_vm.onBeforeClose,_vm.$options.events.GL_DROPDOWN_FOCUS_CONTENT,_vm.onKeydown]),scopedSlots:_vm._u([(_vm.hasCustomToggle)?{key:\"toggle\",fn:function(){return [_vm._t(\"toggle\")]},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._t(\"header\"),_vm._v(\" \"),_c(_vm.disclosureTag,{ref:\"content\",tag:\"component\",class:_vm.$options.GL_DROPDOWN_CONTENTS_CLASS,attrs:{\"id\":_vm.disclosureId,\"aria-labelledby\":_vm.listAriaLabelledBy || _vm.toggleId,\"data-testid\":\"disclosure-content\",\"tabindex\":\"-1\"},on:{\"keydown\":_vm.onKeydown,\"click\":_vm.handleAutoClose}},[_vm._t(\"default\",function(){return [_vm._l((_vm.items),function(item,index){return [(_vm.isItem(item))?[_c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([('list-item' in _vm.$scopedSlots)?{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":item})]},proxy:true}:null],null,true)})]:[_c('gl-disclosure-dropdown-group',{key:item.name,attrs:{\"bordered\":index !== 0,\"group\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([(_vm.$scopedSlots['group-label'])?{key:\"group-label\",fn:function(){return [_vm._t(\"group-label\",null,{\"group\":item})]},proxy:true}:null],null,true)},[_vm._v(\" \"),(_vm.$scopedSlots['list-item'])?_vm._l((item.items),function(groupItem){return _c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":groupItem},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":groupItem})]},proxy:true}],null,true)})}):_vm._e()],2)]]})]})],2),_vm._v(\" \"),_vm._t(\"footer\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\nexport { DROPDOWN_SELECTOR, ITEM_SELECTOR };\n","import { BLink } from '../../../../vendor/bootstrap-vue/src/components/link/link';\nimport { ENTER, SPACE } from '../constants';\nimport { stopEvent } from '../../../../utils/utils';\nimport { isItem } from './utils';\nimport { DISCLOSURE_DROPDOWN_ITEM_NAME } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst ITEM_CLASS = 'gl-new-dropdown-item';\nvar script = {\n name: DISCLOSURE_DROPDOWN_ITEM_NAME,\n ITEM_CLASS,\n components: {\n BLink\n },\n props: {\n item: {\n type: Object,\n required: false,\n default: null,\n validator: isItem\n }\n },\n computed: {\n isLink() {\n var _this$item, _this$item2;\n return typeof ((_this$item = this.item) === null || _this$item === void 0 ? void 0 : _this$item.href) === 'string' || typeof ((_this$item2 = this.item) === null || _this$item2 === void 0 ? void 0 : _this$item2.to) === 'string';\n },\n isCustomContent() {\n return Boolean(this.$scopedSlots.default);\n },\n itemComponent() {\n const {\n item\n } = this;\n if (this.isLink) return {\n is: BLink,\n attrs: {\n href: item.href,\n to: item.to,\n ...item.extraAttrs\n },\n listeners: {\n click: this.action\n }\n };\n return {\n is: 'button',\n attrs: {\n ...(item === null || item === void 0 ? void 0 : item.extraAttrs),\n type: 'button'\n },\n listeners: {\n click: () => {\n var _item$action;\n item === null || item === void 0 ? void 0 : (_item$action = item.action) === null || _item$action === void 0 ? void 0 : _item$action.call(undefined, item);\n this.action();\n }\n }\n };\n },\n listIndex() {\n var _this$item3, _this$item3$extraAttr;\n return (_this$item3 = this.item) !== null && _this$item3 !== void 0 && (_this$item3$extraAttr = _this$item3.extraAttrs) !== null && _this$item3$extraAttr !== void 0 && _this$item3$extraAttr.disabled ? null : 0;\n },\n componentIndex() {\n var _this$item4, _this$item4$extraAttr;\n return (_this$item4 = this.item) !== null && _this$item4 !== void 0 && (_this$item4$extraAttr = _this$item4.extraAttrs) !== null && _this$item4$extraAttr !== void 0 && _this$item4$extraAttr.disabled ? null : -1;\n },\n wrapperClass() {\n var _this$item$wrapperCla, _this$item5;\n return (_this$item$wrapperCla = (_this$item5 = this.item) === null || _this$item5 === void 0 ? void 0 : _this$item5.wrapperClass) !== null && _this$item$wrapperCla !== void 0 ? _this$item$wrapperCla : '';\n },\n wrapperListeners() {\n const listeners = {\n keydown: this.onKeydown\n };\n if (this.isCustomContent) {\n listeners.click = this.action;\n }\n return listeners;\n }\n },\n methods: {\n onKeydown(event) {\n const {\n code\n } = event;\n if (code === ENTER || code === SPACE) {\n if (this.isCustomContent) {\n this.action();\n } else {\n stopEvent(event);\n /** Instead of simply navigating or calling the action, we want\n * the `a/button` to be the target of the event as it might have additional attributes.\n * E.g. `a` might have `target` attribute.\n */\n const e = new MouseEvent('click', {\n bubbles: true,\n cancelable: true\n });\n if (this.isLink) {\n this.$refs.item.$el.dispatchEvent(e);\n } else {\n var _this$$refs$item;\n (_this$$refs$item = this.$refs.item) === null || _this$$refs$item === void 0 ? void 0 : _this$$refs$item.dispatchEvent(e);\n }\n }\n }\n },\n action() {\n this.$emit('action', this.item);\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',_vm._g({class:[_vm.$options.ITEM_CLASS, _vm.wrapperClass],attrs:{\"tabindex\":_vm.listIndex,\"data-testid\":\"disclosure-dropdown-item\"}},_vm.wrapperListeners),[_vm._t(\"default\",function(){return [_c(_vm.itemComponent.is,_vm._g(_vm._b({ref:\"item\",tag:\"component\",staticClass:\"gl-new-dropdown-item-content\",attrs:{\"tabindex\":_vm.componentIndex}},'component',_vm.itemComponent.attrs,false),_vm.itemComponent.listeners),[_c('span',{staticClass:\"gl-new-dropdown-item-text-wrapper\"},[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n \"+_vm._s(_vm.item.text)+\"\\n \")]})],2)])]})],2)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\nexport { ITEM_CLASS };\n","import uniqueId from 'lodash/uniqueId';\nimport GlDisclosureDropdownItem from './disclosure_dropdown_item';\nimport { isGroup } from './utils';\nimport { DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS, DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst BORDER_CLASSES = {\n [DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.top]: 'gl-border-t gl-border-t-dropdown gl-pt-2 gl-mt-2',\n [DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.bottom]: 'gl-border-b gl-border-b-dropdown gl-pb-2 gl-mb-2'\n};\nvar script = {\n name: DISCLOSURE_DROPDOWN_GROUP_NAME,\n components: {\n GlDisclosureDropdownItem\n },\n props: {\n /**\n * Group of items\n */\n group: {\n type: Object,\n required: false,\n default: null,\n validator: isGroup\n },\n /**\n * If 'true', will set top border for the group\n * to separate from other groups. You can control\n * the border position using the `borderPosition`\n * property.\n */\n bordered: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Controls the position of the group's border. Valid\n * values are 'top' and 'bottom'.\n */\n borderPosition: {\n type: String,\n required: false,\n default: DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.top,\n validator: value => Object.keys(DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS).includes(value)\n }\n },\n computed: {\n borderClass() {\n return this.bordered ? BORDER_CLASSES[this.borderPosition] : null;\n },\n showHeader() {\n var _this$group;\n return this.$scopedSlots['group-label'] || ((_this$group = this.group) === null || _this$group === void 0 ? void 0 : _this$group.name);\n },\n groupLabeledBy() {\n return this.showHeader ? this.nameId : null;\n }\n },\n created() {\n this.nameId = uniqueId('gl-disclosure-dropdown-group-');\n },\n methods: {\n handleAction(action) {\n this.$emit('action', action);\n },\n uniqueItemId() {\n return uniqueId(`disclosure-item-`);\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:_vm.borderClass},[(_vm.showHeader)?_c('div',{staticClass:\"gl-py-2 gl-pl-4 gl-text-sm gl-font-bold gl-text-strong\",attrs:{\"id\":_vm.nameId,\"aria-hidden\":\"true\"}},[_vm._t(\"group-label\",function(){return [_vm._v(_vm._s(_vm.group.name))]})],2):_vm._e(),_vm._v(\" \"),_c('ul',{staticClass:\"gl-mb-0 gl-list-none gl-pl-0\",attrs:{\"aria-labelledby\":_vm.groupLabeledBy}},[_vm._t(\"default\",function(){return _vm._l((_vm.group.items),function(item){return _c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":item})]},proxy:true}],null,true)})})})],2)])};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\nexport { BORDER_CLASSES };\n","import { BLink } from '../../../vendor/bootstrap-vue/src/components/link/link';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlBreadcrumbItem',\n components: {\n BLink\n },\n inheritAttrs: false,\n props: {\n text: {\n type: String,\n required: false,\n default: null\n },\n to: {\n type: [String, Object],\n required: false,\n default: null\n },\n href: {\n type: String,\n required: false,\n default: null\n },\n ariaCurrent: {\n type: [String, Boolean],\n required: false,\n default: false,\n validator(value) {\n return [false, 'page'].indexOf(value) !== -1;\n }\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"gl-breadcrumb-item\"},[_c('b-link',{attrs:{\"href\":_vm.href,\"to\":_vm.to,\"aria-current\":_vm.ariaCurrent}},[_vm._t(\"default\",function(){return [_vm._v(_vm._s(_vm.text))]})],2)],1)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import debounce from 'lodash/debounce';\nimport { translate } from '../../../utils/i18n';\nimport GlAvatar from '../avatar/avatar';\nimport GlDisclosureDropdown from '../new_dropdowns/disclosure/disclosure_dropdown';\nimport { GlTooltipDirective } from '../../../directives/tooltip';\nimport GlBreadcrumbItem from './breadcrumb_item';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nvar script = {\n name: 'GlBreadcrumb',\n components: {\n GlBreadcrumbItem,\n GlAvatar,\n GlDisclosureDropdown\n },\n directives: {\n GlTooltip: GlTooltipDirective\n },\n inheritAttrs: false,\n props: {\n /**\n * The breadcrumb items to be displayed as links.\n */\n items: {\n type: Array,\n required: true,\n default: () => [{\n text: '',\n href: ''\n }],\n validator: items => {\n return items.every(item => {\n const keys = Object.keys(item);\n return keys.includes('text') && (keys.includes('href') || keys.includes('to'));\n });\n }\n },\n ariaLabel: {\n type: String,\n required: false,\n default: 'Breadcrumb'\n },\n /**\n * The label for the collapsed dropdown toggle. Screen-reader only.\n */\n showMoreLabel: {\n type: String,\n required: false,\n default: () => translate('GlBreadcrumb.showMoreLabel', 'Show more breadcrumbs')\n },\n /**\n * Allows to disable auto-resize behavior. Items will then overflow their container instead of being collapsed into a dropdown.\n */\n autoResize: {\n type: Boolean,\n required: false,\n default: true\n }\n },\n data() {\n return {\n fittingItems: [...this.items],\n // array of items that fit on the screen\n overflowingItems: [],\n // array of items that didn't fit and were put in a dropdown instead\n totalBreadcrumbsWidth: 0,\n // the total width of all breadcrumb items combined\n widthPerItem: [],\n // array with the indivudal widths of each breadcrumb item\n resizeDone: false // to apply some CSS only during/after resizing\n };\n },\n computed: {\n hasCollapsible() {\n return this.overflowingItems.length > 0;\n },\n breadcrumbStyle() {\n return this.resizeDone ? {} : {\n opacity: 0\n };\n },\n itemStyle() {\n /**\n * If the last/only item, which is always visible, has a very long title,\n * it could overflow the breadcrumb component. This CSS makes sure it\n * shows an ellipsis instead.\n * But this CSS cannot be active while we do the size calculation, as that\n * would then not take the real unshrunk width of that item into account.\n */\n if (this.resizeDone && this.fittingItems.length === 1) {\n return {\n 'flex-shrink': 1,\n 'text-overflow': 'ellipsis',\n 'overflow-x': 'hidden',\n 'text-wrap': 'nowrap'\n };\n }\n return {};\n }\n },\n watch: {\n items: {\n handler: 'measureAndMakeBreadcrumbsFit',\n deep: true\n },\n autoResize(newValue) {\n if (newValue) this.enableAutoResize();else this.disableAutoResize();\n }\n },\n created() {\n this.debounceMakeBreadcrumbsFit = debounce(this.makeBreadcrumbsFit, 25);\n },\n mounted() {\n if (this.autoResize) {\n this.enableAutoResize();\n } else {\n this.resizeDone = true;\n }\n },\n beforeDestroy() {\n this.disableAutoResize();\n },\n methods: {\n resetItems() {\n this.fittingItems = [...this.items];\n this.overflowingItems = [];\n },\n async measureAndMakeBreadcrumbsFit() {\n this.resetItems();\n if (!this.autoResize) return;\n this.resizeDone = false;\n\n // Wait for DOM update so all items get rendered and can be measured.\n await this.$nextTick();\n this.totalBreadcrumbsWidth = 0;\n if (!this.$refs.breadcrumbs) return;\n this.$refs.breadcrumbs.forEach((b, index) => {\n const width = b.$el.clientWidth;\n this.totalBreadcrumbsWidth += width;\n this.widthPerItem[index] = width;\n });\n this.makeBreadcrumbsFit();\n },\n makeBreadcrumbsFit() {\n this.resizeDone = false;\n this.resetItems();\n const containerWidth = this.$el.clientWidth;\n const buttonWidth = 40; // px\n\n if (this.totalBreadcrumbsWidth > containerWidth) {\n // Not all breadcrumb items fit. Start moving items over to the dropdown.\n const startSlicingAt = 0;\n\n // The last item will never be moved into the dropdown.\n const stopSlicingAt = this.items.length - 1;\n let widthNeeded = this.totalBreadcrumbsWidth;\n for (let index = startSlicingAt; index < stopSlicingAt; index += 1) {\n // Move one breadcrumb item into the dropdown\n this.overflowingItems.push(this.fittingItems[startSlicingAt]);\n this.fittingItems.splice(startSlicingAt, 1);\n widthNeeded -= this.widthPerItem[index];\n\n // Does it fit now? Then stop.\n if (widthNeeded + buttonWidth < containerWidth) break;\n }\n }\n this.resizeDone = true;\n },\n isLastItem(index) {\n return index === this.fittingItems.length - 1;\n },\n getAriaCurrentAttr(index) {\n return this.isLastItem(index) ? 'page' : false;\n },\n enableAutoResize() {\n this.resizeObserver || (this.resizeObserver = new ResizeObserver(this.debounceMakeBreadcrumbsFit));\n this.resizeObserver.observe(this.$el);\n this.measureAndMakeBreadcrumbsFit();\n },\n disableAutoResize() {\n if (this.resizeObserver) {\n this.resizeObserver.unobserve(this.$el);\n this.resizeObserver = null;\n }\n this.resetItems();\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:\"gl-breadcrumbs\",style:(_vm.breadcrumbStyle),attrs:{\"aria-label\":_vm.ariaLabel}},[_c('ol',_vm._g(_vm._b({staticClass:\"gl-breadcrumb-list breadcrumb\"},'ol',_vm.$attrs,false),_vm.$listeners),[(_vm.hasCollapsible)?_c('li',{staticClass:\"gl-breadcrumb-item\"},[_c('gl-disclosure-dropdown',{attrs:{\"items\":_vm.overflowingItems,\"toggle-text\":_vm.showMoreLabel,\"fluid-width\":\"\",\"text-sr-only\":\"\",\"no-caret\":\"\",\"icon\":\"ellipsis_h\",\"size\":\"small\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.fittingItems),function(item,index){return _c('gl-breadcrumb-item',{key:index,ref:\"breadcrumbs\",refInFor:true,style:(_vm.itemStyle),attrs:{\"text\":item.text,\"href\":item.href,\"to\":item.to,\"aria-current\":_vm.getAriaCurrentAttr(index)}},[(item.avatarPath)?_c('gl-avatar',{staticClass:\"gl-breadcrumb-avatar-tile gl-border gl-mr-2 !gl-rounded-base\",attrs:{\"src\":item.avatarPath,\"size\":16,\"aria-hidden\":\"true\",\"shape\":\"rect\",\"data-testid\":\"avatar\"}}):_vm._e(),_c('span',{staticClass:\"gl-align-middle\"},[_vm._v(_vm._s(item.text))])],1)})],2)])};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n"],"sourceRoot":""}