mirror of
https://github.com/Neetpone/ponepaste.git
synced 2025-03-12 22:50:07 +01:00
1 line
No EOL
14 KiB
Text
1 line
No EOL
14 KiB
Text
{"version":3,"file":"generic.min.js","sources":["../../../js/dom.js","../../../js/tag_input.js","../../../js/main.js"],"sourcesContent":["const $ = function(selector) {\n return document.querySelector(selector);\n};\n\nconst $$ = function(selector) {\n return document.querySelectorAll(selector) || [];\n};\n\nconst makeEl = function(html) {\n const template = document.createElement('template');\n\n template.innerHTML = html.trim();\n\n return template.content.firstChild;\n};\n\nconst clearEl = function(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n};\n\nconst toggleEl = function(el) {\n if (el.classList.contains('is-hidden')) {\n el.classList.remove('is-hidden');\n } else {\n el.classList.add('is-hidden');\n }\n};\n\nconst escape = function(unsafe) {\n return unsafe\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n}\n\nconst whenReady = function(funcp) {\n if (document.readyState !== 'loading') {\n funcp();\n } else {\n document.addEventListener('DOMContentLoaded', funcp);\n }\n}\n\nexport { whenReady, $, $$, makeEl, clearEl, toggleEl, escape };","import { makeEl, escape } from \"./dom\";\n\nclass TagsInput {\n constructor(element, options = {}) {\n this.element = element;\n this.tags = [];\n this.options = options\n\n this.maxTags = options.maxTags || 32;\n this.inputNode = null;\n this.containerNode = null;\n }\n\n attach() {\n this.element.style.display = 'none';\n\n this.containerNode = makeEl('<div class=\"tags-input\"></div>');\n this.inputNode = makeEl('<input class=\"input\" type=\"text\" placeholder=\"Type a comma to separate each tag...\" value=\"\" />');\n this.containerNode.appendChild(this.inputNode);\n\n this.element.parentNode.insertBefore(this.containerNode, this.element.nextSibling);\n\n /* Load existing tags from input */\n if (this.element.value) {\n for (const tag of this.element.value.split(',')) {\n this.addTag(tag);\n }\n }\n\n /* Handle addition and removal of tags via key-presses */\n this.containerNode.addEventListener('keydown', this._handleInputKeyUp.bind(this));\n\n /* Handle deletions by clicking the delete button */\n this.containerNode.addEventListener('click', this._handleContainerClick.bind(this));\n\n /* Handle clicks outside the input node to add the past tag */\n this.inputNode.addEventListener('focusout', (evt) => {\n if (this.inputNode.value) {\n this.addTag(this.inputNode.value);\n this.inputNode.value = \"\";\n this.updateHiddenInputValue();\n }\n });\n }\n\n detach() {\n this.tags.clear();\n this.containerNode.remove();\n this.element.style.display = 'inline-block';\n }\n\n updateHiddenInputValue() {\n this.element.value = this.tags.join(',');\n }\n\n deleteTagNode(node) {\n this.tags.splice(this.tags.indexOf(node.dataset.value.toLowerCase()), 1);\n node.remove();\n\n /* Below the limit? Make sure the input is enabled. */\n if (this.tags.length < this.maxTags) {\n this.inputNode.disabled = false;\n }\n }\n\n addTag(tagValue) {\n tagValue = tagValue.trim();\n\n /* Tag value is probably not empty and we don't already have the same tag. */\n if (tagValue !== '' && this.tags.indexOf(tagValue.toLowerCase()) === -1) {\n this.tags.push(tagValue.toLowerCase());\n\n this.inputNode.parentNode.insertBefore(\n makeEl('<span class=\"tag is-info\" data-value=\"' + escape(tagValue) + '\">' + escape(tagValue) + '<span class=\"delete is-small\" /></span>'),\n this.inputNode\n );\n\n /* Too many tags, disable the input for now. */\n if (this.tags.length >= this.maxTags) {\n this.inputNode.disabled = true;\n }\n }\n }\n\n _handleInputKeyUp(evt) {\n let tagValue = this.inputNode.value;\n\n if (evt.key === 'Backspace' && tagValue === '') {\n // Remove the child\n if (this.inputNode.previousSibling) {\n this.deleteTagNode(this.inputNode.previousSibling);\n\n this.updateHiddenInputValue();\n }\n } else if (evt.key === ',') {\n this.addTag(tagValue);\n\n this.inputNode.value = ''\n this.updateHiddenInputValue();\n\n evt.preventDefault();\n } else if (evt.key !== 'Backspace' && tagValue.length > 255) { // This could be improved to check if it would actually result in a new char being typed...\n evt.preventDefault();\n }\n }\n\n _handleContainerClick(evt) {\n if (evt.target && evt.target.classList.contains('delete')) {\n this.deleteTagNode(evt.target.closest('.tag'));\n this.updateHiddenInputValue();\n }\n }\n}\n\nexport { TagsInput };\n","import { $, $$, toggleEl } from './dom';\nimport { TagsInput } from \"./tag_input\";\n\nconst setupSignupModal = () => {\n const signupButton = $('[data-target~=\"#signin\"],[data-target~=\"#signup\"]');\n\n if (signupButton) {\n signupButton.href = 'javascript:void(0)';\n\n signupButton.addEventListener('click', () => {\n $('.modal').classList.add('is-active');\n });\n\n $('.modal-button-close').addEventListener('click', () => {\n $('.modal').classList.remove('is-active');\n });\n }\n}\n\nconst globalSetup = () => {\n Array.prototype.forEach.call($$('.js-tag-input'), (el) => {\n new TagsInput(el).attach();\n });\n\n setupSignupModal();\n\n const embedButton = $('.panel-tools .embed-tool');\n\n if (embedButton){\n embedButton.addEventListener('click', (evt) => {\n if (evt.target && evt.target.closest('.panel-tools')) {\n toggleEl(evt.target.closest('.panel-tools').querySelector('.panel-embed'));\n }\n });\n }\n\n const expandButton = $('.expand-tool');\n\n if (expandButton) {\n expandButton.addEventListener('click', (evt) => {\n if (evt.target && evt.target.closest('.panel')) {\n const panel = evt.target.closest('.panel');\n\n if (panel.classList.contains('panel-fullsize')) {\n panel.classList.remove('panel-fullsize');\n } else {\n panel.classList.add('panel-fullsize');\n }\n }\n });\n }\n\n // Notifications\n (document.querySelectorAll('.notification .delete') || []).forEach(($delete) => {\n const $notification = $delete.parentNode;\n\n $delete.addEventListener('click', () => {\n $notification.parentNode.removeChild($notification);\n });\n });\n\n // Hamburger menu\n const $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0);\n if ($navbarBurgers.length > 0) {\n $navbarBurgers.forEach(el => {\n el.addEventListener('click', () => {\n const target = el.dataset.target;\n const $target = document.getElementById(target);\n el.classList.toggle('is-active');\n $target.classList.toggle('is-active');\n });\n });\n }\n\n // CAPTCHA refresh\n const captchaContainer = $('.captcha_container');\n\n if (captchaContainer) {\n const refreshElement = captchaContainer.querySelector('a');\n const imageElement = captchaContainer.querySelector('img');\n\n if (refreshElement && imageElement) {\n refreshElement.addEventListener('click', () => {\n let src = imageElement.src;\n\n if (src.indexOf('&refresh') !== -1) {\n // yeah, it's kinda cancerous. fuck off.\n src = src.split('&rand=')[0];\n } else {\n src += '&refresh';\n }\n\n imageElement.src = src + '&rand=' + Math.random();\n });\n }\n }\n\n const hiddenElements = $$('.js-hidden');\n\n if (hiddenElements) {\n Array.prototype.forEach.call(hiddenElements, (elem) => {\n toggleEl(elem);\n });\n }\n}\n\nexport { globalSetup };"],"names":["funcp","$","selector","document","querySelector","$$","querySelectorAll","makeEl","html","template","createElement","innerHTML","trim","content","firstChild","toggleEl","el","classList","contains","remove","add","escape","unsafe","replace","TagsInput","element","options","arguments","length","undefined","_classCallCheck","this","tags","maxTags","inputNode","containerNode","key","value","_this","style","display","appendChild","parentNode","insertBefore","nextSibling","_step","_iterator","_createForOfIteratorHelper","split","s","n","done","tag","addTag","err","e","f","addEventListener","_handleInputKeyUp","bind","_handleContainerClick","evt","updateHiddenInputValue","clear","join","node","splice","indexOf","dataset","toLowerCase","disabled","tagValue","push","previousSibling","deleteTagNode","preventDefault","target","closest","signupButton","Array","prototype","forEach","call","attach","href","embedButton","expandButton","panel","$delete","$notification","removeChild","$navbarBurgers","slice","$target","getElementById","toggle","captchaContainer","refreshElement","imageElement","src","Math","random","hiddenElements","elem","readyState"],"mappings":"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"} |