forked from AkkomaGang/akkoma
1 line
No EOL
70 KiB
Text
1 line
No EOL
70 KiB
Text
{"version":3,"sources":["webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/initial_state.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/emoji/unicode_to_filename.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/escape-html/index.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/emoji/emoji.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/core/settings.js","webpack:///./node_modules/substring-trie/index.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/emoji/emoji_unicode_mapping_light.js"],"names":["prop","element","document","getElementById","initialState","JSON","parse","textContent","getMeta","meta","reduceMotion","autoPlayGif","displayMedia","expandSpoilers","unfollowModal","boostModal","deleteModal","me","searchEnabled","maxChars","invitesEnabled","repository","source_url","version","mascot","profile_directory","isStaff","forceSingleColumn","useBlurhash","usePendingItems","showTrends","title","deleteOthersNotice","rights","exports","unicodeToFilename","str","result","charCode","p","i","length","charCodeAt","toString","cachedSetTimeout","cachedClearTimeout","process","module","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","setTimeout","e","call","this","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","timeout","len","run","marker","runClearTimeout","Item","array","noop","nextTick","args","Array","arguments","push","prototype","apply","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","matchHtmlRegExp","string","escape","match","exec","html","index","lastIndex","substring","trie","Trie","Object","keys","unicodeMapping","assetHost","CDN_HOST","emojify","customEmojis","tagCharsWithEmojis","rtn","tagChars","invisible","tag","indexOf","search","slice","codePointAt","rend","replacement","lt","shortname","filename","url","static_url","startsWith","shortCode","buildCustomEmojis","emojis","forEach","emoji","shortcode","get","replace","id","short_names","text","emoticons","keywords","imageUrl","custom","customCategory","categoriesFromEmojis","reduce","set","add","Set","Rails","linkClickSelector","buttonClickSelector","selector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","querySelector","content","cspNonce","m","Element","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","getData","key","setData","value","$","querySelectorAll","csrfParam","csrfToken","CSRFProtection","xhr","token","setRequestHeader","refreshCSRFTokens","param","input","CustomEvent","fire","preventDefault","window","event","params","evt","createEvent","initCustomEvent","bubbles","cancelable","detail","Event","defaultPrevented","defineProperty","obj","data","dispatchEvent","stopEverything","target","stopPropagation","stopImmediatePropagation","delegate","eventType","handler","addEventListener","parentNode","AcceptHeaders","createXHR","prepareOptions","processResponse","xml","json","script","ajax","options","response","responseText","getResponseHeader","Math","floor","status","success","statusText","error","complete","beforeSend","readyState","XMLHttpRequest","OPENED","send","location","href","type","toUpperCase","dataType","accept","done","open","crossDomain","withCredentials","onreadystatechange","DONE","parser","createElement","setAttribute","head","appendChild","removeChild","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","host","toArray","serializeElement","additionalParam","inputs","elements","disabled","option","selected","checked","map","encodeURIComponent","join","formElements","form","filter","el","allowAction","handleConfirm","answer","callback","message","getAttribute","confirm","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","handleDisabledElement","enableElement","disableElement","innerHTML","originalText","removeEventListener","handleMethod","formContent","method","action","style","display","body","click","isRemote","handleRemote","button","enctype","FormData","append","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","ctrlKey","jQuery","rails","ajaxPrefilter","originalOptions","start","_rails_loaded","require","escapeTextContentForBrowser","avatar","file","files","URL","createObjectURL","dataset","originalSrc","src","header","lock","focus","select","setSelectionRange","oldReadOnly","readonly","execCommand","blur","classList","remove","err","console","CODA_MARKER","MiniTrie","words","_dict","word","dict","j","len2","char","charAt","stack","pop","shortCodesToEmojiData","emojisWithoutShortCodes","processEmojiMapData","emojiMapData","native"],"mappings":"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","file":"core/settings.js","sourcesContent":["const element = document.getElementById('initial-state');\nconst initialState = element && JSON.parse(element.textContent);\n\nconst getMeta = (prop) => initialState && initialState.meta && initialState.meta[prop];\nconst getRight = (prop) => initialState && initialState.rights && initialState.rights[prop];\n\nexport const reduceMotion = getMeta('reduce_motion');\nexport const autoPlayGif = getMeta('auto_play_gif');\nexport const displayMedia = getMeta('display_media');\nexport const expandSpoilers = getMeta('expand_spoilers');\nexport const unfollowModal = getMeta('unfollow_modal');\nexport const boostModal = getMeta('boost_modal');\nexport const deleteModal = getMeta('delete_modal');\nexport const me = getMeta('me');\nexport const searchEnabled = getMeta('search_enabled');\nexport const maxChars = getMeta('max_toot_chars') || 500;\nexport const invitesEnabled = getMeta('invites_enabled');\nexport const repository = getMeta('repository');\nexport const source_url = getMeta('source_url');\nexport const version = getMeta('version');\nexport const mascot = getMeta('mascot');\nexport const profile_directory = getMeta('profile_directory');\nexport const isStaff = getMeta('is_staff');\nexport const forceSingleColumn = !getMeta('advanced_layout');\nexport const useBlurhash = getMeta('use_blurhash');\nexport const usePendingItems = getMeta('use_pending_items');\nexport const showTrends = getMeta('trends');\nexport const title = getMeta('title');\n\nexport const deleteOthersNotice = getRight('delete_others_notice');\n\nexport default initialState;\n","// taken from:\n// https://github.com/twitter/twemoji/blob/47732c7/twemoji-generator.js#L848-L866\nexports.unicodeToFilename = (str) => {\n let result = '';\n let charCode = 0;\n let p = 0;\n let i = 0;\n while (i < str.length) {\n charCode = str.charCodeAt(i++);\n if (p) {\n if (result.length > 0) {\n result += '-';\n }\n result += (0x10000 + ((p - 0xD800) << 10) + (charCode - 0xDC00)).toString(16);\n p = 0;\n } else if (0xD800 <= charCode && charCode <= 0xDBFF) {\n p = charCode;\n } else {\n if (result.length > 0) {\n result += '-';\n }\n result += charCode.toString(16);\n }\n }\n return result;\n};\n","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n'use strict';\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n // \"\n escape = '"';\n break;\n\n case 38:\n // &\n escape = '&';\n break;\n\n case 39:\n // '\n escape = ''';\n break;\n\n case 60:\n // <\n escape = '<';\n break;\n\n case 62:\n // >\n escape = '>';\n break;\n\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n}","import { autoPlayGif } from '../../initial_state';\nimport unicodeMapping from './emoji_unicode_mapping_light';\nimport Trie from 'substring-trie';\n\nconst trie = new Trie(Object.keys(unicodeMapping));\n\nconst assetHost = process.env.CDN_HOST || '';\n\nconst emojify = (str, customEmojis = {}) => {\n const tagCharsWithoutEmojis = '<&';\n const tagCharsWithEmojis = Object.keys(customEmojis).length ? '<&:' : '<&';\n let rtn = '', tagChars = tagCharsWithEmojis, invisible = 0;\n for (;;) {\n let match, i = 0, tag;\n while (i < str.length && (tag = tagChars.indexOf(str[i])) === -1 && (invisible || !(match = trie.search(str.slice(i))))) {\n i += str.codePointAt(i) < 65536 ? 1 : 2;\n }\n let rend, replacement = '';\n if (i === str.length) {\n break;\n } else if (str[i] === ':') {\n if (!(() => {\n rend = str.indexOf(':', i + 1) + 1;\n if (!rend) return false; // no pair of ':'\n const lt = str.indexOf('<', i + 1);\n if (!(lt === -1 || lt >= rend)) return false; // tag appeared before closing ':'\n const shortname = str.slice(i, rend);\n // now got a replacee as ':shortname:'\n // if you want additional emoji handler, add statements below which set replacement and return true.\n if (shortname in customEmojis) {\n const filename = autoPlayGif ? customEmojis[shortname].url : customEmojis[shortname].static_url;\n replacement = `<img draggable=\"false\" class=\"emojione custom-emoji\" alt=\"${shortname}\" title=\"${shortname}\" src=\"${filename}\" data-original=\"${customEmojis[shortname].url}\" data-static=\"${customEmojis[shortname].static_url}\" />`;\n return true;\n }\n return false;\n })()) rend = ++i;\n } else if (tag >= 0) { // <, &\n rend = str.indexOf('>;'[tag], i + 1) + 1;\n if (!rend) {\n break;\n }\n if (tag === 0) {\n if (invisible) {\n if (str[i + 1] === '/') { // closing tag\n if (!--invisible) {\n tagChars = tagCharsWithEmojis;\n }\n } else if (str[rend - 2] !== '/') { // opening tag\n invisible++;\n }\n } else {\n if (str.startsWith('<span class=\"invisible\">', i)) {\n // avoid emojifying on invisible text\n invisible = 1;\n tagChars = tagCharsWithoutEmojis;\n }\n }\n }\n i = rend;\n } else { // matched to unicode emoji\n const { filename, shortCode } = unicodeMapping[match];\n const title = shortCode ? `:${shortCode}:` : '';\n replacement = `<img draggable=\"false\" class=\"emojione\" alt=\"${match}\" title=\"${title}\" src=\"${assetHost}/emoji/${filename}.svg\" />`;\n rend = i + match.length;\n // If the matched character was followed by VS15 (for selecting text presentation), skip it.\n if (str.codePointAt(rend) === 65038) {\n rend += 1;\n }\n }\n rtn += str.slice(0, i) + replacement;\n str = str.slice(rend);\n }\n return rtn + str;\n};\n\nexport default emojify;\n\nexport const buildCustomEmojis = (customEmojis) => {\n const emojis = [];\n\n customEmojis.forEach(emoji => {\n const shortcode = emoji.get('shortcode');\n const url = autoPlayGif ? emoji.get('url') : emoji.get('static_url');\n const name = shortcode.replace(':', '');\n\n emojis.push({\n id: name,\n name,\n short_names: [name],\n text: '',\n emoticons: [],\n keywords: [name],\n imageUrl: url,\n custom: true,\n customCategory: emoji.get('category'),\n });\n });\n\n return emojis;\n};\n\nexport const categoriesFromEmojis = customEmojis => customEmojis.reduce((set, emoji) => set.add(emoji.get('category') ? `custom-${emoji.get('category')}` : 'custom'), new Set(['custom']));\n","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/master/actionview/app/assets/javascripts\nReleased under the MIT license\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, '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 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 = confirm(message);\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, 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 element = e instanceof Event ? e.target : e;\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 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 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 }).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, primaryMouseKey;\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 primaryMouseKey = e.button === 0;\n\n if (!primaryMouseKey || 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);","// This file will be loaded on settings pages, regardless of theme.\n\nimport escapeTextContentForBrowser from 'escape-html';\nconst { delegate } = require('rails-ujs');\nimport emojify from '../mastodon/features/emoji/emoji';\n\ndelegate(document, '#account_display_name', 'input', ({ target }) => {\n const name = document.querySelector('.card .display-name strong');\n if (name) {\n if (target.value) {\n name.innerHTML = emojify(escapeTextContentForBrowser(target.value));\n } else {\n name.textContent = document.querySelector('#default_account_display_name').textContent;\n }\n }\n});\n\ndelegate(document, '#account_avatar', 'change', ({ target }) => {\n const avatar = document.querySelector('.card .avatar img');\n const [file] = target.files || [];\n const url = file ? URL.createObjectURL(file) : avatar.dataset.originalSrc;\n\n avatar.src = url;\n});\n\ndelegate(document, '#account_header', 'change', ({ target }) => {\n const header = document.querySelector('.card .card__img img');\n const [file] = target.files || [];\n const url = file ? URL.createObjectURL(file) : header.dataset.originalSrc;\n\n header.src = url;\n});\n\ndelegate(document, '#account_locked', 'change', ({ target }) => {\n const lock = document.querySelector('.card .display-name i');\n\n if (target.checked) {\n lock.style.display = 'inline';\n } else {\n lock.style.display = 'none';\n }\n});\n\ndelegate(document, '.input-copy input', 'click', ({ target }) => {\n target.focus();\n target.select();\n target.setSelectionRange(0, target.value.length);\n});\n\ndelegate(document, '.input-copy button', 'click', ({ target }) => {\n const input = target.parentNode.querySelector('.input-copy__wrapper input');\n\n const oldReadOnly = input.readonly;\n\n input.readonly = false;\n input.focus();\n input.select();\n input.setSelectionRange(0, input.value.length);\n\n try {\n if (document.execCommand('copy')) {\n input.blur();\n target.parentNode.classList.add('copied');\n\n setTimeout(() => {\n target.parentNode.classList.remove('copied');\n }, 700);\n }\n } catch (err) {\n console.error(err);\n }\n\n input.readonly = oldReadOnly;\n});\n","'use strict';\n\nvar CODA_MARKER = '$$'; // marks the end of the string\n\nfunction MiniTrie(words) {\n this._dict = {};\n\n for (var i = 0, len = words.length; i < len; i++) {\n var word = words[i];\n var dict = this._dict;\n\n for (var j = 0, len2 = word.length; j < len2; j++) {\n var char = word.charAt(j);\n dict = dict[char] = dict[char] || {};\n }\n\n dict[CODA_MARKER] = true;\n }\n}\n\nMiniTrie.prototype.search = function (str) {\n var i = -1;\n var len = str.length;\n var stack = [this._dict];\n\n while (++i < len) {\n var dict = stack[i];\n var char = str.charAt(i);\n\n if (char in dict) {\n stack.push(dict[char]);\n } else {\n break;\n }\n }\n\n while (stack.length) {\n if (stack.pop()[CODA_MARKER]) {\n return str.substring(0, stack.length);\n }\n }\n};\n\nmodule.exports = MiniTrie;","// A mapping of unicode strings to an object containing the filename\n// (i.e. the svg filename) and a shortCode intended to be shown\n// as a \"title\" attribute in an HTML element (aka tooltip).\n\nconst [\n shortCodesToEmojiData,\n skins, // eslint-disable-line no-unused-vars\n categories, // eslint-disable-line no-unused-vars\n short_names, // eslint-disable-line no-unused-vars\n emojisWithoutShortCodes,\n] = require('./emoji_compressed');\nconst { unicodeToFilename } = require('./unicode_to_filename');\n\n// decompress\nconst unicodeMapping = {};\n\nfunction processEmojiMapData(emojiMapData, shortCode) {\n let [ native, filename ] = emojiMapData;\n if (!filename) {\n // filename name can be derived from unicodeToFilename\n filename = unicodeToFilename(native);\n }\n unicodeMapping[native] = {\n shortCode: shortCode,\n filename: filename,\n };\n}\n\nObject.keys(shortCodesToEmojiData).forEach((shortCode) => {\n let [ filenameData ] = shortCodesToEmojiData[shortCode];\n filenameData.forEach(emojiMapData => processEmojiMapData(emojiMapData, shortCode));\n});\nemojisWithoutShortCodes.forEach(emojiMapData => processEmojiMapData(emojiMapData));\n\nmodule.exports = unicodeMapping;\n"],"sourceRoot":""} |