User:AlternateTorg/global.js

var KEY = mw.config.get('wgDBname') + '|' + mw.config.get('wgPageName'); console.log('Loading personal notes for ' + KEY); var RIGHT_RAIL_SELECTOR = 'aside .right-rail-wrapper'; var NAMESPACE = '__com_walkertribe_rjw_fandom-personal-notes__'; var TEXTAREA_ID = NAMESPACE + 'textarea'; var MIN_TEXTAREA_HEIGHT = 100;

function load { return localStorage.getItem(KEY) || ''; }

function save(value) { if (value.length) { localStorage.setItem(KEY, value); } else { localStorage.removeItem(KEY); } }

function onFocus { document.getElementById(TEXTAREA_ID).style.borderColor = 'unset'; }

function onBlur { document.getElementById(TEXTAREA_ID).style.borderColor = 'transparent'; }

function onInput { var editor = document.getElementById(TEXTAREA_ID); editor.style.height = 'auto'; editor.style.height = Math.max(editor.scrollHeight, MIN_TEXTAREA_HEIGHT) + 'px'; }

function init { var el = document.querySelector(RIGHT_RAIL_SELECTOR);

if (!el) { return; }

var notesDiv = document.createElement('div'); notesDiv.style.marginTop = '24px'; notesDiv.style.borderBottom = '1px solid var(--theme-border-color)'; var h2 = document.createElement('h2'); h2.className = 'rail-module__header'; h2.textContent = 'Personal Notes'; notesDiv.appendChild(h2); var textarea = document.createElement('textarea'); textarea.id = TEXTAREA_ID; textarea.autocomplete = false; textarea.placeholder = 'Whatever you write here is visible only to you.'; textarea.style.display = 'block'; textarea.style.boxSizing = 'border-box'; textarea.style.width = '100%'; textarea.style.resize = 'none'; textarea.style.overflow = 'hidden'; textarea.style.fontFamily = 'inherit'; textarea.style.fontSize = '100%'; textarea.style.backgroundColor = 'transparent'; textarea.style.color = 'inherit'; textarea.style.borderColor = 'transparent'; textarea.style.marginBottom = '24px'; notesDiv.appendChild(textarea); el.insertBefore(notesDiv, el.firstChild); textarea.value = load; onInput; textarea.addEventListener('input', onInput); textarea.addEventListener('focus', onFocus); textarea.addEventListener('blur', onBlur); }

setTimeout(init, 2000); // TODO Change this to wait for the right rail to appear