diff --git a/NEWS.md b/NEWS.md index 054012b41..242a38782 100644 --- a/NEWS.md +++ b/NEWS.md @@ -46,7 +46,8 @@ shiny 1.3.2.9001 * Fixed [#2233](https://github.com/rstudio/shiny/issues/2233): `verbatimTextOutput()` produced wrapped text on Safari, but the text should not be wrapped. ([#2353](https://github.com/rstudio/shiny/pull/2353)) -* Fixed [#2335](https://github.com/rstudio/shiny/issues/2335): When `dateInput()`'s `value` was unspecified, and `max` and/or `min` was set to `Sys.Date()`, the value was not being set properly. ([#2526](https://github.com/rstudio/shiny/pull/2526)) +* Fixed [#2335](https://github.com/rstudio/shiny/issues/2335): When `dateInput()`'s `value` was unspecified, and `max` and/or `min` was set to `Sys.Date()`, the value was not being set properly. ([#2526](https://github.com/rstudio/shiny/pull/2526)) + * Fixed [#2591](https://github.com/rstudio/shiny/issues/2591): Providing malformed date-strings to `min` or `max` no longer results in JS errors for `dateInput()` and `dateRangeInput()`. ([#2592](https://github.com/rstudio/shiny/pull/2592)) * Fixed [rstudio/reactlog#36](https://github.com/rstudio/reactlog/issues/36): Changes to reactive values not displaying accurately in reactlog. ([#2424](https://github.com/rstudio/shiny/pull/2424)) diff --git a/inst/www/shared/shiny.js b/inst/www/shared/shiny.js index 503ae1319..21791ccc9 100644 --- a/inst/www/shared/shiny.js +++ b/inst/www/shared/shiny.js @@ -4924,6 +4924,9 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope } date = this._newDate(date); + // If date parsing fails, do nothing + if (date === null) return; + date = this._UTCDateAsLocal(date); if (isNaN(date)) return; // Workaround for https://github.com/eternicode/bootstrap-datepicker/issues/2010 @@ -4956,6 +4959,9 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope } date = this._newDate(date); + // If date parsing fails, do nothing + if (date === null) return; + date = this._UTCDateAsLocal(date); if (isNaN(date)) return; diff --git a/inst/www/shared/shiny.js.map b/inst/www/shared/shiny.js.map index 0e18fe0ce..6038c803d 100644 --- a/inst/www/shared/shiny.js.map +++ b/inst/www/shared/shiny.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../srcjs/_start.js","../../srcjs/utils.js","../../srcjs/browser.js","../../srcjs/input_rate.js","../../srcjs/shinyapp.js","../../srcjs/notifications.js","../../srcjs/modal.js","../../srcjs/file_processor.js","../../srcjs/binding_registry.js","../../srcjs/output_binding.js","../../srcjs/output_binding_text.js","../../srcjs/output_binding_image.js","../../srcjs/output_binding_html.js","../../srcjs/output_binding_downloadlink.js","../../srcjs/output_binding_datatable.js","../../srcjs/output_binding_adapter.js","../../srcjs/input_binding.js","../../srcjs/input_binding_text.js","../../srcjs/input_binding_textarea.js","../../srcjs/input_binding_password.js","../../srcjs/input_binding_number.js","../../srcjs/input_binding_checkbox.js","../../srcjs/input_binding_slider.js","../../srcjs/input_binding_date.js","../../srcjs/input_binding_daterange.js","../../srcjs/input_binding_select.js","../../srcjs/input_binding_radio.js","../../srcjs/input_binding_checkboxgroup.js","../../srcjs/input_binding_actionbutton.js","../../srcjs/input_binding_tabinput.js","../../srcjs/input_binding_fileinput.js","../../srcjs/init_shiny.js","../../srcjs/reactlog.js","../../srcjs/_end.js"],"names":[],"mappings":"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","sourcesContent":["//---------------------------------------------------------------------\n// Source file: ../srcjs/_start.js\n\n(function() {\n var $ = jQuery;\n\n var exports = window.Shiny = window.Shiny || {};\n\n exports.version = \"{{ VERSION }}\"; // Version number inserted by Grunt\n\n var origPushState = window.history.pushState;\n window.history.pushState = function() {\n var result = origPushState.apply(this, arguments);\n $(document).trigger(\"pushstate\");\n return result;\n };\n\n $(document).on('submit', 'form:not([action])', function(e) {\n e.preventDefault();\n });\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/utils.js\n\nfunction escapeHTML(str) {\n var escaped = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n \"/\": \"/\"\n };\n\n return str.replace(/[&<>'\"\\/]/g, function(m) {\n return escaped[m];\n });\n}\n\nfunction randomId() {\n return Math.floor(0x100000000 + (Math.random() * 0xF00000000)).toString(16);\n}\n\nfunction strToBool(str) {\n if (!str || !str.toLowerCase)\n return undefined;\n\n switch(str.toLowerCase()) {\n case 'true':\n return true;\n case 'false':\n return false;\n default:\n return undefined;\n }\n}\n\n// A wrapper for getComputedStyle that is compatible with older browsers.\n// This is significantly faster than jQuery's .css() function.\nfunction getStyle(el, styleProp) {\n var x;\n if (el.currentStyle)\n x = el.currentStyle[styleProp];\n else if (window.getComputedStyle) {\n // getComputedStyle can return null when we're inside a hidden iframe on\n // Firefox; don't attempt to retrieve style props in this case.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n var style = document.defaultView.getComputedStyle(el, null);\n if (style)\n x = style.getPropertyValue(styleProp);\n }\n return x;\n}\n\n// Convert a number to a string with leading zeros\nfunction padZeros(n, digits) {\n var str = n.toString();\n while (str.length < digits)\n str = \"0\" + str;\n return str;\n}\n\n// Round to a specified number of significant digits.\nfunction roundSignif(x, digits = 1) {\n if (digits < 1)\n throw \"Significant digits must be at least 1.\";\n\n // This converts to a string and back to a number, which is inelegant, but\n // is less prone to FP rounding error than an alternate method which used\n // Math.round().\n return parseFloat(x.toPrecision(digits));\n}\n\n// Take a string with format \"YYYY-MM-DD\" and return a Date object.\n// IE8 and QTWebKit don't support YYYY-MM-DD, but they support YYYY/MM/DD\nfunction parseDate(dateString) {\n var date = new Date(dateString);\n if (isNaN(date))\n date = new Date(dateString.replace(/-/g, \"/\"));\n return date;\n}\n\n// Given a Date object, return a string in yyyy-mm-dd format, using the\n// UTC date. This may be a day off from the date in the local time zone.\nfunction formatDateUTC(date) {\n if (date instanceof Date) {\n return date.getUTCFullYear() + '-' +\n padZeros(date.getUTCMonth()+1, 2) + '-' +\n padZeros(date.getUTCDate(), 2);\n\n } else {\n return null;\n }\n}\n\n\n// Given an element and a function(width, height), returns a function(). When\n// the output function is called, it calls the input function with the offset\n// width and height of the input element--but only if the size of the element\n// is non-zero and the size is different than the last time the output\n// function was called.\n//\n// Basically we are trying to filter out extraneous calls to func, so that\n// when the window size changes or whatever, we don't run resize logic for\n// elements that haven't actually changed size or aren't visible anyway.\nfunction makeResizeFilter(el, func) {\n var lastSize = {};\n return function() {\n var size = { w: el.offsetWidth, h: el.offsetHeight };\n if (size.w === 0 && size.h === 0)\n return;\n if (size.w === lastSize.w && size.h === lastSize.h)\n return;\n lastSize = size;\n func(size.w, size.h);\n };\n}\n\nvar _BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder ||\n window.MozBlobBuilder || window.MSBlobBuilder;\n\nfunction makeBlob(parts) {\n\n // Browser compatibility is a mess right now. The code as written works in\n // a variety of modern browsers, but sadly gives a deprecation warning\n // message on the console in current versions (as of this writing) of\n // Chrome.\n\n // Safari 6.0 (8536.25) on Mac OS X 10.8.1:\n // Has Blob constructor but it doesn't work with ArrayBufferView args\n\n // Google Chrome 21.0.1180.81 on Xubuntu 12.04:\n // Has Blob constructor, accepts ArrayBufferView args, accepts ArrayBuffer\n // but with a deprecation warning message\n\n // Firefox 15.0 on Xubuntu 12.04:\n // Has Blob constructor, accepts both ArrayBuffer and ArrayBufferView args\n\n // Chromium 18.0.1025.168 (Developer Build 134367 Linux) on Xubuntu 12.04:\n // No Blob constructor. Has WebKitBlobBuilder.\n\n try {\n return new Blob(parts);\n }\n catch (e) {\n var blobBuilder = new _BlobBuilder();\n $.each(parts, function(i, part) {\n blobBuilder.append(part);\n });\n return blobBuilder.getBlob();\n }\n}\n\nfunction pixelRatio() {\n if (window.devicePixelRatio) {\n return window.devicePixelRatio;\n } else {\n return 1;\n }\n}\n\n// Takes a string expression and returns a function that takes an argument.\n//\n// When the function is executed, it will evaluate that expression using\n// \"with\" on the argument value, and return the result.\nfunction scopeExprToFunc(expr) {\n /*jshint evil: true */\n var expr_escaped = expr\n .replace(/[\\\\\"']/g, '\\\\$&')\n .replace(/\\u0000/g, '\\\\0')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n // \\b has a special meaning; need [\\b] to match backspace char.\n .replace(/[\\b]/g, '\\\\b');\n\n try {\n var func = new Function(\n `with (this) {\n try {\n return (${expr});\n } catch (e) {\n console.error('Error evaluating expression: ${expr_escaped}');\n throw e;\n }\n }`\n );\n } catch (e) {\n console.error(\"Error parsing expression: \" + expr);\n throw e;\n }\n\n\n return function(scope) {\n return func.call(scope);\n };\n}\n\nfunction asArray(value) {\n if (value === null || value === undefined)\n return [];\n if ($.isArray(value))\n return value;\n return [value];\n}\n\n// We need a stable sorting algorithm for ordering\n// bindings by priority and insertion order.\nfunction mergeSort(list, sortfunc) {\n function merge(sortfunc, a, b) {\n var ia = 0;\n var ib = 0;\n var sorted = [];\n while (ia < a.length && ib < b.length) {\n if (sortfunc(a[ia], b[ib]) <= 0) {\n sorted.push(a[ia++]);\n }\n else {\n sorted.push(b[ib++]);\n }\n }\n while (ia < a.length)\n sorted.push(a[ia++]);\n while (ib < b.length)\n sorted.push(b[ib++]);\n return sorted;\n }\n\n // Don't mutate list argument\n list = list.slice(0);\n\n for (var chunkSize = 1; chunkSize < list.length; chunkSize *= 2) {\n for (var i = 0; i < list.length; i += chunkSize * 2) {\n var listA = list.slice(i, i + chunkSize);\n var listB = list.slice(i + chunkSize, i + chunkSize * 2);\n var merged = merge(sortfunc, listA, listB);\n var args = [i, merged.length];\n Array.prototype.push.apply(args, merged);\n Array.prototype.splice.apply(list, args);\n }\n }\n\n return list;\n}\n\n// Escape jQuery selector metacharacters: !\"#$%&'()*+,./:;<=>?@[\\]^`{|}~\nvar $escape = exports.$escape = function(val) {\n return val.replace(/([!\"#$%&'()*+,.\\/:;<=>?@\\[\\\\\\]^`{|}~])/g, '\\\\$1');\n};\n\n// Maps a function over an object, preserving keys. Like the mapValues\n// function from lodash.\nfunction mapValues(obj, f) {\n const newObj = {};\n for (let key in obj) {\n if (obj.hasOwnProperty(key))\n newObj[key] = f(obj[key], key, obj);\n }\n return newObj;\n}\n\n// This is does the same as Number.isNaN, but that function unfortunately does\n// not exist in any version of IE.\nfunction isnan(x) {\n return typeof(x) === 'number' && isNaN(x);\n}\n\n// Binary equality function used by the equal function.\nfunction _equal(x, y) {\n if ($.type(x) === \"object\" && $.type(y) === \"object\") {\n if (Object.keys(x).length !== Object.keys(y).length) return false;\n for (let prop in x)\n if (!y.hasOwnProperty(prop) || !_equal(x[prop], y[prop]))\n return false;\n return true;\n } else if ($.type(x) === \"array\" && $.type(y) === \"array\") {\n if (x.length !== y.length) return false;\n for (let i = 0; i < x.length; i++)\n if (!_equal(x[i], y[i])) return false;\n return true;\n } else {\n return (x === y);\n }\n}\n\n// Structural or \"deep\" equality predicate. Tests two or more arguments for\n// equality, traversing arrays and objects (as determined by $.type) as\n// necessary.\n//\n// Objects other than objects and arrays are tested for equality using ===.\nfunction equal(...args) {\n if (args.length < 2) throw new Error(\"equal requires at least two arguments.\");\n for (let i = 0; i < args.length-1; i++) {\n if (!_equal(args[i], args[i+1]))\n return false;\n }\n return true;\n};\n\n// Compare version strings like \"1.0.1\", \"1.4-2\". `op` must be a string like\n// \"==\" or \"<\".\nexports.compareVersion = function(a, op, b) {\n function versionParts(ver) {\n return (ver + \"\")\n .replace(/-/, \".\")\n .replace(/(\\.0)+[^\\.]*$/, \"\")\n .split(\".\");\n }\n\n function cmpVersion(a, b) {\n a = versionParts(a);\n b = versionParts(b);\n var len = Math.min(a.length, b.length);\n var cmp;\n\n for(var i=0; i=\") return (diff >= 0);\n else if (op === \">\") return (diff > 0);\n else if (op === \"<=\") return (diff <= 0);\n else if (op === \"<\") return (diff < 0);\n else throw `Unknown operator: ${op}`;\n};\n\n\nfunction updateLabel(labelTxt, labelNode) {\n // Only update if label was specified in the update method\n if (typeof labelTxt === \"undefined\") return;\n if (labelNode.length !== 1) {\n throw new Error(\"labelNode must be of length 1\");\n }\n\n // Should the label be empty?\n var emptyLabel = $.isArray(labelTxt) && labelTxt.length === 0;\n\n if (emptyLabel) {\n labelNode.addClass(\"shiny-label-null\");\n } else {\n labelNode.text(labelTxt);\n labelNode.removeClass(\"shiny-label-null\");\n }\n\n}\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/browser.js\n\nvar browser = (function() {\n\n var isQt = false;\n // For easy handling of Qt quirks using CSS\n if (/\\bQt\\//.test(window.navigator.userAgent)) {\n $(document.documentElement).addClass('qt');\n isQt = true;\n }\n\n // Enable special treatment for Qt 5 quirks on Linux\n if (/\\bQt\\/5/.test(window.navigator.userAgent) &&\n /Linux/.test(window.navigator.userAgent)) {\n $(document.documentElement).addClass('qt5');\n }\n\n // Detect IE information\n var isIE = (navigator.appName === 'Microsoft Internet Explorer');\n\n function getIEVersion() {\n var rv = -1;\n if (isIE) {\n var ua = navigator.userAgent;\n var re = new RegExp(\"MSIE ([0-9]{1,}[\\\\.0-9]{0,})\");\n if (re.exec(ua) !== null)\n rv = parseFloat(RegExp.$1);\n }\n return rv;\n }\n\n return {\n isQt: isQt,\n isIE: isIE,\n IEVersion: getIEVersion()\n };\n\n})();\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/input_rate.js\n\nvar Invoker = function(target, func) {\n this.target = target;\n this.func = func;\n};\n\n(function() {\n this.normalCall =\n this.immediateCall = function() {\n this.func.apply(this.target, arguments);\n };\n}).call(Invoker.prototype);\n\nvar Debouncer = function(target, func, delayMs) {\n this.target = target;\n this.func = func;\n this.delayMs = delayMs;\n\n this.timerId = null;\n this.args = null;\n};\n\n(function() {\n this.normalCall = function() {\n var self = this;\n\n this.$clearTimer();\n this.args = arguments;\n\n this.timerId = setTimeout(function() {\n // IE8 doesn't reliably clear timeout, so this additional\n // check is needed\n if (self.timerId === null)\n return;\n self.$clearTimer();\n self.$invoke();\n }, this.delayMs);\n };\n this.immediateCall = function() {\n this.$clearTimer();\n this.args = arguments;\n this.$invoke();\n };\n this.isPending = function() {\n return this.timerId !== null;\n };\n this.$clearTimer = function() {\n if (this.timerId !== null) {\n clearTimeout(this.timerId);\n this.timerId = null;\n }\n };\n this.$invoke = function() {\n this.func.apply(this.target, this.args);\n this.args = null;\n };\n}).call(Debouncer.prototype);\n\nvar Throttler = function(target, func, delayMs) {\n this.target = target;\n this.func = func;\n this.delayMs = delayMs;\n\n this.timerId = null;\n this.args = null;\n};\n\n(function() {\n this.normalCall = function() {\n var self = this;\n\n this.args = arguments;\n if (this.timerId === null) {\n this.$invoke();\n this.timerId = setTimeout(function() {\n // IE8 doesn't reliably clear timeout, so this additional\n // check is needed\n if (self.timerId === null)\n return;\n self.$clearTimer();\n if (self.args)\n self.normalCall.apply(self, self.args);\n }, this.delayMs);\n }\n };\n this.immediateCall = function() {\n this.$clearTimer();\n this.args = arguments;\n this.$invoke();\n };\n this.isPending = function() {\n return this.timerId !== null;\n };\n this.$clearTimer = function() {\n if (this.timerId !== null) {\n clearTimeout(this.timerId);\n this.timerId = null;\n }\n };\n this.$invoke = function() {\n this.func.apply(this.target, this.args);\n this.args = null;\n };\n}).call(Throttler.prototype);\n\n// Returns a debounced version of the given function.\n// Debouncing means that when the function is invoked,\n// there is a delay of `threshold` milliseconds before\n// it is actually executed, and if the function is\n// invoked again before that threshold has elapsed then\n// the clock starts over.\n//\n// For example, if a function is debounced with a\n// threshold of 1000ms, then calling it 17 times at\n// 900ms intervals will result in a single execution\n// of the underlying function, 1000ms after the 17th\n// call.\nfunction debounce(threshold, func) {\n var timerId = null;\n var self, args;\n return function() {\n self = this;\n args = arguments;\n if (timerId !== null) {\n clearTimeout(timerId);\n timerId = null;\n }\n timerId = setTimeout(function() {\n // IE8 doesn't reliably clear timeout, so this additional\n // check is needed\n if (timerId === null)\n return;\n timerId = null;\n func.apply(self, args);\n }, threshold);\n };\n}\n\n// Returns a throttled version of the given function.\n// Throttling means that the underlying function will\n// be executed no more than once every `threshold`\n// milliseconds.\n//\n// For example, if a function is throttled with a\n// threshold of 1000ms, then calling it 17 times at\n// 900ms intervals will result in something like 15\n// or 16 executions of the underlying function.\n// eslint-disable-next-line no-unused-vars\nfunction throttle(threshold, func) {\n var executionPending = false;\n var timerId = null;\n var self, args;\n\n function throttled() {\n self = null;\n args = null;\n if (timerId === null) {\n // Haven't seen a call recently. Execute now and\n // start a timer to buffer any subsequent calls.\n timerId = setTimeout(function() {\n // When time expires, clear the timer; and if\n // there has been a call in the meantime, repeat.\n timerId = null;\n if (executionPending) {\n executionPending = false;\n throttled.apply(self, args);\n }\n }, threshold);\n func.apply(this, arguments);\n }\n else {\n // Something executed recently. Don't do anything\n // except set up target/arguments to be called later\n executionPending = true;\n self = this;\n args = arguments;\n }\n }\n return throttled;\n}\n\n\n// Schedules data to be sent to shinyapp at the next setTimeout(0).\n// Batches multiple input calls into one websocket message.\nvar InputBatchSender = function(shinyapp) {\n this.shinyapp = shinyapp;\n this.timerId = null;\n this.pendingData = {};\n this.reentrant = false;\n this.lastChanceCallback = [];\n};\n(function() {\n this.setInput = function(nameType, value, opts) {\n this.pendingData[nameType] = value;\n\n if (!this.reentrant) {\n if (opts.priority === \"event\") {\n this.$sendNow();\n } else if (!this.timerId) {\n this.timerId = setTimeout(this.$sendNow.bind(this), 0);\n }\n }\n };\n\n this.$sendNow = function() {\n if (this.reentrant) {\n console.trace(\"Unexpected reentrancy in InputBatchSender!\");\n }\n\n this.reentrant = true;\n try {\n this.timerId = null;\n $.each(this.lastChanceCallback, (i, callback) => {\n callback();\n });\n var currentData = this.pendingData;\n this.pendingData = {};\n this.shinyapp.sendInput(currentData);\n } finally {\n this.reentrant = false;\n }\n };\n}).call(InputBatchSender.prototype);\n\n\nvar InputNoResendDecorator = function(target, initialValues) {\n this.target = target;\n this.lastSentValues = this.reset(initialValues);\n};\n(function() {\n this.setInput = function(nameType, value, opts) {\n const { name: inputName, inputType: inputType } = splitInputNameType(nameType);\n const jsonValue = JSON.stringify(value);\n\n if (opts.priority !== \"event\" &&\n this.lastSentValues[inputName] &&\n this.lastSentValues[inputName].jsonValue === jsonValue &&\n this.lastSentValues[inputName].inputType === inputType) {\n return;\n }\n this.lastSentValues[inputName] = { jsonValue, inputType };\n this.target.setInput(name, value, opts);\n };\n this.reset = function(values = {}) {\n // Given an object with flat name-value format:\n // { x: \"abc\", \"y.shiny.number\": 123 }\n // Create an object in cache format and save it:\n // { x: { jsonValue: '\"abc\"', inputType: \"\" },\n // y: { jsonValue: \"123\", inputType: \"shiny.number\" } }\n const cacheValues = {};\n\n for (let inputName in values) {\n if (values.hasOwnProperty(inputName)) {\n let { name, inputType } = splitInputNameType(inputName);\n cacheValues[name] = {\n jsonValue: JSON.stringify(values[inputName]),\n inputType: inputType\n };\n }\n }\n\n this.lastSentValues = cacheValues;\n };\n}).call(InputNoResendDecorator.prototype);\n\n\nvar InputEventDecorator = function(target) {\n this.target = target;\n};\n(function() {\n this.setInput = function(nameType, value, opts) {\n var evt = jQuery.Event(\"shiny:inputchanged\");\n\n const input = splitInputNameType(nameType);\n evt.name = input.name;\n evt.inputType = input.inputType;\n evt.value = value;\n evt.binding = opts.binding;\n evt.el = opts.el;\n evt.priority = opts.priority;\n\n $(opts.el).trigger(evt);\n\n if (!evt.isDefaultPrevented()) {\n name = evt.name;\n if (evt.inputType !== '') name += ':' + evt.inputType;\n\n // Most opts aren't passed along to lower levels in the input decorator\n // stack.\n this.target.setInput(name, evt.value, { priority: opts.priority });\n }\n };\n}).call(InputEventDecorator.prototype);\n\n\nvar InputRateDecorator = function(target) {\n this.target = target;\n this.inputRatePolicies = {};\n};\n(function() {\n // Note that the first argument of setInput() and setRatePolicy()\n // are passed both the input name (i.e., inputId) and type.\n // https://github.com/rstudio/shiny/blob/67d3a/srcjs/init_shiny.js#L111-L126\n // However, $ensureInit() and $doSetInput() are meant to be passed just\n // the input name (i.e., inputId), which is why we distinguish between\n // nameType and name.\n this.setInput = function(nameType, value, opts) {\n const {name: inputName} = splitInputNameType(nameType);\n\n this.$ensureInit(inputName);\n\n if (opts.priority !== \"deferred\")\n this.inputRatePolicies[inputName].immediateCall(nameType, value, opts);\n else\n this.inputRatePolicies[inputName].normalCall(nameType, value, opts);\n };\n this.setRatePolicy = function(nameType, mode, millis) {\n const {name: inputName} = splitInputNameType(nameType);\n\n if (mode === 'direct') {\n this.inputRatePolicies[inputName] = new Invoker(this, this.$doSetInput);\n }\n else if (mode === 'debounce') {\n this.inputRatePolicies[inputName] = new Debouncer(this, this.$doSetInput, millis);\n }\n else if (mode === 'throttle') {\n this.inputRatePolicies[inputName] = new Throttler(this, this.$doSetInput, millis);\n }\n };\n this.$ensureInit = function(name) {\n if (!(name in this.inputRatePolicies))\n this.setRatePolicy(name, 'direct');\n };\n this.$doSetInput = function(nameType, value, opts) {\n this.target.setInput(nameType, value, opts);\n };\n}).call(InputRateDecorator.prototype);\n\n\nvar InputDeferDecorator = function(target) {\n this.target = target;\n this.pendingInput = {};\n};\n(function() {\n this.setInput = function(nameType, value, opts) {\n if (/^\\./.test(nameType))\n this.target.setInput(nameType, value, opts);\n else\n this.pendingInput[name] = { value, opts };\n };\n this.submit = function() {\n for (var name in this.pendingInput) {\n if (this.pendingInput.hasOwnProperty(name)) {\n let input = this.pendingInput[name];\n this.target.setInput(name, input.value, input.opts);\n }\n }\n };\n}).call(InputDeferDecorator.prototype);\n\n\nconst InputValidateDecorator = function(target) {\n this.target = target;\n};\n(function() {\n this.setInput = function(nameType, value, opts) {\n if (!nameType)\n throw \"Can't set input with empty name.\";\n\n opts = addDefaultInputOpts(opts);\n\n this.target.setInput(nameType, value, opts);\n };\n}).call(InputValidateDecorator.prototype);\n\n\n// Merge opts with defaults, and return a new object.\nfunction addDefaultInputOpts(opts) {\n\n opts = $.extend({\n priority: \"immediate\",\n binding: null,\n el: null\n }, opts);\n\n if (opts && typeof(opts.priority) !== \"undefined\") {\n switch (opts.priority) {\n case \"deferred\":\n case \"immediate\":\n case \"event\":\n break;\n default:\n throw new Error(\"Unexpected input value mode: '\" + opts.priority + \"'\");\n }\n }\n\n return opts;\n}\n\n\nfunction splitInputNameType(nameType) {\n const name2 = nameType.split(':');\n return {\n name: name2[0],\n inputType: name2.length > 1 ? name2[1] : ''\n };\n}\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/shinyapp.js\n\nvar ShinyApp = function() {\n this.$socket = null;\n\n // Cached input values\n this.$inputValues = {};\n\n // Input values at initialization (and reconnect)\n this.$initialInput = {};\n\n // Output bindings\n this.$bindings = {};\n\n // Cached values/errors\n this.$values = {};\n this.$errors = {};\n\n // Conditional bindings (show/hide element based on expression)\n this.$conditionals = {};\n\n this.$pendingMessages = [];\n this.$activeRequests = {};\n this.$nextRequestId = 0;\n\n this.$allowReconnect = false;\n};\n\n(function() {\n\n this.connect = function(initialInput) {\n if (this.$socket)\n throw \"Connect was already called on this application object\";\n\n this.$socket = this.createSocket();\n this.$initialInput = initialInput;\n $.extend(this.$inputValues, initialInput);\n\n this.$updateConditionals();\n };\n\n this.isConnected = function() {\n return !!this.$socket;\n };\n\n var scheduledReconnect = null;\n this.reconnect = function() {\n // This function can be invoked directly even if there's a scheduled\n // reconnect, so be sure to clear any such scheduled reconnects.\n clearTimeout(scheduledReconnect);\n\n if (this.isConnected())\n throw \"Attempted to reconnect, but already connected.\";\n\n this.$socket = this.createSocket();\n this.$initialInput = $.extend({}, this.$inputValues);\n this.$updateConditionals();\n };\n\n this.createSocket = function () {\n var self = this;\n\n var createSocketFunc = exports.createSocket || function() {\n var protocol = 'ws:';\n if (window.location.protocol === 'https:')\n protocol = 'wss:';\n\n var defaultPath = window.location.pathname;\n // some older WebKit browsers return the pathname already decoded;\n // if we find invalid URL characters in the path, encode them\n if (!/^([$#!&-;=?-[\\]_a-z~]|%[0-9a-fA-F]{2})+$/.test(defaultPath)) {\n defaultPath = encodeURI(defaultPath);\n // Bizarrely, QtWebKit requires us to encode these characters *twice*\n if (browser.isQt) {\n defaultPath = encodeURI(defaultPath);\n }\n }\n if (!/\\/$/.test(defaultPath))\n defaultPath += '/';\n defaultPath += 'websocket/';\n\n var ws = new WebSocket(protocol + '//' + window.location.host + defaultPath);\n ws.binaryType = 'arraybuffer';\n\n return ws;\n };\n\n var socket = createSocketFunc();\n var hasOpened = false;\n socket.onopen = function() {\n hasOpened = true;\n\n $(document).trigger({\n type: 'shiny:connected',\n socket: socket\n });\n\n self.onConnected();\n\n socket.send(JSON.stringify({\n method: 'init',\n data: self.$initialInput\n }));\n\n while (self.$pendingMessages.length) {\n var msg = self.$pendingMessages.shift();\n socket.send(msg);\n }\n };\n socket.onmessage = function(e) {\n self.dispatchMessage(e.data);\n };\n // Called when a successfully-opened websocket is closed, or when an\n // attempt to open a connection fails.\n socket.onclose = function() {\n // These things are needed only if we've successfully opened the\n // websocket.\n if (hasOpened) {\n $(document).trigger({\n type: 'shiny:disconnected',\n socket: socket\n });\n\n self.$notifyDisconnected();\n }\n\n self.onDisconnected(); // Must be run before self.$removeSocket()\n self.$removeSocket();\n };\n return socket;\n };\n\n this.sendInput = function(values) {\n var msg = JSON.stringify({\n method: 'update',\n data: values\n });\n\n this.$sendMsg(msg);\n\n $.extend(this.$inputValues, values);\n this.$updateConditionals();\n };\n\n this.$notifyDisconnected = function() {\n if (window.parent) {\n window.parent.postMessage(\"disconnected\", \"*\");\n }\n };\n\n this.$removeSocket = function() {\n this.$socket = null;\n };\n\n this.$scheduleReconnect = function(delay) {\n var self = this;\n scheduledReconnect = setTimeout(function() { self.reconnect(); }, delay);\n };\n\n // How long should we wait before trying the next reconnection?\n // The delay will increase with subsequent attempts.\n // .next: Return the time to wait for next connection, and increment counter.\n // .reset: Reset the attempt counter.\n var reconnectDelay = (function() {\n var attempts = 0;\n // Time to wait before each reconnection attempt. If we go through all of\n // these values, repeated use the last one. Add 500ms to each one so that\n // in the last 0.5s, it shows \"...\"\n var delays = [1500, 1500, 2500, 2500, 5500, 5500, 10500];\n\n return {\n next: function() {\n var i = attempts;\n // Instead of going off the end, use the last one\n if (i >= delays.length) {\n i = delays.length - 1;\n }\n\n attempts++;\n return delays[i];\n },\n reset: function() {\n attempts = 0;\n }\n };\n })();\n\n this.onDisconnected = function() {\n // Add gray-out overlay, if not already present\n var $overlay = $('#shiny-disconnected-overlay');\n if ($overlay.length === 0) {\n $(document.body).append('
');\n }\n\n // To try a reconnect, both the app (this.$allowReconnect) and the\n // server (this.$socket.allowReconnect) must allow reconnections, or\n // session$allowReconnect(\"force\") was called. The \"force\" option should\n // only be used for testing.\n if ((this.$allowReconnect === true && this.$socket.allowReconnect === true) ||\n this.$allowReconnect === \"force\")\n {\n var delay = reconnectDelay.next();\n exports.showReconnectDialog(delay);\n this.$scheduleReconnect(delay);\n }\n };\n\n this.onConnected = function() {\n $('#shiny-disconnected-overlay').remove();\n exports.hideReconnectDialog();\n reconnectDelay.reset();\n };\n\n // NB: Including blobs will cause IE to break!\n // TODO: Make blobs work with Internet Explorer\n //\n // Websocket messages are normally one-way--i.e. the client passes a\n // message to the server but there is no way for the server to provide\n // a response to that specific message. makeRequest provides a way to\n // do asynchronous RPC over websocket. Each request has a method name\n // and arguments, plus optionally one or more binary blobs can be\n // included as well. The request is tagged with a unique number that\n // the server will use to label the corresponding response.\n //\n // @param method A string that tells the server what logic to run.\n // @param args An array of objects that should also be passed to the\n // server in JSON-ified form.\n // @param onSuccess A function that will be called back if the server\n // responds with success. If the server provides a value in the\n // response, the function will be called with it as the only argument.\n // @param onError A function that will be called back if the server\n // responds with error, or if the request fails for any other reason.\n // The parameter to onError will be a string describing the error.\n // @param blobs Optionally, an array of Blob, ArrayBuffer, or string\n // objects that will be made available to the server as part of the\n // request. Strings will be encoded using UTF-8.\n this.makeRequest = function(method, args, onSuccess, onError, blobs) {\n var requestId = this.$nextRequestId;\n while (this.$activeRequests[requestId]) {\n requestId = (requestId + 1) % 1000000000;\n }\n this.$nextRequestId = requestId + 1;\n\n this.$activeRequests[requestId] = {\n onSuccess: onSuccess,\n onError: onError\n };\n\n var msg = JSON.stringify({\n method: method,\n args: args,\n tag: requestId\n });\n\n if (blobs) {\n // We have binary data to transfer; form a different kind of packet.\n // Start with a 4-byte signature, then for each blob, emit 4 bytes for\n // the length followed by the blob. The json payload is UTF-8 encoded\n // and used as the first blob.\n\n var uint32_to_buf = function(val) {\n var buffer = new ArrayBuffer(4);\n var view = new DataView(buffer);\n view.setUint32(0, val, true); // little-endian\n return buffer;\n };\n\n var payload = [];\n payload.push(uint32_to_buf(0x01020202)); // signature\n\n var jsonBuf = makeBlob([msg]);\n payload.push(uint32_to_buf(jsonBuf.size));\n payload.push(jsonBuf);\n\n for (var i = 0; i < blobs.length; i++) {\n payload.push(uint32_to_buf(blobs[i].byteLength || blobs[i].size || 0));\n payload.push(blobs[i]);\n }\n\n msg = makeBlob(payload);\n }\n\n this.$sendMsg(msg);\n };\n\n this.$sendMsg = function(msg) {\n if (!this.$socket.readyState) {\n this.$pendingMessages.push(msg);\n }\n else {\n this.$socket.send(msg);\n }\n };\n\n this.receiveError = function(name, error) {\n if (this.$errors[name] === error)\n return;\n\n this.$errors[name] = error;\n delete this.$values[name];\n\n var binding = this.$bindings[name];\n var evt = jQuery.Event('shiny:error');\n evt.name = name;\n evt.error = error;\n evt.binding = binding;\n $(binding ? binding.el : document).trigger(evt);\n if (!evt.isDefaultPrevented() && binding && binding.onValueError) {\n binding.onValueError(evt.error);\n }\n };\n\n this.receiveOutput = function(name, value) {\n var binding = this.$bindings[name];\n var evt = jQuery.Event('shiny:value');\n evt.name = name;\n evt.value = value;\n evt.binding = binding;\n\n if (this.$values[name] === value) {\n $(binding ? binding.el : document).trigger(evt);\n return undefined;\n }\n\n this.$values[name] = value;\n delete this.$errors[name];\n\n $(binding ? binding.el : document).trigger(evt);\n\n if (!evt.isDefaultPrevented() && binding) {\n binding.onValueChange(evt.value);\n }\n\n return value;\n };\n\n this.bindOutput = function(id, binding) {\n if (!id)\n throw \"Can't bind an element with no ID\";\n if (this.$bindings[id])\n throw \"Duplicate binding for ID \" + id;\n this.$bindings[id] = binding;\n\n if (this.$values[id] !== undefined)\n binding.onValueChange(this.$values[id]);\n else if (this.$errors[id] !== undefined)\n binding.onValueError(this.$errors[id]);\n\n return binding;\n };\n\n this.unbindOutput = function(id, binding) {\n if (this.$bindings[id] === binding) {\n delete this.$bindings[id];\n return true;\n }\n else {\n return false;\n }\n };\n\n\n // Narrows a scopeComponent -- an input or output object -- to one constrained\n // by nsPrefix. Returns a new object with keys removed and renamed as\n // necessary.\n function narrowScopeComponent(scopeComponent, nsPrefix) {\n return Object.keys(scopeComponent)\n .filter(k => k.indexOf(nsPrefix) === 0)\n .map(k => ({[k.substring(nsPrefix.length)]: scopeComponent[k]}))\n .reduce((obj, pair) => $.extend(obj, pair),\n {});\n }\n\n // Narrows a scope -- an object with input and output \"subComponents\" -- to\n // one constrained by the nsPrefix string.\n //\n // If nsPrefix is null or empty, returns scope without modification.\n //\n // Otherwise, returns a new object with keys in subComponents removed and\n // renamed as necessary.\n function narrowScope(scope, nsPrefix) {\n return nsPrefix ? {\n input: narrowScopeComponent(scope.input, nsPrefix),\n output: narrowScopeComponent(scope.output, nsPrefix)\n } : scope;\n }\n\n this.$updateConditionals = function() {\n $(document).trigger({\n type: 'shiny:conditional'\n });\n\n var inputs = {};\n\n // Input keys use \"name:type\" format; we don't want the user to\n // have to know about the type suffix when referring to inputs.\n for (var name in this.$inputValues) {\n if (this.$inputValues.hasOwnProperty(name)) {\n var shortName = name.replace(/:.*/, '');\n inputs[shortName] = this.$inputValues[name];\n }\n }\n\n var scope = {input: inputs, output: this.$values};\n\n var conditionals = $(document).find('[data-display-if]');\n for (var i = 0; i < conditionals.length; i++) {\n var el = $(conditionals[i]);\n var condFunc = el.data('data-display-if-func');\n\n if (!condFunc) {\n var condExpr = el.attr('data-display-if');\n condFunc = scopeExprToFunc(condExpr);\n el.data('data-display-if-func', condFunc);\n }\n\n var nsPrefix = el.attr('data-ns-prefix');\n var nsScope = narrowScope(scope, nsPrefix);\n var show = condFunc(nsScope);\n var showing = el.css(\"display\") !== \"none\";\n if (show !== showing) {\n if (show) {\n el.trigger('show');\n el.show();\n el.trigger('shown');\n }\n else {\n el.trigger('hide');\n el.hide();\n el.trigger('hidden');\n }\n }\n }\n };\n\n // Message handler management functions =================================\n\n // Records insertion order of handlers. Maps number to name. This is so\n // we can dispatch messages to handlers in the order that handlers were\n // added.\n var messageHandlerOrder = [];\n // Keep track of handlers by name. Maps name to handler function.\n var messageHandlers = {};\n\n // Two categories of message handlers: those that are from Shiny, and those\n // that are added by the user. The Shiny ones handle messages in\n // msgObj.values, msgObj.errors, and so on. The user ones handle messages\n // in msgObj.custom.foo and msgObj.custom.bar.\n var customMessageHandlerOrder = [];\n var customMessageHandlers = {};\n\n // Adds Shiny (internal) message handler\n function addMessageHandler(type, handler) {\n if (messageHandlers[type]) {\n throw('handler for message of type \"' + type + '\" already added.');\n }\n if (typeof(handler) !== 'function') {\n throw('handler must be a function.');\n }\n if (handler.length !== 1) {\n throw('handler must be a function that takes one argument.');\n }\n messageHandlerOrder.push(type);\n messageHandlers[type] = handler;\n }\n\n // Adds custom message handler - this one is exposed to the user\n function addCustomMessageHandler(type, handler) {\n // Remove any previously defined handlers so that only the most recent one\n // will be called\n if (customMessageHandlers[type]) {\n var typeIdx = customMessageHandlerOrder.indexOf(type);\n if (typeIdx !== -1) {\n customMessageHandlerOrder.splice(typeIdx, 1);\n delete customMessageHandlers[type];\n }\n }\n if (typeof(handler) !== 'function') {\n throw('handler must be a function.');\n }\n if (handler.length !== 1) {\n throw('handler must be a function that takes one argument.');\n }\n\n customMessageHandlerOrder.push(type);\n customMessageHandlers[type] = handler;\n }\n\n exports.addCustomMessageHandler = addCustomMessageHandler;\n\n this.dispatchMessage = function(data) {\n var msgObj = {};\n if(typeof data === \"string\") {\n msgObj = JSON.parse(data);\n } else { // data is arraybuffer\n var len = new DataView(data,0,1).getUint8(0);\n var typedv = new DataView(data,1,len);\n var typebuf = [];\n for(var i=0; i 0) {\n var el = $obj[0];\n var evt = jQuery.Event('shiny:updateinput');\n evt.message = message[i].message;\n evt.binding = inputBinding;\n $(el).trigger(evt);\n if (!evt.isDefaultPrevented())\n inputBinding.receiveMessage(el, evt.message);\n }\n }\n });\n\n addMessageHandler('javascript', function(message) {\n /*jshint evil: true */\n eval(message);\n });\n\n addMessageHandler('console', function(message) {\n for (var i = 0; i < message.length; i++) {\n if (console.log)\n console.log(message[i]);\n }\n });\n\n addMessageHandler('progress', function(message) {\n if (message.type && message.message) {\n var handler = progressHandlers[message.type];\n if (handler)\n handler.call(this, message.message);\n }\n });\n\n addMessageHandler('notification', function(message) {\n if (message.type === 'show')\n exports.notifications.show(message.message);\n else if (message.type === 'remove')\n exports.notifications.remove(message.message);\n else\n throw('Unkown notification type: ' + message.type);\n });\n\n addMessageHandler('modal', function(message) {\n if (message.type === 'show')\n exports.modal.show(message.message);\n else if (message.type === 'remove')\n exports.modal.remove(); // For 'remove', message content isn't used\n else\n throw('Unkown modal type: ' + message.type);\n });\n\n addMessageHandler('response', function(message) {\n var requestId = message.tag;\n var request = this.$activeRequests[requestId];\n if (request) {\n delete this.$activeRequests[requestId];\n if ('value' in message)\n request.onSuccess(message.value);\n else\n request.onError(message.error);\n }\n });\n\n addMessageHandler('allowReconnect', function(message) {\n if (message === true || message === false || message === \"force\") {\n this.$allowReconnect = message;\n } else {\n throw \"Invalid value for allowReconnect: \" + message;\n }\n });\n\n addMessageHandler('custom', function(message) {\n // For old-style custom messages - should deprecate and migrate to new\n // method\n if (exports.oncustommessage) {\n exports.oncustommessage(message);\n }\n\n // Send messages.foo and messages.bar to appropriate handlers\n this._sendMessagesToHandlers(message, customMessageHandlers,\n customMessageHandlerOrder);\n });\n\n addMessageHandler('config', function(message) {\n this.config = {workerId: message.workerId, sessionId: message.sessionId};\n if (message.user) exports.user = message.user;\n $(document).trigger('shiny:sessioninitialized');\n });\n\n addMessageHandler('busy', function(message) {\n if (message === 'busy') {\n $(document.documentElement).addClass('shiny-busy');\n $(document).trigger('shiny:busy');\n } else if (message === 'idle') {\n $(document.documentElement).removeClass('shiny-busy');\n $(document).trigger('shiny:idle');\n }\n });\n\n addMessageHandler('recalculating', function(message) {\n if (message.hasOwnProperty('name') && message.hasOwnProperty('status')) {\n var binding = this.$bindings[message.name];\n $(binding ? binding.el : null).trigger({\n type: 'shiny:' + message.status\n });\n }\n });\n\n addMessageHandler('reload', function(message) {\n window.location.reload();\n });\n\n addMessageHandler('shiny-insert-ui', function(message) {\n var targets = $(message.selector);\n if (targets.length === 0) {\n // render the HTML and deps to a null target, so\n // the side-effect of rendering the deps, singletons,\n // and still occur\n console.warn('The selector you chose (\"' + message.selector +\n '\") could not be found in the DOM.');\n exports.renderHtml(message.content.html, $([]), message.content.deps);\n } else {\n targets.each(function (i, target) {\n exports.renderContent(target, message.content, message.where);\n return message.multiple;\n });\n }\n });\n\n addMessageHandler('shiny-remove-ui', function(message) {\n var els = $(message.selector);\n els.each(function (i, el) {\n exports.unbindAll(el, true);\n $(el).remove();\n // If `multiple` is false, returning false terminates the function\n // and no other elements are removed; if `multiple` is true,\n // returning true continues removing all remaining elements.\n return message.multiple;\n });\n });\n\n function getTabset(id) {\n var $tabset = $(\"#\" + $escape(id));\n if ($tabset.length === 0)\n throw \"There is no tabsetPanel (or navbarPage or navlistPanel) \" +\n \"with id equal to '\" + id + \"'\";\n return $tabset;\n }\n\n function getTabContent($tabset) {\n var tabsetId = $tabset.attr(\"data-tabsetid\");\n var $tabContent = $(\"div.tab-content[data-tabsetid='\" +\n $escape(tabsetId) + \"']\");\n return $tabContent;\n }\n\n function getTargetTabs($tabset, $tabContent, target) {\n var dataValue = \"[data-value='\" + $escape(target) + \"']\";\n var $aTag = $tabset.find(\"a\" + dataValue);\n var $liTag = $aTag.parent();\n if ($liTag.length === 0) {\n throw \"There is no tabPanel (or navbarMenu) with value\" +\n \" (or menuName) equal to '\" + target + \"'\";\n }\n var $liTags = [];\n var $divTags = [];\n\n if ($aTag.attr(\"data-toggle\") === \"dropdown\") {\n // dropdown\n var $dropdownTabset = $aTag.find(\"+ ul.dropdown-menu\");\n var dropdownId = $dropdownTabset.attr(\"data-tabsetid\");\n\n var $dropdownLiTags = $dropdownTabset.find(\"a[data-toggle='tab']\").parent(\"li\");\n $dropdownLiTags.each(function (i, el) {\n $liTags.push($(el));\n });\n var selector = \"div.tab-pane[id^='tab-\" + $escape(dropdownId) + \"']\";\n var $dropdownDivs = $tabContent.find(selector);\n $dropdownDivs.each(function (i, el) {\n $divTags.push($(el));\n });\n\n }\n else {\n // regular tab\n $divTags.push($tabContent.find(\"div\" + dataValue));\n }\n return { $liTag: $liTag, $liTags: $liTags, $divTags: $divTags };\n }\n\n addMessageHandler(\"shiny-insert-tab\", function(message) {\n var $parentTabset = getTabset(message.inputId);\n var $tabset = $parentTabset;\n var $tabContent = getTabContent($tabset);\n var tabsetId = $parentTabset.attr(\"data-tabsetid\");\n\n var $divTag = $(message.divTag.html);\n var $liTag = $(message.liTag.html);\n var $aTag = $liTag.find(\"> a\");\n\n // Unless the item is being prepended/appended, the target tab\n // must be provided\n var target = null;\n var $targetLiTag = null;\n if (message.target !== null) {\n target = getTargetTabs($tabset, $tabContent, message.target);\n $targetLiTag = target.$liTag;\n }\n\n // If the item is to be placed inside a navbarMenu (dropdown),\n // change the value of $tabset from the parent's ul tag to the\n // dropdown's ul tag\n var dropdown = getDropdown();\n if (dropdown !== null) {\n if ($aTag.attr(\"data-toggle\") === \"dropdown\")\n throw \"Cannot insert a navbarMenu inside another one\";\n $tabset = dropdown.$tabset;\n tabsetId = dropdown.id;\n }\n\n // For regular tab items, fix the href (of the li > a tag)\n // and the id (of the div tag). This does not apply to plain\n // text items (which function as dividers and headers inside\n // navbarMenus) and whole navbarMenus (since those get\n // constructed from scratch on the R side and therefore\n // there are no ids that need matching)\n if ($aTag.attr(\"data-toggle\") === \"tab\") {\n var index = getTabIndex($tabset, tabsetId);\n var tabId = \"tab-\" + tabsetId + \"-\" + index;\n $liTag.find(\"> a\").attr(\"href\", \"#\" + tabId);\n $divTag.attr(\"id\", tabId);\n }\n\n // actually insert the item into the right place\n if (message.position === \"before\") {\n if ($targetLiTag) {\n $targetLiTag.before($liTag);\n } else {\n $tabset.append($liTag);\n }\n } else if (message.position === \"after\") {\n if ($targetLiTag) {\n $targetLiTag.after($liTag);\n } else {\n $tabset.prepend($liTag);\n }\n }\n\n exports.renderContent($liTag[0], {html: $liTag.html(), deps: message.liTag.deps});\n // jcheng 2017-07-28: This next part might look a little insane versus the\n // more obvious `$tabContent.append($divTag);`, but there's a method to the\n // madness.\n //\n // 1) We need to load the dependencies, and this needs to happen before\n // any scripts in $divTag get a chance to run.\n // 2) The scripts in $divTag need to run only once.\n // 3) The contents of $divTag need to be sent through renderContent so that\n // singletons may be registered and/or obeyed, and so that inputs/outputs\n // may be bound.\n //\n // Add to these constraints these facts:\n //\n // A) The (non-jQuery) DOM manipulation functions don't cause scripts to\n // run, but the jQuery functions all do.\n // B) renderContent must be called on an element that's attached to the\n // document.\n // C) $divTag may be of length > 1 (e.g. navbarMenu). I also noticed text\n // elements consisting of just \"\\n\" being included in the nodeset of\n // $divTag.\n // D) renderContent has a bug where only position \"replace\" (the default)\n // uses the jQuery functions, so other positions like \"beforeend\" will\n // prevent child script tags from running.\n //\n // In theory the same problem exists for $liTag but since that content is\n // much less likely to include arbitrary scripts, we're skipping it.\n //\n // This code could be nicer if we didn't use renderContent, but rather the\n // lower-level functions that renderContent uses. Like if we pre-process\n // the value of message.divTag.html for singletons, we could do that, then\n // render dependencies, then do $tabContent.append($divTag).\n exports.renderContent($tabContent[0], {html: \"\", deps: message.divTag.deps}, \"beforeend\");\n $divTag.get().forEach(el => {\n // Must not use jQuery for appending el to the doc, we don't want any\n // scripts to run (since they will run when renderContent takes a crack).\n $tabContent[0].appendChild(el);\n // If `el` itself is a script tag, this approach won't work (the script\n // won't be run), since we're only sending innerHTML through renderContent\n // and not the whole tag. That's fine in this case because we control the\n // R code that generates this HTML, and we know that the element is not\n // a script tag.\n exports.renderContent(el, el.innerHTML || el.textContent);\n });\n\n if (message.select) {\n $liTag.find(\"a\").tab(\"show\");\n }\n\n /* Barbara -- August 2017\n Note: until now, the number of tabs in a tabsetPanel (or navbarPage\n or navlistPanel) was always fixed. So, an easy way to give an id to\n a tab was simply incrementing a counter. (Just like it was easy to\n give a random 4-digit number to identify the tabsetPanel). Now that\n we're introducing dynamic tabs, we must retrieve these numbers and\n fix the dummy id given to the tab in the R side -- there, we always\n set the tab id (counter dummy) to \"id\" and the tabset id to \"tsid\")\n */\n function getTabIndex($tabset, tabsetId) {\n // The 0 is to ensure this works for empty tabsetPanels as well\n var existingTabIds = [0];\n // loop through all existing tabs, find the one with highest id\n // (since this is based on a numeric counter), and increment\n $tabset.find(\"> li\").each(function() {\n var $tab = $(this).find(\"> a[data-toggle='tab']\");\n if ($tab.length > 0) {\n // remove leading url if it exists. (copy of bootstrap url stripper)\n var href = $tab.attr(\"href\").replace(/.*(?=#[^\\s]+$)/, '');\n // remove tab id to get the index\n var index = href.replace(\"#tab-\" + tabsetId + \"-\", \"\");\n existingTabIds.push(Number(index));\n }\n });\n return Math.max.apply(null, existingTabIds) + 1;\n }\n\n // Finds out if the item will be placed inside a navbarMenu\n // (dropdown). If so, returns the dropdown tabset (ul tag)\n // and the dropdown tabsetid (to be used to fix the tab ID)\n function getDropdown() {\n if (message.menuName !== null) {\n // menuName is only provided if the user wants to prepend\n // or append an item inside a navbarMenu (dropdown)\n var $dropdownATag = $(\"a.dropdown-toggle[data-value='\" +\n $escape(message.menuName) + \"']\");\n if ($dropdownATag.length === 0) {\n throw \"There is no navbarMenu with menuName equal to '\" +\n message.menuName + \"'\";\n }\n var $dropdownTabset = $dropdownATag.find(\"+ ul.dropdown-menu\");\n var dropdownId = $dropdownTabset.attr(\"data-tabsetid\");\n return { $tabset: $dropdownTabset, id: dropdownId };\n\n } else if (message.target !== null) {\n // if our item is to be placed next to a tab that is inside\n // a navbarMenu, our item will also be inside\n var $uncleTabset = $targetLiTag.parent(\"ul\");\n if ($uncleTabset.hasClass(\"dropdown-menu\")) {\n var uncleId = $uncleTabset.attr(\"data-tabsetid\");\n return { $tabset: $uncleTabset, id: uncleId };\n }\n }\n return null;\n }\n });\n\n // If the given tabset has no active tabs, select the first one\n function ensureTabsetHasVisibleTab($tabset) {\n if ($tabset.find(\"li.active\").not(\".dropdown\").length === 0) {\n // Note: destTabValue may be null. We still want to proceed\n // through the below logic and setValue so that the input\n // value for the tabset gets updated (i.e. input$tabsetId\n // should be null if there are no tabs).\n let destTabValue = getFirstTab($tabset);\n let inputBinding = $tabset.data('shiny-input-binding');\n let evt = jQuery.Event('shiny:updateinput');\n evt.binding = inputBinding;\n $tabset.trigger(evt);\n inputBinding.setValue($tabset[0], destTabValue);\n }\n }\n\n // Given a tabset ul jquery object, return the value of the first tab\n // (in document order) that's visible and able to be selected.\n function getFirstTab($ul) {\n return $ul.find(\"li:visible a[data-toggle='tab']\")\n .first()\n .attr(\"data-value\") || null;\n }\n\n function tabApplyFunction(target, func, liTags = false) {\n $.each(target, function(key, el) {\n if (key === \"$liTag\") {\n // $liTag is always just one jQuery element\n func(el);\n }\n else if (key === \"$divTags\") {\n // $divTags is always an array (even if length = 1)\n $.each(el, function(i, div) { func(div); });\n\n } else if (liTags && key === \"$liTags\") {\n // $liTags is always an array (even if length = 0)\n $.each(el, function(i, div) { func(div); });\n }\n });\n }\n\n addMessageHandler(\"shiny-remove-tab\", function(message) {\n var $tabset = getTabset(message.inputId);\n var $tabContent = getTabContent($tabset);\n var target = getTargetTabs($tabset, $tabContent, message.target);\n\n tabApplyFunction(target, removeEl);\n\n ensureTabsetHasVisibleTab($tabset);\n\n function removeEl($el) {\n exports.unbindAll($el, true);\n $el.remove();\n }\n });\n\n addMessageHandler(\"shiny-change-tab-visibility\", function(message) {\n var $tabset = getTabset(message.inputId);\n var $tabContent = getTabContent($tabset);\n var target = getTargetTabs($tabset, $tabContent, message.target);\n\n tabApplyFunction(target, changeVisibility, true);\n\n ensureTabsetHasVisibleTab($tabset);\n\n function changeVisibility($el) {\n if (message.type === \"show\") $el.css(\"display\", \"\");\n else if (message.type === \"hide\") {\n $el.hide();\n $el.removeClass(\"active\");\n }\n }\n });\n\n addMessageHandler('updateQueryString', function(message) {\n\n // leave the bookmarking code intact\n if (message.mode === \"replace\") {\n window.history.replaceState(null, null, message.queryString);\n return;\n }\n\n var what = null;\n if (message.queryString.charAt(0) === \"#\") what = \"hash\";\n else if (message.queryString.charAt(0) === \"?\") what = \"query\";\n else throw \"The 'query' string must start with either '?' \" +\n \"(to update the query string) or with '#' (to \" +\n \"update the hash).\";\n\n var path = window.location.pathname;\n var oldQS = window.location.search;\n var oldHash = window.location.hash;\n\n /* Barbara -- December 2016\n Note: we could check if the new QS and/or hash are different\n from the old one(s) and, if not, we could choose not to push\n a new state (whether or not we would replace it is moot/\n inconsequential). However, I think that it is better to\n interpret each call to `updateQueryString` as representing\n new state (even if the message.queryString is the same), so\n that check isn't even performed as of right now.\n */\n\n var relURL = path;\n if (what === \"query\") relURL += message.queryString;\n else relURL += oldQS + message.queryString; // leave old QS if it exists\n window.history.pushState(null, null, relURL);\n\n // for the case when message.queryString has both a query string\n // and a hash (`what = \"hash\"` allows us to trigger the\n // hashchange event)\n if (message.queryString.indexOf(\"#\") !== -1) what = \"hash\";\n\n // for the case when there was a hash before, but there isn't\n // any hash now (e.g. for when only the query string is updated)\n if (window.location.hash !== oldHash) what = \"hash\";\n\n // This event needs to be triggered manually because pushState() never\n // causes a hashchange event to be fired,\n if (what === \"hash\") $(document).trigger(\"hashchange\");\n });\n\n addMessageHandler(\"resetBrush\", function(message) {\n exports.resetBrush(message.brushId);\n });\n\n // Progress reporting ====================================================\n\n var progressHandlers = {\n // Progress for a particular object\n binding: function(message) {\n var key = message.id;\n var binding = this.$bindings[key];\n if (binding) {\n $(binding.el).trigger({\n type: 'shiny:outputinvalidated',\n binding: binding,\n name: key\n });\n if (binding.showProgress) binding.showProgress(true);\n }\n },\n\n // Open a page-level progress bar\n open: function(message) {\n if (message.style === \"notification\") {\n // For new-style (starting in Shiny 0.14) progress indicators that use\n // the notification API.\n\n // Progress bar starts hidden; will be made visible if a value is provided\n // during updates.\n exports.notifications.show({\n html:\n `
` +\n '
' +\n '
' +\n 'message ' +\n '' +\n '
' +\n '
',\n id: message.id,\n duration: null\n });\n\n } else if (message.style === \"old\") {\n // For old-style (Shiny <=0.13.2) progress indicators.\n\n // Add progress container (for all progress items) if not already present\n var $container = $('.shiny-progress-container');\n if ($container.length === 0) {\n $container = $('
');\n $(document.body).append($container);\n }\n\n // Add div for just this progress ID\n var depth = $('.shiny-progress.open').length;\n // The 'bar' class is needed for backward compatibility with Bootstrap 2.\n var $progress = $('
' +\n '
' +\n '
' +\n 'message' +\n '' +\n '
' +\n '
'\n );\n\n $progress.attr('id', message.id);\n $container.append($progress);\n\n // Stack bars\n var $progressBar = $progress.find('.progress');\n $progressBar.css('top', depth * $progressBar.height() + 'px');\n\n // Stack text objects\n var $progressText = $progress.find('.progress-text');\n $progressText.css('top', 3 * $progressBar.height() +\n depth * $progressText.outerHeight() + 'px');\n\n $progress.hide();\n }\n\n },\n\n // Update page-level progress bar\n update: function(message) {\n if (message.style === \"notification\") {\n // For new-style (starting in Shiny 0.14) progress indicators that use\n // the notification API.\n var $progress = $('#shiny-progress-' + message.id);\n\n if ($progress.length === 0)\n return;\n\n if (typeof(message.message) !== 'undefined') {\n $progress.find('.progress-message').text(message.message);\n }\n if (typeof(message.detail) !== 'undefined') {\n $progress.find('.progress-detail').text(message.detail);\n }\n if (typeof(message.value) !== 'undefined' && message.value !== null) {\n $progress.find('.progress').show();\n $progress.find('.progress-bar').width((message.value*100) + '%');\n }\n\n } else if (message.style === \"old\") {\n // For old-style (Shiny <=0.13.2) progress indicators.\n\n var $progress = $('#' + message.id + '.shiny-progress');\n if (typeof(message.message) !== 'undefined') {\n $progress.find('.progress-message').text(message.message);\n }\n if (typeof(message.detail) !== 'undefined') {\n $progress.find('.progress-detail').text(message.detail);\n }\n if (typeof(message.value) !== 'undefined' && message.value !== null) {\n $progress.find('.progress').show();\n $progress.find('.bar').width((message.value*100) + '%');\n }\n\n $progress.fadeIn();\n }\n\n },\n\n // Close page-level progress bar\n close: function(message) {\n if (message.style === \"notification\") {\n exports.notifications.remove(message.id);\n\n } else if (message.style === \"old\") {\n var $progress = $('#' + message.id + '.shiny-progress');\n $progress.removeClass('open');\n\n $progress.fadeOut({\n complete: function() {\n $progress.remove();\n\n // If this was the last shiny-progress, remove container\n if ($('.shiny-progress').length === 0)\n $('.shiny-progress-container').remove();\n }\n });\n }\n }\n };\n\n exports.progressHandlers = progressHandlers;\n\n // Returns a URL which can be queried to get values from inside the server\n // function. This is enabled with `options(shiny.testmode=TRUE)`.\n this.getTestSnapshotBaseUrl = function({ fullUrl = true } = {})\n {\n const loc = window.location;\n let url = \"\";\n\n if (fullUrl) {\n // Strip off everything after last slash in path, like dirname() in R\n url = loc.origin + loc.pathname.replace(/\\/[^/]*$/, \"\");\n }\n url += \"/session/\" +\n encodeURIComponent(this.config.sessionId) +\n \"/dataobj/shinytest?w=\" +\n encodeURIComponent(this.config.workerId) +\n \"&nonce=\" + randomId();\n\n return url;\n };\n\n}).call(ShinyApp.prototype);\n\n\n\nexports.showReconnectDialog = (function() {\n var reconnectTime = null;\n\n function updateTime() {\n var $time = $(\"#shiny-reconnect-time\");\n // If the time has been removed, exit and don't reschedule this function.\n if ($time.length === 0) return;\n\n var seconds = Math.floor((reconnectTime - new Date().getTime()) / 1000);\n if (seconds > 0) {\n $time.text(\" in \" + seconds + \"s\");\n } else {\n $time.text(\"...\");\n }\n\n // Reschedule this function after 1 second\n setTimeout(updateTime, 1000);\n }\n\n\n return function(delay) {\n reconnectTime = new Date().getTime() + delay;\n\n // If there's already a reconnect dialog, don't add another\n if ($('#shiny-reconnect-text').length > 0)\n return;\n\n var html = 'Attempting to reconnect' +\n '';\n var action = 'Try now';\n\n exports.notifications.show({\n id: \"reconnect\",\n html: html,\n action: action,\n duration: null,\n closeButton: false,\n type: 'warning'\n });\n\n updateTime();\n };\n})();\n\nexports.hideReconnectDialog = function() {\n exports.notifications.remove(\"reconnect\");\n};\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/notifications.js\n\nexports.notifications = (function() {\n\n // Milliseconds to fade in or out\n const fadeDuration = 250;\n\n function show({ html='', action='', deps=[], duration=5000,\n id=null, closeButton=true, type=null } = {})\n {\n if (!id)\n id = randomId();\n\n // Create panel if necessary\n _createPanel();\n\n // Get existing DOM element for this ID, or create if needed.\n let $notification = _get(id);\n if ($notification.length === 0)\n $notification = _create(id);\n\n // Render html and dependencies\n const newHtml = `
${html}
` +\n `
${action}
`;\n const $content = $notification.find('.shiny-notification-content');\n exports.renderContent($content, { html: newHtml, deps: deps });\n\n // Remove any existing classes of the form 'shiny-notification-xxxx'.\n // The xxxx would be strings like 'warning'.\n const classes = $notification.attr('class')\n .split(/\\s+/)\n .filter(cls => cls.match(/^shiny-notification-/))\n .join(' ');\n $notification.removeClass(classes);\n\n // Add class. 'default' means no additional CSS class.\n if (type && type !== 'default')\n $notification.addClass('shiny-notification-' + type);\n\n\n // Make sure that the presence/absence of close button matches with value\n // of `closeButton`.\n const $close = $notification.find('.shiny-notification-close');\n if (closeButton && $close.length === 0) {\n $notification.append('
×
');\n } else if (!closeButton && $close.length !== 0) {\n $close.remove();\n }\n\n // If duration was provided, schedule removal. If not, clear existing\n // removal callback (this happens if a message was first added with\n // a duration, and then updated with no duration).\n if (duration)\n _addRemovalCallback(id, duration);\n else\n _clearRemovalCallback(id);\n\n return id;\n }\n\n function remove(id) {\n _get(id).fadeOut(fadeDuration, function() {\n\n exports.unbindAll(this);\n $(this).remove();\n\n // If no more notifications, remove the panel from the DOM.\n if (_ids().length === 0) {\n _getPanel().remove();\n }\n });\n }\n\n // Returns an individual notification DOM object (wrapped in jQuery).\n function _get(id) {\n if (!id)\n return null;\n return _getPanel().find('#shiny-notification-' + $escape(id));\n }\n\n // Return array of all notification IDs\n function _ids() {\n return _getPanel()\n .find('.shiny-notification')\n .map(function() { return this.id.replace(/shiny-notification-/, ''); })\n .get();\n }\n\n // Returns the notification panel DOM object (wrapped in jQuery).\n function _getPanel() {\n return $('#shiny-notification-panel');\n }\n\n // Create notifications panel and return the jQuery object. If the DOM\n // element already exists, just return it.\n function _createPanel() {\n let $panel = _getPanel();\n\n if ($panel.length > 0)\n return $panel;\n\n $(document.body).append('
');\n\n return $panel;\n }\n\n // Create a notification DOM element and return the jQuery object. If the\n // DOM element already exists for the ID, just return it without creating.\n function _create(id) {\n let $notification = _get(id);\n\n if ($notification.length === 0) {\n $notification = $(\n `
` +\n '
×
' +\n '
' +\n '
'\n );\n\n $notification.find('.shiny-notification-close').on('click', e => {\n e.preventDefault();\n e.stopPropagation();\n remove(id);\n });\n\n _getPanel().append($notification);\n }\n\n return $notification;\n }\n\n // Add a callback to remove a notification after a delay in ms.\n function _addRemovalCallback(id, delay) {\n // If there's an existing removalCallback, clear it before adding the new\n // one.\n _clearRemovalCallback(id);\n\n // Attach new removal callback\n const removalCallback = setTimeout(function() { remove(id); }, delay);\n _get(id).data('removalCallback', removalCallback);\n }\n\n // Clear a removal callback from a notification, if present.\n function _clearRemovalCallback(id) {\n const $notification = _get(id);\n const oldRemovalCallback = $notification.data('removalCallback');\n if (oldRemovalCallback) {\n clearTimeout(oldRemovalCallback);\n }\n }\n\n return {\n show,\n remove\n };\n})();\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/modal.js\n\nexports.modal = {\n\n // Show a modal dialog. This is meant to handle two types of cases: one is\n // that the content is a Bootstrap modal dialog, and the other is that the\n // content is non-Bootstrap. Bootstrap modals require some special handling,\n // which is coded in here.\n show: function({ html='', deps=[] } = {}) {\n\n // If there was an existing Bootstrap modal, then there will be a modal-\n // backdrop div that was added outside of the modal wrapper, and it must be\n // removed; otherwise there can be multiple of these divs.\n $('.modal-backdrop').remove();\n\n // Get existing wrapper DOM element, or create if needed.\n let $modal = $('#shiny-modal-wrapper');\n if ($modal.length === 0) {\n $modal = $('
');\n $(document.body).append($modal);\n\n // If the wrapper's content is a Bootstrap modal, then when the inner\n // modal is hidden, remove the entire thing, including wrapper.\n $modal.on('hidden.bs.modal', function(e) {\n if (e.target === $(\"#shiny-modal\")[0]) {\n exports.unbindAll($modal);\n $modal.remove();\n }\n });\n }\n\n $modal.on('keydown.shinymodal', function(e) {\n // If we're listening for Esc, don't let the event propagate. See\n // https://github.com/rstudio/shiny/issues/1453. The value of\n // data(\"keyboard\") needs to be checked inside the handler, because at\n // the time that $modal.on() is called, the $(\"#shiny-modal\") div doesn't\n // yet exist.\n if ($(\"#shiny-modal\").data(\"keyboard\") === false)\n return;\n\n if (e.keyCode === 27) {\n e.stopPropagation();\n e.preventDefault();\n }\n });\n\n // Set/replace contents of wrapper with html.\n exports.renderContent($modal, { html: html, deps: deps });\n },\n\n remove: function() {\n const $modal = $('#shiny-modal-wrapper');\n\n $modal.off('keydown.shinymodal');\n\n // Look for a Bootstrap modal and if present, trigger hide event. This will\n // trigger the hidden.bs.modal callback that we set in show(), which unbinds\n // and removes the element.\n if ($modal.find('.modal').length > 0) {\n $modal.find('.modal').modal('hide');\n\n } else {\n // If not a Bootstrap modal dialog, simply unbind and remove it.\n exports.unbindAll($modal);\n $modal.remove();\n }\n }\n};\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/file_processor.js\n\n// Generic driver class for doing chunk-wise asynchronous processing of a\n// FileList object. Subclass/clone it and override the `on*` functions to\n// make it do something useful.\nvar FileProcessor = function(files) {\n this.files = files;\n this.fileIndex = -1;\n // Currently need to use small chunk size because R-Websockets can't\n // handle continuation frames\n this.aborted = false;\n this.completed = false;\n\n // TODO: Register error/abort callbacks\n\n this.$run();\n};\n(function() {\n // Begin callbacks. Subclassers/cloners may override any or all of these.\n this.onBegin = function(files, cont) {\n setTimeout(cont, 0);\n };\n this.onFile = function(file, cont) {\n setTimeout(cont, 0);\n };\n this.onComplete = function() {\n };\n this.onAbort = function() {\n };\n // End callbacks\n\n // Aborts processing, unless it's already completed\n this.abort = function() {\n if (this.completed || this.aborted)\n return;\n\n this.aborted = true;\n this.onAbort();\n };\n\n // Returns a bound function that will call this.$run one time.\n this.$getRun = function() {\n var self = this;\n var called = false;\n return function() {\n if (called)\n return;\n called = true;\n self.$run();\n };\n };\n\n // This function will be called multiple times to advance the process.\n // It relies on the state of the object's fields to know what to do next.\n this.$run = function() {\n\n if (this.aborted || this.completed)\n return;\n\n if (this.fileIndex < 0) {\n // Haven't started yet--begin\n this.fileIndex = 0;\n this.onBegin(this.files, this.$getRun());\n return;\n }\n\n if (this.fileIndex === this.files.length) {\n // Just ended\n this.completed = true;\n this.onComplete();\n return;\n }\n\n // If we got here, then we have a file to process, or we are\n // in the middle of processing a file, or have just finished\n // processing a file.\n\n var file = this.files[this.fileIndex++];\n this.onFile(file, this.$getRun());\n };\n}).call(FileProcessor.prototype);\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/binding_registry.js\n\nvar BindingRegistry = function() {\n this.bindings = [];\n this.bindingNames = {};\n};\n(function() {\n this.register = function(binding, bindingName, priority) {\n var bindingObj = {binding: binding, priority: priority || 0};\n this.bindings.unshift(bindingObj);\n if (bindingName) {\n this.bindingNames[bindingName] = bindingObj;\n binding.name = bindingName;\n }\n };\n this.setPriority = function(bindingName, priority) {\n var bindingObj = this.bindingNames[bindingName];\n if (!bindingObj)\n throw \"Tried to set priority on unknown binding \" + bindingName;\n bindingObj.priority = priority || 0;\n };\n this.getPriority = function(bindingName) {\n var bindingObj = this.bindingNames[bindingName];\n if (!bindingObj)\n return false;\n return bindingObj.priority;\n };\n this.getBindings = function() {\n // Sort the bindings. The ones with higher priority are consulted\n // first; ties are broken by most-recently-registered.\n return mergeSort(this.bindings, function(a, b) {\n return b.priority - a.priority;\n });\n };\n}).call(BindingRegistry.prototype);\n\n\nvar inputBindings = exports.inputBindings = new BindingRegistry();\nvar outputBindings = exports.outputBindings = new BindingRegistry();\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/output_binding.js\n\nvar OutputBinding = exports.OutputBinding = function() {};\n(function() {\n // Returns a jQuery object or element array that contains the\n // descendants of scope that match this binding\n this.find = function(scope) { throw \"Not implemented\"; };\n\n this.getId = function(el) {\n return el['data-input-id'] || el.id;\n };\n\n this.onValueChange = function(el, data) {\n this.clearError(el);\n this.renderValue(el, data);\n };\n this.onValueError = function(el, err) {\n this.renderError(el, err);\n };\n this.renderError = function(el, err) {\n this.clearError(el);\n if (err.message === '') {\n // not really error, but we just need to wait (e.g. action buttons)\n $(el).empty();\n return;\n }\n var errClass = 'shiny-output-error';\n if (err.type !== null) {\n // use the classes of the error condition as CSS class names\n errClass = errClass + ' ' + $.map(asArray(err.type), function(type) {\n return errClass + '-' + type;\n }).join(' ');\n }\n $(el).addClass(errClass).text(err.message);\n };\n this.clearError = function(el) {\n $(el).attr('class', function(i, c) {\n return c.replace(/(^|\\s)shiny-output-error\\S*/g, '');\n });\n };\n this.showProgress = function(el, show) {\n var RECALC_CLASS = 'recalculating';\n if (show)\n $(el).addClass(RECALC_CLASS);\n else\n $(el).removeClass(RECALC_CLASS);\n };\n}).call(OutputBinding.prototype);\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/output_binding_text.js\n\nvar textOutputBinding = new OutputBinding();\n$.extend(textOutputBinding, {\n find: function(scope) {\n return $(scope).find('.shiny-text-output');\n },\n renderValue: function(el, data) {\n $(el).text(data);\n }\n});\noutputBindings.register(textOutputBinding, 'shiny.textOutput');\n\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/output_binding_image.js\n\nvar imageOutputBinding = new OutputBinding();\n$.extend(imageOutputBinding, {\n find: function(scope) {\n return $(scope).find('.shiny-image-output, .shiny-plot-output');\n },\n renderValue: function(el, data) {\n // The overall strategy:\n // * Clear out existing image and event handlers.\n // * Create new image.\n // * Create various event handlers.\n // * Bind those event handlers to events.\n // * Insert the new image.\n\n var outputId = this.getId(el);\n\n var $el = $(el);\n var img;\n\n // Get existing img element if present.\n var $img = $el.find('img');\n\n if ($img.length === 0) {\n // If a img element is not already present, that means this is either\n // the first time renderValue() has been called, or this is after an\n // error.\n img = document.createElement('img');\n $el.append(img);\n $img = $(img);\n } else {\n // Trigger custom 'reset' event for any existing images in the div\n img = $img[0];\n $img.trigger('reset');\n }\n\n if (!data) {\n $el.empty();\n return;\n }\n\n // If value is undefined, return alternate. Sort of like ||, except it won't\n // return alternate for other falsy values (0, false, null).\n function OR(value, alternate) {\n if (value === undefined) return alternate;\n return value;\n }\n\n var opts = {\n clickId: $el.data('click-id'),\n clickClip: OR(strToBool($el.data('click-clip')), true),\n\n dblclickId: $el.data('dblclick-id'),\n dblclickClip: OR(strToBool($el.data('dblclick-clip')), true),\n dblclickDelay: OR($el.data('dblclick-delay'), 400),\n\n hoverId: $el.data('hover-id'),\n hoverClip: OR(strToBool($el.data('hover-clip')), true),\n hoverDelayType: OR($el.data('hover-delay-type'), 'debounce'),\n hoverDelay: OR($el.data('hover-delay'), 300),\n hoverNullOutside: OR(strToBool($el.data('hover-null-outside')), false),\n\n brushId: $el.data('brush-id'),\n brushClip: OR(strToBool($el.data('brush-clip')), true),\n brushDelayType: OR($el.data('brush-delay-type'), 'debounce'),\n brushDelay: OR($el.data('brush-delay'), 300),\n brushFill: OR($el.data('brush-fill'), '#666'),\n brushStroke: OR($el.data('brush-stroke'), '#000'),\n brushOpacity: OR($el.data('brush-opacity'), 0.3),\n brushDirection: OR($el.data('brush-direction'), 'xy'),\n brushResetOnNew: OR(strToBool($el.data('brush-reset-on-new')), false),\n\n coordmap: data.coordmap\n };\n\n // Copy items from data to img. Don't set the coordmap as an attribute.\n $.each(data, function(key, value) {\n if (value === null || key === 'coordmap') {\n return;\n }\n // this checks only against base64 encoded src values\n // images put here are only from renderImage and renderPlot\n if (key === \"src\" && value === img.getAttribute(\"src\")) {\n // Ensure the browser actually fires an onLoad event, which doesn't\n // happen on WebKit if the value we set on src is the same as the\n // value it already has\n // https://github.com/rstudio/shiny/issues/2197\n // https://stackoverflow.com/questions/5024111/javascript-image-onload-doesnt-fire-in-webkit-if-loading-same-image\n img.removeAttribute(\"src\");\n }\n img.setAttribute(key, value);\n });\n\n // Unset any attributes in the current img that were not provided in the\n // new data.\n for (var i=0; i max)\n newval = max;\n else if (newval < min)\n newval = min;\n }\n return newval;\n }\n\n // Create scale and inverse-scale functions for a single direction (x or y).\n function scaler1D(domainMin, domainMax, rangeMin, rangeMax, logbase) {\n return {\n scale: function(val, clip) {\n if (logbase)\n val = Math.log(val) / Math.log(logbase);\n return mapLinear(val, domainMin, domainMax, rangeMin, rangeMax, clip);\n },\n\n scaleInv: function(val, clip) {\n var res = mapLinear(val, rangeMin, rangeMax, domainMin, domainMax, clip);\n if (logbase)\n res = Math.pow(logbase, res);\n return res;\n }\n };\n }\n\n // Modify panel, adding scale and inverse-scale functions that take objects\n // like {x:1, y:3}, and also add clip function.\n function addScaleFuns(panel) {\n var d = panel.domain;\n var r = panel.range;\n var xlog = (panel.log && panel.log.x) ? panel.log.x : null;\n var ylog = (panel.log && panel.log.y) ? panel.log.y : null;\n var xscaler = scaler1D(d.left, d.right, r.left, r.right, xlog);\n var yscaler = scaler1D(d.bottom, d.top, r.bottom, r.top, ylog);\n\n // Given an object of form {x:1, y:2}, or {x:1, xmin:2:, ymax: 3}, convert\n // from data coordinates to img. Whether a value is converted as x or y\n // depends on the first character of the key.\n panel.scaleDataToImg = function(val, clip) {\n return mapValues(val, (value, key) => {\n const prefix = key.substring(0, 1);\n if (prefix === \"x\") {\n return xscaler.scale(value, clip);\n } else if (prefix === \"y\") {\n return yscaler.scale(value, clip);\n }\n return null;\n });\n };\n\n panel.scaleImgToData = function(val, clip) {\n return mapValues(val, (value, key) => {\n const prefix = key.substring(0, 1);\n if (prefix === \"x\") {\n return xscaler.scaleInv(value, clip);\n } else if (prefix === \"y\") {\n return yscaler.scaleInv(value, clip);\n }\n return null;\n });\n };\n\n // Given a scaled offset (in img pixels), clip it to the nearest panel region.\n panel.clipImg = function(offset_img) {\n var newOffset = {\n x: offset_img.x,\n y: offset_img.y\n };\n\n var bounds = panel.range;\n\n if (offset_img.x > bounds.right) newOffset.x = bounds.right;\n else if (offset_img.x < bounds.left) newOffset.x = bounds.left;\n\n if (offset_img.y > bounds.bottom) newOffset.y = bounds.bottom;\n else if (offset_img.y < bounds.top) newOffset.y = bounds.top;\n\n return newOffset;\n };\n }\n\n // Add the functions to each panel object.\n for (var i=0; i (not including padding\n// and border).\n// 2. img: The pixel coordinates of the image data. A common case is on a\n// HiDPI device, where the source PNG image could be 1000 pixels wide but\n// be displayed in 500 CSS pixels. Another case is when the image has\n// additional scaling due to CSS transforms or width.\n// 3. data: The coordinates in the data space. This is a bit more complicated\n// than the other two, because there can be multiple panels (as in facets).\nimageutils.initCoordmap = function($el, coordmap) {\n const $img = $el.find(\"img\");\n const img = $img[0];\n\n // If we didn't get any panels, create a dummy one where the domain and range\n // are simply the pixel dimensions.\n // that we modify.\n if (coordmap.panels.length === 0) {\n let bounds = {\n top: 0,\n left: 0,\n right: img.clientWidth - 1,\n bottom: img.clientHeight - 1\n };\n\n coordmap.panels[0] = {\n domain: bounds,\n range: bounds,\n mapping: {}\n };\n }\n\n // If no dim height and width values are found, set them to the raw image height and width\n // These values should be the same...\n // This is only done to initialize an image output, whose height and width are unknown until the image is retrieved\n coordmap.dims.height = coordmap.dims.height || img.naturalHeight;\n coordmap.dims.width = coordmap.dims.width || img.naturalWidth;\n\n // Add scaling functions to each panel\n imageutils.initPanelScales(coordmap.panels);\n\n\n // This returns the offset of the mouse in CSS pixels relative to the img,\n // but not including the padding or border, if present.\n coordmap.mouseOffsetCss = function(mouseEvent) {\n const img_origin = findOrigin($img);\n\n // The offset of the mouse from the upper-left corner of the img, in\n // pixels.\n return {\n x: mouseEvent.pageX - img_origin.x,\n y: mouseEvent.pageY - img_origin.y\n };\n };\n\n // Given an offset in an img in CSS pixels, return the corresponding offset\n // in source image pixels. The offset_css can have properties like \"x\",\n // \"xmin\", \"y\", and \"ymax\" -- anything that starts with \"x\" and \"y\". If the\n // img content is 1000 pixels wide, but is scaled to 400 pixels on screen,\n // and the input is x:400, then this will return x:1000.\n coordmap.scaleCssToImg = function(offset_css) {\n const pixel_scaling = coordmap.imgToCssScalingRatio();\n\n const result = mapValues(offset_css, (value, key) => {\n const prefix = key.substring(0, 1);\n\n if (prefix === \"x\") {\n return offset_css[key] / pixel_scaling.x;\n } else if (prefix === \"y\") {\n return offset_css[key] / pixel_scaling.y;\n }\n return null;\n });\n\n return result;\n };\n\n // Given an offset in an img, in source image pixels, return the\n // corresponding offset in CSS pixels. If the img content is 1000 pixels\n // wide, but is scaled to 400 pixels on screen, and the input is x:1000,\n // then this will return x:400.\n coordmap.scaleImgToCss = function(offset_img) {\n const pixel_scaling = coordmap.imgToCssScalingRatio();\n\n const result = mapValues(offset_img, (value, key) => {\n const prefix = key.substring(0, 1);\n\n if (prefix === \"x\") {\n return offset_img[key] * pixel_scaling.x;\n } else if (prefix === \"y\") {\n return offset_img[key] * pixel_scaling.y;\n }\n return null;\n });\n\n return result;\n };\n\n // Returns the x and y ratio the image content is scaled to on screen. If\n // the image data is 1000 pixels wide and is scaled to 300 pixels on screen,\n // then this returns 0.3. (Note the 300 pixels refers to CSS pixels.)\n coordmap.imgToCssScalingRatio = function() {\n const img_dims = findDims($img);\n return {\n x: img_dims.x / coordmap.dims.width,\n y: img_dims.y / coordmap.dims.height\n };\n };\n\n coordmap.cssToImgScalingRatio = function() {\n const res = coordmap.imgToCssScalingRatio();\n return {\n x: 1 / res.x,\n y: 1 / res.y\n };\n };\n\n // Given an offset in css pixels, return an object representing which panel\n // it's in. The `expand` argument tells it to expand the panel area by that\n // many pixels. It's possible for an offset to be within more than one\n // panel, because of the `expand` value. If that's the case, find the\n // nearest panel.\n coordmap.getPanelCss = function(offset_css, expand = 0) {\n const offset_img = coordmap.scaleCssToImg(offset_css);\n const x = offset_img.x;\n const y = offset_img.y;\n\n // Convert expand from css pixels to img pixels\n const cssToImgRatio = coordmap.cssToImgScalingRatio();\n const expand_img = {\n x: expand * cssToImgRatio.x,\n y: expand * cssToImgRatio.y\n };\n\n const matches = []; // Panels that match\n const dists = []; // Distance of offset to each matching panel\n let b;\n for (var i=0; i= b.left - expand_img.x &&\n y <= b.bottom + expand_img.y &&\n y >= b.top - expand_img.y)\n {\n matches.push(coordmap.panels[i]);\n\n // Find distance from edges for x and y\n var xdist = 0;\n var ydist = 0;\n if (x > b.right && x <= b.right + expand_img.x) {\n xdist = x - b.right;\n } else if (x < b.left && x >= b.left - expand_img.x) {\n xdist = x - b.left;\n }\n if (y > b.bottom && y <= b.bottom + expand_img.y) {\n ydist = y - b.bottom;\n } else if (y < b.top && y >= b.top - expand_img.y) {\n ydist = y - b.top;\n }\n\n // Cartesian distance\n dists.push(Math.sqrt( Math.pow(xdist, 2) + Math.pow(ydist, 2) ));\n }\n }\n\n if (matches.length) {\n // Find shortest distance\n var min_dist = Math.min.apply(null, dists);\n for (i=0; i max) {\n shiftAmount = max - maxval;\n } else if (minval < min) {\n shiftAmount = min - minval;\n }\n\n var newvals = [];\n for (var i=0; i 2 ||\n Math.abs(pending_e.offsetY - e.offsetY) > 2) {\n\n triggerPendingMousedown2();\n scheduleMousedown2(e);\n\n } else {\n // The second click was close to the first one. If it happened\n // within specified delay, trigger our custom 'dblclick2' event.\n pending_e = null;\n triggerEvent('dblclick2', e);\n }\n }\n }\n\n // IE8 needs a special hack because when you do a double-click it doesn't\n // trigger the click event twice - it directly triggers dblclick.\n function dblclickIE8(e) {\n e.which = 1; // In IE8, e.which is 0 instead of 1. ???\n triggerEvent('dblclick2', e);\n }\n\n return {\n mousedown: mousedown,\n dblclickIE8: dblclickIE8\n };\n};\n\n\n// ----------------------------------------------------------\n// Handler creators for click, hover, brush.\n// Each of these returns an object with a few public members. These public\n// members are callbacks that are meant to be bound to events on $el with\n// the same name (like 'mousedown').\n// ----------------------------------------------------------\n\nimageutils.createClickHandler = function(inputId, clip, coordmap) {\n var clickInfoSender = coordmap.mouseCoordinateSender(inputId, clip);\n\n return {\n mousedown: function(e) {\n // Listen for left mouse button only\n if (e.which !== 1) return;\n clickInfoSender(e);\n },\n onResetImg: function() { clickInfoSender(null); },\n onResize: null\n };\n};\n\n\nimageutils.createHoverHandler = function(inputId, delay, delayType, clip,\n nullOutside, coordmap)\n{\n var sendHoverInfo = coordmap.mouseCoordinateSender(inputId, clip, nullOutside);\n\n var hoverInfoSender;\n if (delayType === 'throttle')\n hoverInfoSender = new Throttler(null, sendHoverInfo, delay);\n else\n hoverInfoSender = new Debouncer(null, sendHoverInfo, delay);\n\n // What to do when mouse exits the image\n var mouseout;\n if (nullOutside)\n mouseout = function() { hoverInfoSender.normalCall(null); };\n else\n mouseout = function() {};\n\n return {\n mousemove: function(e) { hoverInfoSender.normalCall(e); },\n mouseout: mouseout,\n onResetImg: function() { hoverInfoSender.immediateCall(null); },\n onResize: null\n };\n};\n\n\n// Returns a brush handler object. This has three public functions:\n// mousedown, mousemove, and onResetImg.\nimageutils.createBrushHandler = function(inputId, $el, opts, coordmap, outputId) {\n // Parameter: expand the area in which a brush can be started, by this\n // many pixels in all directions. (This should probably be a brush option)\n var expandPixels = 20;\n\n // Represents the state of the brush\n var brush = imageutils.createBrush($el, opts, coordmap, expandPixels);\n\n // Brush IDs can span multiple image/plot outputs. When an output is brushed,\n // if a brush with the same ID is active on a different image/plot, it must\n // be dismissed (but without sending any data to the server). We implement\n // this by sending the shiny-internal:brushed event to all plots, and letting\n // each plot decide for itself what to do.\n //\n // The decision to have the event sent to each plot (as opposed to a single\n // event triggered on, say, the document) was made to make cleanup easier;\n // listening on an event on the document would prevent garbage collection\n // of plot outputs that are removed from the document.\n $el.on(\"shiny-internal:brushed.image_output\", function(e, coords) {\n // If the new brush shares our ID but not our output element ID, we\n // need to clear our brush (if any).\n if (coords.brushId === inputId && coords.outputId !== outputId) {\n $el.data(\"mostRecentBrush\", false);\n brush.reset();\n }\n });\n\n // Set cursor to one of 7 styles. We need to set the cursor on the whole\n // el instead of the brush div, because the brush div has\n // 'pointer-events:none' so that it won't intercept pointer events.\n // If `style` is null, don't add a cursor style.\n function setCursorStyle(style) {\n $el.removeClass('crosshair grabbable grabbing ns-resize ew-resize nesw-resize nwse-resize');\n\n if (style) $el.addClass(style);\n }\n\n function sendBrushInfo() {\n var coords = brush.boundsData();\n\n // We're in a new or reset state\n if (isNaN(coords.xmin)) {\n exports.setInputValue(inputId, null);\n // Must tell other brushes to clear.\n imageOutputBinding.find(document).trigger(\"shiny-internal:brushed\", {\n brushId: inputId, outputId: null\n });\n return;\n }\n\n var panel = brush.getPanel();\n\n // Add the panel (facet) variables, if present\n $.extend(coords, panel.panel_vars);\n\n coords.coords_css = brush.boundsCss();\n coords.coords_img = coordmap.scaleCssToImg(coords.coords_css);\n\n coords.img_css_ratio = coordmap.cssToImgScalingRatio();\n\n // Add variable name mappings\n coords.mapping = panel.mapping;\n\n // Add scaling information\n coords.domain = panel.domain;\n coords.range = panel.range;\n coords.log = panel.log;\n\n coords.direction = opts.brushDirection;\n\n coords.brushId = inputId;\n coords.outputId = outputId;\n\n // Send data to server\n exports.setInputValue(inputId, coords);\n\n $el.data(\"mostRecentBrush\", true);\n imageOutputBinding.find(document).trigger(\"shiny-internal:brushed\", coords);\n }\n\n var brushInfoSender;\n if (opts.brushDelayType === 'throttle') {\n brushInfoSender = new Throttler(null, sendBrushInfo, opts.brushDelay);\n } else {\n brushInfoSender = new Debouncer(null, sendBrushInfo, opts.brushDelay);\n }\n\n function mousedown(e) {\n // This can happen when mousedown inside the graphic, then mouseup\n // outside, then mousedown inside. Just ignore the second\n // mousedown.\n if (brush.isBrushing() || brush.isDragging() || brush.isResizing()) return;\n\n // Listen for left mouse button only\n if (e.which !== 1) return;\n\n // In general, brush uses css pixels, and coordmap uses img pixels.\n const offset_css = coordmap.mouseOffsetCss(e);\n\n // Ignore mousedown events outside of plotting region, expanded by\n // a number of pixels specified in expandPixels.\n if (opts.brushClip && !coordmap.isInPanelCss(offset_css, expandPixels))\n return;\n\n brush.up({ x: NaN, y: NaN });\n brush.down(offset_css);\n\n\n if (brush.isInResizeArea(offset_css)) {\n brush.startResizing(offset_css);\n\n // Attach the move and up handlers to the window so that they respond\n // even when the mouse is moved outside of the image.\n $(document)\n .on('mousemove.image_brush', mousemoveResizing)\n .on('mouseup.image_brush', mouseupResizing);\n\n } else if (brush.isInsideBrush(offset_css)) {\n brush.startDragging(offset_css);\n setCursorStyle('grabbing');\n\n // Attach the move and up handlers to the window so that they respond\n // even when the mouse is moved outside of the image.\n $(document)\n .on('mousemove.image_brush', mousemoveDragging)\n .on('mouseup.image_brush', mouseupDragging);\n\n } else {\n const panel = coordmap.getPanelCss(offset_css, expandPixels);\n brush.startBrushing(panel.clipImg(coordmap.scaleCssToImg(offset_css)));\n\n // Attach the move and up handlers to the window so that they respond\n // even when the mouse is moved outside of the image.\n $(document)\n .on('mousemove.image_brush', mousemoveBrushing)\n .on('mouseup.image_brush', mouseupBrushing);\n }\n }\n\n // This sets the cursor style when it's in the el\n function mousemove(e) {\n // In general, brush uses css pixels, and coordmap uses img pixels.\n const offset_css = coordmap.mouseOffsetCss(e);\n\n if (!(brush.isBrushing() || brush.isDragging() || brush.isResizing())) {\n // Set the cursor depending on where it is\n if (brush.isInResizeArea(offset_css)) {\n const r = brush.whichResizeSides(offset_css);\n\n if ((r.left && r.top) || (r.right && r.bottom)) {\n setCursorStyle('nwse-resize');\n } else if ((r.left && r.bottom) || (r.right && r.top)) {\n setCursorStyle('nesw-resize');\n } else if (r.left || r.right) {\n setCursorStyle('ew-resize');\n } else if (r.top || r.bottom) {\n setCursorStyle('ns-resize');\n }\n } else if (brush.isInsideBrush(offset_css)) {\n setCursorStyle('grabbable');\n } else if (coordmap.isInPanelCss(offset_css, expandPixels)) {\n setCursorStyle('crosshair');\n } else {\n setCursorStyle(null);\n }\n }\n }\n\n // mousemove handlers while brushing or dragging\n function mousemoveBrushing(e) {\n brush.brushTo(coordmap.mouseOffsetCss(e));\n brushInfoSender.normalCall();\n }\n\n function mousemoveDragging(e) {\n brush.dragTo(coordmap.mouseOffsetCss(e));\n brushInfoSender.normalCall();\n }\n\n function mousemoveResizing(e) {\n brush.resizeTo(coordmap.mouseOffsetCss(e));\n brushInfoSender.normalCall();\n }\n\n // mouseup handlers while brushing or dragging\n function mouseupBrushing(e) {\n // Listen for left mouse button only\n if (e.which !== 1) return;\n\n $(document)\n .off('mousemove.image_brush')\n .off('mouseup.image_brush');\n\n brush.up(coordmap.mouseOffsetCss(e));\n\n brush.stopBrushing();\n setCursorStyle('crosshair');\n\n // If the brush didn't go anywhere, hide the brush, clear value,\n // and return.\n if (brush.down().x === brush.up().x && brush.down().y === brush.up().y) {\n brush.reset();\n brushInfoSender.immediateCall();\n return;\n }\n\n // Send info immediately on mouseup, but only if needed. If we don't\n // do the pending check, we might send the same data twice (with\n // with difference nonce).\n if (brushInfoSender.isPending())\n brushInfoSender.immediateCall();\n }\n\n function mouseupDragging(e) {\n // Listen for left mouse button only\n if (e.which !== 1) return;\n\n $(document)\n .off('mousemove.image_brush')\n .off('mouseup.image_brush');\n\n brush.up(coordmap.mouseOffsetCss(e));\n\n brush.stopDragging();\n setCursorStyle('grabbable');\n\n if (brushInfoSender.isPending())\n brushInfoSender.immediateCall();\n }\n\n function mouseupResizing(e) {\n // Listen for left mouse button only\n if (e.which !== 1) return;\n\n $(document)\n .off('mousemove.image_brush')\n .off('mouseup.image_brush');\n\n brush.up(coordmap.mouseOffsetCss(e));\n brush.stopResizing();\n\n if (brushInfoSender.isPending())\n brushInfoSender.immediateCall();\n\n }\n\n // Brush maintenance: When an image is re-rendered, the brush must either\n // be removed (if brushResetOnNew) or imported (if !brushResetOnNew). The\n // \"mostRecentBrush\" bit is to ensure that when multiple outputs share the\n // same brush ID, inactive brushes don't send null values up to the server.\n\n // This should be called when the img (not the el) is reset\n function onResetImg() {\n if (opts.brushResetOnNew) {\n if ($el.data(\"mostRecentBrush\")) {\n brush.reset();\n brushInfoSender.immediateCall();\n }\n }\n }\n\n if (!opts.brushResetOnNew) {\n if ($el.data(\"mostRecentBrush\")) {\n // Importing an old brush must happen after the image data has loaded\n // and the DOM element has the updated size. If importOldBrush()\n // is called before this happens, then the css-img coordinate mappings\n // will give the wrong result, and the brush will have the wrong\n // position.\n //\n // jcheng 09/26/2018: This used to happen in img.onLoad, but recently\n // we moved to all brush initialization moving to img.onLoad so this\n // logic can be executed inline.\n brush.importOldBrush();\n brushInfoSender.immediateCall();\n }\n }\n\n function onResize() {\n brush.onResize();\n brushInfoSender.immediateCall();\n }\n\n return {\n mousedown: mousedown,\n mousemove: mousemove,\n onResetImg: onResetImg,\n onResize: onResize\n };\n};\n\n// Returns an object that represents the state of the brush. This gets wrapped\n// in a brushHandler, which provides various event listeners.\nimageutils.createBrush = function($el, opts, coordmap, expandPixels) {\n // Number of pixels outside of brush to allow start resizing\n var resizeExpand = 10;\n\n var el = $el[0];\n var $div = null; // The div representing the brush\n\n var state = {};\n\n // Aliases for conciseness\n const cssToImg = coordmap.scaleCssToImg;\n const imgToCss = coordmap.scaleImgToCss;\n\n reset();\n\n function reset() {\n // Current brushing/dragging/resizing state\n state.brushing = false;\n state.dragging = false;\n state.resizing = false;\n\n // Offset of last mouse down and up events (in CSS pixels)\n state.down = { x: NaN, y: NaN };\n state.up = { x: NaN, y: NaN };\n\n // Which side(s) we're currently resizing\n state.resizeSides = {\n left: false,\n right: false,\n top: false,\n bottom: false\n };\n\n // Bounding rectangle of the brush, in CSS pixel and data dimensions. We\n // need to record data dimensions along with pixel dimensions so that when\n // a new plot is sent, we can re-draw the brush div with the appropriate\n // coords.\n state.boundsCss = {\n xmin: NaN,\n xmax: NaN,\n ymin: NaN,\n ymax: NaN\n };\n state.boundsData = {\n xmin: NaN,\n xmax: NaN,\n ymin: NaN,\n ymax: NaN\n };\n\n // Panel object that the brush is in\n state.panel = null;\n\n // The bounds at the start of a drag/resize (in CSS pixels)\n state.changeStartBounds = {\n xmin: NaN,\n xmax: NaN,\n ymin: NaN,\n ymax: NaN\n };\n\n if ($div)\n $div.remove();\n }\n\n // If there's an existing brush div, use that div to set the new brush's\n // settings, provided that the x, y, and panel variables have the same names,\n // and there's a panel with matching panel variable values.\n function importOldBrush() {\n var oldDiv = $el.find('#' + el.id + '_brush');\n if (oldDiv.length === 0)\n return;\n\n var oldBoundsData = oldDiv.data('bounds-data');\n var oldPanel = oldDiv.data('panel');\n\n if (!oldBoundsData || !oldPanel)\n return;\n\n // Find a panel that has matching vars; if none found, we can't restore.\n // The oldPanel and new panel must match on their mapping vars, and the\n // values.\n for (var i=0; i= bounds.xmin &&\n offset_css.y <= bounds.ymax && offset_css.y >= bounds.ymin;\n }\n\n // Return true if offset is inside a region to start a resize\n function isInResizeArea(offset_css) {\n var sides = whichResizeSides(offset_css);\n return sides.left || sides.right || sides.top || sides.bottom;\n }\n\n // Return an object representing which resize region(s) the cursor is in.\n function whichResizeSides(offset_css) {\n const b = state.boundsCss;\n // Bounds with expansion\n const e = {\n xmin: b.xmin - resizeExpand,\n xmax: b.xmax + resizeExpand,\n ymin: b.ymin - resizeExpand,\n ymax: b.ymax + resizeExpand\n };\n const res = {\n left: false,\n right: false,\n top: false,\n bottom: false\n };\n\n if ((opts.brushDirection === 'xy' || opts.brushDirection === 'x') &&\n (offset_css.y <= e.ymax && offset_css.y >= e.ymin))\n {\n if (offset_css.x < b.xmin && offset_css.x >= e.xmin)\n res.left = true;\n else if (offset_css.x > b.xmax && offset_css.x <= e.xmax)\n res.right = true;\n }\n\n if ((opts.brushDirection === 'xy' || opts.brushDirection === 'y') &&\n (offset_css.x <= e.xmax && offset_css.x >= e.xmin))\n {\n if (offset_css.y < b.ymin && offset_css.y >= e.ymin)\n res.top = true;\n else if (offset_css.y > b.ymax && offset_css.y <= e.ymax)\n res.bottom = true;\n }\n\n return res;\n }\n\n\n // Sets the bounds of the brush (in CSS pixels), given a box and optional\n // panel. This will fit the box bounds into the panel, so we don't brush\n // outside of it. This knows whether we're brushing in the x, y, or xy\n // directions, and sets bounds accordingly. If no box is passed in, just\n // return current bounds.\n function boundsCss(box_css) {\n if (box_css === undefined) {\n return $.extend({}, state.boundsCss);\n }\n\n let min_css = { x: box_css.xmin, y: box_css.ymin };\n let max_css = { x: box_css.xmax, y: box_css.ymax };\n\n const panel = state.panel;\n const panelBounds_img = panel.range;\n\n if (opts.brushClip) {\n min_css = imgToCss(panel.clipImg(cssToImg(min_css)));\n max_css = imgToCss(panel.clipImg(cssToImg(max_css)));\n }\n\n if (opts.brushDirection === 'xy') {\n // No change\n\n } else if (opts.brushDirection === 'x') {\n // Extend top and bottom of plotting area\n min_css.y = imgToCss({y: panelBounds_img.top }).y;\n max_css.y = imgToCss({y: panelBounds_img.bottom}).y;\n\n } else if (opts.brushDirection === 'y') {\n min_css.x = imgToCss({x: panelBounds_img.left }).x;\n max_css.x = imgToCss({x: panelBounds_img.right}).x;\n }\n\n state.boundsCss = {\n xmin: min_css.x,\n xmax: max_css.x,\n ymin: min_css.y,\n ymax: max_css.y\n };\n\n // Positions in data space\n const min_data = state.panel.scaleImgToData(cssToImg(min_css));\n const max_data = state.panel.scaleImgToData(cssToImg(max_css));\n // For reversed scales, the min and max can be reversed, so use findBox\n // to ensure correct order.\n state.boundsData = imageutils.findBox(min_data, max_data);\n // Round to 14 significant digits to avoid spurious changes in FP values\n // (#1634).\n state.boundsData = mapValues(state.boundsData, val => roundSignif(val, 14));\n\n // We also need to attach the data bounds and panel as data attributes, so\n // that if the image is re-sent, we can grab the data bounds to create a new\n // brush. This should be fast because it doesn't actually modify the DOM.\n $div.data('bounds-data', state.boundsData);\n $div.data('panel', state.panel);\n return undefined;\n }\n\n // Get or set the bounds of the brush using coordinates in the data space.\n function boundsData(box_data) {\n if (box_data === undefined) {\n return $.extend({}, state.boundsData);\n }\n\n let box_css = imgToCss(state.panel.scaleDataToImg(box_data));\n // Round to 13 significant digits to avoid spurious changes in FP values\n // (#2197).\n box_css = mapValues(box_css, val => roundSignif(val, 13));\n\n // The scaling function can reverse the direction of the axes, so we need to\n // find the min and max again.\n boundsCss({\n xmin: Math.min(box_css.xmin, box_css.xmax),\n xmax: Math.max(box_css.xmin, box_css.xmax),\n ymin: Math.min(box_css.ymin, box_css.ymax),\n ymax: Math.max(box_css.ymin, box_css.ymax)\n });\n return undefined;\n }\n\n function getPanel() {\n return state.panel;\n }\n\n // Add a new div representing the brush.\n function addDiv() {\n if ($div) $div.remove();\n\n // Start hidden; we'll show it when movement occurs\n $div = $(document.createElement('div'))\n .attr('id', el.id + '_brush')\n .css({\n 'background-color': opts.brushFill,\n 'opacity': opts.brushOpacity,\n 'pointer-events': 'none',\n 'position': 'absolute'\n })\n .hide();\n\n var borderStyle = '1px solid ' + opts.brushStroke;\n if (opts.brushDirection === 'xy') {\n $div.css({\n 'border': borderStyle\n });\n } else if (opts.brushDirection === 'x') {\n $div.css({\n 'border-left': borderStyle,\n 'border-right': borderStyle\n });\n } else if (opts.brushDirection === 'y') {\n $div.css({\n 'border-top': borderStyle,\n 'border-bottom': borderStyle\n });\n }\n\n $el.append($div);\n $div.offset({x:0, y:0}).width(0).outerHeight(0);\n }\n\n // Update the brush div to reflect the current brush bounds.\n function updateDiv() {\n // Need parent offset relative to page to calculate mouse offset\n // relative to page.\n const img_offset_css = findOrigin($el.find(\"img\"));\n const b = state.boundsCss;\n\n $div.offset({\n top: img_offset_css.y + b.ymin,\n left: img_offset_css.x + b.xmin\n })\n .outerWidth(b.xmax - b.xmin + 1)\n .outerHeight(b.ymax - b.ymin + 1);\n }\n\n function down(offset_css) {\n if (offset_css === undefined)\n return state.down;\n\n state.down = offset_css;\n return undefined;\n }\n\n function up(offset_css) {\n if (offset_css === undefined)\n return state.up;\n\n state.up = offset_css;\n return undefined;\n }\n\n function isBrushing() {\n return state.brushing;\n }\n\n function startBrushing() {\n state.brushing = true;\n addDiv();\n state.panel = coordmap.getPanelCss(state.down, expandPixels);\n\n boundsCss(imageutils.findBox(state.down, state.down));\n updateDiv();\n }\n\n function brushTo(offset_css) {\n boundsCss(imageutils.findBox(state.down, offset_css));\n $div.show();\n updateDiv();\n }\n\n function stopBrushing() {\n state.brushing = false;\n // Save the final bounding box of the brush\n boundsCss(imageutils.findBox(state.down, state.up));\n }\n\n function isDragging() {\n return state.dragging;\n }\n\n function startDragging() {\n state.dragging = true;\n state.changeStartBounds = $.extend({}, state.boundsCss);\n }\n\n function dragTo(offset_css) {\n // How far the brush was dragged\n const dx = offset_css.x - state.down.x;\n const dy = offset_css.y - state.down.y;\n\n // Calculate what new positions would be, before clipping.\n const start = state.changeStartBounds;\n let newBounds_css = {\n xmin: start.xmin + dx,\n xmax: start.xmax + dx,\n ymin: start.ymin + dy,\n ymax: start.ymax + dy\n };\n\n // Clip to the plotting area\n if (opts.brushClip) {\n const panelBounds_img = state.panel.range;\n const newBounds_img = cssToImg(newBounds_css);\n\n // Convert to format for shiftToRange\n let xvals_img = [ newBounds_img.xmin, newBounds_img.xmax ];\n let yvals_img = [ newBounds_img.ymin, newBounds_img.ymax ];\n\n xvals_img = imageutils.shiftToRange(xvals_img, panelBounds_img.left, panelBounds_img.right);\n yvals_img = imageutils.shiftToRange(yvals_img, panelBounds_img.top, panelBounds_img.bottom);\n\n // Convert back to bounds format\n newBounds_css = imgToCss({\n xmin: xvals_img[0],\n xmax: xvals_img[1],\n ymin: yvals_img[0],\n ymax: yvals_img[1]\n });\n }\n\n boundsCss(newBounds_css);\n updateDiv();\n }\n\n function stopDragging() {\n state.dragging = false;\n }\n\n function isResizing() {\n return state.resizing;\n }\n\n function startResizing() {\n state.resizing = true;\n state.changeStartBounds = $.extend({}, state.boundsCss);\n state.resizeSides = whichResizeSides(state.down);\n }\n\n function resizeTo(offset_css) {\n // How far the brush was dragged\n const d_css = {\n x: offset_css.x - state.down.x,\n y: offset_css.y - state.down.y\n };\n\n const d_img = cssToImg(d_css);\n\n // Calculate what new positions would be, before clipping.\n const b_img = cssToImg(state.changeStartBounds);\n const panelBounds_img = state.panel.range;\n\n if (state.resizeSides.left) {\n const xmin_img = imageutils.shiftToRange(b_img.xmin + d_img.x, panelBounds_img.left, b_img.xmax)[0];\n b_img.xmin = xmin_img;\n } else if (state.resizeSides.right) {\n const xmax_img = imageutils.shiftToRange(b_img.xmax + d_img.x, b_img.xmin, panelBounds_img.right)[0];\n b_img.xmax = xmax_img;\n }\n\n if (state.resizeSides.top) {\n const ymin_img = imageutils.shiftToRange(b_img.ymin + d_img.y, panelBounds_img.top, b_img.ymax)[0];\n b_img.ymin = ymin_img;\n } else if (state.resizeSides.bottom) {\n const ymax_img = imageutils.shiftToRange(b_img.ymax + d_img.y, b_img.ymin, panelBounds_img.bottom)[0];\n b_img.ymax = ymax_img;\n }\n\n boundsCss(imgToCss(b_img));\n updateDiv();\n }\n\n function stopResizing() {\n state.resizing = false;\n }\n\n return {\n reset: reset,\n\n importOldBrush: importOldBrush,\n isInsideBrush: isInsideBrush,\n isInResizeArea: isInResizeArea,\n whichResizeSides: whichResizeSides,\n\n onResize: onResize, // A callback when the wrapper div or img is resized.\n\n boundsCss: boundsCss,\n boundsData: boundsData,\n getPanel: getPanel,\n\n down: down,\n up: up,\n\n isBrushing: isBrushing,\n startBrushing: startBrushing,\n brushTo: brushTo,\n stopBrushing: stopBrushing,\n\n isDragging: isDragging,\n startDragging: startDragging,\n dragTo: dragTo,\n stopDragging: stopDragging,\n\n isResizing: isResizing,\n startResizing: startResizing,\n resizeTo: resizeTo,\n stopResizing: stopResizing\n };\n};\n\nexports.resetBrush = function(brushId) {\n exports.setInputValue(brushId, null);\n imageOutputBinding.find(document).trigger(\"shiny-internal:brushed\", {\n brushId: brushId, outputId: null\n });\n};\n\n\n// -----------------------------------------------------------------------\n// Utility functions for finding dimensions and locations of DOM elements\n// -----------------------------------------------------------------------\n\n// Returns the ratio that an element has been scaled (for example, by CSS\n// transforms) in the x and y directions.\nfunction findScalingRatio($el) {\n const boundingRect = $el[0].getBoundingClientRect();\n return {\n x: boundingRect.width / $el.outerWidth(),\n y: boundingRect.height / $el.outerHeight()\n };\n}\n\nfunction findOrigin($el) {\n const offset = $el.offset();\n const scaling_ratio = findScalingRatio($el);\n\n // Find the size of the padding and border, for the top and left. This is\n // before any transforms.\n const paddingBorder = {\n left: parseInt($el.css(\"border-left-width\")) + parseInt($el.css(\"padding-left\")),\n top: parseInt($el.css(\"border-top-width\")) + parseInt($el.css(\"padding-top\"))\n };\n\n // offset() returns the upper left corner of the element relative to the\n // page, but it includes padding and border. Here we find the upper left\n // of the element, not including padding and border.\n return {\n x: offset.left + scaling_ratio.x * paddingBorder.left,\n y: offset.top + scaling_ratio.y * paddingBorder.top\n };\n}\n\n// Find the dimensions of a tag, after transforms, and without padding and\n// border.\nfunction findDims($el) {\n // If there's any padding/border, we need to find the ratio of the actual\n // element content compared to the element plus padding and border.\n const content_ratio = {\n x: $el.width() / $el.outerWidth(),\n y: $el.height() / $el.outerHeight()\n };\n\n // Get the dimensions of the element _after_ any CSS transforms. This\n // includes the padding and border.\n const bounding_rect = $el[0].getBoundingClientRect();\n\n // Dimensions of the element after any CSS transforms, and without\n // padding/border.\n return {\n x: content_ratio.x * bounding_rect.width,\n y: content_ratio.y * bounding_rect.height\n };\n}\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/output_binding_html.js\n\nvar htmlOutputBinding = new OutputBinding();\n$.extend(htmlOutputBinding, {\n find: function(scope) {\n return $(scope).find('.shiny-html-output');\n },\n onValueError: function(el, err) {\n exports.unbindAll(el);\n this.renderError(el, err);\n },\n renderValue: function(el, data) {\n exports.renderContent(el, data);\n }\n});\noutputBindings.register(htmlOutputBinding, 'shiny.htmlOutput');\n\nvar renderDependencies = exports.renderDependencies = function(dependencies) {\n if (dependencies) {\n $.each(dependencies, function(i, dep) {\n renderDependency(dep);\n });\n }\n};\n\n// Render HTML in a DOM element, add dependencies, and bind Shiny\n// inputs/outputs. `content` can be null, a string, or an object with\n// properties 'html' and 'deps'.\nexports.renderContent = function(el, content, where=\"replace\") {\n if (where === \"replace\") {\n exports.unbindAll(el);\n }\n\n var html;\n var dependencies = [];\n if (content === null) {\n html = '';\n } else if (typeof(content) === 'string') {\n html = content;\n } else if (typeof(content) === 'object') {\n html = content.html;\n dependencies = content.deps || [];\n }\n\n exports.renderHtml(html, el, dependencies, where);\n\n var scope = el;\n if (where === \"replace\") {\n exports.initializeInputs(el);\n exports.bindAll(el);\n } else {\n var $parent = $(el).parent();\n if ($parent.length > 0) {\n scope = $parent;\n if (where === \"beforeBegin\" || where === \"afterEnd\") {\n var $grandparent = $parent.parent();\n if ($grandparent.length > 0) scope = $grandparent;\n }\n }\n exports.initializeInputs(scope);\n exports.bindAll(scope);\n }\n};\n\n// Render HTML in a DOM element, inserting singletons into head as needed\nexports.renderHtml = function(html, el, dependencies, where = 'replace') {\n renderDependencies(dependencies);\n return singletons.renderHtml(html, el, where);\n};\n\nvar htmlDependencies = {};\nfunction registerDependency(name, version) {\n htmlDependencies[name] = version;\n}\n\n// Client-side dependency resolution and rendering\nfunction renderDependency(dep) {\n if (htmlDependencies.hasOwnProperty(dep.name))\n return false;\n\n registerDependency(dep.name, dep.version);\n\n var href = dep.src.href;\n\n var $head = $(\"head\").first();\n\n if (dep.meta) {\n var metas = $.map(asArray(dep.meta), function(obj, idx) {\n // only one named pair is expected in obj as it's already been decomposed\n var name = Object.keys(obj)[0];\n return $(\"\").attr(\"name\", name).attr(\"content\", obj[name]);\n });\n $head.append(metas);\n }\n\n if (dep.stylesheet) {\n var stylesheets = $.map(asArray(dep.stylesheet), function(stylesheet) {\n return $(\"\")\n .attr(\"href\", href + \"/\" + encodeURI(stylesheet));\n });\n $head.append(stylesheets);\n }\n\n if (dep.script) {\n var scripts = $.map(asArray(dep.script), function(scriptName) {\n return $(\"