{"version":3,"sources":["webpack:////build/source/node_modules/lodash/clamp.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/utils.js","webpack:////build/source/node_modules/lodash/isNil.js","webpack:////build/source/node_modules/lodash/_baseClamp.js","webpack:////build/source/node_modules/jquery.caret/dist/jquery.caret.js","webpack:///./vue_shared/components/local_storage_sync.vue?a4c7","webpack:///vue_shared/components/local_storage_sync.vue","webpack:///./vue_shared/components/local_storage_sync.vue","webpack:///./vue_shared/components/markdown/markdown_editor.vue","webpack:///vue_shared/components/markdown/markdown_editor.vue","webpack:///./vue_shared/components/markdown/markdown_editor.vue?d0a9","webpack:///./vue_shared/components/markdown/markdown_editor.vue?00ed","webpack:////build/source/node_modules/@gitlab/ui/dist/directives/outside/outside.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/directives/modal/modal.js","webpack:////build/source/node_modules/modern-screenshot/dist/index.js","webpack:////build/source/node_modules/@gitlab/at.js/dist/js/jquery.atwho.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/constants.js","webpack:////build/source/node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","webpack:////build/source/node_modules/@floating-ui/utils/dist/floating-ui.utils.esm.js","webpack:///./zen_mode.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_search_input.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_group.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/utilities/intersection_observer/intersection_observer.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/search_box_by_type/search_box_by_type.js","webpack:///./vue_shared/components/markdown/mount_markdown_editor.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/base_dropdown/constants.js","webpack:///./vue_shared/mixins/modal_keyboard_navigation_mixin.js","webpack:////build/source/node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_item.js"],"names":["baseClamp","toNumber","module","exports","number","lower","upper","undefined","isOption","item","Boolean","value","isGroup","options","arguments","length","Array","isArray","every","hasNoDuplicates","array","Set","size","flattenedOptions","items","flatMap","itemsValidator","isAllOptionsOrAllGroups","map","_ref","hasUniqueValues","filter","_ref2","text","hasUniqueGroups","this","$","root","returnExportsGlobal","EditableCaret","InputCaret","Mirror","Utils","methods","oDocument","oWindow","setContextBy","$inputor","domInputor","prototype","setPos","pos","fn","found","offset","sel","getSelection","parent","node","range","_i","_len","_results","childNodes","nodeType","createRange","setStart","removeAllRanges","addRange","push","getIEPosition","getPosition","inputor_offset","getOffset","left","top","getOldIEPos","preCaretTextRange","textRange","selection","body","createTextRange","moveToElementText","setEndPoint","getPos","clonedRange","cloneRange","selectNodeContents","setEnd","endContainer","endOffset","toString","detach","getOldIEOffset","rect","duplicate","moveStart","height","getBoundingClientRect","bottom","shadowCaret","width","createTextNode","insertNode","selectNode","remove","scrollTop","scrollLeft","rangeCount","getRangeAt","getIEPos","endRange","inputor","len","textInputRange","parentElement","replace","moveToBookmark","getBookmark","collapse","compareEndPoints","selectionStart","move","select","setSelectionRange","getIEOffset","boundingLeft","boundingTop","boundingHeight","position","end_range","format","html","start_range","test","navigator","userAgent","val","slice","create","inputorOffset","css_attr","mirrorCss","css","_this","zIndex","prop","each","i","p","$mirror","after","$flag","find","contentEditable","settings","iframe","contentWindow","contentDocument","document","window","caret","method","isPlainObject","apply","error","apis","factory","props","storageKey","type","String","required","Number","Object","default","asString","persist","clear","watch","newVal","saveValue","serialize","localStorage","removeItem","mounted","exists","getStorageValue","_isEqual","$emit","getItem","deserialize","console","warn","setItem","_isString","JSON","stringify","parse","render","_this$$scopedSlots$de","_this$$scopedSlots","$scopedSlots","call","component","staticRenderFns","async","waitFor","getEl","interval","timeout","el","t","Promise","resolve","setTimeout","sleep","components","GlAlert","MarkdownField","LocalStorageSync","ContentEditor","setFacade","Function","renderMarkdownPath","uploadsPath","uploads_path","enableContentEditor","formFieldProps","autofocus","enableAutocomplete","autocompleteDataSources","supportsQuickActions","autosaveKey","markdownDocsPath","drawioEnabled","disabled","disableAttachments","codeSuggestionsConfig","noteableType","restrictedToolBarItems","restoreFromAutosave","data","_window$gon","editingMode","gon","text_editor","EDITING_MODE_CONTENT_EDITOR","EDITING_MODE_MARKDOWN_FIELD","$options","EDITING_MODE_KEY","autosaveValue","getDraft","alert","markdown","autofocused","computed","isContentEditorActive","contentEditorAutofocused","markdownFieldRestrictedToolBarItems","restrictAttachments","isDefaultEditorEnabled","_window$gon2","includes","_this$setFacade","autofocusTextarea","saveDraft","getValue","setValue","eventHub","$on","CLEAR_AUTOSAVE_ENTRY_EVENT","clearDraft","beforeDestroy","$off","updateValue","autosizeTextarea","append","_this2","focus","newValue","trim","join","$nextTick","setTemplate","template","force","_this3","dismiss","message","i18n","applyTemplateAlert","variant","primaryButtonText","secondaryButtonText","primaryAction","secondaryAction","updateMarkdownFromContentEditor","updateMarkdownFromMarkdownField","target","renderMarkdown","url","setUrlParams","render_quick_actions","joinPaths","location","origin","axios","post","then","otherData","onEditingModeChange","notifyEditingModeChange","onEditingModeRestored","_this4","componentToFocus","$refs","contentEditor","textarea","setEditorAsAutofocused","updateDraft","key","togglePreview","markdownField","previewMarkdown","_this5","Autosize","update","onKeydown","event","ctrlKey","metaKey","preventDefault","__","_vm","_c","_self","staticClass","_e","attrs","on","_v","_s","ref","placeholder","$event","scopedSlots","_u","_t","proxy","_b","domProps","canSuggest","line","lines","showPopover","$attrs","callbacks","Map","activeEventTypes","lastMousedown","globalListener","forEach","element","callback","eventTypes","originalEvent","contains","e","onMousedown","OutsideDirective","bind","bindings","_ref3","arg","modifiers","modifiersList","keys","parseBinding","has","set","eventType","addEventListener","capture","add","startListening","unbind","entry","get","eventTypesToUnbind","delete","values","removeEventListener","ROOT_ACTION_EVENT_NAME_SHOW","PROPERTY","getTarget","reverse","getTriggerElement","setRole","trigger","tagName","oldProp","handler","componentUpdated","binding","vnode","currentTarget","keyCode","VBModal","inserted","updated","h","Ue","Qt","defineProperty","Zt","defineProperties","er","getOwnPropertyDescriptors","Z","getOwnPropertySymbols","Le","hasOwnProperty","Me","propertyIsEnumerable","Oe","Math","pow","Be","C","T","enumerable","configurable","writable","D","L","E","N","M","z","R","W","next","j","O","throw","done","charCodeAt","Int32Array","r","n","ae","Uint8Array","a","s","o","ee","F","ze","se","Xe","te","ie","X","re","k","q","className","ce","V","style","Qe","_","G","le","at","A","lt","createElement","toDataURL","ne","startsWith","ue","match","protocol","Y","implementation","createHTMLDocument","head","appendChild","href","ownerDocument","J","fe","createElementNS","setAttributeNS","de","XMLSerializer","serializeToString","encodeURIComponent","ut","toBlob","Error","quality","l","split","atob","u","Blob","ft","me","FileReader","onload","result","onerror","onabort","readAsDataURL","readAsArrayBuffer","dt","U","decoding","loading","src","onError","clearTimeout","c","currentSrc","poster","readyState","f","d","m","once","baseVal","decode","dataset","originalSrc","complete","ge","all","from","querySelectorAll","he","random","we","toLowerCase","gt","time","it","timeEnd","ct","ht","cache","x","Ge","pe","autoDestruct","w","b","g","scale","workerUrl","workerNumber","debug","features","defaultView","backgroundColor","maximumCanvasSize","progress","fetch","requestInit","bypassingCache","placeholderImage","fetchFn","font","drawImageInterval","onCloneNode","onEmbedNode","onCreateForeignObjectSvg","includeStyleProperties","__CONTEXT__","log","ownerWindow","dpi","svgStyleElement","ye","svgDefsElement","svgStyles","defaultComputedStyles","workers","S","Worker","onmessage","y","P","Q","$e","v","I","reject","onmessageerror","fontFamilies","fontCssTexts","acceptOfImage","requests","drawImageCount","tasks","isEnable","getAttribute","wt","pt","canvas","context2d","floor","getContext","fillStyle","fillRect","yt","drawImage","bt","St","be","nodeName","sandbox","id","visibility","write","namespaceURI","textContent","getComputedStyle","getPropertyValue","removeChild","Se","getPropertyPriority","lastIndexOf","substring","Et","Ct","Ee","cloneNode","putImageData","getImageData","xt","et","st","oe","Nt","srcset","kt","crossOrigin","currentTime","offsetWidth","offsetHeight","It","Ce","Te","rt","nt","currentParentNodeStyle","currentNodeStyle","transform","DOMMatrix","translateSelf","Dt","ve","shadowRoot","firstChild","nextSibling","assignedNodes","Pt","Ze","getAttributeNames","removeAttribute","classList","scrollWidth","clientWidth","setProperty","At","Rt","scrollHeight","clientHeight","Tt","innerHTML","tt","ot","setAttribute","vt","Ae","Ft","responseType","indexOf","We","AbortController","abort","signal","ok","cause","blob","finally","H","requestType","imageDom","RegExp","Date","getTime","headers","accept","response","postMessage","rawUrl","catch","Ne","Ie","ke","Ut","$t","cssText","De","styleSheets","cssRules","constructor","name","Je","Bt","xe","exec","lastIndex","Lt","insertRule","rule","Ye","some","parentStyleSheet","Mt","Ot","preferredFormat","jt","Re","Wt","Ke","querySelector","insertAdjacentHTML","Vt","qt","Pe","pop","Ht","insertBefore","children","K","B","He","ceil","btoa","fromCharCode","Fe","createContext","destroyContext","domToBlob","mt","domToCanvas","domToDataUrl","domToForeignObjectSvg","domToImage","domToJpeg","domToPixel","domToPng","domToSvg","domToWebp","loadMedia","waitUntilLoad","Symbol","toStringTag","a0","DEFAULT_CALLBACKS","KEY_CODE","App","ESC","TAB","ENTER","CTRL","LEFT","UP","RIGHT","DOWN","BACKSPACE","SPACE","beforeSave","Controller","arrayToDefaultHash","matcher","flag","subtext","should_startWithSpace","acceptSpaceBar","_a","_y","decodeURI","query","searchKey","remoteFilter","sorter","atwho_order","sort","tplEval","tpl","tag","error1","highlighter","li","regexp","str","$1","$2","$3","beforeInsert","$li","beforeReposition","afterMatchFailed","currentFlag","controllers","aliasMaps","setupRootElement","listen","createContainer","doc","$el","asRoot","parentWindow","frameElement","atwho","iframeAsRoot","controller","current","setContextFor","reg","setting","base","is","EditableController","TextareaController","alias","init","view","hide","isComposing","dispatch","onKeyup","expectedQueryCBId","getOpt","lastScrollTop","currentScrollTop","shutdown","destroy","off","results","lookUp","noop","visible","prev","highlighted","choose","app","at1","uid","model","Model","View","substr","extend","reload","callDefault","args","funcName","eventName","default_value","insertContentFor","renderView","wait","catchQuery","_delayLookUp","_lookUp","now","remaining","previousCallTime","_stopDelayedCall","delayedCallTimeout","_generateQueryCBId","_callback","queryCBId","Api","child","hasProp","ctor","__super__","superClass","caretPos","content","end","isString","start","iframeOffset","scaleBottom","insert","source","startStr","suffix","max","headPos","change","_getRange","_setRange","setEndAfter","setStartAfter","setEndBefore","setStartBefore","_clearRange","ctrl_a_pressed","_movingEvent","which","_unwrap","unwrap","nodeValue","$inserted","$query","_range","index","lastNode","matched","query_content","collapsed","startContainer","closest","contents","last","ELEMENT_NODE","startOffset","cloneContents","TEXT_NODE","previousSibling","addClass","siblings","removeClass","attr","empty","surroundContents","hasClass","first","getClientRects","overrides","suffixNode","context","storage","saved","_remoteFilter","save","load","_load","$elUl","timeoutID","bindEvent","header_tpl","prepend","$menu","lastCoordX","lastCoordY","$cur","clientX","clientY","expr","filters","stopShowing","reposition","_window","overflowOffset","nextEl","offsetTop","prevEl","show","isNaN","list","$ul","isSelecting","setIframe","run","_args","$this","displayTpl","insertTpl","headerTpl","functionOverrides","hideWithoutSuffix","startWithSpace","highlightFirst","limit","maxLen","minLen","displayTimeout","delay","spaceSelectsMatch","tabSelectsMatch","editableAtwhoQueryAttrs","scrollDuration","suspendOnComposing","lookUpOnClick","GL_DROPDOWN_SHOWN","GL_DROPDOWN_HIDDEN","GL_DROPDOWN_BEFORE_CLOSE","GL_DROPDOWN_FOCUS_CONTENT","ARROW_DOWN","ARROW_UP","END","HOME","POSITION_ABSOLUTE","POSITION_FIXED","GL_DROPDOWN_CONTENTS_CLASS","getWindow","_node$ownerDocument","getComputedStyle$1","isNode","Node","getNodeName","isHTMLElement","HTMLElement","isElement","Element","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","safari","isSafari","perspective","containerType","backdropFilter","willChange","contain","CSS","supports","isLastTraversableNode","min","round","createEmptyCoords","getCssDimensions","parseFloat","hasOffset","shouldFallback","unwrapElement","contextElement","getScale","domElement","isFinite","noOffsets","getVisualOffsets","isFixed","floatingOffsetParent","_win$visualViewport","_win$visualViewport2","win","visualViewport","offsetLeft","includeScale","isFixedStrategy","offsetParent","clientRect","visualOffsets","offsetWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","getDocumentElement","documentElement","getNodeScroll","pageXOffset","pageYOffset","getWindowScrollBarX","getParentNode","assignedSlot","parentNode","host","getOverflowAncestors","scrollableAncestor","getNearestOverflowAncestor","isBody","concat","getClientRectFromClippingAncestor","clippingAncestor","strategy","visualViewportBased","getViewportRect","scroll","direction","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","getTrueOffsetParent","polyfill","getOffsetParent","currentNode","getContainingBlock","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","platform","getClippingRect","boundary","rootBoundary","clippingAncestors","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","firstClippingAncestor","clippingRect","reduce","accRect","right","convertOffsetParentRelativeRectToViewportRelativeRect","getDimensions","reference","floating","getOffsetParentFn","getDimensionsFn","isRTL","autoUpdate","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","passive","cleanupIo","onMove","timeoutId","io","cleanup","disconnect","refresh","skip","threshold","rootMargin","isFirstUpdate","handleObserve","entries","ratio","intersectionRatio","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","requestAnimationFrame","prevRefRect","frameLoop","nextRefRect","computePosition","mergedOptions","platformWithCache","sides","alignments","placements","acc","side","oppositeSideMap","oppositeAlignmentMap","clamp","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getOppositeAxisPlacements","flipAlignment","isStart","lr","rl","tb","getSideList","getPaddingObject","padding","expandPaddingObject","rectToClientRect","Dropzone","autoDiscover","ZenMode","active_backdrop","active_textarea","storedStyle","enter","exit","backdrop","Mousetrap","pause","removeAttr","unpause","scrollToElement","duration","autosize","$dropzone","forElement","enable","__vue_script__","GlClearIconButton","GlIcon","$listeners","input","focusInput","_h","$createElement","_g","inputListeners","stopPropagation","clearInput","textSrOnly","nameId","class","GROUP_TOP_BORDER_CLASSES","HEADER_ITEMS_BORDER_CLASSES","events","GlBaseDropdown","GlListboxItem","GlListboxGroup","GlButton","GlSearchBoxByType","GlListboxSearchInput","GlLoadingIcon","GlIntersectionObserver","validator","selected","multiple","toggleText","headerText","category","primary","icon","toggleClass","noCaret","isCheckCentered","toggleAriaLabelledBy","listAriaLabelledBy","searchable","searching","infiniteScroll","totalItems","infiniteScrollLoading","noResultsText","searchPlaceholder","resetButtonLabel","showSelectAllButtonLabel","block","dropdownOffset","fluidWidth","positioningStrategy","startOpened","srOnlyResultsLabel","selectedValues","toggleId","listboxId","nextFocusedItemIndex","searchStr","topBoundaryVisible","bottomBoundaryVisible","hasItems","listboxTag","_this$flattenedOption","findIndex","showNoResultsText","showSelectAllButton","toggle","toggleClasses","hasSelection","footer","immediate","newSelected","observeScroll","open","_this$scrollObserver","scrollObserver","baseDropdown","close","groupClasses","_this$selectedIndices","focusSearchInput","focusItem","selectedIndices","getFocusableListItemElements","code","elements","stop","isSearchInput","matches","focusNextItem","_this$$refs$list","currentIndex","nextIndex","_elements$index","searchBox","isSelected","onMultiSelect","onSingleSelect","closeAndFocus","selectedValue","searchTerm","_this$scrollObserver2","observer","_entry$target","$__visibilityProp","isIntersecting","topBoundary","bottomBoundary","listboxToggleText","toggleButtonClasses","_d","onShow","onHide","headerId","onResetButtonClicked","onSelectAllButtonClicked","search","_k","$$v","expression","listboxClasses","itemTag","hasHeader","_l","isFocused","onSelect","listboxItemMoreItemsAriaAttributes","option","onIntersectionObserverAppear","hasFooter","getObserver","$_gl_intersectionHandler","$_gl_intersectionObserver","__vue_component__","GlFormInput","inheritAttrs","borderless","clearButtonTitle","isLoading","tooltipContainer","attributes","onInput","focusin","onFocusin","focusout","onFocusout","hasValue","_this$$refs$input","_this$$refs$clearButt","clearButton","relatedTarget","isInputOrClearButton","inputAttributes","showClearButton","MR_SOURCE_BRANCH","isFallbackKey","organizeQueryObject","obj","organizeQuery","queryToObject","legacySpacesDecode","objectToQuery","mountMarkdownEditor","_el$dataset$supportsQ","_el$dataset$enableAut","_el$dataset$disableAt","_el$dataset$autofocus","componentConfiguration","provide","quickActionsDocsPath","formFieldPlaceholder","formFieldClasses","testid","newIssuePath","parseBoolean","hiddenInput","formFieldName","formFieldId","formFieldValue","pathname","getSearchTerm","facade","assign","apolloProvider","VueApollo","defaultClient","createApolloClient","Vue","_gl$GfmAutoComplete","MarkdownEditor","gl","GfmAutoComplete","dataSources","resetAutosaveButtons","resetAutosaveButton","mountAutosaveClearOnSubmit","BASE_DROPDOWN_CLASS","directives","Outside","ariaHaspopup","ariaLabelledby","mainAxis","openedYet","baseDropdownId","_this$toggleText","hasNoVisibleToggleText","isIconOnly","toggleLabelledBy","isEllipsisButton","isCaretOnly","isDefaultToggle","buttonTextClasses","toggleButtonTextClasses","ariaAttributes","listeners","keydown","click","toggleOptions","_this$$refs$toggle","firstElementChild","middleware","allowedPlacements","_this$nonScrollableCo","availableHeight","contentsEl","contentsAvailableHeight","nonScrollableContentHeight","maxHeight","deep","toggleElement","checkToggleFocusable","stopFloating","calculateNonScrollableAreaHeight","MutationObserver","childList","subtree","stopAutoUpdate","floatingUIConfig","_this$observer","_this$stopAutoUpdate","prevented","startFloating","hadFocusWithin","activeElement","hasToggled","focusToggle","toggleOnEnter","toggleOnSpace","_this$$refs$content","scrollableArea","floatingElementBoundingBox","scrollableAreaBoundingBox","rawName","toggleComponent","toggleAttributes","toggleListeners","panelClasses","getFocusableOptions","_this$$refs$resultsLi","resultsList","HOME_KEY","END_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","ESC_KEY","modal","NUMPAD_ENTER_KEY","_event$target","_this$$refs$searchInp","searchInput","_clamp","computeCoordsFromPlacement","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","config","validMiddleware","getElementRects","statefulPlacement","middlewareData","resetCount","nextX","nextY","reset","initialPlacement","detectOverflow","state","_await$platform$isEle","elementContext","altBoundary","paddingObject","clippingClientRect","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","alignmentOffset","centerOffset","autoPlacement","_middlewareData$autoP","_middlewareData$autoP2","_placementsThatFitOnE","crossAxis","autoAlignment","detectOverflowOptions","placements$1","getPlacementList","currentPlacement","alignmentSides","currentOverflows","allOverflows","overflows","nextPlacement","placementsSortedByMostSpace","resetPlacement","flip","_middlewareData$arrow","_middlewareData$flip","checkMainAxis","checkCrossAxis","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","initialSideAxis","isBasePlacement","hasFallbackAxisSideDirection","overflowsData","_middlewareData$flip2","_overflowsData$filter","_overflowsData$filter2","currentSideAxis","getSideOffsets","isAnySideFullyClipped","referenceHiddenOffsets","referenceHidden","escapedOffsets","escaped","getBoundingRect","minX","minY","inline","nativeClientRects","clientRects","sortedRects","groups","prevRect","getRectsByLine","fallback","resetRects","firstRect","lastRect","isTop","isLeftSide","maxRight","minLeft","measureRects","_middlewareData$offse","diffCoords","mainAxisMulti","crossAxisMulti","rawValue","convertValueToCoords","shift","limiter","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","enabled","limitShift","rawOffset","computedOffset","limitMin","limitMax","_middlewareData$offse2","isOriginSide","_state$middlewareData","_state$middlewareData2","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","toggleSelection","checkedClasses"],"mappings":"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","file":"commons-pages.admin.topics.edit-pages.admin.topics.new-pages.groups.milestones.edit-pages.groups.mil-6d182b4e.6c901824.chunk.js","sourcesContent":["var baseClamp = require('./_baseClamp'),\n    toNumber = require('./toNumber');\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n  if (upper === undefined) {\n    upper = lower;\n    lower = undefined;\n  }\n  if (upper !== undefined) {\n    upper = toNumber(upper);\n    upper = upper === upper ? upper : 0;\n  }\n  if (lower !== undefined) {\n    lower = toNumber(lower);\n    lower = lower === lower ? lower : 0;\n  }\n  return baseClamp(toNumber(number), lower, upper);\n}\n\nmodule.exports = clamp;\n","import isNumber from 'lodash/isNumber';\nimport isString from 'lodash/isString';\n\nconst isOption = item => Boolean(item) && (isString(item.value) || isNumber(item.value));\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst isGroup = function () {\n  let {\n    options\n  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  return Array.isArray(options) && options.every(isOption);\n};\nconst hasNoDuplicates = array => array.length === new Set(array).size;\nconst flattenedOptions = items => items.flatMap(item => isOption(item) ? item : item.options);\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst isAllOptionsOrAllGroups = items => items.every(isOption) || items.every(isGroup);\nconst hasUniqueValues = items => hasNoDuplicates(flattenedOptions(items).map(_ref => {\n  let {\n    value\n  } = _ref;\n  return value;\n}));\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst hasUniqueGroups = items => hasNoDuplicates(items.filter(isGroup).map(_ref2 => {\n  let {\n    text\n  } = _ref2;\n  return text;\n}));\nconst itemsValidator = items => isAllOptionsOrAllGroups(items) && hasUniqueValues(items) && hasUniqueGroups(items);\n\nexport { flattenedOptions, isOption, itemsValidator };\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n  return value == null;\n}\n\nmodule.exports = isNil;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n  if (number === number) {\n    if (upper !== undefined) {\n      number = number <= upper ? number : upper;\n    }\n    if (lower !== undefined) {\n      number = number >= lower ? number : lower;\n    }\n  }\n  return number;\n}\n\nmodule.exports = baseClamp;\n","(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define([\"jquery\"], function ($) {\n      return (root.returnExportsGlobal = factory($));\n    });\n  } else if (typeof exports === 'object') {\n    // Node. Does not work with strict CommonJS, but\n    // only CommonJS-like enviroments that support module.exports,\n    // like Node.\n    module.exports = factory(require(\"jquery\"));\n  } else {\n    factory(jQuery);\n  }\n}(this, function ($) {\n\n/*\n  Implement Github like autocomplete mentions\n  http://ichord.github.com/At.js\n\n  Copyright (c) 2013 chord.luo@gmail.com\n  Licensed under the MIT license.\n*/\n\n/*\n本插件操作 textarea 或者 input 内的插入符\n只实现了获得插入符在文本框中的位置,我设置\n插入符的位置.\n*/\n\n\"use strict\";\nvar EditableCaret, InputCaret, Mirror, Utils, discoveryIframeOf, methods, oDocument, oFrame, oWindow, pluginName, setContextBy;\n\npluginName = 'caret';\n\nEditableCaret = (function() {\n  function EditableCaret($inputor) {\n    this.$inputor = $inputor;\n    this.domInputor = this.$inputor[0];\n  }\n\n  EditableCaret.prototype.setPos = function(pos) {\n    var fn, found, offset, sel;\n    if (sel = oWindow.getSelection()) {\n      offset = 0;\n      found = false;\n      (fn = function(pos, parent) {\n        var node, range, _i, _len, _ref, _results;\n        _ref = parent.childNodes;\n        _results = [];\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          node = _ref[_i];\n          if (found) {\n            break;\n          }\n          if (node.nodeType === 3) {\n            if (offset + node.length >= pos) {\n              found = true;\n              range = oDocument.createRange();\n              range.setStart(node, pos - offset);\n              sel.removeAllRanges();\n              sel.addRange(range);\n              break;\n            } else {\n              _results.push(offset += node.length);\n            }\n          } else {\n            _results.push(fn(pos, node));\n          }\n        }\n        return _results;\n      })(pos, this.domInputor);\n    }\n    return this.domInputor;\n  };\n\n  EditableCaret.prototype.getIEPosition = function() {\n    return this.getPosition();\n  };\n\n  EditableCaret.prototype.getPosition = function() {\n    var inputor_offset, offset;\n    offset = this.getOffset();\n    inputor_offset = this.$inputor.offset();\n    offset.left -= inputor_offset.left;\n    offset.top -= inputor_offset.top;\n    return offset;\n  };\n\n  EditableCaret.prototype.getOldIEPos = function() {\n    var preCaretTextRange, textRange;\n    textRange = oDocument.selection.createRange();\n    preCaretTextRange = oDocument.body.createTextRange();\n    preCaretTextRange.moveToElementText(this.domInputor);\n    preCaretTextRange.setEndPoint(\"EndToEnd\", textRange);\n    return preCaretTextRange.text.length;\n  };\n\n  EditableCaret.prototype.getPos = function() {\n    var clonedRange, pos, range;\n    if (range = this.range()) {\n      clonedRange = range.cloneRange();\n      clonedRange.selectNodeContents(this.domInputor);\n      clonedRange.setEnd(range.endContainer, range.endOffset);\n      pos = clonedRange.toString().length;\n      clonedRange.detach();\n      return pos;\n    } else if (oDocument.selection) {\n      return this.getOldIEPos();\n    }\n  };\n\n  EditableCaret.prototype.getOldIEOffset = function() {\n    var range, rect;\n    range = oDocument.selection.createRange().duplicate();\n    range.moveStart(\"character\", -1);\n    rect = range.getBoundingClientRect();\n    return {\n      height: rect.bottom - rect.top,\n      left: rect.left,\n      top: rect.top\n    };\n  };\n\n  EditableCaret.prototype.getOffset = function(pos) {\n    var clonedRange, offset, range, rect, shadowCaret;\n    if (oWindow.getSelection && (range = this.range())) {\n      if (range.endOffset - 1 > 0 && range.endContainer !== this.domInputor) {\n        clonedRange = range.cloneRange();\n        clonedRange.setStart(range.endContainer, range.endOffset - 1);\n        clonedRange.setEnd(range.endContainer, range.endOffset);\n        rect = clonedRange.getBoundingClientRect();\n        offset = {\n          height: rect.height,\n          left: rect.left + rect.width,\n          top: rect.top\n        };\n        clonedRange.detach();\n      }\n      if (!offset || (offset != null ? offset.height : void 0) === 0) {\n        clonedRange = range.cloneRange();\n        shadowCaret = $(oDocument.createTextNode(\"|\"));\n        clonedRange.insertNode(shadowCaret[0]);\n        clonedRange.selectNode(shadowCaret[0]);\n        rect = clonedRange.getBoundingClientRect();\n        offset = {\n          height: rect.height,\n          left: rect.left,\n          top: rect.top\n        };\n        shadowCaret.remove();\n        clonedRange.detach();\n      }\n    } else if (oDocument.selection) {\n      offset = this.getOldIEOffset();\n    }\n    if (offset) {\n      offset.top += $(oWindow).scrollTop();\n      offset.left += $(oWindow).scrollLeft();\n    }\n    return offset;\n  };\n\n  EditableCaret.prototype.range = function() {\n    var sel;\n    if (!oWindow.getSelection) {\n      return;\n    }\n    sel = oWindow.getSelection();\n    if (sel.rangeCount > 0) {\n      return sel.getRangeAt(0);\n    } else {\n      return null;\n    }\n  };\n\n  return EditableCaret;\n\n})();\n\nInputCaret = (function() {\n  function InputCaret($inputor) {\n    this.$inputor = $inputor;\n    this.domInputor = this.$inputor[0];\n  }\n\n  InputCaret.prototype.getIEPos = function() {\n    var endRange, inputor, len, normalizedValue, pos, range, textInputRange;\n    inputor = this.domInputor;\n    range = oDocument.selection.createRange();\n    pos = 0;\n    if (range && range.parentElement() === inputor) {\n      normalizedValue = inputor.value.replace(/\\r\\n/g, \"\\n\");\n      len = normalizedValue.length;\n      textInputRange = inputor.createTextRange();\n      textInputRange.moveToBookmark(range.getBookmark());\n      endRange = inputor.createTextRange();\n      endRange.collapse(false);\n      if (textInputRange.compareEndPoints(\"StartToEnd\", endRange) > -1) {\n        pos = len;\n      } else {\n        pos = -textInputRange.moveStart(\"character\", -len);\n      }\n    }\n    return pos;\n  };\n\n  InputCaret.prototype.getPos = function() {\n    if (oDocument.selection) {\n      return this.getIEPos();\n    } else {\n      return this.domInputor.selectionStart;\n    }\n  };\n\n  InputCaret.prototype.setPos = function(pos) {\n    var inputor, range;\n    inputor = this.domInputor;\n    if (oDocument.selection) {\n      range = inputor.createTextRange();\n      range.move(\"character\", pos);\n      range.select();\n    } else if (inputor.setSelectionRange) {\n      inputor.setSelectionRange(pos, pos);\n    }\n    return inputor;\n  };\n\n  InputCaret.prototype.getIEOffset = function(pos) {\n    var h, textRange, x, y;\n    textRange = this.domInputor.createTextRange();\n    pos || (pos = this.getPos());\n    textRange.move('character', pos);\n    x = textRange.boundingLeft;\n    y = textRange.boundingTop;\n    h = textRange.boundingHeight;\n    return {\n      left: x,\n      top: y,\n      height: h\n    };\n  };\n\n  InputCaret.prototype.getOffset = function(pos) {\n    var $inputor, offset, position;\n    $inputor = this.$inputor;\n    if (oDocument.selection) {\n      offset = this.getIEOffset(pos);\n      offset.top += $(oWindow).scrollTop() + $inputor.scrollTop();\n      offset.left += $(oWindow).scrollLeft() + $inputor.scrollLeft();\n      return offset;\n    } else {\n      offset = $inputor.offset();\n      position = this.getPosition(pos);\n      return offset = {\n        left: offset.left + position.left - $inputor.scrollLeft(),\n        top: offset.top + position.top - $inputor.scrollTop(),\n        height: position.height\n      };\n    }\n  };\n\n  InputCaret.prototype.getPosition = function(pos) {\n    var $inputor, at_rect, end_range, format, html, mirror, start_range;\n    $inputor = this.$inputor;\n    format = function(value) {\n      value = value.replace(/<|>|`|\"|&/g, '?').replace(/\\r\\n|\\r|\\n/g, \"<br/>\");\n      if (/firefox/i.test(navigator.userAgent)) {\n        value = value.replace(/\\s/g, '&nbsp;');\n      }\n      return value;\n    };\n    if (pos === void 0) {\n      pos = this.getPos();\n    }\n    start_range = $inputor.val().slice(0, pos);\n    end_range = $inputor.val().slice(pos);\n    html = \"<span style='position: relative; display: inline;'>\" + format(start_range) + \"</span>\";\n    html += \"<span id='caret' style='position: relative; display: inline;'>|</span>\";\n    html += \"<span style='position: relative; display: inline;'>\" + format(end_range) + \"</span>\";\n    mirror = new Mirror($inputor);\n    return at_rect = mirror.create(html).rect();\n  };\n\n  InputCaret.prototype.getIEPosition = function(pos) {\n    var h, inputorOffset, offset, x, y;\n    offset = this.getIEOffset(pos);\n    inputorOffset = this.$inputor.offset();\n    x = offset.left - inputorOffset.left;\n    y = offset.top - inputorOffset.top;\n    h = offset.height;\n    return {\n      left: x,\n      top: y,\n      height: h\n    };\n  };\n\n  return InputCaret;\n\n})();\n\nMirror = (function() {\n  Mirror.prototype.css_attr = [\"borderBottomWidth\", \"borderLeftWidth\", \"borderRightWidth\", \"borderTopStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderLeftStyle\", \"borderTopWidth\", \"boxSizing\", \"fontFamily\", \"fontSize\", \"fontWeight\", \"height\", \"letterSpacing\", \"lineHeight\", \"marginBottom\", \"marginLeft\", \"marginRight\", \"marginTop\", \"outlineWidth\", \"overflow\", \"overflowX\", \"overflowY\", \"paddingBottom\", \"paddingLeft\", \"paddingRight\", \"paddingTop\", \"textAlign\", \"textOverflow\", \"textTransform\", \"whiteSpace\", \"wordBreak\", \"wordWrap\"];\n\n  function Mirror($inputor) {\n    this.$inputor = $inputor;\n  }\n\n  Mirror.prototype.mirrorCss = function() {\n    var css,\n      _this = this;\n    css = {\n      position: 'absolute',\n      left: -9999,\n      top: 0,\n      zIndex: -20000\n    };\n    if (this.$inputor.prop('tagName') === 'TEXTAREA') {\n      this.css_attr.push('width');\n    }\n    $.each(this.css_attr, function(i, p) {\n      return css[p] = _this.$inputor.css(p);\n    });\n    return css;\n  };\n\n  Mirror.prototype.create = function(html) {\n    this.$mirror = $('<div></div>');\n    this.$mirror.css(this.mirrorCss());\n    this.$mirror.html(html);\n    this.$inputor.after(this.$mirror);\n    return this;\n  };\n\n  Mirror.prototype.rect = function() {\n    var $flag, pos, rect;\n    $flag = this.$mirror.find(\"#caret\");\n    pos = $flag.position();\n    rect = {\n      left: pos.left,\n      top: pos.top,\n      height: $flag.height()\n    };\n    this.$mirror.remove();\n    return rect;\n  };\n\n  return Mirror;\n\n})();\n\nUtils = {\n  contentEditable: function($inputor) {\n    return !!($inputor[0].contentEditable && $inputor[0].contentEditable === 'true');\n  }\n};\n\nmethods = {\n  pos: function(pos) {\n    if (pos || pos === 0) {\n      return this.setPos(pos);\n    } else {\n      return this.getPos();\n    }\n  },\n  position: function(pos) {\n    if (oDocument.selection) {\n      return this.getIEPosition(pos);\n    } else {\n      return this.getPosition(pos);\n    }\n  },\n  offset: function(pos) {\n    var offset;\n    offset = this.getOffset(pos);\n    return offset;\n  }\n};\n\noDocument = null;\n\noWindow = null;\n\noFrame = null;\n\nsetContextBy = function(settings) {\n  var iframe;\n  if (iframe = settings != null ? settings.iframe : void 0) {\n    oFrame = iframe;\n    oWindow = iframe.contentWindow;\n    return oDocument = iframe.contentDocument || oWindow.document;\n  } else {\n    oFrame = void 0;\n    oWindow = window;\n    return oDocument = document;\n  }\n};\n\ndiscoveryIframeOf = function($dom) {\n  var error;\n  oDocument = $dom[0].ownerDocument;\n  oWindow = oDocument.defaultView || oDocument.parentWindow;\n  try {\n    return oFrame = oWindow.frameElement;\n  } catch (_error) {\n    error = _error;\n  }\n};\n\n$.fn.caret = function(method, value, settings) {\n  var caret;\n  if (methods[method]) {\n    if ($.isPlainObject(value)) {\n      setContextBy(value);\n      value = void 0;\n    } else {\n      setContextBy(settings);\n    }\n    caret = Utils.contentEditable(this) ? new EditableCaret(this) : new InputCaret(this);\n    return methods[method].apply(caret, [value]);\n  } else {\n    return $.error(\"Method \" + method + \" does not exist on jQuery.caret\");\n  }\n};\n\n$.fn.caret.EditableCaret = EditableCaret;\n\n$.fn.caret.InputCaret = InputCaret;\n\n$.fn.caret.Utils = Utils;\n\n$.fn.caret.apis = methods;\n\n\n}));\n","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!./local_storage_sync.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!./local_storage_sync.vue?vue&type=script&lang=js\"","<script>\nimport { isEqual, isString } from 'lodash';\n\n/**\n * This component will save and restore a value to and from localStorage.\n * The value will be saved only when the value changes; the initial value won't be saved.\n *\n * By default, the value will be saved using JSON.stringify(), and retrieved back using JSON.parse().\n *\n * If you would like to save the raw string instead, you may set the 'asString' prop to true, though be aware that this is a\n * legacy prop to maintain backwards compatibility.\n *\n * For new components saving data for the first time, it's recommended to not use 'asString' even if you're saving a string; it will still be\n * saved and restored properly using JSON.stringify()/JSON.parse().\n */\nexport default {\n  props: {\n    storageKey: {\n      type: String,\n      required: true,\n    },\n    value: {\n      type: [String, Number, Boolean, Array, Object],\n      required: false,\n      default: '',\n    },\n    asString: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    persist: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    clear: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  watch: {\n    value(newVal) {\n      if (!this.persist) return;\n\n      this.saveValue(this.serialize(newVal));\n    },\n    clear(newVal) {\n      if (newVal) {\n        localStorage.removeItem(this.storageKey);\n      }\n    },\n  },\n  mounted() {\n    // On mount, trigger update if we actually have a localStorageValue\n    const { exists, value } = this.getStorageValue();\n\n    if (exists && !isEqual(value, this.value)) {\n      this.$emit('input', value);\n    }\n  },\n  methods: {\n    getStorageValue() {\n      const value = localStorage.getItem(this.storageKey);\n\n      if (value === null) {\n        return { exists: false };\n      }\n\n      try {\n        return { exists: true, value: this.deserialize(value) };\n      } catch {\n        // eslint-disable-next-line no-console\n        console.warn(\n          `[gitlab] Failed to deserialize value from localStorage (key=${this.storageKey})`,\n          value,\n        );\n        // default to \"don't use localStorage value\"\n        return { exists: false };\n      }\n    },\n    saveValue(val) {\n      localStorage.setItem(this.storageKey, val);\n    },\n    serialize(val) {\n      if (!isString(val) && this.asString) {\n        // eslint-disable-next-line no-console\n        console.warn(\n          `[gitlab] LocalStorageSync is saving`,\n          val,\n          `to the key \"${this.storageKey}\", but it is not a string and the 'asString' prop is true. This will save and restore the stringified value rather than the original value. If this is not intended, please remove or set the 'asString' prop to false.`,\n        );\n      }\n\n      return this.asString ? val : JSON.stringify(val);\n    },\n    deserialize(val) {\n      return this.asString ? val : JSON.parse(val);\n    },\n  },\n  render() {\n    return this.$scopedSlots.default?.();\n  },\n};\n</script>\n","var render, staticRenderFns\nimport script from \"./local_storage_sync.vue?vue&type=script&lang=js\"\nexport * from \"./local_storage_sync.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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"md-area-wrapper gl-rounded-lg !gl-px-0\"},[(!_vm.isDefaultEditorEnabled)?_c('local-storage-sync',{attrs:{\"value\":_vm.editingMode,\"as-string\":\"\",\"storage-key\":_vm.$options.EDITING_MODE_KEY},on:{\"input\":_vm.onEditingModeRestored}}):_vm._e(),_vm._v(\" \"),(_vm.alert)?_c('gl-alert',{staticClass:\"gl-mb-4\",attrs:{\"variant\":_vm.alert.variant,\"primary-button-text\":_vm.alert.primaryButtonText,\"secondary-button-text\":_vm.alert.secondaryButtonText},on:{\"primaryAction\":_vm.alert.primaryAction,\"secondaryAction\":_vm.alert.secondaryAction,\"dismiss\":_vm.alert.dismiss}},[_vm._v(\"\\n    \"+_vm._s(_vm.alert.message)+\"\\n  \")]):_vm._e(),_vm._v(\" \"),(!_vm.isContentEditorActive)?_c('markdown-field',_vm._b({ref:\"markdownField\",attrs:{\"data-testid\":\"markdown-field\",\"markdown-preview-path\":_vm.renderMarkdownPath,\"can-attach-file\":!_vm.disableAttachments,\"can-suggest\":_vm.codeSuggestionsConfig.canSuggest,\"line\":_vm.codeSuggestionsConfig.line,\"lines\":_vm.codeSuggestionsConfig.lines,\"show-suggest-popover\":_vm.codeSuggestionsConfig.showPopover,\"textarea-value\":_vm.markdown,\"uploads-path\":_vm.uploadsPath,\"enable-autocomplete\":_vm.enableAutocomplete,\"autocomplete-data-sources\":_vm.autocompleteDataSources,\"markdown-docs-path\":_vm.markdownDocsPath,\"supports-quick-actions\":_vm.supportsQuickActions,\"show-content-editor-switcher\":_vm.enableContentEditor,\"drawio-enabled\":_vm.drawioEnabled,\"restricted-tool-bar-items\":_vm.markdownFieldRestrictedToolBarItems,\"remove-border\":true},on:{\"enableContentEditor\":function($event){return _vm.onEditingModeChange('contentEditor')},\"handleSuggestDismissed\":() => _vm.$emit('handleSuggestDismissed')},scopedSlots:_vm._u([{key:\"header-buttons\",fn:function(){return [_vm._t(\"header-buttons\")]},proxy:true},{key:\"toolbar\",fn:function(){return [_vm._t(\"toolbar\")]},proxy:true},{key:\"textarea\",fn:function(){return [_c('textarea',_vm._b({ref:\"textarea\",staticClass:\"note-textarea js-gfm-input markdown-area\",attrs:{\"dir\":\"auto\",\"data-can-suggest\":_vm.codeSuggestionsConfig.canSuggest,\"data-noteable-type\":_vm.noteableType,\"data-supports-quick-actions\":_vm.supportsQuickActions,\"data-testid\":_vm.formFieldProps['data-testid'] || 'markdown-editor-form-field',\"disabled\":_vm.disabled},domProps:{\"value\":_vm.markdown},on:{\"input\":_vm.updateMarkdownFromMarkdownField,\"keydown\":function($event){return _vm.$emit('keydown', $event)}}},'textarea',_vm.formFieldProps,false))]},proxy:true}],null,true)},'markdown-field',_vm.$attrs,false)):_c('div',[_c('content-editor',{ref:\"contentEditor\",attrs:{\"render-markdown\":_vm.renderMarkdown,\"markdown-docs-path\":_vm.markdownDocsPath,\"uploads-path\":_vm.uploadsPath,\"markdown\":_vm.markdown,\"supports-quick-actions\":_vm.supportsQuickActions,\"autofocus\":_vm.contentEditorAutofocused,\"placeholder\":_vm.formFieldProps.placeholder,\"drawio-enabled\":_vm.drawioEnabled,\"enable-autocomplete\":_vm.enableAutocomplete,\"autocomplete-data-sources\":_vm.autocompleteDataSources,\"editable\":!_vm.disabled,\"disable-attachments\":_vm.disableAttachments,\"code-suggestions-config\":_vm.codeSuggestionsConfig,\"data-testid\":_vm.formFieldProps['data-testid'] || 'markdown-editor-form-field'},on:{\"initialized\":_vm.setEditorAsAutofocused,\"change\":_vm.updateMarkdownFromContentEditor,\"keydown\":_vm.onKeydown,\"enableMarkdownEditor\":function($event){return _vm.onEditingModeChange('markdownField')}},scopedSlots:_vm._u([{key:\"header-buttons\",fn:function(){return [_vm._t(\"header-buttons\")]},proxy:true},{key:\"toolbar\",fn:function(){return [_vm._t(\"toolbar\")]},proxy:true}],null,true)}),_vm._v(\" \"),_c('input',_vm._b({attrs:{\"type\":\"hidden\"},domProps:{\"value\":_vm.markdown}},'input',_vm.formFieldProps,false))],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlAlert } from '@gitlab/ui';\nimport Autosize from 'autosize';\nimport { __ } from '~/locale';\nimport axios from '~/lib/utils/axios_utils';\nimport { updateDraft, clearDraft, getDraft } from '~/lib/utils/autosave';\nimport { setUrlParams, joinPaths } from '~/lib/utils/url_utility';\nimport LocalStorageSync from '~/vue_shared/components/local_storage_sync.vue';\nimport {\n  EDITING_MODE_KEY,\n  EDITING_MODE_MARKDOWN_FIELD,\n  EDITING_MODE_CONTENT_EDITOR,\n  CLEAR_AUTOSAVE_ENTRY_EVENT,\n} from '../../constants';\nimport MarkdownField from './field.vue';\nimport eventHub from './eventhub';\n\nasync function sleep(t = 10) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, t);\n  });\n}\n\nasync function waitFor(getEl, interval = 10, timeout = 2000) {\n  if (timeout <= 0) return null;\n\n  const el = getEl();\n  if (el) return el;\n\n  await sleep(interval);\n  return waitFor(getEl, timeout - interval);\n}\n\nexport default {\n  components: {\n    GlAlert,\n    MarkdownField,\n    LocalStorageSync,\n    ContentEditor: () =>\n      import(\n        /* webpackChunkName: 'content_editor' */ '~/content_editor/components/content_editor.vue'\n      ),\n  },\n  props: {\n    value: {\n      type: String,\n      required: true,\n    },\n    setFacade: {\n      type: Function,\n      required: false,\n      default: null,\n    },\n    renderMarkdownPath: {\n      type: String,\n      required: true,\n    },\n    uploadsPath: {\n      type: String,\n      required: false,\n      default: () => window.uploads_path || '',\n    },\n    enableContentEditor: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    formFieldProps: {\n      type: Object,\n      required: true,\n    },\n    autofocus: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    enableAutocomplete: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    autocompleteDataSources: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    supportsQuickActions: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    autosaveKey: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    markdownDocsPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    drawioEnabled: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    disableAttachments: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    codeSuggestionsConfig: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    noteableType: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    restrictedToolBarItems: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    restoreFromAutosave: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    let editingMode;\n    switch (window.gon?.text_editor) {\n      case 'rich_text_editor':\n        editingMode = EDITING_MODE_CONTENT_EDITOR;\n        break;\n      case 'plain_text_editor':\n        editingMode = EDITING_MODE_MARKDOWN_FIELD;\n        break;\n      default:\n        editingMode =\n          localStorage.getItem(this.$options.EDITING_MODE_KEY) || EDITING_MODE_MARKDOWN_FIELD;\n    }\n\n    const autosaveValue = this.autosaveKey ? getDraft(this.autosaveKey) : '';\n    const initialValue = this.restoreFromAutosave ? autosaveValue : this.value;\n\n    return {\n      alert: null,\n      markdown: initialValue || autosaveValue || '',\n      editingMode,\n      autofocused: false,\n    };\n  },\n  computed: {\n    isContentEditorActive() {\n      return this.enableContentEditor && this.editingMode === EDITING_MODE_CONTENT_EDITOR;\n    },\n    contentEditorAutofocused() {\n      // Match textarea focus behavior\n      return this.autofocus && !this.autofocused ? 'end' : false;\n    },\n    markdownFieldRestrictedToolBarItems() {\n      const restrictAttachments = this.disableAttachments ? ['attach-file'] : [];\n\n      return [...this.restrictedToolBarItems, ...restrictAttachments];\n    },\n    isDefaultEditorEnabled() {\n      return ['plain_text_editor', 'rich_text_editor'].includes(window.gon?.text_editor);\n    },\n  },\n  watch: {\n    value: 'updateValue',\n  },\n  mounted() {\n    this.autofocusTextarea();\n\n    this.$emit('input', this.markdown);\n    this.saveDraft();\n\n    this.setFacade?.({\n      getValue: () => this.getValue(),\n      setValue: (val) => this.setValue(val),\n    });\n\n    eventHub.$on(CLEAR_AUTOSAVE_ENTRY_EVENT, this.clearDraft);\n  },\n  beforeDestroy() {\n    eventHub.$off(CLEAR_AUTOSAVE_ENTRY_EVENT, this.clearDraft);\n  },\n  methods: {\n    getValue() {\n      return this.markdown;\n    },\n    setValue(value) {\n      this.$emit('input', value);\n      this.updateValue(value);\n    },\n    updateValue(value) {\n      this.markdown = value;\n      this.saveDraft();\n      this.autosizeTextarea();\n    },\n    append(value) {\n      if (!value) {\n        this.focus();\n        return;\n      }\n      const newValue = [this.markdown.trim(), value].filter(Boolean).join('\\n\\n');\n      this.updateValue(`${newValue}\\n\\n`);\n      this.$nextTick(() => {\n        this.focus();\n      });\n    },\n    setTemplate(template, force = false) {\n      if (!this.markdown || force) {\n        this.setValue(template);\n      } else {\n        const dismiss = () => {\n          this.alert = null;\n        };\n        this.alert = {\n          message: this.$options.i18n.applyTemplateAlert.message,\n          variant: 'warning',\n          primaryButtonText: this.$options.i18n.applyTemplateAlert.primaryButtonText,\n          secondaryButtonText: this.$options.i18n.applyTemplateAlert.secondaryButtonText,\n          primaryAction: () => {\n            this.setValue(template, true);\n            dismiss();\n          },\n          secondaryAction: dismiss,\n          dismiss,\n        };\n      }\n    },\n    updateMarkdownFromContentEditor({ markdown }) {\n      this.markdown = markdown;\n      this.$emit('input', markdown);\n\n      this.saveDraft();\n    },\n    updateMarkdownFromMarkdownField({ target }) {\n      this.markdown = target.value;\n      this.$emit('input', target.value);\n\n      this.saveDraft();\n    },\n    renderMarkdown(markdown) {\n      const url = setUrlParams(\n        { render_quick_actions: this.supportsQuickActions },\n        joinPaths(window.location.origin, this.renderMarkdownPath),\n      );\n      return axios\n        .post(url, { text: markdown })\n        .then(({ data: { html, body, ...otherData } = {} } = {}) => ({\n          body: body || html,\n          ...otherData,\n        }));\n    },\n    onEditingModeChange(editingMode) {\n      this.editingMode = editingMode;\n      this.notifyEditingModeChange(editingMode);\n    },\n    onEditingModeRestored(editingMode) {\n      if (!this.isDefaultEditorEnabled) return;\n      if (editingMode === EDITING_MODE_CONTENT_EDITOR && !this.enableContentEditor) {\n        this.editingMode = EDITING_MODE_MARKDOWN_FIELD;\n        return;\n      }\n\n      this.editingMode = editingMode;\n      this.$emit(editingMode);\n      this.notifyEditingModeChange(editingMode);\n    },\n    async notifyEditingModeChange(editingMode) {\n      this.$emit(editingMode);\n\n      const componentToFocus =\n        editingMode === EDITING_MODE_CONTENT_EDITOR\n          ? () => this.$refs.contentEditor\n          : () => this.$refs.textarea;\n\n      (await waitFor(componentToFocus)).focus();\n    },\n    autofocusTextarea() {\n      if (this.autofocus && this.editingMode === EDITING_MODE_MARKDOWN_FIELD) {\n        this.$refs.textarea.focus();\n        this.setEditorAsAutofocused();\n      }\n    },\n    focus() {\n      if (this.editingMode === EDITING_MODE_MARKDOWN_FIELD) {\n        this.$refs.textarea.focus();\n      } else {\n        this.$refs.contentEditor.focus();\n      }\n    },\n    setEditorAsAutofocused() {\n      this.autofocused = true;\n    },\n    saveDraft() {\n      if (!this.autosaveKey) return;\n      if (this.markdown) updateDraft(this.autosaveKey, this.markdown);\n      else clearDraft(this.autosaveKey);\n    },\n    clearDraft(key) {\n      if (!this.autosaveKey || key !== this.autosaveKey) return;\n      clearDraft(this.autosaveKey);\n    },\n    togglePreview(value) {\n      if (this.editingMode === EDITING_MODE_MARKDOWN_FIELD) {\n        this.$refs.markdownField.previewMarkdown = value;\n      }\n    },\n    autosizeTextarea() {\n      if (this.editingMode === EDITING_MODE_MARKDOWN_FIELD) {\n        this.$nextTick(() => {\n          Autosize.update(this.$refs.textarea);\n        });\n      }\n    },\n    onKeydown(event) {\n      const isModifierKey = event.ctrlKey || event.metaKey;\n      if (isModifierKey && event.key === 'k') {\n        event.preventDefault();\n      }\n      this.$emit('keydown', event);\n    },\n  },\n  EDITING_MODE_KEY,\n  i18n: {\n    applyTemplateAlert: {\n      message: __(\n        'Applying a template will replace the existing content. Any changes you have made will be lost.',\n      ),\n      primaryButtonText: __('Apply template'),\n      secondaryButtonText: __('Cancel'),\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"md-area-wrapper gl-rounded-lg !gl-px-0\">\n    <local-storage-sync\n      v-if=\"!isDefaultEditorEnabled\"\n      :value=\"editingMode\"\n      as-string\n      :storage-key=\"$options.EDITING_MODE_KEY\"\n      @input=\"onEditingModeRestored\"\n    />\n    <gl-alert\n      v-if=\"alert\"\n      class=\"gl-mb-4\"\n      :variant=\"alert.variant\"\n      :primary-button-text=\"alert.primaryButtonText\"\n      :secondary-button-text=\"alert.secondaryButtonText\"\n      @primaryAction=\"alert.primaryAction\"\n      @secondaryAction=\"alert.secondaryAction\"\n      @dismiss=\"alert.dismiss\"\n    >\n      {{ alert.message }}\n    </gl-alert>\n    <markdown-field\n      v-if=\"!isContentEditorActive\"\n      ref=\"markdownField\"\n      v-bind=\"$attrs\"\n      data-testid=\"markdown-field\"\n      :markdown-preview-path=\"renderMarkdownPath\"\n      :can-attach-file=\"!disableAttachments\"\n      :can-suggest=\"codeSuggestionsConfig.canSuggest\"\n      :line=\"codeSuggestionsConfig.line\"\n      :lines=\"codeSuggestionsConfig.lines\"\n      :show-suggest-popover=\"codeSuggestionsConfig.showPopover\"\n      :textarea-value=\"markdown\"\n      :uploads-path=\"uploadsPath\"\n      :enable-autocomplete=\"enableAutocomplete\"\n      :autocomplete-data-sources=\"autocompleteDataSources\"\n      :markdown-docs-path=\"markdownDocsPath\"\n      :supports-quick-actions=\"supportsQuickActions\"\n      :show-content-editor-switcher=\"enableContentEditor\"\n      :drawio-enabled=\"drawioEnabled\"\n      :restricted-tool-bar-items=\"markdownFieldRestrictedToolBarItems\"\n      :remove-border=\"true\"\n      @enableContentEditor=\"onEditingModeChange('contentEditor')\"\n      @handleSuggestDismissed=\"() => $emit('handleSuggestDismissed')\"\n    >\n      <template #header-buttons><slot name=\"header-buttons\"></slot></template>\n      <template #toolbar><slot name=\"toolbar\"></slot></template>\n      <template #textarea>\n        <textarea\n          v-bind=\"formFieldProps\"\n          ref=\"textarea\"\n          :value=\"markdown\"\n          class=\"note-textarea js-gfm-input markdown-area\"\n          dir=\"auto\"\n          :data-can-suggest=\"codeSuggestionsConfig.canSuggest\"\n          :data-noteable-type=\"noteableType\"\n          :data-supports-quick-actions=\"supportsQuickActions\"\n          :data-testid=\"formFieldProps['data-testid'] || 'markdown-editor-form-field'\"\n          :disabled=\"disabled\"\n          @input=\"updateMarkdownFromMarkdownField\"\n          @keydown=\"$emit('keydown', $event)\"\n        ></textarea>\n      </template>\n    </markdown-field>\n    <div v-else>\n      <content-editor\n        ref=\"contentEditor\"\n        :render-markdown=\"renderMarkdown\"\n        :markdown-docs-path=\"markdownDocsPath\"\n        :uploads-path=\"uploadsPath\"\n        :markdown=\"markdown\"\n        :supports-quick-actions=\"supportsQuickActions\"\n        :autofocus=\"contentEditorAutofocused\"\n        :placeholder=\"formFieldProps.placeholder\"\n        :drawio-enabled=\"drawioEnabled\"\n        :enable-autocomplete=\"enableAutocomplete\"\n        :autocomplete-data-sources=\"autocompleteDataSources\"\n        :editable=\"!disabled\"\n        :disable-attachments=\"disableAttachments\"\n        :code-suggestions-config=\"codeSuggestionsConfig\"\n        :data-testid=\"formFieldProps['data-testid'] || 'markdown-editor-form-field'\"\n        @initialized=\"setEditorAsAutofocused\"\n        @change=\"updateMarkdownFromContentEditor\"\n        @keydown=\"onKeydown\"\n        @enableMarkdownEditor=\"onEditingModeChange('markdownField')\"\n      >\n        <template #header-buttons><slot name=\"header-buttons\"></slot></template>\n        <template #toolbar><slot name=\"toolbar\"></slot></template>\n      </content-editor>\n      <input v-bind=\"formFieldProps\" :value=\"markdown\" type=\"hidden\" />\n    </div>\n  </div>\n</template>\n","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!./markdown_editor.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!./markdown_editor.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./markdown_editor.vue?vue&type=template&id=27f649d3\"\nimport script from \"./markdown_editor.vue?vue&type=script&lang=js\"\nexport * from \"./markdown_editor.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 * Map<HTMLElement, { callback: Function, eventTypes: Array<string> }>\n */\nconst callbacks = new Map();\nconst click = 'click';\nconst focusin = 'focusin';\nconst supportedEventTypes = [click, focusin];\nconst defaultEventType = click;\n\n/**\n * A Set to keep track of currently active event types.\n * This ensures that event listeners are only added for the event types that are in use.\n *\n * @type {Set<string>}\n */\nconst activeEventTypes = new Set();\nlet lastMousedown = null;\nconst globalListener = event => {\n  callbacks.forEach((_ref, element) => {\n    let {\n      callback,\n      eventTypes\n    } = _ref;\n    const originalEvent = event.type === click ? lastMousedown || event : event;\n    if (\n    // Ignore events that aren't targeted outside the element\n    element.contains(originalEvent.target) ||\n    // Ignore events that aren't the specified types for this element\n    !eventTypes.includes(event.type)) {\n      return;\n    }\n    try {\n      callback(event);\n    } catch (e) {\n      if (process.env.NODE_ENV !== 'production') {\n        // eslint-disable-next-line no-console\n        console.error(e);\n      }\n    }\n  });\n  if (event.type === click) {\n    lastMousedown = null;\n  }\n};\n\n// We need to listen for mouse events because text selection fires click event only when selection ends.\n// This means that the click event target could differ from the element where it originally started.\n// As example: if we use mouse events we could guarantee that selecting text within a dropdown won't close it.\nconst onMousedown = event => {\n  lastMousedown = event;\n};\nconst startListening = eventTypes => {\n  eventTypes.forEach(eventType => {\n    if (!activeEventTypes.has(eventType)) {\n      // Listening to mousedown events, ensures that a text selection doesn't trigger the\n      // GlOutsideDirective 'click' callback if the selection started within the target element.\n      if (eventType === click) {\n        document.addEventListener('mousedown', onMousedown);\n      }\n\n      // Added { capture: true } to all event types to prevent the behavior discussed in https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/1686#note_412545027\n      // Ensures the event listener handles the event in the capturing phase, avoiding issues encountered previously.\n      // Cannot be tested with Jest or Cypress, but can be tested with Playwright in the future: https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/4272#note_1947425384\n      document.addEventListener(eventType, globalListener, {\n        capture: true\n      });\n      activeEventTypes.add(eventType);\n    }\n  });\n  lastMousedown = null;\n};\nconst stopListening = eventTypesToUnbind => {\n  eventTypesToUnbind.forEach(eventType => {\n    if (activeEventTypes.has(eventType)) {\n      if ([...callbacks.values()].every(_ref2 => {\n        let {\n          eventTypes\n        } = _ref2;\n        return !eventTypes.includes(eventType);\n      })) {\n        document.removeEventListener(eventType, globalListener);\n        activeEventTypes.delete(eventType);\n      }\n    }\n  });\n  if (eventTypesToUnbind.includes(click) && !activeEventTypes.has(click)) {\n    document.removeEventListener('mousedown', onMousedown);\n  }\n};\nfunction parseBinding(_ref3) {\n  let {\n    arg,\n    value,\n    modifiers\n  } = _ref3;\n  const modifiersList = Object.keys(modifiers);\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof value !== 'function') {\n      throw new Error(`[GlOutsideDirective] Value must be a function; got ${typeof value}!`);\n    }\n    if (typeof arg !== 'undefined') {\n      throw new Error(`[GlOutsideDirective] Arguments are not supported. Consider using modifiers instead.`);\n    }\n    const unsupportedModifiers = modifiersList.filter(modifier => !supportedEventTypes.includes(modifier));\n    if (unsupportedModifiers.length > 0) {\n      throw new Error(`[GlOutsideDirective] Cannot bind ${unsupportedModifiers.join(', ')} events; supported event types are: ${supportedEventTypes.join(', ')}`);\n    }\n  }\n  return {\n    callback: value,\n    eventTypes: modifiersList.length > 0 ? modifiersList : [defaultEventType]\n  };\n}\nconst bind = (el, bindings) => {\n  const {\n    callback,\n    eventTypes\n  } = parseBinding(bindings);\n  if (callbacks.has(el)) {\n    // This element is already bound. This is possible if two components, which\n    // share the same root node, (i.e., one is a higher-order component\n    // wrapping another) _both_ have this directive applied.\n    //\n    // Because Vue binds directives in the direction towards the root, only the\n    // deepest instance of this directive will be bound.\n    //\n    // A future iteration may add support for binding all instances on a given\n    // element.\n    return;\n  }\n  callbacks.set(el, {\n    callback,\n    eventTypes\n  });\n  startListening(eventTypes);\n};\nconst unbind = el => {\n  const entry = callbacks.get(el);\n  if (entry) {\n    callbacks.delete(el);\n    stopListening(entry.eventTypes);\n  }\n};\nconst OutsideDirective = {\n  bind,\n  unbind\n};\n\nexport { OutsideDirective };\n","import { NAME_MODAL } from '../../constants/components';\nimport { EVENT_NAME_SHOW, EVENT_OPTIONS_PASSIVE } from '../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../constants/key-codes';\nimport { matches, select, hasAttr, setAttr, getAttr, isDisabled } from '../../utils/dom';\nimport { getRootActionEventName, eventOff, eventOn } from '../../utils/events';\nimport { isString } from '../../utils/inspect';\nimport { keys } from '../../utils/object';\nimport { getEventRoot } from '../../utils/get-event-root';\nimport { getInstanceFromDirective } from '../../utils/get-instance-from-directive';\n\n// Emitted show event for modal\nconst ROOT_ACTION_EVENT_NAME_SHOW = getRootActionEventName(NAME_MODAL, EVENT_NAME_SHOW);\n\n// Prop name we use to store info on root element\nconst PROPERTY = '__bv_modal_directive__';\nconst getTarget = _ref => {\n  let {\n    modifiers = {},\n    arg,\n    value\n  } = _ref;\n  // Try value, then arg, otherwise pick last modifier\n  return isString(value) ? value : isString(arg) ? arg : keys(modifiers).reverse()[0];\n};\nconst getTriggerElement = el => {\n  // If root element is a dropdown-item or nav-item, we\n  // need to target the inner link or button instead\n  return el && matches(el, '.dropdown-menu > li, li.nav-item') ? select('a, button', el) || el : el;\n};\nconst setRole = trigger => {\n  // Ensure accessibility on non button elements\n  if (trigger && trigger.tagName !== 'BUTTON') {\n    // Only set a role if the trigger element doesn't have one\n    if (!hasAttr(trigger, 'role')) {\n      setAttr(trigger, 'role', 'button');\n    }\n    // Add a tabindex is not a button or link, and tabindex is not provided\n    if (trigger.tagName !== 'A' && !hasAttr(trigger, 'tabindex')) {\n      setAttr(trigger, 'tabindex', '0');\n    }\n  }\n};\nconst bind = (el, binding, vnode) => {\n  const target = getTarget(binding);\n  const trigger = getTriggerElement(el);\n  if (target && trigger) {\n    const handler = event => {\n      // `currentTarget` is the element with the listener on it\n      const currentTarget = event.currentTarget;\n      if (!isDisabled(currentTarget)) {\n        const type = event.type;\n        const key = event.keyCode;\n        // Open modal only if trigger is not disabled\n        if (type === 'click' || type === 'keydown' && (key === CODE_ENTER || key === CODE_SPACE)) {\n          getEventRoot(getInstanceFromDirective(vnode, binding)).$emit(ROOT_ACTION_EVENT_NAME_SHOW, target, currentTarget);\n        }\n      }\n    };\n    el[PROPERTY] = {\n      handler,\n      target,\n      trigger\n    };\n    // If element is not a button, we add `role=\"button\"` for accessibility\n    setRole(trigger);\n    // Listen for click events\n    eventOn(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE);\n    if (trigger.tagName !== 'BUTTON' && getAttr(trigger, 'role') === 'button') {\n      // If trigger isn't a button but has role button,\n      // we also listen for `keydown.space` && `keydown.enter`\n      eventOn(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n    }\n  }\n};\nconst unbind = el => {\n  const oldProp = el[PROPERTY] || {};\n  const trigger = oldProp.trigger;\n  const handler = oldProp.handler;\n  if (trigger && handler) {\n    eventOff(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE);\n    eventOff(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n    eventOff(el, 'click', handler, EVENT_OPTIONS_PASSIVE);\n    eventOff(el, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n  }\n  delete el[PROPERTY];\n};\nconst componentUpdated = (el, binding, vnode) => {\n  const oldProp = el[PROPERTY] || {};\n  const target = getTarget(binding);\n  const trigger = getTriggerElement(el);\n  if (target !== oldProp.target || trigger !== oldProp.trigger) {\n    // We bind and rebind if the target or trigger changes\n    unbind(el);\n    bind(el, binding, vnode);\n  }\n  // If trigger element is not a button, ensure `role=\"button\"`\n  // is still set for accessibility\n  setRole(trigger);\n};\nconst updated = () => {};\n\n/*\n * Export our directive\n */\nconst VBModal = {\n  inserted: componentUpdated,\n  updated,\n  componentUpdated,\n  unbind\n};\n\nexport { VBModal };\n","(function(h,C){typeof exports==\"object\"&&typeof module!=\"undefined\"?C(exports):typeof define==\"function\"&&define.amd?define([\"exports\"],C):(h=typeof globalThis!=\"undefined\"?globalThis:h||self,C(h.modernScreenshot={}))})(this,function(h){var Ue;\"use strict\";var Qt=Object.defineProperty,Zt=Object.defineProperties;var er=Object.getOwnPropertyDescriptors;var Z=Object.getOwnPropertySymbols;var Le=Object.prototype.hasOwnProperty,Me=Object.prototype.propertyIsEnumerable;var Oe=Math.pow,Be=(h,C,T)=>C in h?Qt(h,C,{enumerable:!0,configurable:!0,writable:!0,value:T}):h[C]=T,D=(h,C)=>{for(var T in C||(C={}))Le.call(C,T)&&Be(h,T,C[T]);if(Z)for(var T of Z(C))Me.call(C,T)&&Be(h,T,C[T]);return h},L=(h,C)=>Zt(h,er(C));var We=(h,C)=>{var T={};for(var N in h)Le.call(h,N)&&C.indexOf(N)<0&&(T[N]=h[N]);if(h!=null&&Z)for(var N of Z(h))C.indexOf(N)<0&&Me.call(h,N)&&(T[N]=h[N]);return T};var E=(h,C,T)=>new Promise((N,M)=>{var z=R=>{try{W(T.next(R))}catch(j){M(j)}},O=R=>{try{W(T.throw(R))}catch(j){M(j)}},W=R=>R.done?N(R.value):Promise.resolve(R.value).then(z,O);W((T=T.apply(h,C)).next())});function C(e,t){return e[13]=1,e[14]=t>>8,e[15]=t&255,e[16]=t>>8,e[17]=t&255,e}const T=\"p\".charCodeAt(0),N=\"H\".charCodeAt(0),M=\"Y\".charCodeAt(0),z=\"s\".charCodeAt(0);let O;function W(){const e=new Int32Array(256);for(let t=0;t<256;t++){let r=t;for(let n=0;n<8;n++)r=r&1?3988292384^r>>>1:r>>>1;e[t]=r}return e}function R(e){let t=-1;O||(O=W());for(let r=0;r<e.length;r++)t=O[(t^e[r])&255]^t>>>8;return t^-1}function j(e){const t=e.length-1;for(let r=t;r>=4;r--)if(e[r-4]===9&&e[r-3]===T&&e[r-2]===N&&e[r-1]===M&&e[r]===z)return r-3;return 0}function ae(e,t,r=!1){const n=new Uint8Array(13);t*=39.3701,n[0]=T,n[1]=N,n[2]=M,n[3]=z,n[4]=t>>>24,n[5]=t>>>16,n[6]=t>>>8,n[7]=t&255,n[8]=n[4],n[9]=n[5],n[10]=n[6],n[11]=n[7],n[12]=1;const a=R(n),s=new Uint8Array(4);if(s[0]=a>>>24,s[1]=a>>>16,s[2]=a>>>8,s[3]=a&255,r){const o=j(e);return e.set(n,o),e.set(s,o+13),e}else{const o=new Uint8Array(4);o[0]=0,o[1]=0,o[2]=0,o[3]=9;const i=new Uint8Array(54);return i.set(e,0),i.set(o,33),i.set(n,37),i.set(s,50),i}}const je=\"AAlwSFlz\",qe=\"AAAJcEhZ\",Ve=\"AAAACXBI\";function He(e){let t=e.indexOf(je);return t===-1&&(t=e.indexOf(qe)),t===-1&&(t=e.indexOf(Ve)),t}const ee=\"[modern-screenshot]\",F=typeof window!=\"undefined\",ze=F&&\"Worker\"in window,se=F&&\"atob\"in window,Xe=F&&\"btoa\"in window,te=F?(Ue=window.navigator)==null?void 0:Ue.userAgent:\"\",ie=te.includes(\"Chrome\"),X=te.includes(\"AppleWebKit\")&&!ie,re=te.includes(\"Firefox\"),Ge=e=>e&&\"__CONTEXT__\"in e,Ye=e=>e.constructor.name===\"CSSFontFaceRule\",Je=e=>e.constructor.name===\"CSSImportRule\",k=e=>e.nodeType===1,q=e=>typeof e.className==\"object\",ce=e=>e.tagName===\"image\",Ke=e=>e.tagName===\"use\",V=e=>k(e)&&typeof e.style!=\"undefined\"&&!q(e),Qe=e=>e.nodeType===8,Ze=e=>e.nodeType===3,_=e=>e.tagName===\"IMG\",G=e=>e.tagName===\"VIDEO\",et=e=>e.tagName===\"CANVAS\",le=e=>e.tagName===\"TEXTAREA\",tt=e=>e.tagName===\"INPUT\",rt=e=>e.tagName===\"STYLE\",nt=e=>e.tagName===\"SCRIPT\",ot=e=>e.tagName===\"SELECT\",at=e=>e.tagName===\"SLOT\",st=e=>e.tagName===\"IFRAME\",A=(...e)=>console.warn(ee,...e),it=e=>console.time(`${ee} ${e}`),ct=e=>console.timeEnd(`${ee} ${e}`),lt=e=>{var r;const t=(r=e==null?void 0:e.createElement)==null?void 0:r.call(e,\"canvas\");return t&&(t.height=t.width=1),t&&\"toDataURL\"in t&&Boolean(t.toDataURL(\"image/webp\").includes(\"image/webp\"))},ne=e=>e.startsWith(\"data:\");function ue(e,t){if(e.match(/^[a-z]+:\\/\\//i))return e;if(F&&e.match(/^\\/\\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i)||!F)return e;const r=Y().implementation.createHTMLDocument(),n=r.createElement(\"base\"),a=r.createElement(\"a\");return r.head.appendChild(n),r.body.appendChild(a),t&&(n.href=t),a.href=e,a.href}function Y(e){var t;return(t=e&&k(e)?e==null?void 0:e.ownerDocument:e)!=null?t:window.document}const J=\"http://www.w3.org/2000/svg\";function fe(e,t,r){const n=Y(r).createElementNS(J,\"svg\");return n.setAttributeNS(null,\"width\",e.toString()),n.setAttributeNS(null,\"height\",t.toString()),n.setAttributeNS(null,\"viewBox\",`0 0 ${e} ${t}`),n}function de(e,t){let r=new XMLSerializer().serializeToString(e);return t&&(r=r.replace(/[\\u0000-\\u0008\\u000B\\u000C\\u000E-\\u001F\\uD800-\\uDFFF\\uFFFE\\uFFFF]/ug,\"\")),`data:image/svg+xml;charset=utf-8,${encodeURIComponent(r)}`}function ut(e,t=\"image/png\",r=1){return E(this,null,function*(){try{return yield new Promise((n,a)=>{e.toBlob(s=>{s?n(s):a(new Error(\"Blob is null\"))},t,r)})}catch(n){if(se)return A(\"Failed canvas to blob\",{type:t,quality:r},n),ft(e.toDataURL(t,r));throw n}})}function ft(e){var i,l;const[t,r]=e.split(\",\"),n=(l=(i=t.match(/data:(.+);/))==null?void 0:i[1])!=null?l:void 0,a=window.atob(r),s=a.length,o=new Uint8Array(s);for(let u=0;u<s;u+=1)o[u]=a.charCodeAt(u);return new Blob([o],{type:n})}function me(e,t){return new Promise((r,n)=>{const a=new FileReader;a.onload=()=>r(a.result),a.onerror=()=>n(a.error),a.onabort=()=>n(new Error(`Failed read blob to ${t}`)),t===\"dataUrl\"?a.readAsDataURL(e):t===\"arrayBuffer\"&&a.readAsArrayBuffer(e)})}const dt=e=>me(e,\"dataUrl\"),mt=e=>me(e,\"arrayBuffer\");function U(e,t){const r=Y(t).createElement(\"img\");return r.decoding=\"sync\",r.loading=\"eager\",r.src=e,r}function $(e,t){return new Promise(r=>{const{timeout:n,ownerDocument:a,onError:s}=t!=null?t:{},o=typeof e==\"string\"?U(e,Y(a)):e;let i=null,l=null;function u(){r(o),i&&clearTimeout(i),l==null||l()}if(n&&(i=setTimeout(u,n)),G(o)){const c=o.currentSrc||o.src;if(!c)return o.poster?$(o.poster,t).then(r):u();if(o.readyState>=2)return u();const f=u,d=m=>{A(\"Failed video load\",c,m),s==null||s(m),u()};l=()=>{o.removeEventListener(\"loadeddata\",f),o.removeEventListener(\"error\",d)},o.addEventListener(\"loadeddata\",f,{once:!0}),o.addEventListener(\"error\",d,{once:!0})}else{const c=ce(o)?o.href.baseVal:o.currentSrc||o.src;if(!c)return u();const f=()=>E(this,null,function*(){if(_(o)&&\"decode\"in o)try{yield o.decode()}catch(m){A(\"Failed to decode image, trying to render anyway\",o.dataset.originalSrc||c,m)}u()}),d=m=>{A(\"Failed image load\",o.dataset.originalSrc||c,m),u()};if(_(o)&&o.complete)return f();l=()=>{o.removeEventListener(\"load\",f),o.removeEventListener(\"error\",d)},o.addEventListener(\"load\",f,{once:!0}),o.addEventListener(\"error\",d,{once:!0})}})}function ge(e,t){return E(this,null,function*(){V(e)&&(_(e)||G(e)?yield $(e,{timeout:t}):yield Promise.all([\"img\",\"video\"].flatMap(r=>Array.from(e.querySelectorAll(r)).map(n=>$(n,{timeout:t})))))})}const he=function(){let t=0;const r=()=>`0000${(Math.random()*Oe(36,4)<<0).toString(36)}`.slice(-4);return()=>(t+=1,`u${r()}${t}`)}();function we(e){return e==null?void 0:e.split(\",\").map(t=>t.trim().replace(/\"|'/g,\"\").toLowerCase()).filter(Boolean)}function gt(e){return{time:t=>e&&it(t),timeEnd:t=>e&&ct(t),warn:(...t)=>e&&A(...t)}}function ht(e){return{cache:e?\"no-cache\":\"force-cache\"}}function x(e,t){return E(this,null,function*(){return Ge(e)?e:pe(e,L(D({},t),{autoDestruct:!0}))})}function pe(e,t){return E(this,null,function*(){var m,w,p,b,g;const{scale:r=1,workerUrl:n,workerNumber:a=1}=t||{},s=Boolean(t==null?void 0:t.debug),o=(m=t==null?void 0:t.features)!=null?m:!0,i=(w=e.ownerDocument)!=null?w:F?window.document:void 0,l=(b=(p=e.ownerDocument)==null?void 0:p.defaultView)!=null?b:F?window:void 0,u=new Map,c=L(D({width:0,height:0,quality:1,type:\"image/png\",scale:r,backgroundColor:null,style:null,filter:null,maximumCanvasSize:0,timeout:3e4,progress:null,debug:s,fetch:D({requestInit:ht((g=t==null?void 0:t.fetch)==null?void 0:g.bypassingCache),placeholderImage:\"data:image/png;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\",bypassingCache:!1},t==null?void 0:t.fetch),fetchFn:null,font:{},drawImageInterval:100,workerUrl:null,workerNumber:a,onCloneNode:null,onEmbedNode:null,onCreateForeignObjectSvg:null,includeStyleProperties:null,autoDestruct:!1},t),{__CONTEXT__:!0,log:gt(s),node:e,ownerDocument:i,ownerWindow:l,dpi:r===1?null:96*r,svgStyleElement:ye(i),svgDefsElement:i==null?void 0:i.createElementNS(J,\"defs\"),svgStyles:new Map,defaultComputedStyles:new Map,workers:[...new Array(ze&&n&&a?a:0)].map(()=>{try{const S=new Worker(n);return S.onmessage=y=>E(this,null,function*(){var P,_e,Q,$e;const{url:v,result:I}=y.data;I?(_e=(P=u.get(v))==null?void 0:P.resolve)==null||_e.call(P,I):($e=(Q=u.get(v))==null?void 0:Q.reject)==null||$e.call(Q,new Error(`Error receiving message from worker: ${v}`))}),S.onmessageerror=y=>{var I,P;const{url:v}=y.data;(P=(I=u.get(v))==null?void 0:I.reject)==null||P.call(I,new Error(`Error receiving message from worker: ${v}`))},S}catch(S){return A(\"Failed to new Worker\",S),null}}).filter(Boolean),fontFamilies:new Set,fontCssTexts:new Map,acceptOfImage:`${[lt(i)&&\"image/webp\",\"image/svg+xml\",\"image/*\",\"*/*\"].filter(Boolean).join(\",\")};q=0.8`,requests:u,drawImageCount:0,tasks:[],features:o,isEnable:S=>{var y,v;return S===\"restoreScrollPosition\"?typeof o==\"boolean\"?!1:(y=o[S])!=null?y:!1:typeof o==\"boolean\"?o:(v=o[S])!=null?v:!0}});c.log.time(\"wait until load\"),yield ge(e,c.timeout),c.log.timeEnd(\"wait until load\");const{width:f,height:d}=wt(e,c);return c.width=f,c.height=d,c})}function ye(e){if(!e)return;const t=e.createElement(\"style\"),r=t.ownerDocument.createTextNode(`\n.______background-clip--text {\n  background-clip: text;\n  -webkit-background-clip: text;\n}\n`);return t.appendChild(r),t}function wt(e,t){let{width:r,height:n}=t;if(k(e)&&(!r||!n)){const a=e.getBoundingClientRect();r=r||a.width||Number(e.getAttribute(\"width\"))||0,n=n||a.height||Number(e.getAttribute(\"height\"))||0}return{width:r,height:n}}function pt(e,t){return E(this,null,function*(){const{log:r,timeout:n,drawImageCount:a,drawImageInterval:s}=t;r.time(\"image to canvas\");const o=yield $(e,{timeout:n}),{canvas:i,context2d:l}=yt(e.ownerDocument,t),u=()=>{try{l==null||l.drawImage(o,0,0,i.width,i.height)}catch(c){A(\"Failed to drawImage\",c)}};if(u(),t.isEnable(\"fixSvgXmlDecode\"))for(let c=0;c<a;c++)yield new Promise(f=>{setTimeout(()=>{u(),f()},c+s)});return t.drawImageCount=0,r.timeEnd(\"image to canvas\"),i})}function yt(e,t){const{width:r,height:n,scale:a,backgroundColor:s,maximumCanvasSize:o}=t,i=e.createElement(\"canvas\");i.width=Math.floor(r*a),i.height=Math.floor(n*a),i.style.width=`${r}px`,i.style.height=`${n}px`,o&&(i.width>o||i.height>o)&&(i.width>o&&i.height>o?i.width>i.height?(i.height*=o/i.width,i.width=o):(i.width*=o/i.height,i.height=o):i.width>o?(i.height*=o/i.width,i.width=o):(i.width*=o/i.height,i.height=o));const l=i.getContext(\"2d\");return l&&s&&(l.fillStyle=s,l.fillRect(0,0,i.width,i.height)),{canvas:i,context2d:l}}const bt=[\"width\",\"height\",\"-webkit-text-fill-color\"],St=[\"stroke\",\"fill\"];function be(e,t,r){var b;const{defaultComputedStyles:n,ownerDocument:a}=r,s=e.nodeName.toLowerCase(),o=q(e)&&s!==\"svg\",i=o?St.map(g=>[g,e.getAttribute(g)]).filter(([,g])=>g!==null):[],l=[o&&\"svg\",s,i.map((g,S)=>`${g}=${S}`).join(\",\"),t].filter(Boolean).join(\":\");if(n.has(l))return n.get(l);let u=r.sandbox;if(!u)try{a&&(u=a.createElement(\"iframe\"),u.id=`__SANDBOX__-${he()}`,u.width=\"0\",u.height=\"0\",u.style.visibility=\"hidden\",u.style.position=\"fixed\",a.body.appendChild(u),(b=u.contentWindow)==null||b.document.write('<!DOCTYPE html><meta charset=\"UTF-8\"><title></title><body>'),r.sandbox=u)}catch(g){A(\"Failed to create iframe sandbox\",g)}if(!u)return new Map;const c=u.contentWindow;if(!c)return new Map;const f=c.document;let d,m;o?(d=f.createElementNS(J,\"svg\"),m=d.ownerDocument.createElementNS(d.namespaceURI,s),i.forEach(([g,S])=>{m.setAttributeNS(null,g,S)}),d.appendChild(m)):d=m=f.createElement(s),m.textContent=\" \",f.body.appendChild(d);const w=c.getComputedStyle(m,t),p=new Map;for(let g=w.length,S=0;S<g;S++){const y=w.item(S);bt.includes(y)||p.set(y,w.getPropertyValue(y))}return f.body.removeChild(d),n.set(l,p),p}function Se(e,t,r){var i;const n=new Map,a=[],s=new Map;if(r)for(const l of r)o(l);else for(let l=e.length,u=0;u<l;u++){const c=e.item(u);o(c)}for(let l=a.length,u=0;u<l;u++)(i=s.get(a[u]))==null||i.forEach((c,f)=>n.set(f,c));function o(l){const u=e.getPropertyValue(l),c=e.getPropertyPriority(l),f=l.lastIndexOf(\"-\"),d=f>-1?l.substring(0,f):void 0;if(d){let m=s.get(d);m||(m=new Map,s.set(d,m)),m.set(l,[u,c])}t.get(l)===u&&!c||(d?a.push(d):n.set(l,[u,c]))}return n}const Et=[\":before\",\":after\"],Ct=[\":-webkit-scrollbar\",\":-webkit-scrollbar-button\",\":-webkit-scrollbar-thumb\",\":-webkit-scrollbar-track\",\":-webkit-scrollbar-track-piece\",\":-webkit-scrollbar-corner\",\":-webkit-resizer\"];function Tt(e,t,r,n){const{ownerWindow:a,svgStyleElement:s,svgStyles:o,currentNodeStyle:i}=n;if(!s||!a)return;function l(u){var S;const c=a.getComputedStyle(e,u);let f=c.getPropertyValue(\"content\");if(!f||f===\"none\")return;f=f.replace(/(')|(\")|(counter\\(.+\\))/g,\"\");const d=[he()],m=be(e,u,n);i==null||i.forEach((y,v)=>{m.delete(v)});const w=Se(c,m,n.includeStyleProperties);w.delete(\"content\"),w.delete(\"-webkit-locale\"),((S=w.get(\"background-clip\"))==null?void 0:S[0])===\"text\"&&t.classList.add(\"______background-clip--text\");const p=[`content: '${f}';`];if(w.forEach(([y,v],I)=>{p.push(`${I}: ${y}${v?\" !important\":\"\"};`)}),p.length===1)return;try{t.className=[t.className,...d].join(\" \")}catch(y){return}const b=p.join(`\n  `);let g=o.get(b);g||(g=[],o.set(b,g)),g.push(`.${d[0]}:${u}`)}Et.forEach(l),r&&Ct.forEach(l)}function vt(e,t){le(e)&&(t.innerHTML=e.value),(le(e)||tt(e)||ot(e))&&t.setAttribute(\"value\",e.value)}function At(e,t,r,n){var f,d,m,w;const{ownerWindow:a,includeStyleProperties:s,currentParentNodeStyle:o}=n,i=t.style,l=a.getComputedStyle(e),u=be(e,null,n);o==null||o.forEach((p,b)=>{u.delete(b)});const c=Se(l,u,s);return c.delete(\"transition-property\"),c.delete(\"all\"),c.delete(\"d\"),c.delete(\"content\"),r&&(c.delete(\"margin-top\"),c.delete(\"margin-right\"),c.delete(\"margin-bottom\"),c.delete(\"margin-left\"),c.delete(\"margin-block-start\"),c.delete(\"margin-block-end\"),c.delete(\"margin-inline-start\"),c.delete(\"margin-inline-end\"),c.set(\"box-sizing\",[\"border-box\",\"\"])),((f=c.get(\"background-clip\"))==null?void 0:f[0])===\"text\"&&t.classList.add(\"______background-clip--text\"),ie&&(c.has(\"font-kerning\")||c.set(\"font-kerning\",[\"normal\",\"\"]),(((d=c.get(\"overflow-x\"))==null?void 0:d[0])===\"hidden\"||((m=c.get(\"overflow-y\"))==null?void 0:m[0])===\"hidden\")&&((w=c.get(\"text-overflow\"))==null?void 0:w[0])===\"ellipsis\"&&e.scrollWidth===e.clientWidth&&c.set(\"text-overflow\",[\"clip\",\"\"])),c.forEach(([p,b],g)=>{i.setProperty(g,p,b)}),c}function Nt(e,t){var r;try{if((r=e==null?void 0:e.contentDocument)!=null&&r.body)return oe(e.contentDocument.body,t)}catch(n){A(\"Failed to clone iframe\",n)}return e.cloneNode(!1)}function Ee(e){if(e.ownerDocument)try{const a=e.toDataURL();if(a!==\"data:,\")return U(a,e.ownerDocument)}catch(a){}const t=e.cloneNode(!1),r=e.getContext(\"2d\"),n=t.getContext(\"2d\");try{return r&&n&&n.putImageData(r.getImageData(0,0,e.width,e.height),0,0),t}catch(a){A(\"Failed to clone canvas\",a)}return t}function It(e){return E(this,null,function*(){if(e.ownerDocument&&!e.currentSrc&&e.poster)return U(e.poster,e.ownerDocument);const t=e.cloneNode(!1);t.crossOrigin=\"anonymous\",e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc);const r=t.ownerDocument;if(r){let n=!0;if(yield $(t,{onError:()=>n=!1}),!n)return e.poster?U(e.poster,e.ownerDocument):t;t.currentTime=e.currentTime,yield new Promise(s=>{t.addEventListener(\"seeked\",s,{once:!0})});const a=r.createElement(\"canvas\");a.width=e.offsetWidth,a.height=e.offsetHeight;try{const s=a.getContext(\"2d\");s&&s.drawImage(t,0,0,a.width,a.height)}catch(s){return A(\"Failed to clone video\",s),e.poster?U(e.poster,e.ownerDocument):t}return Ee(a)}return t})}function kt(e){const t=e.cloneNode(!1);return e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc,t.srcset=\"\"),t.loading===\"lazy\"&&(t.loading=\"eager\"),t}function xt(e,t){return et(e)?Ee(e):st(e)?Nt(e,t):_(e)?kt(e):G(e)?It(e):e.cloneNode(!1)}const Ce=new Set([\"symbol\"]);function Te(e,t,r,n){return E(this,null,function*(){if(k(r)&&(rt(r)||nt(r))||n.filter&&!n.filter(r))return;Ce.has(t.nodeName)||Ce.has(r.nodeName)?n.currentParentNodeStyle=void 0:n.currentParentNodeStyle=n.currentNodeStyle;const a=yield oe(r,n);n.isEnable(\"restoreScrollPosition\")&&Dt(e,a),t.appendChild(a)})}function ve(e,t,r){return E(this,null,function*(){var a,s;const n=(s=k(e)?(a=e.shadowRoot)==null?void 0:a.firstChild:void 0)!=null?s:e.firstChild;for(let o=n;o;o=o.nextSibling)if(!Qe(o))if(k(o)&&at(o)&&typeof o.assignedNodes==\"function\"){const i=o.assignedNodes();for(let l=0;l<i.length;l++)yield Te(e,t,i[l],r)}else yield Te(e,t,o,r)})}function Dt(e,t){if(!V(e)||!V(t))return;const{scrollTop:r,scrollLeft:n}=e;if(!r&&!n)return;const{transform:a}=t.style,s=new DOMMatrix(a),{a:o,b:i,c:l,d:u}=s;s.a=1,s.b=0,s.c=0,s.d=1,s.translateSelf(-n,-r),s.a=o,s.b=i,s.c=l,s.d=u,t.style.transform=s.toString()}function Rt(e,t){const{backgroundColor:r,width:n,height:a,style:s}=t,o=e.style;if(r&&o.setProperty(\"background-color\",r,\"important\"),n&&o.setProperty(\"width\",`${n}px`,\"important\"),a&&o.setProperty(\"height\",`${a}px`,\"important\"),s)for(const i in s)o[i]=s[i]}const Pt=/^[\\w-:]+$/;function oe(e,t,r=!1){return E(this,null,function*(){var i,l,u,c;const{ownerDocument:n,ownerWindow:a,fontFamilies:s}=t;if(n&&Ze(e))return n.createTextNode(e.data);if(n&&a&&k(e)&&(V(e)||q(e))){const f=yield xt(e,t);if(t.isEnable(\"removeAbnormalAttributes\")){const w=f.getAttributeNames();for(let p=w.length,b=0;b<p;b++){const g=w[b];Pt.test(g)||f.removeAttribute(g)}}const d=t.currentNodeStyle=At(e,f,r,t);r&&Rt(f,t);let m=!1;if(t.isEnable(\"copyScrollbar\")){const w=[(i=d.get(\"overflow-x\"))==null?void 0:i[0],(l=d.get(\"overflow-y\"))==null?void 0:l[1]];m=w.includes(\"scroll\")||(w.includes(\"auto\")||w.includes(\"overlay\"))&&(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth)}return Tt(e,f,m,t),vt(e,f),(c=we((u=d.get(\"font-family\"))==null?void 0:u[0]))==null||c.forEach(w=>s.add(w)),G(e)||(yield ve(e,f,t)),f}const o=e.cloneNode(!1);return yield ve(e,o,t),o})}function Ae(e){if(e.ownerDocument=void 0,e.ownerWindow=void 0,e.svgStyleElement=void 0,e.svgDefsElement=void 0,e.svgStyles.clear(),e.defaultComputedStyles.clear(),e.sandbox){try{e.sandbox.remove()}catch(t){}e.sandbox=void 0}e.workers=[],e.fontFamilies.clear(),e.fontCssTexts.clear(),e.requests.clear(),e.tasks=[]}function Ft(e){const i=e,{url:t,timeout:r,responseType:n}=i,a=We(i,[\"url\",\"timeout\",\"responseType\"]),s=new AbortController,o=r?setTimeout(()=>s.abort(),r):void 0;return fetch(t,D({signal:s.signal},a)).then(l=>{if(!l.ok)throw new Error(\"Failed fetch, not 2xx response\",{cause:l});switch(n){case\"dataUrl\":return l.blob().then(dt);case\"text\":default:return l.text()}}).finally(()=>clearTimeout(o))}function H(e,t){const{url:r,requestType:n=\"text\",responseType:a=\"text\",imageDom:s}=t;let o=r;const{timeout:i,acceptOfImage:l,requests:u,fetchFn:c,fetch:{requestInit:f,bypassingCache:d,placeholderImage:m},workers:w}=e;n===\"image\"&&(X||re)&&e.drawImageCount++;let p=u.get(r);if(!p){d&&d instanceof RegExp&&d.test(o)&&(o+=(/\\?/.test(o)?\"&\":\"?\")+new Date().getTime());const b=D({url:o,timeout:i,responseType:a,headers:n===\"image\"?{accept:l}:void 0},f);p={type:n,resolve:void 0,reject:void 0,response:null},p.response=(()=>E(this,null,function*(){if(c&&n===\"image\"){const g=yield c(r);if(g)return g}return!X&&r.startsWith(\"http\")&&w.length?new Promise((g,S)=>{w[u.size&w.length-1].postMessage(D({rawUrl:r},b)),p.resolve=g,p.reject=S}):Ft(b)}))().catch(g=>{if(u.delete(r),n===\"image\"&&m)return A(\"Failed to fetch image base64, trying to use placeholder image\",o),typeof m==\"string\"?m:m(s);throw g}),u.set(r,p)}return p.response}function Ne(e,t,r,n){return E(this,null,function*(){if(!Ie(e))return e;for(const[a,s]of Ut(e,t))try{const o=yield H(r,{url:s,requestType:n?\"image\":\"text\",responseType:\"dataUrl\"});e=e.replace(_t(a),`$1${o}$3`)}catch(o){A(\"Failed to fetch css data url\",a,o)}return e})}function Ie(e){return/url\\((['\"]?)([^'\"]+?)\\1\\)/.test(e)}const ke=/url\\((['\"]?)([^'\"]+?)\\1\\)/g;function Ut(e,t){const r=[];return e.replace(ke,(n,a,s)=>(r.push([s,ue(s,t)]),n)),r.filter(([n])=>!ne(n))}function _t(e){const t=e.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g,\"\\\\$1\");return new RegExp(`(url\\\\(['\"]?)(${t})(['\"]?\\\\))`,\"g\")}function $t(e,t){return E(this,null,function*(){const{ownerDocument:r,svgStyleElement:n,fontFamilies:a,fontCssTexts:s,tasks:o,font:i}=t;if(!(!r||!n||!a.size))if(i&&i.cssText){const l=De(i.cssText,t);n.appendChild(r.createTextNode(`${l}\n`))}else{const l=Array.from(r.styleSheets).filter(c=>{try{return\"cssRules\"in c&&Boolean(c.cssRules.length)}catch(f){return A(`Error while reading CSS rules from ${c.href}`,f),!1}});yield Promise.all(l.flatMap(c=>Array.from(c.cssRules).map((f,d)=>E(this,null,function*(){if(Je(f)){let m=d+1;const w=f.href;let p=\"\";try{p=yield H(t,{url:w,requestType:\"text\",responseType:\"text\"})}catch(g){A(`Error fetch remote css import from ${w}`,g)}const b=p.replace(ke,(g,S,y)=>g.replace(y,ue(y,w)));for(const g of Lt(b))try{c.insertRule(g,g.startsWith(\"@import\")?m+=1:c.cssRules.length)}catch(S){A(\"Error inserting rule from remote css import\",{rule:g,error:S})}}})))),l.flatMap(c=>Array.from(c.cssRules)).filter(c=>{var f;return Ye(c)&&Ie(c.style.getPropertyValue(\"src\"))&&((f=we(c.style.getPropertyValue(\"font-family\")))==null?void 0:f.some(d=>a.has(d)))}).forEach(c=>{const f=c,d=s.get(f.cssText);d?n.appendChild(r.createTextNode(`${d}\n`)):o.push(Ne(f.cssText,f.parentStyleSheet?f.parentStyleSheet.href:null,t).then(m=>{m=De(m,t),s.set(f.cssText,m),n.appendChild(r.createTextNode(`${m}\n`))}))})}})}const Bt=/(\\/\\*[\\s\\S]*?\\*\\/)/gi,xe=/((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})/gi;function Lt(e){if(e==null)return[];const t=[];let r=e.replace(Bt,\"\");for(;;){const s=xe.exec(r);if(!s)break;t.push(s[0])}r=r.replace(xe,\"\");const n=/@import[\\s\\S]*?url\\([^)]*\\)[\\s\\S]*?;/gi,a=new RegExp(\"((\\\\s*?(?:\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/)?\\\\s*?@media[\\\\s\\\\S]*?){([\\\\s\\\\S]*?)}\\\\s*?})|(([\\\\s\\\\S]*?){([\\\\s\\\\S]*?)})\",\"gi\");for(;;){let s=n.exec(r);if(s)a.lastIndex=n.lastIndex;else if(s=a.exec(r),s)n.lastIndex=a.lastIndex;else break;t.push(s[0])}return t}const Mt=/url\\([^)]+\\)\\s*format\\(([\"']?)([^\"']+)\\1\\)/g,Ot=/src:\\s*(?:url\\([^)]+\\)\\s*format\\([^)]+\\)[,;]\\s*)+/g;function De(e,t){const{font:r}=t,n=r?r==null?void 0:r.preferredFormat:void 0;return n?e.replace(Ot,a=>{for(;;){const[s,,o]=Mt.exec(a)||[];if(!o)return\"\";if(o===n)return`src: ${s};`}}):e}function Wt(e,t){if(_(e)){const r=e.currentSrc||e.src;if(!ne(r))return[H(t,{url:r,imageDom:e,requestType:\"image\",responseType:\"dataUrl\"}).then(n=>{n&&(e.srcset=\"\",e.dataset.originalSrc=r,e.src=n||\"\")})];(X||re)&&t.drawImageCount++}else if(q(e)&&!ne(e.href.baseVal)){const r=e.href.baseVal;return[H(t,{url:r,imageDom:e,requestType:\"image\",responseType:\"dataUrl\"}).then(n=>{n&&(e.dataset.originalSrc=r,e.href.baseVal=n||\"\")})]}return[]}const jt=[\"background-image\",\"border-image-source\",\"-webkit-border-image\",\"-webkit-mask-image\",\"list-style-image\"];function qt(e,t){return jt.map(r=>{const n=e.getPropertyValue(r);return!n||n===\"none\"?null:((X||re)&&t.drawImageCount++,Ne(n,null,t,!0).then(a=>{!a||n===a||e.setProperty(r,a,e.getPropertyPriority(r))}))}).filter(Boolean)}function Vt(e,t){var i;const{ownerDocument:r,svgDefsElement:n}=t,a=(i=e.getAttribute(\"href\"))!=null?i:e.getAttribute(\"xlink:href\");if(!a)return[];const[s,o]=a.split(\"#\");if(o){const l=`#${o}`,u=r==null?void 0:r.querySelector(`svg ${l}`);if(s&&e.setAttribute(\"href\",l),n!=null&&n.querySelector(l))return[];if(u)return n==null||n.appendChild(u.cloneNode(!0)),[];if(s)return[H(t,{url:s,responseType:\"text\"}).then(c=>{n==null||n.insertAdjacentHTML(\"beforeend\",c)})]}return[]}function Re(e,t){const{tasks:r}=t;k(e)&&((_(e)||ce(e))&&r.push(...Wt(e,t)),Ke(e)&&r.push(...Vt(e,t))),V(e)&&r.push(...qt(e.style,t)),e.childNodes.forEach(n=>{Re(n,t)})}function Pe(e,t){return E(this,null,function*(){const r=yield x(e,t);if(k(r.node)&&q(r.node))return r.node;const{ownerDocument:n,log:a,tasks:s,svgStyleElement:o,svgDefsElement:i,svgStyles:l,font:u,progress:c,autoDestruct:f,onCloneNode:d,onEmbedNode:m,onCreateForeignObjectSvg:w}=r;a.time(\"clone node\");const p=yield oe(r.node,r,!0);if(o&&n){let v=\"\";l.forEach((I,P)=>{v+=`${I.join(`,\n`)} {\n  ${P}\n}\n`}),o.appendChild(n.createTextNode(v))}a.timeEnd(\"clone node\"),d==null||d(p),u!==!1&&k(p)&&(a.time(\"embed web font\"),yield $t(p,r),a.timeEnd(\"embed web font\")),a.time(\"embed node\"),Re(p,r);const b=s.length;let g=0;const S=()=>E(this,null,function*(){for(;;){const v=s.pop();if(!v)break;try{yield v}catch(I){A(\"Failed to run task\",I)}c==null||c(++g,b)}});c==null||c(g,b),yield Promise.all([...Array(4)].map(S)),a.timeEnd(\"embed node\"),m==null||m(p);const y=Ht(p,r);return i&&y.insertBefore(i,y.children[0]),o&&y.insertBefore(o,y.children[0]),f&&Ae(r),w==null||w(y),y})}function Ht(e,t){const{width:r,height:n}=t,a=fe(r,n,e.ownerDocument),s=a.ownerDocument.createElementNS(a.namespaceURI,\"foreignObject\");return s.setAttributeNS(null,\"x\",\"0%\"),s.setAttributeNS(null,\"y\",\"0%\"),s.setAttributeNS(null,\"width\",\"100%\"),s.setAttributeNS(null,\"height\",\"100%\"),s.append(e),a.appendChild(s),a}function K(e,t){return E(this,null,function*(){var o;const r=yield x(e,t),n=yield Pe(r),a=de(n,r.isEnable(\"removeControlCharacter\"));r.autoDestruct||(r.svgStyleElement=ye(r.ownerDocument),r.svgDefsElement=(o=r.ownerDocument)==null?void 0:o.createElementNS(J,\"defs\"),r.svgStyles.clear());const s=U(a,n.ownerDocument);return yield pt(s,r)})}function zt(e,t){return E(this,null,function*(){const r=yield x(e,t),{log:n,type:a,quality:s,dpi:o}=r,i=yield K(r);n.time(\"canvas to blob\");const l=yield ut(i,a,s);if([\"image/png\",\"image/jpeg\"].includes(a)&&o){const u=yield mt(l.slice(0,33));let c=new Uint8Array(u);return a===\"image/png\"?c=ae(c,o):a===\"image/jpeg\"&&(c=C(c,o)),n.timeEnd(\"canvas to blob\"),new Blob([c,l.slice(33)],{type:a})}return n.timeEnd(\"canvas to blob\"),l})}function B(e,t){return E(this,null,function*(){const r=yield x(e,t),{log:n,quality:a,type:s,dpi:o}=r,i=yield K(r);n.time(\"canvas to data url\");let l=i.toDataURL(s,a);if([\"image/png\",\"image/jpeg\"].includes(s)&&o&&se&&Xe){const[u,c]=l.split(\",\");let f=0,d=!1;if(s===\"image/png\"){const y=He(c);y>=0?(f=Math.ceil((y+28)/3)*4,d=!0):f=33/3*4}else s===\"image/jpeg\"&&(f=18/3*4);const m=c.substring(0,f),w=c.substring(f),p=window.atob(m),b=new Uint8Array(p.length);for(let y=0;y<b.length;y++)b[y]=p.charCodeAt(y);const g=s===\"image/png\"?ae(b,o,d):C(b,o),S=window.btoa(String.fromCharCode(...g));l=[u,\",\",S,w].join(\"\")}return n.timeEnd(\"canvas to data url\"),l})}function Fe(e,t){return E(this,null,function*(){const r=yield x(e,t),{width:n,height:a,ownerDocument:s}=r,o=yield B(r),i=fe(n,a,s),l=i.ownerDocument.createElementNS(i.namespaceURI,\"image\");return l.setAttributeNS(null,\"href\",o),l.setAttributeNS(null,\"height\",\"100%\"),l.setAttributeNS(null,\"width\",\"100%\"),i.appendChild(l),de(i,r.isEnable(\"removeControlCharacter\"))})}function Xt(e,t){return E(this,null,function*(){const r=yield x(e,t),{ownerDocument:n,width:a,height:s,scale:o,type:i}=r,l=i===\"image/svg+xml\"?yield Fe(r):yield B(r),u=U(l,n);return u.width=Math.floor(a*o),u.height=Math.floor(s*o),u.style.width=`${a}px`,u.style.height=`${s}px`,u})}function Gt(e,t){return E(this,null,function*(){return B(yield x(e,L(D({},t),{type:\"image/jpeg\"})))})}function Yt(e,t){return E(this,null,function*(){const r=yield x(e,t),n=yield K(r);return n.getContext(\"2d\").getImageData(0,0,n.width,n.height).data})}function Jt(e,t){return E(this,null,function*(){return B(yield x(e,L(D({},t),{type:\"image/png\"})))})}function Kt(e,t){return E(this,null,function*(){return B(yield x(e,L(D({},t),{type:\"image/webp\"})))})}h.createContext=pe,h.destroyContext=Ae,h.domToBlob=zt,h.domToCanvas=K,h.domToDataUrl=B,h.domToForeignObjectSvg=Pe,h.domToImage=Xt,h.domToJpeg=Gt,h.domToPixel=Yt,h.domToPng=Jt,h.domToSvg=Fe,h.domToWebp=Kt,h.loadMedia=$,h.waitUntilLoad=ge,Object.defineProperty(h,Symbol.toStringTag,{value:\"Module\"})});\n","/**\n * @gitlab/at.js - 1.5.7\n * Copyright (c) 2021 chord.luo <chord.luo@gmail.com>;\n * Homepage: https://gitlab.com/gitlab-org/frontend/At.js\n * License: MIT\n */\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module unless amdModuleId is set\n    define([\"jquery\"], function (a0) {\n      return (factory(a0));\n    });\n  } else if (typeof exports === 'object') {\n    // Node. Does not work with strict CommonJS, but\n    // only CommonJS-like environments that support module.exports,\n    // like Node.\n    module.exports = factory(require(\"jquery\"));\n  } else {\n    factory(jQuery);\n  }\n}(this, function ($) {\nvar DEFAULT_CALLBACKS, KEY_CODE;\n\nKEY_CODE = {\n  ESC: 27,\n  TAB: 9,\n  ENTER: 13,\n  CTRL: 17,\n  A: 65,\n  P: 80,\n  N: 78,\n  LEFT: 37,\n  UP: 38,\n  RIGHT: 39,\n  DOWN: 40,\n  BACKSPACE: 8,\n  SPACE: 32\n};\n\nDEFAULT_CALLBACKS = {\n  beforeSave: function(data) {\n    return Controller.arrayToDefaultHash(data);\n  },\n  matcher: function(flag, subtext, should_startWithSpace, acceptSpaceBar) {\n    var _a, _y, match, regexp, space;\n    flag = flag.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n    if (should_startWithSpace) {\n      flag = '(?:^|\\\\s)' + flag;\n    }\n    _a = decodeURI(\"%C3%80\");\n    _y = decodeURI(\"%C3%BF\");\n    space = acceptSpaceBar ? \"\\ \" : \"\";\n    regexp = new RegExp(flag + \"([A-Za-z\" + _a + \"-\" + _y + \"0-9_\" + space + \"\\'\\.\\+\\-]*)$|\" + flag + \"([^\\\\x00-\\\\xff]*)$\", 'gi');\n    match = regexp.exec(subtext);\n    if (match) {\n      return match[2] || match[1];\n    } else {\n      return null;\n    }\n  },\n  filter: function(query, data, searchKey) {\n    var _results, i, item, len;\n    _results = [];\n    for (i = 0, len = data.length; i < len; i++) {\n      item = data[i];\n      if (~new String(item[searchKey]).toLowerCase().indexOf(query.toLowerCase())) {\n        _results.push(item);\n      }\n    }\n    return _results;\n  },\n  remoteFilter: null,\n  sorter: function(query, items, searchKey) {\n    var _results, i, item, len;\n    if (!query) {\n      return items;\n    }\n    _results = [];\n    for (i = 0, len = items.length; i < len; i++) {\n      item = items[i];\n      item.atwho_order = new String(item[searchKey]).toLowerCase().indexOf(query.toLowerCase());\n      if (item.atwho_order > -1) {\n        _results.push(item);\n      }\n    }\n    return _results.sort(function(a, b) {\n      return a.atwho_order - b.atwho_order;\n    });\n  },\n  tplEval: function(tpl, map) {\n    var error, template;\n    template = tpl;\n    try {\n      if (typeof tpl !== 'string') {\n        template = tpl(map);\n      }\n      return template.replace(/\\$\\{([^\\}]*)\\}/g, function(tag, key, pos) {\n        return map[key];\n      });\n    } catch (error1) {\n      error = error1;\n      return \"\";\n    }\n  },\n  highlighter: function(li, query) {\n    var regexp;\n    if (!query) {\n      return li;\n    }\n    regexp = new RegExp(\">\\\\s*([^\\<]*?)(\" + query.replace(\"+\", \"\\\\+\") + \")([^\\<]*)\\\\s*<\", 'ig');\n    return li.replace(regexp, function(str, $1, $2, $3) {\n      return '> ' + $1 + '<strong>' + $2 + '</strong>' + $3 + ' <';\n    });\n  },\n  beforeInsert: function(value, $li, e) {\n    return value;\n  },\n  beforeReposition: function(offset) {\n    return offset;\n  },\n  afterMatchFailed: function(at, el) {}\n};\n\nvar App;\n\nApp = (function() {\n  function App(inputor) {\n    this.currentFlag = null;\n    this.controllers = {};\n    this.aliasMaps = {};\n    this.$inputor = $(inputor);\n    this.setupRootElement();\n    this.listen();\n  }\n\n  App.prototype.createContainer = function(doc) {\n    var ref;\n    if ((ref = this.$el) != null) {\n      ref.remove();\n    }\n    return $(doc.body).append(this.$el = $(\"<div class='atwho-container'></div>\"));\n  };\n\n  App.prototype.setupRootElement = function(iframe, asRoot) {\n    var error;\n    if (asRoot == null) {\n      asRoot = false;\n    }\n    if (iframe) {\n      this.window = iframe.contentWindow;\n      this.document = iframe.contentDocument || this.window.document;\n      this.iframe = iframe;\n    } else {\n      this.document = this.$inputor[0].ownerDocument;\n      this.window = this.document.defaultView || this.document.parentWindow;\n      try {\n        this.iframe = this.window.frameElement;\n      } catch (error1) {\n        error = error1;\n        this.iframe = null;\n        if ($.fn.atwho.debug) {\n          throw new Error(\"iframe auto-discovery is failed.\\nPlease use `setIframe` to set the target iframe manually.\\n\" + error);\n        }\n      }\n    }\n    return this.createContainer((this.iframeAsRoot = asRoot) ? this.document : document);\n  };\n\n  App.prototype.controller = function(at) {\n    var c, current, currentFlag, ref;\n    if (this.aliasMaps[at]) {\n      current = this.controllers[this.aliasMaps[at]];\n    } else {\n      ref = this.controllers;\n      for (currentFlag in ref) {\n        c = ref[currentFlag];\n        if (currentFlag === at) {\n          current = c;\n          break;\n        }\n      }\n    }\n    if (current) {\n      return current;\n    } else {\n      return this.controllers[this.currentFlag];\n    }\n  };\n\n  App.prototype.setContextFor = function(at) {\n    this.currentFlag = at;\n    return this;\n  };\n\n  App.prototype.reg = function(flag, setting) {\n    var base, controller;\n    controller = (base = this.controllers)[flag] || (base[flag] = this.$inputor.is('[contentEditable]') ? new EditableController(this, flag) : new TextareaController(this, flag));\n    if (setting.alias) {\n      this.aliasMaps[setting.alias] = flag;\n    }\n    controller.init(setting);\n    return this;\n  };\n\n  App.prototype.listen = function() {\n    return this.$inputor.on('compositionstart', (function(_this) {\n      return function(e) {\n        var ref;\n        if ((ref = _this.controller()) != null) {\n          ref.view.hide();\n        }\n        _this.isComposing = true;\n        return null;\n      };\n    })(this)).on('compositionend', (function(_this) {\n      return function(e) {\n        _this.isComposing = false;\n        setTimeout(function(e) {\n          return _this.dispatch(e);\n        });\n        return null;\n      };\n    })(this)).on('keyup.atwhoInner', (function(_this) {\n      return function(e) {\n        return _this.onKeyup(e);\n      };\n    })(this)).on('keydown.atwhoInner', (function(_this) {\n      return function(e) {\n        return _this.onKeydown(e);\n      };\n    })(this)).on('blur.atwhoInner', (function(_this) {\n      return function(e) {\n        var c;\n        if (c = _this.controller()) {\n          c.expectedQueryCBId = null;\n          return c.view.hide(e, c.getOpt(\"displayTimeout\"));\n        }\n      };\n    })(this)).on('click.atwhoInner', (function(_this) {\n      return function(e) {\n        return _this.dispatch(e);\n      };\n    })(this)).on('scroll.atwhoInner', (function(_this) {\n      return function() {\n        var lastScrollTop;\n        lastScrollTop = _this.$inputor.scrollTop();\n        return function(e) {\n          var currentScrollTop, ref;\n          currentScrollTop = e.target.scrollTop;\n          if (lastScrollTop !== currentScrollTop) {\n            if ((ref = _this.controller()) != null) {\n              ref.view.hide(e);\n            }\n          }\n          lastScrollTop = currentScrollTop;\n          return true;\n        };\n      };\n    })(this)());\n  };\n\n  App.prototype.shutdown = function() {\n    var _, c, ref;\n    ref = this.controllers;\n    for (_ in ref) {\n      c = ref[_];\n      c.destroy();\n      delete this.controllers[_];\n    }\n    this.$inputor.off('.atwhoInner');\n    return this.$el.remove();\n  };\n\n  App.prototype.dispatch = function(e) {\n    var _, c, ref, results;\n    if (void 0 === e) {\n      return;\n    }\n    ref = this.controllers;\n    results = [];\n    for (_ in ref) {\n      c = ref[_];\n      results.push(c.lookUp(e));\n    }\n    return results;\n  };\n\n  App.prototype.onKeyup = function(e) {\n    var ref;\n    switch (e.keyCode) {\n      case KEY_CODE.ESC:\n        e.preventDefault();\n        if ((ref = this.controller()) != null) {\n          ref.view.hide();\n        }\n        break;\n      case KEY_CODE.DOWN:\n      case KEY_CODE.UP:\n      case KEY_CODE.CTRL:\n      case KEY_CODE.ENTER:\n        $.noop();\n        break;\n      case KEY_CODE.P:\n      case KEY_CODE.N:\n        if (!e.ctrlKey) {\n          this.dispatch(e);\n        }\n        break;\n      default:\n        this.dispatch(e);\n    }\n  };\n\n  App.prototype.onKeydown = function(e) {\n    var ref, view;\n    view = (ref = this.controller()) != null ? ref.view : void 0;\n    if (!(view && view.visible())) {\n      return;\n    }\n    switch (e.keyCode) {\n      case KEY_CODE.ESC:\n        e.preventDefault();\n        view.hide(e);\n        break;\n      case KEY_CODE.UP:\n        e.preventDefault();\n        view.prev();\n        break;\n      case KEY_CODE.DOWN:\n        e.preventDefault();\n        view.next();\n        break;\n      case KEY_CODE.P:\n        if (!e.ctrlKey) {\n          return;\n        }\n        e.preventDefault();\n        view.prev();\n        break;\n      case KEY_CODE.N:\n        if (!e.ctrlKey) {\n          return;\n        }\n        e.preventDefault();\n        view.next();\n        break;\n      case KEY_CODE.TAB:\n      case KEY_CODE.ENTER:\n      case KEY_CODE.SPACE:\n        if (!view.visible()) {\n          return;\n        }\n        if (!this.controller().getOpt('spaceSelectsMatch') && e.keyCode === KEY_CODE.SPACE) {\n          return;\n        }\n        if (!this.controller().getOpt('tabSelectsMatch') && e.keyCode === KEY_CODE.TAB) {\n          return;\n        }\n        if (view.highlighted()) {\n          e.preventDefault();\n          view.choose(e);\n        } else {\n          view.hide(e);\n        }\n        break;\n      default:\n        $.noop();\n    }\n  };\n\n  return App;\n\n})();\n\nvar Controller,\n  slice = [].slice;\n\nController = (function() {\n  Controller.prototype.uid = function() {\n    return (Math.random().toString(16) + \"000000000\").substr(2, 8) + (new Date().getTime());\n  };\n\n  function Controller(app, at1) {\n    this.app = app;\n    this.at = at1;\n    this.$inputor = this.app.$inputor;\n    this.id = this.$inputor[0].id || this.uid();\n    this.expectedQueryCBId = null;\n    this.setting = null;\n    this.query = null;\n    this.pos = 0;\n    this.range = null;\n    if ((this.$el = $(\"#atwho-ground-\" + this.id, this.app.$el)).length === 0) {\n      this.app.$el.append(this.$el = $(\"<div id='atwho-ground-\" + this.id + \"'></div>\"));\n    }\n    this.model = new Model(this);\n    this.view = new View(this);\n  }\n\n  Controller.prototype.init = function(setting) {\n    this.setting = $.extend({}, this.setting || $.fn.atwho[\"default\"], setting);\n    this.view.init();\n    return this.model.reload(this.setting.data);\n  };\n\n  Controller.prototype.destroy = function() {\n    this.trigger('beforeDestroy');\n    this.model.destroy();\n    this.view.destroy();\n    return this.$el.remove();\n  };\n\n  Controller.prototype.callDefault = function() {\n    var args, error, funcName;\n    funcName = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n    try {\n      return DEFAULT_CALLBACKS[funcName].apply(this, args);\n    } catch (error1) {\n      error = error1;\n      return $.error(error + \" Or maybe At.js doesn't have function \" + funcName);\n    }\n  };\n\n  Controller.prototype.trigger = function(name, data) {\n    var alias, eventName;\n    if (data == null) {\n      data = [];\n    }\n    data.push(this);\n    alias = this.getOpt('alias');\n    eventName = alias ? name + \"-\" + alias + \".atwho\" : name + \".atwho\";\n    return this.$inputor.trigger(eventName, data);\n  };\n\n  Controller.prototype.callbacks = function(funcName) {\n    return this.getOpt(\"callbacks\")[funcName] || DEFAULT_CALLBACKS[funcName];\n  };\n\n  Controller.prototype.getOpt = function(at, default_value) {\n    var e;\n    try {\n      return this.setting[at];\n    } catch (error1) {\n      e = error1;\n      return null;\n    }\n  };\n\n  Controller.prototype.insertContentFor = function($li) {\n    var data, tpl;\n    tpl = this.getOpt('insertTpl');\n    data = $.extend({}, $li.data('item-data'), {\n      'atwho-at': this.at\n    });\n    return this.callbacks(\"tplEval\").call(this, tpl, data, \"onInsert\");\n  };\n\n  Controller.prototype.renderView = function(data) {\n    var searchKey;\n    searchKey = this.getOpt(\"searchKey\");\n    data = this.callbacks(\"sorter\").call(this, this.query.text, data, searchKey);\n    return this.view.render(data.slice(0, this.getOpt('limit')));\n  };\n\n  Controller.arrayToDefaultHash = function(data) {\n    var i, item, len, results;\n    if (!$.isArray(data)) {\n      return data;\n    }\n    results = [];\n    for (i = 0, len = data.length; i < len; i++) {\n      item = data[i];\n      if ($.isPlainObject(item)) {\n        results.push(item);\n      } else {\n        results.push({\n          name: item\n        });\n      }\n    }\n    return results;\n  };\n\n  Controller.prototype.lookUp = function(e) {\n    var query, wait;\n    if (e && e.type === 'click' && !this.getOpt('lookUpOnClick')) {\n      return;\n    }\n    if (this.getOpt('suspendOnComposing') && this.app.isComposing) {\n      return;\n    }\n    query = this.catchQuery(e);\n    if (!query) {\n      this.expectedQueryCBId = null;\n      return query;\n    }\n    this.app.setContextFor(this.at);\n    if (wait = this.getOpt('delay')) {\n      this._delayLookUp(query, wait);\n    } else {\n      this._lookUp(query);\n    }\n    return query;\n  };\n\n  Controller.prototype._delayLookUp = function(query, wait) {\n    var now, remaining;\n    now = Date.now ? Date.now() : new Date().getTime();\n    this.previousCallTime || (this.previousCallTime = now);\n    remaining = wait - (now - this.previousCallTime);\n    if ((0 < remaining && remaining < wait)) {\n      this.previousCallTime = now;\n      this._stopDelayedCall();\n      return this.delayedCallTimeout = setTimeout((function(_this) {\n        return function() {\n          _this.previousCallTime = 0;\n          _this.delayedCallTimeout = null;\n          return _this._lookUp(query);\n        };\n      })(this), wait);\n    } else {\n      this._stopDelayedCall();\n      if (this.previousCallTime !== now) {\n        this.previousCallTime = 0;\n      }\n      return this._lookUp(query);\n    }\n  };\n\n  Controller.prototype._stopDelayedCall = function() {\n    if (this.delayedCallTimeout) {\n      clearTimeout(this.delayedCallTimeout);\n      return this.delayedCallTimeout = null;\n    }\n  };\n\n  Controller.prototype._generateQueryCBId = function() {\n    return {};\n  };\n\n  Controller.prototype._lookUp = function(query) {\n    var _callback;\n    _callback = function(queryCBId, data) {\n      if (queryCBId !== this.expectedQueryCBId) {\n        return;\n      }\n      if (data && data.length > 0) {\n        return this.renderView(this.constructor.arrayToDefaultHash(data));\n      } else {\n        return this.view.hide();\n      }\n    };\n    this.expectedQueryCBId = this._generateQueryCBId();\n    return this.model.query(query.text, $.proxy(_callback, this, this.expectedQueryCBId));\n  };\n\n  return Controller;\n\n})();\n\nvar TextareaController,\n  extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n  hasProp = {}.hasOwnProperty;\n\nTextareaController = (function(superClass) {\n  extend(TextareaController, superClass);\n\n  function TextareaController() {\n    return TextareaController.__super__.constructor.apply(this, arguments);\n  }\n\n  TextareaController.prototype.catchQuery = function() {\n    var caretPos, content, end, isString, query, start, subtext;\n    content = this.$inputor.val();\n    caretPos = this.$inputor.caret('pos', {\n      iframe: this.app.iframe\n    });\n    subtext = content.slice(0, caretPos);\n    query = this.callbacks(\"matcher\").call(this, this.at, subtext, this.getOpt('startWithSpace'), this.getOpt(\"acceptSpaceBar\"));\n    isString = typeof query === 'string';\n    if (isString && query.length < this.getOpt('minLen', 0)) {\n      return;\n    }\n    if (isString && query.length <= this.getOpt('maxLen', 20)) {\n      start = caretPos - query.length;\n      end = start + query.length;\n      this.pos = start;\n      query = {\n        'text': query,\n        'headPos': start,\n        'endPos': end\n      };\n      this.trigger(\"matched\", [this.at, query.text]);\n    } else {\n      query = null;\n      this.view.hide();\n    }\n    return this.query = query;\n  };\n\n  TextareaController.prototype.rect = function() {\n    var c, iframeOffset, scaleBottom;\n    if (!(c = this.$inputor.caret('offset', this.pos - 1, {\n      iframe: this.app.iframe\n    }))) {\n      return;\n    }\n    if (this.app.iframe && !this.app.iframeAsRoot) {\n      iframeOffset = $(this.app.iframe).offset();\n      c.left += iframeOffset.left;\n      c.top += iframeOffset.top;\n    }\n    scaleBottom = this.app.document.selection ? 0 : 2;\n    return {\n      left: c.left,\n      top: c.top,\n      bottom: c.top + c.height + scaleBottom\n    };\n  };\n\n  TextareaController.prototype.insert = function(content, $li) {\n    var $inputor, source, startStr, suffix, text;\n    $inputor = this.$inputor;\n    source = $inputor.val();\n    startStr = source.slice(0, Math.max(this.query.headPos - this.at.length, 0));\n    suffix = (suffix = this.getOpt('suffix')) === \"\" ? suffix : suffix || \" \";\n    content += suffix;\n    text = \"\" + startStr + content + (source.slice(this.query['endPos'] || 0));\n    $inputor.val(text);\n    $inputor.caret('pos', startStr.length + content.length, {\n      iframe: this.app.iframe\n    });\n    if (!$inputor.is(':focus')) {\n      $inputor.focus();\n    }\n    return $inputor.change();\n  };\n\n  return TextareaController;\n\n})(Controller);\n\nvar EditableController,\n  extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n  hasProp = {}.hasOwnProperty;\n\nEditableController = (function(superClass) {\n  extend(EditableController, superClass);\n\n  function EditableController() {\n    return EditableController.__super__.constructor.apply(this, arguments);\n  }\n\n  EditableController.prototype._getRange = function() {\n    var sel;\n    sel = this.app.window.getSelection();\n    if (sel.rangeCount > 0) {\n      return sel.getRangeAt(0);\n    }\n  };\n\n  EditableController.prototype._setRange = function(position, node, range) {\n    if (range == null) {\n      range = this._getRange();\n    }\n    if (!(range && node)) {\n      return;\n    }\n    node = $(node)[0];\n    if (position === 'after') {\n      range.setEndAfter(node);\n      range.setStartAfter(node);\n    } else {\n      range.setEndBefore(node);\n      range.setStartBefore(node);\n    }\n    range.collapse(false);\n    return this._clearRange(range);\n  };\n\n  EditableController.prototype._clearRange = function(range) {\n    var sel;\n    if (range == null) {\n      range = this._getRange();\n    }\n    sel = this.app.window.getSelection();\n    if (this.ctrl_a_pressed == null) {\n      sel.removeAllRanges();\n      return sel.addRange(range);\n    }\n  };\n\n  EditableController.prototype._movingEvent = function(e) {\n    var ref;\n    return e.type === 'click' || ((ref = e.which) === KEY_CODE.RIGHT || ref === KEY_CODE.LEFT || ref === KEY_CODE.UP || ref === KEY_CODE.DOWN);\n  };\n\n  EditableController.prototype._unwrap = function(node) {\n    var next;\n    node = $(node).unwrap().get(0);\n    if ((next = node.nextSibling) && next.nodeValue) {\n      node.nodeValue += next.nodeValue;\n      $(next).remove();\n    }\n    return node;\n  };\n\n  EditableController.prototype.catchQuery = function(e) {\n    var $inserted, $query, _range, index, inserted, isString, lastNode, matched, offset, query, query_content, range;\n    if (!(range = this._getRange())) {\n      return;\n    }\n    if (!range.collapsed) {\n      return;\n    }\n    if (e.which === KEY_CODE.ENTER) {\n      ($query = $(range.startContainer).closest('.atwho-query')).contents().unwrap();\n      if ($query.is(':empty')) {\n        $query.remove();\n      }\n      ($query = $(\".atwho-query\", this.app.document)).text($query.text()).contents().last().unwrap();\n      this._clearRange();\n      return;\n    }\n    if (/firefox/i.test(navigator.userAgent)) {\n      if ($(range.startContainer).is(this.$inputor)) {\n        this._clearRange();\n        return;\n      }\n      if (e.which === KEY_CODE.BACKSPACE && range.startContainer.nodeType === document.ELEMENT_NODE && (offset = range.startOffset - 1) >= 0) {\n        _range = range.cloneRange();\n        _range.setStart(range.startContainer, offset);\n        if ($(_range.cloneContents()).contents().last().is('.atwho-inserted')) {\n          inserted = $(range.startContainer).contents().get(offset);\n          this._setRange('after', $(inserted).contents().last());\n        }\n      } else if (e.which === KEY_CODE.LEFT && range.startContainer.nodeType === document.TEXT_NODE) {\n        $inserted = $(range.startContainer.previousSibling);\n        if ($inserted.is('.atwho-inserted') && range.startOffset === 0) {\n          this._setRange('after', $inserted.contents().last());\n        }\n      }\n    }\n    $(range.startContainer).closest('.atwho-inserted').addClass('atwho-query').siblings().removeClass('atwho-query');\n    if (($query = $(\".atwho-query\", this.app.document)).length > 0 && $query.is(':empty') && $query.text().length === 0) {\n      $query.remove();\n    }\n    if (!this._movingEvent(e)) {\n      $query.removeClass('atwho-inserted');\n    }\n    if ($query.length > 0) {\n      switch (e.which) {\n        case KEY_CODE.LEFT:\n          this._setRange('before', $query.get(0), range);\n          $query.removeClass('atwho-query');\n          return;\n        case KEY_CODE.RIGHT:\n          this._setRange('after', $query.get(0).nextSibling, range);\n          $query.removeClass('atwho-query');\n          return;\n      }\n    }\n    if ($query.length > 0 && (query_content = $query.attr('data-atwho-at-query'))) {\n      $query.empty().html(query_content).attr('data-atwho-at-query', null);\n      this._setRange('after', $query.get(0), range);\n    }\n    _range = range.cloneRange();\n    _range.setStart(range.startContainer, 0);\n    matched = this.callbacks(\"matcher\").call(this, this.at, _range.toString(), this.getOpt('startWithSpace'), this.getOpt(\"acceptSpaceBar\"));\n    isString = typeof matched === 'string';\n    if ($query.length === 0 && isString && (index = range.startOffset - this.at.length - matched.length) >= 0) {\n      range.setStart(range.startContainer, index);\n      $query = $('<span/>', this.app.document).attr(this.getOpt(\"editableAtwhoQueryAttrs\")).addClass('atwho-query');\n      range.surroundContents($query.get(0));\n      lastNode = $query.contents().last().get(0);\n      if (lastNode) {\n        if (/firefox/i.test(navigator.userAgent)) {\n          range.setStart(lastNode, lastNode.length);\n          range.setEnd(lastNode, lastNode.length);\n          this._clearRange(range);\n        } else {\n          this._setRange('after', lastNode, range);\n        }\n      }\n    }\n    if (isString && matched.length < this.getOpt('minLen', 0)) {\n      return;\n    }\n    if (isString && matched.length <= this.getOpt('maxLen', 20)) {\n      query = {\n        text: matched,\n        el: $query\n      };\n      this.trigger(\"matched\", [this.at, query.text]);\n      return this.query = query;\n    } else {\n      this.view.hide();\n      this.query = {\n        el: $query\n      };\n      if ($query.text().indexOf(this.at) >= 0) {\n        if (this._movingEvent(e) && $query.hasClass('atwho-inserted')) {\n          $query.removeClass('atwho-query');\n        } else if (false !== this.callbacks('afterMatchFailed').call(this, this.at, $query)) {\n          this._setRange(\"after\", this._unwrap($query.text($query.text()).contents().first()));\n        }\n      }\n      return null;\n    }\n  };\n\n  EditableController.prototype.rect = function() {\n    var $iframe, iframeOffset, rect;\n    rect = this.query.el.offset();\n    if (!(rect && this.query.el[0].getClientRects().length)) {\n      return;\n    }\n    if (this.app.iframe && !this.app.iframeAsRoot) {\n      iframeOffset = ($iframe = $(this.app.iframe)).offset();\n      rect.left += iframeOffset.left - this.$inputor.scrollLeft();\n      rect.top += iframeOffset.top - this.$inputor.scrollTop();\n    }\n    rect.bottom = rect.top + this.query.el.height();\n    return rect;\n  };\n\n  EditableController.prototype.insert = function(content, $li) {\n    var data, overrides, range, suffix, suffixNode;\n    if (!this.$inputor.is(':focus')) {\n      this.$inputor.focus();\n    }\n    overrides = this.getOpt('functionOverrides');\n    if (overrides.insert) {\n      return overrides.insert.call(this, content, $li);\n    }\n    suffix = (suffix = this.getOpt('suffix')) === \"\" ? suffix : suffix || \"\\u00A0\";\n    data = $li.data('item-data');\n    this.query.el.removeClass('atwho-query').addClass('atwho-inserted').html(content).attr('data-atwho-at-query', \"\" + data['atwho-at'] + this.query.text).attr('contenteditable', \"false\");\n    if (range = this._getRange()) {\n      if (this.query.el.length) {\n        range.setEndAfter(this.query.el[0]);\n      }\n      range.collapse(false);\n      range.insertNode(suffixNode = this.app.document.createTextNode(\"\" + suffix));\n      this._setRange('after', suffixNode, range);\n    }\n    if (!this.$inputor.is(':focus')) {\n      this.$inputor.focus();\n    }\n    return this.$inputor.change();\n  };\n\n  return EditableController;\n\n})(Controller);\n\nvar Model;\n\nModel = (function() {\n  function Model(context) {\n    this.context = context;\n    this.at = this.context.at;\n    this.storage = this.context.$inputor;\n  }\n\n  Model.prototype.destroy = function() {\n    return this.storage.data(this.at, null);\n  };\n\n  Model.prototype.saved = function() {\n    return this.fetch() > 0;\n  };\n\n  Model.prototype.query = function(query, callback) {\n    var _remoteFilter, data, searchKey;\n    data = this.fetch();\n    searchKey = this.context.getOpt(\"searchKey\");\n    data = this.context.callbacks('filter').call(this.context, query, data, searchKey) || [];\n    _remoteFilter = this.context.callbacks('remoteFilter');\n    if (data.length > 0 || (!_remoteFilter && data.length === 0)) {\n      return callback(data);\n    } else {\n      return _remoteFilter.call(this.context, query, callback);\n    }\n  };\n\n  Model.prototype.fetch = function() {\n    return this.storage.data(this.at) || [];\n  };\n\n  Model.prototype.save = function(data) {\n    return this.storage.data(this.at, this.context.callbacks(\"beforeSave\").call(this.context, data || []));\n  };\n\n  Model.prototype.load = function(data) {\n    if (!(this.saved() || !data)) {\n      return this._load(data);\n    }\n  };\n\n  Model.prototype.reload = function(data) {\n    return this._load(data);\n  };\n\n  Model.prototype._load = function(data) {\n    if (typeof data === \"string\") {\n      throw new Error(\"@gitlab/at.js removed support for $.ajax\");\n    } else {\n      return this.save(data);\n    }\n  };\n\n  return Model;\n\n})();\n\nvar View;\n\nView = (function() {\n  function View(context) {\n    this.context = context;\n    this.$el = $(\"<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>\");\n    this.$elUl = this.$el.children();\n    this.timeoutID = null;\n    this.context.$el.append(this.$el);\n    this.bindEvent();\n  }\n\n  View.prototype.init = function() {\n    var header_tpl, id;\n    id = this.context.getOpt(\"alias\") || this.context.at.charCodeAt(0);\n    header_tpl = this.context.getOpt(\"headerTpl\");\n    if (header_tpl && this.$el.children().length === 1) {\n      this.$el.prepend(header_tpl);\n    }\n    return this.$el.attr({\n      'id': \"at-view-\" + id\n    });\n  };\n\n  View.prototype.destroy = function() {\n    return this.$el.remove();\n  };\n\n  View.prototype.bindEvent = function() {\n    var $menu, lastCoordX, lastCoordY;\n    $menu = this.$el.find('ul');\n    lastCoordX = 0;\n    lastCoordY = 0;\n    return $menu.on('mousemove.atwho-view', 'li', (function(_this) {\n      return function(e) {\n        var $cur;\n        if (lastCoordX === e.clientX && lastCoordY === e.clientY) {\n          return;\n        }\n        lastCoordX = e.clientX;\n        lastCoordY = e.clientY;\n        $cur = $(e.currentTarget);\n        if ($cur.hasClass('cur')) {\n          return;\n        }\n        $menu.find('.cur').removeClass('cur');\n        return $cur.addClass('cur');\n      };\n    })(this)).on('click.atwho-view', 'li', (function(_this) {\n      return function(e) {\n        $menu.find('.cur').removeClass('cur');\n        $(e.currentTarget).addClass('cur');\n        _this.choose(e);\n        return e.preventDefault();\n      };\n    })(this));\n  };\n\n  View.prototype.visible = function() {\n    return $.expr.filters.visible(this.$el[0]);\n  };\n\n  View.prototype.highlighted = function() {\n    return this.$el.find(\".cur\").length > 0;\n  };\n\n  View.prototype.choose = function(e) {\n    var $li, content;\n    if (($li = this.$el.find(\".cur\")).length) {\n      content = this.context.insertContentFor($li);\n      this.context._stopDelayedCall();\n      this.context.insert(this.context.callbacks(\"beforeInsert\").call(this.context, content, $li, e), $li);\n      this.context.trigger(\"inserted\", [$li, e]);\n      this.hide(e);\n    }\n    if (this.context.getOpt(\"hideWithoutSuffix\")) {\n      return this.stopShowing = true;\n    }\n  };\n\n  View.prototype.reposition = function(rect) {\n    var _window, offset, overflowOffset, ref;\n    _window = this.context.app.iframeAsRoot ? this.context.app.window : window;\n    if (rect.bottom + this.$el.height() - $(_window).scrollTop() > $(_window).height()) {\n      rect.bottom = rect.top - this.$el.height();\n    }\n    if (rect.left > (overflowOffset = $(_window).width() - this.$el.width() - 5)) {\n      rect.left = overflowOffset;\n    }\n    offset = {\n      left: rect.left,\n      top: rect.bottom\n    };\n    if ((ref = this.context.callbacks(\"beforeReposition\")) != null) {\n      ref.call(this.context, offset);\n    }\n    this.$el.offset(offset);\n    return this.context.trigger(\"reposition\", [offset]);\n  };\n\n  View.prototype.next = function() {\n    var cur, next, nextEl, offset;\n    cur = this.$el.find('.cur').removeClass('cur');\n    next = cur.next();\n    if (!next.length) {\n      next = this.$el.find('li:first');\n    }\n    next.addClass('cur');\n    nextEl = next[0];\n    offset = nextEl.offsetTop + nextEl.offsetHeight + (nextEl.nextSibling ? nextEl.nextSibling.offsetHeight : 0);\n    return this.scrollTop(Math.max(0, offset - this.$el.height()));\n  };\n\n  View.prototype.prev = function() {\n    var cur, offset, prev, prevEl;\n    cur = this.$el.find('.cur').removeClass('cur');\n    prev = cur.prev();\n    if (!prev.length) {\n      prev = this.$el.find('li:last');\n    }\n    prev.addClass('cur');\n    prevEl = prev[0];\n    offset = prevEl.offsetTop + prevEl.offsetHeight + (prevEl.nextSibling ? prevEl.nextSibling.offsetHeight : 0);\n    return this.scrollTop(Math.max(0, offset - this.$el.height()));\n  };\n\n  View.prototype.scrollTop = function(scrollTop) {\n    return this.$elUl.scrollTop(scrollTop);\n  };\n\n  View.prototype.show = function() {\n    var rect;\n    if (this.stopShowing) {\n      this.stopShowing = false;\n      return;\n    }\n    if (!this.visible()) {\n      this.$el.show();\n      this.$el.scrollTop(0);\n      this.context.trigger('shown');\n    }\n    if (rect = this.context.rect()) {\n      return this.reposition(rect);\n    }\n  };\n\n  View.prototype.hide = function(e, time) {\n    var callback;\n    if (!this.visible()) {\n      return;\n    }\n    if (isNaN(time)) {\n      this.$el.hide();\n      return this.context.trigger('hidden', [e]);\n    } else {\n      callback = (function(_this) {\n        return function() {\n          return _this.hide();\n        };\n      })(this);\n      clearTimeout(this.timeoutID);\n      return this.timeoutID = setTimeout(callback, time);\n    }\n  };\n\n  View.prototype.render = function(list) {\n    var $li, $ul, i, item, len, li, tpl;\n    if (!($.isArray(list) && list.length > 0)) {\n      this.hide();\n      return;\n    }\n    this.$el.find('ul').empty();\n    $ul = this.$el.find('ul');\n    tpl = this.context.getOpt('displayTpl');\n    for (i = 0, len = list.length; i < len; i++) {\n      item = list[i];\n      item = $.extend({}, item, {\n        'atwho-at': this.context.at\n      });\n      li = this.context.callbacks(\"tplEval\").call(this.context, tpl, item, \"onDisplay\");\n      $li = $(this.context.callbacks(\"highlighter\").call(this.context, li, this.context.query.text));\n      $li.data(\"item-data\", item);\n      $ul.append($li);\n    }\n    this.show();\n    if (this.context.getOpt('highlightFirst')) {\n      return $ul.find(\"li:first\").addClass(\"cur\");\n    }\n  };\n\n  return View;\n\n})();\n\nvar Api;\n\nApi = {\n  load: function(at, data) {\n    var c;\n    if (c = this.controller(at)) {\n      return c.model.load(data);\n    }\n  },\n  isSelecting: function() {\n    var ref;\n    return !!((ref = this.controller()) != null ? ref.view.visible() : void 0);\n  },\n  hide: function() {\n    var ref;\n    return (ref = this.controller()) != null ? ref.view.hide() : void 0;\n  },\n  reposition: function() {\n    var c;\n    if (c = this.controller()) {\n      return c.view.reposition(c.rect());\n    }\n  },\n  setIframe: function(iframe, asRoot) {\n    this.setupRootElement(iframe, asRoot);\n    return null;\n  },\n  run: function() {\n    return this.dispatch();\n  },\n  destroy: function() {\n    this.shutdown();\n    return this.$inputor.data('atwho', null);\n  }\n};\n\n$.fn.atwho = function(method) {\n  var _args, result;\n  _args = arguments;\n  result = null;\n  this.filter('textarea, input, [contenteditable=\"\"], [contenteditable=true]').each(function() {\n    var $this, app;\n    if (!(app = ($this = $(this)).data(\"atwho\"))) {\n      $this.data('atwho', (app = new App(this)));\n    }\n    if (typeof method === 'object' || !method) {\n      return app.reg(method.at, method);\n    } else if (Api[method] && app) {\n      return result = Api[method].apply(app, Array.prototype.slice.call(_args, 1));\n    } else {\n      return $.error(\"Method \" + method + \" does not exist on jQuery.atwho\");\n    }\n  });\n  if (result != null) {\n    return result;\n  } else {\n    return this;\n  }\n};\n\n$.fn.atwho[\"default\"] = {\n  at: void 0,\n  alias: void 0,\n  data: null,\n  displayTpl: \"<li>${name}</li>\",\n  insertTpl: \"${atwho-at}${name}\",\n  headerTpl: null,\n  callbacks: DEFAULT_CALLBACKS,\n  functionOverrides: {},\n  searchKey: \"name\",\n  suffix: void 0,\n  hideWithoutSuffix: false,\n  startWithSpace: true,\n  acceptSpaceBar: false,\n  highlightFirst: true,\n  limit: 5,\n  maxLen: 20,\n  minLen: 0,\n  displayTimeout: 300,\n  delay: null,\n  spaceSelectsMatch: false,\n  tabSelectsMatch: true,\n  editableAtwhoQueryAttrs: {},\n  scrollDuration: 150,\n  suspendOnComposing: true,\n  lookUpOnClick: true\n};\n\n$.fn.atwho.debug = false;\n\n}));\n","// base dropdown events\nconst GL_DROPDOWN_SHOWN = 'shown';\nconst GL_DROPDOWN_HIDDEN = 'hidden';\nconst GL_DROPDOWN_BEFORE_CLOSE = 'beforeClose';\nconst GL_DROPDOWN_FOCUS_CONTENT = 'focusContent';\n\n// KEY Codes\nconst ARROW_DOWN = 'ArrowDown';\nconst ARROW_UP = 'ArrowUp';\nconst END = 'End';\nconst ENTER = 'Enter';\nconst HOME = 'Home';\nconst SPACE = 'Space';\n\n// Positioning strategies\n// https://floating-ui.com/docs/computePosition#strategy\nconst POSITION_ABSOLUTE = 'absolute';\nconst POSITION_FIXED = 'fixed';\nconst GL_DROPDOWN_CONTENTS_CLASS = 'gl-new-dropdown-contents';\n\nexport { ARROW_DOWN, ARROW_UP, END, ENTER, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_FOCUS_CONTENT, GL_DROPDOWN_HIDDEN, GL_DROPDOWN_SHOWN, HOME, POSITION_ABSOLUTE, POSITION_FIXED, SPACE };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\n\nfunction getComputedStyle$1(element) {\n  return getWindow(element).getComputedStyle(element);\n}\n\nfunction isNode(value) {\n  return value instanceof getWindow(value).Node;\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\n\nfunction isHTMLElement(value) {\n  return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n  return value instanceof getWindow(value).Element;\n}\nfunction isShadowRoot(node) {\n  // Browsers without `ShadowRoot` support.\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return node instanceof getWindow(node).ShadowRoot || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle$1(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n  return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n  const safari = isSafari();\n  const css = getComputedStyle$1(element);\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !safari && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !safari && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction isSafari() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n  return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createEmptyCoords = v => ({\n  x: v,\n  y: v\n});\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createEmptyCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createEmptyCoords(0);\nfunction getVisualOffsets(element, isFixed, floatingOffsetParent) {\n  var _win$visualViewport, _win$visualViewport2;\n  if (isFixed === void 0) {\n    isFixed = true;\n  }\n  if (!isSafari()) {\n    return noOffsets;\n  }\n  const win = element ? getWindow(element) : window;\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== win) {\n    return noOffsets;\n  }\n  return {\n    x: ((_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) || 0,\n    y: ((_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) || 0\n  };\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createEmptyCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = getVisualOffsets(domElement, isFixedStrategy, offsetParent);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentIFrame = win.frameElement;\n    while (currentIFrame && offsetParent && offsetWin !== win) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentIFrame = getWindow(currentIFrame).frameElement;\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\nfunction getDocumentElement(node) {\n  return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.pageXOffset,\n    scrollTop: element.pageYOffset\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  if (offsetParent === documentElement) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createEmptyCoords(1);\n  const offsets = createEmptyCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n  };\n}\n\nfunction getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\n\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n  var _node$ownerDocument;\n  if (list === void 0) {\n    list = [];\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\n}\n\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isSafari();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createEmptyCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      ...clippingAncestor,\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  return getCssDimensions(element);\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  return element.offsetParent;\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else {\n      currentNode = getParentNode(currentNode);\n    }\n  }\n  return null;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const window = getWindow(element);\n  if (!isHTMLElement(element)) {\n    return window;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n    return window;\n  }\n  return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createEmptyCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nconst platform = {\n  getClippingRect,\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  isElement,\n  getDimensions,\n  getOffsetParent,\n  getDocumentElement,\n  getScale,\n  async getElementRects(_ref) {\n    let {\n      reference,\n      floating,\n      strategy\n    } = _ref;\n    const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n    const getDimensionsFn = this.getDimensions;\n    return {\n      reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n      floating: {\n        x: 0,\n        y: 0,\n        ...(await getDimensionsFn(floating))\n      }\n    };\n  },\n  getClientRects: element => Array.from(element.getClientRects()),\n  isRTL: element => getComputedStyle$1(element).direction === 'rtl'\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    clearTimeout(timeoutId);\n    io && io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = element.getBoundingClientRect();\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 100);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          resizeObserver && resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo && cleanupIo();\n    resizeObserver && resizeObserver.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { autoUpdate, computePosition, getOverflowAncestors, platform };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n  const lr = ['left', 'right'];\n  const rl = ['right', 'left'];\n  const tb = ['top', 'bottom'];\n  const bt = ['bottom', 'top'];\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rl : lr;\n      return isStart ? lr : rl;\n    case 'left':\n    case 'right':\n      return isStart ? tb : bt;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","// Zen Mode (full screen) textarea\n//\n/*= provides zen_mode:enter */\n/*= provides zen_mode:leave */\n\nimport autosize from 'autosize';\nimport Dropzone from 'dropzone';\nimport $ from 'jquery';\nimport { Mousetrap } from '~/lib/mousetrap';\nimport 'mousetrap/plugins/pause/mousetrap-pause';\nimport { scrollToElement } from '~/lib/utils/common_utils';\n\nDropzone.autoDiscover = false;\n\n//\n// ### Events\n//\n// `zen_mode:enter`\n//\n// Fired when the \"Edit in fullscreen\" link is clicked.\n//\n// **Synchronicity** Sync\n// **Bubbles** Yes\n// **Cancelable** No\n// **Target** a.js-zen-enter\n//\n// `zen_mode:leave`\n//\n// Fired when the \"Leave Fullscreen\" link is clicked.\n//\n// **Synchronicity** Sync\n// **Bubbles** Yes\n// **Cancelable** No\n// **Target** a.js-zen-leave\n//\n\nexport default class ZenMode {\n  constructor() {\n    this.active_backdrop = null;\n    this.active_textarea = null;\n    this.storedStyle = null;\n    $(document).on('click', '.js-zen-enter', (e) => {\n      e.preventDefault();\n      return $(e.currentTarget).trigger('zen_mode:enter');\n    });\n    $(document).on('click', '.js-zen-leave', (e) => {\n      e.preventDefault();\n      return $(e.currentTarget).trigger('zen_mode:leave');\n    });\n    $(document).on('zen_mode:enter', (e) => {\n      this.enter($(e.target).closest('.md-area').find('.zen-backdrop'));\n    });\n    $(document).on('zen_mode:leave', () => {\n      this.exit();\n    });\n    // eslint-disable-next-line consistent-return\n    $(document).on('keydown', (e) => {\n      // Esc\n      if (e.keyCode === 27) {\n        e.preventDefault();\n        return $(document).trigger('zen_mode:leave');\n      }\n    });\n  }\n\n  enter(backdrop) {\n    Mousetrap.pause();\n    this.active_backdrop = $(backdrop);\n    this.active_backdrop.addClass('fullscreen');\n    this.active_textarea = this.active_backdrop.find('textarea');\n    // Prevent a user-resized textarea from persisting to fullscreen\n    this.storedStyle = this.active_textarea.attr('style');\n    this.active_textarea.removeAttr('style');\n    this.active_textarea.focus();\n  }\n\n  exit() {\n    if (this.active_textarea) {\n      Mousetrap.unpause();\n      this.active_textarea.closest('.zen-backdrop').removeClass('fullscreen');\n      scrollToElement(this.active_textarea, { duration: 0, offset: -100 });\n      this.active_textarea.attr('style', this.storedStyle);\n\n      autosize(this.active_textarea);\n      autosize.update(this.active_textarea);\n\n      this.active_textarea = null;\n      this.active_backdrop = null;\n\n      const $dropzone = $('.div-dropzone');\n      if ($dropzone && !$dropzone.hasClass('js-invalid-dropzone')) {\n        Dropzone.forElement('.div-dropzone').enable();\n      }\n    }\n  }\n}\n","import GlClearIconButton from '../../../shared_components/clear_icon_button/clear_icon_button';\nimport GlIcon from '../../icon/icon';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlListboxSearchInput',\n  components: {\n    GlClearIconButton,\n    GlIcon\n  },\n  model: {\n    prop: 'value',\n    event: 'input'\n  },\n  props: {\n    /**\n     * If provided, used as value of search input\n     */\n    value: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Search input placeholder text and aria-label\n     */\n    placeholder: {\n      type: String,\n      required: false,\n      default: 'Search'\n    }\n  },\n  computed: {\n    hasValue() {\n      return Boolean(this.value.length);\n    },\n    inputListeners() {\n      return {\n        ...this.$listeners,\n        input: event => {\n          this.$emit('input', event.target.value);\n        }\n      };\n    }\n  },\n  methods: {\n    clearInput() {\n      this.$emit('input', '');\n      this.focusInput();\n    },\n    focusInput() {\n      this.$refs.input.focus();\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('div',{staticClass:\"gl-listbox-search\"},[_c('gl-icon',{staticClass:\"gl-listbox-search-icon\",attrs:{\"name\":\"search-sm\",\"size\":12}}),_vm._v(\" \"),_c('input',_vm._g({ref:\"input\",staticClass:\"gl-listbox-search-input\",attrs:{\"type\":\"search\",\"aria-label\":_vm.placeholder,\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.value}},_vm.inputListeners)),_vm._v(\" \"),(_vm.hasValue)?_c('gl-clear-icon-button',{staticClass:\"gl-listbox-search-clear-button\",on:{\"click\":function($event){$event.stopPropagation();return _vm.clearInput.apply(null, arguments)}}}):_vm._e()],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 uniqueId from 'lodash/uniqueId';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlListboxGroup',\n  props: {\n    name: {\n      type: String,\n      required: true\n    },\n    textSrOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  created() {\n    this.nameId = uniqueId('gl-listbox-group-');\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('ul',{staticClass:\"gl-mb-0 gl-pl-0\",attrs:{\"role\":\"group\",\"aria-labelledby\":_vm.nameId}},[_c('li',{staticClass:\"gl-pb-2 gl-pl-4 gl-pt-3 gl-text-sm gl-font-bold gl-text-strong\",class:{ 'gl-sr-only': _vm.textSrOnly },attrs:{\"id\":_vm.nameId,\"role\":\"presentation\"}},[_vm._t(\"group-label\",function(){return [_vm._v(_vm._s(_vm.name))]})],2),_vm._v(\" \"),_vm._t(\"default\")],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","import clamp from 'lodash/clamp';\nimport uniqueId from 'lodash/uniqueId';\nimport isNil from 'lodash/isNil';\nimport { stopEvent } from '../../../../utils/utils';\nimport { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, HOME, END, ARROW_UP, ARROW_DOWN } from '../constants';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';\nimport GlButton from '../../button/button';\nimport GlLoadingIcon from '../../loading_icon/loading_icon';\nimport GlIntersectionObserver from '../../../utilities/intersection_observer/intersection_observer';\nimport GlSearchBoxByType from '../../search_box_by_type/search_box_by_type';\nimport GlBaseDropdown from '../base_dropdown/base_dropdown';\nimport { translatePlural } from '../../../../utils/i18n';\nimport GlListboxItem from './listbox_item';\nimport GlListboxSearchInput from './listbox_search_input';\nimport GlListboxGroup from './listbox_group';\nimport { itemsValidator, isOption, flattenedOptions } from './utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst ITEM_SELECTOR = '[role=\"option\"]';\nconst HEADER_ITEMS_BORDER_CLASSES = ['gl-border-b-1', 'gl-border-b-solid', 'gl-border-b-dropdown'];\nconst GROUP_TOP_BORDER_CLASSES = ['gl-border-t', 'gl-border-t-dropdown', 'gl-pt-1', 'gl-mt-2'];\nconst SEARCH_INPUT_SELECTOR = '.gl-listbox-search-input';\nvar script = {\n  name: 'GlCollapsibleListbox',\n  HEADER_ITEMS_BORDER_CLASSES,\n  events: {\n    GL_DROPDOWN_SHOWN,\n    GL_DROPDOWN_HIDDEN\n  },\n  components: {\n    GlBaseDropdown,\n    GlListboxItem,\n    GlListboxGroup,\n    GlButton,\n    GlSearchBoxByType,\n    GlListboxSearchInput,\n    GlLoadingIcon,\n    GlIntersectionObserver\n  },\n  model: {\n    prop: 'selected',\n    event: 'select'\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     * Array of selected items values for multi-select and selected item value for single-select\n     */\n    selected: {\n      type: [Array, String, Number],\n      required: false,\n      default: () => []\n    },\n    /**\n     * Allow multi-selection\n     */\n    multiple: {\n      type: Boolean,\n      required: false,\n      default: false\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    /** The header text */\n    headerText: {\n      type: String,\n      required: false,\n      default: ''\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     * 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 listbox menu 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     * Center selected item checkmark\n     */\n    isCheckCentered: {\n      type: Boolean,\n      required: false,\n      default: false\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     * Enable search\n     */\n    searchable: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Set to \"true\" when items search is in progress.\n     * It will display loading icon below the search input\n     */\n    searching: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Enables infinite scroll.\n     * When set to `true`, the `@bottom-reached` event will be fired when\n     * the bottom of the listbox is scrolled to.\n     * Does not support groups.\n     */\n    infiniteScroll: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * This prop is used for infinite scroll.\n     * It represents the total number of items that exist,\n     * even if they have not yet been loaded.\n     * Do not set this prop if the total number of items is unknown.\n     */\n    totalItems: {\n      type: Number,\n      required: false,\n      default: null\n    },\n    /**\n     * This prop is used for infinite scroll.\n     * Set to `true` when more items are being loaded.\n     */\n    infiniteScrollLoading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Message to be displayed when filtering produced no results\n     */\n    noResultsText: {\n      type: String,\n      required: false,\n      default: 'No results found'\n    },\n    /**\n     * Search input placeholder text and aria-label\n     */\n    searchPlaceholder: {\n      type: String,\n      required: false,\n      default: 'Search'\n    },\n    /**\n     * The reset button's label, to be rendered in the header. If this is omitted, the button is not\n     * rendered.\n     * The reset button requires a header to be set, so this prop should be used in conjunction with\n     * headerText.\n     */\n    resetButtonLabel: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * The select all button's label, to be rendered in the header. If this is omitted, the button is not\n     * rendered.\n     * The select all button requires a header to be set, so this prop should be used in conjunction with\n     * headerText.\n     */\n    showSelectAllButtonLabel: {\n      type: String,\n      required: false,\n      default: ''\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     * 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    srOnlyResultsLabel: {\n      type: Function,\n      required: false,\n      default: translatePlural('GlCollapsibleListbox.srOnlyResultsLabel', '%d result', '%d results')\n    }\n  },\n  data() {\n    return {\n      selectedValues: [],\n      toggleId: uniqueId('dropdown-toggle-btn-'),\n      listboxId: uniqueId('listbox-'),\n      nextFocusedItemIndex: null,\n      searchStr: '',\n      topBoundaryVisible: true,\n      bottomBoundaryVisible: true\n    };\n  },\n  computed: {\n    listboxTag() {\n      if (!this.hasItems || isOption(this.items[0])) return 'ul';\n      return 'div';\n    },\n    listboxClasses() {\n      return {\n        'top-scrim-visible': !this.topBoundaryVisible,\n        'bottom-scrim-visible': !this.bottomBoundaryVisible,\n        [GL_DROPDOWN_CONTENTS_CLASS]: true\n      };\n    },\n    itemTag() {\n      return this.listboxTag === 'ul' ? 'li' : 'div';\n    },\n    flattenedOptions() {\n      return flattenedOptions(this.items);\n    },\n    hasItems() {\n      return this.items.length > 0;\n    },\n    listboxToggleText() {\n      if (!this.toggleText) {\n        if (!this.multiple && this.selectedValues.length) {\n          var _this$flattenedOption;\n          return (_this$flattenedOption = this.flattenedOptions.find(_ref => {\n            let {\n              value\n            } = _ref;\n            return value === this.selectedValues[0];\n          })) === null || _this$flattenedOption === void 0 ? void 0 : _this$flattenedOption.text;\n        }\n        return '';\n      }\n      return this.toggleText;\n    },\n    selectedIndices() {\n      return this.selectedValues.map(selected => this.flattenedOptions.findIndex(_ref2 => {\n        let {\n          value\n        } = _ref2;\n        return value === selected;\n      })).sort();\n    },\n    showList() {\n      return this.flattenedOptions.length && !this.searching;\n    },\n    showNoResultsText() {\n      return !this.flattenedOptions.length && !this.searching;\n    },\n    announceSRSearchResults() {\n      return this.searchable && !this.showNoResultsText;\n    },\n    headerId() {\n      return this.headerText && uniqueId('listbox-header-');\n    },\n    showResetButton() {\n      if (!this.resetButtonLabel) {\n        return false;\n      }\n\n      /**\n       * if dropdown has no items\n       * reset all should be hidden\n       */\n      if (!this.hasItems) {\n        return false;\n      }\n\n      // hide if no selection\n      if (!this.selected || this.selected.length === 0) {\n        return false;\n      }\n\n      // only show reset button if show all button is not there\n      return !this.showSelectAllButton;\n    },\n    showSelectAllButton() {\n      if (!this.showSelectAllButtonLabel) {\n        return false;\n      }\n      if (!this.multiple) {\n        return false;\n      }\n\n      /**\n       * if dropdown has no items\n       * select all should be hidden\n       */\n      if (!this.hasItems) {\n        return false;\n      }\n      return this.selected.length !== this.flattenedOptions.length;\n    },\n    showIntersectionObserver() {\n      return this.infiniteScroll && !this.infiniteScrollLoading && !this.loading && !this.searching;\n    },\n    hasCustomToggle() {\n      return Boolean(this.$scopedSlots.toggle);\n    },\n    hasSelection() {\n      return Boolean(this.selectedValues.length);\n    },\n    toggleButtonClasses() {\n      const toggleClasses = [this.toggleClass];\n      if (!this.hasSelection) {\n        toggleClasses.push('!gl-text-subtle');\n      }\n      return toggleClasses;\n    },\n    hasHeader() {\n      return this.headerText || this.searchable;\n    },\n    hasFooter() {\n      return Boolean(this.$scopedSlots.footer);\n    }\n  },\n  watch: {\n    selected: {\n      immediate: true,\n      handler(newSelected) {\n        if (Array.isArray(newSelected)) {\n          if (process.env.NODE_ENV !== 'production' && !this.multiple && newSelected.length) {\n            throw new Error('To allow multi-selection, please, set \"multiple\" property to \"true\"');\n          }\n          this.selectedValues = [...newSelected];\n        } else {\n          this.selectedValues = isNil(newSelected) ? [] : [newSelected];\n        }\n      }\n    },\n    items: {\n      handler() {\n        this.$nextTick(() => {\n          /* Every time the list of items changes (on search),\n           * the observed elements are recreated, thus we need to start obesrving them again */\n          this.observeScroll();\n        });\n      }\n    },\n    ...(process.env.NODE_ENV !== 'production' ? {\n      resetButtonLabel: {\n        immediate: true,\n        handler(newResetButtonLabel) {\n          if (newResetButtonLabel && !this.headerText) {\n            throw new Error('The reset button cannot be rendered without a header. Either provide a header via the headerText prop, or do not provide the resetButtonLabel prop.');\n          }\n        }\n      },\n      showSelectAllButtonLabel: {\n        immediate: true,\n        handler(showSelectAllButtonLabel) {\n          if (showSelectAllButtonLabel && !this.headerText) {\n            throw new Error('The select all button cannot be rendered without a header. Either provide a header via the headerText prop, or do not provide the showSelectAllButtonLabel prop.');\n          }\n        }\n      },\n      infiniteScroll: {\n        immediate: true,\n        handler(newValue) {\n          if (newValue && this.items.some(item => !isOption(item))) {\n            throw new Error('Infinite scroll does not support groups. Please set the \"infiniteScroll\" prop to \"false\"');\n          }\n        }\n      }\n    } : {})\n  },\n  mounted() {\n    if (this.startOpened) {\n      this.open();\n    }\n    this.observeScroll();\n  },\n  beforeDestroy() {\n    var _this$scrollObserver;\n    (_this$scrollObserver = this.scrollObserver) === null || _this$scrollObserver === void 0 ? void 0 : _this$scrollObserver.disconnect();\n  },\n  methods: {\n    open() {\n      this.$refs.baseDropdown.open();\n    },\n    close() {\n      this.$refs.baseDropdown.close();\n    },\n    groupClasses(index) {\n      return index === 0 ? null : GROUP_TOP_BORDER_CLASSES;\n    },\n    onShow() {\n      if (this.searchable) {\n        this.focusSearchInput();\n      } else {\n        var _this$selectedIndices;\n        this.focusItem((_this$selectedIndices = this.selectedIndices[0]) !== null && _this$selectedIndices !== void 0 ? _this$selectedIndices : 0, this.getFocusableListItemElements());\n      }\n      /**\n       * Emitted when dropdown is shown\n       *\n       * @event shown\n       */\n      this.$emit(GL_DROPDOWN_SHOWN);\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        target\n      } = event;\n      const elements = this.getFocusableListItemElements();\n      if (elements.length < 1) return;\n      let stop = true;\n      const isSearchInput = target.matches(SEARCH_INPUT_SELECTOR);\n      if (code === HOME) {\n        if (isSearchInput) {\n          return;\n        }\n        this.focusItem(0, elements);\n      } else if (code === END) {\n        if (isSearchInput) {\n          return;\n        }\n        this.focusItem(elements.length - 1, elements);\n      } else if (code === ARROW_UP) {\n        if (isSearchInput) {\n          return;\n        }\n        if (this.searchable && elements.indexOf(target) === 0) {\n          this.focusSearchInput();\n        } else {\n          this.focusNextItem(event, elements, -1);\n        }\n      } else if (code === ARROW_DOWN) {\n        if (isSearchInput) {\n          this.focusItem(0, elements);\n        } else {\n          this.focusNextItem(event, elements, 1);\n        }\n      } else {\n        stop = false;\n      }\n      if (stop) {\n        stopEvent(event);\n      }\n    },\n    getFocusableListItemElements() {\n      var _this$$refs$list;\n      const items = (_this$$refs$list = this.$refs.list) === null || _this$$refs$list === void 0 ? void 0 : _this$$refs$list.querySelectorAll(ITEM_SELECTOR);\n      return 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    focusSearchInput() {\n      this.$refs.searchBox.focusInput();\n    },\n    onSelect(item, isSelected) {\n      if (this.multiple) {\n        this.onMultiSelect(item.value, isSelected);\n      } else {\n        this.onSingleSelect(item.value, isSelected);\n      }\n    },\n    isSelected(item) {\n      return this.selectedValues.some(value => value === item.value);\n    },\n    isFocused(item) {\n      return this.nextFocusedItemIndex === this.flattenedOptions.indexOf(item);\n    },\n    onSingleSelect(value, isSelected) {\n      if (isSelected) {\n        /**\n         * Emitted when selection is changed\n         *\n         * @event select\n         */\n        this.$emit('select', value);\n      }\n      this.closeAndFocus();\n    },\n    onMultiSelect(value, isSelected) {\n      if (isSelected) {\n        this.$emit('select', [...this.selectedValues, value]);\n      } else {\n        this.$emit('select', this.selectedValues.filter(selectedValue => selectedValue !== value));\n      }\n    },\n    search(searchTerm) {\n      /**\n       * Emitted when the search query string is changed\n       *\n       * @event search\n       * @type {string}\n       */\n      this.$emit('search', searchTerm);\n    },\n    onResetButtonClicked() {\n      /**\n       * Emitted when the reset button is clicked\n       *\n       * @event reset\n       */\n      this.$emit('reset');\n    },\n    onSelectAllButtonClicked() {\n      /**\n       * Emitted when the select all button is clicked\n       *\n       * @event select-all\n       */\n      this.$emit('select-all');\n    },\n    closeAndFocus() {\n      this.$refs.baseDropdown.closeAndFocus();\n    },\n    onIntersectionObserverAppear() {\n      /**\n       * Emitted when bottom of listbox has been scrolled to.\n       * Used for infinite scroll.\n       *\n       * @event bottom-reached\n       */\n      this.$emit('bottom-reached');\n    },\n    listboxItemMoreItemsAriaAttributes(index) {\n      if (this.totalItems === null) {\n        return {};\n      }\n      return {\n        'aria-setsize': this.totalItems,\n        'aria-posinset': index + 1\n      };\n    },\n    observeScroll() {\n      var _this$scrollObserver2;\n      const root = this.$refs.list;\n      const options = {\n        rootMargin: '8px',\n        root,\n        threshold: 1.0\n      };\n      (_this$scrollObserver2 = this.scrollObserver) === null || _this$scrollObserver2 === void 0 ? void 0 : _this$scrollObserver2.disconnect();\n      const observer = new IntersectionObserver(entries => {\n        entries.forEach(entry => {\n          var _entry$target;\n          this[(_entry$target = entry.target) === null || _entry$target === void 0 ? void 0 : _entry$target.$__visibilityProp] = entry.isIntersecting;\n        });\n      }, options);\n      const topBoundary = this.$refs['top-boundary'];\n      const bottomBoundary = this.$refs['bottom-boundary'];\n      if (topBoundary) {\n        topBoundary.$__visibilityProp = 'topBoundaryVisible';\n        observer.observe(topBoundary);\n      }\n      if (bottomBoundary) {\n        bottomBoundary.$__visibilityProp = 'bottomBoundaryVisible';\n        observer.observe(bottomBoundary);\n      }\n      this.scrollObserver = observer;\n    },\n    isOption\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('gl-base-dropdown',{ref:\"baseDropdown\",attrs:{\"aria-haspopup\":\"listbox\",\"aria-labelledby\":_vm.toggleAriaLabelledBy,\"block\":_vm.block,\"toggle-id\":_vm.toggleId,\"toggle-text\":_vm.listboxToggleText,\"toggle-class\":_vm.toggleButtonClasses,\"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,\"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]),scopedSlots:_vm._u([(_vm.hasCustomToggle)?{key:\"toggle\",fn:function(){return [_vm._t(\"toggle\")]},proxy:true}:null],null,true)},[_vm._v(\" \"),(_vm.headerText)?_c('div',{staticClass:\"gl-flex gl-min-h-8 gl-items-center !gl-p-4\",class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('div',{staticClass:\"gl-grow gl-pr-2 gl-text-sm gl-font-bold gl-text-strong\",attrs:{\"id\":_vm.headerId,\"data-testid\":\"listbox-header-text\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.headerText)+\"\\n    \")]),_vm._v(\" \"),(_vm.showResetButton)?_c('gl-button',{staticClass:\"!gl-m-0 !gl-w-auto gl-max-w-1/2 gl-flex-shrink-0 gl-text-ellipsis !gl-px-2 !gl-text-sm focus:!gl-shadow-inner-2-blue-400\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"data-testid\":\"listbox-reset-button\"},on:{\"click\":_vm.onResetButtonClicked}},[_vm._v(\"\\n      \"+_vm._s(_vm.resetButtonLabel)+\"\\n    \")]):_vm._e(),_vm._v(\" \"),(_vm.showSelectAllButton)?_c('gl-button',{staticClass:\"!gl-m-0 !gl-w-auto gl-max-w-1/2 gl-flex-shrink-0 gl-text-ellipsis !gl-px-2 !gl-text-sm focus:!gl-shadow-inner-2-blue-400\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"data-testid\":\"listbox-select-all-button\"},on:{\"click\":_vm.onSelectAllButtonClicked}},[_vm._v(\"\\n      \"+_vm._s(_vm.showSelectAllButtonLabel)+\"\\n    \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.searchable)?_c('div',{class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('gl-listbox-search-input',{ref:\"searchBox\",class:{ 'gl-listbox-topmost': !_vm.headerText },attrs:{\"data-testid\":\"listbox-search-input\",\"placeholder\":_vm.searchPlaceholder},on:{\"input\":_vm.search,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();},_vm.onKeydown]},model:{value:(_vm.searchStr),callback:function ($$v) {_vm.searchStr=$$v;},expression:\"searchStr\"}}),_vm._v(\" \"),(_vm.searching)?_c('gl-loading-icon',{staticClass:\"gl-my-3\",attrs:{\"data-testid\":\"listbox-search-loader\",\"size\":\"md\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.showList)?_c(_vm.listboxTag,{ref:\"list\",tag:\"component\",staticClass:\"gl-new-dropdown-contents gl-new-dropdown-contents-with-scrim-overlay\",class:_vm.listboxClasses,attrs:{\"id\":_vm.listboxId,\"aria-labelledby\":_vm.listAriaLabelledBy || _vm.headerId || _vm.toggleId,\"role\":\"listbox\",\"tabindex\":\"0\"},on:{\"keydown\":_vm.onKeydown}},[_c(_vm.itemTag,{tag:\"component\",staticClass:\"top-scrim-wrapper\",attrs:{\"aria-hidden\":\"true\",\"data-testid\":\"top-scrim\"}},[_c('div',{staticClass:\"top-scrim\",class:{ 'top-scrim-light': !_vm.hasHeader, 'top-scrim-dark': _vm.hasHeader }})]),_vm._v(\" \"),_c(_vm.itemTag,{ref:\"top-boundary\",tag:\"component\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_vm._l((_vm.items),function(item,index){return [(_vm.isOption(item))?[_c('gl-listbox-item',_vm._b({key:item.value,attrs:{\"data-testid\":(\"listbox-item-\" + (item.value)),\"is-selected\":_vm.isSelected(item),\"is-focused\":_vm.isFocused(item),\"is-check-centered\":_vm.isCheckCentered},on:{\"select\":function($event){return _vm.onSelect(item, $event)}}},'gl-listbox-item',_vm.listboxItemMoreItemsAriaAttributes(index),false),[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n            \"+_vm._s(item.text)+\"\\n          \")]},{\"item\":item})],2)]:[_c('gl-listbox-group',{key:item.text,class:_vm.groupClasses(index),attrs:{\"name\":item.text,\"text-sr-only\":item.textSrOnly},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._l((item.options),function(option){return _c('gl-listbox-item',{key:option.value,attrs:{\"data-testid\":(\"listbox-item-\" + (option.value)),\"is-selected\":_vm.isSelected(option),\"is-focused\":_vm.isFocused(option),\"is-check-centered\":_vm.isCheckCentered},on:{\"select\":function($event){return _vm.onSelect(option, $event)}}},[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n              \"+_vm._s(option.text)+\"\\n            \")]},{\"item\":option})],2)})],2)]]}),_vm._v(\" \"),(_vm.infiniteScrollLoading)?_c(_vm.itemTag,{tag:\"component\"},[_c('gl-loading-icon',{staticClass:\"gl-my-3\",attrs:{\"data-testid\":\"listbox-infinite-scroll-loader\",\"size\":\"md\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showIntersectionObserver)?_c('gl-intersection-observer',{on:{\"appear\":_vm.onIntersectionObserverAppear}}):_vm._e(),_vm._v(\" \"),_c(_vm.itemTag,{ref:\"bottom-boundary\",tag:\"component\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_c(_vm.itemTag,{tag:\"component\",staticClass:\"bottom-scrim-wrapper\",attrs:{\"aria-hidden\":\"true\",\"data-testid\":\"bottom-scrim\"}},[_c('div',{staticClass:\"bottom-scrim\",class:{ '!gl-rounded-none': _vm.hasFooter }})])],2):_vm._e(),_vm._v(\" \"),(_vm.announceSRSearchResults)?_c('span',{staticClass:\"gl-sr-only\",attrs:{\"data-testid\":\"listbox-number-of-results\",\"aria-live\":\"assertive\"}},[_vm._t(\"search-summary-sr-only\",function(){return [_vm._v(\"\\n      \"+_vm._s(_vm.srOnlyResultsLabel(_vm.flattenedOptions.length))+\"\\n    \")]})],2):(_vm.showNoResultsText)?_c('div',{staticClass:\"gl-py-3 gl-pl-7 gl-pr-5 gl-text-base gl-text-subtle\",attrs:{\"aria-live\":\"assertive\",\"data-testid\":\"listbox-no-results-text\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.noResultsText)+\"\\n  \")]):_vm._e(),_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 { ITEM_SELECTOR, SEARCH_INPUT_SELECTOR };\n","import memoize from 'lodash/memoize';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst getObserver = memoize(options => new IntersectionObserver(entries => {\n  entries.forEach(entry => {\n    entry.target.$_gl_intersectionHandler(entry);\n  });\n}, options || {}));\nvar script = {\n  name: 'GlIntersectionObserver',\n  props: {\n    /**\n     * Extra options to pass directly to the intersection observer API.\n     */\n    options: {\n      type: Object,\n      required: false,\n      default: null\n    }\n  },\n  mounted() {\n    const observer = getObserver(this.options);\n    this.$el.$_gl_intersectionHandler = entry => {\n      /**\n       * Emitted when the element's visibility changes\n       */\n      this.$emit('update', entry);\n      if (entry.isIntersecting) {\n        /**\n         * Emitted when the element appears on the page\n         */\n        this.$emit('appear');\n      } else {\n        /**\n         * Emitted when the element disappears from the page\n         */\n        this.$emit('disappear');\n      }\n    };\n    this.$el.$_gl_intersectionObserver = observer;\n    observer.observe(this.$el);\n  },\n  destroyed() {\n    this.$el.$_gl_intersectionObserver.unobserve(this.$el);\n    delete this.$el.$_gl_intersectionHandler;\n    delete this.$el.$_gl_intersectionObserver;\n  },\n  // Expose getObserver method for tests\n  getObserver\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('div',[_vm._t(\"default\")],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","import GlClearIconButton from '../../shared_components/clear_icon_button/clear_icon_button';\nimport GlFormInput from '../form/form_input/form_input';\nimport GlIcon from '../icon/icon';\nimport GlLoadingIcon from '../loading_icon/loading_icon';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlSearchboxByType',\n  components: {\n    GlClearIconButton,\n    GlIcon,\n    GlFormInput,\n    GlLoadingIcon\n  },\n  inheritAttrs: false,\n  model: {\n    prop: 'value',\n    event: 'input'\n  },\n  props: {\n    /**\n     * If provided, used as value of search input\n     */\n    value: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    borderless: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    clearButtonTitle: {\n      type: String,\n      required: false,\n      default: () => translate('GlSearchBoxByType.clearButtonTitle', 'Clear')\n    },\n    /**\n     * If provided and true, disables the input and controls\n     */\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Puts search box into loading state, rendering spinner\n     */\n    isLoading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Container for tooltip. Valid values: DOM node, selector string or `false` for default\n     */\n    tooltipContainer: {\n      required: false,\n      default: false,\n      validator: value => value === false || typeof value === 'string' || value instanceof HTMLElement\n    }\n  },\n  computed: {\n    inputAttributes() {\n      const attributes = {\n        type: 'search',\n        placeholder: translate('GlSearchBoxByType.input.placeholder', 'Search'),\n        ...this.$attrs\n      };\n      if (!attributes['aria-label']) {\n        attributes['aria-label'] = attributes.placeholder;\n      }\n      return attributes;\n    },\n    hasValue() {\n      return Boolean(this.value.length);\n    },\n    inputListeners() {\n      return {\n        ...this.$listeners,\n        input: this.onInput,\n        focusin: this.onFocusin,\n        focusout: this.onFocusout\n      };\n    },\n    showClearButton() {\n      return this.hasValue && !this.disabled;\n    }\n  },\n  methods: {\n    isInputOrClearButton(element) {\n      var _this$$refs$input, _this$$refs$clearButt;\n      return element === ((_this$$refs$input = this.$refs.input) === null || _this$$refs$input === void 0 ? void 0 : _this$$refs$input.$el) || element === ((_this$$refs$clearButt = this.$refs.clearButton) === null || _this$$refs$clearButt === void 0 ? void 0 : _this$$refs$clearButt.$el);\n    },\n    clearInput() {\n      this.onInput('');\n      this.focusInput();\n    },\n    focusInput() {\n      this.$refs.input.$el.focus();\n    },\n    onInput(value) {\n      this.$emit('input', value);\n    },\n    onFocusout(event) {\n      const {\n        relatedTarget\n      } = event;\n      if (this.isInputOrClearButton(relatedTarget)) {\n        return;\n      }\n      this.$emit('focusout', event);\n    },\n    onFocusin(event) {\n      const {\n        relatedTarget\n      } = event;\n      if (this.isInputOrClearButton(relatedTarget)) {\n        return;\n      }\n      this.$emit('focusin', event);\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('div',{staticClass:\"gl-search-box-by-type\"},[_c('gl-icon',{staticClass:\"gl-search-box-by-type-search-icon\",attrs:{\"name\":\"search\",\"variant\":\"subtle\"}}),_vm._v(\" \"),_c('gl-form-input',_vm._g(_vm._b({ref:\"input\",class:{\n      'gl-search-box-by-type-input': !_vm.borderless,\n      'gl-search-box-by-type-input-borderless': _vm.borderless,\n    },attrs:{\"value\":_vm.value,\"disabled\":_vm.disabled}},'gl-form-input',_vm.inputAttributes,false),_vm.inputListeners)),_vm._v(\" \"),(_vm.isLoading || _vm.showClearButton)?_c('div',{staticClass:\"gl-search-box-by-type-right-icons\"},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"gl-search-box-by-type-loading-icon\"}):_vm._e(),_vm._v(\" \"),(_vm.showClearButton)?_c('gl-clear-icon-button',{ref:\"clearButton\",staticClass:\"gl-search-box-by-type-clear gl-clear-icon-button\",attrs:{\"title\":_vm.clearButtonTitle,\"tooltip-container\":_vm.tooltipContainer},on:{\"click\":function($event){$event.stopPropagation();return _vm.clearInput.apply(null, arguments)},\"focusin\":_vm.onFocusin,\"focusout\":_vm.onFocusout}}):_vm._e()],1):_vm._e()],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 Vue from 'vue';\nimport VueApollo from 'vue-apollo';\nimport createApolloClient from '~/lib/graphql';\nimport { queryToObject, objectToQuery } from '~/lib/utils/url_utility';\nimport { parseBoolean } from '~/lib/utils/common_utils';\n\nimport { CLEAR_AUTOSAVE_ENTRY_EVENT } from '../../constants';\nimport MarkdownEditor from './markdown_editor.vue';\nimport eventHub from './eventhub';\n\nconst MR_SOURCE_BRANCH = 'merge_request[source_branch]';\nconst MR_TARGET_BRANCH = 'merge_request[target_branch]';\n\nfunction organizeQuery(obj, isFallbackKey = false) {\n  if (!obj[MR_SOURCE_BRANCH] && !obj[MR_TARGET_BRANCH]) {\n    return obj;\n  }\n\n  if (isFallbackKey) {\n    return {\n      [MR_SOURCE_BRANCH]: obj[MR_SOURCE_BRANCH],\n    };\n  }\n\n  return {\n    [MR_SOURCE_BRANCH]: obj[MR_SOURCE_BRANCH],\n    [MR_TARGET_BRANCH]: obj[MR_TARGET_BRANCH],\n  };\n}\n\nfunction format(searchTerm, isFallbackKey = false) {\n  const queryObject = queryToObject(searchTerm, { legacySpacesDecode: true });\n  const organizeQueryObject = organizeQuery(queryObject, isFallbackKey);\n  const formattedQuery = objectToQuery(organizeQueryObject);\n\n  return formattedQuery;\n}\n\nfunction getSearchTerm(newIssuePath) {\n  const { search, pathname } = document.location;\n  return newIssuePath === pathname ? '' : format(search);\n}\n\nfunction mountAutosaveClearOnSubmit(autosaveKey) {\n  const resetAutosaveButtons = document.querySelectorAll('.js-reset-autosave');\n  if (resetAutosaveButtons.length === 0) {\n    return;\n  }\n\n  for (const resetAutosaveButton of resetAutosaveButtons) {\n    resetAutosaveButton.addEventListener('click', () => {\n      eventHub.$emit(CLEAR_AUTOSAVE_ENTRY_EVENT, autosaveKey);\n    });\n  }\n}\n\nexport function mountMarkdownEditor(options = {}) {\n  const el = document.querySelector('.js-markdown-editor');\n  const componentConfiguration = {\n    provide: {\n      ...options.provide,\n    },\n  };\n\n  if (!el) {\n    return null;\n  }\n\n  const {\n    renderMarkdownPath,\n    markdownDocsPath,\n    quickActionsDocsPath,\n    formFieldPlaceholder,\n    formFieldClasses,\n    testid,\n    newIssuePath,\n  } = el.dataset;\n\n  const supportsQuickActions = parseBoolean(el.dataset.supportsQuickActions ?? true);\n  const enableAutocomplete = parseBoolean(el.dataset.enableAutocomplete ?? true);\n  const disableAttachments = parseBoolean(el.dataset.disableAttachments ?? false);\n  const autofocus = parseBoolean(el.dataset.autofocus ?? true);\n  const hiddenInput = el.querySelector('input[type=\"hidden\"]');\n  const formFieldName = hiddenInput.getAttribute('name');\n  const formFieldId = hiddenInput.getAttribute('id');\n  const formFieldValue = hiddenInput.value;\n\n  const searchTerm = getSearchTerm(newIssuePath);\n  const facade = {\n    setValue() {},\n    getValue() {},\n    focus() {},\n  };\n\n  const setFacade = (props) => Object.assign(facade, props);\n  const autosaveKey = `autosave/${document.location.pathname}/${searchTerm}/description`;\n\n  componentConfiguration.apolloProvider =\n    options.apolloProvider || new VueApollo({ defaultClient: createApolloClient() });\n\n  // eslint-disable-next-line no-new\n  new Vue({\n    el,\n    render(h) {\n      return h(MarkdownEditor, {\n        props: {\n          setFacade,\n          value: formFieldValue,\n          renderMarkdownPath,\n          markdownDocsPath,\n          quickActionsDocsPath,\n          formFieldProps: {\n            placeholder: formFieldPlaceholder,\n            id: formFieldId,\n            name: formFieldName,\n            class: formFieldClasses,\n            'data-testid': testid,\n          },\n          autosaveKey,\n          enableAutocomplete,\n          autocompleteDataSources: gl.GfmAutoComplete?.dataSources,\n          supportsQuickActions,\n          disableAttachments,\n          autofocus,\n        },\n      });\n    },\n    ...componentConfiguration,\n  });\n\n  mountAutosaveClearOnSubmit(autosaveKey);\n\n  return facade;\n}\n","import uniqueId from 'lodash/uniqueId';\nimport { offset, autoPlacement, shift, size, autoUpdate, computePosition } from '@floating-ui/dom';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements, dropdownAllowedAutoPlacements } from '../../../../utils/constants';\nimport { POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, ENTER, SPACE, ARROW_DOWN, GL_DROPDOWN_FOCUS_CONTENT } from '../constants';\nimport { logWarning, isElementFocusable, isElementTabbable } from '../../../../utils/utils';\nimport { OutsideDirective } from '../../../../directives/outside/outside';\nimport GlButton from '../../button/button';\nimport GlIcon from '../../icon/icon';\nimport { DEFAULT_OFFSET, FIXED_WIDTH_CLASS } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst BASE_DROPDOWN_CLASS = 'gl-new-dropdown';\nvar script = {\n  name: 'BaseDropdown',\n  BASE_DROPDOWN_CLASS,\n  components: {\n    GlButton,\n    GlIcon\n  },\n  directives: {\n    Outside: OutsideDirective\n  },\n  props: {\n    toggleText: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    textSrOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    block: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    category: {\n      type: String,\n      required: false,\n      default: buttonCategoryOptions.primary,\n      validator: value => Object.keys(buttonCategoryOptions).includes(value)\n    },\n    variant: {\n      type: String,\n      required: false,\n      default: dropdownVariantOptions.default,\n      validator: value => Object.keys(dropdownVariantOptions).includes(value)\n    },\n    size: {\n      type: String,\n      required: false,\n      default: 'medium',\n      validator: value => Object.keys(buttonSizeOptions).includes(value)\n    },\n    icon: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    loading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    toggleClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    noCaret: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    placement: {\n      type: String,\n      required: false,\n      default: 'bottom-start',\n      validator: value => {\n        if (['left', 'center', 'right'].includes(value)) {\n          logWarning(`GlDisclosureDropdown/GlCollapsibleListbox: \"${value}\" placement is deprecated.\n            Use ${dropdownPlacements[value]} instead.`);\n        }\n        return Object.keys(dropdownPlacements).includes(value);\n      }\n    },\n    // ARIA props\n    ariaHaspopup: {\n      type: [String, Boolean],\n      required: false,\n      default: false,\n      validator: value => {\n        return ['menu', 'listbox', 'tree', 'grid', 'dialog', true, false].includes(value);\n      }\n    },\n    /**\n     * Id that will be referenced by `aria-labelledby` attribute of the dropdown content`\n     */\n    toggleId: {\n      type: String,\n      required: true\n    },\n    /**\n     * The `aria-labelledby` attribute value for the  toggle `button`\n     */\n    ariaLabelledby: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Custom value to be passed to the offset middleware.\n     * https://floating-ui.com/docs/offset\n     */\n    offset: {\n      type: [Number, Object],\n      required: false,\n      default: () => ({\n        mainAxis: DEFAULT_OFFSET\n      })\n    },\n    fluidWidth: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Strategy to be applied by computePosition. If this is set to fixed, the dropdown's position\n     * needs to be set to fixed in CSS as well.\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  data() {\n    return {\n      openedYet: false,\n      visible: false,\n      baseDropdownId: uniqueId('base-dropdown-')\n    };\n  },\n  computed: {\n    hasNoVisibleToggleText() {\n      var _this$toggleText;\n      return !((_this$toggleText = this.toggleText) !== null && _this$toggleText !== void 0 && _this$toggleText.length) || this.textSrOnly;\n    },\n    isIconOnly() {\n      return Boolean(this.icon && this.hasNoVisibleToggleText);\n    },\n    isEllipsisButton() {\n      return this.isIconOnly && this.icon === 'ellipsis_h';\n    },\n    isCaretOnly() {\n      return !this.noCaret && !this.icon && this.hasNoVisibleToggleText;\n    },\n    ariaAttributes() {\n      return {\n        'aria-haspopup': this.ariaHaspopup,\n        'aria-expanded': String(this.visible),\n        'aria-controls': this.baseDropdownId,\n        'aria-labelledby': this.toggleLabelledBy\n      };\n    },\n    toggleButtonClasses() {\n      return [this.toggleClass, {\n        'gl-new-dropdown-toggle': true,\n        'button-ellipsis-horizontal': this.isEllipsisButton,\n        'gl-new-dropdown-icon-only btn-icon': this.isIconOnly && !this.isEllipsisButton,\n        'gl-new-dropdown-toggle-no-caret': this.noCaret,\n        'gl-new-dropdown-caret-only btn-icon': this.isCaretOnly\n      }];\n    },\n    toggleButtonTextClasses() {\n      return this.block ? 'gl-w-full' : '';\n    },\n    toggleLabelledBy() {\n      return this.ariaLabelledby ? `${this.ariaLabelledby} ${this.toggleId}` : this.toggleId;\n    },\n    isDefaultToggle() {\n      return !this.$scopedSlots.toggle;\n    },\n    toggleOptions() {\n      if (this.isDefaultToggle) {\n        return {\n          is: GlButton,\n          icon: this.icon,\n          block: this.block,\n          buttonTextClasses: this.toggleButtonTextClasses,\n          category: this.category,\n          variant: this.variant,\n          size: this.size,\n          disabled: this.disabled,\n          loading: this.loading,\n          class: this.toggleButtonClasses,\n          ...this.ariaAttributes,\n          listeners: {\n            keydown: event => this.onKeydown(event),\n            click: event => this.toggle(event)\n          }\n        };\n      }\n      return {\n        is: 'div',\n        class: 'gl-new-dropdown-custom-toggle',\n        listeners: {\n          keydown: event => this.onKeydown(event),\n          click: event => this.toggle(event)\n        }\n      };\n    },\n    toggleListeners() {\n      return this.toggleOptions.listeners;\n    },\n    toggleAttributes() {\n      const {\n        listeners,\n        is,\n        ...attributes\n      } = this.toggleOptions;\n      return attributes;\n    },\n    toggleComponent() {\n      return this.toggleOptions.is;\n    },\n    toggleElement() {\n      var _this$$refs$toggle;\n      return this.$refs.toggle.$el || ((_this$$refs$toggle = this.$refs.toggle) === null || _this$$refs$toggle === void 0 ? void 0 : _this$$refs$toggle.firstElementChild);\n    },\n    panelClasses() {\n      return {\n        '!gl-block': this.visible,\n        [FIXED_WIDTH_CLASS]: !this.fluidWidth,\n        'gl-fixed': this.openedYet && this.isFixed,\n        'gl-absolute': this.openedYet && !this.isFixed\n      };\n    },\n    isFixed() {\n      return this.positioningStrategy === POSITION_FIXED;\n    },\n    floatingUIConfig() {\n      const placement = dropdownPlacements[this.placement];\n      const [, alignment] = placement.split('-');\n      return {\n        placement,\n        strategy: this.positioningStrategy,\n        middleware: [offset(this.offset), autoPlacement({\n          alignment,\n          allowedPlacements: dropdownAllowedAutoPlacements[this.placement]\n        }), shift(), size({\n          apply: _ref => {\n            var _this$nonScrollableCo;\n            let {\n              availableHeight,\n              elements\n            } = _ref;\n            const contentsEl = elements.floating.querySelector(`.${GL_DROPDOWN_CONTENTS_CLASS}`);\n            if (!contentsEl) {\n              return;\n            }\n            const contentsAvailableHeight = availableHeight - ((_this$nonScrollableCo = this.nonScrollableContentHeight) !== null && _this$nonScrollableCo !== void 0 ? _this$nonScrollableCo : 0) - DEFAULT_OFFSET;\n            Object.assign(contentsEl.style, {\n              maxHeight: `${Math.max(contentsAvailableHeight, 0)}px`\n            });\n          }\n        })]\n      };\n    }\n  },\n  watch: {\n    ariaAttributes: {\n      deep: true,\n      handler(ariaAttributes) {\n        if (this.$scopedSlots.toggle) {\n          Object.keys(ariaAttributes).forEach(key => {\n            this.toggleElement.setAttribute(key, ariaAttributes[key]);\n          });\n        }\n      }\n    }\n  },\n  mounted() {\n    this.checkToggleFocusable();\n  },\n  beforeDestroy() {\n    this.stopFloating();\n  },\n  methods: {\n    checkToggleFocusable() {\n      if (!isElementFocusable(this.toggleElement) && !isElementTabbable(this.toggleElement)) {\n        logWarning(`GlDisclosureDropdown/GlCollapsibleListbox: Toggle is missing a 'tabindex' and cannot be focused.\n          Use 'a' or 'button' element instead or make sure to add 'role=\"button\"' along with 'tabindex' otherwise.`, this.$el);\n      }\n    },\n    async startFloating() {\n      this.calculateNonScrollableAreaHeight();\n      this.observer = new MutationObserver(this.calculateNonScrollableAreaHeight);\n      this.observer.observe(this.$refs.content, {\n        attributes: false,\n        childList: true,\n        subtree: true\n      });\n      this.stopAutoUpdate = autoUpdate(this.toggleElement, this.$refs.content, async () => {\n        const {\n          x,\n          y\n        } = await computePosition(this.toggleElement, this.$refs.content, this.floatingUIConfig);\n\n        /**\n         * Due to the asynchronous nature of computePosition, it's technically possible for the\n         * component to have been destroyed by the time the promise resolves. In such case, we exit\n         * early to prevent a TypeError.\n         */\n        if (!this.$refs.content) return;\n        Object.assign(this.$refs.content.style, {\n          left: `${x}px`,\n          top: `${y}px`\n        });\n      });\n    },\n    stopFloating() {\n      var _this$observer, _this$stopAutoUpdate;\n      (_this$observer = this.observer) === null || _this$observer === void 0 ? void 0 : _this$observer.disconnect();\n      (_this$stopAutoUpdate = this.stopAutoUpdate) === null || _this$stopAutoUpdate === void 0 ? void 0 : _this$stopAutoUpdate.call(this);\n    },\n    async toggle(event) {\n      if (event && this.visible) {\n        let prevented = false;\n        this.$emit(GL_DROPDOWN_BEFORE_CLOSE, {\n          originalEvent: event,\n          preventDefault() {\n            prevented = true;\n          }\n        });\n        if (prevented) return false;\n      }\n      this.visible = !this.visible;\n      if (this.visible) {\n        // The dropdown needs to be actually visible before we compute its position with Floating UI.\n        await this.$nextTick();\n        this.openedYet = true;\n        /**\n         * We wait until the dropdown's position has been computed before emitting the `shown` event.\n         * This ensures that, if the parent component attempts to focus an inner element, the dropdown\n         * is already properly placed in the page. Otherwise, the page would scroll back to the top.\n         */\n        this.startFloating();\n        this.$emit(GL_DROPDOWN_SHOWN);\n      } else {\n        this.stopFloating();\n        this.$emit(GL_DROPDOWN_HIDDEN);\n      }\n\n      // this is to check whether `toggle` was prevented or not\n      return true;\n    },\n    open() {\n      if (this.visible) {\n        return;\n      }\n      this.toggle();\n    },\n    close(event) {\n      if (!this.visible) {\n        return;\n      }\n      this.toggle(event);\n    },\n    /**\n     * Closes the dropdown and returns the focus to the toggle unless it has has moved outside\n     * of the dropdown, meaning that the consumer needed to put some other element in focus.\n     *\n     * @param {KeyboardEvent?} event The keyboard event that caused the dropdown to close.\n     */\n    async closeAndFocus(event) {\n      if (!this.visible) {\n        return;\n      }\n      const hadFocusWithin = this.$el.contains(document.activeElement);\n      const hasToggled = await this.toggle(event);\n      if (!hadFocusWithin) {\n        return;\n      }\n      if (hasToggled) {\n        this.focusToggle();\n      }\n    },\n    focusToggle() {\n      this.toggleElement.focus();\n    },\n    onKeydown(event) {\n      const {\n        code,\n        target: {\n          tagName\n        }\n      } = event;\n      let toggleOnEnter = true;\n      let toggleOnSpace = true;\n      if (tagName === 'BUTTON') {\n        toggleOnEnter = false;\n        toggleOnSpace = false;\n      } else if (tagName === 'A') {\n        toggleOnEnter = false;\n      }\n      if (code === ENTER && toggleOnEnter || code === SPACE && toggleOnSpace) {\n        this.toggle(event);\n      }\n      if (code === ARROW_DOWN) {\n        this.$emit(GL_DROPDOWN_FOCUS_CONTENT, event);\n      }\n    },\n    calculateNonScrollableAreaHeight() {\n      var _this$$refs$content;\n      const scrollableArea = (_this$$refs$content = this.$refs.content) === null || _this$$refs$content === void 0 ? void 0 : _this$$refs$content.querySelector(`.${GL_DROPDOWN_CONTENTS_CLASS}`);\n      if (!scrollableArea) return;\n      const floatingElementBoundingBox = this.$refs.content.getBoundingClientRect();\n      const scrollableAreaBoundingBox = scrollableArea.getBoundingClientRect();\n      this.nonScrollableContentHeight = floatingElementBoundingBox.height - scrollableAreaBoundingBox.height;\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('div',{directives:[{name:\"outside\",rawName:\"v-outside.click.focusin\",value:(_vm.close),expression:\"close\",modifiers:{\"click\":true,\"focusin\":true}}],class:[_vm.$options.BASE_DROPDOWN_CLASS, { '!gl-block': _vm.block }]},[_c(_vm.toggleComponent,_vm._g(_vm._b({ref:\"toggle\",tag:\"component\",attrs:{\"id\":_vm.toggleId,\"data-testid\":\"base-dropdown-toggle\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.close.apply(null, arguments)}}},'component',_vm.toggleAttributes,false),_vm.toggleListeners),[_vm._t(\"toggle\",function(){return [_c('span',{staticClass:\"gl-new-dropdown-button-text\",class:{ 'gl-sr-only': _vm.textSrOnly }},[_vm._v(\"\\n        \"+_vm._s(_vm.toggleText)+\"\\n      \")]),_vm._v(\" \"),(!_vm.noCaret)?_c('gl-icon',{staticClass:\"gl-button-icon gl-new-dropdown-chevron\",attrs:{\"name\":\"chevron-down\"}}):_vm._e()]})],2),_vm._v(\" \"),_c('div',{ref:\"content\",staticClass:\"gl-new-dropdown-panel\",class:_vm.panelClasses,attrs:{\"id\":_vm.baseDropdownId,\"data-testid\":\"base-dropdown-menu\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.closeAndFocus.apply(null, arguments)}}},[_c('div',{staticClass:\"gl-new-dropdown-inner\"},[_vm._t(\"default\")],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__;\nexport { BASE_DROPDOWN_CLASS };\n","const FIXED_WIDTH_CLASS = '!gl-w-31';\nconst DEFAULT_OFFSET = 4;\n\nexport { DEFAULT_OFFSET, FIXED_WIDTH_CLASS };\n","import { clamp } from 'lodash';\nimport {\n  ARROW_DOWN_KEY,\n  ARROW_UP_KEY,\n  END_KEY,\n  HOME_KEY,\n  ESC_KEY,\n  NUMPAD_ENTER_KEY,\n} from '~/lib/utils/keys';\n\nexport default {\n  methods: {\n    getFocusableOptions() {\n      return Array.from(this.$refs.resultsList?.querySelectorAll('.gl-new-dropdown-item') || []);\n    },\n    onKeydown(event) {\n      const { code, target } = event;\n\n      let stop = true;\n\n      const elements = this.getFocusableOptions();\n      if (elements.length < 1) return;\n\n      const isSearchInput = target.matches('input[role=\"searchbox\"]');\n\n      if (code === HOME_KEY) {\n        if (isSearchInput) return;\n\n        this.focusItem(0, elements);\n      } else if (code === END_KEY) {\n        if (isSearchInput) return;\n\n        this.focusItem(elements.length - 1, elements);\n      } else if (code === ARROW_UP_KEY) {\n        if (isSearchInput) return;\n\n        if (elements.indexOf(target) === 0) {\n          this.focusSearchInput();\n        } else {\n          this.focusNextItem(event, elements, -1);\n        }\n      } else if (code === ARROW_DOWN_KEY) {\n        this.focusNextItem(event, elements, 1);\n      } else if (code === ESC_KEY) {\n        this.$refs.modal.close();\n      } else if (code === NUMPAD_ENTER_KEY) {\n        event.target?.firstChild.click();\n      } else {\n        stop = false;\n      }\n\n      if (stop) {\n        event.preventDefault();\n      }\n    },\n    focusSearchInput() {\n      this.$refs.searchInput.$el.querySelector('input')?.focus();\n    },\n    focusNextItem(event, elements, offset) {\n      const { target } = event;\n      const currentIndex = elements.indexOf(target);\n      const nextIndex = clamp(currentIndex + offset, 0, elements.length - 1);\n\n      this.focusItem(nextIndex, elements);\n    },\n    focusItem(index, elements) {\n      this.nextFocusedItemIndex = index;\n\n      elements[index]?.focus();\n    },\n  },\n};\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          // Try next placement and re-run the lifecycle.\n          return {\n            data: {\n              index: nextIndex,\n              overflows: overflowsData\n            },\n            reset: {\n              placement: nextPlacement\n            }\n          };\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = ['top', 'left'].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import GlIcon from '../../icon/icon';\nimport { ENTER, SPACE } from '../constants';\nimport { stopEvent } from '../../../../utils/utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlListboxItem',\n  components: {\n    GlIcon\n  },\n  props: {\n    isSelected: {\n      type: Boolean,\n      default: false,\n      required: false\n    },\n    isFocused: {\n      type: Boolean,\n      default: false,\n      required: false\n    },\n    isCheckCentered: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  computed: {\n    checkedClasses() {\n      if (this.isCheckCentered) {\n        return '';\n      }\n      return 'gl-mt-3 gl-self-start';\n    }\n  },\n  methods: {\n    toggleSelection() {\n      this.$emit('select', !this.isSelected);\n    },\n    onKeydown(event) {\n      const {\n        code\n      } = event;\n      if (code === ENTER || code === SPACE) {\n        stopEvent(event);\n        this.toggleSelection();\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-new-dropdown-item\",attrs:{\"role\":\"option\",\"tabindex\":_vm.isFocused ? 0 : -1,\"aria-selected\":_vm.isSelected},on:{\"click\":_vm.toggleSelection,\"keydown\":_vm.onKeydown}},[_c('span',{staticClass:\"gl-new-dropdown-item-content\"},[_c('gl-icon',{class:[\n        'gl-new-dropdown-item-check-icon',\n        { 'gl-invisible': !_vm.isSelected },\n        _vm.checkedClasses ],attrs:{\"name\":\"mobile-issue-close\",\"data-testid\":\"dropdown-item-checkbox\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-new-dropdown-item-text-wrapper\"},[_vm._t(\"default\")],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"],"sourceRoot":""}