') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Support portrait mode for preview and saving pictures and video by dozingcat · Pull Request #2 · dozingcat/VectorCamera · GitHub
Skip to content

Support portrait mode for preview and saving pictures and video - #2

Merged
dozingcat merged 94 commits into
masterfrom
rotation
Feb 25, 2018
Merged

Support portrait mode for preview and saving pictures and video#2
dozingcat merged 94 commits into
masterfrom
rotation

Commits

Commits on Oct 10, 2017

Commits on Oct 15, 2017

Commits on Oct 18, 2017

Commits on Oct 20, 2017

Commits on Oct 21, 2017

Commits on Oct 23, 2017

Commits on Oct 25, 2017

Commits on Oct 29, 2017

Commits on Oct 30, 2017

Commits on Nov 5, 2017

Commits on Dec 3, 2017

Commits on Dec 10, 2017

Commits on Dec 11, 2017

Commits on Dec 16, 2017

Commits on Dec 17, 2017

Commits on Dec 18, 2017

Commits on Dec 19, 2017

Commits on Dec 23, 2017

Commits on Dec 24, 2017

Commits on Jan 1, 2018

Commits on Jan 2, 2018

Commits on Jan 7, 2018

Commits on Jan 14, 2018

Commits on Jan 16, 2018

Commits on Jan 17, 2018

Commits on Jan 20, 2018

Commits on Jan 21, 2018

Commits on Jan 22, 2018

Commits on Jan 23, 2018

Commits on Jan 24, 2018

Commits on Jan 28, 2018

Commits on Jan 29, 2018

Commits on Jan 30, 2018

Commits on Jan 31, 2018

Commits on Feb 2, 2018

Commits on Feb 3, 2018

Commits on Feb 5, 2018

Commits on Feb 6, 2018

Commits on Feb 8, 2018

Commits on Feb 9, 2018

Commits on Feb 11, 2018

Commits on Feb 12, 2018

Commits on Feb 14, 2018

Commits on Feb 16, 2018

Commits on Feb 18, 2018

Commits on Feb 19, 2018

Commits on Feb 20, 2018

Commits on Feb 23, 2018

Commits on Feb 24, 2018

Commits on Feb 25, 2018