diff --git a/R/dependencies.R b/R/dependencies.R index 8392da6b..06dd3410 100644 --- a/R/dependencies.R +++ b/R/dependencies.R @@ -402,11 +402,9 @@ html_dependency_airdatepicker <- function() { html_dependency_nouislider <- function() { htmlDependency( name = "nouislider", - version = "11.0.3", - package = "shinyWidgets", - src = c(href = "shinyWidgets/nouislider", file = "assets/nouislider"), - script = c("nouislider.min.js", "wNumb.js"), - stylesheet = "nouislider.min.css" + version = "15.6.1", + src = c(file = system.file("packer", package = "shinyWidgets")), + script = "nouislider.js" ) } diff --git a/R/input-noUiSlider.R b/R/input-noUiSlider.R index 37aec213..ea56f190 100644 --- a/R/input-noUiSlider.R +++ b/R/input-noUiSlider.R @@ -44,55 +44,7 @@ #' @importFrom htmltools tags validateCssUnit #' @importFrom jsonlite toJSON #' -#' @examples -#' if (interactive()) { -#' -#' ### examples ---- -#' -#' # see ?demoNoUiSlider -#' demoNoUiSlider("more") -#' -#' -#' ### basic usage ---- -#' -#' library( shiny ) -#' library( shinyWidgets ) -#' -#' -#' ui <- fluidPage( -#' -#' tags$br(), -#' -#' noUiSliderInput( -#' inputId = "noui1", -#' min = 0, max = 100, -#' value = 20 -#' ), -#' verbatimTextOutput(outputId = "res1"), -#' -#' tags$br(), -#' -#' noUiSliderInput( -#' inputId = "noui2", label = "Slider vertical:", -#' min = 0, max = 1000, step = 50, -#' value = c(100, 400), margin = 100, -#' orientation = "vertical", -#' width = "100px", height = "300px" -#' ), -#' verbatimTextOutput(outputId = "res2") -#' -#' ) -#' -#' server <- function(input, output, session) { -#' -#' output$res1 <- renderPrint(input$noui1) -#' output$res2 <- renderPrint(input$noui2) -#' -#' } -#' -#' shinyApp(ui, server) -#' -#' } +#' @example examples/noUiSlider.R noUiSliderInput <- function(inputId, label = NULL, min, max, value, step = NULL, tooltips = TRUE, connect = TRUE, padding = 0, @@ -129,7 +81,7 @@ noUiSliderInput <- function(inputId, label = NULL, min, max, value, behaviour = behaviour, format = format )) - noUiTag <- tags$div( + tags$div( class = "form-group shiny-input-container", class = if (inline) "shiny-input-container-inline", style = if (!is.null(width)) paste0("width: ", validateCssUnit(width), ";"), @@ -156,9 +108,9 @@ noUiSliderInput <- function(inputId, label = NULL, min, max, value, `data-for` = inputId, jsonlite::toJSON(noUiProps, auto_unbox = TRUE, json_verbatim = TRUE) ) - ) + ), + html_dependency_nouislider() ) - attachShinyWidgetsDep(noUiTag, "nouislider") } diff --git a/examples/noUiSlider.R b/examples/noUiSlider.R new file mode 100644 index 00000000..a3ad9e40 --- /dev/null +++ b/examples/noUiSlider.R @@ -0,0 +1,34 @@ +library(shiny) +library(shinyWidgets) + +ui <- fluidPage( + tags$h2("noUiSliderInput example"), + + noUiSliderInput( + inputId = "noui1", + min = 0, max = 100, + value = 20 + ), + verbatimTextOutput(outputId = "res1"), + + tags$br(), + + noUiSliderInput( + inputId = "noui2", label = "Slider vertical:", + min = 0, max = 1000, step = 50, + value = c(100, 400), margin = 100, + orientation = "vertical", + width = "100px", height = "300px" + ), + verbatimTextOutput(outputId = "res2") +) + +server <- function(input, output, session) { + + output$res1 <- renderPrint(input$noui1) + output$res2 <- renderPrint(input$noui2) + +} + +if (interactive()) + shinyApp(ui, server) diff --git a/inst/assets/nouislider/nouislider.min.css b/inst/assets/nouislider/nouislider.min.css deleted file mode 100644 index 45f0eee5..00000000 --- a/inst/assets/nouislider/nouislider.min.css +++ /dev/null @@ -1 +0,0 @@ -/*! nouislider - 11.0.3 - 2018-01-21 14:04:07 */.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-ms-touch-action:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-target{position:relative;direction:ltr}.noUi-base,.noUi-connects{width:100%;height:100%;position:relative;z-index:1}.noUi-connects{overflow:hidden;z-index:0}.noUi-connect,.noUi-origin{will-change:transform;position:absolute;z-index:1;top:0;left:0;height:100%;width:100%;-webkit-transform-origin:0 0;transform-origin:0 0}html:not([dir=rtl]) .noUi-horizontal .noUi-origin{left:auto;right:0}.noUi-vertical .noUi-origin{width:0}.noUi-horizontal .noUi-origin{height:0}.noUi-handle{position:absolute}.noUi-state-tap .noUi-connect,.noUi-state-tap .noUi-origin{-webkit-transition:transform .3s;transition:transform .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;left:-17px;top:-6px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;left:-6px;top:-17px}html:not([dir=rtl]) .noUi-horizontal .noUi-handle{right:-17px;left:auto}.noUi-target{background:#FAFAFA;border-radius:4px;border:1px solid #D3D3D3;box-shadow:inset 0 1px 1px #F0F0F0,0 3px 6px -5px #BBB}.noUi-connects{border-radius:3px}.noUi-connect{background:#3FB8AF}.noUi-draggable{cursor:ew-resize}.noUi-vertical .noUi-draggable{cursor:ns-resize}.noUi-handle{border:1px solid #D9D9D9;border-radius:3px;background:#FFF;cursor:default;box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #EBEBEB,0 3px 6px -3px #BBB}.noUi-active{box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #DDD,0 3px 6px -3px #BBB}.noUi-handle:after,.noUi-handle:before{content:"";display:block;position:absolute;height:14px;width:1px;background:#E8E7E6;left:14px;top:6px}.noUi-handle:after{left:17px}.noUi-vertical .noUi-handle:after,.noUi-vertical .noUi-handle:before{width:14px;height:1px;left:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect{background:#B8B8B8}[disabled] .noUi-handle,[disabled].noUi-handle,[disabled].noUi-target{cursor:not-allowed}.noUi-pips,.noUi-pips *{-moz-box-sizing:border-box;box-sizing:border-box}.noUi-pips{position:absolute;color:#999}.noUi-value{position:absolute;white-space:nowrap;text-align:center}.noUi-value-sub{color:#ccc;font-size:10px}.noUi-marker{position:absolute;background:#CCC}.noUi-marker-large,.noUi-marker-sub{background:#AAA}.noUi-pips-horizontal{padding:10px 0;height:80px;top:100%;left:0;width:100%}.noUi-value-horizontal{-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}.noUi-rtl .noUi-value-horizontal{-webkit-transform:translate(50%,50%);transform:translate(50%,50%)}.noUi-marker-horizontal.noUi-marker{margin-left:-1px;width:2px;height:5px}.noUi-marker-horizontal.noUi-marker-sub{height:10px}.noUi-marker-horizontal.noUi-marker-large{height:15px}.noUi-pips-vertical{padding:0 10px;height:100%;top:0;left:100%}.noUi-value-vertical{-webkit-transform:translate(0,-50%);transform:translate(0,-50%,0);padding-left:25px}.noUi-rtl .noUi-value-vertical{-webkit-transform:translate(0,50%);transform:translate(0,50%)}.noUi-marker-vertical.noUi-marker{width:5px;height:2px;margin-top:-1px}.noUi-marker-vertical.noUi-marker-sub{width:10px}.noUi-marker-vertical.noUi-marker-large{width:15px}.noUi-tooltip{display:block;position:absolute;border:1px solid #D9D9D9;border-radius:3px;background:#fff;color:#000;padding:5px;text-align:center;white-space:nowrap}.noUi-horizontal .noUi-tooltip{-webkit-transform:translate(-50%,0);transform:translate(-50%,0);left:50%;bottom:120%}.noUi-vertical .noUi-tooltip{-webkit-transform:translate(0,-50%);transform:translate(0,-50%);top:50%;right:120%} \ No newline at end of file diff --git a/inst/assets/nouislider/nouislider.min.js b/inst/assets/nouislider/nouislider.min.js deleted file mode 100644 index f40c4358..00000000 --- a/inst/assets/nouislider/nouislider.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! nouislider - 11.0.3 - 2018-01-21 14:04:07 */ - -!function(a){"function"==typeof define&&define.amd?define([],a):"object"==typeof exports?module.exports=a():window.noUiSlider=a()}(function(){"use strict";function a(a){return"object"==typeof a&&"function"==typeof a.to&&"function"==typeof a.from}function b(a){a.parentElement.removeChild(a)}function c(a){a.preventDefault()}function d(a){return a.filter(function(a){return!this[a]&&(this[a]=!0)},{})}function e(a,b){return Math.round(a/b)*b}function f(a,b){var c=a.getBoundingClientRect(),d=a.ownerDocument,e=d.documentElement,f=o(d);return/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(f.x=0),b?c.top+f.y-e.clientTop:c.left+f.x-e.clientLeft}function g(a){return"number"==typeof a&&!isNaN(a)&&isFinite(a)}function h(a,b,c){c>0&&(l(a,b),setTimeout(function(){m(a,b)},c))}function i(a){return Math.max(Math.min(a,100),0)}function j(a){return Array.isArray(a)?a:[a]}function k(a){a=String(a);var b=a.split(".");return b.length>1?b[1].length:0}function l(a,b){a.classList?a.classList.add(b):a.className+=" "+b}function m(a,b){a.classList?a.classList.remove(b):a.className=a.className.replace(new RegExp("(^|\\b)"+b.split(" ").join("|")+"(\\b|$)","gi")," ")}function n(a,b){return a.classList?a.classList.contains(b):new RegExp("\\b"+b+"\\b").test(a.className)}function o(a){var b=void 0!==window.pageXOffset,c="CSS1Compat"===(a.compatMode||"");return{x:b?window.pageXOffset:c?a.documentElement.scrollLeft:a.body.scrollLeft,y:b?window.pageYOffset:c?a.documentElement.scrollTop:a.body.scrollTop}}function p(){return window.navigator.pointerEnabled?{start:"pointerdown",move:"pointermove",end:"pointerup"}:window.navigator.msPointerEnabled?{start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}:{start:"mousedown touchstart",move:"mousemove touchmove",end:"mouseup touchend"}}function q(){var a=!1;try{var b=Object.defineProperty({},"passive",{get:function(){a=!0}});window.addEventListener("test",null,b)}catch(a){}return a}function r(){return window.CSS&&CSS.supports&&CSS.supports("touch-action","none")}function s(a,b){return 100/(b-a)}function t(a,b){return 100*b/(a[1]-a[0])}function u(a,b){return t(a,a[0]<0?b+Math.abs(a[0]):b-a[0])}function v(a,b){return b*(a[1]-a[0])/100+a[0]}function w(a,b){for(var c=1;a>=b[c];)c+=1;return c}function x(a,b,c){if(c>=a.slice(-1)[0])return 100;var d=w(c,a),e=a[d-1],f=a[d],g=b[d-1],h=b[d];return g+u([e,f],c)/s(g,h)}function y(a,b,c){if(c>=100)return a.slice(-1)[0];var d=w(c,b),e=a[d-1],f=a[d],g=b[d-1];return v([e,f],(c-g)*s(g,b[d]))}function z(a,b,c,d){if(100===d)return d;var f=w(d,a),g=a[f-1],h=a[f];return c?d-g>(h-g)/2?h:g:b[f-1]?a[f-1]+e(d-a[f-1],b[f-1]):d}function A(a,b,c){var d;if("number"==typeof b&&(b=[b]),!Array.isArray(b))throw new Error("noUiSlider ("+Z+"): 'range' contains invalid value.");if(d="min"===a?0:"max"===a?100:parseFloat(a),!g(d)||!g(b[0]))throw new Error("noUiSlider ("+Z+"): 'range' value isn't numeric.");c.xPct.push(d),c.xVal.push(b[0]),d?c.xSteps.push(!isNaN(b[1])&&b[1]):isNaN(b[1])||(c.xSteps[0]=b[1]),c.xHighestCompleteStep.push(0)}function B(a,b,c){if(!b)return!0;c.xSteps[a]=t([c.xVal[a],c.xVal[a+1]],b)/s(c.xPct[a],c.xPct[a+1]);var d=(c.xVal[a+1]-c.xVal[a])/c.xNumSteps[a],e=Math.ceil(Number(d.toFixed(3))-1),f=c.xVal[a]+c.xNumSteps[a]*e;c.xHighestCompleteStep[a]=f}function C(a,b,c){this.xPct=[],this.xVal=[],this.xSteps=[c||!1],this.xNumSteps=[!1],this.xHighestCompleteStep=[],this.snap=b;var d,e=[];for(d in a)a.hasOwnProperty(d)&&e.push([a[d],d]);for(e.length&&"object"==typeof e[0][0]?e.sort(function(a,b){return a[0][0]-b[0][0]}):e.sort(function(a,b){return a[0]-b[0]}),d=0;d=50||a.padding[1]>=50)throw new Error("noUiSlider ("+Z+"): 'padding' option must be less than half the range.")}}function P(a,b){switch(b){case"ltr":a.dir=0;break;case"rtl":a.dir=1;break;default:throw new Error("noUiSlider ("+Z+"): 'direction' option was not recognized.")}}function Q(a,b){if("string"!=typeof b)throw new Error("noUiSlider ("+Z+"): 'behaviour' must be a string containing options.");var c=b.indexOf("tap")>=0,d=b.indexOf("drag")>=0,e=b.indexOf("fixed")>=0,f=b.indexOf("snap")>=0,g=b.indexOf("hover")>=0;if(e){if(2!==a.handles)throw new Error("noUiSlider ("+Z+"): 'fixed' behaviour must be used with 2 handles");M(a,a.start[1]-a.start[0])}a.events={tap:c||f,drag:d,fixed:e,snap:f,hover:g}}function R(a,b){if(!1!==b)if(!0===b){a.tooltips=[];for(var c=0;c= 2) required for mode 'count'.");var d=b-1,e=100/d;for(b=[];d--;)b[d]=d*e;b.push(100),a="positions"}return"positions"===a?b.map(function(a){return va.fromStepping(c?va.getStep(a):a)}):"values"===a?c?b.map(function(a){return va.fromStepping(va.getStep(va.toStepping(a)))}):b:void 0}function A(a,b,c){function e(a,b){return(a+b).toFixed(7)/1}var f={},g=va.xVal[0],h=va.xVal[va.xVal.length-1],i=!1,j=!1,k=0;return c=d(c.slice().sort(function(a,b){return a-b})),c[0]!==g&&(c.unshift(g),i=!0),c[c.length-1]!==h&&(c.push(h),j=!0),c.forEach(function(d,g){var h,l,m,n,o,p,q,r,s,t,u=d,v=c[g+1];if("steps"===b&&(h=va.xNumSteps[g]),h||(h=v-u),!1!==u&&void 0!==v)for(h=Math.max(h,1e-7),l=u;l<=v;l=e(l,h)){for(n=va.toStepping(l),o=n-k,r=o/a,s=Math.round(r),t=o/s,m=1;m<=s;m+=1)p=k+m*t,f[p.toFixed(5)]=["x",0];q=c.indexOf(l)>-1?1:"steps"===b?2:0,!g&&i&&(q=0),l===v&&j||(f[n.toFixed(5)]=[l,q]),k=n}}),f}function B(a,b,c){function d(a,b){var c=b===e.cssClasses.value,d=c?j:m,f=c?h:i;return b+" "+d[e.ort]+" "+f[a]}function f(a,f){f[1]=f[1]&&b?b(f[0],f[1]):f[1];var h=k(g,!1);h.className=d(f[1],e.cssClasses.marker),h.style[e.style]=a+"%",f[1]&&(h=k(g,!1),h.className=d(f[1],e.cssClasses.value),h.setAttribute("data-value",f[0]),h.style[e.style]=a+"%",h.innerText=c.to(f[0]))}var g=ya.createElement("div"),h=[e.cssClasses.valueNormal,e.cssClasses.valueLarge,e.cssClasses.valueSub],i=[e.cssClasses.markerNormal,e.cssClasses.markerLarge,e.cssClasses.markerSub],j=[e.cssClasses.valueHorizontal,e.cssClasses.valueVertical],m=[e.cssClasses.markerHorizontal,e.cssClasses.markerVertical];return l(g,e.cssClasses.pips),l(g,0===e.ort?e.cssClasses.pipsHorizontal:e.cssClasses.pipsVertical),Object.keys(a).forEach(function(b){f(b,a[b])}),g}function C(){na&&(b(na),na=null)}function D(a){C();var b=a.mode,c=a.density||1,d=a.filter||!1,e=a.values||!1,f=a.stepped||!1,g=z(b,e,f),h=A(c,b,g),i=a.format||{to:Math.round};return na=ra.appendChild(B(h,d,i))}function E(){var a=ja.getBoundingClientRect(),b="offset"+["Width","Height"][e.ort];return 0===e.ort?a.width||ja[b]:a.height||ja[b]}function F(a,b,c,d){var f=function(f){return!!(f=G(f,d.pageOffset,d.target||b))&&(!(ra.hasAttribute("disabled")&&!d.doNotReject)&&(!(n(ra,e.cssClasses.tap)&&!d.doNotReject)&&(!(a===oa.start&&void 0!==f.buttons&&f.buttons>1)&&((!d.hover||!f.buttons)&&(qa||f.preventDefault(),f.calcPoint=f.points[e.ort],void c(f,d))))))},g=[];return a.split(" ").forEach(function(a){b.addEventListener(a,f,!!qa&&{passive:!0}),g.push([a,f])}),g}function G(a,b,c){var d,e,f=0===a.type.indexOf("touch"),g=0===a.type.indexOf("mouse"),h=0===a.type.indexOf("pointer");if(0===a.type.indexOf("MSPointer")&&(h=!0),f){var i=function(a){return a.target===c||c.contains(a.target)};if("touchstart"===a.type){var j=Array.prototype.filter.call(a.touches,i);if(j.length>1)return!1;d=j[0].pageX,e=j[0].pageY}else{var k=Array.prototype.find.call(a.changedTouches,i);if(!k)return!1;d=k.pageX,e=k.pageY}}return b=b||o(ya),(g||h)&&(d=a.clientX+b.x,e=a.clientY+b.y),a.pageOffset=b,a.points=[d,e],a.cursor=g||h,a}function H(a){var b=a-f(ja,e.ort),c=100*b/E();return c=i(c),e.dir?100-c:c}function I(a){var b=100,c=!1;return ka.forEach(function(d,e){if(!d.hasAttribute("disabled")){var f=Math.abs(sa[e]-a);(f0,100*c/b.baseSize,b.locations,b.handleNumbers)}function L(a,b){b.handle&&(m(b.handle,e.cssClasses.active),ua-=1),b.listeners.forEach(function(a){za.removeEventListener(a[0],a[1])}),0===ua&&(m(ra,e.cssClasses.drag),_(),a.cursor&&(Aa.style.cursor="",Aa.removeEventListener("selectstart",c))),b.handleNumbers.forEach(function(a){S("change",a),S("set",a),S("end",a)})}function M(a,b){var d;if(1===b.handleNumbers.length){var f=ka[b.handleNumbers[0]];if(f.hasAttribute("disabled"))return!1;d=f.children[0],ua+=1,l(d,e.cssClasses.active)}a.stopPropagation();var g=[],h=F(oa.move,za,K,{target:a.target,handle:d,listeners:g,startCalcPoint:a.calcPoint,baseSize:E(),pageOffset:a.pageOffset,handleNumbers:b.handleNumbers,buttonsProperty:a.buttons,locations:sa.slice()}),i=F(oa.end,za,L,{target:a.target,handle:d,listeners:g,doNotReject:!0,handleNumbers:b.handleNumbers}),j=F("mouseout",za,J,{target:a.target,handle:d,listeners:g,doNotReject:!0,handleNumbers:b.handleNumbers});g.push.apply(g,h.concat(i,j)),a.cursor&&(Aa.style.cursor=getComputedStyle(a.target).cursor,ka.length>1&&l(ra,e.cssClasses.drag),Aa.addEventListener("selectstart",c,!1)),b.handleNumbers.forEach(function(a){S("start",a)})}function N(a){a.stopPropagation();var b=H(a.calcPoint),c=I(b);if(!1===c)return!1;e.events.snap||h(ra,e.cssClasses.tap,e.animationDuration),aa(c,b,!0,!0),_(),S("slide",c,!0),S("update",c,!0),S("change",c,!0),S("set",c,!0),e.events.snap&&M(a,{handleNumbers:[c]})}function O(a){var b=H(a.calcPoint),c=va.getStep(b),d=va.fromStepping(c);Object.keys(xa).forEach(function(a){"hover"===a.split(".")[0]&&xa[a].forEach(function(a){a.call(ma,d)})})}function P(a){a.fixed||ka.forEach(function(a,b){F(oa.start,a.children[0],M,{handleNumbers:[b]})}),a.tap&&F(oa.start,ja,N,{}),a.hover&&F(oa.move,ja,O,{hover:!0}),a.drag&&la.forEach(function(b,c){if(!1!==b&&0!==c&&c!==la.length-1){var d=ka[c-1],f=ka[c],g=[b];l(b,e.cssClasses.draggable),a.fixed&&(g.push(d.children[0]),g.push(f.children[0])),g.forEach(function(a){F(oa.start,a,M,{handles:[d,f],handleNumbers:[c-1,c]})})}})}function Q(a,b){xa[a]=xa[a]||[],xa[a].push(b),"update"===a.split(".")[0]&&ka.forEach(function(a,b){S("update",b)})}function R(a){var b=a&&a.split(".")[0],c=b&&a.substring(b.length);Object.keys(xa).forEach(function(a){var d=a.split(".")[0],e=a.substring(d.length);b&&b!==d||c&&c!==e||delete xa[a]})}function S(a,b,c){Object.keys(xa).forEach(function(d){var f=d.split(".")[0];a===f&&xa[d].forEach(function(a){a.call(ma,wa.map(e.format.to),b,wa.slice(),c||!1,sa.slice())})})}function T(a){return a+"%"}function U(a,b,c,d,f,g){return ka.length>1&&(d&&b>0&&(c=Math.max(c,a[b-1]+e.margin)),f&&b1&&e.limit&&(d&&b>0&&(c=Math.min(c,a[b-1]+e.limit)),f&&b1?d.forEach(function(a,c){var d=U(e,a,e[a]+b,f[c],g[c],!1);!1===d?b=0:(b=d-e[a],e[a]=d)}):f=g=[!0];var h=!1;d.forEach(function(a,d){h=aa(a,c[a]+b,f[d],g[d])||h}),h&&d.forEach(function(a){S("update",a),S("slide",a)})}function Y(a,b){return e.dir?100-a-b:a}function $(a,b){sa[a]=b,wa[a]=va.fromStepping(b);var c="translate("+V(T(Y(b,0)-Ba),"0")+")";ka[a].style[e.transformRule]=c,ba(a),ba(a+1)}function _(){ta.forEach(function(a){var b=sa[a]>50?-1:1,c=3+(ka.length+b*a);ka[a].style.zIndex=c})}function aa(a,b,c,d){return!1!==(b=U(sa,a,b,c,d,!1))&&($(a,b),!0)}function ba(a){if(la[a]){var b=0,c=100;0!==a&&(b=sa[a-1]),a!==la.length-1&&(c=sa[a]);var d=c-b,f="translate("+V(T(Y(b,d)),"0")+")",g="scale("+V(d/100,"1")+")";la[a].style[e.transformRule]=f+" "+g}}function ca(a,b){return null===a||!1===a||void 0===a?sa[b]:("number"==typeof a&&(a=String(a)),a=e.format.from(a),a=va.toStepping(a),!1===a||isNaN(a)?sa[b]:a)}function da(a,b){var c=j(a),d=void 0===sa[0];b=void 0===b||!!b,e.animate&&!d&&h(ra,e.cssClasses.tap,e.animationDuration),ta.forEach(function(a){aa(a,ca(c[a],a),!0,!1)}),ta.forEach(function(a){aa(a,sa[a],!0,!0)}),_(),ta.forEach(function(a){S("update",a),null!==c[a]&&b&&S("set",a)})}function ea(a){da(e.start,a)}function fa(){var a=wa.map(e.format.to);return 1===a.length?a[0]:a}function ga(){for(var a in e.cssClasses)e.cssClasses.hasOwnProperty(a)&&m(ra,e.cssClasses[a]);for(;ra.firstChild;)ra.removeChild(ra.firstChild);delete ra.noUiSlider}function ha(){return sa.map(function(a,b){var c=va.getNearbySteps(a),d=wa[b],e=c.thisStep.step,f=null;!1!==e&&d+e>c.stepAfter.startValue&&(e=c.stepAfter.startValue-d),f=d>c.thisStep.startValue?c.thisStep.step:!1!==c.stepBefore.step&&d-c.stepBefore.highestStep,100===a?e=null:0===a&&(f=null);var g=va.countStepDecimals();return null!==e&&!1!==e&&(e=Number(e.toFixed(g))),null!==f&&!1!==f&&(f=Number(f.toFixed(g))),[f,e]})}function ia(a,b){var c=fa(),d=["margin","limit","padding","range","animate","snap","step","format"];d.forEach(function(b){void 0!==a[b]&&(g[b]=a[b])});var f=W(g);d.forEach(function(b){void 0!==a[b]&&(e[b]=f[b])}),va=f.spectrum,e.margin=f.margin,e.limit=f.limit,e.padding=f.padding,e.pips&&D(e.pips),sa=[],da(a.start||c,b)}var ja,ka,la,ma,na,oa=p(),pa=r(),qa=pa&&q(),ra=a,sa=[],ta=[],ua=0,va=e.spectrum,wa=[],xa={},ya=a.ownerDocument,za=ya.documentElement,Aa=ya.body,Ba="rtl"===ya.dir||1===e.ort?0:100;return v(ra),u(e.connect,ja),P(e.events),da(e.start),ma={destroy:ga,steps:ha,on:Q,off:R,get:fa,set:da,reset:ea,__moveHandles:function(a,b,c){X(a,b,sa,c)},options:g,updateOptions:ia,target:ra,removePips:C,pips:D},e.pips&&D(e.pips),e.tooltips&&x(),y(),ma}function Y(a,b){if(!a||!a.nodeName)throw new Error("noUiSlider ("+Z+"): create requires a single element, got: "+a);if(a.noUiSlider)throw new Error("noUiSlider ("+Z+"): Slider was already initialized.");var c=W(b,a),d=X(a,c,b);return a.noUiSlider=d,d}var Z="11.0.3";C.prototype.getMargin=function(a){var b=this.xNumSteps[0];if(b&&a/b%1!=0)throw new Error("noUiSlider ("+Z+"): 'limit', 'margin' and 'padding' must be divisible by step.");return 2===this.xPct.length&&t(this.xVal,a)},C.prototype.toStepping=function(a){return a=x(this.xVal,this.xPct,a)},C.prototype.fromStepping=function(a){return y(this.xVal,this.xPct,a)},C.prototype.getStep=function(a){return a=z(this.xPct,this.xSteps,this.snap,a)},C.prototype.getNearbySteps=function(a){var b=w(a,this.xPct);return{stepBefore:{startValue:this.xVal[b-2],step:this.xNumSteps[b-2],highestStep:this.xHighestCompleteStep[b-2]},thisStep:{startValue:this.xVal[b-1],step:this.xNumSteps[b-1],highestStep:this.xHighestCompleteStep[b-1]},stepAfter:{startValue:this.xVal[b-0],step:this.xNumSteps[b-0],highestStep:this.xHighestCompleteStep[b-0]}}},C.prototype.countStepDecimals=function(){var a=this.xNumSteps.map(k);return Math.max.apply(null,a)},C.prototype.convert=function(a){return this.getStep(this.toStepping(a))};var $={to:function(a){return void 0!==a&&a.toFixed(2)},from:Number};return{version:Z,create:Y}}); \ No newline at end of file diff --git a/inst/assets/nouislider/wNumb.js b/inst/assets/nouislider/wNumb.js deleted file mode 100644 index 4ab340fe..00000000 --- a/inst/assets/nouislider/wNumb.js +++ /dev/null @@ -1,357 +0,0 @@ -(function (factory) { - - if ( typeof define === 'function' && define.amd ) { - - // AMD. Register as an anonymous module. - define([], factory); - - } else if ( typeof exports === 'object' ) { - - // Node/CommonJS - module.exports = factory(); - - } else { - - // Browser globals - window.wNumb = factory(); - } - -}(function(){ - - 'use strict'; - -var FormatOptions = [ - 'decimals', - 'thousand', - 'mark', - 'prefix', - 'suffix', - 'encoder', - 'decoder', - 'negativeBefore', - 'negative', - 'edit', - 'undo' -]; - -// General - - // Reverse a string - function strReverse ( a ) { - return a.split('').reverse().join(''); - } - - // Check if a string starts with a specified prefix. - function strStartsWith ( input, match ) { - return input.substring(0, match.length) === match; - } - - // Check is a string ends in a specified suffix. - function strEndsWith ( input, match ) { - return input.slice(-1 * match.length) === match; - } - - // Throw an error if formatting options are incompatible. - function throwEqualError( F, a, b ) { - if ( (F[a] || F[b]) && (F[a] === F[b]) ) { - throw new Error(a); - } - } - - // Check if a number is finite and not NaN - function isValidNumber ( input ) { - return typeof input === 'number' && isFinite( input ); - } - - // Provide rounding-accurate toFixed method. - // Borrowed: http://stackoverflow.com/a/21323330/775265 - function toFixed ( value, exp ) { - value = value.toString().split('e'); - value = Math.round(+(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp))); - value = value.toString().split('e'); - return (+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp))).toFixed(exp); - } - - -// Formatting - - // Accept a number as input, output formatted string. - function formatTo ( decimals, thousand, mark, prefix, suffix, encoder, decoder, negativeBefore, negative, edit, undo, input ) { - - var originalInput = input, inputIsNegative, inputPieces, inputBase, inputDecimals = '', output = ''; - - // Apply user encoder to the input. - // Expected outcome: number. - if ( encoder ) { - input = encoder(input); - } - - // Stop if no valid number was provided, the number is infinite or NaN. - if ( !isValidNumber(input) ) { - return false; - } - - // Rounding away decimals might cause a value of -0 - // when using very small ranges. Remove those cases. - if ( decimals !== false && parseFloat(input.toFixed(decimals)) === 0 ) { - input = 0; - } - - // Formatting is done on absolute numbers, - // decorated by an optional negative symbol. - if ( input < 0 ) { - inputIsNegative = true; - input = Math.abs(input); - } - - // Reduce the number of decimals to the specified option. - if ( decimals !== false ) { - input = toFixed( input, decimals ); - } - - // Transform the number into a string, so it can be split. - input = input.toString(); - - // Break the number on the decimal separator. - if ( input.indexOf('.') !== -1 ) { - inputPieces = input.split('.'); - - inputBase = inputPieces[0]; - - if ( mark ) { - inputDecimals = mark + inputPieces[1]; - } - - } else { - - // If it isn't split, the entire number will do. - inputBase = input; - } - - // Group numbers in sets of three. - if ( thousand ) { - inputBase = strReverse(inputBase).match(/.{1,3}/g); - inputBase = strReverse(inputBase.join( strReverse( thousand ) )); - } - - // If the number is negative, prefix with negation symbol. - if ( inputIsNegative && negativeBefore ) { - output += negativeBefore; - } - - // Prefix the number - if ( prefix ) { - output += prefix; - } - - // Normal negative option comes after the prefix. Defaults to '-'. - if ( inputIsNegative && negative ) { - output += negative; - } - - // Append the actual number. - output += inputBase; - output += inputDecimals; - - // Apply the suffix. - if ( suffix ) { - output += suffix; - } - - // Run the output through a user-specified post-formatter. - if ( edit ) { - output = edit ( output, originalInput ); - } - - // All done. - return output; - } - - // Accept a sting as input, output decoded number. - function formatFrom ( decimals, thousand, mark, prefix, suffix, encoder, decoder, negativeBefore, negative, edit, undo, input ) { - - var originalInput = input, inputIsNegative, output = ''; - - // User defined pre-decoder. Result must be a non empty string. - if ( undo ) { - input = undo(input); - } - - // Test the input. Can't be empty. - if ( !input || typeof input !== 'string' ) { - return false; - } - - // If the string starts with the negativeBefore value: remove it. - // Remember is was there, the number is negative. - if ( negativeBefore && strStartsWith(input, negativeBefore) ) { - input = input.replace(negativeBefore, ''); - inputIsNegative = true; - } - - // Repeat the same procedure for the prefix. - if ( prefix && strStartsWith(input, prefix) ) { - input = input.replace(prefix, ''); - } - - // And again for negative. - if ( negative && strStartsWith(input, negative) ) { - input = input.replace(negative, ''); - inputIsNegative = true; - } - - // Remove the suffix. - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice - if ( suffix && strEndsWith(input, suffix) ) { - input = input.slice(0, -1 * suffix.length); - } - - // Remove the thousand grouping. - if ( thousand ) { - input = input.split(thousand).join(''); - } - - // Set the decimal separator back to period. - if ( mark ) { - input = input.replace(mark, '.'); - } - - // Prepend the negative symbol. - if ( inputIsNegative ) { - output += '-'; - } - - // Add the number - output += input; - - // Trim all non-numeric characters (allow '.' and '-'); - output = output.replace(/[^0-9\.\-.]/g, ''); - - // The value contains no parse-able number. - if ( output === '' ) { - return false; - } - - // Covert to number. - output = Number(output); - - // Run the user-specified post-decoder. - if ( decoder ) { - output = decoder(output); - } - - // Check is the output is valid, otherwise: return false. - if ( !isValidNumber(output) ) { - return false; - } - - return output; - } - - -// Framework - - // Validate formatting options - function validate ( inputOptions ) { - - var i, optionName, optionValue, - filteredOptions = {}; - - if ( inputOptions['suffix'] === undefined ) { - inputOptions['suffix'] = inputOptions['postfix']; - } - - for ( i = 0; i < FormatOptions.length; i+=1 ) { - - optionName = FormatOptions[i]; - optionValue = inputOptions[optionName]; - - if ( optionValue === undefined ) { - - // Only default if negativeBefore isn't set. - if ( optionName === 'negative' && !filteredOptions.negativeBefore ) { - filteredOptions[optionName] = '-'; - // Don't set a default for mark when 'thousand' is set. - } else if ( optionName === 'mark' && filteredOptions.thousand !== '.' ) { - filteredOptions[optionName] = '.'; - } else { - filteredOptions[optionName] = false; - } - - // Floating points in JS are stable up to 7 decimals. - } else if ( optionName === 'decimals' ) { - if ( optionValue >= 0 && optionValue < 8 ) { - filteredOptions[optionName] = optionValue; - } else { - throw new Error(optionName); - } - - // These options, when provided, must be functions. - } else if ( optionName === 'encoder' || optionName === 'decoder' || optionName === 'edit' || optionName === 'undo' ) { - if ( typeof optionValue === 'function' ) { - filteredOptions[optionName] = optionValue; - } else { - throw new Error(optionName); - } - - // Other options are strings. - } else { - - if ( typeof optionValue === 'string' ) { - filteredOptions[optionName] = optionValue; - } else { - throw new Error(optionName); - } - } - } - - // Some values can't be extracted from a - // string if certain combinations are present. - throwEqualError(filteredOptions, 'mark', 'thousand'); - throwEqualError(filteredOptions, 'prefix', 'negative'); - throwEqualError(filteredOptions, 'prefix', 'negativeBefore'); - - return filteredOptions; - } - - // Pass all options as function arguments - function passAll ( options, method, input ) { - var i, args = []; - - // Add all options in order of FormatOptions - for ( i = 0; i < FormatOptions.length; i+=1 ) { - args.push(options[FormatOptions[i]]); - } - - // Append the input, then call the method, presenting all - // options as arguments. - args.push(input); - return method.apply('', args); - } - - function wNumb ( options ) { - - if ( !(this instanceof wNumb) ) { - return new wNumb ( options ); - } - - if ( typeof options !== "object" ) { - return; - } - - options = validate(options); - - // Call 'formatTo' with proper arguments. - this.to = function ( input ) { - return passAll(options, formatTo, input); - }; - - // Call 'formatFrom' with proper arguments. - this.from = function ( input ) { - return passAll(options, formatFrom, input); - }; - } - - return wNumb; - -})); diff --git a/inst/assets/shinyWidgets-bindings.min.js b/inst/assets/shinyWidgets-bindings.min.js index 7d18d925..390bacb1 100644 --- a/inst/assets/shinyWidgets-bindings.min.js +++ b/inst/assets/shinyWidgets-bindings.min.js @@ -1 +1 @@ -function updateLabel(e,n){if(void 0!==e){if(1!==n.length)throw new Error("labelNode must be of length 1");Array.isArray(e)&&0===e.length?n.addClass("shiny-label-null"):(n.text(e),n.removeClass("shiny-label-null"))}}var awesomeCheckboxBinding=new Shiny.InputBinding;$.extend(awesomeCheckboxBinding,{find:function(e){return $(e).find(".awesome-checkbox-class")},getId:function(e){return e.id},getValue:function(e){return $('input:checkbox[name="'+Shiny.$escape(e.id)+'"]:checked').val()},setValue:function(e,n){$('input:checkbox[name="'+Shiny.$escape(e.id)+'"][value="'+Shiny.$escape(n)+'"]').prop("checked",!0)},subscribe:function(e,n){$(e).on("change.awesomeCheckboxBinding",(function(e){n()}))},unsubscribe:function(e){$(e).off(".awesomeCheckboxBinding")},getState:function(e){for(var n=$('input:checkbox[name="'+Shiny.$escape(e.id)+'"]'),t=new Array(n.length),i=0;i0&&($('input:radio[name="'+Shiny.$escape(e.id)+'"][value="'+Shiny.$escape(n)+'"]').prop("checked",!0),$('input:radio[name="'+Shiny.$escape(e.id)+'"][value="'+Shiny.$escape(n)+'"]').parent().addClass("active"))},subscribe:function(e,n){$(e).on("change.radioGroupButtonsBinding",(function(e){n()}))},unsubscribe:function(e){$(e).off(".radioGroupButtonsBinding")},getState:function(e){for(var n=$('input:radio[name="'+Shiny.$escape(e.id)+'"]'),t=new Array(n.length),i=0;ii?(addError(e),showHelp(e),n=i):n0?n.pips.size:t}));var t=document.getElementById(e.id);"vertical"===n.orientation&&(t.style.margin="0 auto 30px"),noUiSlider.create(t,n)}}),Shiny.inputBindings.register(noUiSliderBinding,"shinyWidgets.noUiSlider");var numericRangeInputBinding=new Shiny.InputBinding;$.extend(numericRangeInputBinding,{find:function(e){return $(e).find(".shiny-numeric-range-input")},getType:function(e){return"sw.numericRange"},getValue:function(e){var n=$(e).find("input"),t=n[0].value,i=n[1].value;return[t=/^\s*$/.test(t)?null:isNaN(t)?t:+t,i=/^\s*$/.test(i)?null:isNaN(i)?i:+i]},setValue:function(e,n){e.find("input")[0].value=n[0],e.find("input")[1].value=n[1]},subscribe:function(e,n){$(e).on("change.numericRangeInputBinding",(function(e){n()}))},receiveMessage:function(e,n){var t=$(e);n.hasOwnProperty("label")&&t.find('label[for="'+Shiny.$escape(e.id)+'"]').text(n.label),n.hasOwnProperty("value")&&this.setValue(t,n.value),$(e).trigger("change")},unsubscribe:function(e){$(e).off(".numericRangeInputBinding")}}),Shiny.inputBindings.register(numericRangeInputBinding,"shinyWidgets.numericRange"),Shiny.InputBinding.prototype.store=[],Shiny.InputBinding.prototype.updateStore=function(e,n){this.store[e.id]=n};var pickrColorBinding=new Shiny.InputBinding;function getCorrectTextColor(e){function n(e){return"#"==e.charAt(0)?e.substring(1,7):e}return(299*parseInt(n(e).substring(0,2),16)+587*function(e){return parseInt(n(e).substring(2,4),16)}(e)+114*function(e){return parseInt(n(e).substring(4,6),16)}(e))/1e3>130?"#000000":"#ffffff"}$.extend(pickrColorBinding,{find:function(e){return $(e).find(".pickr-color")},getId:function(e){return $(e).attr("id")},getValue:function(e){return this.getPickr(e).getColor().toHEXA().toString(0)},setValue:function(e,n){this.getPickr(e).setColor(n)},subscribe:function(e,n){var t=this.getPickr(e);t.on("init",(function(e,t){n()}));var i=this.getUpdate(e),a=this.getHideOnSave(e);"change"==i?t.on(i,(function(e,t,i){n()})):(t.on(i,(function(e,t){!0===a&"changestop"!=i&&t.hide(),n()})),"changestop"==i&&t.on("swatchselect",(function(e,t){n()})))},unsubscribe:function(e){},receiveMessage:function(e,n){var t=this.getPickr(e);n.hasOwnProperty("value")&&t.setColor(n.value),n.hasOwnProperty("action")&&("enable"==n.action&&t.enable(),"disable"==n.action&&t.disable(),"show"==n.action&&t.show(),"hide"==n.action&&t.hide())},getState:function(e){},initialize:function(e){var n=$(e).parent().find('script[data-for="'+e.id+'"]'),t=(n=JSON.parse(n.html())).options;t.el=e,e.value=t.default,t.appClass="pickr-color";var i=new Pickr(t);i.setColor(t.default);var a=i.getRoot();n.hasOwnProperty("width")&&(a.app.style.width=n.width),!1===t.useAsButton?(a.button.parentNode.style.display="inline",a.button.id=e.id,a.button.classList.add("pickr-color"),n.inline&&(a.button.style.display="none")):(e.style.backgroundColor=t.default,e.style.color=getCorrectTextColor(t.default),"changestop"==n.update?i.on(n.update,(function(n,t){var i=t.getColor();e.value=i.toHEXA().toString(0),e.style.backgroundColor=i.toHEXA().toString(0),e.style.color=getCorrectTextColor(i.toHEXA().toString(0))})):i.on(n.update,(function(n){e.value=n.toHEXA().toString(0),e.style.backgroundColor=n.toHEXA().toString(0),e.style.color=getCorrectTextColor(n.toHEXA().toString(0))}))),i.options.color=t.default,i.options.inline=n.inline,i.options.update=n.update,i.options.hideOnSave=n.hideOnSave,this.updateStore(e,i)},getPickr:function(e){return this.store[e.id]},getUpdate:function(e){return this.store[e.id].options.update},getHideOnSave:function(e){return this.store[e.id].options.hideOnSave},getColor:function(e){return this.store[e.id].options.color},isInline:function(e){return this.store[e.id].options.inline}}),Shiny.inputBindings.register(pickrColorBinding,"shinyWidgets.colorPickr"),Shiny.addCustomMessageHandler("update-progressBar-shinyWidgets",(function(e){var n,t=e.id,i=document.getElementById(t),a=document.getElementById(t+"-value"),r=document.getElementById(t+"-total"),o=document.getElementById(t+"-title"),s=e.total,d=Math.round(e.value);s>0?(n=Math.round(d/s*100),null!==a&&(a.innerText=e.commas?d.toLocaleString("en-US"):d),null!==r&&(r.innerText=e.commas?s.toLocaleString("en-US"):s),d=Math.round(d/s*100)):n=e.percent>0?e.percent:d,i.style.width=n+"%",""!==i.innerText&&(i.innerText=d+e.unit_mark),null!==e.status&&(i.className="",i.classList.add("progress-bar"),i.classList.add("progress-bar-"+e.status)),null!==e.title&&(o.innerText=e.title)}));var searchInputBinding=new Shiny.InputBinding;function forceIonSliderTextUpdate(e){e.$cache&&e.$cache.input?e.$cache.input.trigger("change"):console.log("Couldn't force ion slider to update")}$.extend(searchInputBinding,{find:function(e){return $(e).find(".search-text")},getId:function(e){return $(e).attr("id")},getValue:function(e){return $("#"+Shiny.$escape(e.id)+"_text").val()},setValue:function(e,n){$("#"+Shiny.$escape(e.id)+"_text").val(n)},subscribe:function(e,n){$("#"+Shiny.$escape(e.id)+"_text").on("keyup.searchInputBinding input.searchInputBinding",(function(e){13==e.keyCode&&n()})),$("#"+Shiny.$escape(e.id)+"_search").on("click",(function(e){n()})),$("#"+Shiny.$escape(e.id)+"_reset").on("click",(function(t){if("TRUE"==$("#"+Shiny.$escape(e.id)).data("reset")){var i=$("#"+Shiny.$escape(e.id)).data("reset-value");$("#"+Shiny.$escape(e.id)+"_text").val(i)}n()}))},unsubscribe:function(e){$(e).off(".searchInputBinding")},receiveMessage:function(e,n){n.hasOwnProperty("value")&&this.setValue(e,n.value),n.hasOwnProperty("label")&&$(e).parent().find('label[for="'+e.id+'"]').text(n.label),n.hasOwnProperty("placeholder")&&($("#"+e.id+"_text")[0].placeholder=n.placeholder),n.trigger&&$("#"+e.id+"_search").click(),$(e).trigger("change")},getState:function(e){return{value:this.getValue(e)}},getRatePolicy:function(){return{policy:"debounce",delay:250}}}),Shiny.inputBindings.register(searchInputBinding,"shinyWidgets.searchInput");var sliderTextBinding=new Shiny.InputBinding;$.extend(sliderTextBinding,{find:function(e){return $.fn.ionRangeSlider?$(e).find(".sw-slider-text"):[]},getType:function(e){var n=$(e).data("data-type");return"date"===n?"shiny.date":"datetime"===n&&"shiny.datetime"},getValue:function(e){var n=$(e).data("ionRangeSlider"),t=n.result,i=n.options.values;return"text"===$(e).data("data-type")?2===this._numValues(e)?[i[t.from].toString(),i[t.to].toString()]:i[t.from].toString():2===this._numValues(e)?[i[t.from],i[t.to]]:i[t.from]},setValue:function(e,n){var t=$(e),i=t.data("ionRangeSlider");t.data("immediate",!0);try{2===this._numValues(e)&&n instanceof Array?i.update({from:n[0],to:n[1]}):i.update({from:n}),forceIonSliderTextUpdate(i)}finally{t.data("immediate",!1)}},subscribe:function(e,n){$(e).on("change.sliderInputBinding",(function(t){n(!$(e).data("immediate")&&!$(e).data("animating"))}))},unsubscribe:function(e){$(e).off(".sliderInputBinding")},receiveMessage:function(e,n){var t=$(e),i=t.data("ionRangeSlider"),a={},r=i.options.values;n.hasOwnProperty("choices")&&(a.values=n.choices,r=n.choices),n.hasOwnProperty("selected")&&(2===this._numValues(e)&&n.selected instanceof Array?(a.from=r.indexOf(n.selected[0]),a.to=r.indexOf(n.selected[1])):a.from=r.indexOf(n.selected)),n.hasOwnProperty("from_fixed")&&(a.from_fixed=n.from_fixed),n.hasOwnProperty("to_fixed")&&(a.to_fixed=n.to_fixed),n.hasOwnProperty("label")&&t.parent().find('label[for="'+Shiny.$escape(e.id)+'"]').text(n.label),t.data("immediate",!0);try{i.update(a),forceIonSliderTextUpdate(i)}finally{t.data("immediate",!1)}},getRatePolicy:function(){return{policy:"debounce",delay:250}},getState:function(e){},initialize:function(e){var n={},t=$(e),i=$(e).data("swvalues");n.values=i,t.ionRangeSlider(n)},_numValues:function(e){return"double"===$(e).data("ionRangeSlider").options.type?2:1}}),Shiny.inputBindings.register(sliderTextBinding,"shiny.sliderText");var spectrumInputBinding=new Shiny.InputBinding;$.extend(spectrumInputBinding,{find:function(e){return $(e).find(".sw-spectrum")},getId:function(e){return $(e).attr("id")},getValue:function(e){return $(e).spectrum("get").toHexString()},setValue:function(e,n){$(e).spectrum("set",n)},subscribe:function(e,n){$(e).on("change",(function(e){n()}))},unsubscribe:function(e){$(e).off(".spectrumInputBinding")},receiveMessage:function(e,n){n.hasOwnProperty("value")&&this.setValue(e,n.value),$(e).trigger("change")},getState:function(e){return{value:this.getValue(e)}},initialize:function(e){var n={},t=$(e).attr("data-update-on");$(e).removeAttr("data-update-on"),"dragstop"==t&&$(e).on("dragstop.spectrum",(function(n){$(e).trigger("change")})),"move"==t&&(n.move=function(){$(e).trigger("change")}),"change"==t&&(n.change=function(){$(e).trigger("change")}),$(e).spectrum(n)},getRatePolicy:function(){return{policy:"debounce",delay:250}}}),Shiny.inputBindings.register(spectrumInputBinding,"shinyWidgets.spectrumInput");var dropMenuInputBinding=new Shiny.InputBinding;$.extend(dropMenuInputBinding,{find:function(e){return $(e).find(".drop-menu-input")},getId:function(e){return e.id},getValue:function(e){return this["instance"+e.id].state.isShown},setValue:function(e,n){},subscribe:function(e,n){var t=this["onHidden"+e.id];this["instance"+e.id].setProps({onShown:function(e){n()},onHidden:function(e){t(e),n()}})},unsubscribe:function(e){$(e).off(".dropMenuInputBinding")},receiveMessage:function(e,n){n.hasOwnProperty("action")&&("enable"==n.action&&this["instance"+e.id].enable(),"disable"==n.action&&this["instance"+e.id].disable(),"show"==n.action&&this["instance"+e.id].show(),"hide"==n.action&&this["instance"+e.id].hide())},getState:function(e){},initialize:function(e){var n=document.getElementById(e.id),t=n.querySelector('script[data-for="'+e.id+'"]');t=JSON.parse(t.innerHTML);var i=document.getElementById(n.dataset.target);t.options.interactive=!0,t.options.onShow=function(e){var t=document.getElementById(n.dataset.template);t.style.display="block",Shiny.bindAll(t,!0),e.setContent(t)},this["onHidden"+e.id]=function(e){var t=e.props.content;t.style.display="none",n.appendChild(t),e.setContent("")},this["instance"+e.id]=tippy(i,t.options)}}),Shiny.inputBindings.register(dropMenuInputBinding,"shinyWidgets.dropMenuInput");var shinyMode=void 0!==window.Shiny&&!!window.Shiny.inputBindings;if(shinyMode){var VerticalTabInputBinding=new Shiny.InputBinding;$.extend(VerticalTabInputBinding,{initialize:function(e){$(e).on("click","> *",(function(e){e.preventDefault(),$(this).siblings("a.active").removeClass("active"),$(this).addClass("active"),$(this).css("display","");var n=$(this).index();$(this).parents(".vrtc-tab-panel-container").find("div.vrtc-tab-panel>div.vrtc-tab-panel-content").removeClass("active"),$(this).parents(".vrtc-tab-panel-container").find("div.vrtc-tab-panel>div.vrtc-tab-panel-content").eq(n).addClass("active")}))},find:function(e){return $(e).find(".vertical-tab-panel")},getId:function(e){return e.id},getValue:function(e){return $(e).find(".active").attr("data-value")},setValue:function(e,n){},receiveMessage:function(e,n){var t=$(e);if(n.hasOwnProperty("value"))t.find("[data-value='"+n.value+"']").click();else if(n.hasOwnProperty("validate"))0===t.children(".active").length&&t.children().length>0&&t.children().last().click();else if(n.hasOwnProperty("reorder")){var i=t.children();i.detach(),t.append($.map(n.reorder,(function(e){return i[e-1]})))}},subscribe:function(e,n){$(e).on("click",(function(e){n()}))},unsubscribe:function(e){$(e).off(".VerticalTabInputBinding")}}),Shiny.inputBindings.register(VerticalTabInputBinding,"shinyWidgets.VerticalTabInput")}else $(document).ready((function(){$("div.vrtc-tab-panel-menu>div.list-group").on("click","> *",(function(e){e.preventDefault(),$(this).siblings("a.active").removeClass("active"),$(this).addClass("active"),$(this).css("display","");var n=$(this).index();$(this).parents(".vrtc-tab-panel-container").find("div.vrtc-tab-panel>div.vrtc-tab-panel-content").removeClass("active"),$(this).parents(".vrtc-tab-panel-container").find("div.vrtc-tab-panel>div.vrtc-tab-panel-content").eq(n).addClass("active")}))})); +function updateLabel(e,n){if(void 0!==e){if(1!==n.length)throw new Error("labelNode must be of length 1");Array.isArray(e)&&0===e.length?n.addClass("shiny-label-null"):(n.text(e),n.removeClass("shiny-label-null"))}}var awesomeCheckboxBinding=new Shiny.InputBinding;$.extend(awesomeCheckboxBinding,{find:function(e){return $(e).find(".awesome-checkbox-class")},getId:function(e){return e.id},getValue:function(e){return $('input:checkbox[name="'+Shiny.$escape(e.id)+'"]:checked').val()},setValue:function(e,n){$('input:checkbox[name="'+Shiny.$escape(e.id)+'"][value="'+Shiny.$escape(n)+'"]').prop("checked",!0)},subscribe:function(e,n){$(e).on("change.awesomeCheckboxBinding",(function(e){n()}))},unsubscribe:function(e){$(e).off(".awesomeCheckboxBinding")},getState:function(e){for(var n=$('input:checkbox[name="'+Shiny.$escape(e.id)+'"]'),t=new Array(n.length),i=0;i0&&($('input:radio[name="'+Shiny.$escape(e.id)+'"][value="'+Shiny.$escape(n)+'"]').prop("checked",!0),$('input:radio[name="'+Shiny.$escape(e.id)+'"][value="'+Shiny.$escape(n)+'"]').parent().addClass("active"))},subscribe:function(e,n){$(e).on("change.radioGroupButtonsBinding",(function(e){n()}))},unsubscribe:function(e){$(e).off(".radioGroupButtonsBinding")},getState:function(e){for(var n=$('input:radio[name="'+Shiny.$escape(e.id)+'"]'),t=new Array(n.length),i=0;ii?(addError(e),showHelp(e),n=i):n130?"#000000":"#ffffff"}$.extend(pickrColorBinding,{find:function(e){return $(e).find(".pickr-color")},getId:function(e){return $(e).attr("id")},getValue:function(e){return this.getPickr(e).getColor().toHEXA().toString(0)},setValue:function(e,n){this.getPickr(e).setColor(n)},subscribe:function(e,n){var t=this.getPickr(e);t.on("init",(function(e,t){n()}));var i=this.getUpdate(e),a=this.getHideOnSave(e);"change"==i?t.on(i,(function(e,t,i){n()})):(t.on(i,(function(e,t){!0===a&"changestop"!=i&&t.hide(),n()})),"changestop"==i&&t.on("swatchselect",(function(e,t){n()})))},unsubscribe:function(e){},receiveMessage:function(e,n){var t=this.getPickr(e);n.hasOwnProperty("value")&&t.setColor(n.value),n.hasOwnProperty("action")&&("enable"==n.action&&t.enable(),"disable"==n.action&&t.disable(),"show"==n.action&&t.show(),"hide"==n.action&&t.hide())},getState:function(e){},initialize:function(e){var n=$(e).parent().find('script[data-for="'+e.id+'"]'),t=(n=JSON.parse(n.html())).options;t.el=e,e.value=t.default,t.appClass="pickr-color";var i=new Pickr(t);i.setColor(t.default);var a=i.getRoot();n.hasOwnProperty("width")&&(a.app.style.width=n.width),!1===t.useAsButton?(a.button.parentNode.style.display="inline",a.button.id=e.id,a.button.classList.add("pickr-color"),n.inline&&(a.button.style.display="none")):(e.style.backgroundColor=t.default,e.style.color=getCorrectTextColor(t.default),"changestop"==n.update?i.on(n.update,(function(n,t){var i=t.getColor();e.value=i.toHEXA().toString(0),e.style.backgroundColor=i.toHEXA().toString(0),e.style.color=getCorrectTextColor(i.toHEXA().toString(0))})):i.on(n.update,(function(n){e.value=n.toHEXA().toString(0),e.style.backgroundColor=n.toHEXA().toString(0),e.style.color=getCorrectTextColor(n.toHEXA().toString(0))}))),i.options.color=t.default,i.options.inline=n.inline,i.options.update=n.update,i.options.hideOnSave=n.hideOnSave,this.updateStore(e,i)},getPickr:function(e){return this.store[e.id]},getUpdate:function(e){return this.store[e.id].options.update},getHideOnSave:function(e){return this.store[e.id].options.hideOnSave},getColor:function(e){return this.store[e.id].options.color},isInline:function(e){return this.store[e.id].options.inline}}),Shiny.inputBindings.register(pickrColorBinding,"shinyWidgets.colorPickr"),Shiny.addCustomMessageHandler("update-progressBar-shinyWidgets",(function(e){var n,t=e.id,i=document.getElementById(t),a=document.getElementById(t+"-value"),r=document.getElementById(t+"-total"),o=document.getElementById(t+"-title"),s=e.total,u=Math.round(e.value);s>0?(n=Math.round(u/s*100),null!==a&&(a.innerText=e.commas?u.toLocaleString("en-US"):u),null!==r&&(r.innerText=e.commas?s.toLocaleString("en-US"):s),u=Math.round(u/s*100)):n=e.percent>0?e.percent:u,i.style.width=n+"%",""!==i.innerText&&(i.innerText=u+e.unit_mark),null!==e.status&&(i.className="",i.classList.add("progress-bar"),i.classList.add("progress-bar-"+e.status)),null!==e.title&&(o.innerText=e.title)}));var searchInputBinding=new Shiny.InputBinding;function forceIonSliderTextUpdate(e){e.$cache&&e.$cache.input?e.$cache.input.trigger("change"):console.log("Couldn't force ion slider to update")}$.extend(searchInputBinding,{find:function(e){return $(e).find(".search-text")},getId:function(e){return $(e).attr("id")},getValue:function(e){return $("#"+Shiny.$escape(e.id)+"_text").val()},setValue:function(e,n){$("#"+Shiny.$escape(e.id)+"_text").val(n)},subscribe:function(e,n){$("#"+Shiny.$escape(e.id)+"_text").on("keyup.searchInputBinding input.searchInputBinding",(function(e){13==e.keyCode&&n()})),$("#"+Shiny.$escape(e.id)+"_search").on("click",(function(e){n()})),$("#"+Shiny.$escape(e.id)+"_reset").on("click",(function(t){if("TRUE"==$("#"+Shiny.$escape(e.id)).data("reset")){var i=$("#"+Shiny.$escape(e.id)).data("reset-value");$("#"+Shiny.$escape(e.id)+"_text").val(i)}n()}))},unsubscribe:function(e){$(e).off(".searchInputBinding")},receiveMessage:function(e,n){n.hasOwnProperty("value")&&this.setValue(e,n.value),n.hasOwnProperty("label")&&$(e).parent().find('label[for="'+e.id+'"]').text(n.label),n.hasOwnProperty("placeholder")&&($("#"+e.id+"_text")[0].placeholder=n.placeholder),n.trigger&&$("#"+e.id+"_search").click(),$(e).trigger("change")},getState:function(e){return{value:this.getValue(e)}},getRatePolicy:function(){return{policy:"debounce",delay:250}}}),Shiny.inputBindings.register(searchInputBinding,"shinyWidgets.searchInput");var sliderTextBinding=new Shiny.InputBinding;$.extend(sliderTextBinding,{find:function(e){return $.fn.ionRangeSlider?$(e).find(".sw-slider-text"):[]},getType:function(e){var n=$(e).data("data-type");return"date"===n?"shiny.date":"datetime"===n&&"shiny.datetime"},getValue:function(e){var n=$(e).data("ionRangeSlider"),t=n.result,i=n.options.values;return"text"===$(e).data("data-type")?2===this._numValues(e)?[i[t.from].toString(),i[t.to].toString()]:i[t.from].toString():2===this._numValues(e)?[i[t.from],i[t.to]]:i[t.from]},setValue:function(e,n){var t=$(e),i=t.data("ionRangeSlider");t.data("immediate",!0);try{2===this._numValues(e)&&n instanceof Array?i.update({from:n[0],to:n[1]}):i.update({from:n}),forceIonSliderTextUpdate(i)}finally{t.data("immediate",!1)}},subscribe:function(e,n){$(e).on("change.sliderInputBinding",(function(t){n(!$(e).data("immediate")&&!$(e).data("animating"))}))},unsubscribe:function(e){$(e).off(".sliderInputBinding")},receiveMessage:function(e,n){var t=$(e),i=t.data("ionRangeSlider"),a={},r=i.options.values;n.hasOwnProperty("choices")&&(a.values=n.choices,r=n.choices),n.hasOwnProperty("selected")&&(2===this._numValues(e)&&n.selected instanceof Array?(a.from=r.indexOf(n.selected[0]),a.to=r.indexOf(n.selected[1])):a.from=r.indexOf(n.selected)),n.hasOwnProperty("from_fixed")&&(a.from_fixed=n.from_fixed),n.hasOwnProperty("to_fixed")&&(a.to_fixed=n.to_fixed),n.hasOwnProperty("label")&&t.parent().find('label[for="'+Shiny.$escape(e.id)+'"]').text(n.label),t.data("immediate",!0);try{i.update(a),forceIonSliderTextUpdate(i)}finally{t.data("immediate",!1)}},getRatePolicy:function(){return{policy:"debounce",delay:250}},getState:function(e){},initialize:function(e){var n={},t=$(e),i=$(e).data("swvalues");n.values=i,t.ionRangeSlider(n)},_numValues:function(e){return"double"===$(e).data("ionRangeSlider").options.type?2:1}}),Shiny.inputBindings.register(sliderTextBinding,"shiny.sliderText");var spectrumInputBinding=new Shiny.InputBinding;$.extend(spectrumInputBinding,{find:function(e){return $(e).find(".sw-spectrum")},getId:function(e){return $(e).attr("id")},getValue:function(e){return $(e).spectrum("get").toHexString()},setValue:function(e,n){$(e).spectrum("set",n)},subscribe:function(e,n){$(e).on("change",(function(e){n()}))},unsubscribe:function(e){$(e).off(".spectrumInputBinding")},receiveMessage:function(e,n){n.hasOwnProperty("value")&&this.setValue(e,n.value),$(e).trigger("change")},getState:function(e){return{value:this.getValue(e)}},initialize:function(e){var n={},t=$(e).attr("data-update-on");$(e).removeAttr("data-update-on"),"dragstop"==t&&$(e).on("dragstop.spectrum",(function(n){$(e).trigger("change")})),"move"==t&&(n.move=function(){$(e).trigger("change")}),"change"==t&&(n.change=function(){$(e).trigger("change")}),$(e).spectrum(n)},getRatePolicy:function(){return{policy:"debounce",delay:250}}}),Shiny.inputBindings.register(spectrumInputBinding,"shinyWidgets.spectrumInput");var dropMenuInputBinding=new Shiny.InputBinding;$.extend(dropMenuInputBinding,{find:function(e){return $(e).find(".drop-menu-input")},getId:function(e){return e.id},getValue:function(e){return this["instance"+e.id].state.isShown},setValue:function(e,n){},subscribe:function(e,n){var t=this["onHidden"+e.id];this["instance"+e.id].setProps({onShown:function(e){n()},onHidden:function(e){t(e),n()}})},unsubscribe:function(e){$(e).off(".dropMenuInputBinding")},receiveMessage:function(e,n){n.hasOwnProperty("action")&&("enable"==n.action&&this["instance"+e.id].enable(),"disable"==n.action&&this["instance"+e.id].disable(),"show"==n.action&&this["instance"+e.id].show(),"hide"==n.action&&this["instance"+e.id].hide())},getState:function(e){},initialize:function(e){var n=document.getElementById(e.id),t=n.querySelector('script[data-for="'+e.id+'"]');t=JSON.parse(t.innerHTML);var i=document.getElementById(n.dataset.target);t.options.interactive=!0,t.options.onShow=function(e){var t=document.getElementById(n.dataset.template);t.style.display="block",Shiny.bindAll(t,!0),e.setContent(t)},this["onHidden"+e.id]=function(e){var t=e.props.content;t.style.display="none",n.appendChild(t),e.setContent("")},this["instance"+e.id]=tippy(i,t.options)}}),Shiny.inputBindings.register(dropMenuInputBinding,"shinyWidgets.dropMenuInput");var shinyMode=void 0!==window.Shiny&&!!window.Shiny.inputBindings;if(shinyMode){var VerticalTabInputBinding=new Shiny.InputBinding;$.extend(VerticalTabInputBinding,{initialize:function(e){$(e).on("click","> *",(function(e){e.preventDefault(),$(this).siblings("a.active").removeClass("active"),$(this).addClass("active"),$(this).css("display","");var n=$(this).index();$(this).parents(".vrtc-tab-panel-container").find("div.vrtc-tab-panel>div.vrtc-tab-panel-content").removeClass("active"),$(this).parents(".vrtc-tab-panel-container").find("div.vrtc-tab-panel>div.vrtc-tab-panel-content").eq(n).addClass("active")}))},find:function(e){return $(e).find(".vertical-tab-panel")},getId:function(e){return e.id},getValue:function(e){return $(e).find(".active").attr("data-value")},setValue:function(e,n){},receiveMessage:function(e,n){var t=$(e);if(n.hasOwnProperty("value"))t.find("[data-value='"+n.value+"']").click();else if(n.hasOwnProperty("validate"))0===t.children(".active").length&&t.children().length>0&&t.children().last().click();else if(n.hasOwnProperty("reorder")){var i=t.children();i.detach(),t.append($.map(n.reorder,(function(e){return i[e-1]})))}},subscribe:function(e,n){$(e).on("click",(function(e){n()}))},unsubscribe:function(e){$(e).off(".VerticalTabInputBinding")}}),Shiny.inputBindings.register(VerticalTabInputBinding,"shinyWidgets.VerticalTabInput")}else $(document).ready((function(){$("div.vrtc-tab-panel-menu>div.list-group").on("click","> *",(function(e){e.preventDefault(),$(this).siblings("a.active").removeClass("active"),$(this).addClass("active"),$(this).css("display","");var n=$(this).index();$(this).parents(".vrtc-tab-panel-container").find("div.vrtc-tab-panel>div.vrtc-tab-panel-content").removeClass("active"),$(this).parents(".vrtc-tab-panel-container").find("div.vrtc-tab-panel>div.vrtc-tab-panel-content").eq(n).addClass("active")}))})); diff --git a/inst/examples/nouislider/update/app.R b/inst/examples/nouislider/update/app.R index 29aea320..b256bd71 100644 --- a/inst/examples/nouislider/update/app.R +++ b/inst/examples/nouislider/update/app.R @@ -100,12 +100,12 @@ server <- function(input, output, session) { output$res_updated <- renderPrint(input$to_update) observeEvent(input$update, { - updateNoUiSliderInput(session, "to_update", input$update) + updateNoUiSliderInput(session, "to_update", value = input$update) }, ignoreInit = TRUE) output$res_updated_range <- renderPrint(input$to_update_range) observeEvent(input$update_range, { - updateNoUiSliderInput(session, "to_update_range", input$update_range) + updateNoUiSliderInput(session, "to_update_range", value = input$update_range) }, ignoreInit = TRUE) diff --git a/inst/packer/nouislider.js b/inst/packer/nouislider.js new file mode 100644 index 00000000..2c7a9ec2 --- /dev/null +++ b/inst/packer/nouislider.js @@ -0,0 +1 @@ +(()=>{var t={850:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var r=n(81),i=n.n(r),o=n(645),a=n.n(o)()(i());a.push([t.id,"/* Functional styling;\n * These styles are required for noUiSlider to function.\n * You don't need to change these rules to apply your design.\n */\n.noUi-target,\n.noUi-target * {\n -webkit-touch-callout: none;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n -webkit-user-select: none;\n -ms-touch-action: none;\n touch-action: none;\n -ms-user-select: none;\n -moz-user-select: none;\n user-select: none;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n.noUi-target {\n position: relative;\n}\n.noUi-base,\n.noUi-connects {\n width: 100%;\n height: 100%;\n position: relative;\n z-index: 1;\n}\n/* Wrapper for all connect elements.\n */\n.noUi-connects {\n overflow: hidden;\n z-index: 0;\n}\n.noUi-connect,\n.noUi-origin {\n will-change: transform;\n position: absolute;\n z-index: 1;\n top: 0;\n right: 0;\n height: 100%;\n width: 100%;\n -ms-transform-origin: 0 0;\n -webkit-transform-origin: 0 0;\n -webkit-transform-style: preserve-3d;\n transform-origin: 0 0;\n transform-style: flat;\n}\n/* Offset direction\n */\n.noUi-txt-dir-rtl.noUi-horizontal .noUi-origin {\n left: 0;\n right: auto;\n}\n/* Give origins 0 height/width so they don't interfere with clicking the\n * connect elements.\n */\n.noUi-vertical .noUi-origin {\n top: -100%;\n width: 0;\n}\n.noUi-horizontal .noUi-origin {\n height: 0;\n}\n.noUi-handle {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n position: absolute;\n}\n.noUi-touch-area {\n height: 100%;\n width: 100%;\n}\n.noUi-state-tap .noUi-connect,\n.noUi-state-tap .noUi-origin {\n -webkit-transition: transform 0.3s;\n transition: transform 0.3s;\n}\n.noUi-state-drag * {\n cursor: inherit !important;\n}\n/* Slider size and handle placement;\n */\n.noUi-horizontal {\n height: 18px;\n}\n.noUi-horizontal .noUi-handle {\n width: 34px;\n height: 28px;\n right: -17px;\n top: -6px;\n}\n.noUi-vertical {\n width: 18px;\n}\n.noUi-vertical .noUi-handle {\n width: 28px;\n height: 34px;\n right: -6px;\n bottom: -17px;\n}\n.noUi-txt-dir-rtl.noUi-horizontal .noUi-handle {\n left: -17px;\n right: auto;\n}\n/* Styling;\n * Giving the connect element a border radius causes issues with using transform: scale\n */\n.noUi-target {\n background: #FAFAFA;\n border-radius: 4px;\n border: 1px solid #D3D3D3;\n box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB;\n}\n.noUi-connects {\n border-radius: 3px;\n}\n.noUi-connect {\n background: #3FB8AF;\n}\n/* Handles and cursors;\n */\n.noUi-draggable {\n cursor: ew-resize;\n}\n.noUi-vertical .noUi-draggable {\n cursor: ns-resize;\n}\n.noUi-handle {\n border: 1px solid #D9D9D9;\n border-radius: 3px;\n background: #FFF;\n cursor: default;\n box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB;\n}\n.noUi-active {\n box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #DDD, 0 3px 6px -3px #BBB;\n}\n/* Handle stripes;\n */\n.noUi-handle:before,\n.noUi-handle:after {\n content: \"\";\n display: block;\n position: absolute;\n height: 14px;\n width: 1px;\n background: #E8E7E6;\n left: 14px;\n top: 6px;\n}\n.noUi-handle:after {\n left: 17px;\n}\n.noUi-vertical .noUi-handle:before,\n.noUi-vertical .noUi-handle:after {\n width: 14px;\n height: 1px;\n left: 6px;\n top: 14px;\n}\n.noUi-vertical .noUi-handle:after {\n top: 17px;\n}\n/* Disabled state;\n */\n[disabled] .noUi-connect {\n background: #B8B8B8;\n}\n[disabled].noUi-target,\n[disabled].noUi-handle,\n[disabled] .noUi-handle {\n cursor: not-allowed;\n}\n/* Base;\n *\n */\n.noUi-pips,\n.noUi-pips * {\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n.noUi-pips {\n position: absolute;\n color: #999;\n}\n/* Values;\n *\n */\n.noUi-value {\n position: absolute;\n white-space: nowrap;\n text-align: center;\n}\n.noUi-value-sub {\n color: #ccc;\n font-size: 10px;\n}\n/* Markings;\n *\n */\n.noUi-marker {\n position: absolute;\n background: #CCC;\n}\n.noUi-marker-sub {\n background: #AAA;\n}\n.noUi-marker-large {\n background: #AAA;\n}\n/* Horizontal layout;\n *\n */\n.noUi-pips-horizontal {\n padding: 10px 0;\n height: 80px;\n top: 100%;\n left: 0;\n width: 100%;\n}\n.noUi-value-horizontal {\n -webkit-transform: translate(-50%, 50%);\n transform: translate(-50%, 50%);\n}\n.noUi-rtl .noUi-value-horizontal {\n -webkit-transform: translate(50%, 50%);\n transform: translate(50%, 50%);\n}\n.noUi-marker-horizontal.noUi-marker {\n margin-left: -1px;\n width: 2px;\n height: 5px;\n}\n.noUi-marker-horizontal.noUi-marker-sub {\n height: 10px;\n}\n.noUi-marker-horizontal.noUi-marker-large {\n height: 15px;\n}\n/* Vertical layout;\n *\n */\n.noUi-pips-vertical {\n padding: 0 10px;\n height: 100%;\n top: 0;\n left: 100%;\n}\n.noUi-value-vertical {\n -webkit-transform: translate(0, -50%);\n transform: translate(0, -50%);\n padding-left: 25px;\n}\n.noUi-rtl .noUi-value-vertical {\n -webkit-transform: translate(0, 50%);\n transform: translate(0, 50%);\n}\n.noUi-marker-vertical.noUi-marker {\n width: 5px;\n height: 2px;\n margin-top: -1px;\n}\n.noUi-marker-vertical.noUi-marker-sub {\n width: 10px;\n}\n.noUi-marker-vertical.noUi-marker-large {\n width: 15px;\n}\n.noUi-tooltip {\n display: block;\n position: absolute;\n border: 1px solid #D9D9D9;\n border-radius: 3px;\n background: #fff;\n color: #000;\n padding: 5px;\n text-align: center;\n white-space: nowrap;\n}\n.noUi-horizontal .noUi-tooltip {\n -webkit-transform: translate(-50%, 0);\n transform: translate(-50%, 0);\n left: 50%;\n bottom: 120%;\n}\n.noUi-vertical .noUi-tooltip {\n -webkit-transform: translate(0, -50%);\n transform: translate(0, -50%);\n top: 50%;\n right: 120%;\n}\n.noUi-horizontal .noUi-origin > .noUi-tooltip {\n -webkit-transform: translate(50%, 0);\n transform: translate(50%, 0);\n left: auto;\n bottom: 10px;\n}\n.noUi-vertical .noUi-origin > .noUi-tooltip {\n -webkit-transform: translate(0, -18px);\n transform: translate(0, -18px);\n top: auto;\n right: 28px;\n}\n",""]);const s=a},645:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n="",r=void 0!==e[5];return e[4]&&(n+="@supports (".concat(e[4],") {")),e[2]&&(n+="@media ".concat(e[2]," {")),r&&(n+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),n+=t(e),r&&(n+="}"),e[2]&&(n+="}"),e[4]&&(n+="}"),n})).join("")},e.i=function(t,n,r,i,o){"string"==typeof t&&(t=[[null,t,void 0]]);var a={};if(r)for(var s=0;s0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=o),n&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=n):c[2]=n),i&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=i):c[4]="".concat(i)),e.push(c))}},e}},81:t=>{"use strict";t.exports=function(t){return t[1]}},211:function(t,e){!function(t){"use strict";function e(t){return"object"==typeof t&&"function"==typeof t.to}function n(t){t.parentElement.removeChild(t)}function r(t){return null!=t}function i(t){t.preventDefault()}function o(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}function a(t,e,n){n>0&&(c(t,e),setTimeout((function(){p(t,e)}),n))}function s(t){return Math.max(Math.min(t,100),0)}function l(t){return Array.isArray(t)?t:[t]}function u(t){var e=(t=String(t)).split(".");return e.length>1?e[1].length:0}function c(t,e){t.classList&&!/\s/.test(e)?t.classList.add(e):t.className+=" "+e}function p(t,e){t.classList&&!/\s/.test(e)?t.classList.remove(e):t.className=t.className.replace(new RegExp("(^|\\b)"+e.split(" ").join("|")+"(\\b|$)","gi")," ")}function d(t){var e=void 0!==window.pageXOffset,n="CSS1Compat"===(t.compatMode||"");return{x:e?window.pageXOffset:n?t.documentElement.scrollLeft:t.body.scrollLeft,y:e?window.pageYOffset:n?t.documentElement.scrollTop:t.body.scrollTop}}function f(t,e){return 100/(e-t)}function h(t,e,n){return 100*e/(t[n+1]-t[n])}function m(t,e){for(var n=1;t>=e[n];)n+=1;return n}function g(t,e,n){if(n>=t.slice(-1)[0])return 100;var r=m(n,t),i=t[r-1],o=t[r],a=e[r-1],s=e[r];return a+function(t,e){return h(t,t[0]<0?e+Math.abs(t[0]):e-t[0],0)}([i,o],n)/f(a,s)}function v(t,e,n,r){if(100===r)return r;var i=m(r,t),o=t[i-1],a=t[i];return n?r-o>(a-o)/2?a:o:e[i-1]?t[i-1]+function(t,e){return Math.round(t/e)*e}(r-t[i-1],e[i-1]):r}var b,x;t.PipsMode=void 0,(x=t.PipsMode||(t.PipsMode={})).Range="range",x.Steps="steps",x.Positions="positions",x.Count="count",x.Values="values",t.PipsType=void 0,(b=t.PipsType||(t.PipsType={}))[b.None=-1]="None",b[b.NoValue=0]="NoValue",b[b.LargeValue=1]="LargeValue",b[b.SmallValue=2]="SmallValue";var y=function(){function t(t,e,n){var r;this.xPct=[],this.xVal=[],this.xSteps=[],this.xNumSteps=[],this.xHighestCompleteStep=[],this.xSteps=[n||!1],this.xNumSteps=[!1],this.snap=e;var i=[];for(Object.keys(t).forEach((function(e){i.push([l(t[e]),e])})),i.sort((function(t,e){return t[0][0]-e[0][0]})),r=0;rthis.xPct[i+1];)i++;else t===this.xPct[this.xPct.length-1]&&(i=this.xPct.length-2);n||t!==this.xPct[i+1]||i++,null===e&&(e=[]);var o=1,a=e[i],s=0,l=0,u=0,c=0;for(r=n?(t-this.xPct[i])/(this.xPct[i+1]-this.xPct[i]):(this.xPct[i+1]-t)/(this.xPct[i+1]-this.xPct[i]);a>0;)s=this.xPct[i+1+c]-this.xPct[i+c],e[i+c]*o+100-100*r>100?(l=s*r,o=(a-100*r)/e[i+c],r=1):(l=e[i+c]*s/100*o,o=0),n?(u-=l,this.xPct.length+c>=1&&c--):(u+=l,this.xPct.length-c>=1&&c++),a=e[i+c]*o;return t+u},t.prototype.toStepping=function(t){return g(this.xVal,this.xPct,t)},t.prototype.fromStepping=function(t){return function(t,e,n){if(n>=100)return t.slice(-1)[0];var r=m(n,e),i=t[r-1],o=t[r],a=e[r-1];return function(t,e){return e*(t[1]-t[0])/100+t[0]}([i,o],(n-a)*f(a,e[r]))}(this.xVal,this.xPct,t)},t.prototype.getStep=function(t){return v(this.xPct,this.xSteps,this.snap,t)},t.prototype.getDefaultStep=function(t,e,n){var r=m(t,this.xPct);return(100===t||e&&t===this.xPct[r-1])&&(r=Math.max(r-1,1)),(this.xVal[r]-this.xVal[r-1])/n},t.prototype.getNearbySteps=function(t){var e=m(t,this.xPct);return{stepBefore:{startValue:this.xVal[e-2],step:this.xNumSteps[e-2],highestStep:this.xHighestCompleteStep[e-2]},thisStep:{startValue:this.xVal[e-1],step:this.xNumSteps[e-1],highestStep:this.xHighestCompleteStep[e-1]},stepAfter:{startValue:this.xVal[e],step:this.xNumSteps[e],highestStep:this.xHighestCompleteStep[e]}}},t.prototype.countStepDecimals=function(){var t=this.xNumSteps.map(u);return Math.max.apply(null,t)},t.prototype.hasNoSize=function(){return this.xVal[0]===this.xVal[this.xVal.length-1]},t.prototype.convert=function(t){return this.getStep(this.toStepping(t))},t.prototype.handleEntryPoint=function(t,e){var n;if(!o(n="min"===t?0:"max"===t?100:parseFloat(t))||!o(e[0]))throw new Error("noUiSlider: 'range' value isn't numeric.");this.xPct.push(n),this.xVal.push(e[0]);var r=Number(e[1]);n?this.xSteps.push(!isNaN(r)&&r):isNaN(r)||(this.xSteps[0]=r),this.xHighestCompleteStep.push(0)},t.prototype.handleStepPoint=function(t,e){if(e)if(this.xVal[t]!==this.xVal[t+1]){this.xSteps[t]=h([this.xVal[t],this.xVal[t+1]],e,0)/f(this.xPct[t],this.xPct[t+1]);var n=(this.xVal[t+1]-this.xVal[t])/this.xNumSteps[t],r=Math.ceil(Number(n.toFixed(3))-1),i=this.xVal[t]+this.xNumSteps[t]*r;this.xHighestCompleteStep[t]=i}else this.xSteps[t]=this.xHighestCompleteStep[t]=this.xVal[t]},t}(),S={to:function(t){return void 0===t?"":t.toFixed(2)},from:Number},w={target:"target",base:"base",origin:"origin",handle:"handle",handleLower:"handle-lower",handleUpper:"handle-upper",touchArea:"touch-area",horizontal:"horizontal",vertical:"vertical",background:"background",connect:"connect",connects:"connects",ltr:"ltr",rtl:"rtl",textDirectionLtr:"txt-dir-ltr",textDirectionRtl:"txt-dir-rtl",draggable:"draggable",drag:"state-drag",tap:"state-tap",active:"active",tooltip:"tooltip",pips:"pips",pipsHorizontal:"pips-horizontal",pipsVertical:"pips-vertical",marker:"marker",markerHorizontal:"marker-horizontal",markerVertical:"marker-vertical",markerNormal:"marker-normal",markerLarge:"marker-large",markerSub:"marker-sub",value:"value",valueHorizontal:"value-horizontal",valueVertical:"value-vertical",valueNormal:"value-normal",valueLarge:"value-large",valueSub:"value-sub"},U=".__tooltips",E=".__aria";function k(t,e){if(!o(e))throw new Error("noUiSlider: 'step' is not numeric.");t.singleStep=e}function P(t,e){if(!o(e))throw new Error("noUiSlider: 'keyboardPageMultiplier' is not numeric.");t.keyboardPageMultiplier=e}function C(t,e){if(!o(e))throw new Error("noUiSlider: 'keyboardMultiplier' is not numeric.");t.keyboardMultiplier=e}function N(t,e){if(!o(e))throw new Error("noUiSlider: 'keyboardDefaultStep' is not numeric.");t.keyboardDefaultStep=e}function A(t,e){if("object"!=typeof e||Array.isArray(e))throw new Error("noUiSlider: 'range' is not an object.");if(void 0===e.min||void 0===e.max)throw new Error("noUiSlider: Missing 'min' or 'max' in 'range'.");t.spectrum=new y(e,t.snap||!1,t.singleStep)}function V(t,e){if(e=l(e),!Array.isArray(e)||!e.length)throw new Error("noUiSlider: 'start' option is incorrect.");t.handles=e.length,t.start=e}function M(t,e){if("boolean"!=typeof e)throw new Error("noUiSlider: 'snap' option must be a boolean.");t.snap=e}function z(t,e){if("boolean"!=typeof e)throw new Error("noUiSlider: 'animate' option must be a boolean.");t.animate=e}function D(t,e){if("number"!=typeof e)throw new Error("noUiSlider: 'animationDuration' option must be a number.");t.animationDuration=e}function O(t,e){var n,r=[!1];if("lower"===e?e=[!0,!1]:"upper"===e&&(e=[!1,!0]),!0===e||!1===e){for(n=1;n1)throw new Error("noUiSlider: 'padding' option must not exceed 100% of the range.")}}function j(t,e){switch(e){case"ltr":t.dir=0;break;case"rtl":t.dir=1;break;default:throw new Error("noUiSlider: 'direction' option was not recognized.")}}function H(t,e){if("string"!=typeof e)throw new Error("noUiSlider: 'behaviour' must be a string containing options.");var n=e.indexOf("tap")>=0,r=e.indexOf("drag")>=0,i=e.indexOf("fixed")>=0,o=e.indexOf("snap")>=0,a=e.indexOf("hover")>=0,s=e.indexOf("unconstrained")>=0,l=e.indexOf("drag-all")>=0,u=e.indexOf("smooth-steps")>=0;if(i){if(2!==t.handles)throw new Error("noUiSlider: 'fixed' behaviour must be used with 2 handles");T(t,t.start[1]-t.start[0])}if(s&&(t.margin||t.limit))throw new Error("noUiSlider: 'unconstrained' behaviour cannot be used with margin or limit");t.events={tap:n||o,drag:r,dragAll:l,smoothSteps:u,fixed:i,snap:o,hover:a,unconstrained:s}}function R(t,n){if(!1!==n)if(!0===n||e(n)){t.tooltips=[];for(var r=0;r= 2) required for mode 'count'.");for(var n=e.values-1,r=100/n,i=[];n--;)i[n]=n*r;return i.push(100),_(i,e.stepped)}return e.mode===t.PipsMode.Positions?_(e.values,e.stepped):e.mode===t.PipsMode.Values?e.stepped?e.values.map((function(t){return k.fromStepping(k.getStep(k.toStepping(t)))})):e.values:[]}(e),i={},o=k.xVal[0],a=k.xVal[k.xVal.length-1],s=!1,l=!1,u=0;return(n=r.slice().sort((function(t,e){return t-e})),r=n.filter((function(t){return!this[t]&&(this[t]=!0)}),{}))[0]!==o&&(r.unshift(o),s=!0),r[r.length-1]!==a&&(r.push(a),l=!0),r.forEach((function(n,o){var a,c,p,d,f,h,m,g,v,b,x=n,y=r[o+1],S=e.mode===t.PipsMode.Steps;for(S&&(a=k.xNumSteps[o]),a||(a=y-x),void 0===y&&(y=x),a=Math.max(a,1e-7),c=x;c<=y;c=Number((c+a).toFixed(7))){for(g=(f=(d=k.toStepping(c))-u)/(e.density||1),b=f/(v=Math.round(g)),p=1;p<=v;p+=1)i[(h=u+p*b).toFixed(5)]=[k.fromStepping(h),0];m=r.indexOf(c)>-1?t.PipsType.LargeValue:S?t.PipsType.SmallValue:t.PipsType.NoValue,!o&&s&&c!==y&&(m=0),c===y&&l||(i[d.toFixed(5)]=[c,m]),u=d}})),i}function X(e,n,r){var i,a,s=M.createElement("div"),l=((i={})[t.PipsType.None]="",i[t.PipsType.NoValue]=o.cssClasses.valueNormal,i[t.PipsType.LargeValue]=o.cssClasses.valueLarge,i[t.PipsType.SmallValue]=o.cssClasses.valueSub,i),u=((a={})[t.PipsType.None]="",a[t.PipsType.NoValue]=o.cssClasses.markerNormal,a[t.PipsType.LargeValue]=o.cssClasses.markerLarge,a[t.PipsType.SmallValue]=o.cssClasses.markerSub,a),p=[o.cssClasses.valueHorizontal,o.cssClasses.valueVertical],d=[o.cssClasses.markerHorizontal,o.cssClasses.markerVertical];function f(t,e){var n=e===o.cssClasses.value,r=n?l:u;return e+" "+(n?p:d)[o.ort]+" "+r[t]}return c(s,o.cssClasses.pips),c(s,0===o.ort?o.cssClasses.pipsHorizontal:o.cssClasses.pipsVertical),Object.keys(e).forEach((function(i){!function(e,i,a){if((a=n?n(i,a):a)!==t.PipsType.None){var l=F(s,!1);l.className=f(a,o.cssClasses.marker),l.style[o.style]=e+"%",a>t.PipsType.NoValue&&((l=F(s,!1)).className=f(a,o.cssClasses.value),l.setAttribute("data-value",String(i)),l.style[o.style]=e+"%",l.innerHTML=String(r.to(i)))}}(i,e[i][0],e[i][1])})),s}function Y(){g&&(n(g),g=null)}function Z(t){Y();var e=q(t),n=t.filter,r=t.format||{to:function(t){return String(Math.round(t))}};return g=w.appendChild(X(e,n,r))}function J(){var t=f.getBoundingClientRect(),e="offset"+["Width","Height"][o.ort];return 0===o.ort?t.width||f[e]:t.height||f[e]}function $(t,e,n,r){var i=function(i){var a,s,l=function(t,e,n){var r=0===t.type.indexOf("touch"),i=0===t.type.indexOf("mouse"),o=0===t.type.indexOf("pointer"),a=0,s=0;if(0===t.type.indexOf("MSPointer")&&(o=!0),"mousedown"===t.type&&!t.buttons&&!t.touches)return!1;if(r){var l=function(e){var r=e.target;return r===n||n.contains(r)||t.composed&&t.composedPath().shift()===n};if("touchstart"===t.type){var u=Array.prototype.filter.call(t.touches,l);if(u.length>1)return!1;a=u[0].pageX,s=u[0].pageY}else{var c=Array.prototype.find.call(t.changedTouches,l);if(!c)return!1;a=c.pageX,s=c.pageY}}return e=e||d(M),(i||o)&&(a=t.clientX+e.x,s=t.clientY+e.y),t.pageOffset=e,t.points=[a,s],t.cursor=i||o,t}(i,r.pageOffset,r.target||e);return!!l&&!(j()&&!r.doNotReject)&&(a=w,s=o.cssClasses.tap,!((a.classList?a.classList.contains(s):new RegExp("\\b"+s+"\\b").test(a.className))&&!r.doNotReject))&&!(t===y.start&&void 0!==l.buttons&&l.buttons>1)&&(!r.hover||!l.buttons)&&(S||l.preventDefault(),l.calcPoint=l.points[o.ort],void n(l,r))},a=[];return t.split(" ").forEach((function(t){e.addEventListener(t,i,!!S&&{passive:!0}),a.push([t,i])})),a}function G(t){var e,n,r,i,a,l,u=100*(t-(e=f,n=o.ort,r=e.getBoundingClientRect(),i=e.ownerDocument,a=i.documentElement,l=d(i),/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(l.x=0),n?r.top+l.y-a.clientTop:r.left+l.x-a.clientLeft))/J();return u=s(u),o.dir?100-u:u}function Q(t,e){"mouseout"===t.type&&"HTML"===t.target.nodeName&&null===t.relatedTarget&&tt(t,e)}function K(t,e){if(-1===navigator.appVersion.indexOf("MSIE 9")&&0===t.buttons&&0!==e.buttonsProperty)return tt(t,e);var n=(o.dir?-1:1)*(t.calcPoint-e.startCalcPoint);ut(n>0,100*n/e.baseSize,e.locations,e.handleNumbers,e.connect)}function tt(t,e){e.handle&&(p(e.handle,o.cssClasses.active),A-=1),e.listeners.forEach((function(t){z.removeEventListener(t[0],t[1])})),0===A&&(p(w,o.cssClasses.drag),pt(),t.cursor&&(D.style.cursor="",D.removeEventListener("selectstart",i))),o.events.smoothSteps&&(e.handleNumbers.forEach((function(t){dt(t,C[t],!0,!0,!1,!1)})),e.handleNumbers.forEach((function(t){at("update",t)}))),e.handleNumbers.forEach((function(t){at("change",t),at("set",t),at("end",t)}))}function et(t,e){if(!e.handleNumbers.some(H)){var n;1===e.handleNumbers.length&&(n=h[e.handleNumbers[0]].children[0],A+=1,c(n,o.cssClasses.active)),t.stopPropagation();var r=[],a=$(y.move,z,K,{target:t.target,handle:n,connect:e.connect,listeners:r,startCalcPoint:t.calcPoint,baseSize:J(),pageOffset:t.pageOffset,handleNumbers:e.handleNumbers,buttonsProperty:t.buttons,locations:C.slice()}),s=$(y.end,z,tt,{target:t.target,handle:n,listeners:r,doNotReject:!0,handleNumbers:e.handleNumbers}),l=$("mouseout",z,Q,{target:t.target,handle:n,listeners:r,doNotReject:!0,handleNumbers:e.handleNumbers});r.push.apply(r,a.concat(s,l)),t.cursor&&(D.style.cursor=getComputedStyle(t.target).cursor,h.length>1&&c(w,o.cssClasses.drag),D.addEventListener("selectstart",i,!1)),e.handleNumbers.forEach((function(t){at("start",t)}))}}function nt(t){t.stopPropagation();var e=G(t.calcPoint),n=function(t){var e=100,n=!1;return h.forEach((function(r,i){if(!H(i)){var o=C[i],a=Math.abs(o-t);(ao||100===a&&100===e)&&(n=i,e=a)}})),n}(e);!1!==n&&(o.events.snap||a(w,o.cssClasses.tap,o.animationDuration),dt(n,e,!0,!0),pt(),at("slide",n,!0),at("update",n,!0),o.events.snap?et(t,{handleNumbers:[n]}):(at("change",n,!0),at("set",n,!0)))}function rt(t){var e=G(t.calcPoint),n=k.getStep(e),r=k.fromStepping(n);Object.keys(V).forEach((function(t){"hover"===t.split(".")[0]&&V[t].forEach((function(t){t.call(bt,r)}))}))}function it(t,e){V[t]=V[t]||[],V[t].push(e),"update"===t.split(".")[0]&&h.forEach((function(t,e){at("update",e)}))}function ot(t){var e=t&&t.split(".")[0],n=e?t.substring(e.length):t;Object.keys(V).forEach((function(t){var r=t.split(".")[0],i=t.substring(r.length);e&&e!==r||n&&n!==i||function(t){return t===E||t===U}(i)&&n!==i||delete V[t]}))}function at(t,e,n){Object.keys(V).forEach((function(r){var i=r.split(".")[0];t===i&&V[r].forEach((function(t){t.call(bt,P.map(o.format.to),e,P.slice(),n||!1,C.slice(),bt)}))}))}function st(t,e,n,r,i,a,l){var u;return h.length>1&&!o.events.unconstrained&&(r&&e>0&&(u=k.getAbsoluteDistance(t[e-1],o.margin,!1),n=Math.max(n,u)),i&&e1&&o.limit&&(r&&e>0&&(u=k.getAbsoluteDistance(t[e-1],o.limit,!1),n=Math.min(n,u)),i&&e1?r.forEach((function(t,n){var r=st(a,t,a[t]+e,u[n],c[n],!1,l);!1===r?e=0:(e=r-a[t],a[t]=r)})):u=c=[!0];var p=!1;r.forEach((function(t,r){p=dt(t,n[t]+e,u[r],c[r],!1,l)||p})),p&&(r.forEach((function(t){at("update",t),at("slide",t)})),null!=i&&at("drag",s))}function ct(t,e){return o.dir?100-t-e:t}function pt(){N.forEach((function(t){var e=C[t]>50?-1:1,n=3+(h.length+e*t);h[t].style.zIndex=String(n)}))}function dt(t,e,n,r,i,a){return i||(e=st(C,t,e,n,r,!1,a)),!1!==e&&(function(t,e){C[t]=e,P[t]=k.fromStepping(e);var n="translate("+lt(ct(e,0)-O+"%","0")+")";h[t].style[o.transformRule]=n,ft(t),ft(t+1)}(t,e),!0)}function ft(t){if(m[t]){var e=0,n=100;0!==t&&(e=C[t-1]),t!==m.length-1&&(n=C[t]);var r=n-e,i="translate("+lt(ct(e,r)+"%","0")+")",a="scale("+lt(r/100,"1")+")";m[t].style[o.transformRule]=i+" "+a}}function ht(t,e){return null===t||!1===t||void 0===t?C[e]:("number"==typeof t&&(t=String(t)),!1!==(t=o.format.from(t))&&(t=k.toStepping(t)),!1===t||isNaN(t)?C[e]:t)}function mt(t,e,n){var r=l(t),i=void 0===C[0];e=void 0===e||e,o.animate&&!i&&a(w,o.cssClasses.tap,o.animationDuration),N.forEach((function(t){dt(t,ht(r[t],t),!0,!1,n)}));var s=1===N.length?0:1;if(i&&k.hasNoSize()&&(n=!0,C[0]=0,N.length>1)){var u=100/(N.length-1);N.forEach((function(t){C[t]=t*u}))}for(;sn.stepAfter.startValue&&(i=n.stepAfter.startValue-r),a=r>n.thisStep.startValue?n.thisStep.step:!1!==n.stepBefore.step&&r-n.stepBefore.highestStep,100===e?i=null:0===e&&(a=null);var s=k.countStepDecimals();return null!==i&&!1!==i&&(i=Number(i.toFixed(s))),null!==a&&!1!==a&&(a=Number(a.toFixed(s))),[a,i]}c(x=w,o.cssClasses.target),0===o.dir?c(x,o.cssClasses.ltr):c(x,o.cssClasses.rtl),0===o.ort?c(x,o.cssClasses.horizontal):c(x,o.cssClasses.vertical),c(x,"rtl"===getComputedStyle(x).direction?o.cssClasses.textDirectionRtl:o.cssClasses.textDirectionLtr),f=F(x,o.cssClasses.base),function(t,e){var n=F(e,o.cssClasses.connects);h=[],(m=[]).push(L(n,t[0]));for(var r=0;r=0&&t{"use strict";var e=[];function n(t){for(var n=-1,r=0;r{"use strict";var e={};t.exports=function(t,n){var r=function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}e[t]=n}return e[t]}(t);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(n)}},216:t=>{"use strict";t.exports=function(t){var e=document.createElement("style");return t.setAttributes(e,t.attributes),t.insert(e,t.options),e}},565:(t,e,n)=>{"use strict";t.exports=function(t){var e=n.nc;e&&t.setAttribute("nonce",e)}},795:t=>{"use strict";t.exports=function(t){var e=t.insertStyleElement(t);return{update:function(n){!function(t,e,n){var r="";n.supports&&(r+="@supports (".concat(n.supports,") {")),n.media&&(r+="@media ".concat(n.media," {"));var i=void 0!==n.layer;i&&(r+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),r+=n.css,i&&(r+="}"),n.media&&(r+="}"),n.supports&&(r+="}");var o=n.sourceMap;o&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),e.styleTagTransform(r,t,e.options)}(e,t,n)},remove:function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(e)}}}},589:t=>{"use strict";t.exports=function(t,e){if(e.styleSheet)e.styleSheet.cssText=t;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(t))}}},18:(t,e)=>{var n,r;void 0===(r="function"==typeof(n=function(){"use strict";var t=["decimals","thousand","mark","prefix","suffix","encoder","decoder","negativeBefore","negative","edit","undo"];function e(t){return t.split("").reverse().join("")}function n(t,e){return t.substring(0,e.length)===e}function r(t,e,n){if((t[e]||t[n])&&t[e]===t[n])throw new Error(e)}function i(t){return"number"==typeof t&&isFinite(t)}function o(t,n,r,o,a,s,l,u,c,p,d,f){var h,m,g,v,b,x=f,y="",S="";return s&&(f=s(f)),!!i(f)&&(!1!==t&&0===parseFloat(f.toFixed(t))&&(f=0),f<0&&(h=!0,f=Math.abs(f)),!1!==t&&(b=t,v=(v=f).toString().split("e"),f=(+((v=(v=Math.round(+(v[0]+"e"+(v[1]?+v[1]+b:b)))).toString().split("e"))[0]+"e"+(v[1]?+v[1]-b:-b))).toFixed(b)),-1!==(f=f.toString()).indexOf(".")?(g=(m=f.split("."))[0],r&&(y=r+m[1])):g=f,n&&(g=e(g).match(/.{1,3}/g),g=e(g.join(e(n)))),h&&u&&(S+=u),o&&(S+=o),h&&c&&(S+=c),S+=g,S+=y,a&&(S+=a),p&&(S=p(S,x)),S)}function a(t,e,r,o,a,s,l,u,c,p,d,f){var h,m="";return d&&(f=d(f)),!(!f||"string"!=typeof f)&&(u&&n(f,u)&&(f=f.replace(u,""),h=!0),o&&n(f,o)&&(f=f.replace(o,"")),c&&n(f,c)&&(f=f.replace(c,""),h=!0),a&&function(t,e){return t.slice(-1*e.length)===e}(f,a)&&(f=f.slice(0,-1*a.length)),e&&(f=f.split(e).join("")),r&&(f=f.replace(r,".")),h&&(m+="-"),""!==(m=(m+=f).replace(/[^0-9\.\-.]/g,""))&&(m=Number(m),l&&(m=l(m)),!!i(m)&&m))}function s(e,n,r){var i,o=[];for(i=0;i=0&&o<8))throw new Error(i);a[i]=o}else if("encoder"===i||"decoder"===i||"edit"===i||"undo"===i){if("function"!=typeof o)throw new Error(i);a[i]=o}else{if("string"!=typeof o)throw new Error(i);a[i]=o}return r(a,"mark","thousand"),r(a,"prefix","negative"),r(a,"prefix","negativeBefore"),a}(n),this.to=function(t){return s(n,o,t)},this.from=function(t){return s(n,a,t)})}})?n.apply(e,[]):n)||(t.exports=r)}},e={};function n(r){var i=e[r];if(void 0!==i)return i.exports;var o=e[r]={id:r,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{"use strict";const t=jQuery;var e=n.n(t);Shiny;var r=n(211),i=n.n(r),o=n(379),a=n.n(o),s=n(795),l=n.n(s),u=n(569),c=n.n(u),p=n(565),d=n.n(p),f=n(216),h=n.n(f),m=n(589),g=n.n(m),v=n(850),b={};b.styleTagTransform=g(),b.setAttributes=d(),b.insert=c().bind(null,"head"),b.domAPI=l(),b.insertStyleElement=h(),a()(v.Z,b),v.Z&&v.Z.locals&&v.Z.locals;var x=n(18),y=n.n(x),S=new Shiny.InputBinding;e().extend(S,{find:function(t){return e()(t).find(".sw-no-ui-slider")},getId:function(t){return t.id},getType:function(t){var n=e()(t).data("data-type");return"date"===n?"shiny.date":"datetime"===n&&"shiny.datetime"},getValue:function(t){var n,r=document.getElementById(t.id).noUiSlider.get(),i=e()(t).parent().find('script[data-for="'+Shiny.$escape(t.id)+'"]');if(void 0!==(i=JSON.parse(i.html())).format){var o=y()(i.format);n=Array.isArray(r)?r.map(o.from):o.from(r)}else n=Array.isArray(r)?r.map(Number):Number(r);return n},setValue:function(t,e){document.getElementById(t.id).noUiSlider.set(e)},subscribe:function(t,n){var r=document.getElementById(t.id);"end"==e()("#"+t.id).data("update")?(r.noUiSlider.on("change",(function(t){n()})),r.noUiSlider.on("set",(function(t){n()}))):(r.noUiSlider.on("slide",(function(t){n()})),r.noUiSlider.on("set",(function(t){n()})))},unsubscribe:function(t){e()(t).off(".noUiSliderBinding")},receiveMessage:function(t,n){if(n.hasOwnProperty("label")){var r=e()("#"+t.id+"-label");!function(t,e){if(void 0!==t){if(1!==e.length)throw new Error("labelNode must be of length 1");Array.isArray(t)&&0===t.length?e.addClass("shiny-label-null"):(e.text(t),e.removeClass("shiny-label-null"))}}(n.label,r)}var i=document.getElementById(t.id);n.disable?i.setAttribute("disabled",!0):i.removeAttribute("disabled"),n.hasOwnProperty("range")&&i.noUiSlider.updateOptions({range:{min:n.range[0],max:n.range[1]}}),i.noUiSlider.set(n.value),e()(t).trigger("change")},getRatePolicy:function(){return{policy:"debounce",delay:250}},getState:function(t){},initialize:function(t){var n=e()(t).parent().find('script[data-for="'+Shiny.$escape(t.id)+'"]');(n=JSON.parse(n.html())).hasOwnProperty("format")&&(n.format=y()(n.format)),n.hasOwnProperty("pips")&&(n.pips.hasOwnProperty("format")&&(n.pips.format=y()(n.pips.format)),n.pips.hasOwnProperty("size")&&(n.pips.filter=function(t,e){return e>0?n.pips.size:e}));var r=document.getElementById(t.id);"vertical"===n.orientation&&(r.style.margin="0 auto 30px"),i().create(r,n)}}),Shiny.inputBindings.register(S,"shinyWidgets.noUiSlider")})()})(); \ No newline at end of file diff --git a/man/noUiSliderInput.Rd b/man/noUiSliderInput.Rd index 1178cc10..3d292af4 100644 --- a/man/noUiSliderInput.Rd +++ b/man/noUiSliderInput.Rd @@ -94,23 +94,11 @@ See \code{\link[=updateNoUiSliderInput]{updateNoUiSliderInput()}} for updating s And \code{\link[=demoNoUiSlider]{demoNoUiSlider()}} for examples. } \examples{ -if (interactive()) { - -### examples ---- - -# see ?demoNoUiSlider -demoNoUiSlider("more") - - -### basic usage ---- - -library( shiny ) -library( shinyWidgets ) - +library(shiny) +library(shinyWidgets) ui <- fluidPage( - - tags$br(), + tags$h2("noUiSliderInput example"), noUiSliderInput( inputId = "noui1", @@ -129,7 +117,6 @@ ui <- fluidPage( width = "100px", height = "300px" ), verbatimTextOutput(outputId = "res2") - ) server <- function(input, output, session) { @@ -139,7 +126,6 @@ server <- function(input, output, session) { } -shinyApp(ui, server) - -} +if (interactive()) + shinyApp(ui, server) } diff --git a/package-lock.json b/package-lock.json index 0300a81a..381e3251 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,11 +15,13 @@ "dayjs": "^1.11.4", "dayjs-plugin-utc": "^0.1.2", "multi.js": "^0.5.3", + "nouislider": "^15.6.1", "style-loader": "^3.3.1", "virtual-select-plugin": "^1.0.30", "webpack": "^5.66.0", "webpack-cli": "^4.9.1", - "webpack-merge": "^5.8.0" + "webpack-merge": "^5.8.0", + "wnumb": "^1.2.0" } }, "node_modules/@discoveryjs/json-ext": { @@ -967,6 +969,12 @@ "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", "dev": true }, + "node_modules/nouislider": { + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/nouislider/-/nouislider-15.6.1.tgz", + "integrity": "sha512-1T5AfeEMGrGM87UJ+qAHvauPfCe/woOjYV/o29fp21+XgGuGpkM1Udo7mPHnidu4+cxlj35rDBWKiA6Mefemrg==", + "dev": true + }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -1669,6 +1677,12 @@ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, + "node_modules/wnumb": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/wnumb/-/wnumb-1.2.0.tgz", + "integrity": "sha512-eYut5K/dW7usfk/Mwm6nxBNoTPp/uP7PlXld+hhg7lDtHLdHFnNclywGYM9BRC7Ohd4JhwuHg+vmOUGfd3NhVA==", + "dev": true + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -2420,6 +2434,12 @@ "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", "dev": true }, + "nouislider": { + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/nouislider/-/nouislider-15.6.1.tgz", + "integrity": "sha512-1T5AfeEMGrGM87UJ+qAHvauPfCe/woOjYV/o29fp21+XgGuGpkM1Udo7mPHnidu4+cxlj35rDBWKiA6Mefemrg==", + "dev": true + }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -2885,6 +2905,12 @@ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, + "wnumb": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/wnumb/-/wnumb-1.2.0.tgz", + "integrity": "sha512-eYut5K/dW7usfk/Mwm6nxBNoTPp/uP7PlXld+hhg7lDtHLdHFnNclywGYM9BRC7Ohd4JhwuHg+vmOUGfd3NhVA==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/package.json b/package.json index 31288dee..704ceb8c 100644 --- a/package.json +++ b/package.json @@ -28,10 +28,12 @@ "dayjs": "^1.11.4", "dayjs-plugin-utc": "^0.1.2", "multi.js": "^0.5.3", + "nouislider": "^15.6.1", "style-loader": "^3.3.1", "virtual-select-plugin": "^1.0.30", "webpack": "^5.66.0", "webpack-cli": "^4.9.1", - "webpack-merge": "^5.8.0" + "webpack-merge": "^5.8.0", + "wnumb": "^1.2.0" } } diff --git a/srcjs/config/entry_points.json b/srcjs/config/entry_points.json index 2a5c96f9..ad7a447a 100644 --- a/srcjs/config/entry_points.json +++ b/srcjs/config/entry_points.json @@ -2,5 +2,6 @@ "virtual-select": "./srcjs/inputs/virtual-select.js", "air-datepicker": "./srcjs/inputs/air-datepicker.js", "multi": "./srcjs/inputs/multi.js", - "autonumeric": "./srcjs/inputs/autonumeric.js" + "autonumeric": "./srcjs/inputs/autonumeric.js", + "nouislider": "./srcjs/inputs/nouislider.js" } diff --git a/inst/assets/nouislider/nouislider-bindings.js b/srcjs/inputs/nouislider.js similarity index 94% rename from inst/assets/nouislider/nouislider-bindings.js rename to srcjs/inputs/nouislider.js index 4c380029..143a813c 100644 --- a/inst/assets/nouislider/nouislider-bindings.js +++ b/srcjs/inputs/nouislider.js @@ -1,9 +1,9 @@ -/*jshint - jquery:true -*/ -/*global noUiSlider, wNumb, Shiny, updateLabel */ - -// noUiSlider bindings by VP // +import $ from "jquery"; +import "shiny"; +import noUiSlider from "nouislider"; +import "nouislider/dist/nouislider.css"; +import wNumb from "wnumb"; +import { updateLabel } from "../modules/utils"; var noUiSliderBinding = new Shiny.InputBinding(); $.extend(noUiSliderBinding, { @@ -133,4 +133,3 @@ $.extend(noUiSliderBinding, { }); Shiny.inputBindings.register(noUiSliderBinding, "shinyWidgets.noUiSlider"); - diff --git a/srcjs/modules/utils.js b/srcjs/modules/utils.js new file mode 100644 index 00000000..39f7613e --- /dev/null +++ b/srcjs/modules/utils.js @@ -0,0 +1,14 @@ +export function updateLabel(labelTxt, labelNode) { + if (typeof labelTxt === "undefined") return; + if (labelNode.length !== 1) { + throw new Error("labelNode must be of length 1"); + } + var emptyLabel = Array.isArray(labelTxt) && labelTxt.length === 0; + if (emptyLabel) { + labelNode.addClass("shiny-label-null"); + } else { + labelNode.text(labelTxt); + labelNode.removeClass("shiny-label-null"); + } +} + diff --git a/tests/testthat/test-noUiSlider.R b/tests/testthat/test-noUiSlider.R index d36541d9..db21678e 100644 --- a/tests/testthat/test-noUiSlider.R +++ b/tests/testthat/test-noUiSlider.R @@ -11,9 +11,7 @@ test_that("default", { ) expect_is(tag, "shiny.tag") - expect_length(htmltools::findDependencies(tag), 2) - expect_identical(htmltools::findDependencies(tag)[[1]]$script, "shinyWidgets-bindings.min.js") - expect_identical(htmltools::findDependencies(tag)[[2]]$script, c("nouislider.min.js", "wNumb.js")) + expect_length(htmltools::findDependencies(tag), 1) expect_true(htmltools::tagHasAttribute(tag$children[[2]]$children[[2]], "id")) expect_identical(htmltools::tagGetAttribute(tag$children[[2]]$children[[2]], "id"), "MY_ID") })