{"version":3,"sources":["webpack:///./app/javascript/packs/public.js","webpack:///./node_modules/rellax/rellax.js"],"names":["start","window","addEventListener","e","data","parent","type","ready","postMessage","id","height","document","getElementsByTagName","scrollHeight","loadPolyfills","then","IntlMessageFormat","require","default","timeAgoString","delegate","emojify","messages","getLocale","ReactDOM","Rellax","createHistory","createBrowserHistory","scrollToDetailedStatus","history","detailedStatuses","querySelectorAll","location","length","state","scrolledToDetailedStatus","scrollIntoView","replace","pathname","Object","_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__","locale","documentElement","lang","dateTimeFormat","Intl","DateTimeFormat","year","month","day","hour","minute","forEach","call","content","innerHTML","datetime","Date","getAttribute","formattedDate","format","title","textContent","now","formatMessage","_ref","values","defaultMessage","formatDate","date","options","getFullYear","reactComponents","__webpack_require__","bind","_ref2","MediaContainer","component","children","child","removeChild","createElement","render","_babel_runtime_helpers_esm_jsx__WEBPACK_IMPORTED_MODULE_0__","components","body","appendChild","catch","error","console","speed","classList","contains","scrollbarWidth","innerWidth","clientWidth","scrollbarWidthStyle","head","sheet","insertRule","_ref3","target","button","href","_ref4","contentEl","parentNode","querySelector","style","display","marginBottom","preventDefault","nodeName","open","_ref5","name","value","escapeTextContentForBrowser","_ref6","avatar","file","files","url","URL","createObjectURL","dataset","originalSrc","src","_ref8","header","_ref10","lock","checked","_ref11","select","_ref12","input","focus","execCommand","blur","add","setTimeout","remove","err","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","undefined","el","self","create","prototype","posY","screenY","posX","screenX","blocks","pause","loop","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","callback","loopId","clearLoop","cancelAnimationFrame","mozCancelAnimationFrame","clearTimeout","transformProp","testEl","transform","vendors","vendor","center","wrapper","relativeToWrapper","round","vertical","horizontal","keys","key","elements","Error","elems","nodeType","init","i","cssText","innerHeight","setPosition","block","createBlock","push","cacheBlocks","animate","dataPercentage","dataSpeed","dataZindex","wrapperPosY","scrollTop","pageYOffset","scrollPosY","offsetTop","pageXOffset","scrollLeft","blockTop","getBoundingClientRect","top","blockHeight","clientHeight","offsetHeight","blockLeft","left","blockWidth","offsetWidth","scrollWidth","percentageY","percentageX","bases","updatePosition","indexOf","index","trimmedStyle","slice","delimiter","baseX","x","baseY","y","width","zindex","oldY","oldX","result","valueX","valueY","Math","positions","positionY","positionX","translate","destroy","removeEventListener","update","refresh","apply","exports","module"],"mappings":"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","file":"js/public-bf748c12de50da70729c.chunk.js","sourcesContent":["import escapeTextContentForBrowser from 'escape-html';\nimport loadPolyfills from '../mastodon/load_polyfills';\nimport ready from '../mastodon/ready';\nimport { start } from '../mastodon/common';\n\nstart();\n\nwindow.addEventListener('message', e => {\n const data = e.data || {};\n\n if (!window.parent || data.type !== 'setHeight') {\n return;\n }\n\n ready(() => {\n window.parent.postMessage({\n type: 'setHeight',\n id: data.id,\n height: document.getElementsByTagName('html')[0].scrollHeight,\n }, '*');\n });\n});\n\nfunction main() {\n const IntlMessageFormat = require('intl-messageformat').default;\n const { timeAgoString } = require('../mastodon/components/relative_timestamp');\n const { delegate } = require('rails-ujs');\n const emojify = require('../mastodon/features/emoji/emoji').default;\n const { getLocale } = require('../mastodon/locales');\n const { messages } = getLocale();\n const React = require('react');\n const ReactDOM = require('react-dom');\n const Rellax = require('rellax');\n const createHistory = require('history').createBrowserHistory;\n\n const scrollToDetailedStatus = () => {\n const history = createHistory();\n const detailedStatuses = document.querySelectorAll('.public-layout .detailed-status');\n const location = history.location;\n\n if (detailedStatuses.length === 1 && (!location.state || !location.state.scrolledToDetailedStatus)) {\n detailedStatuses[0].scrollIntoView();\n history.replace(location.pathname, { ...location.state, scrolledToDetailedStatus: true });\n }\n };\n\n ready(() => {\n const locale = document.documentElement.lang;\n\n const dateTimeFormat = new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n });\n\n [].forEach.call(document.querySelectorAll('.emojify'), (content) => {\n content.innerHTML = emojify(content.innerHTML);\n });\n\n [].forEach.call(document.querySelectorAll('time.formatted'), (content) => {\n const datetime = new Date(content.getAttribute('datetime'));\n const formattedDate = dateTimeFormat.format(datetime);\n\n content.title = formattedDate;\n content.textContent = formattedDate;\n });\n\n [].forEach.call(document.querySelectorAll('time.time-ago'), (content) => {\n const datetime = new Date(content.getAttribute('datetime'));\n const now = new Date();\n\n content.title = dateTimeFormat.format(datetime);\n content.textContent = timeAgoString({\n formatMessage: ({ id, defaultMessage }, values) => (new IntlMessageFormat(messages[id] || defaultMessage, locale)).format(values),\n formatDate: (date, options) => (new Intl.DateTimeFormat(locale, options)).format(date),\n }, datetime, now, now.getFullYear());\n });\n\n const reactComponents = document.querySelectorAll('[data-component]');\n\n if (reactComponents.length > 0) {\n import(/* webpackChunkName: \"containers/media_container\" */ '../mastodon/containers/media_container')\n .then(({ default: MediaContainer }) => {\n [].forEach.call(reactComponents, (component) => {\n [].forEach.call(component.children, (child) => {\n component.removeChild(child);\n });\n });\n\n const content = document.createElement('div');\n\n ReactDOM.render(, content);\n document.body.appendChild(content);\n scrollToDetailedStatus();\n })\n .catch(error => {\n console.error(error);\n scrollToDetailedStatus();\n });\n } else {\n scrollToDetailedStatus();\n }\n\n const parallaxComponents = document.querySelectorAll('.parallax');\n\n if (parallaxComponents.length > 0 ) {\n new Rellax('.parallax', { speed: -1 });\n }\n\n if (document.body.classList.contains('with-modals')) {\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n const scrollbarWidthStyle = document.createElement('style');\n scrollbarWidthStyle.id = 'scrollbar-width';\n document.head.appendChild(scrollbarWidthStyle);\n scrollbarWidthStyle.sheet.insertRule(`body.with-modals--active { margin-right: ${scrollbarWidth}px; }`, 0);\n }\n });\n\n delegate(document, '.webapp-btn', 'click', ({ target, button }) => {\n if (button !== 0) {\n return true;\n }\n window.location.href = target.href;\n return false;\n });\n\n delegate(document, '.status__content__spoiler-link', 'click', ({ target }) => {\n const contentEl = target.parentNode.parentNode.querySelector('.e-content');\n\n if (contentEl.style.display === 'block') {\n contentEl.style.display = 'none';\n target.parentNode.style.marginBottom = 0;\n } else {\n contentEl.style.display = 'block';\n target.parentNode.style.marginBottom = null;\n }\n\n return false;\n });\n\n delegate(document, '.modal-button', 'click', e => {\n e.preventDefault();\n\n let href;\n\n if (e.target.nodeName !== 'A') {\n href = e.target.parentNode.href;\n } else {\n href = e.target.href;\n }\n\n window.open(href, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes');\n });\n\n delegate(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\n delegate(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\n delegate(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\n delegate(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\n delegate(document, '.input-copy input', 'click', ({ target }) => {\n target.select();\n });\n\n delegate(document, '.input-copy button', 'click', ({ target }) => {\n const input = target.parentNode.querySelector('.input-copy__wrapper input');\n\n input.focus();\n input.select();\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}\n\nloadPolyfills().then(main).catch(error => {\n console.error(error);\n});\n","// ------------------------------------------\n// Rellax.js\n// Buttery smooth parallax library\n// Copyright (c) 2016 Moe Amaya (@moeamaya)\n// MIT license\n//\n// Thanks to Paraxify.js and Jaime Cabllero\n// for parallax concepts\n// ------------------------------------------\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.Rellax = factory();\n }\n})(this, function () {\n var Rellax = function Rellax(el, options) {\n \"use strict\";\n\n var self = Object.create(Rellax.prototype);\n var posY = 0;\n var screenY = 0;\n var posX = 0;\n var screenX = 0;\n var blocks = [];\n var pause = true; // check what requestAnimationFrame to use, and if\n // it's not supported, use the onscroll event\n\n var loop = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame || function (callback) {\n return setTimeout(callback, 1000 / 60);\n }; // store the id for later use\n\n\n var loopId = null; // check what cancelAnimation method to use\n\n var clearLoop = window.cancelAnimationFrame || window.mozCancelAnimationFrame || clearTimeout; // check which transform property to use\n\n var transformProp = window.transformProp || function () {\n var testEl = document.createElement('div');\n\n if (testEl.style.transform === null) {\n var vendors = ['Webkit', 'Moz', 'ms'];\n\n for (var vendor in vendors) {\n if (testEl.style[vendors[vendor] + 'Transform'] !== undefined) {\n return vendors[vendor] + 'Transform';\n }\n }\n }\n\n return 'transform';\n }(); // Default Settings\n\n\n self.options = {\n speed: -2,\n center: false,\n wrapper: null,\n relativeToWrapper: false,\n round: true,\n vertical: true,\n horizontal: false,\n callback: function callback() {}\n }; // User defined options (might have more in the future)\n\n if (options) {\n Object.keys(options).forEach(function (key) {\n self.options[key] = options[key];\n });\n } // By default, rellax class\n\n\n if (!el) {\n el = '.rellax';\n } // check if el is a className or a node\n\n\n var elements = typeof el === 'string' ? document.querySelectorAll(el) : [el]; // Now query selector\n\n if (elements.length > 0) {\n self.elems = elements;\n } // The elements don't exist\n else {\n throw new Error(\"The elements you're trying to select don't exist.\");\n } // Has a wrapper and it exists\n\n\n if (self.options.wrapper) {\n if (!self.options.wrapper.nodeType) {\n var wrapper = document.querySelector(self.options.wrapper);\n\n if (wrapper) {\n self.options.wrapper = wrapper;\n } else {\n throw new Error(\"The wrapper you're trying to use don't exist.\");\n }\n }\n } // Get and cache initial position of all elements\n\n\n var cacheBlocks = function cacheBlocks() {\n for (var i = 0; i < self.elems.length; i++) {\n var block = createBlock(self.elems[i]);\n blocks.push(block);\n }\n }; // Let's kick this script off\n // Build array for cached element values\n\n\n var init = function init() {\n for (var i = 0; i < blocks.length; i++) {\n self.elems[i].style.cssText = blocks[i].style;\n }\n\n blocks = [];\n screenY = window.innerHeight;\n screenX = window.innerWidth;\n setPosition();\n cacheBlocks(); // If paused, unpause and set listener for window resizing events\n\n if (pause) {\n window.addEventListener('resize', init);\n pause = false;\n }\n\n animate();\n }; // We want to cache the parallax blocks'\n // values: base, top, height, speed\n // el: is dom object, return: el cache values\n\n\n var createBlock = function createBlock(el) {\n var dataPercentage = el.getAttribute('data-rellax-percentage');\n var dataSpeed = el.getAttribute('data-rellax-speed');\n var dataZindex = el.getAttribute('data-rellax-zindex') || 0; // initializing at scrollY = 0 (top of browser), scrollX = 0 (left of browser)\n // ensures elements are positioned based on HTML layout.\n //\n // If the element has the percentage attribute, the posY and posX needs to be\n // the current scroll position's value, so that the elements are still positioned based on HTML layout\n\n var wrapperPosY = self.options.wrapper ? self.options.wrapper.scrollTop : window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; // If the option relativeToWrapper is true, use the wrappers offset to top, subtracted from the current page scroll.\n\n if (self.options.relativeToWrapper) {\n var scrollPosY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;\n wrapperPosY = scrollPosY - self.options.wrapper.offsetTop;\n }\n\n var posY = self.options.vertical ? dataPercentage || self.options.center ? wrapperPosY : 0 : 0;\n var posX = self.options.horizontal ? dataPercentage || self.options.center ? window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft : 0 : 0;\n var blockTop = posY + el.getBoundingClientRect().top;\n var blockHeight = el.clientHeight || el.offsetHeight || el.scrollHeight;\n var blockLeft = posX + el.getBoundingClientRect().left;\n var blockWidth = el.clientWidth || el.offsetWidth || el.scrollWidth; // apparently parallax equation everyone uses\n\n var percentageY = dataPercentage ? dataPercentage : (posY - blockTop + screenY) / (blockHeight + screenY);\n var percentageX = dataPercentage ? dataPercentage : (posX - blockLeft + screenX) / (blockWidth + screenX);\n\n if (self.options.center) {\n percentageX = 0.5;\n percentageY = 0.5;\n } // Optional individual block speed as data attr, otherwise global speed\n\n\n var speed = dataSpeed ? dataSpeed : self.options.speed;\n var bases = updatePosition(percentageX, percentageY, speed); // ~~Store non-translate3d transforms~~\n // Store inline styles and extract transforms\n\n var style = el.style.cssText;\n var transform = ''; // Check if there's an inline styled transform\n\n if (style.indexOf('transform') >= 0) {\n // Get the index of the transform\n var index = style.indexOf('transform'); // Trim the style to the transform point and get the following semi-colon index\n\n var trimmedStyle = style.slice(index);\n var delimiter = trimmedStyle.indexOf(';'); // Remove \"transform\" string and save the attribute\n\n if (delimiter) {\n transform = \" \" + trimmedStyle.slice(11, delimiter).replace(/\\s/g, '');\n } else {\n transform = \" \" + trimmedStyle.slice(11).replace(/\\s/g, '');\n }\n }\n\n return {\n baseX: bases.x,\n baseY: bases.y,\n top: blockTop,\n left: blockLeft,\n height: blockHeight,\n width: blockWidth,\n speed: speed,\n style: style,\n transform: transform,\n zindex: dataZindex\n };\n }; // set scroll position (posY, posX)\n // side effect method is not ideal, but okay for now\n // returns true if the scroll changed, false if nothing happened\n\n\n var setPosition = function setPosition() {\n var oldY = posY;\n var oldX = posX;\n posY = self.options.wrapper ? self.options.wrapper.scrollTop : (document.documentElement || document.body.parentNode || document.body).scrollTop || window.pageYOffset;\n posX = self.options.wrapper ? self.options.wrapper.scrollLeft : (document.documentElement || document.body.parentNode || document.body).scrollLeft || window.pageXOffset; // If option relativeToWrapper is true, use relative wrapper value instead.\n\n if (self.options.relativeToWrapper) {\n var scrollPosY = (document.documentElement || document.body.parentNode || document.body).scrollTop || window.pageYOffset;\n posY = scrollPosY - self.options.wrapper.offsetTop;\n }\n\n if (oldY != posY && self.options.vertical) {\n // scroll changed, return true\n return true;\n }\n\n if (oldX != posX && self.options.horizontal) {\n // scroll changed, return true\n return true;\n } // scroll did not change\n\n\n return false;\n }; // Ahh a pure function, gets new transform value\n // based on scrollPosition and speed\n // Allow for decimal pixel values\n\n\n var updatePosition = function updatePosition(percentageX, percentageY, speed) {\n var result = {};\n var valueX = speed * (100 * (1 - percentageX));\n var valueY = speed * (100 * (1 - percentageY));\n result.x = self.options.round ? Math.round(valueX) : Math.round(valueX * 100) / 100;\n result.y = self.options.round ? Math.round(valueY) : Math.round(valueY * 100) / 100;\n return result;\n }; // Loop\n\n\n var update = function update() {\n if (setPosition() && pause === false) {\n animate();\n } // loop again\n\n\n loopId = loop(update);\n }; // Transform3d on parallax element\n\n\n var animate = function animate() {\n var positions;\n\n for (var i = 0; i < self.elems.length; i++) {\n var percentageY = (posY - blocks[i].top + screenY) / (blocks[i].height + screenY);\n var percentageX = (posX - blocks[i].left + screenX) / (blocks[i].width + screenX); // Subtracting initialize value, so element stays in same spot as HTML\n\n positions = updatePosition(percentageX, percentageY, blocks[i].speed); // - blocks[i].baseX;\n\n var positionY = positions.y - blocks[i].baseY;\n var positionX = positions.x - blocks[i].baseX;\n var zindex = blocks[i].zindex; // Move that element\n // (Set the new translation and append initial inline transforms.)\n\n var translate = 'translate3d(' + (self.options.horizontal ? positionX : '0') + 'px,' + (self.options.vertical ? positionY : '0') + 'px,' + zindex + 'px) ' + blocks[i].transform;\n self.elems[i].style[transformProp] = translate;\n }\n\n self.options.callback(positions);\n };\n\n self.destroy = function () {\n for (var i = 0; i < self.elems.length; i++) {\n self.elems[i].style.cssText = blocks[i].style;\n } // Remove resize event listener if not pause, and pause\n\n\n if (!pause) {\n window.removeEventListener('resize', init);\n pause = true;\n } // Clear the animation loop to prevent possible memory leak\n\n\n clearLoop(loopId);\n loopId = null;\n }; // Init\n\n\n init(); // Start the loop\n\n update(); // Allow to recalculate the initial values whenever we want\n\n self.refresh = init;\n return self;\n };\n\n return Rellax;\n});"],"sourceRoot":""}