{"version":3,"sources":["webpack:///./vue_shared/components/time_ago_tooltip.vue?5373","webpack:///./vue_shared/components/time_ago_tooltip.vue?97ef","webpack:///vue_shared/components/time_ago_tooltip.vue","webpack:///./vue_shared/components/time_ago_tooltip.vue","webpack:///./lib/utils/number_utils.js","webpack:////opt/gitlab/embedded/service/gitlab-rails/node_modules/stickyfilljs/dist/stickyfill.js","webpack:///./lib/utils/sticky.js","webpack:///./vue_shared/components/header_ci_component.vue?fae3","webpack:///./vue_shared/components/header_ci_component.vue?9fdd","webpack:///vue_shared/components/header_ci_component.vue","webpack:///./vue_shared/components/header_ci_component.vue","webpack:///./lib/utils/constants.js","webpack:///./jobs/stores/job_store.js","webpack:///./jobs/services/job_service.js","webpack:///./lib/utils/scroll_utils.js","webpack:///./lib/utils/logoutput_behaviours.js","webpack:///./job.js","webpack:///./jobs/job_details_mediator.js","webpack:///./build_variables.js","webpack:///vue_shared/components/callout.vue","webpack:///./vue_shared/components/callout.vue?9ca9","webpack:///./vue_shared/components/callout.vue","webpack:///./vue_shared/components/callout.vue?34c1","webpack:///./jobs/components/header.vue?5fd7","webpack:///jobs/components/header.vue","webpack:///./jobs/components/header.vue","webpack:///./jobs/components/header.vue?a118","webpack:///./jobs/components/sidebar_detail_row.vue?6a76","webpack:///jobs/components/sidebar_detail_row.vue","webpack:///./jobs/components/sidebar_detail_row.vue","webpack:///./jobs/components/sidebar_detail_row.vue?efe2","webpack:///./jobs/components/sidebar_details_block.vue?a134","webpack:///jobs/components/sidebar_details_block.vue","webpack:///./jobs/components/sidebar_details_block.vue","webpack:///./jobs/components/sidebar_details_block.vue?2e3d","webpack:///./pages/projects/jobs/show/index.js","webpack:///./jobs/job_details_bundle.js"],"names":["components_time_ago_tooltipvue_type_script_lang_js","directives","tooltip","mixins","timeago","props","time","type","String","required","tooltipPlacement","default","cssClass","component","Object","componentNormalizer","_h","this","$createElement","_self","_c","name","rawName","class","attrs","title","tooltipTitle","data-placement","data-container","domProps","textContent","_s","timeFormated","__webpack_exports__","formatRelevantDigits","number","relevantDigits","formattedNumber","isNaN","Number","toString","split","length","toFixed","bytesToMiB","_constants__WEBPACK_IMPORTED_MODULE_0__","numberToHumanSize","size","bytesToGiB","window","document","_createClass","defineProperties","target","i","descriptor","enumerable","configurable","writable","defineProperty","key","Constructor","protoProps","staticProps","prototype","seppuku","getComputedStyle","testNode","createElement","some","prefix","style","position","e","shadowRootExists","ShadowRoot","scroll","top","left","stickies","extend","targetObj","sourceObject","hasOwnProperty","parseNumeric","val","parseFloat","getDocOffsetTop","node","docOffsetTop","offsetTop","offsetParent","Sticky","instance","TypeError","_classCallCheck","HTMLElement","Error","sticky","_node","_stickyMode","_active","push","refresh","value","_removed","_deactivate","nodeComputedStyle","nodeComputedProps","display","marginTop","marginBottom","marginLeft","marginRight","cssFloat","referenceNode","parentNode","host","nodeWinOffset","getBoundingClientRect","parentWinOffset","parentComputedStyle","_parent","styles","offsetHeight","_offsetToWindow","right","documentElement","clientWidth","_offsetToParent","borderTopWidth","borderLeftWidth","borderRightWidth","_styles","bottom","width","nodeTopValue","_limits","start","pageYOffset","end","borderBottomWidth","parentPosition","_recalcPosition","clone","_clone","height","padding","border","borderSpacing","fontSize","insertBefore","stickyMode","Math","abs","_this","removeChild","_this2","index","splice","Stickyfill","addOne","add","nodeList","addedStickies","_loop","refreshAll","forEach","removeOne","remove","_loop2","removeAll","checkScroll","pageXOffset","addEventListener","fastCheckTimer","startFastCheckTimer","setInterval","_fastCheck","docHiddenKey","visibilityChangeEventName","clearInterval","init","module","exports","isSticky","el","scrollY","stickyTop","insertPlaceholder","floor","classList","contains","placeholder","createPlaceholder","heightBefore","nextElementSibling","stickyMonitor","arguments","undefined","CSS","supports","passive","polyfillSticky","stickyfilljs__WEBPACK_IMPORTED_MODULE_0___default","a","components_header_ci_componentvue_type_script_lang_js","components","CiIconBadge","ci_badge_link","LoadingIcon","loading_icon","TimeagoTooltip","time_ago_tooltip","UserAvatarImage","user_avatar_image","status","itemName","itemId","user","actions","Array","hasSidebarButton","Boolean","shouldRenderTriggeredLabel","computed","userAvatarAltText","methods","onClickAction","action","$emit","_vm","staticClass","_v","href","path","email","img-src","avatar_url","img-alt","tooltip-text","img-size","_e","_l","label","data-method","rel","disabled","isLoading","on","click","$event","expression","aria-hidden","aria-label","id","aria-labelledby","BYTES_IN_KIB","HIDDEN_CLASS","JobStore","state","job","JobService","endpoint","job_service_classCallCheck","axios_utils","get","scroll_utils_isScrolledToBottom","$document","jquery_default","currentPosition","scrollTop","scroll_utils_scrollDown","toggleDisableButton","$button","disable","prop","LogOutputBehaviours","logoutput_behaviours_classCallCheck","$scrollTopBtn","$scrollBottomBtn","off","scrollToTop","bind","scrollToBottom","scrollHeight","windowHeight","toggle","toggleClass","Job","options","job_classCallCheck","_possibleConstructorReturn","__proto__","getPrototypeOf","call","timeout","fetchingStatusFavicon","data","pagePath","buildStatus","logState","buildStage","$window","logBytes","updateDropdown","$buildTrace","$buildRefreshAnimation","$truncatedInfo","$buildTraceOutput","$topBar","clearTimeout","initSidebar","populateJobs","updateStageDropdownText","sidebarOnResize","sidebarOnClick","scrollThrottled","underscore_default","throttle","toggleScroll","isLogComplete","toggleScrollAnimation","initAffixTopArea","getBuildTrace","logoutput_behaviours","hasBeenScrolled","$sidebar","params","then","res","log","common_utils","catch","isScrollInBottom","append","html","total","number_utils","removeClass","addClass","complete","setTimeout","url_utility","bootstrapBreakpoint","breakpoints","getBreakpointSize","shouldHide","shouldShow","$toggleButton","hasClass","toggleSidebar","shouldHideSidebarForViewport","stage","hide","$","show","text","preventDefault","currentTarget","JobMediator","job_details_mediator_classCallCheck","store","job_store","service","job_service","build","poll","resource","method","successCallback","response","errorCallback","visibilityjs_default","hidden","getJob","makeRequest","change","stop","restart","storeJob","flash","calloutVariants","components_calloutvue_type_script_lang_js","category","validator","includes","message","callout","role","aria-live","components_headervue_type_script_lang_js","ciHeader","header_ci_component","loadingIcon","getActions","shouldRenderContent","keys","shouldRenderReason","callout_message","jobStarted","started","headerTime","created_at","watch","new_issue_path","header","item-name","item-id","has-sidebar-button","should-render-triggered-label","components_sidebar_detail_rowvue_type_script_lang_js","helpUrl","hasTitle","hasHelpURL","sidebar_detail_row","components_sidebar_details_blockvue_type_script_lang_js","detailRow","canUserRetry","runnerHelpUrl","coverage","duration","datetime_utility","queued","runnerId","runner","description","retryButtonClass","className","recoverable","hasTimeout","metadata","timeout_human_readable","t","timeout_source","renderBlock","merge_request","finished_data","erased_at","tags","cancel_path","sidebar_details_block","retry_path","__","data-hidden","block","iid","finished_at","help-url","tag","dataset","getElementById","mediator","job_details_mediator","fetchJob","vue_esm","jobHeader","mounted","initBuildClass","render","detailsBlockElement","detailsBlockDataset","detailsBlock"],"mappings":"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","file":"pages.projects.jobs.show.14a22f0d.chunk.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('time',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\"}],class:_vm.cssClass,attrs:{\"title\":_vm.tooltipTitle(_vm.time),\"data-placement\":_vm.tooltipPlacement,\"data-container\":\"body\"},domProps:{\"textContent\":_vm._s(_vm.timeFormated(_vm.time))}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./time_ago_tooltip.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./time_ago_tooltip.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./time_ago_tooltip.vue?vue&type=template&id=533016fc\"\nimport script from \"./time_ago_tooltip.vue?vue&type=script&lang=js\"\nexport * from \"./time_ago_tooltip.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 { BYTES_IN_KIB } from './constants';\n\n/**\n * Function that allows a number with an X amount of decimals\n * to be formatted in the following fashion:\n * * For 1 digit to the left of the decimal point and X digits to the right of it\n * * * Show 3 digits to the right\n * * For 2 digits to the left of the decimal point and X digits to the right of it\n * * * Show 2 digits to the right\n*/\nexport function formatRelevantDigits(number) {\n let digitsLeft = '';\n let relevantDigits = 0;\n let formattedNumber = '';\n if (!isNaN(Number(number))) {\n digitsLeft = number.toString().split('.')[0];\n switch (digitsLeft.length) {\n case 1:\n relevantDigits = 3;\n break;\n case 2:\n relevantDigits = 2;\n break;\n case 3:\n relevantDigits = 1;\n break;\n default:\n relevantDigits = 4;\n break;\n }\n formattedNumber = Number(number).toFixed(relevantDigits);\n }\n return formattedNumber;\n}\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 * Port of rails number_to_human_size\n * Formats the bytes in number into a more understandable\n * representation (e.g., giving it 1500 yields 1.5 KB).\n *\n * @param {Number} size\n * @returns {String}\n */\nexport function numberToHumanSize(size) {\n if (size < BYTES_IN_KIB) {\n return `${size} bytes`;\n } else if (size < BYTES_IN_KIB * BYTES_IN_KIB) {\n return `${bytesToKiB(size).toFixed(2)} KiB`;\n } else if (size < BYTES_IN_KIB * BYTES_IN_KIB * BYTES_IN_KIB) {\n return `${bytesToMiB(size).toFixed(2)} MiB`;\n }\n return `${bytesToGiB(size).toFixed(2)} GiB`;\n}\n","/*!\r\n * Stickyfill – `position: sticky` polyfill\r\n * v. 2.0.5 | https://github.com/wilddeer/stickyfill\r\n * MIT License\r\n */\r\n\r\n;(function(window, document) {\r\n 'use strict';\r\n \r\n /*\r\n * 1. Check if the browser supports `position: sticky` natively or is too old to run the polyfill.\r\n * If either of these is the case set `seppuku` flag. It will be checked later to disable key features\r\n * of the polyfill, but the API will remain functional to avoid breaking things.\r\n */\r\n \r\n var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n \r\n function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n \r\n var seppuku = false;\r\n \r\n // The polyfill cant’t function properly without `getComputedStyle`.\r\n if (!window.getComputedStyle) seppuku = true;\r\n // Dont’t get in a way if the browser supports `position: sticky` natively.\r\n else {\r\n var testNode = document.createElement('div');\r\n \r\n if (['', '-webkit-', '-moz-', '-ms-'].some(function (prefix) {\r\n try {\r\n testNode.style.position = prefix + 'sticky';\r\n } catch (e) {}\r\n \r\n return testNode.style.position != '';\r\n })) seppuku = true;\r\n }\r\n \r\n /*\r\n * 2. “Global” vars used across the polyfill\r\n */\r\n \r\n // Check if Shadow Root constructor exists to make further checks simpler\r\n var shadowRootExists = typeof ShadowRoot !== 'undefined';\r\n \r\n // Last saved scroll position\r\n var scroll = {\r\n top: null,\r\n left: null\r\n };\r\n \r\n // Array of created Sticky instances\r\n var stickies = [];\r\n \r\n /*\r\n * 3. Utility functions\r\n */\r\n function extend(targetObj, sourceObject) {\r\n for (var key in sourceObject) {\r\n if (sourceObject.hasOwnProperty(key)) {\r\n targetObj[key] = sourceObject[key];\r\n }\r\n }\r\n }\r\n \r\n function parseNumeric(val) {\r\n return parseFloat(val) || 0;\r\n }\r\n \r\n function getDocOffsetTop(node) {\r\n var docOffsetTop = 0;\r\n \r\n while (node) {\r\n docOffsetTop += node.offsetTop;\r\n node = node.offsetParent;\r\n }\r\n \r\n return docOffsetTop;\r\n }\r\n \r\n /*\r\n * 4. Sticky class\r\n */\r\n \r\n var Sticky = function () {\r\n function Sticky(node) {\r\n _classCallCheck(this, Sticky);\r\n \r\n if (!(node instanceof HTMLElement)) throw new Error('First argument must be HTMLElement');\r\n if (stickies.some(function (sticky) {\r\n return sticky._node === node;\r\n })) throw new Error('Stickyfill is already applied to this node');\r\n \r\n this._node = node;\r\n this._stickyMode = null;\r\n this._active = false;\r\n \r\n stickies.push(this);\r\n \r\n this.refresh();\r\n }\r\n \r\n _createClass(Sticky, [{\r\n key: 'refresh',\r\n value: function refresh() {\r\n if (seppuku || this._removed) return;\r\n if (this._active) this._deactivate();\r\n \r\n var node = this._node;\r\n \r\n /*\r\n * 1. Save node computed props\r\n */\r\n var nodeComputedStyle = getComputedStyle(node);\r\n var nodeComputedProps = {\r\n top: nodeComputedStyle.top,\r\n display: nodeComputedStyle.display,\r\n marginTop: nodeComputedStyle.marginTop,\r\n marginBottom: nodeComputedStyle.marginBottom,\r\n marginLeft: nodeComputedStyle.marginLeft,\r\n marginRight: nodeComputedStyle.marginRight,\r\n cssFloat: nodeComputedStyle.cssFloat\r\n };\r\n \r\n /*\r\n * 2. Check if the node can be activated\r\n */\r\n if (isNaN(parseFloat(nodeComputedProps.top)) || nodeComputedProps.display == 'table-cell' || nodeComputedProps.display == 'none') return;\r\n \r\n this._active = true;\r\n \r\n /*\r\n * 3. Get necessary node parameters\r\n */\r\n var referenceNode = node.parentNode;\r\n var parentNode = shadowRootExists && referenceNode instanceof ShadowRoot ? referenceNode.host : referenceNode;\r\n var nodeWinOffset = node.getBoundingClientRect();\r\n var parentWinOffset = parentNode.getBoundingClientRect();\r\n var parentComputedStyle = getComputedStyle(parentNode);\r\n \r\n this._parent = {\r\n node: parentNode,\r\n styles: {\r\n position: parentNode.style.position\r\n },\r\n offsetHeight: parentNode.offsetHeight\r\n };\r\n this._offsetToWindow = {\r\n left: nodeWinOffset.left,\r\n right: document.documentElement.clientWidth - nodeWinOffset.right\r\n };\r\n this._offsetToParent = {\r\n top: nodeWinOffset.top - parentWinOffset.top - parseNumeric(parentComputedStyle.borderTopWidth),\r\n left: nodeWinOffset.left - parentWinOffset.left - parseNumeric(parentComputedStyle.borderLeftWidth),\r\n right: -nodeWinOffset.right + parentWinOffset.right - parseNumeric(parentComputedStyle.borderRightWidth)\r\n };\r\n this._styles = {\r\n position: node.style.position,\r\n top: node.style.top,\r\n bottom: node.style.bottom,\r\n left: node.style.left,\r\n right: node.style.right,\r\n width: node.style.width,\r\n marginTop: node.style.marginTop,\r\n marginLeft: node.style.marginLeft,\r\n marginRight: node.style.marginRight\r\n };\r\n \r\n var nodeTopValue = parseNumeric(nodeComputedProps.top);\r\n this._limits = {\r\n start: nodeWinOffset.top + window.pageYOffset - nodeTopValue,\r\n end: parentWinOffset.top + window.pageYOffset + parentNode.offsetHeight - parseNumeric(parentComputedStyle.borderBottomWidth) - node.offsetHeight - nodeTopValue - parseNumeric(nodeComputedProps.marginBottom)\r\n };\r\n \r\n /*\r\n * 4. Ensure that the node will be positioned relatively to the parent node\r\n */\r\n var parentPosition = parentComputedStyle.position;\r\n \r\n if (parentPosition != 'absolute' && parentPosition != 'relative') {\r\n parentNode.style.position = 'relative';\r\n }\r\n \r\n /*\r\n * 5. Recalc node position.\r\n * It’s important to do this before clone injection to avoid scrolling bug in Chrome.\r\n */\r\n this._recalcPosition();\r\n \r\n /*\r\n * 6. Create a clone\r\n */\r\n var clone = this._clone = {};\r\n clone.node = document.createElement('div');\r\n \r\n // Apply styles to the clone\r\n extend(clone.node.style, {\r\n width: nodeWinOffset.right - nodeWinOffset.left + 'px',\r\n height: nodeWinOffset.bottom - nodeWinOffset.top + 'px',\r\n marginTop: nodeComputedProps.marginTop,\r\n marginBottom: nodeComputedProps.marginBottom,\r\n marginLeft: nodeComputedProps.marginLeft,\r\n marginRight: nodeComputedProps.marginRight,\r\n cssFloat: nodeComputedProps.cssFloat,\r\n padding: 0,\r\n border: 0,\r\n borderSpacing: 0,\r\n fontSize: '1em',\r\n position: 'static'\r\n });\r\n \r\n referenceNode.insertBefore(clone.node, node);\r\n clone.docOffsetTop = getDocOffsetTop(clone.node);\r\n }\r\n }, {\r\n key: '_recalcPosition',\r\n value: function _recalcPosition() {\r\n if (!this._active || this._removed) return;\r\n \r\n var stickyMode = scroll.top <= this._limits.start ? 'start' : scroll.top >= this._limits.end ? 'end' : 'middle';\r\n \r\n if (this._stickyMode == stickyMode) return;\r\n \r\n switch (stickyMode) {\r\n case 'start':\r\n extend(this._node.style, {\r\n position: 'absolute',\r\n left: this._offsetToParent.left + 'px',\r\n right: this._offsetToParent.right + 'px',\r\n top: this._offsetToParent.top + 'px',\r\n bottom: 'auto',\r\n width: 'auto',\r\n marginLeft: 0,\r\n marginRight: 0,\r\n marginTop: 0\r\n });\r\n break;\r\n \r\n case 'middle':\r\n extend(this._node.style, {\r\n position: 'fixed',\r\n left: this._offsetToWindow.left + 'px',\r\n right: this._offsetToWindow.right + 'px',\r\n top: this._styles.top,\r\n bottom: 'auto',\r\n width: 'auto',\r\n marginLeft: 0,\r\n marginRight: 0,\r\n marginTop: 0\r\n });\r\n break;\r\n \r\n case 'end':\r\n extend(this._node.style, {\r\n position: 'absolute',\r\n left: this._offsetToParent.left + 'px',\r\n right: this._offsetToParent.right + 'px',\r\n top: 'auto',\r\n bottom: 0,\r\n width: 'auto',\r\n marginLeft: 0,\r\n marginRight: 0\r\n });\r\n break;\r\n }\r\n \r\n this._stickyMode = stickyMode;\r\n }\r\n }, {\r\n key: '_fastCheck',\r\n value: function _fastCheck() {\r\n if (!this._active || this._removed) return;\r\n \r\n if (Math.abs(getDocOffsetTop(this._clone.node) - this._clone.docOffsetTop) > 1 || Math.abs(this._parent.node.offsetHeight - this._parent.offsetHeight) > 1) this.refresh();\r\n }\r\n }, {\r\n key: '_deactivate',\r\n value: function _deactivate() {\r\n var _this = this;\r\n \r\n if (!this._active || this._removed) return;\r\n \r\n this._clone.node.parentNode.removeChild(this._clone.node);\r\n delete this._clone;\r\n \r\n extend(this._node.style, this._styles);\r\n delete this._styles;\r\n \r\n // Check whether element’s parent node is used by other stickies.\r\n // If not, restore parent node’s styles.\r\n if (!stickies.some(function (sticky) {\r\n return sticky !== _this && sticky._parent && sticky._parent.node === _this._parent.node;\r\n })) {\r\n extend(this._parent.node.style, this._parent.styles);\r\n }\r\n delete this._parent;\r\n \r\n this._stickyMode = null;\r\n this._active = false;\r\n \r\n delete this._offsetToWindow;\r\n delete this._offsetToParent;\r\n delete this._limits;\r\n }\r\n }, {\r\n key: 'remove',\r\n value: function remove() {\r\n var _this2 = this;\r\n \r\n this._deactivate();\r\n \r\n stickies.some(function (sticky, index) {\r\n if (sticky._node === _this2._node) {\r\n stickies.splice(index, 1);\r\n return true;\r\n }\r\n });\r\n \r\n this._removed = true;\r\n }\r\n }]);\r\n \r\n return Sticky;\r\n }();\r\n \r\n /*\r\n * 5. Stickyfill API\r\n */\r\n \r\n \r\n var Stickyfill = {\r\n stickies: stickies,\r\n Sticky: Sticky,\r\n \r\n addOne: function addOne(node) {\r\n // Check whether it’s a node\r\n if (!(node instanceof HTMLElement)) {\r\n // Maybe it’s a node list of some sort?\r\n // Take first node from the list then\r\n if (node.length && node[0]) node = node[0];else return;\r\n }\r\n \r\n // Check if Stickyfill is already applied to the node\r\n // and return existing sticky\r\n for (var i = 0; i < stickies.length; i++) {\r\n if (stickies[i]._node === node) return stickies[i];\r\n }\r\n \r\n // Create and return new sticky\r\n return new Sticky(node);\r\n },\r\n add: function add(nodeList) {\r\n // If it’s a node make an array of one node\r\n if (nodeList instanceof HTMLElement) nodeList = [nodeList];\r\n // Check if the argument is an iterable of some sort\r\n if (!nodeList.length) return;\r\n \r\n // Add every element as a sticky and return an array of created Sticky instances\r\n var addedStickies = [];\r\n \r\n var _loop = function _loop(i) {\r\n var node = nodeList[i];\r\n \r\n // If it’s not an HTMLElement – create an empty element to preserve 1-to-1\r\n // correlation with input list\r\n if (!(node instanceof HTMLElement)) {\r\n addedStickies.push(void 0);\r\n return 'continue';\r\n }\r\n \r\n // If Stickyfill is already applied to the node\r\n // add existing sticky\r\n if (stickies.some(function (sticky) {\r\n if (sticky._node === node) {\r\n addedStickies.push(sticky);\r\n return true;\r\n }\r\n })) return 'continue';\r\n \r\n // Create and add new sticky\r\n addedStickies.push(new Sticky(node));\r\n };\r\n \r\n for (var i = 0; i < nodeList.length; i++) {\r\n var _ret = _loop(i);\r\n \r\n if (_ret === 'continue') continue;\r\n }\r\n \r\n return addedStickies;\r\n },\r\n refreshAll: function refreshAll() {\r\n stickies.forEach(function (sticky) {\r\n return sticky.refresh();\r\n });\r\n },\r\n removeOne: function removeOne(node) {\r\n // Check whether it’s a node\r\n if (!(node instanceof HTMLElement)) {\r\n // Maybe it’s a node list of some sort?\r\n // Take first node from the list then\r\n if (node.length && node[0]) node = node[0];else return;\r\n }\r\n \r\n // Remove the stickies bound to the nodes in the list\r\n stickies.some(function (sticky) {\r\n if (sticky._node === node) {\r\n sticky.remove();\r\n return true;\r\n }\r\n });\r\n },\r\n remove: function remove(nodeList) {\r\n // If it’s a node make an array of one node\r\n if (nodeList instanceof HTMLElement) nodeList = [nodeList];\r\n // Check if the argument is an iterable of some sort\r\n if (!nodeList.length) return;\r\n \r\n // Remove the stickies bound to the nodes in the list\r\n \r\n var _loop2 = function _loop2(i) {\r\n var node = nodeList[i];\r\n \r\n stickies.some(function (sticky) {\r\n if (sticky._node === node) {\r\n sticky.remove();\r\n return true;\r\n }\r\n });\r\n };\r\n \r\n for (var i = 0; i < nodeList.length; i++) {\r\n _loop2(i);\r\n }\r\n },\r\n removeAll: function removeAll() {\r\n while (stickies.length) {\r\n stickies[0].remove();\r\n }\r\n }\r\n };\r\n \r\n /*\r\n * 6. Setup events (unless the polyfill was disabled)\r\n */\r\n function init() {\r\n // Watch for scroll position changes and trigger recalc/refresh if needed\r\n function checkScroll() {\r\n if (window.pageXOffset != scroll.left) {\r\n scroll.top = window.pageYOffset;\r\n scroll.left = window.pageXOffset;\r\n \r\n Stickyfill.refreshAll();\r\n } else if (window.pageYOffset != scroll.top) {\r\n scroll.top = window.pageYOffset;\r\n scroll.left = window.pageXOffset;\r\n \r\n // recalc position for all stickies\r\n stickies.forEach(function (sticky) {\r\n return sticky._recalcPosition();\r\n });\r\n }\r\n }\r\n \r\n checkScroll();\r\n window.addEventListener('scroll', checkScroll);\r\n \r\n // Watch for window resizes and device orientation changes and trigger refresh\r\n window.addEventListener('resize', Stickyfill.refreshAll);\r\n window.addEventListener('orientationchange', Stickyfill.refreshAll);\r\n \r\n //Fast dirty check for layout changes every 500ms\r\n var fastCheckTimer = void 0;\r\n \r\n function startFastCheckTimer() {\r\n fastCheckTimer = setInterval(function () {\r\n stickies.forEach(function (sticky) {\r\n return sticky._fastCheck();\r\n });\r\n }, 500);\r\n }\r\n \r\n function stopFastCheckTimer() {\r\n clearInterval(fastCheckTimer);\r\n }\r\n \r\n var docHiddenKey = void 0;\r\n var visibilityChangeEventName = void 0;\r\n \r\n if ('hidden' in document) {\r\n docHiddenKey = 'hidden';\r\n visibilityChangeEventName = 'visibilitychange';\r\n } else if ('webkitHidden' in document) {\r\n docHiddenKey = 'webkitHidden';\r\n visibilityChangeEventName = 'webkitvisibilitychange';\r\n }\r\n \r\n if (visibilityChangeEventName) {\r\n if (!document[docHiddenKey]) startFastCheckTimer();\r\n \r\n document.addEventListener(visibilityChangeEventName, function () {\r\n if (document[docHiddenKey]) {\r\n stopFastCheckTimer();\r\n } else {\r\n startFastCheckTimer();\r\n }\r\n });\r\n } else startFastCheckTimer();\r\n }\r\n \r\n if (!seppuku) init();\r\n \r\n /*\r\n * 7. Expose Stickyfill\r\n */\r\n if (typeof module != 'undefined' && module.exports) {\r\n module.exports = Stickyfill;\r\n } else {\r\n window.Stickyfill = Stickyfill;\r\n }\r\n \r\n})(window, document);","import StickyFill from 'stickyfilljs';\n\nexport const createPlaceholder = () => {\n const placeholder = document.createElement('div');\n placeholder.classList.add('sticky-placeholder');\n\n return placeholder;\n};\n\nexport const isSticky = (el, scrollY, stickyTop, insertPlaceholder) => {\n const top = Math.floor(el.offsetTop - scrollY);\n\n if (top <= stickyTop && !el.classList.contains('is-stuck')) {\n const placeholder = insertPlaceholder ? createPlaceholder() : null;\n const heightBefore = el.offsetHeight;\n\n el.classList.add('is-stuck');\n\n if (insertPlaceholder) {\n el.parentNode.insertBefore(placeholder, el.nextElementSibling);\n\n placeholder.style.height = `${heightBefore - el.offsetHeight}px`;\n }\n } else if (top > stickyTop && el.classList.contains('is-stuck')) {\n el.classList.remove('is-stuck');\n\n if (insertPlaceholder && el.nextElementSibling && el.nextElementSibling.classList.contains('sticky-placeholder')) {\n el.nextElementSibling.remove();\n }\n }\n};\n\n/**\n * Create a listener that will toggle a 'is-stuck' class, based on the current scroll position.\n *\n * - If the current environment does not support `position: sticky`, do nothing.\n *\n * @param {HTMLElement} el The `position: sticky` element.\n * @param {Number} stickyTop Used to determine when an element is stuck.\n * @param {Boolean} insertPlaceholder Should a placeholder element be created when element is stuck?\n */\nexport const stickyMonitor = (el, stickyTop, insertPlaceholder = true) => {\n if (!el) return;\n\n if (typeof CSS === 'undefined' || !(CSS.supports('(position: -webkit-sticky) or (position: sticky)'))) return;\n\n document.addEventListener('scroll', () => isSticky(el, window.scrollY, stickyTop, insertPlaceholder), {\n passive: true,\n });\n};\n\n/**\n * Polyfill the `position: sticky` behavior.\n *\n * - If the current environment supports `position: sticky`, do nothing.\n * - Can receive an iterable element list (NodeList, jQuery collection, etc.) or single HTMLElement.\n */\nexport const polyfillSticky = (el) => {\n StickyFill.add(el);\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:\"page-content-header ci-header-container\"},[_c('section',{staticClass:\"header-main-content\"},[_c('ci-icon-badge',{attrs:{\"status\":_vm.status}}),_vm._v(\" \"),_c('strong',[_vm._v(\"\\n \"+_vm._s(_vm.itemName)+\" #\"+_vm._s(_vm.itemId)+\"\\n \")]),_vm._v(\" \"),(_vm.shouldRenderTriggeredLabel)?[_vm._v(\"\\n 触发时间\\n \")]:[_vm._v(\"\\n 创建时间\\n \")],_vm._v(\" \"),_c('timeago-tooltip',{attrs:{\"time\":_vm.time}}),_vm._v(\"\\n\\n 作者\\n\\n \"),(_vm.user)?[_c('a',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\"}],staticClass:\"js-user-link commit-committer-link\",attrs:{\"href\":_vm.user.path,\"title\":_vm.user.email}},[_c('user-avatar-image',{attrs:{\"img-src\":_vm.user.avatar_url,\"img-alt\":_vm.userAvatarAltText,\"tooltip-text\":_vm.user.name,\"img-size\":24}}),_vm._v(\"\\n\\n \"+_vm._s(_vm.user.name)+\"\\n \")],1)]:_vm._e()],2),_vm._v(\" \"),(_vm.actions.length)?_c('section',{staticClass:\"header-action-buttons\"},[_vm._l((_vm.actions),function(action,i){return [(action.type === 'link')?_c('a',{key:i,class:action.cssClass,attrs:{\"href\":action.path}},[_vm._v(\"\\n \"+_vm._s(action.label)+\"\\n \")]):(action.type === 'ujs-link')?_c('a',{key:i,class:action.cssClass,attrs:{\"href\":action.path,\"data-method\":\"post\",\"rel\":\"nofollow\"}},[_vm._v(\"\\n \"+_vm._s(action.label)+\"\\n \")]):(action.type === 'button')?_c('button',{key:i,class:action.cssClass,attrs:{\"disabled\":action.isLoading,\"type\":\"button\"},on:{\"click\":function($event){_vm.onClickAction(action)}}},[_vm._v(\"\\n \"+_vm._s(action.label)+\"\\n \"),_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(action.isLoading),expression:\"action.isLoading\"}],staticClass:\"fa fa-spin fa-spinner\",attrs:{\"aria-hidden\":\"true\"}})]):_vm._e()]}),_vm._v(\" \"),(_vm.hasSidebarButton)?_c('button',{staticClass:\"btn btn-default d-block d-sm-none d-md-none\\nsidebar-toggle-btn js-sidebar-build-toggle js-sidebar-build-toggle-header\",attrs:{\"type\":\"button\",\"aria-label\":\"Toggle Sidebar\",\"id\":\"toggleSidebar\"}},[_c('i',{staticClass:\"fa fa-angle-double-left\",attrs:{\"aria-hidden\":\"true\",\"aria-labelledby\":\"toggleSidebar\"}})]):_vm._e()],2):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header_ci_component.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header_ci_component.vue?vue&type=script&lang=js\"","\n\n\n \n \n \n \n \n \n\n","import { render, staticRenderFns } from \"./header_ci_component.vue?vue&type=template&id=0c42ffad\"\nimport script from \"./header_ci_component.vue?vue&type=script&lang=js\"\nexport * from \"./header_ci_component.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","export const BYTES_IN_KIB = 1024;\nexport const HIDDEN_CLASS = 'hidden';\n","export default class JobStore {\n constructor() {\n this.state = {\n job: {},\n };\n }\n\n storeJob(job = {}) {\n this.state.job = job;\n }\n}\n","import axios from '../../lib/utils/axios_utils';\n\nexport default class JobService {\n constructor(endpoint) {\n this.job = endpoint;\n }\n\n getJob() {\n return axios.get(this.job);\n }\n}\n","import $ from 'jquery';\n\nexport const canScroll = () => $(document).height() > $(window).height();\n\n/**\n * Checks if the entire page is scrolled down all the way to the bottom\n */\nexport const isScrolledToBottom = () => {\n const $document = $(document);\n\n const currentPosition = $document.scrollTop();\n const scrollHeight = $document.height();\n\n const windowHeight = $(window).height();\n\n return scrollHeight - currentPosition === windowHeight;\n};\n\nexport const scrollDown = () => {\n const $document = $(document);\n $document.scrollTop($document.height());\n};\n\nexport const toggleDisableButton = ($button, disable) => {\n if (disable && $button.prop('disabled')) return;\n $button.prop('disabled', disable);\n};\n\nexport default {};\n","import $ from 'jquery';\nimport { canScroll, isScrolledToBottom, toggleDisableButton } from './scroll_utils';\n\nexport default class LogOutputBehaviours {\n constructor() {\n // Scroll buttons\n this.$scrollTopBtn = $('.js-scroll-up');\n this.$scrollBottomBtn = $('.js-scroll-down');\n\n this.$scrollTopBtn.off('click').on('click', this.scrollToTop.bind(this));\n this.$scrollBottomBtn.off('click').on('click', this.scrollToBottom.bind(this));\n }\n\n toggleScroll() {\n const $document = $(document);\n const currentPosition = $document.scrollTop();\n const scrollHeight = $document.height();\n\n const windowHeight = $(window).height();\n if (canScroll()) {\n if (currentPosition > 0 && scrollHeight - currentPosition !== windowHeight) {\n // User is in the middle of the log\n\n toggleDisableButton(this.$scrollTopBtn, false);\n toggleDisableButton(this.$scrollBottomBtn, false);\n } else if (currentPosition === 0) {\n // User is at Top of Log\n\n toggleDisableButton(this.$scrollTopBtn, true);\n toggleDisableButton(this.$scrollBottomBtn, false);\n } else if (isScrolledToBottom()) {\n // User is at the bottom of the build log.\n\n toggleDisableButton(this.$scrollTopBtn, false);\n toggleDisableButton(this.$scrollBottomBtn, true);\n }\n } else {\n toggleDisableButton(this.$scrollTopBtn, true);\n toggleDisableButton(this.$scrollBottomBtn, true);\n }\n }\n\n toggleScrollAnimation(toggle) {\n this.$scrollBottomBtn.toggleClass('animate', toggle);\n }\n}\n","import $ from 'jquery';\nimport _ from 'underscore';\nimport { polyfillSticky } from './lib/utils/sticky';\nimport axios from './lib/utils/axios_utils';\nimport { visitUrl } from './lib/utils/url_utility';\nimport bp from './breakpoints';\nimport { numberToHumanSize } from './lib/utils/number_utils';\nimport { setCiStatusFavicon } from './lib/utils/common_utils';\nimport { isScrolledToBottom, scrollDown } from './lib/utils/scroll_utils';\nimport LogOutputBehaviours from './lib/utils/logoutput_behaviours';\n\nexport default class Job extends LogOutputBehaviours {\n constructor(options) {\n super();\n this.timeout = null;\n this.state = null;\n this.fetchingStatusFavicon = false;\n this.options = options || $('.js-build-options').data();\n\n this.pagePath = this.options.pagePath;\n this.buildStatus = this.options.buildStatus;\n this.state = this.options.logState;\n this.buildStage = this.options.buildStage;\n this.$document = $(document);\n this.$window = $(window);\n this.logBytes = 0;\n this.updateDropdown = this.updateDropdown.bind(this);\n\n this.$buildTrace = $('#build-trace');\n this.$buildRefreshAnimation = $('.js-build-refresh');\n this.$truncatedInfo = $('.js-truncated-info');\n this.$buildTraceOutput = $('.js-build-output');\n this.$topBar = $('.js-top-bar');\n\n clearTimeout(this.timeout);\n\n this.initSidebar();\n this.populateJobs(this.buildStage);\n this.updateStageDropdownText(this.buildStage);\n this.sidebarOnResize();\n\n this.$document\n .off('click', '.js-sidebar-build-toggle')\n .on('click', '.js-sidebar-build-toggle', this.sidebarOnClick.bind(this));\n\n this.$document\n .off('click', '.stage-item')\n .on('click', '.stage-item', this.updateDropdown);\n\n this.scrollThrottled = _.throttle(this.toggleScroll.bind(this), 100);\n\n this.$window\n .off('scroll')\n .on('scroll', () => {\n if (!isScrolledToBottom()) {\n this.toggleScrollAnimation(false);\n } else if (isScrolledToBottom() && !this.isLogComplete) {\n this.toggleScrollAnimation(true);\n }\n this.scrollThrottled();\n });\n\n this.$window\n .off('resize.build')\n .on('resize.build', _.throttle(this.sidebarOnResize.bind(this), 100));\n\n this.initAffixTopArea();\n\n this.getBuildTrace();\n }\n\n initAffixTopArea() {\n polyfillSticky(this.$topBar);\n }\n\n scrollToBottom() {\n scrollDown();\n this.hasBeenScrolled = true;\n this.toggleScroll();\n }\n\n scrollToTop() {\n $(document).scrollTop(0);\n this.hasBeenScrolled = true;\n this.toggleScroll();\n }\n\n toggleScrollAnimation(toggle) {\n this.$scrollBottomBtn.toggleClass('animate', toggle);\n }\n\n initSidebar() {\n this.$sidebar = $('.js-build-sidebar');\n }\n\n getBuildTrace() {\n return axios.get(`${this.pagePath}/trace.json`, {\n params: { state: this.state },\n })\n .then((res) => {\n const log = res.data;\n\n if (!this.fetchingStatusFavicon) {\n this.fetchingStatusFavicon = true;\n\n setCiStatusFavicon(`${this.pagePath}/status.json`)\n .then(() => {\n this.fetchingStatusFavicon = false;\n })\n .catch(() => {\n this.fetchingStatusFavicon = false;\n });\n }\n\n if (log.state) {\n this.state = log.state;\n }\n\n this.isScrollInBottom = isScrolledToBottom();\n\n if (log.append) {\n this.$buildTraceOutput.append(log.html);\n this.logBytes += log.size;\n } else {\n this.$buildTraceOutput.html(log.html);\n this.logBytes = log.size;\n }\n\n // if the incremental sum of logBytes we received is less than the total\n // we need to show a message warning the user about that.\n if (this.logBytes < log.total) {\n // size is in bytes, we need to calculate KiB\n const size = numberToHumanSize(this.logBytes);\n $('.js-truncated-info-size').html(`${size}`);\n this.$truncatedInfo.removeClass('hidden');\n } else {\n this.$truncatedInfo.addClass('hidden');\n }\n this.isLogComplete = log.complete;\n\n if (log.complete === false) {\n this.timeout = setTimeout(() => {\n this.getBuildTrace();\n }, 4000);\n } else {\n this.$buildRefreshAnimation.remove();\n this.toggleScrollAnimation(false);\n }\n\n if (log.status !== this.buildStatus) {\n visitUrl(this.pagePath);\n }\n })\n .catch(() => {\n this.$buildRefreshAnimation.remove();\n })\n .then(() => {\n if (this.isScrollInBottom) {\n scrollDown();\n }\n })\n .then(() => this.toggleScroll());\n }\n // eslint-disable-next-line class-methods-use-this\n shouldHideSidebarForViewport() {\n const bootstrapBreakpoint = bp.getBreakpointSize();\n return bootstrapBreakpoint === 'xs' || bootstrapBreakpoint === 'sm';\n }\n\n toggleSidebar(shouldHide) {\n const shouldShow = typeof shouldHide === 'boolean' ? !shouldHide : undefined;\n const $toggleButton = $('.js-sidebar-build-toggle-header');\n\n this.$sidebar\n .toggleClass('right-sidebar-expanded', shouldShow)\n .toggleClass('right-sidebar-collapsed', shouldHide);\n\n this.$topBar\n .toggleClass('sidebar-expanded', shouldShow)\n .toggleClass('sidebar-collapsed', shouldHide);\n\n if (this.$sidebar.hasClass('right-sidebar-expanded')) {\n $toggleButton.addClass('hidden');\n } else {\n $toggleButton.removeClass('hidden');\n }\n }\n\n sidebarOnResize() {\n this.toggleSidebar(this.shouldHideSidebarForViewport());\n }\n\n sidebarOnClick() {\n if (this.shouldHideSidebarForViewport()) this.toggleSidebar();\n }\n\n // eslint-disable-next-line class-methods-use-this\n populateJobs(stage) {\n $('.build-job').hide();\n $(`.build-job[data-stage=\"${stage}\"]`).show();\n }\n // eslint-disable-next-line class-methods-use-this\n updateStageDropdownText(stage) {\n $('.stage-selection').text(stage);\n }\n\n updateDropdown(e) {\n e.preventDefault();\n const stage = e.currentTarget.text;\n this.updateStageDropdownText(stage);\n this.populateJobs(stage);\n }\n}\n","import Visibility from 'visibilityjs';\nimport Flash from '../flash';\nimport Poll from '../lib/utils/poll';\nimport JobStore from './stores/job_store';\nimport JobService from './services/job_service';\nimport Job from '../job';\nimport handleRevealVariables from '../build_variables';\n\nexport default class JobMediator {\n constructor(options = {}) {\n this.options = options;\n\n this.store = new JobStore();\n this.service = new JobService(options.endpoint);\n\n this.state = {\n isLoading: false,\n };\n }\n\n initBuildClass() {\n this.build = new Job();\n handleRevealVariables();\n }\n\n fetchJob() {\n this.poll = new Poll({\n resource: this.service,\n method: 'getJob',\n successCallback: response => this.successCallback(response),\n errorCallback: () => this.errorCallback(),\n });\n\n if (!Visibility.hidden()) {\n this.state.isLoading = true;\n this.poll.makeRequest();\n } else {\n this.getJob();\n }\n\n Visibility.change(() => {\n if (!Visibility.hidden()) {\n this.poll.restart();\n } else {\n this.poll.stop();\n }\n });\n }\n\n getJob() {\n return this.service\n .getJob()\n .then(response => this.successCallback(response))\n .catch(() => this.errorCallback());\n }\n\n successCallback(response) {\n this.state.isLoading = false;\n return this.store.storeJob(response.data);\n }\n\n errorCallback() {\n this.state.isLoading = false;\n\n return new Flash('An error occurred while fetching the job.');\n }\n}\n","import $ from 'jquery';\n\nexport default function handleRevealVariables() {\n $('.js-reveal-variables')\n .off('click')\n .on('click', function click() {\n $('.js-build-variables').toggle();\n $(this).hide();\n });\n}\n","\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./callout.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./callout.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./callout.vue?vue&type=template&id=06219483\"\nimport script from \"./callout.vue?vue&type=script&lang=js\"\nexport * from \"./callout.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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:(\"bs-callout bs-callout-\" + _vm.category),attrs:{\"role\":\"alert\",\"aria-live\":\"assertive\"}},[_vm._v(\"\\n \"+_vm._s(_vm.message)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./header.vue?vue&type=template&id=49d48265\"\nimport script from \"./header.vue?vue&type=script&lang=js\"\nexport * from \"./header.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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',[_c('div',{staticClass:\"js-build-header build-header top-area\"},[(_vm.shouldRenderContent)?_c('ci-header',{attrs:{\"status\":_vm.status,\"item-name\":\"Job\",\"item-id\":_vm.job.id,\"time\":_vm.headerTime,\"user\":_vm.job.user,\"actions\":_vm.actions,\"has-sidebar-button\":true,\"should-render-triggered-label\":_vm.jobStarted}}):_vm._e(),_vm._v(\" \"),(_vm.isLoading)?_c('loading-icon',{staticClass:\"prepend-top-default append-bottom-default\",attrs:{\"size\":\"2\"}}):_vm._e()],1),_vm._v(\" \"),(_vm.shouldRenderReason)?_c('callout',{attrs:{\"message\":_vm.job.callout_message}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sidebar_detail_row.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sidebar_detail_row.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./sidebar_detail_row.vue?vue&type=template&id=25e77d04\"\nimport script from \"./sidebar_detail_row.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_detail_row.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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"build-detail-row\"},[(_vm.hasTitle)?_c('span',{staticClass:\"build-light-text\"},[_vm._v(\"\\n \"+_vm._s(_vm.title)+\":\\n \")]):_vm._e(),_vm._v(\"\\n \"+_vm._s(_vm.value)+\"\\n\\n \"),(_vm.hasHelpURL)?_c('span',{staticClass:\"help-button float-right\"},[_c('a',{attrs:{\"href\":_vm.helpUrl,\"target\":\"_blank\",\"rel\":\"noopener noreferrer nofollow\"}},[_c('i',{staticClass:\"fa fa-question-circle\",attrs:{\"aria-hidden\":\"true\"}})])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sidebar_details_block.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sidebar_details_block.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./sidebar_details_block.vue?vue&type=template&id=7495af69\"\nimport script from \"./sidebar_details_block.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_details_block.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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"block\"},[_c('strong',{staticClass:\"inline prepend-top-8\"},[_vm._v(\"\\n \"+_vm._s(_vm.job.name)+\"\\n \")]),_vm._v(\" \"),(_vm.canUserRetry)?_c('a',{class:_vm.retryButtonClass,attrs:{\"href\":_vm.job.retry_path,\"data-method\":\"post\",\"rel\":\"nofollow\"}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Retry'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-blank gutter-toggle float-right d-block d-md-none js-sidebar-build-toggle\",attrs:{\"type\":\"button\",\"aria-label\":_vm.__('Toggle Sidebar')}},[_c('i',{staticClass:\"fa fa-angle-double-right\",attrs:{\"aria-hidden\":\"true\",\"data-hidden\":\"true\"}})])]),_vm._v(\" \"),(_vm.shouldRenderContent)?[(_vm.job.retry_path || _vm.job.new_issue_path)?_c('div',{staticClass:\"block retry-link\"},[(_vm.job.new_issue_path)?_c('a',{staticClass:\"js-new-issue btn btn-new btn-inverted\",attrs:{\"href\":_vm.job.new_issue_path}},[_vm._v(\"\\n \"+_vm._s(_vm.__('New issue'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canUserRetry)?_c('a',{staticClass:\"js-retry-job btn btn-inverted-secondary\",attrs:{\"href\":_vm.job.retry_path,\"data-method\":\"post\",\"rel\":\"nofollow\"}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Retry'))+\"\\n \")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{class:{block : _vm.renderBlock }},[(_vm.job.merge_request)?_c('p',{staticClass:\"build-detail-row js-job-mr\"},[_c('span',{staticClass:\"build-light-text\"},[_vm._v(\"\\n \"+_vm._s(_vm.__('Merge Request:'))+\"\\n \")]),_vm._v(\" \"),_c('a',{attrs:{\"href\":_vm.job.merge_request.path}},[_vm._v(\"\\n !\"+_vm._s(_vm.job.merge_request.iid)+\"\\n \")])]):_vm._e(),_vm._v(\" \"),(_vm.job.duration)?_c('detail-row',{staticClass:\"js-job-duration\",attrs:{\"title\":\"持续时间\",\"value\":_vm.duration}}):_vm._e(),_vm._v(\" \"),(_vm.job.finished_at)?_c('detail-row',{staticClass:\"js-job-finished\",attrs:{\"title\":\"完成时间\",\"value\":_vm.timeFormated(_vm.job.finished_at)}}):_vm._e(),_vm._v(\" \"),(_vm.job.erased_at)?_c('detail-row',{staticClass:\"js-job-erased\",attrs:{\"title\":\"擦除时间\",\"value\":_vm.timeFormated(_vm.job.erased_at)}}):_vm._e(),_vm._v(\" \"),(_vm.job.queued)?_c('detail-row',{staticClass:\"js-job-queued\",attrs:{\"title\":\"排队中\",\"value\":_vm.queued}}):_vm._e(),_vm._v(\" \"),(_vm.hasTimeout)?_c('detail-row',{staticClass:\"js-job-timeout\",attrs:{\"title\":\"Timeout\",\"help-url\":_vm.runnerHelpUrl,\"value\":_vm.timeout}}):_vm._e(),_vm._v(\" \"),(_vm.job.runner)?_c('detail-row',{staticClass:\"js-job-runner\",attrs:{\"title\":\"Runner\",\"value\":_vm.runnerId}}):_vm._e(),_vm._v(\" \"),(_vm.job.coverage)?_c('detail-row',{staticClass:\"js-job-coverage\",attrs:{\"title\":\"覆盖率\",\"value\":_vm.coverage}}):_vm._e(),_vm._v(\" \"),(_vm.job.tags.length)?_c('p',{staticClass:\"build-detail-row js-job-tags\"},[_c('span',{staticClass:\"build-light-text\"},[_vm._v(\"\\n \"+_vm._s(_vm.__('Tags:'))+\"\\n \")]),_vm._v(\" \"),_vm._l((_vm.job.tags),function(tag,i){return _c('span',{key:i,staticClass:\"label label-primary\"},[_vm._v(\"\\n \"+_vm._s(tag)+\"\\n \")])})],2):_vm._e(),_vm._v(\" \"),(_vm.job.cancel_path)?_c('div',{staticClass:\"btn-group prepend-top-5\",attrs:{\"role\":\"group\"}},[_c('a',{staticClass:\"js-cancel-job btn btn-sm btn-default\",attrs:{\"href\":_vm.job.cancel_path,\"data-method\":\"post\",\"rel\":\"nofollow\"}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Cancel'))+\"\\n \")])]):_vm._e()],1)]:_vm._e(),_vm._v(\" \"),(_vm.isLoading)?_c('loading-icon',{staticClass:\"prepend-top-10\",attrs:{\"size\":\"2\"}}):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import initJobDetails from '~/jobs/job_details_bundle';\n\ndocument.addEventListener('DOMContentLoaded', initJobDetails);\n","import Vue from 'vue';\nimport JobMediator from './job_details_mediator';\nimport jobHeader from './components/header.vue';\nimport detailsBlock from './components/sidebar_details_block.vue';\n\nexport default () => {\n const dataset = document.getElementById('js-job-details-vue').dataset;\n const mediator = new JobMediator({ endpoint: dataset.endpoint });\n\n mediator.fetchJob();\n\n // Header\n // eslint-disable-next-line no-new\n new Vue({\n el: '#js-build-header-vue',\n components: {\n jobHeader,\n },\n data() {\n return {\n mediator,\n };\n },\n mounted() {\n this.mediator.initBuildClass();\n },\n render(createElement) {\n return createElement('job-header', {\n props: {\n isLoading: this.mediator.state.isLoading,\n job: this.mediator.store.state.job,\n },\n });\n },\n });\n\n // Sidebar information block\n const detailsBlockElement = document.getElementById('js-details-block-vue');\n const detailsBlockDataset = detailsBlockElement.dataset;\n // eslint-disable-next-line\n new Vue({\n el: detailsBlockElement,\n components: {\n detailsBlock,\n },\n data() {\n return {\n mediator,\n };\n },\n render(createElement) {\n return createElement('details-block', {\n props: {\n isLoading: this.mediator.state.isLoading,\n canUserRetry: !!('canUserRetry' in detailsBlockDataset),\n job: this.mediator.store.state.job,\n runnerHelpUrl: dataset.runnerHelpUrl,\n },\n });\n },\n });\n};\n"],"sourceRoot":""}