{"version":3,"sources":["webpack:///./vue_shared/components/download_dropdown/download_dropdown.vue","webpack:///./vue_shared/components/download_dropdown/download_dropdown.vue?3335","webpack:///vue_shared/components/download_dropdown/download_dropdown.vue","webpack:///./vue_shared/components/download_dropdown/download_dropdown.vue?8006","webpack:///./helpers/event_hub_factory.js","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"],"names":["components","GlDisclosureDropdown","GlDisclosureDropdownGroup","directives","GlTooltip","GlTooltipDirective","props","downloadLinks","type","Array","required","downloadArtifacts","cssClass","String","default","computed","hasDownloadLinks","length","hasDownloadArtifacts","showDownloadArtifactsBorder","sourceCodeGroup","items","map","link","text","href","path","extraAttrs","rel","download","name","$options","i18n","downloadSourceCode","artifactsGroup","methods","closeDropdown","$refs","dropdown","close","defaultLabel","__","component","_vm","this","_c","_self","rawName","modifiers","ref","class","attrs","on","_e","_v","EventHub","constructor","$_all","Map","dispose","clear","$on","handler","handlers","get","push","set","$off","newHandlers","filter","x","delete","$once","_this","wrapHandler","args","$emit","forEach","isItem","item","Boolean","_item$text","isArray","itemValidator","isGroup","group","every","itemsValidator","hasOnlyListItemsVue2","defaultSlot","nodes","tags","vNode","tag","_vNode$componentOptio","componentOptions","includes","isValidSlotTagVue2","hasOnlyListItemsVue3","fragment","find","node","children","trim","_vNode$type","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","GlBaseDropdown","GlDisclosureDropdownItem","validator","toggleText","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","_this$items","$scopedSlots","$slots","toggle","open","baseDropdown","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","_h","$createElement","staticClass","_d","onShow","onHide","onBeforeClose","onKeydown","scopedSlots","_u","key","fn","_t","proxy","disclosureTag","_l","handleAction","groupItem","staticRenderFns","ITEM_CLASS","BLink","_this$item","_this$item2","to","isLink","is","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"],"mappings":"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","file":"commons-pages.projects.blob.show-pages.projects.branches.index-pages.projects.show-pages.projects.ta-c9380b86.ec1d4bb3.chunk.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-disclosure-dropdown',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],ref:\"dropdown\",class:_vm.cssClass,attrs:{\"toggle-text\":_vm.$options.i18n.defaultLabel,\"title\":_vm.$options.i18n.defaultLabel,\"category\":\"secondary\",\"placement\":\"bottom-end\",\"icon\":\"download\",\"text-sr-only\":\"\",\"fluid-width\":\"\",\"data-testid\":\"download-source-code-button\",\"auto-close\":false}},[(_vm.hasDownloadLinks)?_c('gl-disclosure-dropdown-group',{attrs:{\"group\":_vm.sourceCodeGroup,\"data-testid\":\"source-code-group\"},on:{\"action\":_vm.closeDropdown}}):_vm._e(),_vm._v(\" \"),(_vm.hasDownloadArtifacts)?_c('gl-disclosure-dropdown-group',{attrs:{\"group\":_vm.artifactsGroup,\"bordered\":_vm.showDownloadArtifactsBorder,\"data-testid\":\"artifacts-group\"},on:{\"action\":_vm.closeDropdown}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./download_dropdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./download_dropdown.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./download_dropdown.vue?vue&type=template&id=5ba7d028\"\nimport script from \"./download_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./download_dropdown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * An event hub with a Vue instance like API\n *\n * NOTE: This is a derivative work from [mitt][1] v1.2.0 which is licensed by\n * [MIT License][2] © [Jason Miller][3]\n *\n * [1]: https://github.com/developit/mitt\n * [2]: https://opensource.org/licenses/MIT\n * [3]: https://jasonformat.com/\n */\nclass EventHub {\n constructor() {\n this.$_all = new Map();\n }\n\n dispose() {\n this.$_all.clear();\n }\n\n /**\n * Register an event handler for the given type.\n *\n * @param {string|symbol} type Type of event to listen for\n * @param {Function} handler Function to call in response to given event\n */\n $on(type, handler) {\n const handlers = this.$_all.get(type);\n const added = handlers && handlers.push(handler);\n\n if (!added) {\n this.$_all.set(type, [handler]);\n }\n }\n\n /**\n * Remove an event handler or all handlers for the given type.\n *\n * @param {string|symbol} type Type of event to unregister `handler`\n * @param {Function} handler Handler function to remove\n */\n $off(type, handler) {\n const handlers = this.$_all.get(type) || [];\n\n const newHandlers = handler ? handlers.filter((x) => x !== handler) : [];\n\n if (newHandlers.length) {\n this.$_all.set(type, newHandlers);\n } else {\n this.$_all.delete(type);\n }\n }\n\n /**\n * Add an event listener to type but only trigger it once\n *\n * @param {string|symbol} type Type of event to listen for\n * @param {Function} handler Handler function to call in response to event\n */\n $once(type, handler) {\n const wrapHandler = (...args) => {\n this.$off(type, wrapHandler);\n handler(...args);\n };\n this.$on(type, wrapHandler);\n }\n\n /**\n * Invoke all handlers for the given type.\n *\n * @param {string|symbol} type The event type to invoke\n * @param {Any} [evt] Any value passed to each handler\n */\n $emit(type, ...args) {\n const handlers = this.$_all.get(type) || [];\n\n handlers.forEach((handler) => {\n handler(...args);\n });\n }\n}\n\n/**\n * Return a Vue like event hub\n *\n * - $on\n * - $off\n * - $once\n * - $emit\n *\n * We'd like to shy away from using a full fledged Vue instance from this in the future.\n */\nexport default () => {\n return new EventHub();\n};\n","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"],"sourceRoot":""}