') + ')', '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); } })(); })(); Adding drag_value to Slider by almarklein · Pull Request #884 · plotly/dash-core-components · GitHub
Skip to content
This repository was archived by the owner on Aug 29, 2025. It is now read-only.

Adding drag_value to Slider - #884

Closed
almarklein wants to merge 36 commits into
plotly:devfrom
almarklein:drag_value
Closed

Adding drag_value to Slider#884
almarklein wants to merge 36 commits into
plotly:devfrom
almarklein:drag_value

Conversation

@almarklein

@almarkleinalmarklein commented Nov 17, 2020

Copy link
Copy Markdown
Contributor

Closes#107

This is an attempt to add a drag_value property to the Slider, such that different callbacks can be applied to the slider being dragged, and the slider being released, as proposed in #107.

Disclaimer: I am not yet familiar with the codebase of this repo, so I just tried to update the new property where the value property was updated.

Todo:

  • The value is initially undefined, and I'm not sure how to initialize it to the same value as value.
  • Also implement this for RangeSlider.
  • update the docstring for updatemode to incorporate the new prop.
  • More docs.

rpkyleand others added 30 commits October 1, 2019 11:21
# Conflicts:
#	package-lock.json
# Conflicts:
#	.gitignore
#	CHANGELOG.md
#	package-lock.json
#	package.json
@almarklein

Copy link
Copy Markdown
ContributorAuthor

cc @emmanuelle

@almarkleinalmarklein changed the title First stab at adding drag_value to SliderAdding drag_value to SliderNov 17, 2020
@emmanuelle

Copy link
Copy Markdown
Contributor

@alexcjohnson@Marc-Andre-Rivet there are still some todo items in this PR but could you please comment whether the PR is going in the right direction?

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Yes, I think this is reasonable. One possible concern is performance - will there be a problem in very large apps with just having this prop exist even if it isn't used? But I think the hoverData prop in dcc.Graph shows that this is OK.

We should update the docstring for updatemode to incorporate the new prop.

Current changes are only of the src, should this also include changes from after running the built?

No, just src should be changed in this PR. Build artifacts will be updated when we make the next release.

@almarkleinalmarklein mentioned this pull request Dec 1, 2020
6 tasks
@almarklein

Copy link
Copy Markdown
ContributorAuthor

Oh oh, it looks like I did a git screw-up. I'm closing this in favor of #888. Sorry!

@almarklein
almarklein deleted the drag_value branch December 1, 2020 21:42
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ability to have different Outputs react on either a 'drag' or 'mouseup' for a single Slider

5 participants

@almarklein@emmanuelle@alexcjohnson@rpkyle@Marc-Andre-Rivet