{"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":""}