File: //opt/textanalyse/web_console/node_modules/vega-view/build/vega-view.min.js.map
{"version":3,"file":"vega-view.min.js","sources":["../src/aria.js","../src/cursor.js","../src/data.js","../src/render-size.js","../src/events-extend.js","../src/events.js","../src/hover.js","../src/element.js","../../../node_modules/d3-array/src/ticks.js","../src/bind.js","../src/initialize-renderer.js","../src/trap.js","../src/initialize.js","../src/padding.js","../src/render-headless.js","../src/size.js","../src/state.js","../../../node_modules/d3-timer/src/timer.js","../src/tooltip.js","../src/View.js","../src/runtime.js","../src/background.js","../src/timer.js","../../../node_modules/d3-timer/src/interval.js","../src/finalize.js","../src/scale.js","../src/initialize-handler.js","../src/render-to-image-url.js","../src/render-to-canvas.js","../src/render-to-svg.js","../src/watchPixelRatio.js"],"sourcesContent":["// initialize aria role and label attributes\nexport function initializeAria(view) {\n const el = view.container();\n if (el) {\n el.setAttribute('role', 'graphics-document');\n el.setAttribute('aria-roleDescription', 'visualization');\n ariaLabel(el, view.description());\n }\n}\n\n// update aria-label if we have a DOM container element\nexport function ariaLabel(el, desc) {\n if (el) desc == null\n ? el.removeAttribute('aria-label')\n : el.setAttribute('aria-label', desc);\n}\n","import {isString} from 'vega-util';\n\nconst Default = 'default';\n\nexport default function(view) {\n // get cursor signal, add to dataflow if needed\n const cursor = view._signals.cursor || (view._signals.cursor = view.add({\n user: Default,\n item: null\n }));\n\n // evaluate cursor on each pointermove event\n view.on(view.events('view', 'pointermove'), cursor,\n (_, event) => {\n const value = cursor.value,\n user = value ? (isString(value) ? value : value.user) : Default,\n item = event.item && event.item.cursor || null;\n\n return (value && user === value.user && item == value.item)\n ? value\n : {user: user, item: item};\n }\n );\n\n // when cursor signal updates, set visible cursor\n view.add(null, function(_) {\n let user = _.cursor,\n item = this.value;\n\n if (!isString(user)) {\n item = user.item;\n user = user.user;\n }\n\n setCursor(view, user && user !== Default ? user : (item || user));\n\n return item;\n }, {cursor: cursor});\n}\n\nexport function setCursor(view, cursor) {\n const el = view.globalCursor()\n ? (typeof document !== 'undefined' && document.body)\n : view.container();\n\n if (el) {\n return cursor == null\n ? el.style.removeProperty('cursor')\n : (el.style.cursor = cursor);\n }\n}\n","import {changeset, isChangeSet} from 'vega-dataflow';\nimport {error, hasOwnProperty, truthy} from 'vega-util';\n\nexport function dataref(view, name) {\n var data = view._runtime.data;\n if (!hasOwnProperty(data, name)) {\n error('Unrecognized data set: ' + name);\n }\n return data[name];\n}\n\nexport function data(name, values) {\n return arguments.length < 2\n ? dataref(this, name).values.value\n : change.call(this, name, changeset().remove(truthy).insert(values));\n}\n\nexport function change(name, changes) {\n if (!isChangeSet(changes)) {\n error('Second argument to changes must be a changeset.');\n }\n const dataset = dataref(this, name);\n dataset.modified = true;\n return this.pulse(dataset.input, changes);\n}\n\nexport function insert(name, _) {\n return change.call(this, name, changeset().insert(_));\n}\n\nexport function remove(name, _) {\n return change.call(this, name, changeset().remove(_));\n}\n","export function width(view) {\n var padding = view.padding();\n return Math.max(0, view._viewWidth + padding.left + padding.right);\n}\n\nexport function height(view) {\n var padding = view.padding();\n return Math.max(0, view._viewHeight + padding.top + padding.bottom);\n}\n\nexport function offset(view) {\n var padding = view.padding(),\n origin = view._origin;\n return [\n padding.left + origin[0],\n padding.top + origin[1]\n ];\n}\n\nexport function resizeRenderer(view) {\n var origin = offset(view),\n w = width(view),\n h = height(view);\n\n view._renderer.background(view.background());\n view._renderer.resize(w, h, origin);\n view._handler.origin(origin);\n\n view._resizeListeners.forEach(handler => {\n try {\n handler(w, h);\n } catch (error) {\n view.error(error);\n }\n });\n}\n","import {offset} from './render-size';\nimport {constant, isString} from 'vega-util';\nimport {point} from 'vega-scenegraph';\n\n/**\n * Extend an event with additional view-specific methods.\n * Adds a new property ('vega') to an event that provides a number\n * of methods for querying information about the current interaction.\n * The vega object provides the following methods:\n * view - Returns the backing View instance.\n * item - Returns the currently active scenegraph item (if any).\n * group - Returns the currently active scenegraph group (if any).\n * This method accepts a single string-typed argument indicating the name\n * of the desired parent group. The scenegraph will be traversed from\n * the item up towards the root to search for a matching group. If no\n * argument is provided the enclosing group for the active item is\n * returned, unless the item it itself a group, in which case it is\n * returned directly.\n * xy - Returns a two-element array containing the x and y coordinates for\n * mouse or touch events. For touch events, this is based on the first\n * elements in the changedTouches array. This method accepts a single\n * argument: either an item instance or mark name that should serve as\n * the reference coordinate system. If no argument is provided the\n * top-level view coordinate system is assumed.\n * x - Returns the current x-coordinate, accepts the same arguments as xy.\n * y - Returns the current y-coordinate, accepts the same arguments as xy.\n * @param {Event} event - The input event to extend.\n * @param {Item} item - The currently active scenegraph item (if any).\n * @return {Event} - The extended input event.\n */\nexport default function(view, event, item) {\n var r = view._renderer,\n el = r && r.canvas(),\n p, e, translate;\n\n if (el) {\n translate = offset(view);\n e = event.changedTouches ? event.changedTouches[0] : event;\n p = point(e, el);\n p[0] -= translate[0];\n p[1] -= translate[1];\n }\n\n event.dataflow = view;\n event.item = item;\n event.vega = extension(view, item, p);\n return event;\n}\n\nfunction extension(view, item, point) {\n const itemGroup = item\n ? item.mark.marktype === 'group' ? item : item.mark.group\n : null;\n\n function group(name) {\n var g = itemGroup, i;\n if (name) for (i = item; i; i = i.mark.group) {\n if (i.mark.name === name) { g = i; break; }\n }\n return g && g.mark && g.mark.interactive ? g : {};\n }\n\n function xy(item) {\n if (!item) return point;\n if (isString(item)) item = group(item);\n\n const p = point.slice();\n while (item) {\n p[0] -= item.x || 0;\n p[1] -= item.y || 0;\n item = item.mark && item.mark.group;\n }\n return p;\n }\n\n return {\n view: constant(view),\n item: constant(item || {}),\n group: group,\n xy: xy,\n x: item => xy(item)[0],\n y: item => xy(item)[1]\n };\n}\n","import eventExtend from './events-extend';\nimport {EventStream} from 'vega-dataflow';\nimport {array, extend, isArray, isObject, toSet} from 'vega-util';\n\nconst VIEW = 'view',\n TIMER = 'timer',\n WINDOW = 'window',\n NO_TRAP = {trap: false};\n\n/**\n * Initialize event handling configuration.\n * @param {object} config - The configuration settings.\n * @return {object}\n */\nexport function initializeEventConfig(config) {\n const events = extend({defaults: {}}, config);\n\n const unpack = (obj, keys) => {\n keys.forEach(k => {\n if (isArray(obj[k])) obj[k] = toSet(obj[k]);\n });\n };\n\n unpack(events.defaults, ['prevent', 'allow']);\n unpack(events, ['view', 'window', 'selector']);\n\n return events;\n}\n\nexport function trackEventListener(view, sources, type, handler) {\n view._eventListeners.push({\n type: type,\n sources: array(sources),\n handler: handler\n });\n}\n\nfunction prevent(view, type) {\n var def = view._eventConfig.defaults,\n prevent = def.prevent,\n allow = def.allow;\n\n return prevent === false || allow === true ? false\n : prevent === true || allow === false ? true\n : prevent ? prevent[type]\n : allow ? !allow[type]\n : view.preventDefault();\n}\n\nfunction permit(view, key, type) {\n const rule = view._eventConfig && view._eventConfig[key];\n\n if (rule === false || (isObject(rule) && !rule[type])) {\n view.warn(`Blocked ${key} ${type} event listener.`);\n return false;\n }\n\n return true;\n}\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @return {EventStream}\n */\nexport function events(source, type, filter) {\n var view = this,\n s = new EventStream(filter),\n send = function(e, item) {\n view.runAsync(null, () => {\n if (source === VIEW && prevent(view, type)) {\n e.preventDefault();\n }\n s.receive(eventExtend(view, e, item));\n });\n },\n sources;\n\n if (source === TIMER) {\n if (permit(view, 'timer', type)) {\n view.timer(send, type);\n }\n }\n\n else if (source === VIEW) {\n if (permit(view, 'view', type)) {\n // send traps errors, so use {trap: false} option\n view.addEventListener(type, send, NO_TRAP);\n }\n }\n\n else {\n if (source === WINDOW) {\n if (permit(view, 'window', type) && typeof window !== 'undefined') {\n sources = [window];\n }\n } else if (typeof document !== 'undefined') {\n if (permit(view, 'selector', type)) {\n sources = Array.from(document.querySelectorAll(source));\n }\n }\n\n if (!sources) {\n view.warn('Can not resolve event source: ' + source);\n } else {\n for (var i=0, n=sources.length; i<n; ++i) {\n sources[i].addEventListener(type, send);\n }\n trackEventListener(view, sources, type, send);\n }\n }\n\n return s;\n}\n","function itemFilter(event) {\n return event.item;\n}\n\nfunction markTarget(event) {\n // grab upstream collector feeding the mark operator\n return event.item.mark.source;\n}\n\nfunction invoke(name) {\n return function(_, event) {\n return event.vega.view()\n .changeset()\n .encode(event.item, name);\n };\n}\n\nexport default function(hoverSet, leaveSet) {\n hoverSet = [hoverSet || 'hover'];\n leaveSet = [leaveSet || 'update', hoverSet[0]];\n\n // invoke hover set upon pointerover\n this.on(\n this.events('view', 'pointerover', itemFilter),\n markTarget,\n invoke(hoverSet)\n );\n\n // invoke leave set upon pointerout\n this.on(\n this.events('view', 'pointerout', itemFilter),\n markTarget,\n invoke(leaveSet)\n );\n\n return this;\n}\n","export default function(tag, attr, text) {\n const el = document.createElement(tag);\n for (const key in attr) el.setAttribute(key, attr[key]);\n if (text != null) el.textContent = text;\n return el;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","import element from './element';\nimport {trackEventListener} from './events';\nimport {debounce} from 'vega-util';\nimport {tickStep} from 'd3-array';\n\nconst BindClass = 'vega-bind',\n NameClass = 'vega-bind-name',\n RadioClass = 'vega-bind-radio';\n\n/**\n * Bind a signal to an external HTML input element. The resulting two-way\n * binding will propagate input changes to signals, and propagate signal\n * changes to the input element state. If this view instance has no parent\n * element, we assume the view is headless and no bindings are created.\n * @param {Element|string} el - The parent DOM element to which the input\n * element should be appended as a child. If string-valued, this argument\n * will be treated as a CSS selector. If null or undefined, the parent\n * element of this view will be used as the element.\n * @param {object} param - The binding parameters which specify the signal\n * to bind to, the input element type, and type-specific configuration.\n * @return {View} - This view instance.\n */\nexport default function(view, el, binding) {\n if (!el) return;\n\n const param = binding.param;\n let bind = binding.state;\n\n if (!bind) {\n bind = binding.state = {\n elements: null,\n active: false,\n set: null,\n update: value => {\n if (value != view.signal(param.signal)) {\n view.runAsync(null, () => {\n bind.source = true;\n view.signal(param.signal, value);\n });\n }\n }\n };\n if (param.debounce) {\n bind.update = debounce(param.debounce, bind.update);\n }\n }\n\n const create = param.input == null && param.element ? target : generate;\n create(bind, el, param, view);\n\n if (!bind.active) {\n view.on(view._signals[param.signal], null, () => {\n bind.source\n ? (bind.source = false)\n : bind.set(view.signal(param.signal));\n });\n bind.active = true;\n }\n\n return bind;\n}\n\n/**\n * Bind the signal to an external EventTarget.\n */\nfunction target(bind, node, param, view) {\n const type = param.event || 'input';\n const handler = () => bind.update(node.value);\n\n // initialize signal value to external input value\n view.signal(param.signal, node.value);\n\n // listen for changes on the element\n node.addEventListener(type, handler);\n\n // register with view, so we can remove it upon finalization\n trackEventListener(view, node, type, handler);\n\n // propagate change to element\n bind.set = value => {\n node.value = value;\n node.dispatchEvent(event(type));\n };\n}\n\nfunction event(type) {\n return typeof Event !== 'undefined' ? new Event(type) : { type };\n}\n\n/**\n * Generate an HTML input form element and bind it to a signal.\n */\nfunction generate(bind, el, param, view) {\n const value = view.signal(param.signal);\n const div = element('div', {'class': BindClass});\n\n const wrapper = param.input === 'radio'\n ? div\n : div.appendChild(element('label'));\n\n wrapper.appendChild(element('span',\n {'class': NameClass},\n (param.name || param.signal)\n ));\n\n el.appendChild(div);\n\n let input = form;\n switch (param.input) {\n case 'checkbox': input = checkbox; break;\n case 'select': input = select; break;\n case 'radio': input = radio; break;\n case 'range': input = range; break;\n }\n\n input(bind, wrapper, param, value);\n}\n\n/**\n * Generates an arbitrary input form element.\n * The input type is controlled via user-provided parameters.\n */\nfunction form(bind, el, param, value) {\n const node = element('input');\n\n for (const key in param) {\n if (key !== 'signal' && key !== 'element') {\n node.setAttribute(key === 'input' ? 'type' : key, param[key]);\n }\n }\n node.setAttribute('name', param.signal);\n node.value = value;\n\n el.appendChild(node);\n node.addEventListener('input', () => bind.update(node.value));\n\n bind.elements = [node];\n bind.set = value => node.value = value;\n}\n\n/**\n * Generates a checkbox input element.\n */\nfunction checkbox(bind, el, param, value) {\n const attr = {type: 'checkbox', name: param.signal};\n if (value) attr.checked = true;\n const node = element('input', attr);\n\n el.appendChild(node);\n node.addEventListener('change', () => bind.update(node.checked));\n\n bind.elements = [node];\n bind.set = value => node.checked = !!value || null;\n}\n\n/**\n * Generates a selection list input element.\n */\nfunction select(bind, el, param, value) {\n const node = element('select', {name: param.signal}),\n labels = param.labels || [];\n\n param.options.forEach((option, i) => {\n const attr = {value: option};\n if (valuesEqual(option, value)) attr.selected = true;\n node.appendChild(element('option', attr, (labels[i] || option)+''));\n });\n\n el.appendChild(node);\n\n node.addEventListener('change', () => {\n bind.update(param.options[node.selectedIndex]);\n });\n\n bind.elements = [node];\n bind.set = value => {\n for (let i = 0, n = param.options.length; i < n; ++i) {\n if (valuesEqual(param.options[i], value)) {\n node.selectedIndex = i; return;\n }\n }\n };\n}\n\n/**\n * Generates a radio button group.\n */\nfunction radio(bind, el, param, value) {\n const group = element('span', {'class': RadioClass}),\n labels = param.labels || [];\n\n el.appendChild(group);\n\n bind.elements = param.options.map((option, i) => {\n const attr = {\n type: 'radio',\n name: param.signal,\n value: option\n };\n if (valuesEqual(option, value)) attr.checked = true;\n\n const input = element('input', attr);\n input.addEventListener('change', () => bind.update(option));\n\n const label = element('label', {}, (labels[i] || option)+'');\n label.prepend(input);\n group.appendChild(label);\n\n return input;\n });\n\n bind.set = value => {\n const nodes = bind.elements,\n n = nodes.length;\n for (let i = 0; i < n; ++i) {\n if (valuesEqual(nodes[i].value, value)) nodes[i].checked = true;\n }\n };\n}\n\n/**\n * Generates a slider input element.\n */\nfunction range(bind, el, param, value) {\n value = value !== undefined ? value : ((+param.max) + (+param.min)) / 2;\n\n const max = param.max != null ? param.max : Math.max(100, +value) || 100,\n min = param.min || Math.min(0, max, +value) || 0,\n step = param.step || tickStep(min, max, 100);\n\n const node = element('input', {\n type: 'range',\n name: param.signal,\n min: min,\n max: max,\n step: step\n });\n node.value = value;\n\n const span = element('span', {}, +value);\n\n el.appendChild(node);\n el.appendChild(span);\n\n const update = () => {\n span.textContent = node.value;\n bind.update(+node.value);\n };\n\n // subscribe to both input and change\n node.addEventListener('input', update);\n node.addEventListener('change', update);\n\n bind.elements = [node];\n bind.set = value => {\n node.value = value;\n span.textContent = value;\n };\n}\n\nfunction valuesEqual(a, b) {\n return a === b || (a+'' === b+'');\n}\n","import {height, offset, width} from './render-size';\n\nexport default function(view, r, el, constructor, scaleFactor, opt) {\n r = r || new constructor(view.loader());\n return r\n .initialize(el, width(view), height(view), offset(view), scaleFactor, opt)\n .background(view.background());\n}\n","export default function(view, fn) {\n return !fn ? null : function() {\n try {\n fn.apply(this, arguments);\n } catch (error) {\n view.error(error);\n }\n };\n}\n","import {initializeAria} from './aria';\nimport bind from './bind';\nimport element from './element';\nimport initializeRenderer from './initialize-renderer';\nimport initializeHandler from './initialize-handler';\nimport {CanvasHandler, renderModule} from 'vega-scenegraph';\n\nexport default function(el, elBind) {\n const view = this,\n type = view._renderType,\n config = view._eventConfig.bind,\n module = renderModule(type);\n\n // containing dom element\n el = view._el = el ? lookup(view, el, true) : null;\n\n // initialize aria attributes\n initializeAria(view);\n\n // select appropriate renderer & handler\n if (!module) view.error('Unrecognized renderer type: ' + type);\n const Handler = module.handler || CanvasHandler,\n Renderer = (el ? module.renderer : module.headless);\n\n // initialize renderer and input handler\n view._renderer = !Renderer ? null\n : initializeRenderer(view, view._renderer, el, Renderer);\n view._handler = initializeHandler(view, view._handler, el, Handler);\n view._redraw = true;\n\n // initialize signal bindings\n if (el && config !== 'none') {\n elBind = elBind ? (view._elBind = lookup(view, elBind, true))\n : el.appendChild(element('form', {'class': 'vega-bindings'}));\n\n view._bind.forEach(_ => {\n if (_.param.element && config !== 'container') {\n _.element = lookup(view, _.param.element, !!_.param.input);\n }\n });\n\n view._bind.forEach(_ => {\n bind(view, _.element || elBind, _);\n });\n }\n\n return view;\n}\n\nfunction lookup(view, el, clear) {\n if (typeof el === 'string') {\n if (typeof document !== 'undefined') {\n el = document.querySelector(el);\n if (!el) {\n view.error('Signal bind element not found: ' + el);\n return null;\n }\n } else {\n view.error('DOM document instance not found.');\n return null;\n }\n }\n if (el && clear) {\n try {\n el.textContent = '';\n } catch (e) {\n el = null;\n view.error(e);\n }\n }\n return el;\n}\n","import {isObject} from 'vega-util';\n\nconst number = _ => +_ || 0;\n\nconst paddingObject = _ => ({top: _, bottom: _, left: _, right: _});\n\nexport default function(_) {\n return isObject(_)\n ? {\n top: number(_.top),\n bottom: number(_.bottom),\n left: number(_.left),\n right: number(_.right)\n }\n : paddingObject(number(_));\n}\n","import initializeRenderer from './initialize-renderer';\nimport {renderModule} from 'vega-scenegraph';\nimport {error} from 'vega-util';\n\n/**\n * Render the current scene in a headless fashion.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A Promise that resolves to a renderer.\n */\nexport default async function(view, type, scaleFactor, opt) {\n const module = renderModule(type),\n ctr = module && module.headless;\n\n if (!ctr) error('Unrecognized renderer type: ' + type);\n\n await view.runAsync();\n return initializeRenderer(view, null, null, ctr, scaleFactor, opt)\n .renderAsync(view._scenegraph.root);\n}\n","var Width = 'width',\n Height = 'height',\n Padding = 'padding',\n Skip = {skip: true};\n\nexport function viewWidth(view, width) {\n var a = view.autosize(),\n p = view.padding();\n return width - (a && a.contains === Padding ? p.left + p.right : 0);\n}\n\nexport function viewHeight(view, height) {\n var a = view.autosize(),\n p = view.padding();\n return height - (a && a.contains === Padding ? p.top + p.bottom : 0);\n}\n\nexport function initializeResize(view) {\n var s = view._signals,\n w = s[Width],\n h = s[Height],\n p = s[Padding];\n\n function resetSize() {\n view._autosize = view._resize = 1;\n }\n\n // respond to width signal\n view._resizeWidth = view.add(null,\n _ => {\n view._width = _.size;\n view._viewWidth = viewWidth(view, _.size);\n resetSize();\n },\n {size: w}\n );\n\n // respond to height signal\n view._resizeHeight = view.add(null,\n _ => {\n view._height = _.size;\n view._viewHeight = viewHeight(view, _.size);\n resetSize();\n },\n {size: h}\n );\n\n // respond to padding signal\n const resizePadding = view.add(null, resetSize, {pad: p});\n\n // set rank to run immediately after source signal\n view._resizeWidth.rank = w.rank + 1;\n view._resizeHeight.rank = h.rank + 1;\n resizePadding.rank = p.rank + 1;\n}\n\nexport function resizeView(viewWidth, viewHeight, width, height, origin, auto) {\n this.runAfter(view => {\n let rerun = 0;\n\n // reset autosize flag\n view._autosize = 0;\n\n // width value changed: update signal, skip resize op\n if (view.width() !== width) {\n rerun = 1;\n view.signal(Width, width, Skip); // set width, skip update calc\n view._resizeWidth.skip(true); // skip width resize handler\n }\n\n // height value changed: update signal, skip resize op\n if (view.height() !== height) {\n rerun = 1;\n view.signal(Height, height, Skip); // set height, skip update calc\n view._resizeHeight.skip(true); // skip height resize handler\n }\n\n // view width changed: update view property, set resize flag\n if (view._viewWidth !== viewWidth) {\n view._resize = 1;\n view._viewWidth = viewWidth;\n }\n\n // view height changed: update view property, set resize flag\n if (view._viewHeight !== viewHeight) {\n view._resize = 1;\n view._viewHeight = viewHeight;\n }\n\n // origin changed: update view property, set resize flag\n if (view._origin[0] !== origin[0] || view._origin[1] !== origin[1]) {\n view._resize = 1;\n view._origin = origin;\n }\n\n // run dataflow on width/height signal change\n if (rerun) view.run('enter');\n if (auto) view.runAfter(v => v.resize());\n }, false, 1);\n}\n","import {transforms} from 'vega-dataflow';\nimport {isArray} from 'vega-util';\n\n/**\n * Get the current view state, consisting of signal values and/or data sets.\n * @param {object} [options] - Options flags indicating which state to export.\n * If unspecified, all signals and data sets will be exported.\n * @param {function(string, Operator):boolean} [options.signals] - Optional\n * predicate function for testing if a signal should be included in the\n * exported state. If unspecified, all signals will be included, except for\n * those named 'parent' or those which refer to a Transform value.\n * @param {function(string, object):boolean} [options.data] - Optional\n * predicate function for testing if a data set's input should be included\n * in the exported state. If unspecified, all data sets that have been\n * explicitly modified will be included.\n * @param {boolean} [options.recurse=true] - Flag indicating if the exported\n * state should recursively include state from group mark sub-contexts.\n * @return {object} - An object containing the exported state values.\n */\nexport function getState(options) {\n return this._runtime.getState(options || {\n data: dataTest,\n signals: signalTest,\n recurse: true\n });\n}\n\nfunction dataTest(name, data) {\n return data.modified\n && isArray(data.input.value)\n && !name.startsWith('_:vega:_');\n}\n\nfunction signalTest(name, op) {\n return !(name === 'parent' || op instanceof transforms.proxy);\n}\n\n/**\n * Sets the current view state and updates the view by invoking run.\n * @param {object} state - A state object containing signal and/or\n * data set values, following the format used by the getState method.\n * @return {View} - This view instance.\n */\nexport function setState(state) {\n this.runAsync(null,\n v => { v._trigger = false; v._runtime.setState(state); },\n v => { v._trigger = true; }\n );\n return this;\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {isArray, isDate, isObject} from 'vega-util';\n\nexport default function(handler, event, item, value) {\n const el = handler.element();\n if (el) el.setAttribute('title', formatTooltip(value));\n}\n\nfunction formatTooltip(value) {\n return value == null ? ''\n : isArray(value) ? formatArray(value)\n : isObject(value) && !isDate(value) ? formatObject(value)\n : value + '';\n}\n\nfunction formatObject(obj) {\n return Object.keys(obj).map(key => {\n const v = obj[key];\n return key + ': ' + (isArray(v) ? formatArray(v) : formatValue(v));\n }).join('\\n');\n}\n\nfunction formatArray(value) {\n return '[' + value.map(formatValue).join(', ') + ']';\n}\n\nfunction formatValue(value) {\n return isArray(value) ? '[\\u2026]'\n : isObject(value) && !isDate(value) ? '{\\u2026}'\n : value;\n}\n","import {ariaLabel} from './aria';\nimport background from './background';\nimport cursor, {setCursor} from './cursor';\nimport {change, data, dataref, insert, remove} from './data';\nimport {events, initializeEventConfig} from './events';\nimport hover from './hover';\nimport finalize from './finalize';\nimport initialize from './initialize';\nimport padding from './padding';\nimport renderToImageURL from './render-to-image-url';\nimport renderToCanvas from './render-to-canvas';\nimport renderToSVG from './render-to-svg';\nimport {resizeRenderer} from './render-size';\nimport runtime from './runtime';\nimport {scale} from './scale';\nimport {initializeResize, resizeView, viewHeight, viewWidth} from './size';\nimport {getState, setState} from './state';\nimport timer from './timer';\nimport defaultTooltip from './tooltip';\nimport trap from './trap';\nimport watchPixelRatio from './watchPixelRatio';\n\nimport {Dataflow, asyncCallback} from 'vega-dataflow';\nimport {locale} from 'vega-format';\nimport {\n CanvasHandler, RenderType, Scenegraph, renderModule\n} from 'vega-scenegraph';\nimport {\n error, extend, hasOwnProperty, inherits, stringValue\n} from 'vega-util';\n\n/**\n * Create a new View instance from a Vega dataflow runtime specification.\n * The generated View will not immediately be ready for display. Callers\n * should also invoke the initialize method (e.g., to set the parent\n * DOM element in browser-based deployment) and then invoke the run\n * method to evaluate the dataflow graph. Rendering will automatically\n * be performed upon dataflow runs.\n * @constructor\n * @param {object} spec - The Vega dataflow runtime specification.\n */\nexport default function View(spec, options) {\n const view = this;\n options = options || {};\n\n Dataflow.call(view);\n if (options.loader) view.loader(options.loader);\n if (options.logger) view.logger(options.logger);\n if (options.logLevel != null) view.logLevel(options.logLevel);\n if (options.locale || spec.locale) {\n const loc = extend({}, spec.locale, options.locale);\n view.locale(locale(loc.number, loc.time));\n }\n\n view._el = null;\n view._elBind = null;\n view._renderType = options.renderer || RenderType.Canvas;\n view._scenegraph = new Scenegraph();\n const root = view._scenegraph.root;\n\n // initialize renderer, handler and event management\n view._renderer = null;\n view._tooltip = options.tooltip || defaultTooltip,\n view._redraw = true;\n view._handler = new CanvasHandler().scene(root);\n view._globalCursor = false;\n view._preventDefault = false;\n view._timers = [];\n view._eventListeners = [];\n view._resizeListeners = [];\n\n // initialize event configuration\n view._eventConfig = initializeEventConfig(spec.eventConfig);\n view.globalCursor(view._eventConfig.globalCursor);\n\n // initialize dataflow graph\n const ctx = runtime(view, spec, options.expr);\n view._runtime = ctx;\n view._signals = ctx.signals;\n view._bind = (spec.bindings || []).map(_ => ({\n state: null,\n param: extend({}, _)\n }));\n\n // initialize scenegraph\n if (ctx.root) ctx.root.set(root);\n root.source = ctx.data.root.input;\n view.pulse(\n ctx.data.root.input,\n view.changeset().insert(root.items)\n );\n\n // initialize view size\n view._width = view.width();\n view._height = view.height();\n view._viewWidth = viewWidth(view, view._width);\n view._viewHeight = viewHeight(view, view._height);\n view._origin = [0, 0];\n view._resize = 0;\n view._autosize = 1;\n initializeResize(view);\n\n // initialize background color\n background(view);\n\n // initialize cursor\n cursor(view);\n\n // initialize view description\n view.description(spec.description);\n\n // initialize hover proessing, if requested\n if (options.hover) view.hover();\n\n // initialize DOM container(s) and renderer\n if (options.container) view.initialize(options.container, options.bind);\n\n if (options.watchPixelRatio) view._watchPixelRatio();\n}\n\nfunction lookupSignal(view, name) {\n return hasOwnProperty(view._signals, name)\n ? view._signals[name]\n : error('Unrecognized signal name: ' + stringValue(name));\n}\n\nfunction findOperatorHandler(op, handler) {\n const h = (op._targets || [])\n .filter(op => op._update && op._update.handler === handler);\n return h.length ? h[0] : null;\n}\n\nfunction addOperatorListener(view, name, op, handler) {\n let h = findOperatorHandler(op, handler);\n if (!h) {\n h = trap(view, () => handler(name, op.value));\n h.handler = handler;\n view.on(op, null, h);\n }\n return view;\n}\n\nfunction removeOperatorListener(view, op, handler) {\n const h = findOperatorHandler(op, handler);\n if (h) op._targets.remove(h);\n return view;\n}\n\ninherits(View, Dataflow, {\n // -- DATAFLOW / RENDERING ----\n\n async evaluate(encode, prerun, postrun) {\n // evaluate dataflow and prerun\n await Dataflow.prototype.evaluate.call(this, encode, prerun);\n\n // render as needed\n if (this._redraw || this._resize) {\n try {\n if (this._renderer) {\n if (this._resize) {\n this._resize = 0;\n resizeRenderer(this);\n }\n await this._renderer.renderAsync(this._scenegraph.root);\n }\n this._redraw = false;\n } catch (e) {\n this.error(e);\n }\n }\n\n // evaluate postrun\n if (postrun) asyncCallback(this, postrun);\n\n return this;\n },\n\n dirty(item) {\n this._redraw = true;\n this._renderer && this._renderer.dirty(item);\n },\n\n // -- GET / SET ----\n\n description(text) {\n if (arguments.length) {\n const desc = text != null ? (text + '') : null;\n if (desc !== this._desc) ariaLabel(this._el, this._desc = desc);\n return this;\n }\n return this._desc;\n },\n\n container() {\n return this._el;\n },\n\n scenegraph() {\n return this._scenegraph;\n },\n\n origin() {\n return this._origin.slice();\n },\n\n signal(name, value, options) {\n const op = lookupSignal(this, name);\n return arguments.length === 1\n ? op.value\n : this.update(op, value, options);\n },\n\n width(_) {\n return arguments.length ? this.signal('width', _) : this.signal('width');\n },\n\n height(_) {\n return arguments.length ? this.signal('height', _) : this.signal('height');\n },\n\n padding(_) {\n return arguments.length\n ? this.signal('padding', padding(_))\n : padding(this.signal('padding'));\n },\n\n autosize(_) {\n return arguments.length ? this.signal('autosize', _) : this.signal('autosize');\n },\n\n background(_) {\n return arguments.length ? this.signal('background', _) : this.signal('background');\n },\n\n renderer(type) {\n if (!arguments.length) return this._renderType;\n if (!renderModule(type)) error('Unrecognized renderer type: ' + type);\n if (type !== this._renderType) {\n this._renderType = type;\n this._resetRenderer();\n }\n return this;\n },\n\n tooltip(handler) {\n if (!arguments.length) return this._tooltip;\n if (handler !== this._tooltip) {\n this._tooltip = handler;\n this._resetRenderer();\n }\n return this;\n },\n\n loader(loader) {\n if (!arguments.length) return this._loader;\n if (loader !== this._loader) {\n Dataflow.prototype.loader.call(this, loader);\n this._resetRenderer();\n }\n return this;\n },\n\n resize() {\n // set flag to perform autosize\n this._autosize = 1;\n // touch autosize signal to ensure top-level ViewLayout runs\n return this.touch(lookupSignal(this, 'autosize'));\n },\n\n _resetRenderer() {\n if (this._renderer) {\n this._renderer = null;\n this.initialize(this._el, this._elBind);\n }\n },\n\n // -- SIZING ----\n _resizeView: resizeView,\n\n // -- EVENT HANDLING ----\n\n addEventListener(type, handler, options) {\n let callback = handler;\n if (!(options && options.trap === false)) {\n // wrap callback in error handler\n callback = trap(this, handler);\n callback.raw = handler;\n }\n this._handler.on(type, callback);\n return this;\n },\n\n removeEventListener(type, handler) {\n var handlers = this._handler.handlers(type),\n i = handlers.length, h, t;\n\n // search registered handlers, remove if match found\n while (--i >= 0) {\n t = handlers[i].type;\n h = handlers[i].handler;\n if (type === t && (handler === h || handler === h.raw)) {\n this._handler.off(t, h);\n break;\n }\n }\n return this;\n },\n\n addResizeListener(handler) {\n const l = this._resizeListeners;\n if (!l.includes(handler)) {\n // add handler if it isn't already registered\n // note: error trapping handled elsewhere, so\n // no need to wrap handlers here\n l.push(handler);\n }\n return this;\n },\n\n removeResizeListener(handler) {\n var l = this._resizeListeners,\n i = l.indexOf(handler);\n if (i >= 0) {\n l.splice(i, 1);\n }\n return this;\n },\n\n addSignalListener(name, handler) {\n return addOperatorListener(this, name, lookupSignal(this, name), handler);\n },\n\n removeSignalListener(name, handler) {\n return removeOperatorListener(this, lookupSignal(this, name), handler);\n },\n\n addDataListener(name, handler) {\n return addOperatorListener(this, name, dataref(this, name).values, handler);\n },\n\n removeDataListener(name, handler) {\n return removeOperatorListener(this, dataref(this, name).values, handler);\n },\n\n globalCursor(_) {\n if (arguments.length) {\n if (this._globalCursor !== !!_) {\n const prev = setCursor(this, null); // clear previous cursor\n this._globalCursor = !!_;\n if (prev) setCursor(this, prev); // swap cursor\n }\n return this;\n } else {\n return this._globalCursor;\n }\n },\n\n preventDefault(_) {\n if (arguments.length) {\n this._preventDefault = _;\n return this;\n } else {\n return this._preventDefault;\n }\n },\n\n timer,\n events,\n finalize,\n hover,\n\n // -- DATA ----\n data,\n change,\n insert,\n remove,\n\n // -- SCALES --\n scale,\n\n // -- INITIALIZATION ----\n initialize,\n\n // -- HEADLESS RENDERING ----\n toImageURL: renderToImageURL,\n toCanvas: renderToCanvas,\n toSVG: renderToSVG,\n\n // -- SAVE / RESTORE STATE ----\n getState,\n setState,\n\n // RE-RENDER ON ZOOM\n _watchPixelRatio: watchPixelRatio\n});\n","import {transforms} from 'vega-dataflow';\nimport {functionContext} from 'vega-functions';\nimport {context} from 'vega-runtime';\n\nexport default function(view, spec, expr) {\n return context(view, transforms, functionContext, expr).parse(spec);\n}\n","export default function(view) {\n // respond to background signal\n view.add(null, _ => {\n view._background = _.bg;\n view._resize = 1;\n return _.bg;\n }, { bg: view._signals.background });\n}\n","import {interval} from 'd3-timer';\n\nexport default function(callback, delay) {\n function tick(elapsed) {\n callback({timestamp: Date.now(), elapsed: elapsed});\n }\n this._timers.push(interval(tick, delay));\n}\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n t._restart = t.restart;\n t.restart = function(callback, delay, time) {\n delay = +delay, time = time == null ? now() : +time;\n t._restart(function tick(elapsed) {\n elapsed += total;\n t._restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n }\n t.restart(callback, delay, time);\n return t;\n}\n","/**\n * Finalize a View instance that is being removed.\n * Cancel any running timers.\n * Remove all external event listeners.\n * Remove any currently displayed tooltip.\n */\nexport default function() {\n var tooltip = this._tooltip,\n timers = this._timers,\n handlers = this._handler.handlers(),\n listeners = this._eventListeners,\n n, m, e, h, t;\n\n n = timers.length;\n while (--n >= 0) {\n timers[n].stop();\n }\n\n n = listeners.length;\n while (--n >= 0) {\n e = listeners[n];\n m = e.sources.length;\n while (--m >= 0) {\n e.sources[m].removeEventListener(e.type, e.handler);\n }\n }\n\n if (tooltip) {\n tooltip.call(this, this._handler, null, null, null);\n }\n\n // turn off all registered handlers\n n = handlers.length;\n while (--n >= 0) {\n t = handlers[n].type;\n h = handlers[n].handler;\n this._handler.off(t, h);\n }\n\n return this;\n}\n","import {error, hasOwnProperty} from 'vega-util';\n\nexport function scale(name) {\n var scales = this._runtime.scales;\n if (!hasOwnProperty(scales, name)) {\n error('Unrecognized scale or projection: ' + name);\n }\n return scales[name].value;\n}\n","import {offset} from './render-size';\nimport trap from './trap';\n\nexport default function(view, prevHandler, el, constructor) {\n // instantiate scenegraph handler\n const handler = new constructor(view.loader(), trap(view, view.tooltip()))\n .scene(view.scenegraph().root)\n .initialize(el, offset(view), view);\n\n // transfer event handlers\n if (prevHandler) {\n prevHandler.handlers().forEach(h => {\n handler.on(h.type, h.handler);\n });\n }\n\n return handler;\n}\n","import renderHeadless from './render-headless';\nimport {RenderType as Type} from 'vega-scenegraph';\nimport {error} from 'vega-util';\n\n/**\n * Produce an image URL for the visualization. Depending on the type\n * parameter, the generated URL contains data for either a PNG or SVG image.\n * The URL can be used (for example) to download images of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @param {string} type - The image type. One of 'svg', 'png' or 'canvas'.\n * The 'canvas' and 'png' types are synonyms for a PNG image.\n * @return {Promise} - A promise that resolves to an image URL.\n */\nexport default async function(type, scaleFactor) {\n if (type !== Type.Canvas && type !== Type.SVG && type !== Type.PNG) {\n error('Unrecognized image type: ' + type);\n }\n\n const r = await renderHeadless(this, type, scaleFactor);\n return type === Type.SVG\n ? toBlobURL(r.svg(), 'image/svg+xml')\n : r.canvas().toDataURL('image/png');\n}\n\nfunction toBlobURL(data, mime) {\n const blob = new Blob([data], {type: mime});\n return window.URL.createObjectURL(blob);\n}\n","import renderHeadless from './render-headless';\nimport {RenderType} from 'vega-scenegraph';\n\n/**\n * Produce a Canvas instance containing a rendered visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to a Canvas instance.\n */\nexport default async function(scaleFactor, opt) {\n const r = await renderHeadless(this, RenderType.Canvas, scaleFactor, opt);\n return r.canvas();\n}\n","import renderHeadless from './render-headless';\nimport {RenderType} from 'vega-scenegraph';\n\n/**\n * Produce a rendered SVG string of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to an SVG string.\n */\nexport default async function(scaleFactor) {\n const r = await renderHeadless(this, RenderType.SVG, scaleFactor);\n return r.svg();\n}\n","export default function() {\n // based on https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio#monitoring_screen_resolution_or_zoom_level_changes\n if (this.renderer() === 'canvas' && this._renderer._canvas) {\n let remove = null;\n const updatePixelRatio = () => {\n if (remove != null) {\n remove();\n }\n const media = matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);\n media.addEventListener('change', updatePixelRatio);\n remove = () => {\n media.removeEventListener('change', updatePixelRatio);\n };\n\n this._renderer._canvas.getContext('2d').pixelRatio = window.devicePixelRatio || 1;\n this._redraw = true;\n this._resize = 1;\n this.resize().runAsync();\n };\n updatePixelRatio();\n }\n}"],"names":["ariaLabel","el","desc","removeAttribute","setAttribute","Default","setCursor","view","cursor","globalCursor","document","body","container","style","removeProperty","dataref","name","data","_runtime","hasOwnProperty","error","change","changes","isChangeSet","dataset","this","modified","pulse","input","width","padding","Math","max","_viewWidth","left","right","height","_viewHeight","top","bottom","offset","origin","_origin","eventExtend","event","item","p","e","translate","r","_renderer","canvas","changedTouches","point","dataflow","vega","itemGroup","mark","marktype","group","i","g","interactive","xy","isString","slice","x","y","constant","extension","VIEW","NO_TRAP","trap","trackEventListener","sources","type","handler","_eventListeners","push","array","permit","key","rule","_eventConfig","isObject","warn","itemFilter","markTarget","source","invoke","_","changeset","encode","element","tag","attr","text","createElement","textContent","e10","sqrt","e5","e2","tickSpec","start","stop","count","step","power","floor","log10","pow","factor","i1","i2","inc","round","tickIncrement","BindClass","NameClass","RadioClass","target","bind","node","param","update","value","signal","addEventListener","set","dispatchEvent","Event","generate","div","class","wrapper","appendChild","form","checkbox","select","radio","range","elements","checked","labels","options","forEach","option","valuesEqual","selected","selectedIndex","n","length","map","label","prepend","nodes","undefined","min","reverse","tickStep","span","a","b","initializeRenderer","constructor","scaleFactor","opt","loader","initialize","background","fn","apply","arguments","lookup","clear","querySelector","number","paddingObject","async","renderHeadless","module","renderModule","ctr","headless","runAsync","renderAsync","_scenegraph","root","Width","Height","Padding","Skip","skip","viewWidth","autosize","contains","viewHeight","dataTest","isArray","startsWith","signalTest","op","transforms","proxy","taskHead","taskTail","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","window","requestAnimationFrame","f","setTimeout","clearNow","Timer","_call","_time","_next","wake","t","call","timerFlush","t0","t2","t1","time","Infinity","sleep","nap","poke","delay","clearTimeout","clearInterval","setInterval","defaultTooltip","formatArray","isDate","obj","Object","keys","v","formatValue","join","formatTooltip","View","spec","Dataflow","logger","logLevel","locale","loc","extend","_el","_elBind","_renderType","renderer","RenderType","Canvas","Scenegraph","_tooltip","tooltip","_redraw","_handler","CanvasHandler","scene","_globalCursor","_preventDefault","_timers","_resizeListeners","config","events","defaults","unpack","k","toSet","initializeEventConfig","eventConfig","ctx","expr","context","functionContext","parse","runtime","_signals","signals","_bind","bindings","state","insert","items","_width","_height","_resize","_autosize","s","w","h","resetSize","_resizeWidth","add","size","_resizeHeight","resizePadding","pad","rank","initializeResize","_background","bg","user","on","description","hover","watchPixelRatio","_watchPixelRatio","lookupSignal","stringValue","findOperatorHandler","_targets","filter","_update","addOperatorListener","removeOperatorListener","remove","prototype","restart","callback","TypeError","inherits","evaluate","prerun","postrun","resize","asyncCallback","dirty","_desc","scenegraph","_resetRenderer","_loader","touch","_resizeView","auto","runAfter","rerun","run","raw","removeEventListener","handlers","off","addResizeListener","l","includes","removeResizeListener","indexOf","splice","addSignalListener","removeSignalListener","addDataListener","values","removeDataListener","prev","preventDefault","timer","total","_restart","tick","elapsed","timestamp","EventStream","send","def","prevent","allow","receive","Array","from","querySelectorAll","finalize","m","timers","listeners","hoverSet","leaveSet","truthy","scale","scales","elBind","initializeAria","Handler","Renderer","prevHandler","initializeHandler","binding","active","debounce","toImageURL","Type","SVG","PNG","mime","blob","Blob","URL","createObjectURL","toBlobURL","svg","toDataURL","toCanvas","toSVG","getState","recurse","setState","_trigger","_canvas","updatePixelRatio","media","matchMedia","devicePixelRatio","getContext","pixelRatio"],"mappings":"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","x_google_ignoreList":[8,17,23]}