{"version":3,"sources":["webpack:////opt/gitlab/embedded/service/gitlab-rails/node_modules/mousetrap/plugins/pause/mousetrap-pause.js","webpack:///./dropzone_input.js","webpack:///./lib/utils/text_markdown.js","webpack:///./gl_form.js","webpack:///./zen_mode.js","webpack:///./vue_shared/components/gl_modal.vue?513d","webpack:///vue_shared/components/gl_modal.vue","webpack:///./vue_shared/components/gl_modal.vue?b1d8","webpack:///./vue_shared/components/gl_modal.vue","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?e512","webpack:///./pages/projects/wikis/index.js"],"names":["Mousetrap","self","_originalStopCallback","stopCallback","enabled","e","element","combo","pause","unpause","dropzoneInput","form","$attachButton","find","$attachingFileMessage","$cancelButton","$retryLink","$uploadProgress","$uploadingErrorContainer","$uploadingErrorMessage","$uploadingProgressContainer","uploadsPath","data","window","uploads_path","maxFileSize","gon","max_file_size","formTextarea","handlePaste","pasteText","addFileToForm","updateAttachingMessage","isImage","getFilename","uploadFile","wrap","on","event","$mdArea","closest","setupMarkdownPreview","$formDropzone","parent","addClass","append","dropzone","url","dictDefaultMessage","clickable","paramName","maxFilesize","uploadMultiple","headers","csrf","previewContainer","processing","jquery_default","alert","dragover","css","dragleave","removeClass","drop","focus","success","header","response","processingFileCount","this","getQueuedFiles","length","getUploadingFiles","shouldPad","link","markdown","error","file","res","errorMessage","arguments","undefined","xhr","message","responseText","underscore_default","a","isString","html","totaluploadprogress","totalUploadProgress","files","text","Math","round","sending","removedfile","queuecomplete","remove","trigger","child","children","preventDefault","stopPropagation","dropzone_default","forElement","get","removeAllFiles","dropzoneInstance","target","querySelector","failedFiles","map","failedFile","status","ERROR","accepted","addFile","pasteEvent","originalEvent","clipboardData","items","image","filename","getAsFile","i","item","type","indexOf","formattedText","textarea","caretStart","selectionStart","caretEnd","selectionEnd","textEnd","val","beforeSelection","substring","afterSelection","setSelectionRange","style","height","scrollHeight","dispatchEvent","Event","path","escape","value","getData","split","closeSpinner","formData","FormData","axios_utils","post","then","_ref","md","$child","index","replace","insertToTextArea","catch","messageContainer","attachingMessage","filesCount","filter","click","autoDiscover","updateText","textArea","tag","blockTag","$textArea","selected","selectedText","textToInsert","selectedSplit","startChar","removedLastNewLine","removedFirstNewLine","currentLineEmpty","lastNewLine","substr","lastIndexOf","test","before","trim","lineBefore","after","lineAfter","blockTagText","join","Object","common_utils","wrapped","pos","moveCursor","insertMarkdownText","gl_form_GLForm","GLForm","_this","enableGFM","_classCallCheck","assign","gfm_auto_complete","dataSources","gl","GfmAutoComplete","keys","forEach","destroy","setupForm","clearEventListeners","autoComplete","isNewForm","is","utils","disableButtonIfEmptyField","setup","autosize_default","addEventListeners","off","$this","hide","show","isAutosizeable","setupAutosize","_this2","setHeightData","bind","destroyAutosize","setTimeout","outerHeight","dropzone__WEBPACK_IMPORTED_MODULE_2___default","ZenMode","active_backdrop","active_textarea","jquery__WEBPACK_IMPORTED_MODULE_0___default","document","currentTarget","enter","exit","keyCode","backdrop","mousetrap__WEBPACK_IMPORTED_MODULE_3___default","removeAttr","scrollTo","$dropzone","hasClass","enable","zen_area","offset","buttonVariants","sizeVariants","components_gl_modalvue_type_script_lang_js","name","props","id","String","required","default","modalSize","validator","includes","headerTitleText","footerPrimaryButtonVariant","footerPrimaryButtonText","computed","modalSizeClass","mounted","$el","opened","closed","beforeDestroy","methods","emitCancel","$emit","emitSubmit","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","tabindex","role","class","_t","_v","_s","aria-label","s__","data-dismiss","$event","aria-hidden","__webpack_exports__","Wikis","sidebarEl","sidebarExpanded","sidebarToggles","querySelectorAll","addEventListener","handleToggleSidebar","newWikiForm","handleNewWikiSubmit","renderSidebar","slugInput","slug","text_utility","wikisPath","getAttribute","params","location","search","url_utility","classList","sidebarCanCollapse","contains","add","breakpoints","getBreakpointSize","ShortcutsWiki","shortcuts_wiki_classCallCheck","_possibleConstructorReturn","__proto__","getPrototypeOf","call","mousetrap_default","editWiki","shortcuts_navigation","shortcuts_dashboard_navigation","components_delete_wiki_modalvue_type_script_lang_js","components","GlModal","gl_modal","deleteWikiUrl","pageTitle","csrfToken","modalId","locale","title","onSubmit","$refs","submit","delete_wiki_modal","directives","rawName","expression","__","ok-title","modal-id","title-tag","ok-variant","ok","ref","action","method","domProps","wikis","shortcuts_wiki","zen_mode","gl_form","deleteWikiModalWrapperEl","getElementById","vue_esm","use","translate","_deleteWikiModalWrapp","dataset","el","render","createElement","token"],"mappings":"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","file":"pages.projects.wikis.fcfabf51.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","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\n/**\n * Return the error message string from the given response.\n *\n * @param {String|Object} res\n */\nfunction getErrorMessage(res) {\n if (!res || _.isString(res)) {\n return res;\n }\n\n return res.message;\n}\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 = form.data('uploads-path') || 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 null;\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 const message = getErrorMessage(errorMessage || xhr.responseText);\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 return Dropzone.forElement($formDropzone.get(0));\n}\n","/* eslint-disable func-names, no-var, no-param-reassign, quotes, one-var, one-var-declaration-per-line, operator-assignment, no-else-return, prefer-template, prefer-arrow-callback, max-len, consistent-return, no-unused-vars, max-len */\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, * as GFMConfig 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 = {}) {\n this.form = form;\n this.textarea = this.form.find('textarea.js-gfm-input');\n this.enableGFM = Object.assign({}, GFMConfig.defaultAutocompleteConfig, enableGFM);\n // Disable autocomplete for keywords which do not have dataSources available\n const dataSources = (gl.GfmAutoComplete && gl.GfmAutoComplete.dataSources) || {};\n Object.keys(this.enableGFM).forEach(item => {\n if (item !== 'emojis') {\n this.enableGFM[item] = !!dataSources[item];\n }\n });\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'), this.enableGFM);\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","/* eslint-disable func-names, 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","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:{\"aria-label\":_vm.s__('Modal|Close'),\"type\":\"button\",\"data-dismiss\":\"modal\"},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