summaryrefslogtreecommitdiff
path: root/priv/static/packs/flavours/glitch/async/compose.js.map
blob: 5770307aa667aa2776651f99d87e3fb2f3231770 (plain)
1
{"version":3,"sources":["webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/containers/compose_form_container.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/containers/navigation_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/header.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/containers/header_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/util/log_out.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/index.js"],"names":["messages","defineMessages","missingDescriptionMessage","missingDescriptionConfirm","missingDescriptionEdit","injectIntl","connect","state","spoilersAlwaysOn","getIn","inReplyTo","replyPrivacy","sideArmBasePrivacy","sideArmRestrictedPrivacy","privacyPreference","sideArmPrivacy","advancedOptions","focusDate","caretPosition","isSubmitting","isChangingUpload","isUploading","layout","media","preselectDate","privacy","sideArm","sensitive","showSearch","spoiler","spoilerText","suggestions","text","anyMedia","size","mediaDescriptionConfirmation","preselectOnReply","dispatch","intl","onChange","changeCompose","onSubmit","routerHistory","submitCompose","onClearSuggestions","clearComposeSuggestions","onFetchSuggestions","token","fetchComposeSuggestions","onSuggestionSelected","position","suggestion","path","selectComposeSuggestion","onChangeSpoilerText","changeComposeSpoilerText","onPaste","files","uploadCompose","onPickEmoji","emoji","insertEmojiCompose","onChangeSpoilerness","changeComposeSpoilerness","onChangeVisibility","value","changeComposeVisibility","onMediaDescriptionConfirm","mediaId","overriddenVisibility","openModal","message","formatMessage","confirm","onConfirm","secondary","onSecondary","id","onDoNotAsk","changeLocalSetting","ComposeForm","this","Rails","linkClickSelector","buttonClickSelector","selector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","call","nonce","loadCSPNonce","ref","document","querySelector","content","cspNonce","m","Element","prototype","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","element","getData","key","setData","$","Array","slice","querySelectorAll","csrfParam","csrfToken","meta","CSRFProtection","xhr","setRequestHeader","refreshCSRFTokens","param","forEach","input","CustomEvent","fire","preventDefault","window","event","params","evt","createEvent","initCustomEvent","bubbles","cancelable","detail","Event","result","defaultPrevented","Object","defineProperty","get","obj","name","data","dispatchEvent","stopEverything","e","target","stopPropagation","stopImmediatePropagation","delegate","eventType","handler","addEventListener","parentNode","AcceptHeaders","createXHR","prepareOptions","processResponse","html","xml","json","script","ajax","options","response","responseText","getResponseHeader","Math","floor","status","success","statusText","error","complete","beforeSend","readyState","XMLHttpRequest","OPENED","send","url","location","href","type","toUpperCase","indexOf","dataType","accept","done","open","crossDomain","withCredentials","onreadystatechange","DONE","parser","match","JSON","parse","createElement","setAttribute","head","appendChild","removeChild","DOMParser","replace","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","host","toArray","serializeElement","additionalParam","inputs","elements","disabled","option","selected","push","checked","map","encodeURIComponent","join","formElements","form","filter","el","allowAction","handleConfirm","answer","callback","getAttribute","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","innerHTML","originalText","removeEventListener","handleMethod","formContent","method","action","style","display","body","click","isRemote","handleRemote","button","enctype","FormData","append","args","arguments","length","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","ctrlKey","jQuery","rails","Error","ajaxPrefilter","originalOptions","start","_rails_loaded","setTimeout","module","exports","account","me","NavigationBar","community","home_timeline","logout","notifications","public","settings","Header","props","onLogout","render","columns","unreadNotifications","showNotificationsBadge","onSettingsClick","renderForColumn","conditionalRender","bind","columnId","some","column","className","Link","aria-label","title","to","onClick","handleLogoutClick","signOutLink","ImmutablePureComponent","ImmutablePropTypes","list","PropTypes","number","bool","object","func","isRequired","logoutMessage","logoutConfirm","methodInput","csrfInput","submitButton","logOut","compose","Compose","ownProps","multiColumn","isSearchPage","onMount","mountCompose","onUnmount","unmountCompose","componentDidMount","componentWillUnmount","computedClass","classNames","role","mascot","alt","draggable","src","defaultStyle","x","spring","stiffness","damping","transform","visibility","React","PureComponent"],"mappings":"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","file":"flavours/glitch/async/compose.js","sourcesContent":["import { connect } from 'react-redux';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport ComposeForm from '../components/compose_form';\nimport {\n  changeCompose,\n  changeComposeSpoilerText,\n  changeComposeSpoilerness,\n  changeComposeVisibility,\n  clearComposeSuggestions,\n  fetchComposeSuggestions,\n  insertEmojiCompose,\n  selectComposeSuggestion,\n  submitCompose,\n  uploadCompose,\n} from 'flavours/glitch/actions/compose';\nimport {\n  openModal,\n} from 'flavours/glitch/actions/modal';\nimport { changeLocalSetting } from 'flavours/glitch/actions/local_settings';\n\nimport { privacyPreference } from 'flavours/glitch/util/privacy_preference';\n\nconst messages = defineMessages({\n  missingDescriptionMessage: {  id: 'confirmations.missing_media_description.message',\n                                defaultMessage: 'At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.' },\n  missingDescriptionConfirm: {  id: 'confirmations.missing_media_description.confirm',\n                                defaultMessage: 'Send anyway' },\n  missingDescriptionEdit:    {  id: 'confirmations.missing_media_description.edit',\n                                defaultMessage: 'Edit media' },\n});\n\n//  State mapping.\nfunction mapStateToProps (state) {\n  const spoilersAlwaysOn = state.getIn(['local_settings', 'always_show_spoilers_field']);\n  const inReplyTo = state.getIn(['compose', 'in_reply_to']);\n  const replyPrivacy = inReplyTo ? state.getIn(['statuses', inReplyTo, 'visibility']) : null;\n  const sideArmBasePrivacy = state.getIn(['local_settings', 'side_arm']);\n  const sideArmRestrictedPrivacy = replyPrivacy ? privacyPreference(replyPrivacy, sideArmBasePrivacy) : null;\n  let sideArmPrivacy = null;\n  switch (state.getIn(['local_settings', 'side_arm_reply_mode'])) {\n    case 'copy':\n      sideArmPrivacy = replyPrivacy;\n      break;\n    case 'restrict':\n      sideArmPrivacy = sideArmRestrictedPrivacy;\n      break;\n  }\n  sideArmPrivacy = sideArmPrivacy || sideArmBasePrivacy;\n  return {\n    advancedOptions: state.getIn(['compose', 'advanced_options']),\n    focusDate: state.getIn(['compose', 'focusDate']),\n    caretPosition: state.getIn(['compose', 'caretPosition']),\n    isSubmitting: state.getIn(['compose', 'is_submitting']),\n    isChangingUpload: state.getIn(['compose', 'is_changing_upload']),\n    isUploading: state.getIn(['compose', 'is_uploading']),\n    layout: state.getIn(['local_settings', 'layout']),\n    media: state.getIn(['compose', 'media_attachments']),\n    preselectDate: state.getIn(['compose', 'preselectDate']),\n    privacy: state.getIn(['compose', 'privacy']),\n    sideArm: sideArmPrivacy,\n    sensitive: state.getIn(['compose', 'sensitive']),\n    showSearch: state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']),\n    spoiler: spoilersAlwaysOn || state.getIn(['compose', 'spoiler']),\n    spoilerText: state.getIn(['compose', 'spoiler_text']),\n    suggestions: state.getIn(['compose', 'suggestions']),\n    text: state.getIn(['compose', 'text']),\n    anyMedia: state.getIn(['compose', 'media_attachments']).size > 0,\n    spoilersAlwaysOn: spoilersAlwaysOn,\n    mediaDescriptionConfirmation: state.getIn(['local_settings', 'confirm_missing_media_description']),\n    preselectOnReply: state.getIn(['local_settings', 'preselect_on_reply']),\n  };\n};\n\n//  Dispatch mapping.\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n\n  onChange(text) {\n    dispatch(changeCompose(text));\n  },\n\n  onSubmit(routerHistory) {\n    dispatch(submitCompose(routerHistory));\n  },\n\n  onClearSuggestions() {\n    dispatch(clearComposeSuggestions());\n  },\n\n  onFetchSuggestions(token) {\n    dispatch(fetchComposeSuggestions(token));\n  },\n\n  onSuggestionSelected(position, token, suggestion, path) {\n    dispatch(selectComposeSuggestion(position, token, suggestion, path));\n  },\n\n  onChangeSpoilerText(text) {\n    dispatch(changeComposeSpoilerText(text));\n  },\n\n  onPaste(files) {\n    dispatch(uploadCompose(files));\n  },\n\n  onPickEmoji(position, emoji) {\n    dispatch(insertEmojiCompose(position, emoji));\n  },\n\n  onChangeSpoilerness() {\n    dispatch(changeComposeSpoilerness());\n  },\n\n  onChangeVisibility(value) {\n    dispatch(changeComposeVisibility(value));\n  },\n\n  onMediaDescriptionConfirm(routerHistory, mediaId, overriddenVisibility = null) {\n    dispatch(openModal('CONFIRM', {\n      message: intl.formatMessage(messages.missingDescriptionMessage),\n      confirm: intl.formatMessage(messages.missingDescriptionConfirm),\n      onConfirm: () => {\n        if (overriddenVisibility) {\n          dispatch(changeComposeVisibility(overriddenVisibility));\n        };\n        dispatch(submitCompose(routerHistory));\n      },\n      secondary: intl.formatMessage(messages.missingDescriptionEdit),\n      onSecondary: () => dispatch(openModal('FOCAL_POINT', { id: mediaId })),\n      onDoNotAsk: () => dispatch(changeLocalSetting(['confirm_missing_media_description'], false)),\n    }));\n  },\n\n});\n\nexport default injectIntl(connect(mapStateToProps, mapDispatchToProps)(ComposeForm));\n","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/master/actionview/app/assets/javascripts\nReleased under the MIT license\n */\n;\n(function () {\n  var context = this;\n  (function () {\n    (function () {\n      this.Rails = {\n        linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n        buttonClickSelector: {\n          selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n          exclude: 'form button'\n        },\n        inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n        formSubmitSelector: 'form',\n        formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n        formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n        formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n        fileInputSelector: 'input[name][type=file]:not([disabled])',\n        linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n        buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n      };\n    }).call(this);\n  }).call(context);\n  var Rails = context.Rails;\n  (function () {\n    (function () {\n      var nonce;\n      nonce = null;\n\n      Rails.loadCSPNonce = function () {\n        var ref;\n        return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n      };\n\n      Rails.cspNonce = function () {\n        return nonce != null ? nonce : Rails.loadCSPNonce();\n      };\n    }).call(this);\n    (function () {\n      var expando, m;\n      m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n      Rails.matches = function (element, selector) {\n        if (selector.exclude != null) {\n          return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n        } else {\n          return m.call(element, selector);\n        }\n      };\n\n      expando = '_ujsData';\n\n      Rails.getData = function (element, key) {\n        var ref;\n        return (ref = element[expando]) != null ? ref[key] : void 0;\n      };\n\n      Rails.setData = function (element, key, value) {\n        if (element[expando] == null) {\n          element[expando] = {};\n        }\n\n        return element[expando][key] = value;\n      };\n\n      Rails.$ = function (selector) {\n        return Array.prototype.slice.call(document.querySelectorAll(selector));\n      };\n    }).call(this);\n    (function () {\n      var $, csrfParam, csrfToken;\n      $ = Rails.$;\n\n      csrfToken = Rails.csrfToken = function () {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-token]');\n        return meta && meta.content;\n      };\n\n      csrfParam = Rails.csrfParam = function () {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-param]');\n        return meta && meta.content;\n      };\n\n      Rails.CSRFProtection = function (xhr) {\n        var token;\n        token = csrfToken();\n\n        if (token != null) {\n          return xhr.setRequestHeader('X-CSRF-Token', token);\n        }\n      };\n\n      Rails.refreshCSRFTokens = function () {\n        var param, token;\n        token = csrfToken();\n        param = csrfParam();\n\n        if (token != null && param != null) {\n          return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n            return input.value = token;\n          });\n        }\n      };\n    }).call(this);\n    (function () {\n      var CustomEvent, fire, matches, preventDefault;\n      matches = Rails.matches;\n      CustomEvent = window.CustomEvent;\n\n      if (typeof CustomEvent !== 'function') {\n        CustomEvent = function CustomEvent(event, params) {\n          var evt;\n          evt = document.createEvent('CustomEvent');\n          evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n          return evt;\n        };\n\n        CustomEvent.prototype = window.Event.prototype;\n        preventDefault = CustomEvent.prototype.preventDefault;\n\n        CustomEvent.prototype.preventDefault = function () {\n          var result;\n          result = preventDefault.call(this);\n\n          if (this.cancelable && !this.defaultPrevented) {\n            Object.defineProperty(this, 'defaultPrevented', {\n              get: function get() {\n                return true;\n              }\n            });\n          }\n\n          return result;\n        };\n      }\n\n      fire = Rails.fire = function (obj, name, data) {\n        var event;\n        event = new CustomEvent(name, {\n          bubbles: true,\n          cancelable: true,\n          detail: data\n        });\n        obj.dispatchEvent(event);\n        return !event.defaultPrevented;\n      };\n\n      Rails.stopEverything = function (e) {\n        fire(e.target, 'ujs:everythingStopped');\n        e.preventDefault();\n        e.stopPropagation();\n        return e.stopImmediatePropagation();\n      };\n\n      Rails.delegate = function (element, selector, eventType, handler) {\n        return element.addEventListener(eventType, function (e) {\n          var target;\n          target = e.target;\n\n          while (!(!(target instanceof Element) || matches(target, selector))) {\n            target = target.parentNode;\n          }\n\n          if (target instanceof Element && handler.call(target, e) === false) {\n            e.preventDefault();\n            return e.stopPropagation();\n          }\n        });\n      };\n    }).call(this);\n    (function () {\n      var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n      cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n      AcceptHeaders = {\n        '*': '*/*',\n        text: 'text/plain',\n        html: 'text/html',\n        xml: 'application/xml, text/xml',\n        json: 'application/json, text/javascript',\n        script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n      };\n\n      Rails.ajax = function (options) {\n        var xhr;\n        options = prepareOptions(options);\n        xhr = createXHR(options, function () {\n          var ref, response;\n          response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n\n          if (Math.floor(xhr.status / 100) === 2) {\n            if (typeof options.success === \"function\") {\n              options.success(response, xhr.statusText, xhr);\n            }\n          } else {\n            if (typeof options.error === \"function\") {\n              options.error(response, xhr.statusText, xhr);\n            }\n          }\n\n          return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n        });\n\n        if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n          return false;\n        }\n\n        if (xhr.readyState === XMLHttpRequest.OPENED) {\n          return xhr.send(options.data);\n        }\n      };\n\n      prepareOptions = function prepareOptions(options) {\n        options.url = options.url || location.href;\n        options.type = options.type.toUpperCase();\n\n        if (options.type === 'GET' && options.data) {\n          if (options.url.indexOf('?') < 0) {\n            options.url += '?' + options.data;\n          } else {\n            options.url += '&' + options.data;\n          }\n        }\n\n        if (AcceptHeaders[options.dataType] == null) {\n          options.dataType = '*';\n        }\n\n        options.accept = AcceptHeaders[options.dataType];\n\n        if (options.dataType !== '*') {\n          options.accept += ', */*; q=0.01';\n        }\n\n        return options;\n      };\n\n      createXHR = function createXHR(options, done) {\n        var xhr;\n        xhr = new XMLHttpRequest();\n        xhr.open(options.type, options.url, true);\n        xhr.setRequestHeader('Accept', options.accept);\n\n        if (typeof options.data === 'string') {\n          xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n        }\n\n        if (!options.crossDomain) {\n          xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n        }\n\n        CSRFProtection(xhr);\n        xhr.withCredentials = !!options.withCredentials;\n\n        xhr.onreadystatechange = function () {\n          if (xhr.readyState === XMLHttpRequest.DONE) {\n            return done(xhr);\n          }\n        };\n\n        return xhr;\n      };\n\n      processResponse = function processResponse(response, type) {\n        var parser, script;\n\n        if (typeof response === 'string' && typeof type === 'string') {\n          if (type.match(/\\bjson\\b/)) {\n            try {\n              response = JSON.parse(response);\n            } catch (error) {}\n          } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n            script = document.createElement('script');\n            script.setAttribute('nonce', cspNonce());\n            script.text = response;\n            document.head.appendChild(script).parentNode.removeChild(script);\n          } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n            parser = new DOMParser();\n            type = type.replace(/;.+/, '');\n\n            try {\n              response = parser.parseFromString(response, type);\n            } catch (error) {}\n          }\n        }\n\n        return response;\n      };\n\n      Rails.href = function (element) {\n        return element.href;\n      };\n\n      Rails.isCrossDomain = function (url) {\n        var e, originAnchor, urlAnchor;\n        originAnchor = document.createElement('a');\n        originAnchor.href = location.href;\n        urlAnchor = document.createElement('a');\n\n        try {\n          urlAnchor.href = url;\n          return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n        } catch (error) {\n          e = error;\n          return true;\n        }\n      };\n    }).call(this);\n    (function () {\n      var matches, toArray;\n      matches = Rails.matches;\n\n      toArray = function toArray(e) {\n        return Array.prototype.slice.call(e);\n      };\n\n      Rails.serializeElement = function (element, additionalParam) {\n        var inputs, params;\n        inputs = [element];\n\n        if (matches(element, 'form')) {\n          inputs = toArray(element.elements);\n        }\n\n        params = [];\n        inputs.forEach(function (input) {\n          if (!input.name || input.disabled) {\n            return;\n          }\n\n          if (matches(input, 'fieldset[disabled] *')) {\n            return;\n          }\n\n          if (matches(input, 'select')) {\n            return toArray(input.options).forEach(function (option) {\n              if (option.selected) {\n                return params.push({\n                  name: input.name,\n                  value: option.value\n                });\n              }\n            });\n          } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n            return params.push({\n              name: input.name,\n              value: input.value\n            });\n          }\n        });\n\n        if (additionalParam) {\n          params.push(additionalParam);\n        }\n\n        return params.map(function (param) {\n          if (param.name != null) {\n            return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n          } else {\n            return param;\n          }\n        }).join('&');\n      };\n\n      Rails.formElements = function (form, selector) {\n        if (matches(form, 'form')) {\n          return toArray(form.elements).filter(function (el) {\n            return matches(el, selector);\n          });\n        } else {\n          return toArray(form.querySelectorAll(selector));\n        }\n      };\n    }).call(this);\n    (function () {\n      var allowAction, fire, stopEverything;\n      fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n      Rails.handleConfirm = function (e) {\n        if (!allowAction(this)) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.confirm = function (message, element) {\n        return confirm(message);\n      };\n\n      allowAction = function allowAction(element) {\n        var answer, callback, message;\n        message = element.getAttribute('data-confirm');\n\n        if (!message) {\n          return true;\n        }\n\n        answer = false;\n\n        if (fire(element, 'confirm')) {\n          try {\n            answer = Rails.confirm(message, element);\n          } catch (error) {}\n\n          callback = fire(element, 'confirm:complete', [answer]);\n        }\n\n        return answer && callback;\n      };\n    }).call(this);\n    (function () {\n      var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n      Rails.handleDisabledElement = function (e) {\n        var element;\n        element = this;\n\n        if (element.disabled) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.enableElement = function (e) {\n        var element;\n\n        if (e instanceof Event) {\n          if (isXhrRedirect(e)) {\n            return;\n          }\n\n          element = e.target;\n        } else {\n          element = e;\n        }\n\n        if (matches(element, Rails.linkDisableSelector)) {\n          return enableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n          return enableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return enableFormElements(element);\n        }\n      };\n\n      Rails.disableElement = function (e) {\n        var element;\n        element = e instanceof Event ? e.target : e;\n\n        if (matches(element, Rails.linkDisableSelector)) {\n          return disableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n          return disableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return disableFormElements(element);\n        }\n      };\n\n      disableLinkElement = function disableLinkElement(element) {\n        var replacement;\n\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n\n        replacement = element.getAttribute('data-disable-with');\n\n        if (replacement != null) {\n          setData(element, 'ujs:enable-with', element.innerHTML);\n          element.innerHTML = replacement;\n        }\n\n        element.addEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableLinkElement = function enableLinkElement(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n\n        if (originalText != null) {\n          element.innerHTML = originalText;\n          setData(element, 'ujs:enable-with', null);\n        }\n\n        element.removeEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      disableFormElements = function disableFormElements(form) {\n        return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n      };\n\n      disableFormElement = function disableFormElement(element) {\n        var replacement;\n\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n\n        replacement = element.getAttribute('data-disable-with');\n\n        if (replacement != null) {\n          if (matches(element, 'button')) {\n            setData(element, 'ujs:enable-with', element.innerHTML);\n            element.innerHTML = replacement;\n          } else {\n            setData(element, 'ujs:enable-with', element.value);\n            element.value = replacement;\n          }\n        }\n\n        element.disabled = true;\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableFormElements = function enableFormElements(form) {\n        return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n      };\n\n      enableFormElement = function enableFormElement(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n\n        if (originalText != null) {\n          if (matches(element, 'button')) {\n            element.innerHTML = originalText;\n          } else {\n            element.value = originalText;\n          }\n\n          setData(element, 'ujs:enable-with', null);\n        }\n\n        element.disabled = false;\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      isXhrRedirect = function isXhrRedirect(event) {\n        var ref, xhr;\n        xhr = (ref = event.detail) != null ? ref[0] : void 0;\n        return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n      };\n    }).call(this);\n    (function () {\n      var stopEverything;\n      stopEverything = Rails.stopEverything;\n\n      Rails.handleMethod = function (e) {\n        var csrfParam, csrfToken, form, formContent, href, link, method;\n        link = this;\n        method = link.getAttribute('data-method');\n\n        if (!method) {\n          return;\n        }\n\n        href = Rails.href(link);\n        csrfToken = Rails.csrfToken();\n        csrfParam = Rails.csrfParam();\n        form = document.createElement('form');\n        formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n\n        if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n          formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n        }\n\n        formContent += '<input type=\"submit\" />';\n        form.method = 'post';\n        form.action = href;\n        form.target = link.target;\n        form.innerHTML = formContent;\n        form.style.display = 'none';\n        document.body.appendChild(form);\n        form.querySelector('[type=\"submit\"]').click();\n        return stopEverything(e);\n      };\n    }).call(this);\n    (function () {\n      var ajax,\n          fire,\n          getData,\n          isCrossDomain,\n          isRemote,\n          matches,\n          serializeElement,\n          setData,\n          stopEverything,\n          slice = [].slice;\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n      isRemote = function isRemote(element) {\n        var value;\n        value = element.getAttribute('data-remote');\n        return value != null && value !== 'false';\n      };\n\n      Rails.handleRemote = function (e) {\n        var button, data, dataType, element, method, url, withCredentials;\n        element = this;\n\n        if (!isRemote(element)) {\n          return true;\n        }\n\n        if (!fire(element, 'ajax:before')) {\n          fire(element, 'ajax:stopped');\n          return false;\n        }\n\n        withCredentials = element.getAttribute('data-with-credentials');\n        dataType = element.getAttribute('data-type') || 'script';\n\n        if (matches(element, Rails.formSubmitSelector)) {\n          button = getData(element, 'ujs:submit-button');\n          method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n          url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n\n          if (method.toUpperCase() === 'GET') {\n            url = url.replace(/\\?.*$/, '');\n          }\n\n          if (element.enctype === 'multipart/form-data') {\n            data = new FormData(element);\n\n            if (button != null) {\n              data.append(button.name, button.value);\n            }\n          } else {\n            data = serializeElement(element, button);\n          }\n\n          setData(element, 'ujs:submit-button', null);\n          setData(element, 'ujs:submit-button-formmethod', null);\n          setData(element, 'ujs:submit-button-formaction', null);\n        } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n          method = element.getAttribute('data-method');\n          url = element.getAttribute('data-url');\n          data = serializeElement(element, element.getAttribute('data-params'));\n        } else {\n          method = element.getAttribute('data-method');\n          url = Rails.href(element);\n          data = element.getAttribute('data-params');\n        }\n\n        ajax({\n          type: method || 'GET',\n          url: url,\n          data: data,\n          dataType: dataType,\n          beforeSend: function beforeSend(xhr, options) {\n            if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n              return fire(element, 'ajax:send', [xhr]);\n            } else {\n              fire(element, 'ajax:stopped');\n              return false;\n            }\n          },\n          success: function success() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:success', args);\n          },\n          error: function error() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:error', args);\n          },\n          complete: function complete() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:complete', args);\n          },\n          crossDomain: isCrossDomain(url),\n          withCredentials: withCredentials != null && withCredentials !== 'false'\n        });\n        return stopEverything(e);\n      };\n\n      Rails.formSubmitButtonClick = function (e) {\n        var button, form;\n        button = this;\n        form = button.form;\n\n        if (!form) {\n          return;\n        }\n\n        if (button.name) {\n          setData(form, 'ujs:submit-button', {\n            name: button.name,\n            value: button.value\n          });\n        }\n\n        setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n        setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n        return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n      };\n\n      Rails.preventInsignificantClick = function (e) {\n        var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n        link = this;\n        method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n        data = link.getAttribute('data-params');\n        metaClick = e.metaKey || e.ctrlKey;\n        insignificantMetaClick = metaClick && method === 'GET' && !data;\n        nonPrimaryMouseClick = e.button != null && e.button !== 0;\n\n        if (nonPrimaryMouseClick || insignificantMetaClick) {\n          return e.stopImmediatePropagation();\n        }\n      };\n    }).call(this);\n    (function () {\n      var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n      fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n      if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n        if (jQuery.rails) {\n          throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n        }\n\n        jQuery.rails = Rails;\n        jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n          if (!options.crossDomain) {\n            return CSRFProtection(xhr);\n          }\n        });\n      }\n\n      Rails.start = function () {\n        if (window._rails_loaded) {\n          throw new Error('rails-ujs has already been loaded!');\n        }\n\n        window.addEventListener('pageshow', function () {\n          $(Rails.formEnableSelector).forEach(function (el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n          return $(Rails.linkDisableSelector).forEach(function (el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n        });\n        delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.linkClickSelector, 'click', disableElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n        delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n        delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n        delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n        delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n        delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n          return setTimeout(function () {\n            return disableElement(e);\n          }, 13);\n        });\n        delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n        delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n        document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n        document.addEventListener('DOMContentLoaded', loadCSPNonce);\n        return window._rails_loaded = true;\n      };\n\n      if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n        Rails.start();\n      }\n    }).call(this);\n  }).call(this);\n\n  if (typeof module === \"object\" && module.exports) {\n    module.exports = Rails;\n  } else if (typeof define === \"function\" && define.amd) {\n    define(Rails);\n  }\n}).call(this);","import { connect }   from 'react-redux';\nimport NavigationBar from '../components/navigation_bar';\nimport { me } from 'flavours/glitch/util/initial_state';\n\nconst mapStateToProps = state => {\n  return {\n    account: state.getIn(['accounts', me]),\n  };\n};\n\nexport default connect(mapStateToProps)(NavigationBar);\n","//  Package imports.\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { injectIntl, defineMessages } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\n//  Components.\nimport Icon from 'flavours/glitch/components/icon';\n\n//  Utils.\nimport { conditionalRender } from 'flavours/glitch/util/react_helpers';\nimport { signOutLink } from 'flavours/glitch/util/backend_links';\n\n//  Messages.\nconst messages = defineMessages({\n  community: {\n    defaultMessage: 'Local timeline',\n    id: 'navigation_bar.community_timeline',\n  },\n  home_timeline: {\n    defaultMessage: 'Home',\n    id: 'tabs_bar.home',\n  },\n  logout: {\n    defaultMessage: 'Logout',\n    id: 'navigation_bar.logout',\n  },\n  notifications: {\n    defaultMessage: 'Notifications',\n    id: 'tabs_bar.notifications',\n  },\n  public: {\n    defaultMessage: 'Federated timeline',\n    id: 'navigation_bar.public_timeline',\n  },\n  settings: {\n    defaultMessage: 'App settings',\n    id: 'navigation_bar.app_settings',\n  },\n  start: {\n    defaultMessage: 'Getting started',\n    id: 'getting_started.heading',\n  },\n});\n\nexport default @injectIntl\nclass Header extends ImmutablePureComponent {\n  static propTypes = {\n    columns: ImmutablePropTypes.list,\n    unreadNotifications: PropTypes.number,\n    showNotificationsBadge: PropTypes.bool,\n    intl: PropTypes.object,\n    onSettingsClick: PropTypes.func,\n    onLogout: PropTypes.func.isRequired,\n  };\n\n  handleLogoutClick = e => {\n    e.preventDefault();\n    e.stopPropagation();\n\n    this.props.onLogout();\n\n    return false;\n  }\n\n  render () {\n    const { intl, columns, unreadNotifications, showNotificationsBadge, onSettingsClick } = this.props;\n\n    //  Only renders the component if the column isn't being shown.\n    const renderForColumn = conditionalRender.bind(null,\n      columnId => !columns || !columns.some(\n        column => column.get('id') === columnId\n      )\n    );\n\n    //  The result.\n    return (\n      <nav className='drawer--header'>\n        <Link\n          aria-label={intl.formatMessage(messages.start)}\n          title={intl.formatMessage(messages.start)}\n          to='/getting-started'\n        ><Icon id='asterisk' /></Link>\n        {renderForColumn('HOME', (\n          <Link\n            aria-label={intl.formatMessage(messages.home_timeline)}\n            title={intl.formatMessage(messages.home_timeline)}\n            to='/timelines/home'\n          ><Icon id='home' /></Link>\n        ))}\n        {renderForColumn('NOTIFICATIONS', (\n          <Link\n            aria-label={intl.formatMessage(messages.notifications)}\n            title={intl.formatMessage(messages.notifications)}\n            to='/notifications'\n          >\n            <span className='icon-badge-wrapper'>\n              <Icon id='bell' />\n              { showNotificationsBadge && unreadNotifications > 0 && <div className='icon-badge' />}\n            </span>\n          </Link>\n        ))}\n        {renderForColumn('COMMUNITY', (\n          <Link\n            aria-label={intl.formatMessage(messages.community)}\n            title={intl.formatMessage(messages.community)}\n            to='/timelines/public/local'\n          ><Icon id='users' /></Link>\n        ))}\n        {renderForColumn('PUBLIC', (\n          <Link\n            aria-label={intl.formatMessage(messages.public)}\n            title={intl.formatMessage(messages.public)}\n            to='/timelines/public'\n          ><Icon id='globe' /></Link>\n        ))}\n        <a\n          aria-label={intl.formatMessage(messages.settings)}\n          onClick={onSettingsClick}\n          href='#'\n          title={intl.formatMessage(messages.settings)}\n        ><Icon id='cogs' /></a>\n        <a\n          aria-label={intl.formatMessage(messages.logout)}\n          onClick={this.handleLogoutClick}\n          href={ signOutLink }\n          title={intl.formatMessage(messages.logout)}\n        ><Icon id='sign-out' /></a>\n      </nav>\n    );\n  };\n}\n","import { openModal } from 'flavours/glitch/actions/modal';\nimport { connect }   from 'react-redux';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport Header from '../components/header';\nimport { logOut } from 'flavours/glitch/util/log_out';\n\nconst messages = defineMessages({\n  logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' },\n  logoutConfirm: { id: 'confirmations.logout.confirm', defaultMessage: 'Log out' },\n});\n\nconst mapStateToProps = state => {\n  return {\n    columns: state.getIn(['settings', 'columns']),\n    unreadNotifications: state.getIn(['notifications', 'unread']),\n    showNotificationsBadge: state.getIn(['local_settings', 'notifications', 'tab_badge']),\n  };\n};\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n  onSettingsClick (e) {\n    e.preventDefault();\n    e.stopPropagation();\n    dispatch(openModal('SETTINGS', {}));\n  },\n  onLogout () {\n    dispatch(openModal('CONFIRM', {\n      message: intl.formatMessage(messages.logoutMessage),\n      confirm: intl.formatMessage(messages.logoutConfirm),\n      onConfirm: () => logOut(),\n    }));\n  },\n});\n\nexport default injectIntl(connect(mapStateToProps, mapDispatchToProps)(Header));\n","import Rails from '@rails/ujs';\nimport { signOutLink } from 'flavours/glitch/util/backend_links';\n\nexport const logOut = () => {\n  const form = document.createElement('form');\n\n  const methodInput = document.createElement('input');\n  methodInput.setAttribute('name', '_method');\n  methodInput.setAttribute('value', 'delete');\n  methodInput.setAttribute('type', 'hidden');\n  form.appendChild(methodInput);\n\n  const csrfToken = Rails.csrfToken();\n  const csrfParam = Rails.csrfParam();\n\n  if (csrfParam && csrfToken) {\n    const csrfInput = document.createElement('input');\n    csrfInput.setAttribute('name', csrfParam);\n    csrfInput.setAttribute('value', csrfToken);\n    csrfInput.setAttribute('type', 'hidden');\n    form.appendChild(csrfInput);\n  }\n\n  const submitButton = document.createElement('input');\n  submitButton.setAttribute('type', 'submit');\n  form.appendChild(submitButton);\n\n  form.method = 'post';\n  form.action = signOutLink;\n  form.style.display = 'none';\n\n  document.body.appendChild(form);\n  submitButton.click();\n};\n","import React from 'react';\nimport ComposeFormContainer from './containers/compose_form_container';\nimport NavigationContainer from './containers/navigation_container';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\nimport { mountCompose, unmountCompose } from 'flavours/glitch/actions/compose';\nimport { injectIntl, defineMessages } from 'react-intl';\nimport classNames from 'classnames';\nimport SearchContainer from './containers/search_container';\nimport Motion from 'flavours/glitch/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport SearchResultsContainer from './containers/search_results_container';\nimport { me, mascot } from 'flavours/glitch/util/initial_state';\nimport HeaderContainer from './containers/header_container';\n\nconst messages = defineMessages({\n  compose: { id: 'navigation_bar.compose', defaultMessage: 'Compose new toot' },\n});\n\nconst mapStateToProps = (state, ownProps) => ({\n  showSearch: ownProps.multiColumn ? state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']) : ownProps.isSearchPage,\n});\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n  onMount () {\n    dispatch(mountCompose());\n  },\n\n  onUnmount () {\n    dispatch(unmountCompose());\n  },\n});\nexport default @connect(mapStateToProps, mapDispatchToProps)\n@injectIntl\nclass Compose extends React.PureComponent {\n  static propTypes = {\n    multiColumn: PropTypes.bool,\n    showSearch: PropTypes.bool,\n    isSearchPage: PropTypes.bool,\n    onMount: PropTypes.func,\n    onUnmount: PropTypes.func,\n    intl: PropTypes.object.isRequired,\n  };\n\n  componentDidMount () {\n    const { isSearchPage } = this.props;\n\n    if (!isSearchPage) {\n      this.props.onMount();\n    }\n  }\n\n  componentWillUnmount () {\n    const { isSearchPage } = this.props;\n\n    if (!isSearchPage) {\n      this.props.onUnmount();\n    }\n  }\n\n  render () {\n    const {\n      intl,\n      multiColumn,\n      isSearchPage,\n      showSearch,\n    } = this.props;\n    const computedClass = classNames('drawer', 'mbstobon');\n\n    return (\n      <div className={computedClass} role='region' aria-label={intl.formatMessage(messages.compose)}>\n        {multiColumn && <HeaderContainer />}\n\n        {(multiColumn || isSearchPage) && <SearchContainer />}\n\n        <div className='drawer__pager'>\n          {!isSearchPage && <div className='drawer__inner'>\n            <NavigationContainer />\n\n            <ComposeFormContainer />\n\n            <div className='drawer__inner__mastodon'>\n              {mascot ? <img alt='' draggable='false' src={mascot} /> : <button className='mastodon' />}\n            </div>\n          </div>}\n\n          <Motion defaultStyle={{ x: isSearchPage ? 0 : -100 }} style={{ x: spring(showSearch || isSearchPage ? 0 : -100, { stiffness: 210, damping: 20 }) }}>\n            {({ x }) => (\n              <div className='drawer__inner darker' style={{ transform: `translateX(${x}%)`, visibility: x === -100 ? 'hidden' : 'visible' }}>\n                <SearchResultsContainer />\n              </div>\n            )}\n          </Motion>\n        </div>\n      </div>\n    );\n  }\n\n}\n"],"sourceRoot":""}