{"version":3,"sources":["webpack:////build/source/node_modules/lodash/invert.js","webpack:////build/source/node_modules/pikaday/pikaday.js","webpack:////build/source/node_modules/@gitlab/ui/dist/utils/number_utils.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/text-selection-active.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/tfoot.js","webpack:///./sidebar/queries/update_epic_subscription.mutation.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js","webpack:///./sidebar/mount_milestone_sidebar.js","webpack:///./tabs/constants.js","webpack:///./tabs/index.js","webpack:///./sidebar/constants.js","webpack:///./milestones/milestone.js","webpack:////build/source/node_modules/@gitlab/ui/dist/utils/datetime_utility.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/progress_bar/progress_bar.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/filter-event.js","webpack:////build/source/node_modules/lodash/_baseInverter.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-colgroup.js","webpack:///./lib/utils/number_utils.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/thead.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/td.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/th.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/tbody.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js","webpack:////build/source/node_modules/immer/dist/immer.esm.js","webpack:////build/source/node_modules/lodash/_createInverter.js","webpack:///./right_sidebar.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/mixins/has-listener.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/tr.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js","webpack:///./sidebar/components/time_tracking/time_tracker.vue","webpack:///./sidebar/components/time_tracking/collapsed_state.vue?494b","webpack:///sidebar/components/time_tracking/collapsed_state.vue","webpack:///./sidebar/components/time_tracking/collapsed_state.vue?b7dc","webpack:///./sidebar/components/time_tracking/collapsed_state.vue","webpack:///./sidebar/components/time_tracking/comparison_pane.vue?b1ae","webpack:///sidebar/components/time_tracking/comparison_pane.vue","webpack:///./sidebar/components/time_tracking/comparison_pane.vue?0cd7","webpack:///./sidebar/components/time_tracking/comparison_pane.vue","webpack:///sidebar/components/time_tracking/spent_only_pane.vue","webpack:///./sidebar/components/time_tracking/spent_only_pane.vue?e3e5","webpack:///./sidebar/components/time_tracking/spent_only_pane.vue?7fb1","webpack:///./sidebar/components/time_tracking/spent_only_pane.vue","webpack:///./sidebar/components/time_tracking/time_tracker.vue?3a0a","webpack:///sidebar/components/time_tracking/time_tracker.vue","webpack:///./sidebar/components/time_tracking/time_tracker.vue?94b5","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/datepicker/datepicker.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/table-lite.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/table_lite/table_lite.js"],"names":["constant","createInverter","identity","nativeObjectToString","Object","prototype","toString","invert","result","value","key","call","module","exports","root","factory","moment","e","hasMoment","hasEventListeners","window","addEventListener","document","sto","setTimeout","addEvent","el","callback","capture","attachEvent","removeEvent","removeEventListener","detachEvent","hasClass","cn","className","indexOf","addClass","removeClass","str","replace","trim","isArray","obj","test","isDate","isNaN","getTime","isWeekend","date","day","getDay","isLeapYear","year","getDaysInMonth","month","setToStartOfDay","setHours","compareDates","a","b","extend","to","from","overwrite","prop","hasProp","undefined","nodeName","Date","slice","fireEvent","eventName","data","ev","createEvent","initEvent","dispatchEvent","createEventObject","adjustCalendar","calendar","Math","ceil","abs","floor","defaults","field","bound","ariaLabel","position","reposition","format","parse","defaultDate","setDefaultDate","firstDay","formatStrict","minDate","maxDate","yearRange","showWeekNumber","pickWholeWeek","minYear","maxYear","minMonth","maxMonth","startRange","endRange","isRTL","yearSuffix","showMonthAfterYear","showDaysInNextAndPreviousMonths","enableSelectionDaysInNextAndPreviousMonths","numberOfMonths","mainCalendar","container","blurFieldOnSelect","i18n","previousMonth","nextMonth","months","weekdays","weekdaysShort","theme","events","onSelect","onOpen","onClose","onDraw","keyboardInput","renderDayName","opts","abbr","renderDay","arr","ariaSelected","isEmpty","push","isDisabled","isToday","isSelected","hasEvent","isInRange","isStartRange","isEndRange","join","renderRow","days","isRowSelected","reverse","renderTitle","instance","c","refYear","randId","i","j","monthHtml","yearHtml","_o","isMinYear","isMaxYear","html","prev","next","Pikaday","options","self","this","config","_onMouseDown","_v","target","event","srcElement","parentNode","prevMonth","setDate","getAttribute","hide","blur","_c","preventDefault","returnValue","_onChange","gotoMonth","gotoYear","_onKeyChange","isVisible","keyCode","adjustDate","_onInputChange","firedBy","isValid","toDate","show","_onInputFocus","_onInputClick","_onInputBlur","pEl","activeElement","_b","_onClick","onchange","setAttribute","trigger","createElement","appendChild","body","insertBefore","nextSibling","defDate","gotoDate","disableWeekends","disableDayFn","nom","parseInt","setMinDate","setMaxDate","fallback","getFullYear","_d","toDateString","getMoment","setMoment","preventOnSelect","isMoment","getDate","draw","min","max","newCalendar","calendars","firstVisibleDate","lastVisibleDate","length","visibleDate","setMonth","getMonth","adjustCalendars","sign","newDay","difference","valueOf","gotoToday","setStartRange","setEndRange","force","_y","_m","random","substr","render","innerHTML","type","focus","adjustPosition","width","height","viewportWidth","viewportHeight","scrollTop","left","top","clientRect","leftAligned","bottomAligned","style","offsetWidth","offsetHeight","innerWidth","documentElement","clientWidth","innerHeight","clientHeight","pageYOffset","getBoundingClientRect","pageXOffset","bottom","offsetLeft","offsetTop","offsetParent","now","before","row","yearOfPreviousMonth","yearOfNextMonth","daysInPreviousMonth","cells","after","d","m","y","onejan","isWeekSelected","r","dayNumber","monthNumber","yearNumber","dayConfig","unshift","weekNum","renderHead","rows","renderTable","v","destroy","removeChild","addition","sum","_len","arguments","numbers","Array","_key","reduce","average","modulo","n","divisor","engineeringNotation","precision","invalidValues","NaN","Infinity","num","Number","includes","allYourBase","0","3","6","9","12","15","18","21","24","exponentialNotation","toExponential","power","split","map","scaledPower","scaledMantissa","toFixed","_","fractionalDigits","formatNumberToLocale","locales","Intl","NumberFormat","toFloat","defaultValue","float","parseFloat","textSelectionActive","sel","containsNode","props","footVariant","BTfoot","name","mixins","getBvTableRowGroup","inject","getBvTable","default","inheritAttrs","computed","isTfoot","bvTable","dark","isStacked","isResponsive","isStickyHeader","stickyHeader","tableVariant","bvAttrs","role","h","class","tfootClasses","attrs","tfootAttrs","on","bvListeners","normalizeSlot","doc","loc","source","definitionRefs","findOperation","definitions","element","forEach","def","refs","Set","collectFragmentReferences","node","kind","add","selectionSet","selections","selection","variableDefinitions","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","size","prevRefs","has","childRef","op","oneQuery","stacked","stackedMixin","isStackedAlways","normalizeFields","origFields","items","fields","filter","f","label","formatter","processField","sample","k","memo","mixin","modelMixin","modelProps","MODEL_PROP_NAME","MODEL_EVENT_NAME","primaryKey","itemsMixin","localItems","bvParent","computedFields","paginatedItems","sortedItems","filteredItems","perPage","currentPage","localFilter","sortBy","localSortBy","sortDesc","localSortDesc","math","apiUrl","watch","newValue","oldValue","$emit","computedItems","methods","computedFieldsObj","footClone","footRowVariant","tfootClass","tfootTrClass","tfootMixin","$createElement","hasNormalizedSlot","headVariant","columns","renderThead","renderTFootCustom","SidebarMilestone","constructor","querySelector","timeEstimate","timeSpent","humanTimeEstimate","humanTimeSpent","limitToHours","iid","dataset","Vue","components","TimeTracker","parseBoolean","issuableIid","initialTimeTracking","totalTimeSpent","humanTotalTimeSpent","canAddTimeEntries","canSetTimeEstimate","ACTIVE_TAB_CLASSES","freeze","TAB_SHOWN_EVENT","HISTORY_TYPE_HASH","ALLOWED_HISTORY_TYPES","GlTabsBehavior","history","Error","destroyFns","tabList","tabs","getTabs","activeTab","setAccessibilityAttrs","bindEvents","loadInitialTab","_this","tab","hasAttribute","_uniqueId","classList","contains","removeAttribute","closest","tabPanel","getPanelForTab","id","NO_SCROLL_TO_HASH_CLASS","_this2","bindEvent","activateTab","code","activatePreviousTab","activateNextTab","args","CSS","escape","location","hash","currentTabIndex","previousTab","nextTab","querySelectorAll","ariaControls","tabToActivate","remove","historyReplaceState","dispatchTabShown","activeTabPanel","CustomEvent","bubbles","detail","defaultEpicSort","epicIidPattern","dateTypes","start","due","dateFields","isDateFixed","dateFixed","dateFromMilestones","Tracking","editEvent","rightSidebarLabel","IssuableAttributeType","Milestone","LocalizedIssuableAttributeType","s__","IssuableAttributeState","_invert","todoMutationTypes","create","markDone","dropdowni18nText","issuableAttribute","issuableType","noAttribute","sprintf","assignAttribute","noAttributesFound","updateError","listFetchError","currentFetchError","noPermissionToView","editConfirmation","editConfirmationCta","editConfirmationCancel","statusDropdownOptions","text","__","subscriptionsDropdownOptions","INCIDENT_SEVERITY","CRITICAL","icon","HIGH","MEDIUM","LOW","UNKNOWN","MILESTONE_STATE","ACTIVE","CLOSED","SEVERITY_I18N","UPDATE_SEVERITY_ERROR","TRY_AGAIN","EDIT","SEVERITY","SEVERITY_VALUE","STATUS_TRIGGERED","STATUS_ACKNOWLEDGED","STATUS_RESOLVED","STATUS_TRIGGERED_LABEL","STATUS_ACKNOWLEDGED_LABEL","STATUS_RESOLVED_LABEL","STATUS_LABELS","INCIDENTS_I18N","fetchError","title","tabsEl","loadedTabs","WeakSet","bindTabsSwitching","loadTab","endpoint","axios","get","then","sanitize","catch","createAlert","message","newDate","getDayDifference","date1","UTC","date2","getDateInPast","daysInPast","getDateInFuture","daysInFuture","areDatesEqual","Boolean","backgroundClasses","primary","success","danger","warning","__vue_script__","String","required","variant","validator","keys","transform","computedValue","computedMax","__vue_component__","_h","_self","staticClass","classes","staticRenderFns","TABLE_TAG_NAMES","filterEvent","disabled","tagName","labelFor","input","baseForOwn","object","setter","iteratee","accumulator","FIELD_KEY_CELL_VARIANT","FIELD_KEY_ROW_VARIANT","FIELD_KEY_SHOW_DETAILS","IGNORED_FIELD_KEYS","EVENT_FILTER","colgroupMixin","$colgroup","bytesToMiB","number","BYTES_IN_KIB","bytesToGiB","numberToHumanSizeSplit","digits","locale","digitsOptions","minimumFractionDigits","maximumFractionDigits","formatNumberWithLocaleAndDigits","formatNumber","numberToHumanSize","humanSize","numberToMetricPrefix","uppercase","THOUSAND","MILLION","median","middle","sorted","sort","changeInPercent","firstY","lastY","round","formattedChangeInPercent","nonFiniteResult","change","isFinite","isNumeric","numberRegex","isPositiveInteger","countFloatingPointDigits","decimal","parts","integer","splitDecimalNumber","BThead","listeners","isThead","theadClasses","theadAttrs","getHeadSlotName","getFootSlotName","headRowVariant","theadClass","theadTrClass","theadMixin","fieldClasses","thClass","isFoot","stopIfBusy","$el","isSortable","isSelectable","hasHeadClickListener","hasListener","selectAllRows","noop","clearSelected","$cells","colIndex","labelHtml","stickyColumn","headerTitle","click","headClicked","keydown","sortAttrs","sortTheadThAttrs","sortClass","sortTheadThClasses","sortLabel","sortTheadThLabel","thStyle","tabindex","sortable","headerAbbr","getThValues","thAttr","slotNames","toLowerCase","scope","column","$content","domProps","$srLabel","$trs","parseSpan","spanValidator","colspan","rowspan","stackedHeading","BTd","getBvTableTr","tag","bvTableTr","inTbody","inThead","inTfoot","isDark","hasStickyHeader","isStickyColumn","rowVariant","headOrFoot","computedColspan","computedRowspan","isStackedCell","cellClasses","cellAttrs","BTh","extends","tbodyTransitionHandlers","tbodyTransitionProps","BTbody","isTbody","tbodyProps","tbodyAttrs","isTransitionGroup","nativeOn","detailsTdClass","tbodyTrAttr","tbodyTrClass","tbodyRowMixin","item","tdValue","thValue","getFieldFormatter","hasDetailsSlot","$set","tbodyRowEventStopped","emitTbodyRowEvent","rowIndex","isRowHeader","formatted","getFormattedValue","cellTag","cellVariant","getTdValues","tdClass","tdAttr","slotScope","index","unformatted","toggleDetails","toggleDetailsFactory","detailsShowing","supportsSelectableRows","rowSelected","selectRow","unselectRow","slotName","$_bodyFieldSlotNameCache","$childNodes","striped","hasSelectableRowClick","rowShowDetails","hasRowClickHandler","$listeners","$rows","detailsId","safeId","$tds","renderTbodyRowCell","ariaRowIndex","primaryKeyValue","rowKey","rowId","selectableClasses","selectableRowClasses","selectableAttrs","selectableRowAttrs","userTrClasses","userTrAttrs","mouseenter","rowHovered","mouseleave","rowUnhovered","ref","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","getCellSlotName","tbodyClass","tbodyMixin","$refs","tbody","trs","tr","children","array","getTbodyTrs","getTbodyTrIndex","tabIndex","onTBodyRowClicked","shift","shiftKey","which","renderBusy","renderTopRow","renderEmpty","renderBottomRow","$busy","cache","defaultSlotName","lowercaseSlotName","renderTbodyRow","handlers","auxclick","onTbodyRowMiddleMouseRowClicked","contextmenu","onTbodyRowContextmenu","dblclick","onTbodyRowDblClicked","onTbodyRowKeydown","$props","t","Q","getPrototypeOf","Function","Z","L","s","o","nn","u","set","delete","X","Map","q","p","l","rn","writable","configurable","enumerable","clear","isFrozen","tn","U","O","g","S","w","P","M","x","H","A","I","R","D","concat","F","z","getOwnPropertyDescriptor","E","N","T","C","en","Proxy","revocable","revoke","proxy","J","K","G","W","Symbol","B","Reflect","for","iterator","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","getOwnPropertyDescriptors","deleteProperty","defineProperty","setPrototypeOf","apply","an","produce","Promise","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","path","$","fn","bind","baseInverter","toIteratee","updateSidebarClasses","layoutPage","rightSidebar","windowSize","Sidebar","sidebar","isMR","page","removeListeners","addEventListeners","initialize","off","$document","sidebarCollapseClicked","onSidebarDropdownHidden","sidebarToggleClicked","ResizeObserver","entries","entry","contentRect","observe","triggered","$toggleButtons","$collapseIcon","$expandIcon","$toggleContainer","isExpanded","tooltipLabel","attr","fixTitle","setCookie","currentTarget","$block","openDropdown","blockOrName","getBlock","isOpen","setCollapseAfterUpdate","toggleSidebar","sidebarDropdownHidden","triggerOpenSidebar","find","action","is","hasListenerMixin","$events","_events","BTr","bvTableRowGroup","isRowDark","trClasses","trAttrs","caption","captionHtml","captionMixin","$caption","hasCaptionSlot","captionId","GlIcon","directives","GlTooltip","GlTooltipDirective","showComparisonState","showSpentOnlyState","showEstimateOnlyState","showNoTimeTrackingState","timeSpentHumanReadable","timeEstimateHumanReadable","divClass","spanClass","timeTrackedTooltipText","tooltipText","rawName","arg","modifiers","_s","GlProgressBar","parsedTimeRemaining","diffSeconds","parseSeconds","timeRemainingHumanReadable","stringifyTime","timeRemainingTooltip","timeRemainingMinutes","timeRemainingPercent","timeRemainingStatusClass","progressBarVariant","_vm","GlSprintf","$options","scopedSlots","_u","content","noTimeTrackingText","estimatedOnlyText","GlLink","GlModal","GlButton","GlLoadingIcon","TimeTrackingCollapsedState","TimeTrackingSpentOnlyPane","TimeTrackingComparisonPane","TimeTrackingReport","CreateTimelogForm","SetTimeEstimateForm","GlModalDirective","fullPath","issuableId","showCollapsed","timeTracking","apollo","issuableTimeTracking","query","timeTrackingQueries","skip","variables","update","_data$workspace","workspace","issuable","isTimeTrackingInfoLoading","_this$$apollo$queries","_this$$apollo","$apollo","queries","loading","_this$timeTracking","_this$timeTracking2","_this$timeTracking3","_this$timeTracking4","hasTotalTimeSpent","hasTimeEstimate","isTimeReportSupported","TYPE_ISSUE","TYPE_MERGE_REQUEST","timeEstimateTooltip","created","eventHub","$on","refresh","refetch","openRegisterTimeSpentModal","$root","BV_SHOW_MODAL","CREATE_TIMELOG_MODAL_ID","setTimeEstimateModalId","SET_TIME_ESTIMATE_MODAL_ID","_e","expression","$event","bordered","borderless","captionTop","fixed","hover","noBorderCollapse","outlined","responsive","small","tableClass","tableRendererMixin","isTableSimple","maxHeight","selectableTableClasses","stackedTableClasses","computedBusy","selectableTableAttrs","ariaAttrs","wrapperClasses","renderCaption","renderColgroup","renderTbody","renderTfoot","$table","tableClasses","tableAttrs","wrapperStyles","pad","val","len","GlFormInput","placeholder","autocomplete","displayField","startOpened","showClearButton","inputId","inputLabel","inputName","state","textInput","customTrigger","triggerOnFocus","computedWidth","$parentEl","$parent","openedEvent","opened","drawEvent","pikadayConfig","dateString","parsedDate","defaultDateFormatter","selected","closed","titleEl","monthEl","yearEl","addAccessibleLabels","pikaday","pikaButtons","today","pikaButton","pikaYear","pikaMonth","pikaDay","pikaButtonDate","compareTo","highlightPastDates","calendarTriggerBtn","resetDate","datepickerClasses","_t","renderClearButton","formattedDate","inputAutocomplete","_k","onKeydown","model","$$v","cleared","BTableLite","stickyHeaderClass","_g","localTableClass","_l","$scopedSlots","slot","$attrs"],"mappings":"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","file":"commons-pages.dashboard.milestones.show-pages.groups.milestones.edit-pages.groups.milestones.new-pag-d83a73ea.9412b7b1.chunk.js","sourcesContent":["var constant = require('./constant'),\n    createInverter = require('./_createInverter'),\n    identity = require('./identity');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\nvar invert = createInverter(function(result, value, key) {\n  if (value != null &&\n      typeof value.toString != 'function') {\n    value = nativeObjectToString.call(value);\n  }\n\n  result[value] = key;\n}, constant(identity));\n\nmodule.exports = invert;\n","/*!\n * Pikaday\n *\n * Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/Pikaday/Pikaday\n */\n\n(function (root, factory)\n{\n    'use strict';\n\n    var moment;\n    if (typeof exports === 'object') {\n        // CommonJS module\n        // Load moment.js as an optional dependency\n        try { moment = require('moment'); } catch (e) {}\n        module.exports = factory(moment);\n    } else if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define(function (req)\n        {\n            // Load moment.js as an optional dependency\n            var id = 'moment';\n            try { moment = req(id); } catch (e) {}\n            return factory(moment);\n        });\n    } else {\n        root.Pikaday = factory(root.moment);\n    }\n}(this, function (moment)\n{\n    'use strict';\n\n    /**\n     * feature detection and helper functions\n     */\n    var hasMoment = typeof moment === 'function',\n\n    hasEventListeners = !!window.addEventListener,\n\n    document = window.document,\n\n    sto = window.setTimeout,\n\n    addEvent = function(el, e, callback, capture)\n    {\n        if (hasEventListeners) {\n            el.addEventListener(e, callback, !!capture);\n        } else {\n            el.attachEvent('on' + e, callback);\n        }\n    },\n\n    removeEvent = function(el, e, callback, capture)\n    {\n        if (hasEventListeners) {\n            el.removeEventListener(e, callback, !!capture);\n        } else {\n            el.detachEvent('on' + e, callback);\n        }\n    },\n\n    trim = function(str)\n    {\n        return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g,'');\n    },\n\n    hasClass = function(el, cn)\n    {\n        return (' ' + el.className + ' ').indexOf(' ' + cn + ' ') !== -1;\n    },\n\n    addClass = function(el, cn)\n    {\n        if (!hasClass(el, cn)) {\n            el.className = (el.className === '') ? cn : el.className + ' ' + cn;\n        }\n    },\n\n    removeClass = function(el, cn)\n    {\n        el.className = trim((' ' + el.className + ' ').replace(' ' + cn + ' ', ' '));\n    },\n\n    isArray = function(obj)\n    {\n        return (/Array/).test(Object.prototype.toString.call(obj));\n    },\n\n    isDate = function(obj)\n    {\n        return (/Date/).test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());\n    },\n\n    isWeekend = function(date)\n    {\n        var day = date.getDay();\n        return day === 0 || day === 6;\n    },\n\n    isLeapYear = function(year)\n    {\n        // solution by Matti Virkkunen: http://stackoverflow.com/a/4881951\n        return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n    },\n\n    getDaysInMonth = function(year, month)\n    {\n        return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n    },\n\n    setToStartOfDay = function(date)\n    {\n        if (isDate(date)) date.setHours(0,0,0,0);\n    },\n\n    compareDates = function(a,b)\n    {\n        // weak date comparison (use setToStartOfDay(date) to ensure correct result)\n        return a.getTime() === b.getTime();\n    },\n\n    extend = function(to, from, overwrite)\n    {\n        var prop, hasProp;\n        for (prop in from) {\n            hasProp = to[prop] !== undefined;\n            if (hasProp && typeof from[prop] === 'object' && from[prop] !== null && from[prop].nodeName === undefined) {\n                if (isDate(from[prop])) {\n                    if (overwrite) {\n                        to[prop] = new Date(from[prop].getTime());\n                    }\n                }\n                else if (isArray(from[prop])) {\n                    if (overwrite) {\n                        to[prop] = from[prop].slice(0);\n                    }\n                } else {\n                    to[prop] = extend({}, from[prop], overwrite);\n                }\n            } else if (overwrite || !hasProp) {\n                to[prop] = from[prop];\n            }\n        }\n        return to;\n    },\n\n    fireEvent = function(el, eventName, data)\n    {\n        var ev;\n\n        if (document.createEvent) {\n            ev = document.createEvent('HTMLEvents');\n            ev.initEvent(eventName, true, false);\n            ev = extend(ev, data);\n            el.dispatchEvent(ev);\n        } else if (document.createEventObject) {\n            ev = document.createEventObject();\n            ev = extend(ev, data);\n            el.fireEvent('on' + eventName, ev);\n        }\n    },\n\n    adjustCalendar = function(calendar) {\n        if (calendar.month < 0) {\n            calendar.year -= Math.ceil(Math.abs(calendar.month)/12);\n            calendar.month += 12;\n        }\n        if (calendar.month > 11) {\n            calendar.year += Math.floor(Math.abs(calendar.month)/12);\n            calendar.month -= 12;\n        }\n        return calendar;\n    },\n\n    /**\n     * defaults and localisation\n     */\n    defaults = {\n\n        // bind the picker to a form field\n        field: null,\n\n        // automatically show/hide the picker on `field` focus (default `true` if `field` is set)\n        bound: undefined,\n\n        // data-attribute on the input field with an aria assistance tekst (only applied when `bound` is set)\n        ariaLabel: 'Use the arrow keys to pick a date',\n\n        // position of the datepicker, relative to the field (default to bottom & left)\n        // ('bottom' & 'left' keywords are not used, 'top' & 'right' are modifier on the bottom/left position)\n        position: 'bottom left',\n\n        // automatically fit in the viewport even if it means repositioning from the position option\n        reposition: true,\n\n        // the default output format for `.toString()` and `field` value\n        format: 'YYYY-MM-DD',\n\n        // the toString function which gets passed a current date object and format\n        // and returns a string\n        toString: null,\n\n        // used to create date object from current input string\n        parse: null,\n\n        // the initial date to view when first opened\n        defaultDate: null,\n\n        // make the `defaultDate` the initial selected value\n        setDefaultDate: false,\n\n        // first day of week (0: Sunday, 1: Monday etc)\n        firstDay: 0,\n\n        // the default flag for moment's strict date parsing\n        formatStrict: false,\n\n        // the minimum/earliest date that can be selected\n        minDate: null,\n        // the maximum/latest date that can be selected\n        maxDate: null,\n\n        // number of years either side, or array of upper/lower range\n        yearRange: 10,\n\n        // show week numbers at head of row\n        showWeekNumber: false,\n\n        // Week picker mode\n        pickWholeWeek: false,\n\n        // used internally (don't config outside)\n        minYear: 0,\n        maxYear: 9999,\n        minMonth: undefined,\n        maxMonth: undefined,\n\n        startRange: null,\n        endRange: null,\n\n        isRTL: false,\n\n        // Additional text to append to the year in the calendar title\n        yearSuffix: '',\n\n        // Render the month after year in the calendar title\n        showMonthAfterYear: false,\n\n        // Render days of the calendar grid that fall in the next or previous month\n        showDaysInNextAndPreviousMonths: false,\n\n        // Allows user to select days that fall in the next or previous month\n        enableSelectionDaysInNextAndPreviousMonths: false,\n\n        // how many months are visible\n        numberOfMonths: 1,\n\n        // when numberOfMonths is used, this will help you to choose where the main calendar will be (default `left`, can be set to `right`)\n        // only used for the first display or when a selected date is not visible\n        mainCalendar: 'left',\n\n        // Specify a DOM element to render the calendar in\n        container: undefined,\n\n        // Blur field when date is selected\n        blurFieldOnSelect : true,\n\n        // internationalization\n        i18n: {\n            previousMonth : 'Previous Month',\n            nextMonth     : 'Next Month',\n            months        : ['January','February','March','April','May','June','July','August','September','October','November','December'],\n            weekdays      : ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],\n            weekdaysShort : ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']\n        },\n\n        // Theme Classname\n        theme: null,\n\n        // events array\n        events: [],\n\n        // callback function\n        onSelect: null,\n        onOpen: null,\n        onClose: null,\n        onDraw: null,\n\n        // Enable keyboard input\n        keyboardInput: true\n    },\n\n\n    /**\n     * templating functions to abstract HTML rendering\n     */\n    renderDayName = function(opts, day, abbr)\n    {\n        day += opts.firstDay;\n        while (day >= 7) {\n            day -= 7;\n        }\n        return abbr ? opts.i18n.weekdaysShort[day] : opts.i18n.weekdays[day];\n    },\n\n    renderDay = function(opts)\n    {\n        var arr = [];\n        var ariaSelected = 'false';\n        if (opts.isEmpty) {\n            if (opts.showDaysInNextAndPreviousMonths) {\n                arr.push('is-outside-current-month');\n\n                if(!opts.enableSelectionDaysInNextAndPreviousMonths) {\n                    arr.push('is-selection-disabled');\n                }\n\n            } else {\n                return '<td class=\"is-empty\"></td>';\n            }\n        }\n        if (opts.isDisabled) {\n            arr.push('is-disabled');\n        }\n        if (opts.isToday) {\n            arr.push('is-today');\n        }\n        if (opts.isSelected) {\n            arr.push('is-selected');\n            ariaSelected = 'true';\n        }\n        if (opts.hasEvent) {\n            arr.push('has-event');\n        }\n        if (opts.isInRange) {\n            arr.push('is-inrange');\n        }\n        if (opts.isStartRange) {\n            arr.push('is-startrange');\n        }\n        if (opts.isEndRange) {\n            arr.push('is-endrange');\n        }\n        return '<td data-day=\"' + opts.day + '\" class=\"' + arr.join(' ') + '\" aria-selected=\"' + ariaSelected + '\">' +\n                 '<button class=\"pika-button pika-day\" type=\"button\" ' +\n                    'data-pika-year=\"' + opts.year + '\" data-pika-month=\"' + opts.month + '\" data-pika-day=\"' + opts.day + '\">' +\n                        opts.day +\n                 '</button>' +\n               '</td>';\n    },\n\n    renderWeek = function (d, m, y) {\n        // Lifted from http://javascript.about.com/library/blweekyear.htm, lightly modified.\n        var onejan = new Date(y, 0, 1),\n            weekNum = Math.ceil((((new Date(y, m, d) - onejan) / 86400000) + onejan.getDay()+1)/7);\n        return '<td class=\"pika-week\">' + weekNum + '</td>';\n    },\n\n    renderRow = function(days, isRTL, pickWholeWeek, isRowSelected)\n    {\n        return '<tr class=\"pika-row' + (pickWholeWeek ? ' pick-whole-week' : '') + (isRowSelected ? ' is-selected' : '') + '\">' + (isRTL ? days.reverse() : days).join('') + '</tr>';\n    },\n\n    renderBody = function(rows)\n    {\n        return '<tbody>' + rows.join('') + '</tbody>';\n    },\n\n    renderHead = function(opts)\n    {\n        var i, arr = [];\n        if (opts.showWeekNumber) {\n            arr.push('<th></th>');\n        }\n        for (i = 0; i < 7; i++) {\n            arr.push('<th scope=\"col\"><abbr title=\"' + renderDayName(opts, i) + '\">' + renderDayName(opts, i, true) + '</abbr></th>');\n        }\n        return '<thead><tr>' + (opts.isRTL ? arr.reverse() : arr).join('') + '</tr></thead>';\n    },\n\n    renderTitle = function(instance, c, year, month, refYear, randId)\n    {\n        var i, j, arr,\n            opts = instance._o,\n            isMinYear = year === opts.minYear,\n            isMaxYear = year === opts.maxYear,\n            html = '<div id=\"' + randId + '\" class=\"pika-title\" role=\"heading\" aria-live=\"assertive\">',\n            monthHtml,\n            yearHtml,\n            prev = true,\n            next = true;\n\n        for (arr = [], i = 0; i < 12; i++) {\n            arr.push('<option value=\"' + (year === refYear ? i - c : 12 + i - c) + '\"' +\n                (i === month ? ' selected=\"selected\"': '') +\n                ((isMinYear && i < opts.minMonth) || (isMaxYear && i > opts.maxMonth) ? 'disabled=\"disabled\"' : '') + '>' +\n                opts.i18n.months[i] + '</option>');\n        }\n\n        monthHtml = '<div class=\"pika-label\">' + opts.i18n.months[month] + '<select class=\"pika-select pika-select-month\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n        if (isArray(opts.yearRange)) {\n            i = opts.yearRange[0];\n            j = opts.yearRange[1] + 1;\n        } else {\n            i = year - opts.yearRange;\n            j = 1 + year + opts.yearRange;\n        }\n\n        for (arr = []; i < j && i <= opts.maxYear; i++) {\n            if (i >= opts.minYear) {\n                arr.push('<option value=\"' + i + '\"' + (i === year ? ' selected=\"selected\"': '') + '>' + (i) + '</option>');\n            }\n        }\n        yearHtml = '<div class=\"pika-label\">' + year + opts.yearSuffix + '<select class=\"pika-select pika-select-year\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n        if (opts.showMonthAfterYear) {\n            html += yearHtml + monthHtml;\n        } else {\n            html += monthHtml + yearHtml;\n        }\n\n        if (isMinYear && (month === 0 || opts.minMonth >= month)) {\n            prev = false;\n        }\n\n        if (isMaxYear && (month === 11 || opts.maxMonth <= month)) {\n            next = false;\n        }\n\n        if (c === 0) {\n            html += '<button class=\"pika-prev' + (prev ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.previousMonth + '</button>';\n        }\n        if (c === (instance._o.numberOfMonths - 1) ) {\n            html += '<button class=\"pika-next' + (next ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.nextMonth + '</button>';\n        }\n\n        return html += '</div>';\n    },\n\n    renderTable = function(opts, data, randId)\n    {\n        return '<table cellpadding=\"0\" cellspacing=\"0\" class=\"pika-table\" role=\"grid\" aria-labelledby=\"' + randId + '\">' + renderHead(opts) + renderBody(data) + '</table>';\n    },\n\n\n    /**\n     * Pikaday constructor\n     */\n    Pikaday = function(options)\n    {\n        var self = this,\n            opts = self.config(options);\n\n        self._onMouseDown = function(e)\n        {\n            if (!self._v) {\n                return;\n            }\n            e = e || window.event;\n            var target = e.target || e.srcElement;\n            if (!target) {\n                return;\n            }\n\n            if (!hasClass(target, 'is-disabled')) {\n                if (hasClass(target, 'pika-button') && !hasClass(target, 'is-empty') && !hasClass(target.parentNode, 'is-disabled')) {\n                    self.setDate(new Date(target.getAttribute('data-pika-year'), target.getAttribute('data-pika-month'), target.getAttribute('data-pika-day')));\n                    if (opts.bound) {\n                        sto(function() {\n                            self.hide();\n                            if (opts.blurFieldOnSelect && opts.field) {\n                                opts.field.blur();\n                            }\n                        }, 100);\n                    }\n                }\n                else if (hasClass(target, 'pika-prev')) {\n                    self.prevMonth();\n                }\n                else if (hasClass(target, 'pika-next')) {\n                    self.nextMonth();\n                }\n            }\n            if (!hasClass(target, 'pika-select')) {\n                // if this is touch event prevent mouse events emulation\n                if (e.preventDefault) {\n                    e.preventDefault();\n                } else {\n                    e.returnValue = false;\n                    return false;\n                }\n            } else {\n                self._c = true;\n            }\n        };\n\n        self._onChange = function(e)\n        {\n            e = e || window.event;\n            var target = e.target || e.srcElement;\n            if (!target) {\n                return;\n            }\n            if (hasClass(target, 'pika-select-month')) {\n                self.gotoMonth(target.value);\n            }\n            else if (hasClass(target, 'pika-select-year')) {\n                self.gotoYear(target.value);\n            }\n        };\n\n        self._onKeyChange = function(e)\n        {\n            e = e || window.event;\n\n            if (self.isVisible()) {\n\n                switch(e.keyCode){\n                    case 13:\n                    case 27:\n                        if (opts.field) {\n                            opts.field.blur();\n                        }\n                        break;\n                    case 37:\n                        e.preventDefault();\n                        self.adjustDate('subtract', 1);\n                        break;\n                    case 38:\n                        self.adjustDate('subtract', 7);\n                        break;\n                    case 39:\n                        self.adjustDate('add', 1);\n                        break;\n                    case 40:\n                        self.adjustDate('add', 7);\n                        break;\n                }\n            }\n        };\n\n        self._onInputChange = function(e)\n        {\n            var date;\n\n            if (e.firedBy === self) {\n                return;\n            }\n            if (opts.parse) {\n                date = opts.parse(opts.field.value, opts.format);\n            } else if (hasMoment) {\n                date = moment(opts.field.value, opts.format, opts.formatStrict);\n                date = (date && date.isValid()) ? date.toDate() : null;\n            }\n            else {\n                date = new Date(Date.parse(opts.field.value));\n            }\n            if (isDate(date)) {\n              self.setDate(date);\n            }\n            if (!self._v) {\n                self.show();\n            }\n        };\n\n        self._onInputFocus = function()\n        {\n            self.show();\n        };\n\n        self._onInputClick = function()\n        {\n            self.show();\n        };\n\n        self._onInputBlur = function()\n        {\n            // IE allows pika div to gain focus; catch blur the input field\n            var pEl = document.activeElement;\n            do {\n                if (hasClass(pEl, 'pika-single')) {\n                    return;\n                }\n            }\n            while ((pEl = pEl.parentNode));\n\n            if (!self._c) {\n                self._b = sto(function() {\n                    self.hide();\n                }, 50);\n            }\n            self._c = false;\n        };\n\n        self._onClick = function(e)\n        {\n            e = e || window.event;\n            var target = e.target || e.srcElement,\n                pEl = target;\n            if (!target) {\n                return;\n            }\n            if (!hasEventListeners && hasClass(target, 'pika-select')) {\n                if (!target.onchange) {\n                    target.setAttribute('onchange', 'return;');\n                    addEvent(target, 'change', self._onChange);\n                }\n            }\n            do {\n                if (hasClass(pEl, 'pika-single') || pEl === opts.trigger) {\n                    return;\n                }\n            }\n            while ((pEl = pEl.parentNode));\n            if (self._v && target !== opts.trigger && pEl !== opts.trigger) {\n                self.hide();\n            }\n        };\n\n        self.el = document.createElement('div');\n        self.el.className = 'pika-single' + (opts.isRTL ? ' is-rtl' : '') + (opts.theme ? ' ' + opts.theme : '');\n\n        addEvent(self.el, 'mousedown', self._onMouseDown, true);\n        addEvent(self.el, 'touchend', self._onMouseDown, true);\n        addEvent(self.el, 'change', self._onChange);\n\n        if (opts.keyboardInput) {\n            addEvent(document, 'keydown', self._onKeyChange);\n        }\n\n        if (opts.field) {\n            if (opts.container) {\n                opts.container.appendChild(self.el);\n            } else if (opts.bound) {\n                document.body.appendChild(self.el);\n            } else {\n                opts.field.parentNode.insertBefore(self.el, opts.field.nextSibling);\n            }\n            addEvent(opts.field, 'change', self._onInputChange);\n\n            if (!opts.defaultDate) {\n                if (hasMoment && opts.field.value) {\n                    opts.defaultDate = moment(opts.field.value, opts.format).toDate();\n                } else {\n                    opts.defaultDate = new Date(Date.parse(opts.field.value));\n                }\n                opts.setDefaultDate = true;\n            }\n        }\n\n        var defDate = opts.defaultDate;\n\n        if (isDate(defDate)) {\n            if (opts.setDefaultDate) {\n                self.setDate(defDate, true);\n            } else {\n                self.gotoDate(defDate);\n            }\n        } else {\n            self.gotoDate(new Date());\n        }\n\n        if (opts.bound) {\n            this.hide();\n            self.el.className += ' is-bound';\n            addEvent(opts.trigger, 'click', self._onInputClick);\n            addEvent(opts.trigger, 'focus', self._onInputFocus);\n            addEvent(opts.trigger, 'blur', self._onInputBlur);\n        } else {\n            this.show();\n        }\n    };\n\n\n    /**\n     * public Pikaday API\n     */\n    Pikaday.prototype = {\n\n\n        /**\n         * configure functionality\n         */\n        config: function(options)\n        {\n            if (!this._o) {\n                this._o = extend({}, defaults, true);\n            }\n\n            var opts = extend(this._o, options, true);\n\n            opts.isRTL = !!opts.isRTL;\n\n            opts.field = (opts.field && opts.field.nodeName) ? opts.field : null;\n\n            opts.theme = (typeof opts.theme) === 'string' && opts.theme ? opts.theme : null;\n\n            opts.bound = !!(opts.bound !== undefined ? opts.field && opts.bound : opts.field);\n\n            opts.trigger = (opts.trigger && opts.trigger.nodeName) ? opts.trigger : opts.field;\n\n            opts.disableWeekends = !!opts.disableWeekends;\n\n            opts.disableDayFn = (typeof opts.disableDayFn) === 'function' ? opts.disableDayFn : null;\n\n            var nom = parseInt(opts.numberOfMonths, 10) || 1;\n            opts.numberOfMonths = nom > 4 ? 4 : nom;\n\n            if (!isDate(opts.minDate)) {\n                opts.minDate = false;\n            }\n            if (!isDate(opts.maxDate)) {\n                opts.maxDate = false;\n            }\n            if ((opts.minDate && opts.maxDate) && opts.maxDate < opts.minDate) {\n                opts.maxDate = opts.minDate = false;\n            }\n            if (opts.minDate) {\n                this.setMinDate(opts.minDate);\n            }\n            if (opts.maxDate) {\n                this.setMaxDate(opts.maxDate);\n            }\n\n            if (isArray(opts.yearRange)) {\n                var fallback = new Date().getFullYear() - 10;\n                opts.yearRange[0] = parseInt(opts.yearRange[0], 10) || fallback;\n                opts.yearRange[1] = parseInt(opts.yearRange[1], 10) || fallback;\n            } else {\n                opts.yearRange = Math.abs(parseInt(opts.yearRange, 10)) || defaults.yearRange;\n                if (opts.yearRange > 100) {\n                    opts.yearRange = 100;\n                }\n            }\n\n            return opts;\n        },\n\n        /**\n         * return a formatted string of the current selection (using Moment.js if available)\n         */\n        toString: function(format)\n        {\n            format = format || this._o.format;\n            if (!isDate(this._d)) {\n                return '';\n            }\n            if (this._o.toString) {\n              return this._o.toString(this._d, format);\n            }\n            if (hasMoment) {\n              return moment(this._d).format(format);\n            }\n            return this._d.toDateString();\n        },\n\n        /**\n         * return a Moment.js object of the current selection (if available)\n         */\n        getMoment: function()\n        {\n            return hasMoment ? moment(this._d) : null;\n        },\n\n        /**\n         * set the current selection from a Moment.js object (if available)\n         */\n        setMoment: function(date, preventOnSelect)\n        {\n            if (hasMoment && moment.isMoment(date)) {\n                this.setDate(date.toDate(), preventOnSelect);\n            }\n        },\n\n        /**\n         * return a Date object of the current selection\n         */\n        getDate: function()\n        {\n            return isDate(this._d) ? new Date(this._d.getTime()) : null;\n        },\n\n        /**\n         * set the current selection\n         */\n        setDate: function(date, preventOnSelect)\n        {\n            if (!date) {\n                this._d = null;\n\n                if (this._o.field) {\n                    this._o.field.value = '';\n                    fireEvent(this._o.field, 'change', { firedBy: this });\n                }\n\n                return this.draw();\n            }\n            if (typeof date === 'string') {\n                date = new Date(Date.parse(date));\n            }\n            if (!isDate(date)) {\n                return;\n            }\n\n            var min = this._o.minDate,\n                max = this._o.maxDate;\n\n            if (isDate(min) && date < min) {\n                date = min;\n            } else if (isDate(max) && date > max) {\n                date = max;\n            }\n\n            this._d = new Date(date.getTime());\n            setToStartOfDay(this._d);\n            this.gotoDate(this._d);\n\n            if (this._o.field) {\n                this._o.field.value = this.toString();\n                fireEvent(this._o.field, 'change', { firedBy: this });\n            }\n            if (!preventOnSelect && typeof this._o.onSelect === 'function') {\n                this._o.onSelect.call(this, this.getDate());\n            }\n        },\n\n        /**\n         * change view to a specific date\n         */\n        gotoDate: function(date)\n        {\n            var newCalendar = true;\n\n            if (!isDate(date)) {\n                return;\n            }\n\n            if (this.calendars) {\n                var firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1),\n                    lastVisibleDate = new Date(this.calendars[this.calendars.length-1].year, this.calendars[this.calendars.length-1].month, 1),\n                    visibleDate = date.getTime();\n                // get the end of the month\n                lastVisibleDate.setMonth(lastVisibleDate.getMonth()+1);\n                lastVisibleDate.setDate(lastVisibleDate.getDate()-1);\n                newCalendar = (visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate);\n            }\n\n            if (newCalendar) {\n                this.calendars = [{\n                    month: date.getMonth(),\n                    year: date.getFullYear()\n                }];\n                if (this._o.mainCalendar === 'right') {\n                    this.calendars[0].month += 1 - this._o.numberOfMonths;\n                }\n            }\n\n            this.adjustCalendars();\n        },\n\n        adjustDate: function(sign, days) {\n\n            var day = this.getDate() || new Date();\n            var difference = parseInt(days)*24*60*60*1000;\n\n            var newDay;\n\n            if (sign === 'add') {\n                newDay = new Date(day.valueOf() + difference);\n            } else if (sign === 'subtract') {\n                newDay = new Date(day.valueOf() - difference);\n            }\n\n            this.setDate(newDay);\n        },\n\n        adjustCalendars: function() {\n            this.calendars[0] = adjustCalendar(this.calendars[0]);\n            for (var c = 1; c < this._o.numberOfMonths; c++) {\n                this.calendars[c] = adjustCalendar({\n                    month: this.calendars[0].month + c,\n                    year: this.calendars[0].year\n                });\n            }\n            this.draw();\n        },\n\n        gotoToday: function()\n        {\n            this.gotoDate(new Date());\n        },\n\n        /**\n         * change view to a specific month (zero-index, e.g. 0: January)\n         */\n        gotoMonth: function(month)\n        {\n            if (!isNaN(month)) {\n                this.calendars[0].month = parseInt(month, 10);\n                this.adjustCalendars();\n            }\n        },\n\n        nextMonth: function()\n        {\n            this.calendars[0].month++;\n            this.adjustCalendars();\n        },\n\n        prevMonth: function()\n        {\n            this.calendars[0].month--;\n            this.adjustCalendars();\n        },\n\n        /**\n         * change view to a specific full year (e.g. \"2012\")\n         */\n        gotoYear: function(year)\n        {\n            if (!isNaN(year)) {\n                this.calendars[0].year = parseInt(year, 10);\n                this.adjustCalendars();\n            }\n        },\n\n        /**\n         * change the minDate\n         */\n        setMinDate: function(value)\n        {\n            if(value instanceof Date) {\n                setToStartOfDay(value);\n                this._o.minDate = value;\n                this._o.minYear  = value.getFullYear();\n                this._o.minMonth = value.getMonth();\n            } else {\n                this._o.minDate = defaults.minDate;\n                this._o.minYear  = defaults.minYear;\n                this._o.minMonth = defaults.minMonth;\n                this._o.startRange = defaults.startRange;\n            }\n\n            this.draw();\n        },\n\n        /**\n         * change the maxDate\n         */\n        setMaxDate: function(value)\n        {\n            if(value instanceof Date) {\n                setToStartOfDay(value);\n                this._o.maxDate = value;\n                this._o.maxYear = value.getFullYear();\n                this._o.maxMonth = value.getMonth();\n            } else {\n                this._o.maxDate = defaults.maxDate;\n                this._o.maxYear = defaults.maxYear;\n                this._o.maxMonth = defaults.maxMonth;\n                this._o.endRange = defaults.endRange;\n            }\n\n            this.draw();\n        },\n\n        setStartRange: function(value)\n        {\n            this._o.startRange = value;\n        },\n\n        setEndRange: function(value)\n        {\n            this._o.endRange = value;\n        },\n\n        /**\n         * refresh the HTML\n         */\n        draw: function(force)\n        {\n            if (!this._v && !force) {\n                return;\n            }\n            var opts = this._o,\n                minYear = opts.minYear,\n                maxYear = opts.maxYear,\n                minMonth = opts.minMonth,\n                maxMonth = opts.maxMonth,\n                html = '',\n                randId;\n\n            if (this._y <= minYear) {\n                this._y = minYear;\n                if (!isNaN(minMonth) && this._m < minMonth) {\n                    this._m = minMonth;\n                }\n            }\n            if (this._y >= maxYear) {\n                this._y = maxYear;\n                if (!isNaN(maxMonth) && this._m > maxMonth) {\n                    this._m = maxMonth;\n                }\n            }\n\n            randId = 'pika-title-' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 2);\n\n            for (var c = 0; c < opts.numberOfMonths; c++) {\n                html += '<div class=\"pika-lendar\">' + renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year, randId) + this.render(this.calendars[c].year, this.calendars[c].month, randId) + '</div>';\n            }\n\n            this.el.innerHTML = html;\n\n            if (opts.bound) {\n                if(opts.field.type !== 'hidden') {\n                    sto(function() {\n                        opts.trigger.focus();\n                    }, 1);\n                }\n            }\n\n            if (typeof this._o.onDraw === 'function') {\n                this._o.onDraw(this);\n            }\n\n            if (opts.bound) {\n                // let the screen reader user know to use arrow keys\n                opts.field.setAttribute('aria-label', opts.ariaLabel);\n            }\n        },\n\n        adjustPosition: function()\n        {\n            var field, pEl, width, height, viewportWidth, viewportHeight, scrollTop, left, top, clientRect, leftAligned, bottomAligned;\n\n            if (this._o.container) return;\n\n            this.el.style.position = 'absolute';\n\n            field = this._o.trigger;\n            pEl = field;\n            width = this.el.offsetWidth;\n            height = this.el.offsetHeight;\n            viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n            viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n            scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;\n            leftAligned = true;\n            bottomAligned = true;\n\n            if (typeof field.getBoundingClientRect === 'function') {\n                clientRect = field.getBoundingClientRect();\n                left = clientRect.left + window.pageXOffset;\n                top = clientRect.bottom + window.pageYOffset;\n            } else {\n                left = pEl.offsetLeft;\n                top  = pEl.offsetTop + pEl.offsetHeight;\n                while((pEl = pEl.offsetParent)) {\n                    left += pEl.offsetLeft;\n                    top  += pEl.offsetTop;\n                }\n            }\n\n            // default position is bottom & left\n            if ((this._o.reposition && left + width > viewportWidth) ||\n                (\n                    this._o.position.indexOf('right') > -1 &&\n                    left - width + field.offsetWidth > 0\n                )\n            ) {\n                left = left - width + field.offsetWidth;\n                leftAligned = false;\n            }\n            if ((this._o.reposition && top + height > viewportHeight + scrollTop) ||\n                (\n                    this._o.position.indexOf('top') > -1 &&\n                    top - height - field.offsetHeight > 0\n                )\n            ) {\n                top = top - height - field.offsetHeight;\n                bottomAligned = false;\n            }\n\n            this.el.style.left = left + 'px';\n            this.el.style.top = top + 'px';\n\n            addClass(this.el, leftAligned ? 'left-aligned' : 'right-aligned');\n            addClass(this.el, bottomAligned ? 'bottom-aligned' : 'top-aligned');\n            removeClass(this.el, !leftAligned ? 'left-aligned' : 'right-aligned');\n            removeClass(this.el, !bottomAligned ? 'bottom-aligned' : 'top-aligned');\n        },\n\n        /**\n         * render HTML for a particular month\n         */\n        render: function(year, month, randId)\n        {\n            var opts   = this._o,\n                now    = new Date(),\n                days   = getDaysInMonth(year, month),\n                before = new Date(year, month, 1).getDay(),\n                data   = [],\n                row    = [];\n            setToStartOfDay(now);\n            if (opts.firstDay > 0) {\n                before -= opts.firstDay;\n                if (before < 0) {\n                    before += 7;\n                }\n            }\n            var previousMonth = month === 0 ? 11 : month - 1,\n                nextMonth = month === 11 ? 0 : month + 1,\n                yearOfPreviousMonth = month === 0 ? year - 1 : year,\n                yearOfNextMonth = month === 11 ? year + 1 : year,\n                daysInPreviousMonth = getDaysInMonth(yearOfPreviousMonth, previousMonth);\n            var cells = days + before,\n                after = cells;\n            while(after > 7) {\n                after -= 7;\n            }\n            cells += 7 - after;\n            var isWeekSelected = false;\n            for (var i = 0, r = 0; i < cells; i++)\n            {\n                var day = new Date(year, month, 1 + (i - before)),\n                    isSelected = isDate(this._d) ? compareDates(day, this._d) : false,\n                    isToday = compareDates(day, now),\n                    hasEvent = opts.events.indexOf(day.toDateString()) !== -1 ? true : false,\n                    isEmpty = i < before || i >= (days + before),\n                    dayNumber = 1 + (i - before),\n                    monthNumber = month,\n                    yearNumber = year,\n                    isStartRange = opts.startRange && compareDates(opts.startRange, day),\n                    isEndRange = opts.endRange && compareDates(opts.endRange, day),\n                    isInRange = opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange,\n                    isDisabled = (opts.minDate && day < opts.minDate) ||\n                                 (opts.maxDate && day > opts.maxDate) ||\n                                 (opts.disableWeekends && isWeekend(day)) ||\n                                 (opts.disableDayFn && opts.disableDayFn(day));\n\n                if (isEmpty) {\n                    if (i < before) {\n                        dayNumber = daysInPreviousMonth + dayNumber;\n                        monthNumber = previousMonth;\n                        yearNumber = yearOfPreviousMonth;\n                    } else {\n                        dayNumber = dayNumber - days;\n                        monthNumber = nextMonth;\n                        yearNumber = yearOfNextMonth;\n                    }\n                }\n\n                var dayConfig = {\n                        day: dayNumber,\n                        month: monthNumber,\n                        year: yearNumber,\n                        hasEvent: hasEvent,\n                        isSelected: isSelected,\n                        isToday: isToday,\n                        isDisabled: isDisabled,\n                        isEmpty: isEmpty,\n                        isStartRange: isStartRange,\n                        isEndRange: isEndRange,\n                        isInRange: isInRange,\n                        showDaysInNextAndPreviousMonths: opts.showDaysInNextAndPreviousMonths,\n                        enableSelectionDaysInNextAndPreviousMonths: opts.enableSelectionDaysInNextAndPreviousMonths\n                    };\n\n                if (opts.pickWholeWeek && isSelected) {\n                    isWeekSelected = true;\n                }\n\n                row.push(renderDay(dayConfig));\n\n                if (++r === 7) {\n                    if (opts.showWeekNumber) {\n                        row.unshift(renderWeek(i - before, month, year));\n                    }\n                    data.push(renderRow(row, opts.isRTL, opts.pickWholeWeek, isWeekSelected));\n                    row = [];\n                    r = 0;\n                    isWeekSelected = false;\n                }\n            }\n            return renderTable(opts, data, randId);\n        },\n\n        isVisible: function()\n        {\n            return this._v;\n        },\n\n        show: function()\n        {\n            if (!this.isVisible()) {\n                this._v = true;\n                this.draw();\n                removeClass(this.el, 'is-hidden');\n                if (this._o.bound) {\n                    addEvent(document, 'click', this._onClick);\n                    this.adjustPosition();\n                }\n                if (typeof this._o.onOpen === 'function') {\n                    this._o.onOpen.call(this);\n                }\n            }\n        },\n\n        hide: function()\n        {\n            var v = this._v;\n            if (v !== false) {\n                if (this._o.bound) {\n                    removeEvent(document, 'click', this._onClick);\n                }\n                this.el.style.position = 'static'; // reset\n                this.el.style.left = 'auto';\n                this.el.style.top = 'auto';\n                addClass(this.el, 'is-hidden');\n                this._v = false;\n                if (v !== undefined && typeof this._o.onClose === 'function') {\n                    this._o.onClose.call(this);\n                }\n            }\n        },\n\n        /**\n         * GAME OVER\n         */\n        destroy: function()\n        {\n            var opts = this._o;\n\n            this.hide();\n            removeEvent(this.el, 'mousedown', this._onMouseDown, true);\n            removeEvent(this.el, 'touchend', this._onMouseDown, true);\n            removeEvent(this.el, 'change', this._onChange);\n            if (opts.keyboardInput) {\n                removeEvent(document, 'keydown', this._onKeyChange);\n            }\n            if (opts.field) {\n                removeEvent(opts.field, 'change', this._onInputChange);\n                if (opts.bound) {\n                    removeEvent(opts.trigger, 'click', this._onInputClick);\n                    removeEvent(opts.trigger, 'focus', this._onInputFocus);\n                    removeEvent(opts.trigger, 'blur', this._onInputBlur);\n                }\n            }\n            if (this.el.parentNode) {\n                this.el.parentNode.removeChild(this.el);\n            }\n        }\n\n    };\n\n    return Pikaday;\n}));\n","/**\n * Adds two numbers together\n * @param {Number} a\n * @param {Number} b\n */\nconst addition = (a, b) => a + b;\n\n/**\n * Returns the sum of all arguments\n * @param  {...Number} numbers\n */\nconst sum = function () {\n  for (var _len = arguments.length, numbers = new Array(_len), _key = 0; _key < _len; _key++) {\n    numbers[_key] = arguments[_key];\n  }\n  return numbers.reduce(addition);\n}; // eslint-disable-line unicorn/no-array-callback-reference\n\n/**\n * Returns the average of all arguments\n * @param  {...Number} numbers\n */\nconst average = function () {\n  return sum(...arguments) / arguments.length;\n};\n\n/**\n * Returns the modulo of n for a divisor.\n *\n * Maps the integer n into the range [0, divisor) when the divisor is positive,\n * and (divisor, 0] when the divisor is negative.\n *\n * This is useful when indexing into an array, to ensure you always stay within\n * the array bounds.\n *\n * See https://2ality.com/2019/08/remainder-vs-modulo.html.\n *\n * @param {number} n The number to mod.\n * @param {number} divisor The divisor (e.g., the length of an array).\n * @returns {number}\n */\nfunction modulo(n, divisor) {\n  const result = (n % divisor + divisor) % divisor;\n  // Never return -0.\n  return result === 0 ? 0 : result;\n}\n\n/**\n * Convert number to engineering format, using SI suffix\n * @param {Number|String} value - Number or Number-convertible String\n * @param {Number} precision\n * @return {String} number, possibly with a suffix\n */\nconst engineeringNotation = function (value) {\n  let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n  const invalidValues = [NaN, Infinity, -Infinity];\n  const num = Number(value);\n  if (invalidValues.includes(num) || invalidValues.includes(Number(precision))) {\n    return num.toString();\n  }\n  const allYourBase = {\n    '-24': 'y',\n    '-21': 'z',\n    '-18': 'a',\n    '-15': 'f',\n    '-12': 'p',\n    '-9': 'n',\n    '-6': 'μ',\n    '-3': 'm',\n    0: '',\n    3: 'k',\n    6: 'M',\n    9: 'G',\n    12: 'T',\n    15: 'P',\n    18: 'E',\n    21: 'Z',\n    24: 'Y'\n  };\n  const exponentialNotation = num.toExponential(precision);\n  const power = exponentialNotation.split('e').map(Number)[1] || 0;\n  if (power < -24 || power > 24) {\n    return exponentialNotation;\n  }\n  const scaledPower = 3 * Math.floor(power / 3);\n  const scaledMantissa = (exponentialNotation / 10 ** scaledPower\n  // strip trailing decimals from floating point rounding errors\n  ).toFixed(precision)\n  // strip trailing 0s after a decimal point\n  .replace(/\\.([1-9]*)0+$/, (_, fractionalDigits) => {\n    if (fractionalDigits) {\n      return `.${fractionalDigits}`;\n    }\n    return '';\n  });\n  return `${scaledMantissa}${allYourBase[scaledPower]}`;\n};\n\n/**\n * Formats a number as a locale-based string using `Intl.NumberFormat`.\n *\n * 2333 -> 2,333\n * 232324 -> 232,324\n *\n * @param {Number|string} value - number to be converted\n * @param {{}?} options - options to be passed to\n * `Intl.NumberFormat` such as `unit` and `style`.\n * @param {String|String[]} locales - If set, forces a different\n * language code from the one currently in the document.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat\n *\n * @returns {String}\n */\nconst formatNumberToLocale = function (value) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  let locales = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n  if (Number.isNaN(Number(value))) {\n    return value;\n  }\n  return new Intl.NumberFormat(locales, options).format(value);\n};\n\n// Converts a value (string, number, etc.) to a number\n// Taken from bootstrap-vue\nconst toFloat = function (value) {\n  let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;\n  const float = parseFloat(value);\n  return Number.isNaN(float) ? defaultValue : float;\n};\n\nexport { addition, average, engineeringNotation, formatNumberToLocale, modulo, sum, toFloat };\n","import { getSel, isElement } from '../../../utils/dom';\n\n// Helper to determine if a there is an active text selection on the document page\n// Used to filter out click events caused by the mouse up at end of selection\n//\n// Accepts an element as only argument to test to see if selection overlaps or is\n// contained within the element\nconst textSelectionActive = function () {\n  let el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n  const sel = getSel();\n  return sel && sel.toString().trim() !== '' && sel.containsNode && isElement(el) ? /* istanbul ignore next */sel.containsNode(el, true) : false;\n};\n\nexport { textSelectionActive };\n","import { extend } from '../../vue';\nimport { NAME_TFOOT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  // Supported values: 'lite', 'dark', or null\n  footVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_TFOOT);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTfoot = /*#__PURE__*/extend({\n  name: NAME_TFOOT,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTableRowGroup: () => this\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    getBvTable: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTable() {\n      return this.getBvTable();\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isTfoot() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader() {\n      return false;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    tfootClasses() {\n      return [this.footVariant ? `thead-${this.footVariant}` : null];\n    },\n    tfootAttrs() {\n      return {\n        ...this.bvAttrs,\n        role: 'rowgroup'\n      };\n    }\n  },\n  render(h) {\n    return h('tfoot', {\n      class: this.tfootClasses,\n      attrs: this.tfootAttrs,\n      // Pass down any native listeners\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});\n\nexport { BTfoot, props };\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"boardEpicSetSubscription\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"subscribedState\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"updateIssuableSubscription\"},\"name\":{\"kind\":\"Name\",\"value\":\"epicSetSubscription\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"groupPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"subscribedState\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"subscribedState\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"issuable\"},\"name\":{\"kind\":\"Name\",\"value\":\"epic\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"subscribed\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":300}};\n    doc.loc.source = {\"body\":\"mutation boardEpicSetSubscription($fullPath: ID!, $iid: ID!, $subscribedState: Boolean!) {\\n  updateIssuableSubscription: epicSetSubscription(\\n    input: { groupPath: $fullPath, iid: $iid, subscribedState: $subscribedState }\\n  ) {\\n    issuable: epic {\\n      id\\n      subscribed\\n    }\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"boardEpicSetSubscription\"] = oneQuery(doc, \"boardEpicSetSubscription\");\n        \n","import { extend } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN_STRING } from '../../../constants/props';\nimport { makeProp } from '../../../utils/props';\n\n// --- Props ---\n\nconst props = {\n  stacked: makeProp(PROP_TYPE_BOOLEAN_STRING, false)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst stackedMixin = extend({\n  props,\n  computed: {\n    isStacked() {\n      const {\n        stacked\n      } = this;\n      // `true` when always stacked, or returns breakpoint specified\n      return stacked === '' ? true : stacked;\n    },\n    isStackedAlways() {\n      return this.isStacked === true;\n    },\n    stackedTableClasses() {\n      const {\n        isStackedAlways\n      } = this;\n      return {\n        'b-table-stacked': isStackedAlways,\n        [`b-table-stacked-${this.stacked}`]: !isStackedAlways && this.isStacked\n      };\n    }\n  }\n});\n\nexport { props, stackedMixin };\n","import { identity } from '../../../utils/identity';\nimport { isArray, isString, isObject, isFunction } from '../../../utils/inspect';\nimport { clone, keys } from '../../../utils/object';\nimport { startCase } from '../../../utils/string';\nimport { IGNORED_FIELD_KEYS } from './constants';\n\n// Private function to massage field entry into common object format\nconst processField = (key, value) => {\n  let field = null;\n  if (isString(value)) {\n    // Label shortcut\n    field = {\n      key,\n      label: value\n    };\n  } else if (isFunction(value)) {\n    // Formatter shortcut\n    field = {\n      key,\n      formatter: value\n    };\n  } else if (isObject(value)) {\n    field = clone(value);\n    field.key = field.key || key;\n  } else if (value !== false) {\n    // Fallback to just key\n    /* istanbul ignore next */\n    field = {\n      key\n    };\n  }\n  return field;\n};\n\n// We normalize fields into an array of objects\n// [ { key:..., label:..., ...}, {...}, ..., {..}]\nconst normalizeFields = (origFields, items) => {\n  const fields = [];\n  if (isArray(origFields)) {\n    // Normalize array Form\n    origFields.filter(identity).forEach(f => {\n      if (isString(f)) {\n        fields.push({\n          key: f,\n          label: startCase(f)\n        });\n      } else if (isObject(f) && f.key && isString(f.key)) {\n        // Full object definition. We use assign so that we don't mutate the original\n        fields.push(clone(f));\n      } else if (isObject(f) && keys(f).length === 1) {\n        // Shortcut object (i.e. { 'foo_bar': 'This is Foo Bar' }\n        const key = keys(f)[0];\n        const field = processField(key, f[key]);\n        if (field) {\n          fields.push(field);\n        }\n      }\n    });\n  }\n\n  // If no field provided, take a sample from first record (if exits)\n  if (fields.length === 0 && isArray(items) && items.length > 0) {\n    const sample = items[0];\n    keys(sample).forEach(k => {\n      if (!IGNORED_FIELD_KEYS[k]) {\n        fields.push({\n          key: k,\n          label: startCase(k)\n        });\n      }\n    });\n  }\n\n  // Ensure we have a unique array of fields and that they have String labels\n  const memo = {};\n  return fields.filter(f => {\n    if (!memo[f.key]) {\n      memo[f.key] = true;\n      f.label = isString(f.label) ? f.label : startCase(f.key);\n      return true;\n    }\n    return false;\n  });\n};\n\nexport { normalizeFields };\n","import { extend } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_STRING } from '../../../constants/props';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { isArray, isString, isFunction } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax } from '../../../utils/math';\nimport { makeModelMixin } from '../../../utils/model';\nimport { toInteger } from '../../../utils/number';\nimport { sortKeys, clone } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { normalizeFields } from './normalize-fields';\n\n// --- Constants ---\n\nconst {\n  mixin: modelMixin,\n  props: modelProps,\n  prop: MODEL_PROP_NAME,\n  event: MODEL_EVENT_NAME\n} = makeModelMixin('value', {\n  type: PROP_TYPE_ARRAY,\n  defaultValue: []\n});\n\n// --- Props ---\n\nconst props = sortKeys({\n  ...modelProps,\n  fields: makeProp(PROP_TYPE_ARRAY, null),\n  // Provider mixin adds in `Function` type\n  items: makeProp(PROP_TYPE_ARRAY, []),\n  // Primary key for record\n  // If provided the value in each row must be unique!\n  primaryKey: makeProp(PROP_TYPE_STRING),\n  // `v-model` for retrieving the current displayed rows\n  [MODEL_PROP_NAME]: makeProp(PROP_TYPE_ARRAY, [])\n});\n\n// --- Mixin ---\n\n// @vue/component\nconst itemsMixin = extend({\n  mixins: [modelMixin, useParentMixin],\n  props,\n  data() {\n    const {\n      items\n    } = this;\n    return {\n      // Our local copy of the items\n      // Must be an array\n      localItems: isArray(items) ? items.slice() : []\n    };\n  },\n  computed: {\n    computedFields() {\n      // We normalize fields into an array of objects\n      // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n      return normalizeFields(this.fields, this.localItems);\n    },\n    computedFieldsObj() {\n      // Fields as a simple lookup hash object\n      // Mainly for formatter lookup and use in `scopedSlots` for convenience\n      // If the field has a formatter, it normalizes formatter to a\n      // function ref or `undefined` if no formatter\n      const {\n        bvParent\n      } = this;\n      return this.computedFields.reduce((obj, f) => {\n        // We use object spread here so we don't mutate the original field object\n        obj[f.key] = clone(f);\n        if (f.formatter) {\n          // Normalize formatter to a function ref or `undefined`\n          let formatter = f.formatter;\n          if (isString(formatter) && isFunction(bvParent[formatter])) {\n            formatter = bvParent[formatter];\n          } else if (!isFunction(formatter)) {\n            /* istanbul ignore next */\n            formatter = undefined;\n          }\n          // Return formatter function or `undefined` if none\n          obj[f.key].formatter = formatter;\n        }\n        return obj;\n      }, {});\n    },\n    computedItems() {\n      const {\n        paginatedItems,\n        sortedItems,\n        filteredItems,\n        localItems\n      } = safeVueInstance(this);\n      // Fallback if various mixins not provided\n      return (paginatedItems || sortedItems || filteredItems || localItems || /* istanbul ignore next */\n      []).slice();\n    },\n    context() {\n      const {\n        perPage,\n        currentPage\n      } = safeVueInstance(this);\n      // Current state of sorting, filtering and pagination props/values\n      return {\n        filter: this.localFilter,\n        sortBy: this.localSortBy,\n        sortDesc: this.localSortDesc,\n        perPage: mathMax(toInteger(perPage, 0), 0),\n        currentPage: mathMax(toInteger(currentPage, 0), 1),\n        apiUrl: this.apiUrl\n      };\n    }\n  },\n  watch: {\n    items(newValue) {\n      // Set `localItems`/`filteredItems` to a copy of the provided array\n      this.localItems = isArray(newValue) ? newValue.slice() : [];\n    },\n    // Watch for changes on `computedItems` and update the `v-model`\n    computedItems(newValue, oldValue) {\n      if (!looseEqual(newValue, oldValue)) {\n        this.$emit(MODEL_EVENT_NAME, newValue);\n      }\n    },\n    // Watch for context changes\n    context(newValue, oldValue) {\n      // Emit context information for external paging/filtering/sorting handling\n      if (!looseEqual(newValue, oldValue)) {\n        this.$emit(EVENT_NAME_CONTEXT_CHANGED, newValue);\n      }\n    }\n  },\n  mounted() {\n    // Initially update the `v-model` of displayed items\n    this.$emit(MODEL_EVENT_NAME, this.computedItems);\n  },\n  methods: {\n    // Method to get the formatter method for a given field key\n    getFieldFormatter(key) {\n      const field = this.computedFieldsObj[key];\n      // `this.computedFieldsObj` has pre-normalized the formatter to a\n      // function ref if present, otherwise `undefined`\n      return field ? field.formatter : undefined;\n    }\n  }\n});\n\nexport { MODEL_EVENT_NAME, MODEL_PROP_NAME, itemsMixin, props };\n","import { extend } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { SLOT_NAME_CUSTOM_FOOT } from '../../../constants/slots';\nimport { makeProp } from '../../../utils/props';\nimport { BTfoot } from '../tfoot';\n\n// --- Props ---\n\nconst props = {\n  footClone: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Any Bootstrap theme variant (or custom)\n  // Falls back to `headRowVariant`\n  footRowVariant: makeProp(PROP_TYPE_STRING),\n  // 'dark', 'light', or `null` (or custom)\n  footVariant: makeProp(PROP_TYPE_STRING),\n  tfootClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tfootTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst tfootMixin = extend({\n  props,\n  methods: {\n    renderTFootCustom() {\n      const h = this.$createElement;\n      if (this.hasNormalizedSlot(SLOT_NAME_CUSTOM_FOOT)) {\n        return h(BTfoot, {\n          class: this.tfootClass || null,\n          props: {\n            footVariant: this.footVariant || this.headVariant || null\n          },\n          key: 'bv-tfoot-custom'\n        }, this.normalizeSlot(SLOT_NAME_CUSTOM_FOOT, {\n          items: this.computedItems.slice(),\n          fields: this.computedFields.slice(),\n          columns: this.computedFields.length\n        }));\n      }\n      return h();\n    },\n    renderTfoot() {\n      // Passing true to renderThead will make it render a tfoot\n      return this.footClone ? this.renderThead(true) : this.renderTFootCustom();\n    }\n  }\n});\n\nexport { props, tfootMixin };\n","import Vue from 'vue';\nimport { parseBoolean } from '~/lib/utils/common_utils';\nimport TimeTracker from './components/time_tracking/time_tracker.vue';\n\nexport default class SidebarMilestone {\n  constructor() {\n    const el = document.querySelector('.js-sidebar-time-tracking-root');\n\n    if (!el) return;\n\n    const { timeEstimate, timeSpent, humanTimeEstimate, humanTimeSpent, limitToHours, iid } =\n      el.dataset;\n\n    // eslint-disable-next-line no-new\n    new Vue({\n      el,\n      name: 'SidebarMilestoneRoot',\n      components: {\n        TimeTracker,\n      },\n      render: (createElement) =>\n        createElement('time-tracker', {\n          props: {\n            limitToHours: parseBoolean(limitToHours),\n            issuableIid: iid.toString(),\n            initialTimeTracking: {\n              timeEstimate: parseInt(timeEstimate, 10),\n              totalTimeSpent: parseInt(timeSpent, 10),\n              humanTimeEstimate,\n              humanTotalTimeSpent: humanTimeSpent,\n            },\n            canAddTimeEntries: false,\n            canSetTimeEstimate: false,\n          },\n        }),\n    });\n  }\n}\n","export const ACTIVE_TAB_CLASSES = Object.freeze(['active', 'gl-tab-nav-item-active']);\n\nexport const ACTIVE_PANEL_CLASS = 'active';\n\nexport const KEY_CODE_LEFT = 'ArrowLeft';\nexport const KEY_CODE_UP = 'ArrowUp';\nexport const KEY_CODE_RIGHT = 'ArrowRight';\nexport const KEY_CODE_DOWN = 'ArrowDown';\n\nexport const ATTR_ARIA_CONTROLS = 'aria-controls';\nexport const ATTR_ARIA_LABELLEDBY = 'aria-labelledby';\nexport const ATTR_ARIA_SELECTED = 'aria-selected';\nexport const ATTR_ROLE = 'role';\nexport const ATTR_TABINDEX = 'tabindex';\n\nexport const TAB_SHOWN_EVENT = 'gl-tab-shown';\n\nexport const HISTORY_TYPE_HASH = 'hash';\nexport const ALLOWED_HISTORY_TYPES = [HISTORY_TYPE_HASH];\n","import { uniqueId } from 'lodash';\nimport { historyReplaceState, NO_SCROLL_TO_HASH_CLASS } from '~/lib/utils/common_utils';\nimport {\n  ACTIVE_TAB_CLASSES,\n  ATTR_ROLE,\n  ATTR_ARIA_CONTROLS,\n  ATTR_TABINDEX,\n  ATTR_ARIA_SELECTED,\n  ATTR_ARIA_LABELLEDBY,\n  ACTIVE_PANEL_CLASS,\n  KEY_CODE_LEFT,\n  KEY_CODE_UP,\n  KEY_CODE_RIGHT,\n  KEY_CODE_DOWN,\n  TAB_SHOWN_EVENT,\n  HISTORY_TYPE_HASH,\n  ALLOWED_HISTORY_TYPES,\n} from './constants';\n\nexport { TAB_SHOWN_EVENT, HISTORY_TYPE_HASH };\n\n/**\n * The `GlTabsBehavior` class adds interactivity to tabs created by the `gl_tabs_nav` and\n * `gl_tab_link_to` Rails helpers.\n *\n * Example using `href` references:\n *\n *     ```haml\n *     = gl_tabs_nav({ class: 'js-my-tabs' }) do\n *       = gl_tab_link_to '#foo', item_active: true do\n *         = _('Foo')\n *       = gl_tab_link_to '#bar' do\n *         = _('Bar')\n *\n *     .tab-content\n *       .tab-pane.active#foo\n *       .tab-pane#bar\n *     ```\n *\n *     ```javascript\n *     import { GlTabsBehavior } from '~/tabs';\n *\n *     const glTabs = new GlTabsBehavior(document.querySelector('.js-my-tabs'));\n *     ```\n *\n * Example using `aria-controls` references:\n *\n *     ```haml\n *     = gl_tabs_nav({ class: 'js-my-tabs' }) do\n *       = gl_tab_link_to '#', item_active: true, 'aria-controls': 'foo' do\n *         = _('Foo')\n *       = gl_tab_link_to '#', 'aria-controls': 'bar' do\n *         = _('Bar')\n *\n *     .tab-content\n *       .tab-pane.active#foo\n *       .tab-pane#bar\n *     ```\n *\n *     ```javascript\n *     import { GlTabsBehavior } from '~/tabs';\n *\n *     const glTabs = new GlTabsBehavior(document.querySelector('.js-my-tabs'));\n *     ```\n *\n * `GlTabsBehavior` can be used to replace Bootstrap tab implementations that cannot\n * easily be rewritten in Vue.\n *\n * NOTE: Do *not* use `GlTabsBehavior` with markup generated by other means, as it may not\n * work correctly.\n *\n * Tab panels must exist somewhere in the page for the tabs to control. Tab panels\n * must:\n *  - be immediate children of a `.tab-content` element\n *  - have the `tab-pane` class\n *  - if the panel is active, have the `active` class\n *  - have a unique `id` attribute\n *\n * In order to associate tabs with panels, the tabs must reference their panel's\n * `id` by having one of the following attributes:\n *  - `href`, e.g., `href=\"#the-panel-id\"` (note the leading `#` in the value)\n *  - `aria-controls`, e.g., `aria-controls=\"the-panel-id\"` (no leading `#`)\n *\n * Exactly one tab/panel must be active in the original markup.\n *\n * Call the `destroy` method on an instance to remove event listeners that were\n * added during construction. Other DOM mutations (like ARIA attributes) are\n * _not_ reverted.\n */\nexport class GlTabsBehavior {\n  /**\n   * Create a GlTabsBehavior instance.\n   *\n   * @param {HTMLElement} el - The element created by the Rails `gl_tabs_nav` helper.\n   * @param {Object} [options]\n   * @param {'hash' | null} [options.history=null] - Sets the type of routing GlTabs will use when navigating between tabs.\n   *    'hash': Updates the URL hash with the current tab ID.\n   *    null: No routing mechanism will be used.\n   */\n  constructor(el, { history = null } = {}) {\n    if (!el) {\n      throw new Error('Cannot instantiate GlTabsBehavior without an element');\n    }\n\n    this.destroyFns = [];\n    this.tabList = el;\n    this.tabs = this.getTabs();\n    this.activeTab = null;\n\n    this.history = ALLOWED_HISTORY_TYPES.includes(history) ? history : null;\n\n    this.setAccessibilityAttrs();\n    this.bindEvents();\n    if (this.history === HISTORY_TYPE_HASH) this.loadInitialTab();\n  }\n\n  setAccessibilityAttrs() {\n    this.tabList.setAttribute(ATTR_ROLE, 'tablist');\n    this.tabs.forEach((tab) => {\n      if (!tab.hasAttribute('id')) {\n        tab.setAttribute('id', uniqueId('gl_tab_nav__tab_'));\n      }\n\n      if (!this.activeTab && tab.classList.contains(ACTIVE_TAB_CLASSES[0])) {\n        this.activeTab = tab;\n        tab.setAttribute(ATTR_ARIA_SELECTED, 'true');\n        tab.removeAttribute(ATTR_TABINDEX);\n      } else {\n        tab.setAttribute(ATTR_ARIA_SELECTED, 'false');\n        tab.setAttribute(ATTR_TABINDEX, '-1');\n      }\n\n      tab.setAttribute(ATTR_ROLE, 'tab');\n      tab.closest('.nav-item').setAttribute(ATTR_ROLE, 'presentation');\n\n      const tabPanel = this.getPanelForTab(tab);\n      if (!tab.hasAttribute(ATTR_ARIA_CONTROLS)) {\n        tab.setAttribute(ATTR_ARIA_CONTROLS, tabPanel.id);\n      }\n\n      tabPanel.classList.add(NO_SCROLL_TO_HASH_CLASS);\n      tabPanel.setAttribute(ATTR_ROLE, 'tabpanel');\n      tabPanel.setAttribute(ATTR_ARIA_LABELLEDBY, tab.id);\n    });\n  }\n\n  bindEvents() {\n    this.tabs.forEach((tab) => {\n      this.bindEvent(tab, 'click', (event) => {\n        event.preventDefault();\n\n        if (tab !== this.activeTab) {\n          this.activateTab(tab);\n        }\n      });\n\n      this.bindEvent(tab, 'keydown', (event) => {\n        const { code } = event;\n        if (code === KEY_CODE_UP || code === KEY_CODE_LEFT) {\n          event.preventDefault();\n          this.activatePreviousTab();\n        } else if (code === KEY_CODE_DOWN || code === KEY_CODE_RIGHT) {\n          event.preventDefault();\n          this.activateNextTab();\n        }\n      });\n    });\n  }\n\n  bindEvent(el, ...args) {\n    el.addEventListener(...args);\n\n    this.destroyFns.push(() => {\n      el.removeEventListener(...args);\n    });\n  }\n\n  loadInitialTab() {\n    const tab = this.tabList.querySelector(`a[href=\"${CSS.escape(window.location.hash)}\"]`);\n    this.activateTab(tab || this.activeTab);\n  }\n\n  activatePreviousTab() {\n    const currentTabIndex = this.tabs.indexOf(this.activeTab);\n\n    if (currentTabIndex <= 0) return;\n\n    const previousTab = this.tabs[currentTabIndex - 1];\n    this.activateTab(previousTab);\n    previousTab.focus();\n  }\n\n  activateNextTab() {\n    const currentTabIndex = this.tabs.indexOf(this.activeTab);\n\n    if (currentTabIndex >= this.tabs.length - 1) return;\n\n    const nextTab = this.tabs[currentTabIndex + 1];\n    this.activateTab(nextTab);\n    nextTab.focus();\n  }\n\n  getTabs() {\n    return Array.from(this.tabList.querySelectorAll('.gl-tab-nav-item'));\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  getPanelForTab(tab) {\n    const ariaControls = tab.getAttribute(ATTR_ARIA_CONTROLS);\n\n    if (ariaControls) {\n      return document.querySelector(`#${ariaControls}`);\n    }\n\n    return document.querySelector(tab.getAttribute('href'));\n  }\n\n  activateTab(tabToActivate) {\n    // Deactivate active tab first\n    this.activeTab.setAttribute(ATTR_ARIA_SELECTED, 'false');\n    this.activeTab.setAttribute(ATTR_TABINDEX, '-1');\n    this.activeTab.classList.remove(...ACTIVE_TAB_CLASSES);\n\n    const activePanel = this.getPanelForTab(this.activeTab);\n    activePanel.classList.remove(ACTIVE_PANEL_CLASS);\n\n    // Now activate the given tab/panel\n    tabToActivate.setAttribute(ATTR_ARIA_SELECTED, 'true');\n    tabToActivate.removeAttribute(ATTR_TABINDEX);\n    tabToActivate.classList.add(...ACTIVE_TAB_CLASSES);\n\n    const tabPanel = this.getPanelForTab(tabToActivate);\n    tabPanel.classList.add(ACTIVE_PANEL_CLASS);\n\n    if (this.history === HISTORY_TYPE_HASH) historyReplaceState(tabToActivate.getAttribute('href'));\n    this.activeTab = tabToActivate;\n\n    this.dispatchTabShown(tabToActivate, tabPanel);\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  dispatchTabShown(tab, activeTabPanel) {\n    const event = new CustomEvent(TAB_SHOWN_EVENT, {\n      bubbles: true,\n      detail: {\n        activeTabPanel,\n      },\n    });\n\n    tab.dispatchEvent(event);\n  }\n\n  destroy() {\n    this.destroyFns.forEach((destroy) => destroy());\n  }\n}\n","import { invert } from 'lodash';\nimport { s__, __, sprintf } from '~/locale';\n\nexport const defaultEpicSort = 'TITLE_ASC';\n\nexport const epicIidPattern = /^&(?<iid>\\d+)$/;\n\nexport const dateTypes = {\n  start: 'startDate',\n  due: 'dueDate',\n};\n\nexport const dateFields = {\n  [dateTypes.start]: {\n    isDateFixed: 'startDateIsFixed',\n    dateFixed: 'startDateFixed',\n    dateFromMilestones: 'startDateFromMilestones',\n  },\n  [dateTypes.due]: {\n    isDateFixed: 'dueDateIsFixed',\n    dateFixed: 'dueDateFixed',\n    dateFromMilestones: 'dueDateFromMilestones',\n  },\n};\n\nexport const Tracking = {\n  editEvent: 'click_edit_button',\n  rightSidebarLabel: 'right_sidebar',\n};\n\nexport const noAttributeId = null;\n\nexport const IssuableAttributeType = {\n  Milestone: 'milestone',\n};\n\nexport const LocalizedIssuableAttributeType = {\n  Milestone: s__('Issuable|milestone'),\n};\n\nexport const IssuableAttributeTypeKeyMap = invert(IssuableAttributeType);\n\nexport const IssuableAttributeState = {\n  [IssuableAttributeType.Milestone]: 'active',\n};\n\nexport const todoMutationTypes = {\n  create: 'create',\n  markDone: 'mark-done',\n};\n\nexport function dropdowni18nText(issuableAttribute, issuableType) {\n  return {\n    noAttribute: sprintf(s__('DropdownWidget|No %{issuableAttribute}'), {\n      issuableAttribute,\n    }),\n    assignAttribute: sprintf(s__('DropdownWidget|Select %{issuableAttribute}'), {\n      issuableAttribute,\n    }),\n    noAttributesFound: sprintf(s__('DropdownWidget|No %{issuableAttribute} found'), {\n      issuableAttribute,\n    }),\n    updateError: sprintf(\n      s__(\n        'DropdownWidget|Failed to set %{issuableAttribute} on this %{issuableType}. Please try again.',\n      ),\n      { issuableAttribute, issuableType },\n    ),\n    listFetchError: sprintf(\n      s__(\n        'DropdownWidget|Failed to fetch the %{issuableAttribute} for this %{issuableType}. Please try again.',\n      ),\n      { issuableAttribute, issuableType },\n    ),\n    currentFetchError: sprintf(\n      s__(\n        'DropdownWidget|An error occurred while fetching the assigned %{issuableAttribute} of the selected %{issuableType}.',\n      ),\n      { issuableAttribute, issuableType },\n    ),\n    noPermissionToView: sprintf(\n      s__(\"DropdownWidget|You don't have permission to view this %{issuableAttribute}.\"),\n      { issuableAttribute },\n    ),\n    editConfirmation: sprintf(\n      s__(\n        'DropdownWidget|You do not have permission to view the currently assigned %{issuableAttribute} and will not be able to choose it again if you reassign it.',\n      ),\n      {\n        issuableAttribute,\n      },\n    ),\n    editConfirmationCta: sprintf(s__('DropdownWidget|Edit %{issuableAttribute}'), {\n      issuableAttribute,\n    }),\n    editConfirmationCancel: s__('DropdownWidget|Cancel'),\n  };\n}\n\nexport const statusDropdownOptions = [\n  {\n    text: __('Open'),\n    value: 'reopen',\n  },\n  {\n    text: __('Closed'),\n    value: 'close',\n  },\n];\n\nexport const subscriptionsDropdownOptions = [\n  {\n    text: __('Subscribe'),\n    value: 'subscribe',\n  },\n  {\n    text: __('Unsubscribe'),\n    value: 'unsubscribe',\n  },\n];\n\nexport const INCIDENT_SEVERITY = {\n  CRITICAL: {\n    value: 'CRITICAL',\n    icon: 'critical',\n    label: s__('IncidentManagement|Critical - S1'),\n  },\n  HIGH: {\n    value: 'HIGH',\n    icon: 'high',\n    label: s__('IncidentManagement|High - S2'),\n  },\n  MEDIUM: {\n    value: 'MEDIUM',\n    icon: 'medium',\n    label: s__('IncidentManagement|Medium - S3'),\n  },\n  LOW: {\n    value: 'LOW',\n    icon: 'low',\n    label: s__('IncidentManagement|Low - S4'),\n  },\n  UNKNOWN: {\n    value: 'UNKNOWN',\n    icon: 'unknown',\n    label: s__('IncidentManagement|Unknown'),\n  },\n};\n\nexport const MILESTONE_STATE = {\n  ACTIVE: 'active',\n  CLOSED: 'closed',\n};\n\nexport const SEVERITY_I18N = {\n  UPDATE_SEVERITY_ERROR: s__('SeverityWidget|There was an error while updating severity.'),\n  TRY_AGAIN: __('Please try again'),\n  EDIT: __('Edit'),\n  SEVERITY: s__('SeverityWidget|Severity'),\n  SEVERITY_VALUE: s__('SeverityWidget|Severity: %{severity}'),\n};\n\nexport const STATUS_TRIGGERED = 'TRIGGERED';\nexport const STATUS_ACKNOWLEDGED = 'ACKNOWLEDGED';\nexport const STATUS_RESOLVED = 'RESOLVED';\n\nexport const STATUS_TRIGGERED_LABEL = s__('IncidentManagement|Triggered');\nexport const STATUS_ACKNOWLEDGED_LABEL = s__('IncidentManagement|Acknowledged');\nexport const STATUS_RESOLVED_LABEL = s__('IncidentManagement|Resolved');\n\nexport const STATUS_LABELS = {\n  [STATUS_TRIGGERED]: STATUS_TRIGGERED_LABEL,\n  [STATUS_ACKNOWLEDGED]: STATUS_ACKNOWLEDGED_LABEL,\n  [STATUS_RESOLVED]: STATUS_RESOLVED_LABEL,\n};\n\nexport const INCIDENTS_I18N = {\n  fetchError: s__(\n    'IncidentManagement|An error occurred while fetching the incident status. Please reload the page.',\n  ),\n  title: s__('IncidentManagement|Status'),\n  updateError: s__(\n    'IncidentManagement|An error occurred while updating the incident status. Please reload the page and try again.',\n  ),\n};\n","import { createAlert } from '~/alert';\nimport { sanitize } from '~/lib/dompurify';\nimport axios from '~/lib/utils/axios_utils';\nimport { __ } from '~/locale';\nimport { GlTabsBehavior, TAB_SHOWN_EVENT, HISTORY_TYPE_HASH } from '~/tabs';\n\nexport default class Milestone {\n  constructor() {\n    this.tabsEl = document.querySelector('.js-milestone-tabs');\n    this.loadedTabs = new WeakSet();\n\n    this.bindTabsSwitching();\n    // eslint-disable-next-line no-new\n    new GlTabsBehavior(this.tabsEl, { history: HISTORY_TYPE_HASH });\n  }\n\n  bindTabsSwitching() {\n    this.tabsEl.addEventListener(TAB_SHOWN_EVENT, (event) => {\n      const tab = event.target;\n      const { activeTabPanel } = event.detail;\n      this.loadTab(tab, activeTabPanel);\n    });\n  }\n\n  loadTab(tab, tabPanel) {\n    const { endpoint } = tab.dataset;\n\n    if (endpoint && !this.loadedTabs.has(tab)) {\n      axios\n        .get(endpoint)\n        .then(({ data }) => {\n          // eslint-disable-next-line no-param-reassign\n          tabPanel.innerHTML = sanitize(data.html);\n          this.loadedTabs.add(tab);\n        })\n        .catch(() =>\n          createAlert({\n            message: __('Error loading milestone tab'),\n          }),\n        );\n    }\n  }\n}\n","// These utility methods come from the Gitlab repo; app/assets/javascripts/lib/utils/datetime_utility.js\n\n/**\n * This method allows you to create new Date instance from existing\n * date instance without keeping the reference.\n *\n * @param {Date} date\n */\nconst newDate = date => date instanceof Date ? new Date(date.getTime()) : new Date();\n\n/**\n * Computes the difference between 2 date objects.\n *\n * @param {Date} a the start date\n * @param {Date} b the end date\n * @example\n * // returns 5\n * getDayDifference(new Date('2020-08-10'), new Date('2020-08-15'));\n * @returns {Number} Number of days between the 2 dates\n */\nconst getDayDifference = (a, b) => {\n  const millisecondsPerDay = 1000 * 60 * 60 * 24;\n  const date1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());\n  const date2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());\n  return Math.floor((date2 - date1) / millisecondsPerDay);\n};\n\n/**\n * Subtracts a given number of days from a given date and returns the new date.\n *\n * @param {Date} date the date that we will substract days from\n * @param {Number} daysInPast number of days that are subtracted from a given date\n * @example\n * // returns Mon Aug 10 2020 00:00:00\n * getDateInPast(new Date('2020-08-15'), 5);\n * @returns {Date} Date in past as Date object\n */\nconst getDateInPast = (date, daysInPast) => new Date(newDate(date).setDate(date.getDate() - daysInPast));\n\n/**\n * Adds a given number of days to a given date and returns the new date.\n *\n * @param {Date} date the date that we will add days to\n * @param {Number} daysInFuture number of days that are added to a given date\n * @example\n * // returns Mon Aug 15 2020 00:00:00\n * getDateInFuture(new Date('2020-08-10'), 5);\n * @returns {Date} Date in future as Date object\n */\nconst getDateInFuture = (date, daysInFuture) => new Date(newDate(date).setDate(date.getDate() + daysInFuture));\n\n/**\n * Are the given two dates equal\n *\n * @param {Date} date1\n * @param {Date} date2\n * @returns {Boolean}\n */\nconst areDatesEqual = (date1, date2) => Boolean(date1 && date2 && new Date(date1).getTime() === new Date(date2).getTime());\n\nexport { areDatesEqual, getDateInFuture, getDateInPast, getDayDifference, newDate };\n","import { translate } from '../../../utils/i18n';\nimport { progressBarVariantOptions } from '../../../utils/constants';\nimport { toFloat } from '../../../utils/number_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst backgroundClasses = {\n  [progressBarVariantOptions.primary]: 'gl-progress-bar-primary',\n  [progressBarVariantOptions.success]: 'gl-progress-bar-success',\n  [progressBarVariantOptions.danger]: 'gl-progress-bar-danger',\n  [progressBarVariantOptions.warning]: 'gl-progress-bar-warning'\n};\nvar script = {\n  name: 'GlProgressBar',\n  props: {\n    ariaLabel: {\n      type: String,\n      required: false,\n      default: translate('GlProgressBar.ariaLabel', 'Progress bar')\n    },\n    value: {\n      type: [Number, String],\n      required: false,\n      default: 0\n    },\n    variant: {\n      type: String,\n      required: false,\n      default: 'primary',\n      validator: value => Object.keys(progressBarVariantOptions).includes(value)\n    },\n    max: {\n      type: [Number, String],\n      required: false,\n      default: 100\n    },\n    height: {\n      type: String,\n      required: false,\n      default: null\n    }\n  },\n  computed: {\n    progressHeight() {\n      return {\n        height: this.height\n      };\n    },\n    computedValue() {\n      return toFloat(this.value, 0);\n    },\n    computedMax() {\n      const max = toFloat(this.max, 100);\n      return max > 0 ? max : 100;\n    },\n    progressBarStyles() {\n      return {\n        transform: `scaleX(${this.computedValue / this.computedMax})`\n      };\n    },\n    classes() {\n      return ['gl-progress', backgroundClasses[this.variant]];\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-progress-bar progress\",style:(_vm.progressHeight)},[_c('div',{class:_vm.classes,style:(_vm.progressBarStyles),attrs:{\"role\":\"progressbar\",\"aria-label\":_vm.ariaLabel,\"aria-valuemin\":\"0\",\"aria-valuemax\":String(_vm.computedMax),\"aria-valuenow\":_vm.computedValue}})])};\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 { closest, getAttr, getById, select, matches } from '../../../utils/dom';\nimport { EVENT_FILTER } from './constants';\n\nconst TABLE_TAG_NAMES = ['TD', 'TH', 'TR'];\n\n// Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\nconst filterEvent = event => {\n  // Exit early when we don't have a target element\n  if (!event || !event.target) {\n    /* istanbul ignore next */\n    return false;\n  }\n  const el = event.target;\n  // Exit early when element is disabled or a table element\n  if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n    return false;\n  }\n  // Ignore the click when it was inside a dropdown menu\n  if (closest('.dropdown-menu', el)) {\n    return true;\n  }\n  const label = el.tagName === 'LABEL' ? el : closest('label', el);\n  // If the label's form control is not disabled then we don't propagate event\n  // Modern browsers have `label.control` that references the associated input, but IE 11\n  // does not have this property on the label element, so we resort to DOM lookups\n  if (label) {\n    const labelFor = getAttr(label, 'for');\n    const input = labelFor ? getById(labelFor) : select('input, select, textarea', label);\n    if (input && !input.disabled) {\n      return true;\n    }\n  }\n  // Otherwise check if the event target matches one of the selectors in the\n  // event filter (i.e. anchors, non disabled inputs, etc.)\n  // Return `true` if we should ignore the event\n  return matches(el, EVENT_FILTER);\n};\n\nexport { filterEvent };\n","var baseForOwn = require('./_baseForOwn');\n\n/**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseInverter(object, setter, iteratee, accumulator) {\n  baseForOwn(object, function(value, key, object) {\n    setter(accumulator, iteratee(value), key, object);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseInverter;\n","// Constants used by table helpers\n\nconst FIELD_KEY_CELL_VARIANT = '_cellVariants';\nconst FIELD_KEY_ROW_VARIANT = '_rowVariant';\nconst FIELD_KEY_SHOW_DETAILS = '_showDetails';\n\n// Object of item keys that should be ignored for headers and\n// stringification and filter events\nconst IGNORED_FIELD_KEYS = [FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS].reduce((result, key) => ({\n  ...result,\n  [key]: true\n}), {});\n\n// Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\nconst EVENT_FILTER = ['a', 'a *',\n// Include content inside links\n'button', 'button *',\n// Include content inside buttons\n'input:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'textarea:not(.disabled):not([disabled])', '[role=\"link\"]', '[role=\"link\"] *', '[role=\"button\"]', '[role=\"button\"] *', '[tabindex]:not(.disabled):not([disabled])'].join(',');\n\nexport { EVENT_FILTER, FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS, IGNORED_FIELD_KEYS };\n","import { extend } from '../../../vue';\nimport { SLOT_NAME_TABLE_COLGROUP } from '../../../constants/slots';\n\n// --- Props ---\n\nconst props = {};\n\n// --- Mixin ---\n\n// @vue/component\nconst colgroupMixin = extend({\n  methods: {\n    renderColgroup() {\n      const {\n        computedFields: fields\n      } = this;\n      const h = this.$createElement;\n      let $colgroup = h();\n      if (this.hasNormalizedSlot(SLOT_NAME_TABLE_COLGROUP)) {\n        $colgroup = h('colgroup', {\n          key: 'colgroup'\n        }, [this.normalizeSlot(SLOT_NAME_TABLE_COLGROUP, {\n          columns: fields.length,\n          fields\n        })]);\n      }\n      return $colgroup;\n    }\n  }\n});\n\nexport { colgroupMixin, props };\n","import { formatNumber, sprintf, __ } from '~/locale';\nimport { BYTES_IN_KIB, THOUSAND, MILLION } from './constants';\n\n/**\n * Utility function that calculates KiB of the given bytes.\n *\n * @param  {Number} number bytes\n * @return {Number}        KiB\n */\nexport function bytesToKiB(number) {\n  return number / BYTES_IN_KIB;\n}\n\n/**\n * Utility function that calculates MiB of the given bytes.\n *\n * @param  {Number} number bytes\n * @return {Number}        MiB\n */\nexport function bytesToMiB(number) {\n  return number / (BYTES_IN_KIB * BYTES_IN_KIB);\n}\n\n/**\n * Utility function that calculates GiB of the given bytes.\n * @param {Number} number\n * @returns {Number}\n */\nexport function bytesToGiB(number) {\n  return number / (BYTES_IN_KIB * BYTES_IN_KIB * BYTES_IN_KIB);\n}\n\n/**\n * Formats the bytes in number into a more understandable\n * representation. Returns an array with the first value being the human size\n * and the second value being the label (e.g., [1.5, 'KiB']).\n *\n * @param {number} size\n * @param {number} [digits=2] - The number of digits to appear after the decimal point\n * @param {string} locale\n * @returns {string[]}\n */\nexport function numberToHumanSizeSplit({ size, digits = 2, locale } = {}) {\n  const abs = Math.abs(size);\n  const digitsOptions = { minimumFractionDigits: digits, maximumFractionDigits: digits };\n  const formatNumberWithLocaleAndDigits = (n) => formatNumber(n, digitsOptions, locale);\n\n  if (abs < BYTES_IN_KIB) {\n    return [size.toString(), __('B')];\n  }\n  if (abs < BYTES_IN_KIB ** 2) {\n    return [formatNumberWithLocaleAndDigits(bytesToKiB(size)), __('KiB')];\n  }\n  if (abs < BYTES_IN_KIB ** 3) {\n    return [formatNumberWithLocaleAndDigits(bytesToMiB(size)), __('MiB')];\n  }\n  return [formatNumberWithLocaleAndDigits(bytesToGiB(size)), __('GiB')];\n}\n\n/**\n * Port of rails number_to_human_size\n * Formats the bytes in number into a more understandable\n * representation (e.g., giving it 1536 yields 1.5 KiB).\n *\n * @param {number} size\n * @param {number} [digits=2] - The number of digits to appear after the decimal point\n * @param {string} locale\n * @returns {string}\n */\nexport function numberToHumanSize(size, digits = 2, locale) {\n  const [humanSize, label] = numberToHumanSizeSplit({ size, digits, locale });\n\n  switch (label) {\n    case __('B'):\n      return sprintf(__('%{size} B'), { size: humanSize });\n    case __('KiB'):\n      return sprintf(__('%{size} KiB'), { size: humanSize });\n    case __('MiB'):\n      return sprintf(__('%{size} MiB'), { size: humanSize });\n    case __('GiB'):\n      return sprintf(__('%{size} GiB'), { size: humanSize });\n    default:\n      return '';\n  }\n}\n\n/**\n * Converts a number to kilos or megas.\n *\n * For example:\n * - 123 becomes 123\n * - 123456 becomes 123.4k\n * - 123456789 becomes 123.4m\n *\n * @param number Number to format\n * @param digits The number of digits to appear after the decimal point\n * @param uppercase Whether to use uppercase suffix (K, M)\n * @return {string} Formatted number\n */\nexport function numberToMetricPrefix(number, uppercase = false) {\n  if (number < THOUSAND) {\n    return number.toString();\n  }\n  const digits = 1;\n  if (number < MILLION) {\n    return `${Number((number / THOUSAND).toFixed(digits))}${uppercase ? 'K' : 'k'}`;\n  }\n  return `${Number((number / MILLION).toFixed(digits))}${uppercase ? 'M' : 'm'}`;\n}\n/**\n * A simple method that returns the value of a + b\n * It seems unessesary, but when combined with a reducer it\n * adds up all the values in an array.\n *\n * e.g. `[1, 2, 3, 4, 5].reduce(sum) // => 15`\n *\n * @param {Float} a\n * @param {Float} b\n * @example\n * // return 15\n * [1, 2, 3, 4, 5].reduce(sum);\n *\n * // returns 6\n * Object.values([{a: 1, b: 2, c: 3].reduce(sum);\n * @returns {Float} The summed value\n */\nexport const sum = (a = 0, b = 0) => a + b;\n\n/**\n * Checks if the provided number is odd\n * @param {Int} number\n */\nexport const isOdd = (number = 0) => number % 2;\n\n/**\n * Computes the median for a given array.\n * @param {Array} arr An array of numbers\n * @returns {Number} The median of the given array\n */\nexport const median = (arr) => {\n  const middle = Math.floor(arr.length / 2);\n  const sorted = arr.sort((a, b) => a - b);\n  return arr.length % 2 !== 0 ? sorted[middle] : (sorted[middle - 1] + sorted[middle]) / 2;\n};\n\n/**\n * Computes the change from one value to the other as a percentage.\n * @param {Number} firstY\n * @param {Number} lastY\n * @returns {Number}\n */\nexport const changeInPercent = (firstY, lastY) => {\n  if (firstY === lastY) {\n    return 0;\n  }\n\n  return Math.round(((lastY - firstY) / Math.abs(firstY)) * 100);\n};\n\n/**\n * Computes and formats the change from one value to the other as a percentage.\n * Prepends the computed percentage with either \"+\" or \"-\" to indicate an in- or decrease and\n * returns a given string if the result is not finite (for example, if the first value is \"0\").\n * @param firstY\n * @param lastY\n * @param nonFiniteResult\n * @returns {String}\n */\nexport const formattedChangeInPercent = (firstY, lastY, { nonFiniteResult = '-' } = {}) => {\n  const change = changeInPercent(firstY, lastY);\n\n  if (!Number.isFinite(change)) {\n    return nonFiniteResult;\n  }\n\n  return `${change >= 0 ? '+' : ''}${change}%`;\n};\n\n/**\n * Checks whether a value is numerical in nature by converting it using parseInt\n *\n * Example outcomes:\n *   - isNumeric(100) = true\n *   - isNumeric('100') = true\n *   - isNumeric(1.0) = true\n *   - isNumeric('1.0') = true\n *   - isNumeric('abc100') = false\n *   - isNumeric('abc') = false\n *   - isNumeric(true) = false\n *   - isNumeric(undefined) = false\n *   - isNumeric(null) = false\n *\n * @param value\n * @returns {boolean}\n */\nexport const isNumeric = (value) => {\n  return !Number.isNaN(parseInt(value, 10));\n};\n\nconst numberRegex = /^[0-9]+$/;\n\n/**\n * Checks whether the value is a positive number or 0, or a string with equivalent value\n *\n * @param value\n * @return {boolean}\n */\nexport const isPositiveInteger = (value) => numberRegex.test(value);\n\n/**\n * Splits a number into an integer and decimal component\n * returns an object with the integer and decimal values extracted\n *\n * @param value\n * @return {Object}\n */\nexport const splitDecimalNumber = (value) => {\n  if (isNumeric(value)) {\n    const parts = String(value).split('.');\n    if (value === 0) return { integer: '0', decimal: '0' };\n\n    if (parts.length) {\n      return parts.length > 1\n        ? { integer: parts[0], decimal: parts[1] }\n        : { integer: parts[0], decimal: null };\n    }\n  }\n  return { integer: null, decimal: null };\n};\n\n/**\n * Calculates the number of digits after the decimal place\n *\n * @param num - any numeric value\n * @return number of digits after the decimal (if any)\n */\nexport const countFloatingPointDigits = (num = null) => {\n  if (!num || !isNumeric(num)) return 0;\n\n  const { decimal } = splitDecimalNumber(num);\n  return String(decimal).length;\n};\n","import { extend } from '../../vue';\nimport { NAME_THEAD } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  // Also sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n  // Supported values: 'lite', 'dark', or `null`\n  headVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_THEAD);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BThead = /*#__PURE__*/extend({\n  name: NAME_THEAD,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTableRowGroup: () => this\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    getBvTable: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTable() {\n      return this.getBvTable();\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isThead() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky headers only apply to cells in table `thead`\n    isStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    theadClasses() {\n      return [this.headVariant ? `thead-${this.headVariant}` : null];\n    },\n    theadAttrs() {\n      return {\n        role: 'rowgroup',\n        ...this.bvAttrs\n      };\n    }\n  },\n  render(h) {\n    return h('thead', {\n      class: this.theadClasses,\n      attrs: this.theadAttrs,\n      // Pass down any native listeners\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});\n\nexport { BThead, props };\n","import { extend } from '../../../vue';\nimport { EVENT_NAME_HEAD_CLICKED } from '../../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../../constants/key-codes';\nimport { PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { SLOT_NAME_THEAD_TOP } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { htmlOrText } from '../../../utils/html';\nimport { identity } from '../../../utils/identity';\nimport { isUndefinedOrNull } from '../../../utils/inspect';\nimport { noop } from '../../../utils/noop';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { startCase } from '../../../utils/string';\nimport { BThead } from '../thead';\nimport { BTfoot } from '../tfoot';\nimport { BTr } from '../tr';\nimport { BTh } from '../th';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active';\n\n// --- Helper methods ---\n\nconst getHeadSlotName = value => `head(${value || ''})`;\nconst getFootSlotName = value => `foot(${value || ''})`;\n\n// --- Props ---\n\nconst props = {\n  // Any Bootstrap theme variant (or custom)\n  headRowVariant: makeProp(PROP_TYPE_STRING),\n  // 'light', 'dark' or `null` (or custom)\n  headVariant: makeProp(PROP_TYPE_STRING),\n  theadClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  theadTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst theadMixin = extend({\n  props,\n  methods: {\n    fieldClasses(field) {\n      // Header field (<th>) classes\n      return [field.class ? field.class : '', field.thClass ? field.thClass : ''];\n    },\n    headClicked(event, field, isFoot) {\n      if (this.stopIfBusy && this.stopIfBusy(event)) {\n        // If table is busy (via provider) then don't propagate\n        return;\n      } else if (filterEvent(event)) {\n        // Clicked on a non-disabled control so ignore\n        return;\n      } else if (textSelectionActive(this.$el)) {\n        // User is selecting text, so ignore\n        /* istanbul ignore next: JSDOM doesn't support getSelection() */\n        return;\n      }\n      stopEvent(event);\n      this.$emit(EVENT_NAME_HEAD_CLICKED, field.key, field, event, isFoot);\n    },\n    renderThead() {\n      let isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      const {\n        computedFields: fields,\n        isSortable,\n        isSelectable,\n        headVariant,\n        footVariant,\n        headRowVariant,\n        footRowVariant\n      } = safeVueInstance(this);\n      const h = this.$createElement;\n\n      // In always stacked mode, we don't bother rendering the head/foot\n      // Or if no field headings (empty table)\n      if (this.isStackedAlways || fields.length === 0) {\n        return h();\n      }\n      const hasHeadClickListener = isSortable || this.hasListener(EVENT_NAME_HEAD_CLICKED);\n\n      // Reference to `selectAllRows` and `clearSelected()`, if table is selectable\n      const selectAllRows = isSelectable ? this.selectAllRows : noop;\n      const clearSelected = isSelectable ? this.clearSelected : noop;\n\n      // Helper function to generate a field <th> cell\n      const makeCell = (field, colIndex) => {\n        const {\n          label,\n          labelHtml,\n          variant,\n          stickyColumn,\n          key\n        } = field;\n        let ariaLabel = null;\n        if (!field.label.trim() && !field.headerTitle) {\n          // In case field's label and title are empty/blank\n          // We need to add a hint about what the column is about for non-sighted users\n          /* istanbul ignore next */\n          ariaLabel = startCase(field.key);\n        }\n        const on = {};\n        if (hasHeadClickListener) {\n          on.click = event => {\n            this.headClicked(event, field, isFoot);\n          };\n          on.keydown = event => {\n            const keyCode = event.keyCode;\n            if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n              this.headClicked(event, field, isFoot);\n            }\n          };\n        }\n        const sortAttrs = isSortable ? this.sortTheadThAttrs(key, field, isFoot) : {};\n        const sortClass = isSortable ? this.sortTheadThClasses(key, field, isFoot) : null;\n        const sortLabel = isSortable ? this.sortTheadThLabel(key, field, isFoot) : null;\n        const data = {\n          class: [{\n            // We need to make the header cell relative when we have\n            // a `.gl-sr-only` sort label to work around overflow issues\n            'gl-relative': sortLabel\n          }, this.fieldClasses(field), sortClass],\n          props: {\n            variant,\n            stickyColumn\n          },\n          style: field.thStyle || {},\n          attrs: {\n            // We only add a `tabindex` of `0` if there is a head-clicked listener\n            // and the current field is sortable\n            tabindex: hasHeadClickListener && field.sortable ? '0' : null,\n            abbr: field.headerAbbr || null,\n            title: field.headerTitle || null,\n            'aria-colindex': colIndex + 1,\n            'aria-label': ariaLabel,\n            ...this.getThValues(null, key, field.thAttr, isFoot ? 'foot' : 'head', {}),\n            ...sortAttrs\n          },\n          on,\n          key\n        };\n\n        // Handle edge case where in-document templates are used with new\n        // `v-slot:name` syntax where the browser lower-cases the v-slot's\n        // name (attributes become lower cased when parsed by the browser)\n        // We have replaced the square bracket syntax with round brackets\n        // to prevent confusion with dynamic slot names\n        let slotNames = [getHeadSlotName(key), getHeadSlotName(key.toLowerCase()), getHeadSlotName()];\n        // Footer will fallback to header slot names\n        if (isFoot) {\n          slotNames = [getFootSlotName(key), getFootSlotName(key.toLowerCase()), getFootSlotName(), ...slotNames];\n        }\n        const scope = {\n          label,\n          column: key,\n          field,\n          isFoot,\n          // Add in row select methods\n          selectAllRows,\n          clearSelected\n        };\n        const $content = this.normalizeSlot(slotNames, scope) || h('div', {\n          domProps: htmlOrText(labelHtml, label)\n        });\n        const $srLabel = sortLabel ? h('span', {\n          staticClass: 'gl-sr-only'\n        }, ` (${sortLabel})`) : null;\n\n        // Return the header cell\n        return h(BTh, data, [$content, $srLabel].filter(identity));\n      };\n\n      // Generate the array of <th> cells\n      const $cells = fields.map(makeCell).filter(identity);\n\n      // Generate the row(s)\n      const $trs = [];\n      if (isFoot) {\n        $trs.push(h(BTr, {\n          class: this.tfootTrClass,\n          props: {\n            variant: isUndefinedOrNull(footRowVariant) ? headRowVariant : /* istanbul ignore next */footRowVariant\n          }\n        }, $cells));\n      } else {\n        const scope = {\n          columns: fields.length,\n          fields,\n          // Add in row select methods\n          selectAllRows,\n          clearSelected\n        };\n        $trs.push(this.normalizeSlot(SLOT_NAME_THEAD_TOP, scope) || h());\n        $trs.push(h(BTr, {\n          class: this.theadTrClass,\n          props: {\n            variant: headRowVariant\n          }\n        }, $cells));\n      }\n      return h(isFoot ? BTfoot : BThead, {\n        class: (isFoot ? this.tfootClass : this.theadClass) || null,\n        props: isFoot ? {\n          footVariant: footVariant || headVariant || null\n        } : {\n          headVariant: headVariant || null\n        },\n        key: isFoot ? 'bv-tfoot' : 'bv-thead'\n      }, $trs);\n    }\n  }\n});\n\nexport { props, theadMixin };\n","import { extend } from '../../vue';\nimport { NAME_TABLE_CELL } from '../../constants/components';\nimport { PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { isTag } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Helper methods ---\n\n// Parse a rowspan or colspan into a digit (or `null` if < `1` )\nconst parseSpan = value => {\n  value = toInteger(value, 0);\n  return value > 0 ? value : null;\n};\n\n/* istanbul ignore next */\nconst spanValidator = value => isUndefinedOrNull(value) || parseSpan(value) > 0;\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  colspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n  rowspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n  stackedHeading: makeProp(PROP_TYPE_STRING),\n  stickyColumn: makeProp(PROP_TYPE_BOOLEAN, false),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TABLE_CELL);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTd = /*#__PURE__*/extend({\n  name: NAME_TABLE_CELL,\n  // Mixin order is important!\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  inject: {\n    getBvTableTr: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTableTr() {\n      return this.getBvTableTr();\n    },\n    // Overridden by `<b-th>`\n    tag() {\n      return 'td';\n    },\n    inTbody() {\n      return this.bvTableTr.inTbody;\n    },\n    inThead() {\n      return this.bvTableTr.inThead;\n    },\n    inTfoot() {\n      return this.bvTableTr.inTfoot;\n    },\n    isDark() {\n      return this.bvTableTr.isDark;\n    },\n    isStacked() {\n      return this.bvTableTr.isStacked;\n    },\n    // We only support stacked-heading in tbody in stacked mode\n    isStackedCell() {\n      return this.inTbody && this.isStacked;\n    },\n    isResponsive() {\n      return this.bvTableTr.isResponsive;\n    },\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky headers only apply to cells in table `thead`\n    isStickyHeader() {\n      return this.bvTableTr.isStickyHeader;\n    },\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return this.bvTableTr.hasStickyHeader;\n    },\n    // Needed to handle background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky column cells are only available in responsive\n    // mode (horizontal scrolling) or when sticky header mode\n    // Applies to cells in `thead`, `tbody` and `tfoot`\n    isStickyColumn() {\n      return !this.isStacked && (this.isResponsive || this.hasStickyHeader) && this.stickyColumn;\n    },\n    rowVariant() {\n      return this.bvTableTr.variant;\n    },\n    headVariant() {\n      return this.bvTableTr.headVariant;\n    },\n    footVariant() {\n      return this.bvTableTr.footVariant;\n    },\n    tableVariant() {\n      return this.bvTableTr.tableVariant;\n    },\n    computedColspan() {\n      return parseSpan(this.colspan);\n    },\n    computedRowspan() {\n      return parseSpan(this.rowspan);\n    },\n    // We use computed props here for improved performance by caching\n    // the results of the string interpolation\n    cellClasses() {\n      let {\n        variant,\n        headVariant,\n        isStickyColumn\n      } = this;\n      if (!variant && this.isStickyHeader && !headVariant || !variant && isStickyColumn && this.inTfoot && !this.footVariant || !variant && isStickyColumn && this.inThead && !headVariant || !variant && isStickyColumn && this.inTbody) {\n        // Needed for sticky-header mode as Bootstrap v4 table cells do\n        // not inherit parent's `background-color`\n        variant = this.rowVariant || this.tableVariant || 'b-table-default';\n      }\n      return [variant ? `${this.isDark ? 'bg' : 'table'}-${variant}` : null, isStickyColumn ? 'b-table-sticky-column' : null];\n    },\n    cellAttrs() {\n      const {\n        stackedHeading\n      } = this;\n\n      // We use computed props here for improved performance by caching\n      // the results of the object spread (Object.assign)\n      const headOrFoot = this.inThead || this.inTfoot;\n      // Make sure col/rowspan's are > 0 or null\n      const colspan = this.computedColspan;\n      const rowspan = this.computedRowspan;\n      // Default role and scope\n      let role = 'cell';\n      let scope = null;\n\n      // Compute role and scope\n      // We only add scopes with an explicit span of 1 or greater\n      if (headOrFoot) {\n        // Header or footer cells\n        role = 'columnheader';\n        scope = colspan > 0 ? 'colspan' : 'col';\n      } else if (isTag(this.tag, 'th')) {\n        // th's in tbody\n        role = 'rowheader';\n        scope = rowspan > 0 ? 'rowgroup' : 'row';\n      }\n      return {\n        colspan,\n        rowspan,\n        role,\n        scope,\n        // Allow users to override role/scope plus add other attributes\n        ...this.bvAttrs,\n        // Add in the stacked cell label data-attribute if in\n        // stacked mode (if a stacked heading label is provided)\n        'data-label': this.isStackedCell && !isUndefinedOrNull(stackedHeading) ? /* istanbul ignore next */toString(stackedHeading) : null\n      };\n    }\n  },\n  render(h) {\n    const $content = [this.normalizeSlot()];\n    return h(this.tag, {\n      class: this.cellClasses,\n      attrs: this.cellAttrs,\n      // Transfer any native listeners\n      on: this.bvListeners\n    }, [this.isStackedCell ? h('div', [$content]) : $content]);\n  }\n});\n\nexport { BTd, props };\n","import { extend } from '../../vue';\nimport { NAME_TH } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { props as props$1, BTd } from './td';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(props$1, NAME_TH);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTh = /*#__PURE__*/extend({\n  name: NAME_TH,\n  extends: BTd,\n  props,\n  computed: {\n    tag() {\n      return 'th';\n    }\n  }\n});\n\nexport { BTh, props };\n","import { extend } from '../../vue';\nimport { NAME_TBODY } from '../../constants/components';\nimport { PROP_TYPE_OBJECT } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  tbodyTransitionHandlers: makeProp(PROP_TYPE_OBJECT),\n  tbodyTransitionProps: makeProp(PROP_TYPE_OBJECT)\n}, NAME_TBODY);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTbody = /*#__PURE__*/extend({\n  name: NAME_TBODY,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTableRowGroup: () => this\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    getBvTable: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTable() {\n      return this.getBvTable();\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isTbody() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader() {\n      return false;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    isTransitionGroup() {\n      return this.tbodyTransitionProps || this.tbodyTransitionHandlers;\n    },\n    tbodyAttrs() {\n      return {\n        role: 'rowgroup',\n        ...this.bvAttrs\n      };\n    },\n    tbodyProps() {\n      const {\n        tbodyTransitionProps\n      } = this;\n      return tbodyTransitionProps ? {\n        ...tbodyTransitionProps,\n        tag: 'tbody'\n      } : {};\n    }\n  },\n  render(h) {\n    const data = {\n      props: this.tbodyProps,\n      attrs: this.tbodyAttrs\n    };\n    if (this.isTransitionGroup) {\n      // We use native listeners if a transition group for any delegated events\n      data.on = this.tbodyTransitionHandlers || {};\n      data.nativeOn = this.bvListeners;\n    } else {\n      // Otherwise we place any listeners on the tbody element\n      data.on = this.bvListeners;\n    }\n    return h(this.isTransitionGroup ? 'transition-group' : 'tbody', data, this.normalizeSlot());\n  }\n});\n\nexport { BTbody, props };\n","import { extend, REF_FOR_KEY } from '../../../vue';\nimport { EVENT_NAME_ROW_HOVERED, EVENT_NAME_ROW_UNHOVERED, EVENT_NAME_ROW_CLICKED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_OBJECT_FUNCTION, PROP_TYPE_FUNCTION } from '../../../constants/props';\nimport { SLOT_NAME_ROW_DETAILS } from '../../../constants/slots';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { get } from '../../../utils/get';\nimport { isFunction, isString, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { toString } from '../../../utils/string';\nimport { BTr } from '../tr';\nimport { BTd } from '../td';\nimport { BTh } from '../th';\nimport { FIELD_KEY_SHOW_DETAILS, FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT } from './constants';\n\n// --- Props ---\n\nconst props = {\n  detailsTdClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tbodyTrAttr: makeProp(PROP_TYPE_OBJECT_FUNCTION),\n  tbodyTrClass: makeProp([...PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION])\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst tbodyRowMixin = extend({\n  mixins: [useParentMixin],\n  props,\n  methods: {\n    // Methods for computing classes, attributes and styles for table cells\n    getTdValues(item, key, tdValue, defaultValue) {\n      const {\n        bvParent\n      } = this;\n      if (tdValue) {\n        const value = get(item, key, '');\n        if (isFunction(tdValue)) {\n          return tdValue(value, key, item);\n        } else if (isString(tdValue) && isFunction(bvParent[tdValue])) {\n          return bvParent[tdValue](value, key, item);\n        }\n        return tdValue;\n      }\n      return defaultValue;\n    },\n    getThValues(item, key, thValue, type, defaultValue) {\n      const {\n        bvParent\n      } = this;\n      if (thValue) {\n        const value = get(item, key, '');\n        if (isFunction(thValue)) {\n          return thValue(value, key, item, type);\n        } else if (isString(thValue) && isFunction(bvParent[thValue])) {\n          return bvParent[thValue](value, key, item, type);\n        }\n        return thValue;\n      }\n      return defaultValue;\n    },\n    // Method to get the value for a field\n    getFormattedValue(item, field) {\n      const {\n        key\n      } = field;\n      const formatter = this.getFieldFormatter(key);\n      let value = get(item, key, null);\n      if (isFunction(formatter)) {\n        value = formatter(value, key, item);\n      }\n      return isUndefinedOrNull(value) ? '' : value;\n    },\n    // Factory function methods\n    toggleDetailsFactory(hasDetailsSlot, item) {\n      // Returns a function to toggle a row's details slot\n      return () => {\n        if (hasDetailsSlot) {\n          this.$set(item, FIELD_KEY_SHOW_DETAILS, !item[FIELD_KEY_SHOW_DETAILS]);\n        }\n      };\n    },\n    // Row event handlers\n    rowHovered(event) {\n      // `mouseenter` handler (non-bubbling)\n      // `this.tbodyRowEventStopped` from tbody mixin\n      if (!this.tbodyRowEventStopped(event)) {\n        // `this.emitTbodyRowEvent` from tbody mixin\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_HOVERED, event);\n      }\n    },\n    rowUnhovered(event) {\n      // `mouseleave` handler (non-bubbling)\n      // `this.tbodyRowEventStopped` from tbody mixin\n      if (!this.tbodyRowEventStopped(event)) {\n        // `this.emitTbodyRowEvent` from tbody mixin\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_UNHOVERED, event);\n      }\n    },\n    // Renders a TD or TH for a row's field\n    renderTbodyRowCell(field, colIndex, item, rowIndex) {\n      const {\n        isStacked\n      } = this;\n      const {\n        key,\n        label,\n        isRowHeader\n      } = field;\n      const h = this.$createElement;\n      const hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n      const formatted = this.getFormattedValue(item, field);\n      const stickyColumn = !isStacked && (this.isResponsive || this.stickyHeader) && field.stickyColumn;\n      // We only uses the helper components for sticky columns to\n      // improve performance of BTable/BTableLite by reducing the\n      // total number of vue instances created during render\n      const cellTag = stickyColumn ? isRowHeader ? BTh : BTd : isRowHeader ? 'th' : 'td';\n      const cellVariant = item[FIELD_KEY_CELL_VARIANT] && item[FIELD_KEY_CELL_VARIANT][key] ? item[FIELD_KEY_CELL_VARIANT][key] : field.variant || null;\n      const data = {\n        // For the Vue key, we concatenate the column index and\n        // field key (as field keys could be duplicated)\n        // TODO: Although we do prevent duplicate field keys...\n        //   So we could change this to: `row-${rowIndex}-cell-${key}`\n        class: [field.class ? field.class : '', this.getTdValues(item, key, field.tdClass, '')],\n        props: {},\n        attrs: {\n          'aria-colindex': String(colIndex + 1),\n          ...(isRowHeader ? this.getThValues(item, key, field.thAttr, 'row', {}) : this.getTdValues(item, key, field.tdAttr, {}))\n        },\n        key: `row-${rowIndex}-cell-${colIndex}-${key}`\n      };\n      if (stickyColumn) {\n        // We are using the helper BTd or BTh\n        data.props = {\n          stackedHeading: isStacked ? label : null,\n          stickyColumn: true,\n          variant: cellVariant\n        };\n      } else {\n        // Using native TD or TH element, so we need to\n        // add in the attributes and variant class\n        data.attrs['data-label'] = isStacked && !isUndefinedOrNull(label) ? toString(label) : null;\n        data.attrs.role = isRowHeader ? 'rowheader' : 'cell';\n        data.attrs.scope = isRowHeader ? 'row' : null;\n        // Add in the variant class\n        if (cellVariant) {\n          data.class.push(`${this.dark ? 'bg' : 'table'}-${cellVariant}`);\n        }\n      }\n      const slotScope = {\n        item,\n        index: rowIndex,\n        field,\n        unformatted: get(item, key, ''),\n        value: formatted,\n        toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item),\n        detailsShowing: Boolean(item[FIELD_KEY_SHOW_DETAILS])\n      };\n      // If table supports selectable mode, then add in the following scope\n      // this.supportsSelectableRows will be undefined if mixin isn't loaded\n      if (safeVueInstance(this).supportsSelectableRows) {\n        slotScope.rowSelected = this.isRowSelected(rowIndex);\n        slotScope.selectRow = () => this.selectRow(rowIndex);\n        slotScope.unselectRow = () => this.unselectRow(rowIndex);\n      }\n\n      // The new `v-slot` syntax doesn't like a slot name starting with\n      // a square bracket and if using in-document HTML templates, the\n      // v-slot attributes are lower-cased by the browser.\n      // Switched to round bracket syntax to prevent confusion with\n      // dynamic slot name syntax.\n      // We look for slots in this order: `cell(${key})`, `cell(${key.toLowerCase()})`, 'cell()'\n      // Slot names are now cached by mixin tbody in `this.$_bodyFieldSlotNameCache`\n      // Will be `null` if no slot (or fallback slot) exists\n      const slotName = this.$_bodyFieldSlotNameCache[key];\n      let $childNodes = slotName ? this.normalizeSlot(slotName, slotScope) : toString(formatted);\n      if (this.isStacked) {\n        // We wrap in a DIV to ensure rendered as a single cell when visually stacked!\n        $childNodes = [h('div', [$childNodes])];\n      }\n\n      // Render either a td or th cell\n      return h(cellTag, data, [$childNodes]);\n    },\n    // Renders an item's row (or rows if details supported)\n    renderTbodyRow(item, rowIndex) {\n      const {\n        computedFields: fields,\n        striped,\n        primaryKey,\n        currentPage,\n        perPage,\n        tbodyTrClass,\n        tbodyTrAttr,\n        hasSelectableRowClick\n      } = safeVueInstance(this);\n      const h = this.$createElement;\n      const hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n      const rowShowDetails = item[FIELD_KEY_SHOW_DETAILS] && hasDetailsSlot;\n      const hasRowClickHandler = this.$listeners[EVENT_NAME_ROW_CLICKED] || hasSelectableRowClick;\n\n      // We can return more than one TR if rowDetails enabled\n      const $rows = [];\n\n      // Details ID needed for `aria-details` when details showing\n      // We set it to `null` when not showing so that attribute\n      // does not appear on the element\n      const detailsId = rowShowDetails ? this.safeId(`_details_${rowIndex}_`) : null;\n\n      // For each item data field in row\n      const $tds = fields.map((field, colIndex) => {\n        return this.renderTbodyRowCell(field, colIndex, item, rowIndex);\n      });\n\n      // Calculate the row number in the dataset (indexed from 1)\n      let ariaRowIndex = null;\n      if (currentPage && perPage && perPage > 0) {\n        ariaRowIndex = String((currentPage - 1) * perPage + rowIndex + 1);\n      }\n\n      // Create a unique :key to help ensure that sub components are re-rendered rather than\n      // re-used, which can cause issues. If a primary key is not provided we use the rendered\n      // rows index within the tbody.\n      // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2410\n      const primaryKeyValue = toString(get(item, primaryKey)) || null;\n      const rowKey = primaryKeyValue || toString(rowIndex);\n\n      // If primary key is provided, use it to generate a unique ID on each tbody > tr\n      // In the format of '{tableId}__row_{primaryKeyValue}'\n      const rowId = primaryKeyValue ? this.safeId(`_row_${primaryKeyValue}`) : null;\n\n      // Selectable classes and attributes\n      const selectableClasses = safeVueInstance(this).selectableRowClasses ? this.selectableRowClasses(rowIndex) : {};\n      const selectableAttrs = safeVueInstance(this).selectableRowAttrs ? this.selectableRowAttrs(rowIndex) : {};\n\n      // Additional classes and attributes\n      const userTrClasses = isFunction(tbodyTrClass) ? tbodyTrClass(item, 'row') : tbodyTrClass;\n      const userTrAttrs = isFunction(tbodyTrAttr) ? /* istanbul ignore next */tbodyTrAttr(item, 'row') : tbodyTrAttr;\n\n      // Add the item row\n      $rows.push(h(BTr, {\n        class: [userTrClasses, selectableClasses, rowShowDetails ? 'b-table-has-details' : ''],\n        props: {\n          variant: item[FIELD_KEY_ROW_VARIANT] || null\n        },\n        attrs: {\n          id: rowId,\n          ...userTrAttrs,\n          // Users cannot override the following attributes\n          tabindex: hasRowClickHandler ? '0' : null,\n          'data-pk': primaryKeyValue || null,\n          'aria-details': detailsId,\n          'aria-owns': detailsId,\n          'aria-rowindex': ariaRowIndex,\n          ...selectableAttrs\n        },\n        on: {\n          // Note: These events are not A11Y friendly!\n          mouseenter: this.rowHovered,\n          mouseleave: this.rowUnhovered\n        },\n        key: `__b-table-row-${rowKey}__`,\n        ref: 'item-rows',\n        [REF_FOR_KEY]: true\n      }, $tds));\n\n      // Row Details slot\n      if (rowShowDetails) {\n        const detailsScope = {\n          item,\n          index: rowIndex,\n          fields,\n          toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item)\n        };\n        // If table supports selectable mode, then add in the following scope\n        // this.supportsSelectableRows will be undefined if mixin isn't loaded\n        if (safeVueInstance(this).supportsSelectableRows) {\n          detailsScope.rowSelected = this.isRowSelected(rowIndex);\n          detailsScope.selectRow = () => this.selectRow(rowIndex);\n          detailsScope.unselectRow = () => this.unselectRow(rowIndex);\n        }\n\n        // Render the details slot in a TD\n        const $details = h(BTd, {\n          props: {\n            colspan: fields.length\n          },\n          class: this.detailsTdClass\n        }, [this.normalizeSlot(SLOT_NAME_ROW_DETAILS, detailsScope)]);\n\n        // Add a hidden row to keep table row striping consistent when details showing\n        // Only added if the table is striped\n        if (striped) {\n          $rows.push(\n          // We don't use `BTr` here as we don't need the extra functionality\n          h('tr', {\n            staticClass: 'd-none',\n            attrs: {\n              'aria-hidden': 'true',\n              role: 'presentation'\n            },\n            key: `__b-table-details-stripe__${rowKey}`\n          }));\n        }\n\n        // Add the actual details row\n        const userDetailsTrClasses = isFunction(this.tbodyTrClass) ? /* istanbul ignore next */this.tbodyTrClass(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrClass;\n        const userDetailsTrAttrs = isFunction(this.tbodyTrAttr) ? /* istanbul ignore next */this.tbodyTrAttr(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrAttr;\n        $rows.push(h(BTr, {\n          staticClass: 'b-table-details',\n          class: [userDetailsTrClasses],\n          props: {\n            variant: item[FIELD_KEY_ROW_VARIANT] || null\n          },\n          attrs: {\n            ...userDetailsTrAttrs,\n            // Users cannot override the following attributes\n            id: detailsId,\n            tabindex: '-1'\n          },\n          key: `__b-table-details__${rowKey}`\n        }, [$details]));\n      } else if (hasDetailsSlot) {\n        // Only add the placeholder if a the table has a row-details slot defined (but not shown)\n        $rows.push(h());\n        if (striped) {\n          // Add extra placeholder if table is striped\n          $rows.push(h());\n        }\n      }\n\n      // Return the row(s)\n      return $rows;\n    }\n  }\n});\n\nexport { props, tbodyRowMixin };\n","import { extend } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_MIDDLE_CLICKED, EVENT_NAME_ROW_CONTEXTMENU, EVENT_NAME_ROW_DBLCLICKED } from '../../../constants/events';\nimport { CODE_ENTER, CODE_SPACE, CODE_UP, CODE_DOWN, CODE_HOME, CODE_END } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { from, arrayIncludes } from '../../../utils/array';\nimport { isElement, closest, isActiveElement, attemptFocus } from '../../../utils/dom';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { stopEvent } from '../../../utils/events';\nimport { sortKeys } from '../../../utils/object';\nimport { makeProp, pluckProps } from '../../../utils/props';\nimport { props as props$1, BTbody } from '../tbody';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active';\nimport { props as props$2, tbodyRowMixin } from './mixin-tbody-row';\n\n// --- Helper methods ---\n\nconst getCellSlotName = value => `cell(${value || ''})`;\n\n// --- Props ---\n\nconst props = sortKeys({\n  ...props$1,\n  ...props$2,\n  tbodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n});\n\n// --- Mixin ---\n\n// @vue/component\nconst tbodyMixin = extend({\n  mixins: [tbodyRowMixin],\n  props,\n  beforeDestroy() {\n    this.$_bodyFieldSlotNameCache = null;\n  },\n  methods: {\n    // Returns all the item TR elements (excludes detail and spacer rows)\n    // `this.$refs['item-rows']` is an array of item TR components/elements\n    // Rows should all be `<b-tr>` components, but we map to TR elements\n    // Also note that `this.$refs['item-rows']` may not always be in document order\n    getTbodyTrs() {\n      const {\n        $refs\n      } = this;\n      const tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n      const trs = ($refs['item-rows'] || []).map(tr => tr.$el || tr);\n      return tbody && tbody.children && tbody.children.length > 0 && trs && trs.length > 0 ? from(tbody.children).filter(tr => arrayIncludes(trs, tr)) : /* istanbul ignore next */[];\n    },\n    // Returns index of a particular TBODY item TR\n    // We set `true` on closest to include self in result\n    getTbodyTrIndex(el) {\n      /* istanbul ignore next: should not normally happen */\n      if (!isElement(el)) {\n        return -1;\n      }\n      const tr = el.tagName === 'TR' ? el : closest('tr', el, true);\n      return tr ? this.getTbodyTrs().indexOf(tr) : -1;\n    },\n    // Emits a row event, with the item object, row index and original event\n    emitTbodyRowEvent(type, event) {\n      if (type && this.hasListener(type) && event && event.target) {\n        const rowIndex = this.getTbodyTrIndex(event.target);\n        if (rowIndex > -1) {\n          // The array of TRs correlate to the `computedItems` array\n          const item = this.computedItems[rowIndex];\n          this.$emit(type, item, rowIndex, event);\n        }\n      }\n    },\n    tbodyRowEventStopped(event) {\n      return this.stopIfBusy && this.stopIfBusy(event);\n    },\n    // Delegated row event handlers\n    onTbodyRowKeydown(event) {\n      // Keyboard navigation and row click emulation\n      const {\n        target,\n        keyCode\n      } = event;\n      if (this.tbodyRowEventStopped(event) || target.tagName !== 'TR' || !isActiveElement(target) || target.tabIndex !== 0) {\n        // Early exit if not an item row TR\n        return;\n      }\n      if (arrayIncludes([CODE_ENTER, CODE_SPACE], keyCode)) {\n        // Emulated click for keyboard users, transfer to click handler\n        stopEvent(event);\n        this.onTBodyRowClicked(event);\n      } else if (arrayIncludes([CODE_UP, CODE_DOWN, CODE_HOME, CODE_END], keyCode)) {\n        // Keyboard navigation\n        const rowIndex = this.getTbodyTrIndex(target);\n        if (rowIndex > -1) {\n          stopEvent(event);\n          const trs = this.getTbodyTrs();\n          const shift = event.shiftKey;\n          if (keyCode === CODE_HOME || shift && keyCode === CODE_UP) {\n            // Focus first row\n            attemptFocus(trs[0]);\n          } else if (keyCode === CODE_END || shift && keyCode === CODE_DOWN) {\n            // Focus last row\n            attemptFocus(trs[trs.length - 1]);\n          } else if (keyCode === CODE_UP && rowIndex > 0) {\n            // Focus previous row\n            attemptFocus(trs[rowIndex - 1]);\n          } else if (keyCode === CODE_DOWN && rowIndex < trs.length - 1) {\n            // Focus next row\n            attemptFocus(trs[rowIndex + 1]);\n          }\n        }\n      }\n    },\n    onTBodyRowClicked(event) {\n      const {\n        $refs\n      } = this;\n      const tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n      // Don't emit event when the table is busy, the user clicked\n      // on a non-disabled control or is selecting text\n      if (this.tbodyRowEventStopped(event) || filterEvent(event) || textSelectionActive(tbody || this.$el)) {\n        return;\n      }\n      this.emitTbodyRowEvent(EVENT_NAME_ROW_CLICKED, event);\n    },\n    onTbodyRowMiddleMouseRowClicked(event) {\n      if (!this.tbodyRowEventStopped(event) && event.which === 2) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_MIDDLE_CLICKED, event);\n      }\n    },\n    onTbodyRowContextmenu(event) {\n      if (!this.tbodyRowEventStopped(event)) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_CONTEXTMENU, event);\n      }\n    },\n    onTbodyRowDblClicked(event) {\n      if (!this.tbodyRowEventStopped(event) && !filterEvent(event)) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_DBLCLICKED, event);\n      }\n    },\n    // Render the tbody element and children\n    // Note:\n    //   Row hover handlers are handled by the tbody-row mixin\n    //   As mouseenter/mouseleave events do not bubble\n    renderTbody() {\n      const {\n        computedItems: items,\n        renderBusy,\n        renderTopRow,\n        renderEmpty,\n        renderBottomRow,\n        hasSelectableRowClick\n      } = safeVueInstance(this);\n      const h = this.$createElement;\n      const hasRowClickHandler = this.hasListener(EVENT_NAME_ROW_CLICKED) || hasSelectableRowClick;\n\n      // Prepare the tbody rows\n      const $rows = [];\n\n      // Add the item data rows or the busy slot\n      const $busy = renderBusy ? renderBusy() : null;\n      if ($busy) {\n        // If table is busy and a busy slot, then return only the busy \"row\" indicator\n        $rows.push($busy);\n      } else {\n        // Table isn't busy, or we don't have a busy slot\n\n        // Create a slot cache for improved performance when looking up cell slot names\n        // Values will be keyed by the field's `key` and will store the slot's name\n        // Slots could be dynamic (i.e. `v-if`), so we must compute on each render\n        // Used by tbody-row mixin render helper\n        const cache = {};\n        let defaultSlotName = getCellSlotName();\n        defaultSlotName = this.hasNormalizedSlot(defaultSlotName) ? defaultSlotName : null;\n        this.computedFields.forEach(field => {\n          const {\n            key\n          } = field;\n          const slotName = getCellSlotName(key);\n          const lowercaseSlotName = getCellSlotName(key.toLowerCase());\n          cache[key] = this.hasNormalizedSlot(slotName) ? slotName : this.hasNormalizedSlot(lowercaseSlotName) ? /* istanbul ignore next */lowercaseSlotName : defaultSlotName;\n        });\n        // Created as a non-reactive property so to not trigger component updates\n        // Must be a fresh object each render\n        this.$_bodyFieldSlotNameCache = cache;\n\n        // Add static top row slot (hidden in visibly stacked mode\n        // as we can't control `data-label` attr)\n        $rows.push(renderTopRow ? renderTopRow() : h());\n\n        // Render the rows\n        items.forEach((item, rowIndex) => {\n          // Render the individual item row (rows if details slot)\n          $rows.push(this.renderTbodyRow(item, rowIndex));\n        });\n\n        // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n        $rows.push(renderEmpty ? renderEmpty() : h());\n\n        // Static bottom row slot (hidden in visibly stacked mode\n        // as we can't control `data-label` attr)\n        $rows.push(renderBottomRow ? renderBottomRow() : h());\n      }\n\n      // Note: these events will only emit if a listener is registered\n      const handlers = {\n        auxclick: this.onTbodyRowMiddleMouseRowClicked,\n        // TODO:\n        //   Perhaps we do want to automatically prevent the\n        //   default context menu from showing if there is a\n        //   `row-contextmenu` listener registered\n        contextmenu: this.onTbodyRowContextmenu,\n        // The following event(s) is not considered A11Y friendly\n        dblclick: this.onTbodyRowDblClicked\n        // Hover events (`mouseenter`/`mouseleave`) are handled by `tbody-row` mixin\n      };\n      // Add in click/keydown listeners if needed\n      if (hasRowClickHandler) {\n        handlers.click = this.onTBodyRowClicked;\n        handlers.keydown = this.onTbodyRowKeydown;\n      }\n\n      // Assemble rows into the tbody\n      const $tbody = h(BTbody, {\n        class: this.tbodyClass || null,\n        props: pluckProps(props$1, this.$props),\n        // BTbody transfers all native event listeners to the root element\n        // TODO: Only set the handlers if the table is not busy\n        on: handlers,\n        ref: 'tbody'\n      }, $rows);\n\n      // Return the assembled tbody\n      return $tbody;\n    }\n  }\n});\n\nexport { props, tbodyMixin };\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!n.constructor[L]||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?(n.delete(r),n.add(t)):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)?n:(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0),n)}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function O(n){g(n),n.p.forEach(S),n.p=null}function g(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(r,i){return A(n,e,o,r,i,t)})),x(n,o,!1),t&&n.u&&b(\"Patches\").R(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!r(v))return;e.m=!1}if(t(c)&&!y(c)){if(!e.h.F&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),n.h.F&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function R(n,r,t){var e=s(r)?b(\"MapSet\").N(r,t):v(r)?b(\"MapSet\").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function D(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=F(r,c),u.I=!1}else e=F(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function F(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function N(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.O&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:i,o:null,O:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.D,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=\"\"+i[s];0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},R:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.D,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.D,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.D=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=R(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.O&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,D:void 0,t:n,k:this,C:!1,O:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.D.set(n,!0),t.o.set(n,r),t.D.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.D.set(n,!1):r.D.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.D=new Map,i(n.t,(function(r){n.D.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=R(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,O:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{N:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){N(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=R(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.D[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&\"number\"!=typeof t&&(void 0!==t||r in n.o)||(n.o[r]=t,n.D[r]=!0,!0)},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.D[r]=!1,E(n),k(n)):delete n.D[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.g=B,this.F=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=R(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?O(c):g(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw O(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.F&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=D(e));var i=w(this),o=R(this,e,void 0);return o[Q].C=!0,g(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.F=n},i.setUseProxies=function(r){r&&!B&&n(20),this.g=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,D as current,J as enableAllPlugins,N as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","var baseInverter = require('./_baseInverter');\n\n/**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\nfunction createInverter(setter, toIteratee) {\n  return function(object, iteratee) {\n    return baseInverter(object, setter, toIteratee(iteratee), {});\n  };\n}\n\nmodule.exports = createInverter;\n","/* eslint-disable func-names, consistent-return, no-param-reassign */\n\nimport $ from 'jquery';\nimport { setCookie } from '~/lib/utils/common_utils';\nimport { hide, fixTitle } from '~/tooltips';\nimport { __ } from './locale';\n\nconst updateSidebarClasses = (layoutPage, rightSidebar, windowSize = window.innerWidth) => {\n  if (windowSize >= 992) {\n    layoutPage.classList.remove('right-sidebar-expanded', 'right-sidebar-collapsed');\n    rightSidebar.classList.remove('right-sidebar-collapsed');\n    rightSidebar.classList.add('right-sidebar-expanded');\n  } else {\n    layoutPage.classList.add('right-sidebar-collapsed', 'is-merge-request');\n    rightSidebar.classList.add('right-sidebar-collapsed');\n    rightSidebar.classList.remove('right-sidebar-expanded');\n  }\n};\n\nfunction Sidebar() {\n  this.sidebar = $('aside');\n\n  this.isMR = /projects:merge_requests:/.test(document.body.dataset.page);\n\n  this.removeListeners();\n  this.addEventListeners();\n}\n\nSidebar.initialize = function () {\n  if (!this.instance) {\n    this.instance = new Sidebar();\n  }\n};\n\nSidebar.prototype.removeListeners = function () {\n  this.sidebar.off('click', '.sidebar-collapsed-icon');\n  // eslint-disable-next-line @gitlab/no-global-event-off\n  this.sidebar.off('hidden.gl.dropdown');\n  // eslint-disable-next-line @gitlab/no-global-event-off\n  this.sidebar.off('hiddenGlDropdown');\n  // eslint-disable-next-line @gitlab/no-global-event-off\n  $('.dropdown').off('loading.gl.dropdown');\n  // eslint-disable-next-line @gitlab/no-global-event-off\n  $('.dropdown').off('loaded.gl.dropdown');\n  $(document).off('click', '.js-sidebar-toggle');\n};\n\nSidebar.prototype.addEventListeners = function () {\n  const $document = $(document);\n\n  this.sidebar.on('click', '.sidebar-collapsed-icon', this, this.sidebarCollapseClicked);\n  this.sidebar.on('hidden.gl.dropdown', this, this.onSidebarDropdownHidden);\n  this.sidebar.on('hiddenGlDropdown', this, this.onSidebarDropdownHidden);\n\n  $document.on('click', '.js-sidebar-toggle', this.sidebarToggleClicked);\n\n  const layoutPage = document.querySelector('.layout-page');\n  const rightSidebar = document.querySelector('.js-right-sidebar');\n\n  if (rightSidebar.classList.contains('right-sidebar-merge-requests')) {\n    updateSidebarClasses(layoutPage, rightSidebar);\n\n    const resizeHandler = new ResizeObserver((entries) => {\n      for (const entry of entries) {\n        updateSidebarClasses(layoutPage, rightSidebar, entry.contentRect.width);\n      }\n    });\n    resizeHandler.observe(document.querySelector('html'));\n  }\n};\n\nSidebar.prototype.sidebarToggleClicked = function (e, triggered) {\n  const $toggleButtons = $('.js-sidebar-toggle');\n  const $collapseIcon = $('.js-sidebar-collapse');\n  const $expandIcon = $('.js-sidebar-expand');\n  const $toggleContainer = $('.js-sidebar-toggle-container');\n  const isExpanded = $toggleContainer.data('is-expanded');\n  const tooltipLabel = isExpanded ? __('Expand sidebar') : __('Collapse sidebar');\n  e.preventDefault();\n\n  if (isExpanded) {\n    $toggleContainer.data('is-expanded', false);\n    $collapseIcon.addClass('hidden');\n    $expandIcon.removeClass('hidden');\n    $('aside.right-sidebar')\n      .removeClass('right-sidebar-expanded')\n      .addClass('right-sidebar-collapsed');\n\n    if (!this.isMR) {\n      $('.layout-page').removeClass('right-sidebar-expanded').addClass('right-sidebar-collapsed');\n    }\n  } else {\n    $toggleContainer.data('is-expanded', true);\n    $expandIcon.addClass('hidden');\n    $collapseIcon.removeClass('hidden');\n    $('aside.right-sidebar')\n      .removeClass('right-sidebar-collapsed')\n      .addClass('right-sidebar-expanded');\n\n    if (!this.isMR) {\n      $('.layout-page').removeClass('right-sidebar-collapsed').addClass('right-sidebar-expanded');\n    }\n  }\n\n  $toggleButtons.attr('data-original-title', tooltipLabel);\n  $toggleButtons.attr('title', tooltipLabel);\n  fixTitle($toggleButtons);\n  hide($toggleButtons);\n\n  if (!triggered) {\n    setCookie('collapsed_gutter', $('.right-sidebar').hasClass('right-sidebar-collapsed'));\n  }\n};\n\nSidebar.prototype.sidebarCollapseClicked = function (e) {\n  if ($(e.currentTarget).hasClass('js-dont-change-state')) {\n    return;\n  }\n  const sidebar = e.data;\n  e.preventDefault();\n  const $block = $(this).closest('.block');\n  return sidebar.openDropdown($block);\n};\n\nSidebar.prototype.openDropdown = function (blockOrName) {\n  const $block = typeof blockOrName === 'string' ? this.getBlock(blockOrName) : blockOrName;\n  if (!this.isOpen()) {\n    this.setCollapseAfterUpdate($block);\n    this.toggleSidebar('open');\n  }\n};\n\nSidebar.prototype.setCollapseAfterUpdate = function ($block) {\n  $block.addClass('collapse-after-update');\n  return $('.layout-page').addClass('with-overlay');\n};\n\nSidebar.prototype.onSidebarDropdownHidden = function (e) {\n  const sidebar = e.data;\n  e.preventDefault();\n  const $block = $(e.target).closest('.block');\n  return sidebar.sidebarDropdownHidden($block);\n};\n\nSidebar.prototype.sidebarDropdownHidden = function ($block) {\n  if ($block.hasClass('collapse-after-update')) {\n    $block.removeClass('collapse-after-update');\n    $('.layout-page').removeClass('with-overlay');\n    return this.toggleSidebar('hide');\n  }\n};\n\nSidebar.prototype.triggerOpenSidebar = function () {\n  return this.sidebar.find('.js-sidebar-toggle').trigger('click');\n};\n\nSidebar.prototype.toggleSidebar = function (action) {\n  if (action == null) {\n    action = 'toggle';\n  }\n  if (action === 'toggle') {\n    this.triggerOpenSidebar();\n  }\n  if (action === 'open') {\n    if (!this.isOpen()) {\n      this.triggerOpenSidebar();\n    }\n  }\n  if (action === 'hide') {\n    if (this.isOpen()) {\n      return this.triggerOpenSidebar();\n    }\n  }\n};\n\nSidebar.prototype.isOpen = function () {\n  return this.sidebar.is('.right-sidebar-expanded');\n};\n\nSidebar.prototype.getBlock = function (name) {\n  return this.sidebar.find(`.block.${name}`);\n};\n\nexport default Sidebar;\n","import { extend, isVue3 } from '../vue';\nimport { isUndefined, isArray } from '../utils/inspect';\n\n// Mixin to determine if an event listener has been registered\n\n// @vue/component\nconst hasListenerMixin = extend({\n  methods: {\n    hasListener(name) {\n      if (isVue3) {\n        return true;\n      }\n      // Only includes listeners registered via `v-on:name`\n      const $listeners = this.$listeners || {};\n      // Includes `v-on:name` and `this.$on('name')` registered listeners\n      // Note this property is not part of the public Vue API, but it is\n      // the only way to determine if a listener was added via `vm.$on`\n      const $events = this._events || {};\n      // Registered listeners in `this._events` are always an array,\n      // but might be zero length\n      return !isUndefined($listeners[name]) || isArray($events[name]) && $events[name].length > 0;\n    }\n  }\n});\n\nexport { hasListenerMixin };\n","import { extend } from '../../vue';\nimport { NAME_TR } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Constants ---\n\nconst LIGHT = 'light';\nconst DARK = 'dark';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TR);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTr = /*#__PURE__*/extend({\n  name: NAME_TR,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTableTr: () => this\n    };\n  },\n  inject: {\n    getBvTableRowGroup: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTableRowGroup() {\n      return this.getBvTableRowGroup();\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inTbody() {\n      return this.bvTableRowGroup.isTbody;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inThead() {\n      return this.bvTableRowGroup.isThead;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inTfoot() {\n      return this.bvTableRowGroup.isTfoot;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isDark() {\n      return this.bvTableRowGroup.isDark;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isStacked() {\n      return this.bvTableRowGroup.isStacked;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isResponsive() {\n      return this.bvTableRowGroup.isResponsive;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader() {\n      return this.bvTableRowGroup.isStickyHeader;\n    },\n    // Sniffed by <b-tr> / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return !this.isStacked && this.bvTableRowGroup.hasStickyHeader;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    tableVariant() {\n      return this.bvTableRowGroup.tableVariant;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    headVariant() {\n      return this.inThead ? this.bvTableRowGroup.headVariant : null;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    footVariant() {\n      return this.inTfoot ? this.bvTableRowGroup.footVariant : null;\n    },\n    isRowDark() {\n      return this.headVariant === LIGHT || this.footVariant === LIGHT ? /* istanbul ignore next */false : this.headVariant === DARK || this.footVariant === DARK ? /* istanbul ignore next */true : this.isDark;\n    },\n    trClasses() {\n      const {\n        variant\n      } = this;\n      return [variant ? `${this.isRowDark ? 'bg' : 'table'}-${variant}` : null];\n    },\n    trAttrs() {\n      return {\n        role: 'row',\n        ...this.bvAttrs\n      };\n    }\n  },\n  render(h) {\n    return h('tr', {\n      class: this.trClasses,\n      attrs: this.trAttrs,\n      // Pass native listeners to child\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});\n\nexport { BTr, props };\n","import { extend } from '../../../vue';\nimport { PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_CAPTION } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { makeProp } from '../../../utils/props';\n\n// --- Props ---\n\nconst props = {\n  caption: makeProp(PROP_TYPE_STRING),\n  captionHtml: makeProp(PROP_TYPE_STRING)\n  // `caption-top` is part of table-render mixin (styling)\n  // captionTop: makeProp(PROP_TYPE_BOOLEAN, false)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst captionMixin = extend({\n  props,\n  computed: {\n    captionId() {\n      return this.isStacked ? this.safeId('_caption_') : null;\n    }\n  },\n  methods: {\n    renderCaption() {\n      const {\n        caption,\n        captionHtml\n      } = this;\n      const h = this.$createElement;\n      let $caption = h();\n      const hasCaptionSlot = this.hasNormalizedSlot(SLOT_NAME_TABLE_CAPTION);\n      if (hasCaptionSlot || caption || captionHtml) {\n        $caption = h('caption', {\n          attrs: {\n            id: this.captionId\n          },\n          domProps: hasCaptionSlot ? {} : htmlOrText(captionHtml, caption),\n          key: 'caption',\n          ref: 'caption'\n        }, this.normalizeSlot(SLOT_NAME_TABLE_CAPTION));\n      }\n      return $caption;\n    }\n  }\n});\n\nexport { captionMixin, props };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"time-tracker sidebar-help-wrap\",attrs:{\"data-testid\":\"time-tracker\"}},[(_vm.showCollapsed)?_c('time-tracking-collapsed-state',{attrs:{\"show-comparison-state\":_vm.showComparisonState,\"show-no-time-tracking-state\":_vm.showNoTimeTrackingState,\"show-spent-only-state\":_vm.showSpentOnlyState,\"show-estimate-only-state\":_vm.showEstimateOnlyState,\"time-spent-human-readable\":_vm.humanTotalTimeSpent,\"time-estimate-human-readable\":_vm.humanTimeEstimate}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hide-collapsed gl-flex gl-items-center gl-font-bold gl-leading-20 gl-text-default\"},[_vm._v(\"\\n    \"+_vm._s(_vm.__('Time tracking'))+\"\\n    \"),(_vm.isTimeTrackingInfoLoading)?_c('gl-loading-icon',{staticClass:\"gl-ml-2\",attrs:{\"size\":\"sm\",\"inline\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.canSetTimeEstimate || _vm.canAddTimeEntries)?_c('div',{staticClass:\"gl-ml-auto gl-flex\"},[(_vm.canSetTimeEstimate)?_c('gl-button',{directives:[{name:\"gl-modal\",rawName:\"v-gl-modal\",value:(_vm.$options.setTimeEstimateModalId),expression:\"$options.setTimeEstimateModalId\"},{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.top\",modifiers:{\"top\":true}}],attrs:{\"category\":\"tertiary\",\"icon\":\"timer\",\"size\":\"small\",\"data-testid\":\"set-time-estimate-button\",\"title\":_vm.timeEstimateTooltip,\"aria-label\":_vm.timeEstimateTooltip}}):_vm._e(),_vm._v(\" \"),(_vm.canAddTimeEntries)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.top\",modifiers:{\"top\":true}}],attrs:{\"category\":\"tertiary\",\"icon\":\"plus\",\"size\":\"small\",\"data-testid\":\"add-time-entry-button\",\"title\":_vm.__('Add time entry')},on:{\"click\":function($event){return _vm.openRegisterTimeSpentModal()}}}):_vm._e()],1):_vm._e()],1),_vm._v(\" \"),(!_vm.isTimeTrackingInfoLoading)?_c('div',{staticClass:\"hide-collapsed\"},[(_vm.showEstimateOnlyState)?_c('div',{attrs:{\"data-testid\":\"estimateOnlyPane\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.estimatedOnlyText)+\" \"+_vm._s(_vm.humanTimeEstimate)+\"\\n    \")]):_vm._e(),_vm._v(\" \"),(_vm.showSpentOnlyState)?_c('time-tracking-spent-only-pane',{attrs:{\"time-spent-human-readable\":_vm.humanTotalTimeSpent}}):_vm._e(),_vm._v(\" \"),(_vm.showNoTimeTrackingState)?_c('div',{attrs:{\"data-testid\":\"noTrackingPane\"}},[_c('span',{staticClass:\"gl-text-subtle\"},[_vm._v(_vm._s(_vm.$options.i18n.noTimeTrackingText))])]):_vm._e(),_vm._v(\" \"),(_vm.showComparisonState)?_c('time-tracking-comparison-pane',{attrs:{\"time-estimate\":_vm.timeEstimate,\"time-spent\":_vm.totalTimeSpent,\"time-spent-human-readable\":_vm.humanTotalTimeSpent,\"time-estimate-human-readable\":_vm.humanTimeEstimate,\"limit-to-hours\":_vm.limitToHours}}):_vm._e(),_vm._v(\" \"),(_vm.isTimeReportSupported)?_c('div',[(_vm.hasTotalTimeSpent)?_c('gl-link',{directives:[{name:\"gl-modal\",rawName:\"v-gl-modal\",value:('time-tracking-report'),expression:\"'time-tracking-report'\"}],staticClass:\"gl-text-default\",attrs:{\"data-testid\":\"reportLink\",\"href\":\"#\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Time tracking report'))+\"\\n      \")]):_vm._e(),_vm._v(\" \"),_c('gl-modal',{attrs:{\"modal-id\":\"time-tracking-report\",\"size\":\"lg\",\"title\":_vm.__('Time tracking report'),\"hide-footer\":true}},[_c('time-tracking-report',{attrs:{\"limit-to-hours\":_vm.limitToHours,\"issuable-id\":_vm.issuableId}})],1)],1):_vm._e(),_vm._v(\" \"),_c('create-timelog-form',{attrs:{\"issuable-id\":_vm.issuableId}}),_vm._v(\" \"),_c('set-time-estimate-form',{attrs:{\"full-path\":_vm.fullPath,\"issuable-iid\":_vm.issuableIid,\"time-tracking\":_vm.timeTracking}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./collapsed_state.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!./collapsed_state.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { __, sprintf } from '~/locale';\n\nexport default {\n  name: 'TimeTrackingCollapsedState',\n  components: {\n    GlIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    showComparisonState: {\n      type: Boolean,\n      required: true,\n    },\n    showSpentOnlyState: {\n      type: Boolean,\n      required: true,\n    },\n    showEstimateOnlyState: {\n      type: Boolean,\n      required: true,\n    },\n    showNoTimeTrackingState: {\n      type: Boolean,\n      required: true,\n    },\n    timeSpentHumanReadable: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    timeEstimateHumanReadable: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  computed: {\n    divClass() {\n      if (this.showComparisonState) {\n        return 'compare';\n      }\n      if (this.showEstimateOnlyState) {\n        return 'estimate-only';\n      }\n      if (this.showSpentOnlyState) {\n        return 'spend-only';\n      }\n      if (this.showNoTimeTrackingState) {\n        return 'no-tracking';\n      }\n\n      return '';\n    },\n    spanClass() {\n      if (this.showNoTimeTrackingState) {\n        return 'no-value collapse-truncated-title gl-pt-2 gl-px-3 gl-text-sm';\n      }\n\n      return '';\n    },\n    text() {\n      if (this.showComparisonState) {\n        return `${this.timeSpentHumanReadable} / ${this.timeEstimateHumanReadable}`;\n      }\n      if (this.showEstimateOnlyState) {\n        return `-- / ${this.timeEstimateHumanReadable}`;\n      }\n      if (this.showSpentOnlyState) {\n        return `${this.timeSpentHumanReadable} / --`;\n      }\n      if (this.showNoTimeTrackingState) {\n        return __('None');\n      }\n\n      return '';\n    },\n    timeTrackedTooltipText() {\n      let title;\n      if (this.showComparisonState) {\n        title = __('Time remaining');\n      } else if (this.showEstimateOnlyState) {\n        title = __('Estimated');\n      } else if (this.showSpentOnlyState) {\n        title = __('Time spent');\n      }\n\n      return sprintf('%{title}: %{text}', { title, text: this.text });\n    },\n    tooltipText() {\n      return this.showNoTimeTrackingState ? __('Time tracking') : this.timeTrackedTooltipText;\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    v-gl-tooltip:body.viewport.left\n    :title=\"tooltipText\"\n    data-testid=\"collapsedState\"\n    class=\"sidebar-collapsed-icon py-1 !gl-h-auto\"\n  >\n    <gl-icon name=\"timer\" />\n    <div class=\"time-tracking-collapsed-summary\">\n      <div class=\"gl-px-4\" :class=\"divClass\">\n        <span class=\"gl-text-sm\" :class=\"spanClass\"> {{ text }} </span>\n      </div>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./collapsed_state.vue?vue&type=template&id=74d723ca\"\nimport script from \"./collapsed_state.vue?vue&type=script&lang=js\"\nexport * from \"./collapsed_state.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',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip:body.viewport.left\",arg:\"body\",modifiers:{\"viewport\":true,\"left\":true}}],staticClass:\"sidebar-collapsed-icon py-1 !gl-h-auto\",attrs:{\"title\":_vm.tooltipText,\"data-testid\":\"collapsedState\"}},[_c('gl-icon',{attrs:{\"name\":\"timer\"}}),_vm._v(\" \"),_c('div',{staticClass:\"time-tracking-collapsed-summary\"},[_c('div',{staticClass:\"gl-px-4\",class:_vm.divClass},[_c('span',{staticClass:\"gl-text-sm\",class:_vm.spanClass},[_vm._v(\" \"+_vm._s(_vm.text)+\" \")])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./comparison_pane.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!./comparison_pane.vue?vue&type=script&lang=js\"","<script>\nimport { GlProgressBar, GlTooltipDirective } from '@gitlab/ui';\nimport { parseSeconds, stringifyTime } from '~/lib/utils/datetime_utility';\nimport { s__, sprintf } from '~/locale';\n\nexport default {\n  name: 'TimeTrackingComparisonPane',\n  components: {\n    GlProgressBar,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    timeSpent: {\n      type: Number,\n      required: true,\n    },\n    timeEstimate: {\n      type: Number,\n      required: true,\n    },\n    timeSpentHumanReadable: {\n      type: String,\n      required: true,\n    },\n    timeEstimateHumanReadable: {\n      type: String,\n      required: true,\n    },\n    limitToHours: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    parsedTimeRemaining() {\n      const diffSeconds = this.timeEstimate - this.timeSpent;\n      return parseSeconds(diffSeconds, { limitToHours: this.limitToHours });\n    },\n    timeRemainingHumanReadable() {\n      return stringifyTime(this.parsedTimeRemaining);\n    },\n    timeRemainingTooltip() {\n      const { timeRemainingHumanReadable, timeRemainingMinutes } = this;\n      return timeRemainingMinutes < 0\n        ? sprintf(s__('TimeTracking|Over by %{timeRemainingHumanReadable}'), {\n            timeRemainingHumanReadable,\n          })\n        : sprintf(s__('TimeTracking|Time remaining: %{timeRemainingHumanReadable}'), {\n            timeRemainingHumanReadable,\n          });\n    },\n    /* Diff values for comparison meter */\n    timeRemainingMinutes() {\n      return this.timeEstimate - this.timeSpent;\n    },\n    timeRemainingPercent() {\n      return Math.floor((this.timeSpent / this.timeEstimate) * 100);\n    },\n    timeRemainingStatusClass() {\n      return this.timeEstimate >= this.timeSpent ? 'within_estimate' : 'over_estimate';\n    },\n    progressBarVariant() {\n      return this.timeRemainingPercent > 100 ? 'danger' : 'primary';\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-mt-2\" data-testid=\"timeTrackingComparisonPane\">\n    <div\n      v-gl-tooltip\n      data-testid=\"compareMeter\"\n      :title=\"timeRemainingTooltip\"\n      :class=\"timeRemainingStatusClass\"\n      class=\"compare-meter\"\n    >\n      <gl-progress-bar\n        data-testid=\"timeRemainingProgress\"\n        :value=\"timeRemainingPercent\"\n        :variant=\"progressBarVariant\"\n      />\n      <div class=\"compare-display-container gl-mt-2 gl-flex gl-justify-between\">\n        <div class=\"gl-float-left\">\n          <span class=\"gl-text-subtle\">{{ s__('TimeTracking|Spent') }}</span>\n          <span class=\"compare-value spent\">{{ timeSpentHumanReadable }}</span>\n        </div>\n        <div class=\"estimated gl-float-right\">\n          <span class=\"gl-text-subtle\">{{ s__('TimeTrackingEstimated|Est') }}</span>\n          <span class=\"compare-value\">{{ timeEstimateHumanReadable }}</span>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./comparison_pane.vue?vue&type=template&id=7d5da840\"\nimport script from \"./comparison_pane.vue?vue&type=script&lang=js\"\nexport * from \"./comparison_pane.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:\"gl-mt-2\",attrs:{\"data-testid\":\"timeTrackingComparisonPane\"}},[_c('div',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"compare-meter\",class:_vm.timeRemainingStatusClass,attrs:{\"data-testid\":\"compareMeter\",\"title\":_vm.timeRemainingTooltip}},[_c('gl-progress-bar',{attrs:{\"data-testid\":\"timeRemainingProgress\",\"value\":_vm.timeRemainingPercent,\"variant\":_vm.progressBarVariant}}),_vm._v(\" \"),_c('div',{staticClass:\"compare-display-container gl-mt-2 gl-flex gl-justify-between\"},[_c('div',{staticClass:\"gl-float-left\"},[_c('span',{staticClass:\"gl-text-subtle\"},[_vm._v(_vm._s(_vm.s__('TimeTracking|Spent')))]),_vm._v(\" \"),_c('span',{staticClass:\"compare-value spent\"},[_vm._v(_vm._s(_vm.timeSpentHumanReadable))])]),_vm._v(\" \"),_c('div',{staticClass:\"estimated gl-float-right\"},[_c('span',{staticClass:\"gl-text-subtle\"},[_vm._v(_vm._s(_vm.s__('TimeTrackingEstimated|Est')))]),_vm._v(\" \"),_c('span',{staticClass:\"compare-value\"},[_vm._v(_vm._s(_vm.timeEstimateHumanReadable))])])])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlSprintf } from '@gitlab/ui';\nimport { s__ } from '~/locale';\n\nconst timeSpent = s__('TimeTracking|%{spentStart}Spent: %{spentEnd}');\n\nexport default {\n  name: 'TimeTrackingSpentOnlyPane',\n  timeSpent,\n  components: {\n    GlSprintf,\n  },\n  props: {\n    timeSpentHumanReadable: {\n      type: String,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <div data-testid=\"spentOnlyPane\">\n    <gl-sprintf :message=\"$options.timeSpent\">\n      <template #spent=\"{ content }\">\n        <span class=\"gl-font-bold\">{{ content }}</span\n        >{{ timeSpentHumanReadable }}\n      </template>\n    </gl-sprintf>\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!./spent_only_pane.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!./spent_only_pane.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./spent_only_pane.vue?vue&type=template&id=0706bdc9\"\nimport script from \"./spent_only_pane.vue?vue&type=script&lang=js\"\nexport * from \"./spent_only_pane.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',{attrs:{\"data-testid\":\"spentOnlyPane\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.timeSpent},scopedSlots:_vm._u([{key:\"spent\",fn:function({ content }){return [_c('span',{staticClass:\"gl-font-bold\"},[_vm._v(_vm._s(content))]),_vm._v(_vm._s(_vm.timeSpentHumanReadable)+\"\\n    \")]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./time_tracker.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!./time_tracker.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlLink,\n  GlModal,\n  GlButton,\n  GlModalDirective,\n  GlLoadingIcon,\n  GlTooltipDirective,\n} from '@gitlab/ui';\nimport { TYPE_ISSUE, TYPE_MERGE_REQUEST } from '~/issues/constants';\nimport { BV_SHOW_MODAL } from '~/lib/utils/constants';\nimport { s__, __ } from '~/locale';\n\nimport { timeTrackingQueries } from '../../queries/constants';\nimport eventHub from '../../event_hub';\nimport TimeTrackingCollapsedState from './collapsed_state.vue';\nimport TimeTrackingComparisonPane from './comparison_pane.vue';\nimport TimeTrackingSpentOnlyPane from './spent_only_pane.vue';\nimport TimeTrackingReport from './time_tracking_report.vue';\nimport { CREATE_TIMELOG_MODAL_ID, SET_TIME_ESTIMATE_MODAL_ID } from './constants';\nimport CreateTimelogForm from './create_timelog_form.vue';\nimport SetTimeEstimateForm from './set_time_estimate_form.vue';\n\nexport default {\n  name: 'IssuableTimeTracker',\n  i18n: {\n    noTimeTrackingText: __('No estimate or time spent'),\n    estimatedOnlyText: s__('TimeTracking|Estimated:'),\n  },\n  components: {\n    GlLink,\n    GlModal,\n    GlButton,\n    GlLoadingIcon,\n    TimeTrackingCollapsedState,\n    TimeTrackingSpentOnlyPane,\n    TimeTrackingComparisonPane,\n    TimeTrackingReport,\n    CreateTimelogForm,\n    SetTimeEstimateForm,\n  },\n  directives: {\n    GlModal: GlModalDirective,\n    GlTooltip: GlTooltipDirective,\n  },\n  inject: {\n    issuableType: {\n      default: null,\n    },\n  },\n  props: {\n    limitToHours: {\n      type: Boolean,\n      default: false,\n      required: false,\n    },\n    fullPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    issuableId: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    issuableIid: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    initialTimeTracking: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    /*\n      In issue list, \"time-tracking-collapsed-state\" is always rendered even if the sidebar isn't collapsed.\n      The actual hiding is controlled with css classes:\n        Hide \"time-tracking-collapsed-state\"\n          if .right-sidebar .right-sidebar-collapsed .sidebar-collapsed-icon\n        Show \"time-tracking-collapsed-state\"\n          if .right-sidebar .right-sidebar-expanded .sidebar-collapsed-icon\n\n      In Swimlanes sidebar, we do not use collapsed state at all.\n    */\n    showCollapsed: {\n      type: Boolean,\n      default: true,\n      required: false,\n    },\n    canAddTimeEntries: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    canSetTimeEstimate: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      timeTracking: {\n        ...this.initialTimeTracking,\n      },\n    };\n  },\n  apollo: {\n    // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n    issuableTimeTracking: {\n      query() {\n        return timeTrackingQueries[this.issuableType].query;\n      },\n      skip() {\n        // Skip the query if either of the conditions are true\n        // 1. issuableType is not provided\n        // 2. Time tracking info was provided via prop\n        // 3. issuableIid and fullPath are not provided\n        if (!this.issuableType || !timeTrackingQueries[this.issuableType]) {\n          return true;\n        }\n        if (this.initialTimeTracking) {\n          return true;\n        }\n        if (!this.issuableIid || !this.fullPath) {\n          return true;\n        }\n        return false;\n      },\n      variables() {\n        return {\n          iid: this.issuableIid,\n          fullPath: this.fullPath,\n        };\n      },\n      update(data) {\n        this.timeTracking = {\n          ...data.workspace?.issuable,\n        };\n      },\n    },\n  },\n  computed: {\n    isTimeTrackingInfoLoading() {\n      return this.$apollo?.queries.issuableTimeTracking?.loading ?? false;\n    },\n    timeEstimate() {\n      return this.timeTracking?.timeEstimate || 0;\n    },\n    totalTimeSpent() {\n      return this.timeTracking?.totalTimeSpent || 0;\n    },\n    humanTimeEstimate() {\n      return this.timeTracking?.humanTimeEstimate || '';\n    },\n    humanTotalTimeSpent() {\n      return this.timeTracking?.humanTotalTimeSpent || '';\n    },\n    hasTotalTimeSpent() {\n      return Boolean(this.totalTimeSpent);\n    },\n    hasTimeEstimate() {\n      return Boolean(this.timeEstimate);\n    },\n    showComparisonState() {\n      return this.hasTimeEstimate && this.hasTotalTimeSpent;\n    },\n    showEstimateOnlyState() {\n      return this.hasTimeEstimate && !this.hasTotalTimeSpent;\n    },\n    showSpentOnlyState() {\n      return this.hasTotalTimeSpent && !this.hasTimeEstimate;\n    },\n    showNoTimeTrackingState() {\n      return !this.hasTimeEstimate && !this.hasTotalTimeSpent;\n    },\n    isTimeReportSupported() {\n      return [TYPE_ISSUE, TYPE_MERGE_REQUEST].includes(this.issuableType) && this.issuableId;\n    },\n    timeEstimateTooltip() {\n      return this.hasTimeEstimate\n        ? s__('TimeTracking|Edit estimate')\n        : s__('TimeTracking|Set estimate');\n    },\n  },\n  watch: {\n    /**\n     * When `initialTimeTracking` is provided via prop,\n     * we don't query the same via GraphQl and instead\n     * monitor it for any updates (eg; Epic Swimlanes)\n     */\n    initialTimeTracking(timeTracking) {\n      this.timeTracking = timeTracking;\n    },\n  },\n  created() {\n    eventHub.$on('timeTracker:refresh', this.refresh);\n  },\n  methods: {\n    refresh() {\n      this.$apollo.queries.issuableTimeTracking.refetch();\n    },\n    openRegisterTimeSpentModal() {\n      this.$root.$emit(BV_SHOW_MODAL, CREATE_TIMELOG_MODAL_ID);\n    },\n  },\n  setTimeEstimateModalId: SET_TIME_ESTIMATE_MODAL_ID,\n};\n</script>\n\n<template>\n  <div v-cloak class=\"time-tracker sidebar-help-wrap\" data-testid=\"time-tracker\">\n    <time-tracking-collapsed-state\n      v-if=\"showCollapsed\"\n      :show-comparison-state=\"showComparisonState\"\n      :show-no-time-tracking-state=\"showNoTimeTrackingState\"\n      :show-spent-only-state=\"showSpentOnlyState\"\n      :show-estimate-only-state=\"showEstimateOnlyState\"\n      :time-spent-human-readable=\"humanTotalTimeSpent\"\n      :time-estimate-human-readable=\"humanTimeEstimate\"\n    />\n    <div class=\"hide-collapsed gl-flex gl-items-center gl-font-bold gl-leading-20 gl-text-default\">\n      {{ __('Time tracking') }}\n      <gl-loading-icon v-if=\"isTimeTrackingInfoLoading\" size=\"sm\" class=\"gl-ml-2\" inline />\n      <div v-if=\"canSetTimeEstimate || canAddTimeEntries\" class=\"gl-ml-auto gl-flex\">\n        <gl-button\n          v-if=\"canSetTimeEstimate\"\n          v-gl-modal=\"$options.setTimeEstimateModalId\"\n          v-gl-tooltip.top\n          category=\"tertiary\"\n          icon=\"timer\"\n          size=\"small\"\n          data-testid=\"set-time-estimate-button\"\n          :title=\"timeEstimateTooltip\"\n          :aria-label=\"timeEstimateTooltip\"\n        />\n        <gl-button\n          v-if=\"canAddTimeEntries\"\n          v-gl-tooltip.top\n          category=\"tertiary\"\n          icon=\"plus\"\n          size=\"small\"\n          data-testid=\"add-time-entry-button\"\n          :title=\"__('Add time entry')\"\n          @click=\"openRegisterTimeSpentModal()\"\n        />\n      </div>\n    </div>\n    <div v-if=\"!isTimeTrackingInfoLoading\" class=\"hide-collapsed\">\n      <div v-if=\"showEstimateOnlyState\" data-testid=\"estimateOnlyPane\">\n        {{ $options.i18n.estimatedOnlyText }} {{ humanTimeEstimate }}\n      </div>\n      <time-tracking-spent-only-pane\n        v-if=\"showSpentOnlyState\"\n        :time-spent-human-readable=\"humanTotalTimeSpent\"\n      />\n      <div v-if=\"showNoTimeTrackingState\" data-testid=\"noTrackingPane\">\n        <span class=\"gl-text-subtle\">{{ $options.i18n.noTimeTrackingText }}</span>\n      </div>\n      <time-tracking-comparison-pane\n        v-if=\"showComparisonState\"\n        :time-estimate=\"timeEstimate\"\n        :time-spent=\"totalTimeSpent\"\n        :time-spent-human-readable=\"humanTotalTimeSpent\"\n        :time-estimate-human-readable=\"humanTimeEstimate\"\n        :limit-to-hours=\"limitToHours\"\n      />\n      <div v-if=\"isTimeReportSupported\">\n        <gl-link\n          v-if=\"hasTotalTimeSpent\"\n          v-gl-modal=\"'time-tracking-report'\"\n          class=\"gl-text-default\"\n          data-testid=\"reportLink\"\n          href=\"#\"\n        >\n          {{ __('Time tracking report') }}\n        </gl-link>\n        <gl-modal\n          modal-id=\"time-tracking-report\"\n          size=\"lg\"\n          :title=\"__('Time tracking report')\"\n          :hide-footer=\"true\"\n        >\n          <time-tracking-report :limit-to-hours=\"limitToHours\" :issuable-id=\"issuableId\" />\n        </gl-modal>\n      </div>\n      <create-timelog-form :issuable-id=\"issuableId\" />\n      <set-time-estimate-form\n        :full-path=\"fullPath\"\n        :issuable-iid=\"issuableIid\"\n        :time-tracking=\"timeTracking\"\n      />\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./time_tracker.vue?vue&type=template&id=a3c3d876\"\nimport script from \"./time_tracker.vue?vue&type=script&lang=js\"\nexport * from \"./time_tracker.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","import { extend } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { identity } from '../../../utils/identity';\nimport { isBoolean } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { toString } from '../../../utils/string';\nimport { attrsMixin } from '../../../mixins/attrs';\n\n// Main `<table>` render mixin\n// Includes all main table styling options\n\n// --- Props ---\n\nconst props = {\n  bordered: makeProp(PROP_TYPE_BOOLEAN, false),\n  borderless: makeProp(PROP_TYPE_BOOLEAN, false),\n  captionTop: makeProp(PROP_TYPE_BOOLEAN, false),\n  dark: makeProp(PROP_TYPE_BOOLEAN, false),\n  fixed: makeProp(PROP_TYPE_BOOLEAN, false),\n  hover: makeProp(PROP_TYPE_BOOLEAN, false),\n  noBorderCollapse: makeProp(PROP_TYPE_BOOLEAN, false),\n  outlined: makeProp(PROP_TYPE_BOOLEAN, false),\n  responsive: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  small: makeProp(PROP_TYPE_BOOLEAN, false),\n  // If a string, it is assumed to be the table `max-height` value\n  stickyHeader: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  striped: makeProp(PROP_TYPE_BOOLEAN, false),\n  tableClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tableVariant: makeProp(PROP_TYPE_STRING)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst tableRendererMixin = extend({\n  mixins: [attrsMixin],\n  provide() {\n    return {\n      getBvTable: () => this\n    };\n  },\n  // Don't place attributes on root element automatically,\n  // as table could be wrapped in responsive `<div>`\n  inheritAttrs: false,\n  props,\n  computed: {\n    isTableSimple() {\n      return false;\n    },\n    // Layout related computed props\n    isResponsive() {\n      const {\n        responsive\n      } = this;\n      return responsive === '' ? true : responsive;\n    },\n    isStickyHeader() {\n      let {\n        stickyHeader\n      } = this;\n      stickyHeader = stickyHeader === '' ? true : stickyHeader;\n      return this.isStacked ? false : stickyHeader;\n    },\n    wrapperClasses() {\n      const {\n        isResponsive\n      } = this;\n      return [this.isStickyHeader ? 'b-table-sticky-header' : '', isResponsive === true ? 'table-responsive' : isResponsive ? `table-responsive-${this.responsive}` : ''].filter(identity);\n    },\n    wrapperStyles() {\n      const {\n        isStickyHeader\n      } = this;\n      return isStickyHeader && !isBoolean(isStickyHeader) ? {\n        maxHeight: isStickyHeader\n      } : {};\n    },\n    tableClasses() {\n      let {\n        hover,\n        tableVariant,\n        selectableTableClasses,\n        stackedTableClasses,\n        tableClass,\n        computedBusy\n      } = safeVueInstance(this);\n      hover = this.isTableSimple ? hover : hover && this.computedItems.length > 0 && !computedBusy;\n      return [\n      // User supplied classes\n      tableClass,\n      // Styling classes\n      {\n        'table-striped': this.striped,\n        'table-hover': hover,\n        'table-dark': this.dark,\n        'table-bordered': this.bordered,\n        'table-borderless': this.borderless,\n        'table-sm': this.small,\n        // The following are b-table custom styles\n        'gl-border': this.outlined,\n        'b-table-fixed': this.fixed,\n        'b-table-caption-top': this.captionTop,\n        'b-table-no-border-collapse': this.noBorderCollapse\n      }, tableVariant ? `${this.dark ? 'bg' : 'table'}-${tableVariant}` : '',\n      // Stacked table classes\n      stackedTableClasses,\n      // Selectable classes\n      selectableTableClasses];\n    },\n    tableAttrs() {\n      const {\n        computedItems: items,\n        filteredItems,\n        computedFields: fields,\n        selectableTableAttrs,\n        computedBusy\n      } = safeVueInstance(this);\n      const ariaAttrs = this.isTableSimple ? {} : {\n        'aria-busy': toString(computedBusy),\n        'aria-colcount': toString(fields.length),\n        // Preserve user supplied `aria-describedby`, if provided\n        'aria-describedby': this.bvAttrs['aria-describedby'] || this.$refs.caption ? this.captionId : null\n      };\n      const rowCount = items && filteredItems && filteredItems.length > items.length ? toString(filteredItems.length) : null;\n      return {\n        // We set `aria-rowcount` before merging in `$attrs`,\n        // in case user has supplied their own\n        'aria-rowcount': rowCount,\n        // Merge in user supplied `$attrs` if any\n        ...this.bvAttrs,\n        // Now we can override any `$attrs` here\n        id: this.safeId(),\n        role: this.bvAttrs.role || 'table',\n        ...ariaAttrs,\n        ...selectableTableAttrs\n      };\n    }\n  },\n  render(h) {\n    const {\n      wrapperClasses,\n      renderCaption,\n      renderColgroup,\n      renderThead,\n      renderTbody,\n      renderTfoot\n    } = safeVueInstance(this);\n    const $content = [];\n    if (this.isTableSimple) {\n      $content.push(this.normalizeSlot());\n    } else {\n      // Build the `<caption>` (from caption mixin)\n      $content.push(renderCaption ? renderCaption() : null);\n\n      // Build the `<colgroup>`\n      $content.push(renderColgroup ? renderColgroup() : null);\n\n      // Build the `<thead>`\n      $content.push(renderThead ? renderThead() : null);\n\n      // Build the `<tbody>`\n      $content.push(renderTbody ? renderTbody() : null);\n\n      // Build the `<tfoot>`\n      $content.push(renderTfoot ? renderTfoot() : null);\n    }\n\n    // Assemble `<table>`\n    const $table = h('table', {\n      staticClass: 'table b-table',\n      class: this.tableClasses,\n      attrs: this.tableAttrs,\n      key: 'b-table'\n    }, $content.filter(identity));\n\n    // Add responsive/sticky wrapper if needed and return table\n    return wrapperClasses.length > 0 ? h('div', {\n      class: wrapperClasses,\n      style: this.wrapperStyles,\n      key: 'wrap'\n    }, [$table]) : $table;\n  }\n});\n\nexport { props, tableRendererMixin };\n","import isString from 'lodash/isString';\nimport Pikaday from 'pikaday';\nimport { defaultDateFormat, datepickerWidthOptionsMap } from '../../../utils/constants';\nimport { areDatesEqual } from '../../../utils/datetime_utility';\nimport GlButton from '../button/button';\nimport GlFormInput from '../form/form_input/form_input';\nimport GlIcon from '../icon/icon';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst pad = function (val) {\n  let len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n  return `0${val}`.slice(-len);\n};\n\n/**\n * Used `onSelect` method in pickaday\n * @param {Date} date UTC format\n * @return {String} Date formated in yyyy-mm-dd\n */\nconst defaultDateFormatter = date => {\n  const day = pad(date.getDate());\n  const month = pad(date.getMonth() + 1);\n  const year = date.getFullYear();\n  return `${year}-${month}-${day}`;\n};\nconst isBefore = (compareTo, date) => compareTo && date && date.getTime() < compareTo.getTime();\nconst highlightPastDates = pikaday => {\n  const pikaButtons = pikaday.el.querySelectorAll('.pika-button');\n  const today = new Date();\n  pikaButtons.forEach(pikaButton => {\n    const {\n      pikaYear,\n      pikaMonth,\n      pikaDay\n    } = pikaButton.dataset;\n    const pikaButtonDate = new Date(pikaYear, pikaMonth, pikaDay);\n    if (isBefore(today, pikaButtonDate)) {\n      pikaButton.classList.add('is-past-date');\n    }\n  });\n};\nconst addAccessibleLabels = element => {\n  // Pikaday sets `role=\"heading\"`, which requires a corresponding\n  // `aria-level`. Ensure we have one.\n  const titleEl = element.querySelector('.pika-title[role=\"heading\"]');\n  if (titleEl) {\n    titleEl.setAttribute('aria-level', 3);\n  }\n\n  // Add aria-label to month & year select dropdowns\n  const monthEl = element.querySelector('select.pika-select-month');\n  if (monthEl) {\n    monthEl.setAttribute('aria-label', translate('GlDatepicker.monthLabel', 'Month'));\n  }\n  const yearEl = element.querySelector('select.pika-select-year');\n  if (yearEl) {\n    yearEl.setAttribute('aria-label', translate('GlDatepicker.yearLabel', 'Year'));\n  }\n};\nvar script = {\n  name: 'GlDatepicker',\n  components: {\n    GlFormInput,\n    GlIcon,\n    GlButton\n  },\n  props: {\n    /**\n     * Selector of element that triggers the datepicker. Defaults to the calendar icon. Pass `null` to trigger on input focus.\n     */\n    target: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * DOM node to render calendar into. Defaults to the datepicker container. Pass `null` to use Pikaday default.\n     */\n    container: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    value: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    minDate: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    maxDate: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    startRange: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    endRange: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    /**\n     * Accepts a function that accepts a date as argument and returns true if the date is disabled.\n     */\n    disableDayFn: {\n      type: Function,\n      required: false,\n      default: null\n    },\n    firstDay: {\n      type: Number,\n      required: false,\n      default: 0\n    },\n    ariaLabel: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    placeholder: {\n      type: String,\n      required: false,\n      default: defaultDateFormat\n    },\n    /**\n     * Defaults to `off` when datepicker opens on focus, otherwise defaults to `null`.\n     */\n    autocomplete: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    displayField: {\n      type: Boolean,\n      required: false,\n      default: true\n    },\n    startOpened: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Use this prop to set the initial date for the datepicker.\n     */\n    defaultDate: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    i18n: {\n      type: Object,\n      required: false,\n      default: null\n    },\n    theme: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    showClearButton: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    inputId: {\n      type: String,\n      required: false,\n      default: null\n    },\n    inputLabel: {\n      type: String,\n      required: false,\n      default: 'Enter date'\n    },\n    inputName: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Maximum width of the Datepicker\n     */\n    width: {\n      type: String,\n      required: false,\n      default: null,\n      validator: value => Object.keys(datepickerWidthOptionsMap).includes(value)\n    },\n    state: {\n      type: Boolean,\n      required: false,\n      default: null\n    }\n  },\n  data() {\n    return {\n      textInput: ''\n    };\n  },\n  computed: {\n    formattedDate() {\n      return 'calendar' in this ? this.calendar.toString() : '';\n    },\n    customTrigger() {\n      return isString(this.target) && this.target !== '';\n    },\n    triggerOnFocus() {\n      return this.target === null;\n    },\n    showDefaultField() {\n      return !this.customTrigger || this.triggerOnFocus;\n    },\n    renderClearButton() {\n      return this.showClearButton && this.textInput !== '' && !this.disabled;\n    },\n    inputAutocomplete() {\n      if (this.autocomplete !== '') {\n        return this.autocomplete;\n      }\n      if (this.triggerOnFocus) {\n        return 'off';\n      }\n      return null;\n    },\n    datepickerClasses() {\n      return ['gl-datepicker', 'gl-inline-block', 'gl-w-full',\n      // eslint-disable-next-line @gitlab/tailwind-no-interpolation -- Not a CSS utility\n      `gl-form-input-${this.computedWidth}`];\n    },\n    computedWidth() {\n      if (this.width) {\n        return this.width;\n      }\n      return 'md';\n    }\n  },\n  watch: {\n    value(val) {\n      if (!areDatesEqual(val, this.calendar.getDate())) {\n        this.calendar.setDate(val, true);\n      }\n    },\n    minDate(minDate) {\n      this.calendar.setMinDate(minDate);\n    },\n    maxDate(maxDate) {\n      this.calendar.setMaxDate(maxDate);\n    },\n    startRange(startRange) {\n      this.calendar.setStartRange(startRange);\n    },\n    endRange(endRange) {\n      this.calendar.setEndRange(endRange);\n    }\n  },\n  mounted() {\n    const $parentEl = this.$parent.$el;\n    const openedEvent = this.opened.bind(this);\n    const drawEvent = this.draw.bind(this);\n    const pikadayConfig = {\n      field: this.$el.querySelector('input[type=\"text\"]'),\n      // `!gl-absolute` is needed because of this bug: https://github.com/Pikaday/Pikaday/issues/840\n      theme: `gl-datepicker-theme !gl-absolute ${this.theme}`,\n      defaultDate: this.defaultDate || this.value,\n      setDefaultDate: Boolean(this.value) || Boolean(this.defaultDate),\n      minDate: this.minDate,\n      maxDate: this.maxDate,\n      // Only supports default gitlab format YYYY-MM-DD. We have to decide if we want to support other formats.\n      format: defaultDateFormat,\n      parse: dateString => {\n        const parsedDate = Date.parse(dateString.replace(/-/g, '/'));\n        return Number.isNaN(parsedDate) ? new Date() : new Date(parsedDate);\n      },\n      disableDayFn: this.disableDayFn,\n      firstDay: this.firstDay,\n      ariaLabel: this.ariaLabel,\n      toString: date => defaultDateFormatter(date),\n      onSelect: this.selected.bind(this),\n      onClose: this.closed.bind(this),\n      onOpen: () => {\n        addAccessibleLabels(this.$el);\n        openedEvent();\n      },\n      onDraw: pikaday => {\n        highlightPastDates(pikaday);\n        drawEvent();\n      }\n    };\n\n    // Pass `null` as `target` prop to use the `field` as the trigger (open on focus)\n    if (!this.triggerOnFocus && !this.disabled) {\n      const trigger = this.customTrigger ? $parentEl.querySelector(this.target) : this.$refs.calendarTriggerBtn.$el;\n      pikadayConfig.trigger = trigger;\n\n      // Set `trigger` as the `field` if `field` element doesn't exist (not passed via the slot)\n      if (!pikadayConfig.field && this.customTrigger) {\n        pikadayConfig.field = trigger;\n      }\n    }\n\n    // Pass `null` as `container` prop to prevent passing the `container` option to Pikaday\n    if (this.container !== null) {\n      const container = this.container ? $parentEl.querySelector(this.container) : this.$el;\n      pikadayConfig.container = container;\n    }\n    if (this.i18n) {\n      pikadayConfig.i18n = this.i18n;\n    }\n    this.calendar = new Pikaday(pikadayConfig);\n    if (this.startOpened) {\n      this.calendar.show();\n    }\n  },\n  beforeDestroy() {\n    this.calendar.destroy();\n  },\n  methods: {\n    // is used to open datepicker programmatically\n    show() {\n      this.calendar.show();\n    },\n    selected(date) {\n      /**\n       * Emitted when a new date has been selected.\n       * @property {Date} date The selected date\n       */\n      this.$emit('input', date);\n    },\n    closed() {\n      /**\n       * Emitted when the datepicker is hidden.\n       */\n      this.$emit('close');\n    },\n    opened() {\n      /**\n       * Emitted when the datepicker becomes visible.\n       */\n      this.$emit('open');\n    },\n    cleared() {\n      this.textInput = '';\n      /**\n       * Emitted when the clear button is clicked.\n       */\n      this.$emit('clear');\n    },\n    draw() {\n      /**\n       * Emitted when the datepicker draws a new month.\n       */\n      this.$emit('monthChange');\n    },\n    onKeydown() {\n      if (this.textInput === '') {\n        const resetDate = this.minDate || null;\n        this.calendar.setDate(resetDate);\n        this.selected(resetDate);\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('div',{class:_vm.datepickerClasses},[(_vm.showDefaultField)?_c('div',{staticClass:\"gl-flex gl-items-start gl-gap-3\"},[_c('div',{staticClass:\"gl-relative gl-flex gl-grow\"},[_vm._t(\"default\",function(){return [_c('gl-form-input',{class:_vm.renderClearButton ? '!gl-pr-9' : '!gl-pr-7',attrs:{\"id\":_vm.inputId,\"name\":_vm.inputName,\"data-testid\":\"gl-datepicker-input\",\"value\":_vm.formattedDate,\"placeholder\":_vm.placeholder,\"autocomplete\":_vm.inputAutocomplete,\"disabled\":_vm.disabled,\"aria-label\":_vm.inputLabel,\"state\":_vm.state},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onKeydown.apply(null, arguments)}},model:{value:(_vm.textInput),callback:function ($$v) {_vm.textInput=$$v;},expression:\"textInput\"}})]},{\"formattedDate\":_vm.formattedDate}),_vm._v(\" \"),_c('div',{staticClass:\"gl-datepicker-actions\"},[(_vm.renderClearButton)?_c('gl-button',{staticClass:\"gl-pointer-events-auto\",attrs:{\"data-testid\":\"clear-button\",\"aria-label\":\"Clear date\",\"category\":\"tertiary\",\"size\":\"small\",\"icon\":\"clear\"},on:{\"click\":_vm.cleared}}):_vm._e(),_vm._v(\" \"),(_vm.triggerOnFocus || _vm.disabled)?_c('span',{staticClass:\"gl-px-2\",class:_vm.disabled ? 'gl-text-gray-400' : 'gl-text-gray-500',attrs:{\"data-testid\":\"datepicker-calendar-icon\"}},[_c('gl-icon',{staticClass:\"gl-block\",attrs:{\"name\":\"calendar\",\"size\":16}})],1):_c('gl-button',{ref:\"calendarTriggerBtn\",staticClass:\"gl-pointer-events-auto\",attrs:{\"aria-label\":\"Open datepicker\",\"category\":\"tertiary\",\"size\":\"small\",\"icon\":\"calendar\"}})],1)],2),_vm._v(\" \"),_vm._t(\"after\")],2):_vm._t(\"default\",null,{\"formattedDate\":_vm.formattedDate})],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 { defaultDateFormatter, pad };\n","import { extend } from '../../vue';\nimport { NAME_TABLE_LITE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { props as props$1, idMixin } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { props as props$2, captionMixin } from './helpers/mixin-caption';\nimport { props as props$3, colgroupMixin } from './helpers/mixin-colgroup';\nimport { props as props$4, itemsMixin } from './helpers/mixin-items';\nimport { props as props$5, stackedMixin } from './helpers/mixin-stacked';\nimport { props as props$6, tableRendererMixin } from './helpers/mixin-table-renderer';\nimport { props as props$7, tbodyMixin } from './helpers/mixin-tbody';\nimport { props as props$8, tfootMixin } from './helpers/mixin-tfoot';\nimport { props as props$9, theadMixin } from './helpers/mixin-thead';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n  ...props$1,\n  ...props$2,\n  ...props$3,\n  ...props$4,\n  ...props$5,\n  ...props$6,\n  ...props$7,\n  ...props$8,\n  ...props$9\n}), NAME_TABLE_LITE);\n\n// --- Main component ---\n\n// @vue/component\nconst BTableLite = /*#__PURE__*/extend({\n  name: NAME_TABLE_LITE,\n  // Order of mixins is important!\n  // They are merged from first to last, followed by this component\n  mixins: [\n  // General mixins\n  attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin,\n  // Required table mixins\n  itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin,\n  // Table features mixins\n  // These are pretty lightweight, and are useful for lightweight tables\n  captionMixin, colgroupMixin],\n  props\n\n  // Render function is provided by `tableRendererMixin`\n});\n\nexport { BTableLite, props };\n","import { BTableLite } from '../../../vendor/bootstrap-vue/src/components/table/table-lite';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst {\n  tableClass\n} = BTableLite.options.props;\nvar script = {\n  name: 'GlTableLite',\n  components: {\n    BTableLite\n  },\n  inheritAttrs: false,\n  props: {\n    tableClass,\n    fields: {\n      type: Array,\n      required: false,\n      default: null\n    },\n    stickyHeader: {\n      type: Boolean,\n      default: false,\n      required: false\n    }\n  },\n  computed: {\n    stickyHeaderClass() {\n      return this.stickyHeader ? 'gl-table--sticky-header' : null;\n    },\n    localTableClass() {\n      return ['gl-table', this.tableClass, this.stickyHeaderClass];\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('b-table-lite',_vm._g(_vm._b({attrs:{\"table-class\":_vm.localTableClass,\"fields\":_vm.fields},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$scopedSlots)),function(slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)},'b-table-lite',_vm.$attrs,false),_vm.$listeners))};\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":""}