{"version":3,"sources":["webpack:////opt/gitlab/embedded/service/gitlab-rails/node_modules/mousetrap/plugins/pause/mousetrap-pause.js","webpack:///./vue_shared/components/gl_modal.vue?c2e0","webpack:///vue_shared/components/gl_modal.vue","webpack:///./vue_shared/components/gl_modal.vue?b1d8","webpack:///./vue_shared/components/gl_modal.vue","webpack:///./shortcuts_navigation.js","webpack:///./project_select_combo_button.js","webpack:///./project_select.js","webpack:///./pages/projects/project.js","webpack:///./pages/projects/index.js","webpack:///./dropzone_input.js","webpack:///./lib/utils/text_markdown.js","webpack:///./gl_form.js","webpack:///./pages/projects/wikis/wikis.js","webpack:///./shortcuts_wiki.js","webpack:///./pages/projects/wikis/components/delete_wiki_modal.vue?0ec6","webpack:///pages/projects/wikis/components/delete_wiki_modal.vue","webpack:///./pages/projects/wikis/components/delete_wiki_modal.vue","webpack:///./pages/projects/wikis/components/delete_wiki_modal.vue?3c69","webpack:///./pages/projects/wikis/index.js","webpack:///./zen_mode.js"],"names":["Mousetrap","self","_originalStopCallback","stopCallback","enabled","e","element","combo","pause","unpause","buttonVariants","sizeVariants","components_gl_modalvue_type_script_lang_js","name","props","id","type","String","required","default","modalSize","validator","value","includes","headerTitleText","footerPrimaryButtonVariant","footerPrimaryButtonText","computed","modalSizeClass","this","methods","emitCancel","event","$emit","emitSubmit","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","tabindex","role","class","_t","_v","_s","data-dismiss","aria-label","s__","on","click","$event","aria-hidden","__webpack_exports__","ShortcutsNavigation","_classCallCheck","_this","_possibleConstructorReturn","__proto__","getPrototypeOf","call","mousetrap__WEBPACK_IMPORTED_MODULE_0___default","a","bind","_shortcuts_dashboard_navigation__WEBPACK_IMPORTED_MODULE_1__","enabledHelp","push","_shortcuts__WEBPACK_IMPORTED_MODULE_2__","ProjectSelectComboButton","select","projectSelectInput","jquery_default","newItemBtn","resourceType","data","resourceLabel","formattedText","deriveTextVariants","groupId","bindEvents","initLocalStorage","siblings","openDropdown","getProjectFromLocalStorage","preventDefault","selectProject","accessor","isLocalStorageAccessSafe","localStorageKey","localStorageItemType","join","setBtnTextFromLocalStorage","currentTarget","select2","selectedProjectData","JSON","parse","val","projectMeta","url","setNewItemBtnAttributes","setProjectInLocalStorage","cachedProjectData","project","attr","text","defaultTextPrefix","presetTextSuffix","projectString","localStorage","getItem","stringify","setItem","split","slice","projectSelect","each","i","placeholder","simpleFilter","includeGroups","allProjects","orderBy","withIssuesEnabled","withMergeRequestsEnabled","minimumInputLength","query","finalCallback","projectsCallback","projects","results","callback","groupsCallback","groups","concat","api","term","groupProjects","order_by","with_issues_enabled","with_merge_requests_enabled","membership","web_url","name_with_namespace","dropdownCssClass","project_select_combo_button","__webpack_require__","d","Project","$cloneOptions","jquery__WEBPACK_IMPORTED_MODULE_0___default","$projectCloneField","$cloneBtnText","selectedCloneOption","trim","length","$","addClass","$this","activeText","find","not","removeClass","toggleClass","initRefSwitcher","parents","submit","js_cookie__WEBPACK_IMPORTED_MODULE_1___default","set","remove","projectSelectDropdown","_project_select__WEBPACK_IMPORTED_MODULE_6__","changeProject","window","location","refListItem","document","createElement","refLink","href","$dropdown","selected","glDropdown","_lib_utils_axios_utils__WEBPACK_IMPORTED_MODULE_4__","get","params","ref","search","then","_ref","catch","_flash__WEBPACK_IMPORTED_MODULE_5__","_locale__WEBPACK_IMPORTED_MODULE_2__","selectable","filterable","filterRemote","filterByText","inputFieldName","fieldName","renderRow","li","cloneNode","header","className","textContent","link","dataset","appendChild","obj","$el","toggleLabel","clicked","options","$form","closest","$visit","shouldVisit","action","divider","indexOf","_lib_utils_url_utility__WEBPACK_IMPORTED_MODULE_3__","visitUrl","serialize","addEventListener","_project__WEBPACK_IMPORTED_MODULE_0__","_shortcuts_navigation__WEBPACK_IMPORTED_MODULE_1__","dropzoneInput","form","$attachButton","$attachingFileMessage","$cancelButton","$retryLink","$uploadProgress","$uploadingErrorContainer","$uploadingErrorMessage","$uploadingProgressContainer","uploadsPath","uploads_path","maxFileSize","gon","max_file_size","formTextarea","handlePaste","pasteText","addFileToForm","updateAttachingMessage","isImage","getFilename","uploadFile","wrap","$mdArea","setupMarkdownPreview","$formDropzone","parent","append","dropzone","dictDefaultMessage","clickable","paramName","maxFilesize","uploadMultiple","headers","csrf","previewContainer","processing","alert","dragover","css","dragleave","drop","focus","success","response","processingFileCount","getQueuedFiles","getUploadingFiles","shouldPad","markdown","error","file","errorMessage","arguments","undefined","xhr","message","responseText","html","totaluploadprogress","totalUploadProgress","files","Math","round","sending","removedfile","queuecomplete","trigger","child","children","stopPropagation","dropzone_default","forElement","removeAllFiles","dropzoneInstance","target","querySelector","failedFiles","map","failedFile","status","ERROR","accepted","addFile","pasteEvent","originalEvent","clipboardData","items","image","filename","getAsFile","item","textarea","caretStart","selectionStart","caretEnd","selectionEnd","textEnd","beforeSelection","substring","afterSelection","setSelectionRange","style","height","scrollHeight","dispatchEvent","Event","path","underscore_default","escape","getData","closeSpinner","formData","FormData","axios_utils","post","md","$child","index","replace","insertToTextArea","messageContainer","attachingMessage","filesCount","filter","autoDiscover","updateText","textArea","tag","blockTag","$textArea","selectedText","textToInsert","selectedSplit","startChar","removedLastNewLine","removedFirstNewLine","currentLineEmpty","lastNewLine","substr","lastIndexOf","test","before","lineBefore","after","lineAfter","blockTagText","common_utils","wrapped","pos","moveCursor","insertMarkdownText","gl_form_GLForm","GLForm","enableGFM","destroy","setupForm","clearEventListeners","autoComplete","isNewForm","is","gl","utils","disableButtonIfEmptyField","gfm_auto_complete","GfmAutoComplete","dataSources","setup","emojis","members","issues","milestones","mergeRequests","labels","autosize_default","addEventListeners","off","hide","show","isAutosizeable","setupAutosize","setHeightData","destroyAutosize","setTimeout","outerHeight","Wikis","sidebarEl","sidebarExpanded","sidebarToggles","querySelectorAll","handleToggleSidebar","newWikiForm","handleNewWikiSubmit","renderSidebar","slugInput","slug","text_utility","wikisPath","getAttribute","url_utility","classList","sidebarCanCollapse","contains","add","bootstrapBreakpoint","breakpoints","getBreakpointSize","ShortcutsWiki","shortcuts_wiki_classCallCheck","mousetrap_default","editWiki","shortcuts_navigation","shortcuts_dashboard_navigation","components_delete_wiki_modalvue_type_script_lang_js","components","GlModal","gl_modal","deleteWikiUrl","pageTitle","csrfToken","locale","title","onSubmit","$refs","delete_wiki_modal","header-title-text","footer-primary-button-variant","footer-primary-button-text","method","domProps","wikis","shortcuts_wiki","zen_mode","gl_form","deleteWikiButton","getElementById","vue_esm","use","translate","_deleteWikiButton$dat","deleteWikiModalEl","el","render","token","dropzone__WEBPACK_IMPORTED_MODULE_2___default","ZenMode","active_backdrop","active_textarea","enter","exit","keyCode","backdrop","mousetrap__WEBPACK_IMPORTED_MODULE_3___default","removeAttr","scrollTo","$dropzone","hasClass","enable","zen_area","offset"],"mappings":"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","file":"pages.projects.wikis.18fa7a37.chunk.js","sourcesContent":["/**\n * adds a pause and unpause method to Mousetrap\n * this allows you to enable or disable keyboard shortcuts\n * without having to reset Mousetrap and rebind everything\n */\n/* global Mousetrap:true */\nMousetrap = (function(Mousetrap) {\n var self = Mousetrap,\n _originalStopCallback = self.stopCallback,\n enabled = true;\n\n self.stopCallback = function(e, element, combo) {\n if (!enabled) {\n return true;\n }\n\n return _originalStopCallback(e, element, combo);\n };\n\n self.pause = function() {\n enabled = false;\n };\n\n self.unpause = function() {\n enabled = true;\n };\n\n return self;\n}) (Mousetrap);\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal fade\",attrs:{\"id\":_vm.id,\"tabindex\":\"-1\",\"role\":\"dialog\"}},[_c('div',{staticClass:\"modal-dialog\",class:_vm.modalSizeClass,attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_vm._t(\"header\",[_c('h4',{staticClass:\"modal-title\"},[_vm._t(\"title\",[_vm._v(\"\\n \"+_vm._s(_vm.headerTitleText)+\"\\n \")])],2),_vm._v(\" \"),_c('button',{staticClass:\"close js-modal-close-action\",attrs:{\"type\":\"button\",\"data-dismiss\":\"modal\",\"aria-label\":_vm.s__('Modal|Close')},on:{\"click\":function($event){_vm.emitCancel($event)}}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"×\")])])])],2),_vm._v(\" \"),_c('div',{staticClass:\"modal-body\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('div',{staticClass:\"modal-footer\"},[_vm._t(\"footer\",[_c('button',{staticClass:\"btn js-modal-cancel-action\",attrs:{\"type\":\"button\",\"data-dismiss\":\"modal\"},on:{\"click\":function($event){_vm.emitCancel($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.s__('Modal|Cancel'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn js-modal-primary-action\",class:(\"btn-\" + _vm.footerPrimaryButtonVariant),attrs:{\"type\":\"button\",\"data-dismiss\":\"modal\"},on:{\"click\":function($event){_vm.emitSubmit($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.footerPrimaryButtonText)+\"\\n \")])])],2)])])])}\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!./gl_modal.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!./gl_modal.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./gl_modal.vue?vue&type=template&id=35fa04ac\"\nimport script from \"./gl_modal.vue?vue&type=script&lang=js\"\nexport * from \"./gl_modal.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 Mousetrap from 'mousetrap';\nimport findAndFollowLink from './shortcuts_dashboard_navigation';\nimport Shortcuts from './shortcuts';\n\nexport default class ShortcutsNavigation extends Shortcuts {\n constructor() {\n super();\n\n Mousetrap.bind('g p', () => findAndFollowLink('.shortcuts-project'));\n Mousetrap.bind('g v', () => findAndFollowLink('.shortcuts-project-activity'));\n Mousetrap.bind('g f', () => findAndFollowLink('.shortcuts-tree'));\n Mousetrap.bind('g c', () => findAndFollowLink('.shortcuts-commits'));\n Mousetrap.bind('g j', () => findAndFollowLink('.shortcuts-builds'));\n Mousetrap.bind('g n', () => findAndFollowLink('.shortcuts-network'));\n Mousetrap.bind('g d', () => findAndFollowLink('.shortcuts-repository-charts'));\n Mousetrap.bind('g i', () => findAndFollowLink('.shortcuts-issues'));\n Mousetrap.bind('g b', () => findAndFollowLink('.shortcuts-issue-boards'));\n Mousetrap.bind('g m', () => findAndFollowLink('.shortcuts-merge_requests'));\n Mousetrap.bind('g w', () => findAndFollowLink('.shortcuts-wiki'));\n Mousetrap.bind('g s', () => findAndFollowLink('.shortcuts-snippets'));\n Mousetrap.bind('g k', () => findAndFollowLink('.shortcuts-kubernetes'));\n Mousetrap.bind('g e', () => findAndFollowLink('.shortcuts-environments'));\n Mousetrap.bind('i', () => findAndFollowLink('.shortcuts-new-issue'));\n\n this.enabledHelp.push('.hidden-shortcut.project');\n }\n}\n","import $ from 'jquery';\nimport AccessorUtilities from './lib/utils/accessor';\n\nexport default class ProjectSelectComboButton {\n constructor(select) {\n this.projectSelectInput = $(select);\n this.newItemBtn = $('.new-project-item-link');\n this.resourceType = this.newItemBtn.data('type');\n this.resourceLabel = this.newItemBtn.data('label');\n this.formattedText = this.deriveTextVariants();\n this.groupId = this.projectSelectInput.data('groupId');\n this.bindEvents();\n this.initLocalStorage();\n }\n\n bindEvents() {\n this.projectSelectInput.siblings('.new-project-item-select-button')\n .on('click', e => this.openDropdown(e));\n\n this.newItemBtn.on('click', (e) => {\n if (!this.getProjectFromLocalStorage()) {\n e.preventDefault();\n this.openDropdown(e);\n }\n });\n\n this.projectSelectInput.on('change', () => this.selectProject());\n }\n\n initLocalStorage() {\n const localStorageIsSafe = AccessorUtilities.isLocalStorageAccessSafe();\n\n if (localStorageIsSafe) {\n this.localStorageKey = ['group', this.groupId, this.formattedText.localStorageItemType, 'recent-project'].join('-');\n this.setBtnTextFromLocalStorage();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n openDropdown(event) {\n $(event.currentTarget).siblings('.project-item-select').select2('open');\n }\n\n selectProject() {\n const selectedProjectData = JSON.parse(this.projectSelectInput.val());\n const projectUrl = `${selectedProjectData.url}/${this.projectSelectInput.data('relativePath')}`;\n const projectName = selectedProjectData.name;\n\n const projectMeta = {\n url: projectUrl,\n name: projectName,\n };\n\n this.setNewItemBtnAttributes(projectMeta);\n this.setProjectInLocalStorage(projectMeta);\n }\n\n setBtnTextFromLocalStorage() {\n const cachedProjectData = this.getProjectFromLocalStorage();\n\n this.setNewItemBtnAttributes(cachedProjectData);\n }\n\n setNewItemBtnAttributes(project) {\n if (project) {\n this.newItemBtn.attr('href', project.url);\n this.newItemBtn.text(`${this.formattedText.defaultTextPrefix} in ${project.name}`);\n } else {\n this.newItemBtn.text(`选择一个项目来创建 ${this.formattedText.presetTextSuffix}`);\n }\n }\n\n getProjectFromLocalStorage() {\n const projectString = localStorage.getItem(this.localStorageKey);\n\n return JSON.parse(projectString);\n }\n\n setProjectInLocalStorage(projectMeta) {\n const projectString = JSON.stringify(projectMeta);\n\n localStorage.setItem(this.localStorageKey, projectString);\n }\n\n deriveTextVariants() {\n const defaultTextPrefix = this.resourceLabel;\n\n // the trailing slice call depluralizes each of these strings (e.g. new-issues -> new-issue)\n const localStorageItemType = `new-${this.resourceType.split('_').join('-').slice(0, -1)}`;\n const presetTextSuffix = this.resourceType.split('_').join(' ').slice(0, -1);\n\n return {\n localStorageItemType, // new-issue / new-merge-request\n defaultTextPrefix, // New issue / New merge request\n presetTextSuffix, // issue / merge request\n };\n }\n}\n\n","/* eslint-disable func-names, space-before-function-paren, wrap-iife, prefer-arrow-callback, no-var, comma-dangle, object-shorthand, one-var, one-var-declaration-per-line, no-else-return, quotes, max-len */\n\nimport $ from 'jquery';\nimport Api from './api';\nimport ProjectSelectComboButton from './project_select_combo_button';\n\nexport default function projectSelect() {\n $('.ajax-project-select').each(function(i, select) {\n var placeholder;\n const simpleFilter = $(select).data('simpleFilter') || false;\n this.groupId = $(select).data('groupId');\n this.includeGroups = $(select).data('includeGroups');\n this.allProjects = $(select).data('allProjects') || false;\n this.orderBy = $(select).data('orderBy') || 'id';\n this.withIssuesEnabled = $(select).data('withIssuesEnabled');\n this.withMergeRequestsEnabled = $(select).data('withMergeRequestsEnabled');\n\n placeholder = \"搜索项目\";\n if (this.includeGroups) {\n placeholder += \"或群组\";\n }\n\n $(select).select2({\n placeholder: placeholder,\n minimumInputLength: 0,\n query: (function (_this) {\n return function (query) {\n var finalCallback, projectsCallback;\n finalCallback = function (projects) {\n var data;\n data = {\n results: projects\n };\n return query.callback(data);\n };\n if (_this.includeGroups) {\n projectsCallback = function (projects) {\n var groupsCallback;\n groupsCallback = function (groups) {\n var data;\n data = groups.concat(projects);\n return finalCallback(data);\n };\n return Api.groups(query.term, {}, groupsCallback);\n };\n } else {\n projectsCallback = finalCallback;\n }\n if (_this.groupId) {\n return Api.groupProjects(_this.groupId, query.term, projectsCallback);\n } else {\n return Api.projects(query.term, {\n order_by: _this.orderBy,\n with_issues_enabled: _this.withIssuesEnabled,\n with_merge_requests_enabled: _this.withMergeRequestsEnabled,\n membership: !_this.allProjects,\n }, projectsCallback);\n }\n };\n })(this),\n id: function(project) {\n if (simpleFilter) return project.id;\n return JSON.stringify({\n name: project.name,\n url: project.web_url,\n });\n },\n text: function (project) {\n return project.name_with_namespace || project.name;\n },\n dropdownCssClass: \"ajax-project-dropdown\"\n });\n if (simpleFilter) return select;\n return new ProjectSelectComboButton(select);\n });\n}\n","/* eslint-disable func-names, space-before-function-paren, no-var, consistent-return, no-new, prefer-arrow-callback, no-return-assign, one-var, one-var-declaration-per-line, object-shorthand, no-else-return, newline-per-chained-call, no-shadow, vars-on-top, prefer-template, max-len */\n\nimport $ from 'jquery';\nimport Cookies from 'js-cookie';\nimport { __ } from '~/locale';\nimport { visitUrl } from '~/lib/utils/url_utility';\nimport axios from '~/lib/utils/axios_utils';\nimport flash from '~/flash';\nimport projectSelect from '../../project_select';\n\nexport default class Project {\n constructor() {\n const $cloneOptions = $('ul.clone-options-dropdown');\n const $projectCloneField = $('#project_clone');\n const $cloneBtnText = $('a.clone-dropdown-btn span');\n\n const selectedCloneOption = $cloneBtnText.text().trim();\n if (selectedCloneOption.length > 0) {\n $(`a:contains('${selectedCloneOption}')`, $cloneOptions).addClass('is-active');\n }\n\n $('a', $cloneOptions).on('click', (e) => {\n const $this = $(e.currentTarget);\n const url = $this.attr('href');\n const activeText = $this.find('.dropdown-menu-inner-title').text();\n\n e.preventDefault();\n\n $('.is-active', $cloneOptions).not($this).removeClass('is-active');\n $this.toggleClass('is-active');\n $projectCloneField.val(url);\n $cloneBtnText.text(activeText);\n\n return $('.clone').text(url);\n });\n // Ref switcher\n Project.initRefSwitcher();\n $('.project-refs-select').on('change', function() {\n return $(this).parents('form').submit();\n });\n $('.hide-no-ssh-message').on('click', function(e) {\n Cookies.set('hide_no_ssh_message', 'false');\n $(this).parents('.no-ssh-key-message').remove();\n return e.preventDefault();\n });\n $('.hide-no-password-message').on('click', function(e) {\n Cookies.set('hide_no_password_message', 'false');\n $(this).parents('.no-password-message').remove();\n return e.preventDefault();\n });\n Project.projectSelectDropdown();\n }\n\n static projectSelectDropdown() {\n projectSelect();\n $('.project-item-select').on('click', e => Project.changeProject($(e.currentTarget).val()));\n }\n\n static changeProject(url) {\n return window.location = url;\n }\n\n static initRefSwitcher() {\n var refListItem = document.createElement('li');\n var refLink = document.createElement('a');\n\n refLink.href = '#';\n\n return $('.js-project-refs-dropdown').each(function() {\n var $dropdown, selected;\n $dropdown = $(this);\n selected = $dropdown.data('selected');\n return $dropdown.glDropdown({\n data(term, callback) {\n axios.get($dropdown.data('refsUrl'), {\n params: {\n ref: $dropdown.data('ref'),\n search: term,\n },\n })\n .then(({ data }) => callback(data))\n .catch(() => flash(__('An error occurred while getting projects')));\n },\n selectable: true,\n filterable: true,\n filterRemote: true,\n filterByText: true,\n inputFieldName: $dropdown.data('inputFieldName'),\n fieldName: $dropdown.data('fieldName'),\n renderRow: function(ref) {\n var li = refListItem.cloneNode(false);\n\n if (ref.header != null) {\n li.className = 'dropdown-header';\n li.textContent = ref.header;\n } else {\n var link = refLink.cloneNode(false);\n\n if (ref === selected) {\n link.className = 'is-active';\n }\n\n link.textContent = ref;\n link.dataset.ref = ref;\n\n li.appendChild(link);\n }\n\n return li;\n },\n id: function(obj, $el) {\n return $el.attr('data-ref');\n },\n toggleLabel: function(obj, $el) {\n return $el.text().trim();\n },\n clicked: function(options) {\n const { e } = options;\n e.preventDefault();\n if ($('input[name=\"ref\"]').length) {\n var $form = $dropdown.closest('form');\n\n var $visit = $dropdown.data('visit');\n var shouldVisit = $visit ? true : $visit;\n var action = $form.attr('action');\n var divider = action.indexOf('?') === -1 ? '?' : '&';\n if (shouldVisit) {\n visitUrl(`${action}${divider}${$form.serialize()}`);\n }\n }\n },\n });\n });\n }\n}\n","import Project from './project';\nimport ShortcutsNavigation from '../../shortcuts_navigation';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n new Project(); // eslint-disable-line no-new\n new ShortcutsNavigation(); // eslint-disable-line no-new\n});\n","import $ from 'jquery';\nimport Dropzone from 'dropzone';\nimport _ from 'underscore';\nimport './preview_markdown';\nimport csrf from './lib/utils/csrf';\nimport axios from './lib/utils/axios_utils';\n\nDropzone.autoDiscover = false;\n\nexport default function dropzoneInput(form) {\n const divHover = '
';\n const iconPaperclip = '';\n const $attachButton = form.find('.button-attach-file');\n const $attachingFileMessage = form.find('.attaching-file-message');\n const $cancelButton = form.find('.button-cancel-uploading-files');\n const $retryLink = form.find('.retry-uploading-link');\n const $uploadProgress = form.find('.uploading-progress');\n const $uploadingErrorContainer = form.find('.uploading-error-container');\n const $uploadingErrorMessage = form.find('.uploading-error-message');\n const $uploadingProgressContainer = form.find('.uploading-progress-container');\n const uploadsPath = window.uploads_path || null;\n const maxFileSize = gon.max_file_size || 10;\n const formTextarea = form.find('.js-gfm-input');\n let handlePaste;\n let pasteText;\n let addFileToForm;\n let updateAttachingMessage;\n let isImage;\n let getFilename;\n let uploadFile;\n\n formTextarea.wrap('
');\n formTextarea.on('paste', event => handlePaste(event));\n\n // Add dropzone area to the form.\n const $mdArea = formTextarea.closest('.md-area');\n form.setupMarkdownPreview();\n const $formDropzone = form.find('.div-dropzone');\n $formDropzone.parent().addClass('div-dropzone-wrapper');\n $formDropzone.append(divHover);\n $formDropzone.find('.div-dropzone-hover').append(iconPaperclip);\n\n if (!uploadsPath) {\n $formDropzone.addClass('js-invalid-dropzone');\n return;\n }\n\n const dropzone = $formDropzone.dropzone({\n url: uploadsPath,\n dictDefaultMessage: '',\n clickable: true,\n paramName: 'file',\n maxFilesize: maxFileSize,\n uploadMultiple: false,\n headers: csrf.headers,\n previewContainer: false,\n processing: () => $('.div-dropzone-alert').alert('close'),\n dragover: () => {\n $mdArea.addClass('is-dropzone-hover');\n form.find('.div-dropzone-hover').css('opacity', 0.7);\n },\n dragleave: () => {\n $mdArea.removeClass('is-dropzone-hover');\n form.find('.div-dropzone-hover').css('opacity', 0);\n },\n drop: () => {\n $mdArea.removeClass('is-dropzone-hover');\n form.find('.div-dropzone-hover').css('opacity', 0);\n formTextarea.focus();\n },\n success(header, response) {\n const processingFileCount = this.getQueuedFiles().length + this.getUploadingFiles().length;\n const shouldPad = processingFileCount >= 1;\n\n pasteText(response.link.markdown, shouldPad);\n // Show 'Attach a file' link only when all files have been uploaded.\n if (!processingFileCount) $attachButton.removeClass('hide');\n addFileToForm(response.link.url);\n },\n error: (file, errorMessage = 'Attaching the file failed.', xhr) => {\n // If 'error' event is fired by dropzone, the second parameter is error message.\n // If the 'errorMessage' parameter is empty, the default error message is set.\n // If the 'error' event is fired by backend (xhr) error response, the third parameter is\n // xhr object (xhr.responseText is error message).\n // On error we hide the 'Attach' and 'Cancel' buttons\n // and show an error.\n\n // If there's xhr error message, let's show it instead of dropzone's one.\n const message = xhr ? xhr.responseText : errorMessage;\n\n $uploadingErrorContainer.removeClass('hide');\n $uploadingErrorMessage.html(message);\n $attachButton.addClass('hide');\n $cancelButton.addClass('hide');\n },\n totaluploadprogress(totalUploadProgress) {\n updateAttachingMessage(this.files, $attachingFileMessage);\n $uploadProgress.text(`${Math.round(totalUploadProgress)}%`);\n },\n sending: () => {\n // DOM elements already exist.\n // Instead of dynamically generating them,\n // we just either hide or show them.\n $attachButton.addClass('hide');\n $uploadingErrorContainer.addClass('hide');\n $uploadingProgressContainer.removeClass('hide');\n $cancelButton.removeClass('hide');\n },\n removedfile: () => {\n $attachButton.removeClass('hide');\n $cancelButton.addClass('hide');\n $uploadingProgressContainer.addClass('hide');\n $uploadingErrorContainer.addClass('hide');\n },\n queuecomplete: () => {\n $('.dz-preview').remove();\n $('.markdown-area').trigger('input');\n\n $uploadingProgressContainer.addClass('hide');\n $cancelButton.addClass('hide');\n },\n });\n\n const child = $(dropzone[0]).children('textarea');\n\n // removeAllFiles(true) stops uploading files (if any)\n // and remove them from dropzone files queue.\n $cancelButton.on('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n Dropzone.forElement($formDropzone.get(0)).removeAllFiles(true);\n });\n\n // If 'error' event is fired, we store a failed files,\n // clear dropzone files queue, change status of failed files to undefined,\n // and add that files to the dropzone files queue again.\n // addFile() adds file to dropzone files queue and upload it.\n $retryLink.on('click', (e) => {\n const dropzoneInstance = Dropzone.forElement(e.target.closest('.js-main-target-form').querySelector('.div-dropzone'));\n const failedFiles = dropzoneInstance.files;\n\n e.preventDefault();\n\n // 'true' parameter of removeAllFiles() cancels\n // uploading of files that are being uploaded at the moment.\n dropzoneInstance.removeAllFiles(true);\n\n failedFiles.map((failedFile) => {\n const file = failedFile;\n\n if (file.status === Dropzone.ERROR) {\n file.status = undefined;\n file.accepted = undefined;\n }\n\n return dropzoneInstance.addFile(file);\n });\n });\n // eslint-disable-next-line consistent-return\n handlePaste = (event) => {\n const pasteEvent = event.originalEvent;\n if (pasteEvent.clipboardData && pasteEvent.clipboardData.items) {\n const image = isImage(pasteEvent);\n if (image) {\n event.preventDefault();\n const filename = getFilename(pasteEvent) || 'image.png';\n const text = `{{${filename}}}`;\n pasteText(text);\n return uploadFile(image.getAsFile(), filename);\n }\n }\n };\n\n isImage = (data) => {\n let i = 0;\n while (i < data.clipboardData.items.length) {\n const item = data.clipboardData.items[i];\n if (item.type.indexOf('image') !== -1) {\n return item;\n }\n i += 1;\n }\n return false;\n };\n\n pasteText = (text, shouldPad) => {\n let formattedText = text;\n if (shouldPad) {\n formattedText += '\\n\\n';\n }\n const textarea = child.get(0);\n const caretStart = textarea.selectionStart;\n const caretEnd = textarea.selectionEnd;\n const textEnd = $(child).val().length;\n const beforeSelection = $(child).val().substring(0, caretStart);\n const afterSelection = $(child).val().substring(caretEnd, textEnd);\n $(child).val(beforeSelection + formattedText + afterSelection);\n textarea.setSelectionRange(caretStart + formattedText.length, caretEnd + formattedText.length);\n textarea.style.height = `${textarea.scrollHeight}px`;\n formTextarea.get(0).dispatchEvent(new Event('input'));\n return formTextarea.trigger('input');\n };\n\n addFileToForm = (path) => {\n $(form).append(``);\n };\n\n getFilename = (e) => {\n let value;\n if (window.clipboardData && window.clipboardData.getData) {\n value = window.clipboardData.getData('Text');\n } else if (e.clipboardData && e.clipboardData.getData) {\n value = e.clipboardData.getData('text/plain');\n }\n value = value.split('\\r');\n return value[0];\n };\n\n const showSpinner = () => $uploadingProgressContainer.removeClass('hide');\n\n const closeSpinner = () => $uploadingProgressContainer.addClass('hide');\n\n const showError = (message) => {\n $uploadingErrorContainer.removeClass('hide');\n $uploadingErrorMessage.html(message);\n };\n\n const closeAlertMessage = () => form.find('.div-dropzone-alert').alert('close');\n\n const insertToTextArea = (filename, url) => {\n const $child = $(child);\n $child.val((index, val) => val.replace(`{{${filename}}}`, url));\n\n $child.trigger('change');\n };\n\n uploadFile = (item, filename) => {\n const formData = new FormData();\n formData.append('file', item, filename);\n\n showSpinner();\n closeAlertMessage();\n\n axios.post(uploadsPath, formData)\n .then(({ data }) => {\n const md = data.link.markdown;\n\n insertToTextArea(filename, md);\n closeSpinner();\n })\n .catch((e) => {\n showError(e.response.data.message);\n closeSpinner();\n });\n };\n\n updateAttachingMessage = (files, messageContainer) => {\n let attachingMessage;\n const filesCount = files.filter(file => file.status === 'uploading' || file.status === 'queued').length;\n\n // Dinamycally change uploading files text depending on files number in\n // dropzone files queue.\n if (filesCount > 1) {\n attachingMessage = `Attaching ${filesCount} files -`;\n } else {\n attachingMessage = 'Attaching a file -';\n }\n\n messageContainer.text(attachingMessage);\n };\n\n form.find('.markdown-selector').click(function onMarkdownClick(e) {\n e.preventDefault();\n $(this).closest('.gfm-form').find('.div-dropzone').click();\n formTextarea.focus();\n });\n}\n","/* eslint-disable import/prefer-default-export, func-names, space-before-function-paren, wrap-iife, no-var, no-param-reassign, no-cond-assign, quotes, one-var, one-var-declaration-per-line, operator-assignment, no-else-return, prefer-template, prefer-arrow-callback, no-empty, max-len, consistent-return, no-unused-vars, no-return-assign, max-len, vars-on-top */\nimport $ from 'jquery';\nimport { insertText } from '~/lib/utils/common_utils';\n\nfunction selectedText(text, textarea) {\n return text.substring(textarea.selectionStart, textarea.selectionEnd);\n}\n\nfunction lineBefore(text, textarea) {\n var split;\n split = text.substring(0, textarea.selectionStart).trim().split('\\n');\n return split[split.length - 1];\n}\n\nfunction lineAfter(text, textarea) {\n return text.substring(textarea.selectionEnd).trim().split('\\n')[0];\n}\n\nfunction blockTagText(text, textArea, blockTag, selected) {\n const before = lineBefore(text, textArea);\n const after = lineAfter(text, textArea);\n if (before === blockTag && after === blockTag) {\n // To remove the block tag we have to select the line before & after\n if (blockTag != null) {\n textArea.selectionStart = textArea.selectionStart - (blockTag.length + 1);\n textArea.selectionEnd = textArea.selectionEnd + (blockTag.length + 1);\n }\n return selected;\n } else {\n return blockTag + \"\\n\" + selected + \"\\n\" + blockTag;\n }\n}\n\nfunction moveCursor(textArea, tag, wrapped, removedLastNewLine) {\n var pos;\n if (!textArea.setSelectionRange) {\n return;\n }\n if (textArea.selectionStart === textArea.selectionEnd) {\n if (wrapped) {\n pos = textArea.selectionStart - tag.length;\n } else {\n pos = textArea.selectionStart;\n }\n\n if (removedLastNewLine) {\n pos -= 1;\n }\n\n return textArea.setSelectionRange(pos, pos);\n }\n}\n\nexport function insertMarkdownText(textArea, text, tag, blockTag, selected, wrap) {\n var textToInsert, inserted, selectedSplit, startChar, removedLastNewLine, removedFirstNewLine, currentLineEmpty, lastNewLine;\n removedLastNewLine = false;\n removedFirstNewLine = false;\n currentLineEmpty = false;\n\n // Remove the first newline\n if (selected.indexOf('\\n') === 0) {\n removedFirstNewLine = true;\n selected = selected.replace(/\\n+/, '');\n }\n\n // Remove the last newline\n if (textArea.selectionEnd - textArea.selectionStart > selected.replace(/\\n$/, '').length) {\n removedLastNewLine = true;\n selected = selected.replace(/\\n$/, '');\n }\n\n selectedSplit = selected.split('\\n');\n\n if (!wrap) {\n lastNewLine = textArea.value.substr(0, textArea.selectionStart).lastIndexOf('\\n');\n\n // Check whether the current line is empty or consists only of spaces(=handle as empty)\n if (/^\\s*$/.test(textArea.value.substring(lastNewLine, textArea.selectionStart))) {\n currentLineEmpty = true;\n }\n }\n\n startChar = !wrap && !currentLineEmpty && textArea.selectionStart > 0 ? '\\n' : '';\n\n if (selectedSplit.length > 1 && (!wrap || (blockTag != null && blockTag !== ''))) {\n if (blockTag != null && blockTag !== '') {\n textToInsert = blockTagText(text, textArea, blockTag, selected);\n } else {\n textToInsert = selectedSplit.map(function(val) {\n if (val.indexOf(tag) === 0) {\n return \"\" + (val.replace(tag, ''));\n } else {\n return \"\" + tag + val;\n }\n }).join('\\n');\n }\n } else {\n textToInsert = \"\" + startChar + tag + selected + (wrap ? tag : ' ');\n }\n\n if (removedFirstNewLine) {\n textToInsert = '\\n' + textToInsert;\n }\n\n if (removedLastNewLine) {\n textToInsert += '\\n';\n }\n\n insertText(textArea, textToInsert);\n return moveCursor(textArea, tag, wrap, removedLastNewLine);\n}\n\nfunction updateText(textArea, tag, blockTag, wrap) {\n var $textArea, selected, text;\n $textArea = $(textArea);\n textArea = $textArea.get(0);\n text = $textArea.val();\n selected = selectedText(text, textArea);\n $textArea.focus();\n return insertMarkdownText(textArea, text, tag, blockTag, selected, wrap);\n}\n\nfunction replaceRange(s, start, end, substitute) {\n return s.substring(0, start) + substitute + s.substring(end);\n}\n\nexport function addMarkdownListeners(form) {\n return $('.js-md', form).off('click').on('click', function() {\n const $this = $(this);\n return updateText($this.closest('.md-area').find('textarea'), $this.data('mdTag'), $this.data('mdBlock'), !$this.data('mdPrepend'));\n });\n}\n\nexport function removeMarkdownListeners(form) {\n return $('.js-md', form).off('click');\n}\n","import $ from 'jquery';\nimport autosize from 'autosize';\nimport GfmAutoComplete from './gfm_auto_complete';\nimport dropzoneInput from './dropzone_input';\nimport { addMarkdownListeners, removeMarkdownListeners } from './lib/utils/text_markdown';\n\nexport default class GLForm {\n constructor(form, enableGFM = false) {\n this.form = form;\n this.textarea = this.form.find('textarea.js-gfm-input');\n this.enableGFM = enableGFM;\n // Before we start, we should clean up any previous data for this form\n this.destroy();\n // Setup the form\n this.setupForm();\n this.form.data('glForm', this);\n }\n\n destroy() {\n // Clean form listeners\n this.clearEventListeners();\n if (this.autoComplete) {\n this.autoComplete.destroy();\n }\n this.form.data('glForm', null);\n }\n\n setupForm() {\n const isNewForm = this.form.is(':not(.gfm-form)');\n this.form.removeClass('js-new-note-form');\n if (isNewForm) {\n this.form.find('.div-dropzone').remove();\n this.form.addClass('gfm-form');\n // remove notify commit author checkbox for non-commit notes\n gl.utils.disableButtonIfEmptyField(this.form.find('.js-note-text'), this.form.find('.js-comment-button, .js-note-new-discussion'));\n this.autoComplete = new GfmAutoComplete(gl.GfmAutoComplete && gl.GfmAutoComplete.dataSources);\n this.autoComplete.setup(this.form.find('.js-gfm-input'), {\n emojis: true,\n members: this.enableGFM,\n issues: this.enableGFM,\n milestones: this.enableGFM,\n mergeRequests: this.enableGFM,\n labels: this.enableGFM,\n });\n dropzoneInput(this.form);\n autosize(this.textarea);\n }\n // form and textarea event listeners\n this.addEventListeners();\n addMarkdownListeners(this.form);\n // hide discard button\n this.form.find('.js-note-discard').hide();\n this.form.show();\n if (this.isAutosizeable) this.setupAutosize();\n }\n\n setupAutosize() {\n this.textarea.off('autosize:resized')\n .on('autosize:resized', this.setHeightData.bind(this));\n\n this.textarea.off('mouseup.autosize')\n .on('mouseup.autosize', this.destroyAutosize.bind(this));\n\n setTimeout(() => {\n autosize(this.textarea);\n this.textarea.css('resize', 'vertical');\n }, 0);\n }\n\n setHeightData() {\n this.textarea.data('height', this.textarea.outerHeight());\n }\n\n destroyAutosize() {\n const outerHeight = this.textarea.outerHeight();\n\n if (this.textarea.data('height') === outerHeight) return;\n\n autosize.destroy(this.textarea);\n\n this.textarea.data('height', outerHeight);\n this.textarea.outerHeight(outerHeight);\n this.textarea.css('max-height', window.outerHeight);\n }\n\n clearEventListeners() {\n this.textarea.off('focus');\n this.textarea.off('blur');\n removeMarkdownListeners(this.form);\n }\n\n addEventListeners() {\n this.textarea.on('focus', function focusTextArea() {\n $(this).closest('.md-area').addClass('is-focused');\n });\n this.textarea.on('blur', function blurTextArea() {\n $(this).closest('.md-area').removeClass('is-focused');\n });\n }\n}\n","import bp from '../../../breakpoints';\nimport { slugify } from '../../../lib/utils/text_utility';\nimport { parseQueryStringIntoObject } from '../../../lib/utils/common_utils';\nimport { mergeUrlParams, redirectTo } from '../../../lib/utils/url_utility';\n\nexport default class Wikis {\n constructor() {\n this.sidebarEl = document.querySelector('.js-wiki-sidebar');\n this.sidebarExpanded = false;\n\n const sidebarToggles = document.querySelectorAll('.js-sidebar-wiki-toggle');\n for (let i = 0; i < sidebarToggles.length; i += 1) {\n sidebarToggles[i].addEventListener('click', e => this.handleToggleSidebar(e));\n }\n\n this.newWikiForm = document.querySelector('form.new-wiki-page');\n if (this.newWikiForm) {\n this.newWikiForm.addEventListener('submit', e => this.handleNewWikiSubmit(e));\n }\n\n window.addEventListener('resize', () => this.renderSidebar());\n this.renderSidebar();\n }\n\n handleNewWikiSubmit(e) {\n if (!this.newWikiForm) return;\n\n const slugInput = this.newWikiForm.querySelector('#new_wiki_path');\n const slug = slugify(slugInput.value);\n\n if (slug.length > 0) {\n const wikisPath = slugInput.getAttribute('data-wikis-path');\n\n // If the wiki is empty, we need to merge the current URL params to keep the \"create\" view.\n const params = parseQueryStringIntoObject(window.location.search.substr(1));\n const url = mergeUrlParams(params, `${wikisPath}/${slug}`);\n redirectTo(url);\n\n e.preventDefault();\n }\n }\n\n handleToggleSidebar(e) {\n e.preventDefault();\n this.sidebarExpanded = !this.sidebarExpanded;\n this.renderSidebar();\n }\n\n static sidebarCanCollapse() {\n const bootstrapBreakpoint = bp.getBreakpointSize();\n return bootstrapBreakpoint === 'xs' || bootstrapBreakpoint === 'sm';\n }\n\n renderSidebar() {\n if (!this.sidebarEl) return;\n const { classList } = this.sidebarEl;\n if (this.sidebarExpanded || !Wikis.sidebarCanCollapse()) {\n if (!classList.contains('right-sidebar-expanded')) {\n classList.remove('right-sidebar-collapsed');\n classList.add('right-sidebar-expanded');\n }\n } else if (classList.contains('right-sidebar-expanded')) {\n classList.add('right-sidebar-collapsed');\n classList.remove('right-sidebar-expanded');\n }\n }\n}\n","import Mousetrap from 'mousetrap';\nimport ShortcutsNavigation from './shortcuts_navigation';\nimport findAndFollowLink from './shortcuts_dashboard_navigation';\n\nexport default class ShortcutsWiki extends ShortcutsNavigation {\n constructor() {\n super();\n Mousetrap.bind('e', ShortcutsWiki.editWiki);\n }\n\n static editWiki() {\n findAndFollowLink('.js-wiki-edit');\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!./delete_wiki_modal.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!./delete_wiki_modal.vue?vue&type=script&lang=js\"","\n\n\n","import { render, staticRenderFns } from \"./delete_wiki_modal.vue?vue&type=template&id=ab7e821c\"\nimport script from \"./delete_wiki_modal.vue?vue&type=script&lang=js\"\nexport * from \"./delete_wiki_modal.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('gl-modal',{attrs:{\"id\":\"delete-wiki-modal\",\"header-title-text\":_vm.title,\"footer-primary-button-variant\":\"danger\",\"footer-primary-button-text\":_vm.s__('WikiPageConfirmDelete|Delete page')},on:{\"submit\":_vm.onSubmit}},[_vm._v(\"\\n \"+_vm._s(_vm.message)+\"\\n \"),_c('form',{ref:\"form\",staticClass:\"js-requires-input\",attrs:{\"action\":_vm.deleteWikiUrl,\"method\":\"post\"}},[_c('input',{ref:\"method\",attrs:{\"type\":\"hidden\",\"name\":\"_method\",\"value\":\"delete\"}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"authenticity_token\"},domProps:{\"value\":_vm.csrfToken}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import $ from 'jquery';\nimport Vue from 'vue';\nimport Translate from '~/vue_shared/translate';\nimport csrf from '~/lib/utils/csrf';\nimport Wikis from './wikis';\nimport ShortcutsWiki from '../../../shortcuts_wiki';\nimport ZenMode from '../../../zen_mode';\nimport GLForm from '../../../gl_form';\nimport deleteWikiModal from './components/delete_wiki_modal.vue';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n new Wikis(); // eslint-disable-line no-new\n new ShortcutsWiki(); // eslint-disable-line no-new\n new ZenMode(); // eslint-disable-line no-new\n new GLForm($('.wiki-form'), true); // eslint-disable-line no-new\n\n const deleteWikiButton = document.getElementById('delete-wiki-button');\n\n if (deleteWikiButton) {\n Vue.use(Translate);\n\n const { deleteWikiUrl, pageTitle } = deleteWikiButton.dataset;\n const deleteWikiModalEl = document.getElementById('delete-wiki-modal');\n const deleteModal = new Vue({ // eslint-disable-line\n el: deleteWikiModalEl,\n data: {\n deleteWikiUrl: '',\n },\n render(createElement) {\n return createElement(deleteWikiModal, {\n props: {\n pageTitle,\n deleteWikiUrl,\n csrfToken: csrf.token,\n },\n });\n },\n });\n }\n});\n","/* eslint-disable func-names, space-before-function-paren, wrap-iife, prefer-arrow-callback, no-unused-vars, consistent-return, camelcase, comma-dangle, max-len, class-methods-use-this */\n\n// Zen Mode (full screen) textarea\n//\n/*= provides zen_mode:enter */\n/*= provides zen_mode:leave */\n\nimport $ from 'jquery';\nimport 'vendor/jquery.scrollTo';\nimport Dropzone from 'dropzone';\nimport Mousetrap from 'mousetrap';\nimport 'mousetrap/plugins/pause/mousetrap-pause';\n\nDropzone.autoDiscover = false;\n\n//\n// ### Events\n//\n// `zen_mode:enter`\n//\n// Fired when the \"Edit in fullscreen\" link is clicked.\n//\n// **Synchronicity** Sync\n// **Bubbles** Yes\n// **Cancelable** No\n// **Target** a.js-zen-enter\n//\n// `zen_mode:leave`\n//\n// Fired when the \"Leave Fullscreen\" link is clicked.\n//\n// **Synchronicity** Sync\n// **Bubbles** Yes\n// **Cancelable** No\n// **Target** a.js-zen-leave\n//\n\nexport default class ZenMode {\n constructor() {\n this.active_backdrop = null;\n this.active_textarea = null;\n $(document).on('click', '.js-zen-enter', function(e) {\n e.preventDefault();\n return $(e.currentTarget).trigger('zen_mode:enter');\n });\n $(document).on('click', '.js-zen-leave', function(e) {\n e.preventDefault();\n return $(e.currentTarget).trigger('zen_mode:leave');\n });\n $(document).on('zen_mode:enter', (function(_this) {\n return function(e) {\n return _this.enter($(e.target).closest('.md-area').find('.zen-backdrop'));\n };\n })(this));\n $(document).on('zen_mode:leave', (function(_this) {\n return function(e) {\n return _this.exit();\n };\n })(this));\n $(document).on('keydown', function(e) {\n // Esc\n if (e.keyCode === 27) {\n e.preventDefault();\n return $(document).trigger('zen_mode:leave');\n }\n });\n }\n\n enter(backdrop) {\n Mousetrap.pause();\n this.active_backdrop = $(backdrop);\n this.active_backdrop.addClass('fullscreen');\n this.active_textarea = this.active_backdrop.find('textarea');\n // Prevent a user-resized textarea from persisting to fullscreen\n this.active_textarea.removeAttr('style');\n this.active_textarea.focus();\n }\n\n exit() {\n if (this.active_textarea) {\n Mousetrap.unpause();\n this.active_textarea.closest('.zen-backdrop').removeClass('fullscreen');\n this.scrollTo(this.active_textarea);\n this.active_textarea = null;\n this.active_backdrop = null;\n\n const $dropzone = $('.div-dropzone');\n if ($dropzone && !$dropzone.hasClass('js-invalid-dropzone')) {\n Dropzone.forElement('.div-dropzone').enable();\n }\n }\n }\n\n scrollTo(zen_area) {\n return $.scrollTo(zen_area, 0, {\n offset: -150\n });\n }\n}\n"],"sourceRoot":""}