!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("vega-util"),require("vega-dataflow"),require("vega-scenegraph"),require("d3-array"),require("vega-functions"),require("vega-runtime"),require("d3-timer"),require("vega-format")):"function"==typeof define&&define.amd?define(["exports","vega-util","vega-dataflow","vega-scenegraph","d3-array","vega-functions","vega-runtime","d3-timer","vega-format"],n):n((e=e||self).vega={},e.vega,e.vega,e.vega,e.d3,e.vega,e.vega,e.d3,e.vega)}(this,(function(e,n,t,r,i,a,s,o,u){"use strict";function l(e,n){e&&(null==n?e.removeAttribute("aria-label"):e.setAttribute("aria-label",n))}function c(e,n){const t=e.globalCursor()?"undefined"!=typeof document&&document.body:e.container();if(t)return null==n?t.style.removeProperty("cursor"):t.style.cursor=n}function d(e,t){var r=e._runtime.data;return n.hasOwnProperty(r,t)||n.error("Unrecognized data set: "+t),r[t]}function h(e,r){t.isChangeSet(r)||n.error("Second argument to changes must be a changeset.");var i=d(this,e);return i.modified=!0,this.pulse(i.input,r)}function g(e){var n=e.padding();return Math.max(0,e._viewWidth+n.left+n.right)}function f(e){var n=e.padding();return Math.max(0,e._viewHeight+n.top+n.bottom)}function p(e){var n=e.padding(),t=e._origin;return[n.left+t[0],n.top+t[1]]}function v(e,t,i){var a,s,o,u=e._renderer,l=u&&u.canvas();return l&&(o=p(e),s=t.changedTouches?t.changedTouches[0]:t,(a=r.point(s,l))[0]-=o[0],a[1]-=o[1]),t.dataflow=e,t.item=i,t.vega=function(e,t,r){var i=t?"group"===t.mark.marktype?t:t.mark.group:null;function a(e){var n,r=i;if(e)for(n=t;n;n=n.mark.group)if(n.mark.name===e){r=n;break}return r&&r.mark&&r.mark.interactive?r:{}}function s(e){if(!e)return r;n.isString(e)&&(e=a(e));for(var t=r.slice();e;)t[0]-=e.x||0,t[1]-=e.y||0,e=e.mark&&e.mark.group;return t}return{view:n.constant(e),item:n.constant(t||{}),group:a,xy:s,x:function(e){return s(e)[0]},y:function(e){return s(e)[1]}}}(e,i,a),t}const _={trap:!1};function m(e,t,r){const i=e._eventConfig&&e._eventConfig[t];return!(!1===i||n.isObject(i)&&!i[r])||(e.warn(`Blocked ${t} ${r} event listener.`),!1)}function w(e){return e.item}function y(e){return e.item.mark.source}function b(e){return function(n,t){return t.vega.view().changeset().encode(t.item,e)}}function z(e,n,t){var r=document.createElement(e);for(var i in n)r.setAttribute(i,n[i]);return null!=t&&(r.textContent=t),r}function k(e,t,r){if(!t)return;const i=r.param;let a=r.state;return a||(a=r.state={elements:null,active:!1,set:null,update:n=>{n!==e.signal(i.signal)&&e.runAsync(null,(function(){a.source=!0,e.signal(i.signal,n)}))}},i.debounce&&(a.update=n.debounce(i.debounce,a.update))),function(e,n,t,r){const i=z("div",{class:"vega-bind"}),a="radio"===t.input?i:i.appendChild(z("label"));a.appendChild(z("span",{class:"vega-bind-name"},t.name||t.signal)),n.appendChild(i);let s=C;switch(t.input){case"checkbox":s=L;break;case"select":s=x;break;case"radio":s=A;break;case"range":s=S}s(e,a,t,r)}(a,t,i,e.signal(i.signal)),a.active||(e.on(e._signals[i.signal],null,()=>{a.source?a.source=!1:a.set(e.signal(i.signal))}),a.active=!0),a}function C(e,n,t,r){const i=z("input");for(const e in t)"signal"!==e&&"element"!==e&&i.setAttribute("input"===e?"type":e,t[e]);i.setAttribute("name",t.signal),i.value=r,n.appendChild(i),i.addEventListener("input",()=>e.update(i.value)),e.elements=[i],e.set=e=>i.value=e}function L(e,n,t,r){const i={type:"checkbox",name:t.signal};r&&(i.checked=!0);const a=z("input",i);n.appendChild(a),a.addEventListener("change",()=>e.update(a.checked)),e.elements=[a],e.set=e=>a.checked=!!e||null}function x(e,n,t,r){const i=z("select",{name:t.signal}),a=t.labels||[];t.options.forEach((e,n)=>{const t={value:e};E(e,r)&&(t.selected=!0),i.appendChild(z("option",t,(a[n]||e)+""))}),n.appendChild(i),i.addEventListener("change",()=>{e.update(t.options[i.selectedIndex])}),e.elements=[i],e.set=e=>{for(let n=0,r=t.options.length;n{const o={type:"radio",name:t.signal,value:n};E(n,r)&&(o.checked=!0);const u=z("input",o);u.addEventListener("change",()=>e.update(n));const l=z("label",{},(a[s]||n)+"");return l.prepend(u),i.appendChild(l),u}),e.set=n=>{const t=e.elements,r=t.length;for(let e=0;e{l.textContent=u.value,e.update(+u.value)};u.addEventListener("input",c),u.addEventListener("change",c),e.elements=[u],e.set=e=>{u.value=e,l.textContent=e}}function E(e,n){return e===n||e+""==n+""}function D(e,n,t,r,i,a){return(n=n||new r(e.loader())).initialize(t,g(e),f(e),p(e),i,a).background(e.background())}function R(e,n){return n?function(){try{n.apply(this,arguments)}catch(n){e.error(n)}}:null}function T(e,n){if("string"==typeof n){if("undefined"==typeof document)return e.error("DOM document instance not found."),null;if(!(n=document.querySelector(n)))return e.error("Signal bind element not found: "+n),null}if(n)try{n.innerHTML=""}catch(t){n=null,e.error(t)}return n}const O=e=>+e||0;function j(e){return n.isObject(e)?{top:O(e.top),bottom:O(e.bottom),left:O(e.left),right:O(e.right)}:(e=>({top:e,bottom:e,left:e,right:e}))(O(e))}async function H(e,t,i,a){const s=r.renderModule(t),o=s&&s.headless;return o||n.error("Unrecognized renderer type: "+t),await e.runAsync(),D(e,null,null,o,i,a).renderAsync(e._scenegraph.root)}var U={skip:!0};function q(e,n){var t=e.autosize(),r=e.padding();return n-(t&&"padding"===t.contains?r.left+r.right:0)}function M(e,n){var t=e.autosize(),r=e.padding();return n-(t&&"padding"===t.contains?r.top+r.bottom:0)}function W(e,t){return t.modified&&n.isArray(t.input.value)&&e.indexOf("_:vega:_")}function V(e,n){return!("parent"===e||n instanceof t.transforms.proxy)}function P(e,t,r,i){var a=e.element();a&&a.setAttribute("title",function(e){return null==e?"":n.isArray(e)?B(e):n.isObject(e)&&!n.isDate(e)?(t=e,Object.keys(t).map((function(e){var r=t[e];return e+": "+(n.isArray(r)?B(r):G(r))})).join("\n")):e+"";var t}(i))}function B(e){return"["+e.map(G).join(", ")+"]"}function G(e){return n.isArray(e)?"[…]":n.isObject(e)&&!n.isDate(e)?"{…}":e}function I(e,i){const o=this;if(i=i||{},t.Dataflow.call(o),i.loader&&o.loader(i.loader),i.logger&&o.logger(i.logger),null!=i.logLevel&&o.logLevel(i.logLevel),i.locale||e.locale){const t=n.extend({},e.locale,i.locale);o.locale(u.locale(t.number,t.time))}o._el=null,o._elBind=null,o._renderType=i.renderer||r.RenderType.Canvas,o._scenegraph=new r.Scenegraph;const l=o._scenegraph.root;o._renderer=null,o._tooltip=i.tooltip||P,o._redraw=!0,o._handler=(new r.CanvasHandler).scene(l),o._globalCursor=!1,o._preventDefault=!1,o._timers=[],o._eventListeners=[],o._resizeListeners=[],o._eventConfig=function(e){const t=n.extend({defaults:{}},e),r=(e,t)=>{t.forEach(t=>{n.isArray(e[t])&&(e[t]=n.toSet(e[t]))})};return r(t.defaults,["prevent","allow"]),r(t,["view","window","selector"]),t}(e.eventConfig),o.globalCursor(o._eventConfig.globalCursor);const d=function(e,n,r){return s.context(e,t.transforms,a.functionContext,r).parse(n)}(o,e,i.expr);o._runtime=d,o._signals=d.signals,o._bind=(e.bindings||[]).map(e=>({state:null,param:n.extend({},e)})),d.root&&d.root.set(l),l.source=d.data.root.input,o.pulse(d.data.root.input,o.changeset().insert(l.items)),o._width=o.width(),o._height=o.height(),o._viewWidth=q(o,o._width),o._viewHeight=M(o,o._height),o._origin=[0,0],o._resize=0,o._autosize=1,function(e){var n=e._signals,t=n.width,r=n.height,i=n.padding;function a(){e._autosize=e._resize=1}e._resizeWidth=e.add(null,(function(n){e._width=n.size,e._viewWidth=q(e,n.size),a()}),{size:t}),e._resizeHeight=e.add(null,(function(n){e._height=n.size,e._viewHeight=M(e,n.size),a()}),{size:r});var s=e.add(null,a,{pad:i});e._resizeWidth.rank=t.rank+1,e._resizeHeight.rank=r.rank+1,s.rank=i.rank+1}(o),function(e){e.add(null,n=>(e._background=n.bg,e._resize=1,n.bg),{bg:e._signals.background})}(o),function(e){const t=e._signals.cursor||(e._signals.cursor=e.add({user:"default",item:null}));e.on(e.events("view","mousemove"),t,(function(e,r){const i=t.value,a=i?n.isString(i)?i:i.user:"default",s=r.item&&r.item.cursor||null;return i&&a===i.user&&s==i.item?i:{user:a,item:s}})),e.add(null,(function(t){let r=t.cursor,i=this.value;return n.isString(r)||(i=r.item,r=r.user),c(e,r&&"default"!==r?r:i||r),i}),{cursor:t})}(o),o.description(e.description),i.hover&&o.hover(),i.container&&o.initialize(i.container,i.bind)}var $=n.inherits(I,t.Dataflow);function N(e,t){return n.hasOwnProperty(e._signals,t)?e._signals[t]:n.error("Unrecognized signal name: "+n.stringValue(t))}function F(e,n){const t=(e._targets||[]).filter(e=>e._update&&e._update.handler===n);return t.length?t[0]:null}function J(e,n,t,r){var i=F(t,r);return i||((i=R(e,()=>r(n,t.value))).handler=r,e.on(t,null,i)),e}function K(e,n,t){var r=F(n,t);return r&&n._targets.remove(r),e}$.evaluate=async function(e,n,r){if(await t.Dataflow.prototype.evaluate.call(this,e,n),this._redraw||this._resize)try{this._renderer&&(this._resize&&(this._resize=0,a=p(i=this),s=g(i),o=f(i),i._renderer.background(i.background()),i._renderer.resize(s,o,a),i._handler.origin(a),i._resizeListeners.forEach((function(e){try{e(s,o)}catch(e){i.error(e)}}))),await this._renderer.renderAsync(this._scenegraph.root)),this._redraw=!1}catch(e){this.error(e)}var i,a,s,o;return r&&t.asyncCallback(this,r),this},$.dirty=function(e){this._redraw=!0,this._renderer&&this._renderer.dirty(e)},$.description=function(e){if(arguments.length){const n=null!=e?e+"":null;return n!==this._desc&&l(this._el,this._desc=n),this}return this._desc},$.container=function(){return this._el},$.scenegraph=function(){return this._scenegraph},$.origin=function(){return this._origin.slice()},$.signal=function(e,n,t){var r=N(this,e);return 1===arguments.length?r.value:this.update(r,n,t)},$.width=function(e){return arguments.length?this.signal("width",e):this.signal("width")},$.height=function(e){return arguments.length?this.signal("height",e):this.signal("height")},$.padding=function(e){return arguments.length?this.signal("padding",j(e)):j(this.signal("padding"))},$.autosize=function(e){return arguments.length?this.signal("autosize",e):this.signal("autosize")},$.background=function(e){return arguments.length?this.signal("background",e):this.signal("background")},$.renderer=function(e){return arguments.length?(r.renderModule(e)||n.error("Unrecognized renderer type: "+e),e!==this._renderType&&(this._renderType=e,this._resetRenderer()),this):this._renderType},$.tooltip=function(e){return arguments.length?(e!==this._tooltip&&(this._tooltip=e,this._resetRenderer()),this):this._tooltip},$.loader=function(e){return arguments.length?(e!==this._loader&&(t.Dataflow.prototype.loader.call(this,e),this._resetRenderer()),this):this._loader},$.resize=function(){return this._autosize=1,this.touch(N(this,"autosize"))},$._resetRenderer=function(){this._renderer&&(this._renderer=null,this.initialize(this._el,this._elBind))},$._resizeView=function(e,n,t,r,i,a){this.runAfter((function(s){var o=0;s._autosize=0,s.width()!==t&&(o=1,s.signal("width",t,U),s._resizeWidth.skip(!0)),s.height()!==r&&(o=1,s.signal("height",r,U),s._resizeHeight.skip(!0)),s._viewWidth!==e&&(s._resize=1,s._viewWidth=e),s._viewHeight!==n&&(s._resize=1,s._viewHeight=n),s._origin[0]===i[0]&&s._origin[1]===i[1]||(s._resize=1,s._origin=i),o&&s.run("enter"),a&&s.runAfter(e=>e.resize())}),!1,1)},$.addEventListener=function(e,n,t){var r=n;return t&&!1===t.trap||((r=R(this,n)).raw=n),this._handler.on(e,r),this},$.removeEventListener=function(e,n){for(var t,r,i=this._handler.handlers(e),a=i.length;--a>=0;)if(r=i[a].type,t=i[a].handler,e===r&&(n===t||n===t.raw)){this._handler.off(r,t);break}return this},$.addResizeListener=function(e){var n=this._resizeListeners;return n.indexOf(e)<0&&n.push(e),this},$.removeResizeListener=function(e){var n=this._resizeListeners,t=n.indexOf(e);return t>=0&&n.splice(t,1),this},$.addSignalListener=function(e,n){return J(this,e,N(this,e),n)},$.removeSignalListener=function(e,n){return K(this,N(this,e),n)},$.addDataListener=function(e,n){return J(this,e,d(this,e).values,n)},$.removeDataListener=function(e,n){return K(this,d(this,e).values,n)},$.globalCursor=function(e){if(arguments.length){if(this._globalCursor!==!!e){const n=c(this,null);this._globalCursor=!!e,n&&c(this,n)}return this}return this._globalCursor},$.preventDefault=function(e){return arguments.length?(this._preventDefault=e,this):this._preventDefault},$.timer=function(e,n){this._timers.push(o.interval((function(n){e({timestamp:Date.now(),elapsed:n})}),n))},$.events=function(e,n,r){var i,a=this,s=new t.EventStream(r),o=function(t,r){a.runAsync(null,()=>{"view"===e&&function(e,n){var t=e._eventConfig.defaults,r=t.prevent,i=t.allow;return!1!==r&&!0!==i&&(!0===r||!1===i||(r?r[n]:i?!i[n]:e.preventDefault()))}(a,n)&&t.preventDefault(),s.receive(v(a,t,r))})};if("timer"===e)m(a,"timer",n)&&a.timer(o,n);else if("view"===e)m(a,"view",n)&&a.addEventListener(n,o,_);else if("window"===e?m(a,"window",n)&&"undefined"!=typeof window&&(i=[window]):"undefined"!=typeof document&&m(a,"selector",n)&&(i=document.querySelectorAll(e)),i){for(var u=0,l=i.length;u=0;)i[e].stop();for(e=a.length;--e>=0;)for(n=(t=a[e]).sources.length;--n>=0;)t.sources[n].removeEventListener(t.type,t.handler);return r&&r.call(this,this._handler,null,null,null),this},$.hover=function(e,n){return n=[n||"update",(e=[e||"hover"])[0]],this.on(this.events("view","mouseover",w),y,b(e)),this.on(this.events("view","mouseout",w),y,b(n)),this},$.data=function(e,r){return arguments.length<2?d(this,e).values.value:h.call(this,e,t.changeset().remove(n.truthy).insert(r))},$.change=h,$.insert=function(e,n){return h.call(this,e,t.changeset().insert(n))},$.remove=function(e,n){return h.call(this,e,t.changeset().remove(n))},$.scale=function(e){var t=this._runtime.scales;return n.hasOwnProperty(t,e)||n.error("Unrecognized scale or projection: "+e),t[e].value},$.initialize=function(e,n){const t=this,i=t._renderType,a=t._eventConfig.bind,s=r.renderModule(i);e=t._el=e?T(t,e):null,function(e){const n=e.container();n&&(n.setAttribute("role","graphics-document"),n.setAttribute("aria-roleDescription","visualization"),l(n,e.description()))}(t),s||t.error("Unrecognized renderer type: "+i);const o=s.handler||r.CanvasHandler,u=e?s.renderer:s.headless;return t._renderer=u?D(t,t._renderer,e,u):null,t._handler=function(e,n,t,r){var i=new r(e.loader(),R(e,e.tooltip())).scene(e.scenegraph().root).initialize(t,p(e),e);return n&&n.handlers().forEach((function(e){i.on(e.type,e.handler)})),i}(t,t._handler,e,o),t._redraw=!0,e&&"none"!==a&&(n=n?t._elBind=T(t,n):e.appendChild(z("form",{class:"vega-bindings"})),t._bind.forEach((function(e){e.param.element&&"container"!==a&&(e.element=T(t,e.param.element))})),t._bind.forEach((function(e){k(t,e.element||n,e)}))),t},$.toImageURL=async function(e,t){e!==r.RenderType.Canvas&&e!==r.RenderType.SVG&&e!==r.RenderType.PNG&&n.error("Unrecognized image type: "+e);const i=await H(this,e,t);return e===r.RenderType.SVG?function(e,n){var t=new Blob([e],{type:n});return window.URL.createObjectURL(t)}(i.svg(),"image/svg+xml"):i.canvas().toDataURL("image/png")},$.toCanvas=async function(e,n){return(await H(this,r.RenderType.Canvas,e,n)).canvas()},$.toSVG=async function(e){return(await H(this,r.RenderType.SVG,e)).svg()},$.getState=function(e){return this._runtime.getState(e||{data:W,signals:V,recurse:!0})},$.setState=function(e){return this.runAsync(null,n=>{n._trigger=!1,n._runtime.setState(e)},e=>{e._trigger=!0}),this},e.View=I,Object.defineProperty(e,"__esModule",{value:!0})}));