{"version":3,"sources":["webpack:///./pages/projects/blob/show/index.js","webpack:///./vue_shared/directives/tooltip.js","webpack:///./new_commit_form.js","webpack:///./vue_shared/components/icon.vue?df23","webpack:///vue_shared/components/icon.vue","webpack:///./vue_shared/components/icon.vue?25af","webpack:///./vue_shared/components/icon.vue","webpack:////opt/gitlab/embedded/service/gitlab-rails/node_modules/visibilityjs/lib/visibility.core.js","webpack:////opt/gitlab/embedded/service/gitlab-rails/node_modules/visibilityjs/lib/visibility.timers.js","webpack:///./blob/file_template_selector.js","webpack:///./blob/template_selectors/type_selector.js","webpack:///./blob/template_selectors/ci_yaml_selector.js","webpack:///./blob/template_selectors/dockerfile_selector.js","webpack:///./blob/template_selectors/gitignore_selector.js","webpack:///./blob/template_selectors/license_selector.js","webpack:///./blob/file_template_mediator.js","webpack:///./blob_edit/edit_blob.js","webpack:///./blob/blob_file_dropzone.js","webpack:///./blob_edit/blob_bundle.js","webpack:///./blob/viewer/index.js","webpack:///./gpg_badges.js","webpack:///./blob/blob_fork_suggestion.js","webpack:///./line_highlighter.js","webpack:///./blob/blob_line_permalink_updater.js","webpack:///./shortcuts_blob.js","webpack:///./pages/projects/init_blob.js","webpack:///./lib/utils/constants.js","webpack:///./projects/tree/components/commit_pipeline_status_component.vue?7656","webpack:///./projects/tree/services/commit_pipeline_service.js","webpack:///./projects/tree/components/commit_pipeline_status_component.vue?4e71","webpack:///projects/tree/components/commit_pipeline_status_component.vue","webpack:///./projects/tree/components/commit_pipeline_status_component.vue","webpack:////opt/gitlab/embedded/service/gitlab-rails/node_modules/visibilityjs/index.js","webpack:///./lib/utils/http_status.js","webpack:///./vue_shared/components/ci_icon.vue?4e35","webpack:///vue_shared/components/ci_icon.vue","webpack:///./vue_shared/components/ci_icon.vue?9b87","webpack:///./vue_shared/components/ci_icon.vue","webpack:///./lib/utils/poll.js"],"names":["document","addEventListener","_blob_viewer_index__WEBPACK_IMPORTED_MODULE_2__","Object","_pages_projects_init_blob__WEBPACK_IMPORTED_MODULE_3__","CommitPipelineStatusEl","querySelector","statusLink","remove","vue__WEBPACK_IMPORTED_MODULE_0__","el","components","commitPipelineStatus","_projects_tree_components_commit_pipeline_status_component_vue__WEBPACK_IMPORTED_MODULE_1__","render","createElement","props","endpoint","dataset","_gpg_badges__WEBPACK_IMPORTED_MODULE_4__","fetch","__webpack_exports__","bind","jquery__WEBPACK_IMPORTED_MODULE_0___default","tooltip","trigger","componentUpdated","unbind","NewCommitForm","form","_classCallCheck","this","renderDestination","branchName","find","originalBranch","createMergeRequest","createMergeRequestContainer","keyup","different","val","show","wasDifferent","prop","hide","validSizes","components_iconvue_type_script_lang_js","name","type","String","required","validator","size","Number","default","value","includes","cssClasses","width","height","y","x","tabIndex","computed","spriteHref","gon","sprite_icons","iconTestClass","iconSizeClass","component","componentNormalizer","_vm","_h","$createElement","_c","_self","class","attrs","tabindex","_b","xlink:href","global","lastId","self","onVisible","callback","support","isSupported","hidden","listener","change","e","state","number","_callbacks","_listen","id","afterPrerendering","_doc","webkitHidden","visibilityState","webkitVisibilityState","_change","event","i","call","_init","apply","arguments","attachEvent","module","exports","Visibility","window","lastTimer","install","every","interval","hiddenInterval","_time","_timers","visible","_run","stop","_stop","_timed","_wasHidden","_stopRun","runNow","timer","runner","last","Date","delay","setTimeout","setInterval","clearInterval","clearTimeout","isHidden","wasHidden","__webpack_require__","FileTemplateSelector","mediator","$dropdown","$wrapper","cfg","config","jquery_default","dropdown","wrapper","$loadingIcon","$dropdownToggleText","initDropdown","init","removeClass","addClass","hasClass","text","options","query","data","preventDefault","selectTemplateFile","opts","selectedObj","reportSelection","FileTemplateTypeSelector","_ref","dropdownData","type_selector_classCallCheck","_this","_possibleConstructorReturn","__proto__","getPrototypeOf","file_template_selector","_this2","glDropdown","filterable","selectable","toggleLabel","item","clicked","selectTemplateTypeOptions","BlobCiYamlSelector","ci_yaml_selector_classCallCheck","ci_yaml_selector_possibleConstructorReturn","key","pattern","api","gitlabCiYml","search","fields","reportSelectionName","DockerfileSelector","dockerfile_selector_classCallCheck","dockerfile_selector_possibleConstructorReturn","dockerfileYml","BlobGitignoreSelector","gitignore_selector_classCallCheck","gitignore_selector_possibleConstructorReturn","gitignoreText","BlobLicenseSelector","license_selector_classCallCheck","license_selector_possibleConstructorReturn","licenseText","$el","project","fullname","FileTemplateMediator","editor","currentAction","file_template_mediator_classCallCheck","initTemplateSelectors","initTemplateTypeSelector","initDomElements","initDropdowns","initPageEvents","templateSelectors","gitignore_selector","ci_yaml_selector","dockerfile_selector","license_selector","map","TemplateSelectorClass","typeSelector","type_selector","templateSelector","$templatesMenu","$undoMenu","$fileEditor","$undoBtn","$templateSelectors","$filenameInput","$fileContent","$commitForm","$navLinks","hideTemplateSelectorMenu","displayMatchedTemplateSelector","listenForFilenameInput","prepFileContentForSubmit","listenForPreviewMode","on","_this3","submit","getValue","_this4","hash","target","href","split","showTemplateSelectorMenu","forEach","selector","setToggleText","cacheToggleText","selectTemplateType","_this5","renderLoading","destroyUndoMenu","fetchFileTemplate","then","file","showUndoMenu","setEditorContent","setFilename","renderLoaded","catch","err","flash","_this6","currentInput","getFilename","test","apiCall","Promise","resolve","resolveFile","newValue","content","setValue","focus","navigateFileStart","_this7","restoreFromCache","cacheFileContents","off","cachedToggleText","getTemplateSelectorToggleText","cachedContent","cachedFilename","setTemplateSelectorToggleText","getToggleText","selected","EditBlob","assetsPath","aceMode","edit_blob_classCallCheck","configureAceEditor","initModePanesAndLinks","initSoftWrap","initFileSelectors","ace","set","loadModule","edit","$blockScrolling","Infinity","getSession","setMode","fileTemplateMediator","file_template_mediator","$editModePanes","$editModeLinks","editModeLinkClickHandler","currentLink","paneId","attr","currentPane","filter","parent","fadeIn","$toggleButton","axios_utils","post","empty","append","renderGFM","locale","isSoftWrapped","toggleSoftWrap","toggleClass","setUseWrapMode","toggleLoading","$icon","loading","disable","constants","enable","dropzone_default","a","autoDiscover","BlobFileDropzone","method","blob_file_dropzone_classCallCheck","formDropzone","submitButton","submitButtonLoadingIcon","dropzoneMessage","dropzone","autoProcessQueue","url","clickable","uploadMultiple","paramName","maxFilesize","max_file_size","parallelUploads","maxFiles","addRemoveLinks","previewsContainer","headers","csrf","html","header","response","modal","url_utility","filePath","removeFile","xhr","formData","error","errorMessage","stripped","stopPropagation","getQueuedFiles","length","alert","processQueue","editBlobForm","uploadBlobForm","deleteBlobForm","urlRoot","blobLanguage","edit_blob","new_commit_form","blob_file_dropzone","gl","utils","disableButtonIfEmptyField","BlobViewer","initAuxiliaryViewer","initRichViewer","initMainViewers","$fileHolder","switcher","switcherBtns","querySelectorAll","copySourceBtn","simpleViewer","richViewer","initBindings","switchToInitialViewer","initialViewerName","getAttribute","location","indexOf","switchToViewer","Array","from","switchViewHandler","classList","contains","blur","currentTarget","setAttribute","activeViewer","add","newViewer","oldButton","newButton","oldViewer","toggleCopyButtonState","loadViewer","viewer","_lib_utils_common_utils__WEBPACK_IMPORTED_MODULE_2__","_flash__WEBPACK_IMPORTED_MODULE_1__","auxiliaryViewer","richType","initViewer","promise","all","viewerParam","_lib_utils_axios_utils__WEBPACK_IMPORTED_MODULE_3__","get","innerHTML","GpgBadges","tag","badges","displayError","_flash__WEBPACK_IMPORTED_MODULE_3__","_locale__WEBPACK_IMPORTED_MODULE_4__","reject","Error","params","_lib_utils_common_utils__WEBPACK_IMPORTED_MODULE_1__","serialize","_lib_utils_axios_utils__WEBPACK_IMPORTED_MODULE_2__","signatures","signature","commit_sha","replaceWith","defaults","openButtons","forkButtons","cancelButtons","suggestionSections","actionTextPieces","BlobForkSuggestion","elementMap","assign","onOpenButtonClick","onCancelButtonClick","bindEvents","forkPath","action","undefined","showSuggestionSection","hideSuggestionSection","jquery__WEBPACK_IMPORTED_MODULE_0__","n","LineHighlighter","highlightLineClass","fileHolderSelector","scrollFileHolder","_hash","setHash","highlightLine","clickHandler","highlightHash","prototype","newHash","range","clearHighlight","hashToRange","highlightRange","lineSelector","scrollOptions","offset","scrollTo","current","lineNumber","closest","shiftKey","matches","match","parseInt","results","ref","reverse","push","firstLineNumber","lastLineNumber","__setLocationHash__","history","pushState","title","lineNumberRe","blob_line_permalink_updater_updateLineNumbersOnBlobPermalinks","linksToUpdate","hashUrlString","concat","slice","permalinkButton","baseHref","blob_line_permalink_updater","blobContentHolder","lineNumberSelector","elementsToUpdate","updateBlameAndBlobPermalinkCb","skipResetBindings","fileBlobPermalinkUrl","ShortcutsBlob","mousetrap_default","moveToFilePermalink","shortcuts","visitUrl","line_highlighter","fileBlobPermalinkUrlElement","shortcuts_navigation","shortcuts_blob","blob_fork_suggestion","blob_bundle","BYTES_IN_KIB","HIDDEN_CLASS","CommitPipelineService","components_commit_pipeline_status_componentvue_type_script_lang_js","directives","ciIcon","ci_icon","loadingIcon","loading_icon","ciStatus","isLoading","statusTitle","commitText","mounted","service","commit_pipeline_service","initPolling","methods","successCallback","res","pipelines","details","status","errorCallback","icon","group","poll","resource","visibilityjs_default","fetchPipelineCommitData","makeRequest","restart","fetchData","destroy","staticClass","label","details_path","rawName","aria-label","data-container","d","successCodes","httpStatusCodes","ABORTED","OK","CREATED","ACCEPTED","NON_AUTHORITATIVE_INFORMATION","NO_CONTENT","RESET_CONTENT","PARTIAL_CONTENT","MULTI_STATUS","ALREADY_REPORTED","IM_USED","MULTIPLE_CHOICES","BAD_REQUEST","NOT_FOUND","components_ci_iconvue_type_script_lang_js","Icon","borderless","Boolean","cssClass","Poll","notificationCallback","intervalHeader","timeoutID","canPoll","_common_utils__WEBPACK_IMPORTED_MODULE_1__","pollInterval","_http_status__WEBPACK_IMPORTED_MODULE_0__","_options","checkConditions"],"mappings":"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","file":"pages.projects.blob.show.468401df.chunk.js","sourcesContent":["import Vue from 'vue';\nimport commitPipelineStatus from '~/projects/tree/components/commit_pipeline_status_component.vue';\nimport BlobViewer from '~/blob/viewer/index';\nimport initBlob from '~/pages/projects/init_blob';\nimport GpgBadges from '~/gpg_badges';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n new BlobViewer(); // eslint-disable-line no-new\n initBlob();\n\n const CommitPipelineStatusEl = document.querySelector('.js-commit-pipeline-status');\n const statusLink = document.querySelector('.commit-actions .ci-status-link');\n if (statusLink) {\n statusLink.remove();\n // eslint-disable-next-line no-new\n new Vue({\n el: CommitPipelineStatusEl,\n components: {\n commitPipelineStatus,\n },\n render(createElement) {\n return createElement('commit-pipeline-status', {\n props: {\n endpoint: CommitPipelineStatusEl.dataset.endpoint,\n },\n });\n },\n });\n }\n\n GpgBadges.fetch();\n});\n","import $ from 'jquery';\n\nexport default {\n bind(el) {\n $(el).tooltip({\n trigger: 'hover',\n });\n },\n\n componentUpdated(el) {\n $(el).tooltip('_fixTitle');\n },\n\n unbind(el) {\n $(el).tooltip('dispose');\n },\n};\n","/* eslint-disable no-var, no-return-assign */\nexport default class NewCommitForm {\n constructor(form) {\n this.form = form;\n this.renderDestination = this.renderDestination.bind(this);\n this.branchName = form.find('.js-branch-name');\n this.originalBranch = form.find('.js-original-branch');\n this.createMergeRequest = form.find('.js-create-merge-request');\n this.createMergeRequestContainer = form.find(\n '.js-create-merge-request-container',\n );\n this.branchName.keyup(this.renderDestination);\n this.renderDestination();\n }\n renderDestination() {\n var different;\n different = this.branchName.val() !== this.originalBranch.val();\n if (different) {\n this.createMergeRequestContainer.show();\n if (!this.wasDifferent) {\n this.createMergeRequest.prop('checked', true);\n }\n } else {\n this.createMergeRequestContainer.hide();\n this.createMergeRequest.prop('checked', false);\n }\n return (this.wasDifferent = different);\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{class:[_vm.iconSizeClass, _vm.iconTestClass, _vm.cssClasses],attrs:{\"width\":_vm.width,\"height\":_vm.height,\"x\":_vm.x,\"y\":_vm.y,\"tabindex\":_vm.tabIndex}},[_c('use',_vm._b({},'use',{ 'xlink:href':_vm.spriteHref },false))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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!./icon.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!./icon.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./icon.vue?vue&type=template&id=ce78a0ae\"\nimport script from \"./icon.vue?vue&type=script&lang=js\"\nexport * from \"./icon.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",";(function (global) {\n \"use strict\";\n\n var lastId = -1;\n\n // Visibility.js allow you to know, that your web page is in the background\n // tab and thus not visible to the user. This library is wrap under\n // Page Visibility API. It fix problems with different vendor prefixes and\n // add high-level useful functions.\n var self = {\n\n // Call callback only when page become to visible for user or\n // call it now if page is visible now or Page Visibility API\n // doesn’t supported.\n //\n // Return false if API isn’t supported, true if page is already visible\n // or listener ID (you can use it in `unbind` method) if page isn’t\n // visible now.\n //\n // Visibility.onVisible(function () {\n // startIntroAnimation();\n // });\n onVisible: function (callback) {\n var support = self.isSupported();\n if ( !support || !self.hidden() ) {\n callback();\n return support;\n }\n\n var listener = self.change(function (e, state) {\n if ( !self.hidden() ) {\n self.unbind(listener);\n callback();\n }\n });\n return listener;\n },\n\n // Call callback when visibility will be changed. First argument for\n // callback will be original event object, second will be visibility\n // state name.\n //\n // Return listener ID to unbind listener by `unbind` method.\n //\n // If Page Visibility API doesn’t supported method will be return false\n // and callback never will be called.\n //\n // Visibility.change(function(e, state) {\n // Statistics.visibilityChange(state);\n // });\n //\n // It is just proxy to `visibilitychange` event, but use vendor prefix.\n change: function (callback) {\n if ( !self.isSupported() ) {\n return false;\n }\n lastId += 1;\n var number = lastId;\n self._callbacks[number] = callback;\n self._listen();\n return number;\n },\n\n // Remove `change` listener by it ID.\n //\n // var id = Visibility.change(function(e, state) {\n // firstChangeCallback();\n // Visibility.unbind(id);\n // });\n unbind: function (id) {\n delete self._callbacks[id];\n },\n\n // Call `callback` in any state, expect “prerender”. If current state\n // is “prerender” it will wait until state will be changed.\n // If Page Visibility API doesn’t supported, it will call `callback`\n // immediately.\n //\n // Return false if API isn’t supported, true if page is already after\n // prerendering or listener ID (you can use it in `unbind` method)\n // if page is prerended now.\n //\n // Visibility.afterPrerendering(function () {\n // Statistics.countVisitor();\n // });\n afterPrerendering: function (callback) {\n var support = self.isSupported();\n var prerender = 'prerender';\n\n if ( !support || prerender != self.state() ) {\n callback();\n return support;\n }\n\n var listener = self.change(function (e, state) {\n if ( prerender != state ) {\n self.unbind(listener);\n callback();\n }\n });\n return listener;\n },\n\n // Return true if page now isn’t visible to user.\n //\n // if ( !Visibility.hidden() ) {\n // VideoPlayer.play();\n // }\n //\n // It is just proxy to `document.hidden`, but use vendor prefix.\n hidden: function () {\n return !!(self._doc.hidden || self._doc.webkitHidden);\n },\n\n // Return visibility state: 'visible', 'hidden' or 'prerender'.\n //\n // if ( 'prerender' == Visibility.state() ) {\n // Statistics.pageIsPrerendering();\n // }\n //\n // Don’t use `Visibility.state()` to detect, is page visible, because\n // visibility states can extend in next API versions.\n // Use more simpler and general `Visibility.hidden()` for this cases.\n //\n // It is just proxy to `document.visibilityState`, but use\n // vendor prefix.\n state: function () {\n return self._doc.visibilityState ||\n self._doc.webkitVisibilityState ||\n 'visible';\n },\n\n // Return true if browser support Page Visibility API.\n //\n // if ( Visibility.isSupported() ) {\n // Statistics.startTrackingVisibility();\n // Visibility.change(function(e, state)) {\n // Statistics.trackVisibility(state);\n // });\n // }\n isSupported: function () {\n return !!(self._doc.visibilityState ||\n self._doc.webkitVisibilityState);\n },\n\n // Link to document object to change it in tests.\n _doc: document || {},\n\n // Callbacks from `change` method, that wait visibility changes.\n _callbacks: { },\n\n // Listener for `visibilitychange` event.\n _change: function(event) {\n var state = self.state();\n\n for ( var i in self._callbacks ) {\n self._callbacks[i].call(self._doc, event, state);\n }\n },\n\n // Set listener for `visibilitychange` event.\n _listen: function () {\n if ( self._init ) {\n return;\n }\n\n var event = 'visibilitychange';\n if ( self._doc.webkitVisibilityState ) {\n event = 'webkit' + event;\n }\n\n var listener = function () {\n self._change.apply(self, arguments);\n };\n if ( self._doc.addEventListener ) {\n self._doc.addEventListener(event, listener);\n } else {\n self._doc.attachEvent(event, listener);\n }\n self._init = true;\n }\n\n };\n\n if ( typeof(module) != 'undefined' && module.exports ) {\n module.exports = self;\n } else {\n global.Visibility = self;\n }\n\n})(this);\n",";(function (window) {\n \"use strict\";\n\n var lastTimer = -1;\n\n var install = function (Visibility) {\n\n // Run callback every `interval` milliseconds if page is visible and\n // every `hiddenInterval` milliseconds if page is hidden.\n //\n // Visibility.every(60 * 1000, 5 * 60 * 1000, function () {\n // checkNewMails();\n // });\n //\n // You can skip `hiddenInterval` and callback will be called only if\n // page is visible.\n //\n // Visibility.every(1000, function () {\n // updateCountdown();\n // });\n //\n // It is analog of `setInterval(callback, interval)` but use visibility\n // state.\n //\n // It return timer ID, that you can use in `Visibility.stop(id)` to stop\n // timer (`clearInterval` analog).\n // Warning: timer ID is different from interval ID from `setInterval`,\n // so don’t use it in `clearInterval`.\n //\n // On change state from hidden to visible timers will be execute.\n Visibility.every = function (interval, hiddenInterval, callback) {\n Visibility._time();\n\n if ( !callback ) {\n callback = hiddenInterval;\n hiddenInterval = null;\n }\n\n lastTimer += 1;\n var number = lastTimer;\n\n Visibility._timers[number] = {\n visible: interval,\n hidden: hiddenInterval,\n callback: callback\n };\n Visibility._run(number, false);\n\n if ( Visibility.isSupported() ) {\n Visibility._listen();\n }\n return number;\n };\n\n // Stop timer from `every` method by it ID (`every` method return it).\n //\n // slideshow = Visibility.every(5 * 1000, function () {\n // changeSlide();\n // });\n // $('.stopSlideshow').click(function () {\n // Visibility.stop(slideshow);\n // });\n Visibility.stop = function(id) {\n if ( !Visibility._timers[id] ) {\n return false;\n }\n Visibility._stop(id);\n delete Visibility._timers[id];\n return true;\n };\n\n // Callbacks and intervals added by `every` method.\n Visibility._timers = { };\n\n // Initialize variables on page loading.\n Visibility._time = function () {\n if ( Visibility._timed ) {\n return;\n }\n Visibility._timed = true;\n Visibility._wasHidden = Visibility.hidden();\n\n Visibility.change(function () {\n Visibility._stopRun();\n Visibility._wasHidden = Visibility.hidden();\n });\n };\n\n // Try to run timer from every method by it’s ID. It will be use\n // `interval` or `hiddenInterval` depending on visibility state.\n // If page is hidden and `hiddenInterval` is null,\n // it will not run timer.\n //\n // Argument `runNow` say, that timers must be execute now too.\n Visibility._run = function (id, runNow) {\n var interval,\n timer = Visibility._timers[id];\n\n if ( Visibility.hidden() ) {\n if ( null === timer.hidden ) {\n return;\n }\n interval = timer.hidden;\n } else {\n interval = timer.visible;\n }\n\n var runner = function () {\n timer.last = new Date();\n timer.callback.call(window);\n }\n\n if ( runNow ) {\n var now = new Date();\n var last = now - timer.last ;\n\n if ( interval > last ) {\n timer.delay = setTimeout(function () {\n timer.id = setInterval(runner, interval);\n runner();\n }, interval - last);\n } else {\n timer.id = setInterval(runner, interval);\n runner();\n }\n\n } else {\n timer.id = setInterval(runner, interval);\n }\n };\n\n // Stop timer from `every` method by it’s ID.\n Visibility._stop = function (id) {\n var timer = Visibility._timers[id];\n clearInterval(timer.id);\n clearTimeout(timer.delay);\n delete timer.id;\n delete timer.delay;\n };\n\n // Listener for `visibilitychange` event.\n Visibility._stopRun = function (event) {\n var isHidden = Visibility.hidden(),\n wasHidden = Visibility._wasHidden;\n\n if ( (isHidden && !wasHidden) || (!isHidden && wasHidden) ) {\n for ( var i in Visibility._timers ) {\n Visibility._stop(i);\n Visibility._run(i, !isHidden);\n }\n }\n };\n\n return Visibility;\n }\n\n if ( typeof(module) != 'undefined' && module.exports ) {\n module.exports = install(require('./visibility.core'));\n } else {\n install(window.Visibility)\n }\n\n})(window);\n","import $ from 'jquery';\n\nexport default class FileTemplateSelector {\n constructor(mediator) {\n this.mediator = mediator;\n this.$dropdown = null;\n this.$wrapper = null;\n }\n\n init() {\n const cfg = this.config;\n\n this.$dropdown = $(cfg.dropdown);\n this.$wrapper = $(cfg.wrapper);\n this.$loadingIcon = this.$wrapper.find('.fa-chevron-down');\n this.$dropdownToggleText = this.$wrapper.find('.dropdown-toggle-text');\n\n this.initDropdown();\n }\n\n show() {\n if (this.$dropdown === null) {\n this.init();\n }\n\n this.$wrapper.removeClass('hidden');\n }\n\n hide() {\n if (this.$dropdown !== null) {\n this.$wrapper.addClass('hidden');\n }\n }\n\n isHidden() {\n return this.$wrapper.hasClass('hidden');\n }\n\n getToggleText() {\n return this.$dropdownToggleText.text();\n }\n\n setToggleText(text) {\n this.$dropdownToggleText.text(text);\n }\n\n renderLoading() {\n this.$loadingIcon\n .addClass('fa-spinner fa-spin')\n .removeClass('fa-chevron-down');\n }\n\n renderLoaded() {\n this.$loadingIcon\n .addClass('fa-chevron-down')\n .removeClass('fa-spinner fa-spin');\n }\n\n reportSelection(options) {\n const { query, e, data } = options;\n e.preventDefault();\n return this.mediator.selectTemplateFile(this, query, data);\n }\n\n reportSelectionName(options) {\n const opts = options;\n opts.query = options.selectedObj.name;\n\n this.reportSelection(opts);\n }\n}\n","import FileTemplateSelector from '../file_template_selector';\n\nexport default class FileTemplateTypeSelector extends FileTemplateSelector {\n constructor({ mediator, dropdownData }) {\n super(mediator);\n this.mediator = mediator;\n this.config = {\n dropdown: '.js-template-type-selector',\n wrapper: '.js-template-type-selector-wrap',\n dropdownData,\n };\n }\n\n initDropdown() {\n this.$dropdown.glDropdown({\n data: this.config.dropdownData,\n filterable: false,\n selectable: true,\n toggleLabel: item => item.name,\n clicked: options => this.mediator.selectTemplateTypeOptions(options),\n text: item => item.name,\n });\n }\n\n}\n","import Api from '../../api';\n\nimport FileTemplateSelector from '../file_template_selector';\n\nexport default class BlobCiYamlSelector extends FileTemplateSelector {\n constructor({ mediator }) {\n super(mediator);\n this.config = {\n key: 'gitlab-ci-yaml',\n name: '.gitlab-ci.yml',\n pattern: /(.gitlab-ci.yml)/,\n endpoint: Api.gitlabCiYml,\n dropdown: '.js-gitlab-ci-yml-selector',\n wrapper: '.js-gitlab-ci-yml-selector-wrap',\n };\n }\n\n initDropdown() {\n // maybe move to super class as well\n this.$dropdown.glDropdown({\n data: this.$dropdown.data('data'),\n filterable: true,\n selectable: true,\n toggleLabel: item => item.name,\n search: {\n fields: ['name'],\n },\n clicked: options => this.reportSelectionName(options),\n text: item => item.name,\n });\n }\n}\n","import Api from '../../api';\n\nimport FileTemplateSelector from '../file_template_selector';\n\nexport default class DockerfileSelector extends FileTemplateSelector {\n constructor({ mediator }) {\n super(mediator);\n this.config = {\n key: 'dockerfile',\n name: 'Dockerfile',\n pattern: /(Dockerfile)/,\n endpoint: Api.dockerfileYml,\n dropdown: '.js-dockerfile-selector',\n wrapper: '.js-dockerfile-selector-wrap',\n };\n }\n\n initDropdown() {\n // maybe move to super class as well\n this.$dropdown.glDropdown({\n data: this.$dropdown.data('data'),\n filterable: true,\n selectable: true,\n toggleLabel: item => item.name,\n search: {\n fields: ['name'],\n },\n clicked: options => this.reportSelectionName(options),\n text: item => item.name,\n });\n }\n}\n","import Api from '../../api';\n\nimport FileTemplateSelector from '../file_template_selector';\n\nexport default class BlobGitignoreSelector extends FileTemplateSelector {\n constructor({ mediator }) {\n super(mediator);\n this.config = {\n key: 'gitignore',\n name: '.gitignore',\n pattern: /(.gitignore)/,\n endpoint: Api.gitignoreText,\n dropdown: '.js-gitignore-selector',\n wrapper: '.js-gitignore-selector-wrap',\n };\n }\n\n initDropdown() {\n this.$dropdown.glDropdown({\n data: this.$dropdown.data('data'),\n filterable: true,\n selectable: true,\n toggleLabel: item => item.name,\n search: {\n fields: ['name'],\n },\n clicked: options => this.reportSelectionName(options),\n text: item => item.name,\n });\n }\n}\n","import Api from '../../api';\n\nimport FileTemplateSelector from '../file_template_selector';\n\nexport default class BlobLicenseSelector extends FileTemplateSelector {\n constructor({ mediator }) {\n super(mediator);\n this.config = {\n key: 'license',\n name: 'LICENSE',\n pattern: /^(.+\\/)?(licen[sc]e|copying)($|\\.)/i,\n endpoint: Api.licenseText,\n dropdown: '.js-license-selector',\n wrapper: '.js-license-selector-wrap',\n };\n }\n\n initDropdown() {\n this.$dropdown.glDropdown({\n data: this.$dropdown.data('data'),\n filterable: true,\n selectable: true,\n toggleLabel: item => item.name,\n search: {\n fields: ['name'],\n },\n clicked: (options) => {\n const { e } = options;\n const el = options.$el;\n const query = options.selectedObj;\n\n const data = {\n project: this.$dropdown.data('project'),\n fullname: this.$dropdown.data('fullname'),\n };\n\n this.reportSelection({\n query: query.id,\n el,\n e,\n data,\n });\n },\n text: item => item.name,\n });\n }\n}\n","/* eslint-disable class-methods-use-this */\n\nimport $ from 'jquery';\nimport Flash from '../flash';\nimport FileTemplateTypeSelector from './template_selectors/type_selector';\nimport BlobCiYamlSelector from './template_selectors/ci_yaml_selector';\nimport DockerfileSelector from './template_selectors/dockerfile_selector';\nimport GitignoreSelector from './template_selectors/gitignore_selector';\nimport LicenseSelector from './template_selectors/license_selector';\n\nexport default class FileTemplateMediator {\n constructor({ editor, currentAction }) {\n this.editor = editor;\n this.currentAction = currentAction;\n\n this.initTemplateSelectors();\n this.initTemplateTypeSelector();\n this.initDomElements();\n this.initDropdowns();\n this.initPageEvents();\n }\n\n initTemplateSelectors() {\n // Order dictates template type dropdown item order\n this.templateSelectors = [\n GitignoreSelector,\n BlobCiYamlSelector,\n DockerfileSelector,\n LicenseSelector,\n ].map(TemplateSelectorClass => new TemplateSelectorClass({ mediator: this }));\n }\n\n initTemplateTypeSelector() {\n this.typeSelector = new FileTemplateTypeSelector({\n mediator: this,\n dropdownData: this.templateSelectors\n .map((templateSelector) => {\n const cfg = templateSelector.config;\n\n return {\n name: cfg.name,\n key: cfg.key,\n };\n }),\n });\n }\n\n initDomElements() {\n const $templatesMenu = $('.template-selectors-menu');\n const $undoMenu = $templatesMenu.find('.template-selectors-undo-menu');\n const $fileEditor = $('.file-editor');\n\n this.$templatesMenu = $templatesMenu;\n this.$undoMenu = $undoMenu;\n this.$undoBtn = $undoMenu.find('button');\n this.$templateSelectors = $templatesMenu.find('.template-selector-dropdowns-wrap');\n this.$filenameInput = $fileEditor.find('.js-file-path-name-input');\n this.$fileContent = $fileEditor.find('#file-content');\n this.$commitForm = $fileEditor.find('form');\n this.$navLinks = $fileEditor.find('.nav-links');\n }\n\n initDropdowns() {\n if (this.currentAction === 'create') {\n this.typeSelector.show();\n } else {\n this.hideTemplateSelectorMenu();\n }\n\n this.displayMatchedTemplateSelector();\n }\n\n initPageEvents() {\n this.listenForFilenameInput();\n this.prepFileContentForSubmit();\n this.listenForPreviewMode();\n }\n\n listenForFilenameInput() {\n this.$filenameInput.on('keyup blur', () => {\n this.displayMatchedTemplateSelector();\n });\n }\n\n prepFileContentForSubmit() {\n this.$commitForm.submit(() => {\n this.$fileContent.val(this.editor.getValue());\n });\n }\n\n listenForPreviewMode() {\n this.$navLinks.on('click', 'a', (e) => {\n const urlPieces = e.target.href.split('#');\n const hash = urlPieces[1];\n if (hash === 'preview') {\n this.hideTemplateSelectorMenu();\n } else if (hash === 'editor' && !this.typeSelector.isHidden()) {\n this.showTemplateSelectorMenu();\n }\n });\n }\n\n selectTemplateType(item, e) {\n if (e) {\n e.preventDefault();\n }\n\n this.templateSelectors.forEach((selector) => {\n if (selector.config.key === item.key) {\n selector.show();\n } else {\n selector.hide();\n }\n });\n\n this.typeSelector.setToggleText(item.name);\n\n this.cacheToggleText();\n }\n\n selectTemplateTypeOptions(options) {\n this.selectTemplateType(options.selectedObj, options.e);\n }\n\n selectTemplateFile(selector, query, data) {\n selector.renderLoading();\n // in case undo menu is already already there\n this.destroyUndoMenu();\n this.fetchFileTemplate(selector.config.endpoint, query, data)\n .then((file) => {\n this.showUndoMenu();\n this.setEditorContent(file);\n this.setFilename(selector.config.name);\n selector.renderLoaded();\n })\n .catch(err => new Flash(`An error occurred while fetching the template: ${err}`));\n }\n\n displayMatchedTemplateSelector() {\n const currentInput = this.getFilename();\n this.templateSelectors.forEach((selector) => {\n const match = selector.config.pattern.test(currentInput);\n\n if (match) {\n this.typeSelector.show();\n this.selectTemplateType(selector.config);\n this.showTemplateSelectorMenu();\n }\n });\n }\n\n fetchFileTemplate(apiCall, query, data) {\n return new Promise((resolve) => {\n const resolveFile = file => resolve(file);\n\n if (!data) {\n apiCall(query, resolveFile);\n } else {\n apiCall(query, data, resolveFile);\n }\n });\n }\n\n setEditorContent(file) {\n if (!file && file !== '') return;\n\n const newValue = file.content || file;\n\n this.editor.setValue(newValue, 1);\n\n this.editor.focus();\n\n this.editor.navigateFileStart();\n }\n\n findTemplateSelectorByKey(key) {\n return this.templateSelectors.find(selector => selector.config.key === key);\n }\n\n showUndoMenu() {\n this.$undoMenu.removeClass('hidden');\n\n this.$undoBtn.on('click', () => {\n this.restoreFromCache();\n this.destroyUndoMenu();\n });\n }\n\n destroyUndoMenu() {\n this.cacheFileContents();\n this.cacheToggleText();\n this.$undoMenu.addClass('hidden');\n this.$undoBtn.off('click');\n }\n\n hideTemplateSelectorMenu() {\n this.$templatesMenu.hide();\n }\n\n showTemplateSelectorMenu() {\n this.$templatesMenu.show();\n }\n\n cacheToggleText() {\n this.cachedToggleText = this.getTemplateSelectorToggleText();\n }\n\n cacheFileContents() {\n this.cachedContent = this.editor.getValue();\n this.cachedFilename = this.getFilename();\n }\n\n restoreFromCache() {\n this.setEditorContent(this.cachedContent);\n this.setFilename(this.cachedFilename);\n this.setTemplateSelectorToggleText();\n }\n\n getTemplateSelectorToggleText() {\n return this.$templateSelectors\n .find('.js-template-selector-wrap:visible .dropdown-toggle-text')\n .text();\n }\n\n setTemplateSelectorToggleText() {\n return this.$templateSelectors\n .find('.js-template-selector-wrap:visible .dropdown-toggle-text')\n .text(this.cachedToggleText);\n }\n\n getTypeSelectorToggleText() {\n return this.typeSelector.getToggleText();\n }\n\n getFilename() {\n return this.$filenameInput.val();\n }\n\n setFilename(name) {\n this.$filenameInput.val(name).trigger('change');\n }\n\n getSelected() {\n return this.templateSelectors.find(selector => selector.selected);\n }\n}\n","/* global ace */\n\nimport $ from 'jquery';\nimport axios from '~/lib/utils/axios_utils';\nimport createFlash from '~/flash';\nimport { __ } from '~/locale';\nimport TemplateSelectorMediator from '../blob/file_template_mediator';\n\nexport default class EditBlob {\n constructor(assetsPath, aceMode, currentAction) {\n this.configureAceEditor(aceMode, assetsPath);\n this.initModePanesAndLinks();\n this.initSoftWrap();\n this.initFileSelectors(currentAction);\n }\n\n configureAceEditor(aceMode, assetsPath) {\n ace.config.set('modePath', `${assetsPath}/ace`);\n ace.config.loadModule('ace/ext/searchbox');\n\n this.editor = ace.edit('editor');\n\n // This prevents warnings re: automatic scrolling being logged\n this.editor.$blockScrolling = Infinity;\n\n this.editor.focus();\n\n if (aceMode) {\n this.editor.getSession().setMode(`ace/mode/${aceMode}`);\n }\n }\n\n initFileSelectors(currentAction) {\n this.fileTemplateMediator = new TemplateSelectorMediator({\n currentAction,\n editor: this.editor,\n });\n }\n\n initModePanesAndLinks() {\n this.$editModePanes = $('.js-edit-mode-pane');\n this.$editModeLinks = $('.js-edit-mode a');\n this.$editModeLinks.on('click', e => this.editModeLinkClickHandler(e));\n }\n\n editModeLinkClickHandler(e) {\n e.preventDefault();\n\n const currentLink = $(e.target);\n const paneId = currentLink.attr('href');\n const currentPane = this.$editModePanes.filter(paneId);\n\n this.$editModeLinks.parent().removeClass('active hover');\n\n currentLink.parent().addClass('active hover');\n\n this.$editModePanes.hide();\n\n currentPane.fadeIn(200);\n\n if (paneId === '#preview') {\n this.$toggleButton.hide();\n axios.post(currentLink.data('previewUrl'), {\n content: this.editor.getValue(),\n })\n .then(({ data }) => {\n currentPane.empty().append(data);\n currentPane.renderGFM();\n })\n .catch(() => createFlash(__('An error occurred previewing the blob')));\n }\n\n this.$toggleButton.show();\n\n return this.editor.focus();\n }\n\n initSoftWrap() {\n this.isSoftWrapped = false;\n this.$toggleButton = $('.soft-wrap-toggle');\n this.$toggleButton.on('click', () => this.toggleSoftWrap());\n }\n\n toggleSoftWrap() {\n this.isSoftWrapped = !this.isSoftWrapped;\n this.$toggleButton.toggleClass('soft-wrap-active', this.isSoftWrapped);\n this.editor.getSession().setUseWrapMode(this.isSoftWrapped);\n }\n}\n","/* eslint-disable func-names, object-shorthand, prefer-arrow-callback */\n\nimport $ from 'jquery';\nimport Dropzone from 'dropzone';\nimport { visitUrl } from '../lib/utils/url_utility';\nimport { HIDDEN_CLASS } from '../lib/utils/constants';\nimport csrf from '../lib/utils/csrf';\n\nDropzone.autoDiscover = false;\n\nfunction toggleLoading($el, $icon, loading) {\n if (loading) {\n $el.disable();\n $icon.removeClass(HIDDEN_CLASS);\n } else {\n $el.enable();\n $icon.addClass(HIDDEN_CLASS);\n }\n}\nexport default class BlobFileDropzone {\n constructor(form, method) {\n const formDropzone = form.find('.dropzone');\n const submitButton = form.find('#submit-all');\n const submitButtonLoadingIcon = submitButton.find('.js-loading-icon');\n const dropzoneMessage = form.find('.dz-message');\n Dropzone.autoDiscover = false;\n\n const dropzone = formDropzone.dropzone({\n autoDiscover: false,\n autoProcessQueue: false,\n url: form.attr('action'),\n // Rails uses a hidden input field for PUT\n // http://stackoverflow.com/questions/21056482/how-to-set-method-put-in-form-tag-in-rails\n method: method,\n clickable: true,\n uploadMultiple: false,\n paramName: 'file',\n maxFilesize: gon.max_file_size || 10,\n parallelUploads: 1,\n maxFiles: 1,\n addRemoveLinks: true,\n previewsContainer: '.dropzone-previews',\n headers: csrf.headers,\n init: function () {\n this.on('addedfile', function () {\n toggleLoading(submitButton, submitButtonLoadingIcon, false);\n dropzoneMessage.addClass(HIDDEN_CLASS);\n $('.dropzone-alerts').html('').hide();\n });\n this.on('removedfile', function () {\n toggleLoading(submitButton, submitButtonLoadingIcon, false);\n dropzoneMessage.removeClass(HIDDEN_CLASS);\n });\n this.on('success', function (header, response) {\n $('#modal-upload-blob').modal('hide');\n visitUrl(response.filePath);\n });\n this.on('maxfilesexceeded', function (file) {\n dropzoneMessage.addClass(HIDDEN_CLASS);\n this.removeFile(file);\n });\n this.on('sending', function (file, xhr, formData) {\n formData.append('branch_name', form.find('.js-branch-name').val());\n formData.append('create_merge_request', form.find('.js-create-merge-request').val());\n formData.append('commit_message', form.find('.js-commit-message').val());\n });\n },\n // Override behavior of adding error underneath preview\n error: function (file, errorMessage) {\n const stripped = $('
').html(errorMessage).text();\n $('.dropzone-alerts').html(`Error uploading file: \"${stripped}\"`).show();\n this.removeFile(file);\n },\n });\n\n submitButton.on('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (dropzone[0].dropzone.getQueuedFiles().length === 0) {\n // eslint-disable-next-line no-alert\n alert('Please select a file');\n return false;\n }\n toggleLoading(submitButton, submitButtonLoadingIcon, true);\n dropzone[0].dropzone.processQueue();\n return false;\n });\n }\n}\n","/* eslint-disable no-new */\n\nimport $ from 'jquery';\nimport NewCommitForm from '../new_commit_form';\nimport EditBlob from './edit_blob';\nimport BlobFileDropzone from '../blob/blob_file_dropzone';\n\nexport default () => {\n const editBlobForm = $('.js-edit-blob-form');\n const uploadBlobForm = $('.js-upload-blob-form');\n const deleteBlobForm = $('.js-delete-blob-form');\n\n if (editBlobForm.length) {\n const urlRoot = editBlobForm.data('relativeUrlRoot');\n const assetsPath = editBlobForm.data('assetsPrefix');\n const blobLanguage = editBlobForm.data('blobLanguage');\n const currentAction = $('.js-file-title').data('currentAction');\n\n new EditBlob(`${urlRoot}${assetsPath}`, blobLanguage, currentAction);\n new NewCommitForm(editBlobForm);\n }\n\n if (uploadBlobForm.length) {\n const method = uploadBlobForm.data('method');\n\n new BlobFileDropzone(uploadBlobForm, method);\n new NewCommitForm(uploadBlobForm);\n\n window.gl.utils.disableButtonIfEmptyField(\n uploadBlobForm.find('.js-commit-message'),\n '.btn-upload-file',\n );\n }\n\n if (deleteBlobForm.length) {\n new NewCommitForm(deleteBlobForm);\n }\n};\n","import $ from 'jquery';\nimport Flash from '../../flash';\nimport { handleLocationHash } from '../../lib/utils/common_utils';\nimport axios from '../../lib/utils/axios_utils';\n\nexport default class BlobViewer {\n constructor() {\n BlobViewer.initAuxiliaryViewer();\n BlobViewer.initRichViewer();\n\n this.initMainViewers();\n }\n\n static initAuxiliaryViewer() {\n const auxiliaryViewer = document.querySelector('.blob-viewer[data-type=\"auxiliary\"]');\n if (!auxiliaryViewer) return;\n\n BlobViewer.loadViewer(auxiliaryViewer);\n }\n\n static initRichViewer() {\n const viewer = document.querySelector('.blob-viewer[data-type=\"rich\"]');\n if (!viewer || !viewer.dataset.richType) return;\n\n const initViewer = promise => promise\n .then(module => module.default(viewer))\n .catch((error) => {\n Flash('Error loading file viewer.');\n throw error;\n });\n\n switch (viewer.dataset.richType) {\n case 'balsamiq':\n initViewer(import(/* webpackChunkName: 'balsamiq_viewer' */ '../balsamiq_viewer'));\n break;\n case 'notebook':\n initViewer(import(/* webpackChunkName: 'notebook_viewer' */ '../notebook_viewer'));\n break;\n case 'pdf':\n initViewer(import(/* webpackChunkName: 'pdf_viewer' */ '../pdf_viewer'));\n break;\n case 'sketch':\n initViewer(import(/* webpackChunkName: 'sketch_viewer' */ '../sketch_viewer'));\n break;\n case 'stl':\n initViewer(import(/* webpackChunkName: 'stl_viewer' */ '../stl_viewer'));\n break;\n default:\n break;\n }\n }\n\n initMainViewers() {\n this.$fileHolder = $('.file-holder');\n if (!this.$fileHolder.length) return;\n\n this.switcher = document.querySelector('.js-blob-viewer-switcher');\n this.switcherBtns = document.querySelectorAll('.js-blob-viewer-switch-btn');\n this.copySourceBtn = document.querySelector('.js-copy-blob-source-btn');\n\n this.simpleViewer = this.$fileHolder[0].querySelector('.blob-viewer[data-type=\"simple\"]');\n this.richViewer = this.$fileHolder[0].querySelector('.blob-viewer[data-type=\"rich\"]');\n\n this.initBindings();\n\n this.switchToInitialViewer();\n }\n\n switchToInitialViewer() {\n const initialViewer = this.$fileHolder[0].querySelector('.blob-viewer:not(.hidden)');\n let initialViewerName = initialViewer.getAttribute('data-type');\n\n if (this.switcher && window.location.hash.indexOf('#L') === 0) {\n initialViewerName = 'simple';\n }\n\n this.switchToViewer(initialViewerName);\n }\n\n initBindings() {\n if (this.switcherBtns.length) {\n Array.from(this.switcherBtns)\n .forEach((el) => {\n el.addEventListener('click', this.switchViewHandler.bind(this));\n });\n }\n\n if (this.copySourceBtn) {\n this.copySourceBtn.addEventListener('click', () => {\n if (this.copySourceBtn.classList.contains('disabled')) return this.copySourceBtn.blur();\n\n return this.switchToViewer('simple');\n });\n }\n }\n\n switchViewHandler(e) {\n const target = e.currentTarget;\n\n e.preventDefault();\n\n this.switchToViewer(target.getAttribute('data-viewer'));\n }\n\n toggleCopyButtonState() {\n if (!this.copySourceBtn) return;\n\n if (this.simpleViewer.getAttribute('data-loaded')) {\n this.copySourceBtn.setAttribute('title', '复制源码到剪贴板');\n this.copySourceBtn.classList.remove('disabled');\n } else if (this.activeViewer === this.simpleViewer) {\n this.copySourceBtn.setAttribute('title', '等待源码加载以将其复制到剪贴板');\n this.copySourceBtn.classList.add('disabled');\n } else {\n this.copySourceBtn.setAttribute('title', '切换到源码以将其复制到剪贴板');\n this.copySourceBtn.classList.add('disabled');\n }\n\n $(this.copySourceBtn).tooltip('_fixTitle');\n }\n\n switchToViewer(name) {\n const newViewer = this.$fileHolder[0].querySelector(`.blob-viewer[data-type='${name}']`);\n if (this.activeViewer === newViewer) return;\n\n const oldButton = document.querySelector('.js-blob-viewer-switch-btn.active');\n const newButton = document.querySelector(`.js-blob-viewer-switch-btn[data-viewer='${name}']`);\n const oldViewer = this.$fileHolder[0].querySelector(`.blob-viewer:not([data-type='${name}'])`);\n\n if (oldButton) {\n oldButton.classList.remove('active');\n }\n\n if (newButton) {\n newButton.classList.add('active');\n newButton.blur();\n }\n\n if (oldViewer) {\n oldViewer.classList.add('hidden');\n }\n\n newViewer.classList.remove('hidden');\n\n this.activeViewer = newViewer;\n\n this.toggleCopyButtonState();\n\n BlobViewer.loadViewer(newViewer)\n .then((viewer) => {\n $(viewer).renderGFM();\n\n this.$fileHolder.trigger('highlight:line');\n handleLocationHash();\n\n this.toggleCopyButtonState();\n })\n .catch(() => new Flash('Error loading viewer'));\n }\n\n static loadViewer(viewerParam) {\n const viewer = viewerParam;\n const url = viewer.getAttribute('data-url');\n\n if (!url || viewer.getAttribute('data-loaded') || viewer.getAttribute('data-loading')) {\n return Promise.resolve(viewer);\n }\n\n viewer.setAttribute('data-loading', 'true');\n\n return axios.get(url)\n .then(({ data }) => {\n viewer.innerHTML = data.html;\n viewer.setAttribute('data-loaded', 'true');\n\n return viewer;\n });\n }\n}\n","import $ from 'jquery';\nimport { parseQueryStringIntoObject } from '~/lib/utils/common_utils';\nimport axios from '~/lib/utils/axios_utils';\nimport createFlash from '~/flash';\nimport { __ } from '~/locale';\n\nexport default class GpgBadges {\n static fetch() {\n const tag = $('.js-signature-container');\n if (tag.length === 0) {\n return Promise.resolve();\n }\n\n const badges = $('.js-loading-gpg-badge');\n\n badges.html('');\n\n const displayError = () => createFlash(__('An error occurred while loading commit signatures'));\n\n const endpoint = tag.data('signaturesPath');\n if (!endpoint) {\n displayError();\n return Promise.reject(new Error('Missing commit signatures endpoint!'));\n }\n\n const params = parseQueryStringIntoObject(tag.serialize());\n return axios\n .get(endpoint, { params })\n .then(({ data }) => {\n data.signatures.forEach(signature => {\n badges.filter(`[data-commit-sha=\"${signature.commit_sha}\"]`).replaceWith(signature.html);\n });\n })\n .catch(displayError);\n }\n}\n","import $ from 'jquery';\n\nconst defaults = {\n // Buttons that will show the `suggestionSections`\n // has `data-fork-path`, and `data-action`\n openButtons: [],\n // Update the href(from `openButton` -> `data-fork-path`)\n // whenever a `openButton` is clicked\n forkButtons: [],\n // Buttons to hide the `suggestionSections`\n cancelButtons: [],\n // Section to show/hide\n suggestionSections: [],\n // Pieces of text that need updating depending on the action, `edit`, `replace`, `delete`\n actionTextPieces: [],\n};\n\nclass BlobForkSuggestion {\n constructor(options) {\n this.elementMap = Object.assign({}, defaults, options);\n this.onOpenButtonClick = this.onOpenButtonClick.bind(this);\n this.onCancelButtonClick = this.onCancelButtonClick.bind(this);\n }\n\n init() {\n this.bindEvents();\n\n return this;\n }\n\n bindEvents() {\n $(this.elementMap.openButtons).on('click', this.onOpenButtonClick);\n $(this.elementMap.cancelButtons).on('click', this.onCancelButtonClick);\n }\n\n showSuggestionSection(forkPath, action = 'edit') {\n $(this.elementMap.suggestionSections).removeClass('hidden');\n $(this.elementMap.forkButtons).attr('href', forkPath);\n $(this.elementMap.actionTextPieces).text(action);\n }\n\n hideSuggestionSection() {\n $(this.elementMap.suggestionSections).addClass('hidden');\n }\n\n onOpenButtonClick(e) {\n const forkPath = $(e.currentTarget).attr('data-fork-path');\n const action = $(e.currentTarget).attr('data-action');\n this.showSuggestionSection(forkPath, action);\n }\n\n onCancelButtonClick() {\n this.hideSuggestionSection();\n }\n\n destroy() {\n $(this.elementMap.openButtons).off('click', this.onOpenButtonClick);\n $(this.elementMap.cancelButtons).off('click', this.onCancelButtonClick);\n }\n}\n\nexport default BlobForkSuggestion;\n","/* eslint-disable func-names, no-var, no-underscore-dangle, no-param-reassign, prefer-template, quotes, comma-dangle, consistent-return, one-var, one-var-declaration-per-line, no-else-return, max-len */\n\nimport $ from 'jquery';\n\n// LineHighlighter\n//\n// Handles single- and multi-line selection and highlight for blob views.\n//\n//\n// ### Example Markup\n//\n//
\n//
\n//
\n// 1\n// 2\n// 3\n// 4\n// 5\n//
\n//
\n//         \n//           ...\n//           ...\n//           ...\n//           ...\n//           ...\n//         \n//       
\n//
\n//
\n//\n\nconst LineHighlighter = function(options = {}) {\n options.highlightLineClass = options.highlightLineClass || 'hll';\n options.fileHolderSelector = options.fileHolderSelector || '.file-holder';\n options.scrollFileHolder = options.scrollFileHolder || false;\n options.hash = options.hash || window.location.hash;\n\n this.options = options;\n this._hash = options.hash;\n this.highlightLineClass = options.highlightLineClass;\n this.setHash = this.setHash.bind(this);\n this.highlightLine = this.highlightLine.bind(this);\n this.clickHandler = this.clickHandler.bind(this);\n this.highlightHash = this.highlightHash.bind(this);\n\n this.bindEvents();\n this.highlightHash();\n};\n\nLineHighlighter.prototype.bindEvents = function() {\n const $fileHolder = $(this.options.fileHolderSelector);\n\n $fileHolder.on('click', 'a[data-line-number]', this.clickHandler);\n $fileHolder.on('highlight:line', this.highlightHash);\n};\n\nLineHighlighter.prototype.highlightHash = function(newHash) {\n let range;\n if (newHash && typeof newHash === 'string') this._hash = newHash;\n\n this.clearHighlight();\n\n if (this._hash !== '') {\n range = this.hashToRange(this._hash);\n if (range[0]) {\n this.highlightRange(range);\n const lineSelector = `#L${range[0]}`;\n const scrollOptions = {\n // Scroll to the first highlighted line on initial load\n // Offset -50 for the sticky top bar, and another -100 for some context\n offset: -150\n };\n if (this.options.scrollFileHolder) {\n $(this.options.fileHolderSelector).scrollTo(lineSelector, scrollOptions);\n } else {\n $.scrollTo(lineSelector, scrollOptions);\n }\n }\n }\n};\n\nLineHighlighter.prototype.clickHandler = function(event) {\n var current, lineNumber, range;\n event.preventDefault();\n this.clearHighlight();\n lineNumber = $(event.target).closest('a').data('lineNumber');\n current = this.hashToRange(this._hash);\n if (!(current[0] && event.shiftKey)) {\n // If there's no current selection, or there is but Shift wasn't held,\n // treat this like a single-line selection.\n this.setHash(lineNumber);\n return this.highlightLine(lineNumber);\n } else if (event.shiftKey) {\n if (lineNumber < current[0]) {\n range = [lineNumber, current[0]];\n } else {\n range = [current[0], lineNumber];\n }\n this.setHash(range[0], range[1]);\n return this.highlightRange(range);\n }\n};\n\nLineHighlighter.prototype.clearHighlight = function() {\n return $(\".\" + this.highlightLineClass).removeClass(this.highlightLineClass);\n};\n\n// Convert a URL hash String into line numbers\n//\n// hash - Hash String\n//\n// Examples:\n//\n// hashToRange('#L5') # => [5, null]\n// hashToRange('#L5-15') # => [5, 15]\n// hashToRange('#foo') # => [null, null]\n//\n// Returns an Array\nLineHighlighter.prototype.hashToRange = function(hash) {\n var first, last, matches;\n // ?L(\\d+)(?:-(\\d+))?$/)\n matches = hash.match(/^#?L(\\d+)(?:-(\\d+))?$/);\n if (matches && matches.length) {\n first = parseInt(matches[1], 10);\n last = matches[2] ? parseInt(matches[2], 10) : null;\n return [first, last];\n } else {\n return [null, null];\n }\n};\n\n// Highlight a single line\n//\n// lineNumber - Line number to highlight\nLineHighlighter.prototype.highlightLine = function(lineNumber) {\n return $(\"#LC\" + lineNumber).addClass(this.highlightLineClass);\n};\n\n// Highlight all lines within a range\n//\n// range - Array containing the starting and ending line numbers\nLineHighlighter.prototype.highlightRange = function(range) {\n if (range[1]) {\n const results = [];\n const ref = range[0] <= range[1] ? range : range.reverse();\n\n for (let lineNumber = range[0]; lineNumber <= ref[1]; lineNumber += 1) {\n results.push(this.highlightLine(lineNumber));\n }\n\n return results;\n } else {\n return this.highlightLine(range[0]);\n }\n};\n\n// Set the URL hash string\nLineHighlighter.prototype.setHash = function(firstLineNumber, lastLineNumber) {\n var hash;\n if (lastLineNumber) {\n hash = \"#L\" + firstLineNumber + \"-\" + lastLineNumber;\n } else {\n hash = \"#L\" + firstLineNumber;\n }\n this._hash = hash;\n return this.__setLocationHash__(hash);\n};\n\n// Make the actual hash change in the browser\n//\n// This method is stubbed in tests.\nLineHighlighter.prototype.__setLocationHash__ = function(value) {\n return window.history.pushState({\n url: value\n // We're using pushState instead of assigning location.hash directly to\n // prevent the page from scrolling on the hashchange event\n }, document.title, value);\n};\n\nexport default LineHighlighter;\n","import { getLocationHash } from '../lib/utils/url_utility';\n\nconst lineNumberRe = /^L[0-9]+/;\n\nconst updateLineNumbersOnBlobPermalinks = (linksToUpdate) => {\n const hash = getLocationHash();\n if (hash && lineNumberRe.test(hash)) {\n const hashUrlString = `#${hash}`;\n\n [].concat(Array.prototype.slice.call(linksToUpdate)).forEach((permalinkButton) => {\n const baseHref = permalinkButton.getAttribute('data-original-href') || (() => {\n const href = permalinkButton.getAttribute('href');\n permalinkButton.setAttribute('data-original-href', href);\n return href;\n })();\n permalinkButton.setAttribute('href', `${baseHref}${hashUrlString}`);\n });\n }\n};\n\nfunction BlobLinePermalinkUpdater(blobContentHolder, lineNumberSelector, elementsToUpdate) {\n const updateBlameAndBlobPermalinkCb = () => {\n // Wait for the hash to update from the LineHighlighter callback\n setTimeout(() => {\n updateLineNumbersOnBlobPermalinks(elementsToUpdate);\n }, 0);\n };\n\n blobContentHolder.addEventListener('click', (e) => {\n if (e.target.matches(lineNumberSelector)) {\n updateBlameAndBlobPermalinkCb();\n }\n });\n updateBlameAndBlobPermalinkCb();\n}\n\nexport default BlobLinePermalinkUpdater;\n","import Mousetrap from 'mousetrap';\nimport { getLocationHash, visitUrl } from './lib/utils/url_utility';\nimport Shortcuts from './shortcuts';\n\nconst defaults = {\n skipResetBindings: false,\n fileBlobPermalinkUrl: null,\n};\n\nexport default class ShortcutsBlob extends Shortcuts {\n constructor(opts) {\n const options = Object.assign({}, defaults, opts);\n super(options.skipResetBindings);\n this.options = options;\n\n Mousetrap.bind('y', this.moveToFilePermalink.bind(this));\n }\n\n moveToFilePermalink() {\n if (this.options.fileBlobPermalinkUrl) {\n const hash = getLocationHash();\n const hashUrlString = hash ? `#${hash}` : '';\n visitUrl(`${this.options.fileBlobPermalinkUrl}${hashUrlString}`);\n }\n }\n}\n","import LineHighlighter from '~/line_highlighter';\nimport BlobLinePermalinkUpdater from '~/blob/blob_line_permalink_updater';\nimport ShortcutsNavigation from '~/shortcuts_navigation';\nimport ShortcutsBlob from '~/shortcuts_blob';\nimport BlobForkSuggestion from '~/blob/blob_fork_suggestion';\nimport initBlobBundle from '~/blob_edit/blob_bundle';\n\nexport default () => {\n new LineHighlighter(); // eslint-disable-line no-new\n\n // eslint-disable-next-line no-new\n new BlobLinePermalinkUpdater(\n document.querySelector('#blob-content-holder'),\n '.diff-line-num[data-line-number]',\n document.querySelectorAll('.js-data-file-blob-permalink-url, .js-blob-blame-link'),\n );\n\n const fileBlobPermalinkUrlElement = document.querySelector('.js-data-file-blob-permalink-url');\n const fileBlobPermalinkUrl = fileBlobPermalinkUrlElement && fileBlobPermalinkUrlElement.getAttribute('href');\n\n new ShortcutsNavigation(); // eslint-disable-line no-new\n\n // eslint-disable-next-line no-new\n new ShortcutsBlob({\n skipResetBindings: true,\n fileBlobPermalinkUrl,\n });\n\n new BlobForkSuggestion({\n openButtons: document.querySelectorAll('.js-edit-blob-link-fork-toggler'),\n forkButtons: document.querySelectorAll('.js-fork-suggestion-button'),\n cancelButtons: document.querySelectorAll('.js-cancel-fork-suggestion-button'),\n suggestionSections: document.querySelectorAll('.js-file-fork-suggestion-section'),\n actionTextPieces: document.querySelectorAll('.js-file-fork-suggestion-section-action'),\n }).init();\n\n initBlobBundle();\n};\n","export const BYTES_IN_KIB = 1024;\nexport const HIDDEN_CLASS = 'hidden';\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"ci-status-link\"},[(_vm.isLoading)?_c('loading-icon',{attrs:{\"label\":\"Loading pipeline status\",\"size\":\"3\"}}):_c('a',{attrs:{\"href\":_vm.ciStatus.details_path}},[_c('ci-icon',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\"}],attrs:{\"title\":_vm.statusTitle,\"aria-label\":_vm.statusTitle,\"status\":_vm.ciStatus,\"size\":24,\"data-container\":\"body\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from '~/lib/utils/axios_utils';\n\nexport default class CommitPipelineService {\n constructor(endpoint) {\n this.endpoint = endpoint;\n }\n\n fetchData() {\n return axios.get(this.endpoint);\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!./commit_pipeline_status_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!./commit_pipeline_status_component.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./commit_pipeline_status_component.vue?vue&type=template&id=3d677434\"\nimport script from \"./commit_pipeline_status_component.vue?vue&type=script&lang=js\"\nexport * from \"./commit_pipeline_status_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","module.exports = require('./lib/visibility.timers.js')\n","/**\n * exports HTTP status codes\n */\n\nconst httpStatusCodes = {\n ABORTED: 0,\n OK: 200,\n CREATED: 201,\n ACCEPTED: 202,\n NON_AUTHORITATIVE_INFORMATION: 203,\n NO_CONTENT: 204,\n RESET_CONTENT: 205,\n PARTIAL_CONTENT: 206,\n MULTI_STATUS: 207,\n ALREADY_REPORTED: 208,\n IM_USED: 226,\n MULTIPLE_CHOICES: 300,\n BAD_REQUEST: 400,\n NOT_FOUND: 404,\n};\n\nexport const successCodes = [\n httpStatusCodes.OK,\n httpStatusCodes.CREATED,\n httpStatusCodes.ACCEPTED,\n httpStatusCodes.NON_AUTHORITATIVE_INFORMATION,\n httpStatusCodes.NO_CONTENT,\n httpStatusCodes.RESET_CONTENT,\n httpStatusCodes.PARTIAL_CONTENT,\n httpStatusCodes.MULTI_STATUS,\n httpStatusCodes.ALREADY_REPORTED,\n httpStatusCodes.IM_USED,\n];\n\nexport default httpStatusCodes;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:_vm.cssClass},[_c('icon',{attrs:{\"name\":_vm.icon,\"size\":_vm.size}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js??ref--0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ci_icon.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!./ci_icon.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ci_icon.vue?vue&type=template&id=69ea14c1\"\nimport script from \"./ci_icon.vue?vue&type=script&lang=js\"\nexport * from \"./ci_icon.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 httpStatusCodes, { successCodes } from './http_status';\nimport { normalizeHeaders } from './common_utils';\n\n/**\n * Polling utility for handling realtime updates.\n * Requirements: Promise based HTTP client\n *\n * Service for promise based http client and method need to be provided as props\n *\n * @example\n * new Poll({\n * resource: resource,\n * method: 'name',\n * data: {page: 1, scope: 'all'}, // optional\n * successCallback: () => {},\n * errorCallback: () => {},\n * notificationCallback: () => {}, // optional\n * }).makeRequest();\n *\n * Usage in pipelines table with visibility lib:\n *\n * const poll = new Poll({\n * resource: this.service,\n * method: 'getPipelines',\n * data: { page: pageNumber, scope },\n * successCallback: this.successCallback,\n * errorCallback: this.errorCallback,\n * notificationCallback: this.updateLoading,\n * });\n *\n * if (!Visibility.hidden()) {\n * poll.makeRequest();\n * }\n *\n * Visibility.change(() => {\n * if (!Visibility.hidden()) {\n * poll.restart();\n * } else {\n * poll.stop();\n * }\n * });\n *\n * 1. Checks for response and headers before start polling\n * 2. Interval is provided by `Poll-Interval` header.\n * 3. If `Poll-Interval` is -1, we stop polling\n * 4. If HTTP response is 200, we poll.\n * 5. If HTTP response is different from 200, we stop polling.\n *\n */\nexport default class Poll {\n constructor(options = {}) {\n this.options = options;\n this.options.data = options.data || {};\n this.options.notificationCallback =\n options.notificationCallback || function notificationCallback() {};\n\n this.intervalHeader = 'POLL-INTERVAL';\n this.timeoutID = null;\n this.canPoll = true;\n }\n\n checkConditions(response) {\n const headers = normalizeHeaders(response.headers);\n const pollInterval = parseInt(headers[this.intervalHeader], 10);\n if (pollInterval > 0 && successCodes.indexOf(response.status) !== -1 && this.canPoll) {\n this.timeoutID = setTimeout(() => {\n this.makeRequest();\n }, pollInterval);\n }\n this.options.successCallback(response);\n }\n\n makeRequest() {\n const { resource, method, data, errorCallback, notificationCallback } = this.options;\n\n // It's called everytime a new request is made. Useful to update the status.\n notificationCallback(true);\n\n return resource[method](data)\n .then(response => {\n this.checkConditions(response);\n notificationCallback(false);\n })\n .catch(error => {\n notificationCallback(false);\n if (error.status === httpStatusCodes.ABORTED) {\n return;\n }\n errorCallback(error);\n });\n }\n\n /**\n * Stops the polling recursive chain\n * and guarantees if the timeout is already running it won't make another request by\n * cancelling the previously established timeout.\n */\n stop() {\n this.canPoll = false;\n clearTimeout(this.timeoutID);\n }\n\n /**\n * Restarts polling after it has been stoped\n */\n restart(options) {\n // update data\n if (options && options.data) {\n this.options.data = options.data;\n }\n\n this.canPoll = true;\n this.makeRequest();\n }\n}\n"],"sourceRoot":""}