d3-view
Version:
View-model d3 plugin for building interactive data-driven web interfaces
4 lines (3 loc) • 40.7 kB
JavaScript
// d3-view v1.5.2 Copyright 2018 quantmind.com
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("d3-let"),require("d3-selection"),require("d3-transition"),require("d3-timer"),require("d3-dispatch")):"function"==typeof define&&define.amd?define(["exports","d3-let","d3-selection","d3-transition","d3-timer","d3-dispatch"],t):t(e.d3=e.d3||{},e.d3,e.d3,e.d3,e.d3,e.d3)}(this,function(e,t,r,n,i,s){"use strict";const o=new RegExp("^([a-z]+://|//)"),a=new RegExp("^[.]{0,2}/"),l=Array.prototype.hasOwnProperty,u=new Map,c=(e,t)=>{var r=u.get(e),n=e,i=null,s="undefined"!=typeof location?location:"";if(t&&("string"==typeof t.base&&(s=t.base),i=f(t.path)),r?(i=i||r.main,n=v(r.origin||n),r.version&&(n=`${e}@${r.version}`),i&&(n=`${n}/${i}`)):i&&(o.test(n)?n=new URL(n,s).origin:a.test(n)&&(n=""),n=`${n}/${i}`),o.test(n))return n;if(a.test(n))return new URL(n,s).href;if(!n.length||/^[\s._]/.test(n)||/\s$/.test(n))throw new Error("illegal name");return"https://unpkg.com/"+n},p=(e,t)=>{const r=new Map,n=[],i=n.map,s=n.some,o=()=>t||"undefined"==typeof window?t:window,a=i=>s=>{var l=e(s+"",i),u=r.get(l);return u||r.set(l,u=new Promise((e,r)=>{const i=(t=o()).document.createElement("script");i.onload=function(){try{e(n.pop()(a(l)))}catch(e){r(new Error("invalid module"))}i.remove()},i.onerror=function(){r(new Error("unable to load module")),i.remove()},i.async=!0,i.src=l,t.define=c,t.document.head.appendChild(i)})),u},l=a(null);function u(e){return arguments.length>1?Promise.all(i.call(arguments,l)).then(m):l(e)}return u.root=o,c.amd={},u;function c(e,t,r){arguments.length<3&&(r=t,t=e),arguments.length<2&&(r=t,t=[]),n.push(s.call(t,d)?function(e){var n={};return Promise.all(i.call(t,function(t){return d(t+="")?n:e(t)})).then(function(e){return r.apply(null,e),n})}:function(e){return Promise.all(i.call(t,e)).then(function(e){return"function"==typeof r?r.apply(null,e):r})})}},h=p(c),d=e=>e+""=="exports",f=e=>("string"==typeof e&&"/"===e.substring(0,1)&&(e=e.substring(1)),e),v=e=>("string"==typeof e&&"/"===e.substring(e.length-1)&&(e=e.substring(0,e.substring)),e),m=e=>{for(var t,r,n={},i=-1,s=e.length;++i<s;)for(r in t=e[i])l.call(t,r)&&(null==t[r]?Object.defineProperty(n,r,{get:g(t,r)}):n[r]=t[r]);return n},g=(e,t)=>()=>e[t];t.logger.debug=null;var y={require:h,resolve:c,logger:t.logger,readyCallbacks:[],setDebug(e){!arguments.length||e?this.logger.debug=t.isFunction(e)?e:$:this.logger.debug=null},fetch:t.inBrowser?window.fetch:null};function $(e){this.info(e)}function b(e,t){this.response=e,this.data=t,this.status=e.status,this.headers=e.headers,this.description=e.statusText}function w(e,t,r){this.response=e,this.data=t,this.status=e.status,this.headers=e.headers,this.description=r||e.statusText}function E(e){var t=(e.headers.get("content-type")||"").split(";")[0];if("application/json"===t)return e.json().then(t=>new b(e,t));var r=e.status<300?`Expected "application/json" content type, got "${t}"`:null;throw new w(e,null,r)}function _(e){if(e.status<300)return e.text().then(t=>new b(e,t));throw new w(e)}w.prototype=Error.prototype;var x=e=>e&&t.isFunction(e.size)?e:r.select(e);var O=e=>y.logger.warn(`[d3-view] ${e}`);const A=(e,r)=>{if(t.isString(e)){if(!r)return e;var n=C(e);if(!n)return e;e=n}return e(r)},P=(e,t,n)=>{n=n||document;var i=r.select(n.createElement("div"));i.html(A(e,t));var s=i.node().children;return 1!==s.length&&O(`viewElement function should return one root element only, got ${s.length}`),s[0]},C=e=>{var t=y.compileTemplate;if(t)return t(e);O("No compileTemplate function available in viewProviders, cannot render template")};var M={ownerDocument:null,isd3:!0,providers:y,viewElement(e,t,r){return P(e,t,r||this.ownerDocument)},select(e){return"string"==typeof e?r.select(this.ownerDocument||document).select(e):r.select(e)},selectAll(e){return"string"==typeof e?r.select(this.ownerDocument||document).selectAll(e):r.selectAll(e)},fetch(e,t){var r=y.fetch;return 1==arguments.length?r(e):r(e,t)},fetchText(e,...t){return this.fetch(e,...t).then(_)},json(e,...t){return this.fetch(e,...t).then(E)},renderFromUrl(e,t,r=!0){var n=this.cache;return n.has(e)?Promise.resolve(L(n.get(e),t,r)):this.fetchText(e).then(i=>(n.set(e,i.data),L(i.data,t,r)))},renderFromDist(e,t,r,n=!0){var i=y.resolve;return this.renderFromUrl(i(e,{path:t}),r,n)},on(e,t,n){if(e=x(e),null===n)return e.on(t,null);e.on(t,()=>n(r.event))},selectChildren(e){return arguments.length||(e=this.el),this.selectAll(Array.prototype.slice.call(e.children))},domEvent:()=>r.event,logError(e){return e.stack?y.logger.error(e):y.logger.error(`[${this.name}] ${e}`),this},logWarn(e){return y.logger.warn(`[${this.name}] ${e}`),this},logInfo(e){return y.logger.info(`[${this.name}] ${e}`),this},logDebug(e){return y.logger.debug&&y.logger.debug(`[${this.name}] ${e}`),this},require(){const e=this.ownerDocument.defaultView;e.d3||(e.d3={});let t=e.d3.require;return t||(t=this.providers.require.root()===e?this.providers.require:p(c,e),e.d3.require=t),t.apply(void 0,arguments)}};const L=(e,t,r)=>r?P(e,t):A(e,t);y.transition={duration:0};var D=Object.assign(M,{transition(e){arguments.length||(e=this.sel);var t=this.transitionDuration(e);if(t>0)return e.transition(this.uid).duration(t)},transitionDuration(e){return arguments.length||(e=this.sel),e&&e.size()?+(e.attr("data-transition-duration")||y.transition.duration):0}});const j='<div class="form-group">\n<slot></slot>\n</div>';const N={input:["error","inputGroup","label","help","formGroup"],checkbox:["error","formCheck","help","formGroup"],textarea:["error","label","help","formGroup"],select:["error","label","help","formGroup"],submit:["submit"],wrappers:{error:(e,t)=>e.wrapTemplate(t,'<slot></slot><div class="invalid-feedback" d3-html="error"></div>'),label:function(e,t){var r=e.props;return e.wrapTemplate(t,function(e){var t=e.label||e.name;return`<label for=${e.id} class="control-label" d3-class="[srOnly ? 'sr-only' : null]">${t}</label>\n<slot></slot>`}(r))},formGroup:(e,t,r)=>{var n=e.props,i=void 0!==n.size?n.size:n.form.props.size,s=i?`form-control form-control-${i}`:"form-control";return r.classed(s,!0).attr("d3-class",`[${n.required||!1} ? "form-control-required" : null, showError ? "is-invalid" : null]`),e.wrapTemplate(t,'<div class="form-group"><slot></slot></div>')},inputGroup:function(e,t,r){var n=e.props.group;if(!n)return t;var i=`g${r.attr("id")}`;return r.attr("aria-describedby",i),e.wrapTemplate(t,function(e,t){return`\n <div class="input-group">\n <div class="input-group-prepend">\n <span class="input-group-text" id="${e}">${t}</span>\n </div>\n <slot></slot>\n </div>\n `}(i,n))},formCheck:function(e,t,r){var n=e.props;return r.classed("custom-control-input",!0),e.wrapTemplate(t,function(e){return`\n <div class="custom-control custom-checkbox">\n <slot></slot>\n <label class="custom-control-label" for="${e.id}">${e.label}</label>\n </div>\n `}(n))},submit:function(e,t,r){var n=e.props.theme||"primary";return r.classed("btn",!0).classed(`btn-${n}`,!0),e.wrapTemplate(t,j)},help:function(e,t,r){var n=e.props;return n.help?(r.attr("aria-describedby",`help-${n.id}`),e.wrapTemplate(t,function(e){return`<slot></slot><small id="help-${e.id}" class="form-text text-muted">${e.help}</small>`}(n))):t}}};var R={install(e){if(!e.$formExtensions)return e.logWarn("form bootstrap requires the form plugin installed first!");e.$formExtensions.push(I)}};function I(e,t,r){var n=N[r.attr("type")]||N[r.node().tagName.toLowerCase()];if(!n)return t;let i;return n.forEach(n=>{(i=N.wrappers[n])?t=i(e,t,r):e.logWarn(`Could not find form field wrapper ${n}`)}),t}var T={submit:function(e){var r=this.$$view,n=r.props.form,i=t.assign({},S,this.props.endpoint);e&&(e.preventDefault(),e.stopPropagation());var s=n.$inputData(),o={};if(!i.url)return void r.logError("No url, cannot submit form");if("application/json"===i.contentType)o.headers={"Content-Type":i.contentType},o.body=JSON.stringify(s);else for(var a in o.body=new FormData,s)o.body.append(a,s[a]);n.$setSubmit()?(o.method=i.method,r.json(i.url,o).then(l,l)):n.$setSubmitDone();function l(e){n.$setSubmitDone(),e.status&&e.headers?n.$response(e):n.$emit("formMessage",{level:"error",message:k[e.message]||k.default})}}};const k={default:"<strong>Error!</strong> Could not submit form"},S={contentType:"application/json",method:"POST"};var q=new Map([["disabled","disabled"],["readonly","readOnly"],["required","required"]]);const X={text:"input",email:"input",password:"input",checkbox:"input",number:"input",date:"input",url:"input","datetime-local":"input"},F=e=>{var t=e.type||"text";return X[t]||t};function U(e){var t=F(e);return document.createElement(`d3-form-${t}`)}const W={props:["form"],addChildren(e,r){var n=this.props.children;if(n){if(!t.isArray(n))return this.logError(`children should be an array of fields, got ${typeof n}`),e;r&&n.forEach(e=>{e.form=r}),e.selectAll(".d3form").data(n).enter().append(U).attr("form","form").classed("d3form",!0)}return e},init(e){return((e,r)=>{var n,i;if(t.isObject(r))for(i in r)n=r[i],t.isObject(n)&&(n=JSON.stringify(n)),e.attr(i,n||"")})(e,this.props.attributes),q.forEach((r,n)=>{var i=this.props[n];i&&(t.isString(i)?e.attr(`d3-attr-${n}`,i):e.property(r,!0))}),e},wrap(e){var t=e;return this.root.$formExtensions.forEach(r=>{t=r(this,t,e)||t}),t},wrapTemplate(e,t){var r=this.createElement("div").html(t),n=r.select("slot");if(!n.size())return this.logWarn("template does not provide a slot element"),e;var i=this.select(n.node().parentNode);return e.nodes().forEach(function(e){i.insert(()=>e,"slot")}),n.remove(),this.selectAll(r.node().children)}};var B=t.assign({},W,{model:{value:null,error:"",isDirty:null,changed:!1,srOnly:!1,placeholder:"",showError:{reactOn:["error","isDirty"],get(){return!!this.error&&this.isDirty}},$validate(){}},init(e){W.init.call(this,e);const t=this.props,r=this.model;return t.name?(e.attr("name",t.name),t.placeholder||(t.placeholder=t.label||t.name),r.name=t.name,r.$on("value",()=>{null===r.isDirty?r.isDirty=!1:(r.isDirty=!0,r.changed=!0),t.form.$change(),r.$emit("formFieldChange",r)}),e):(this.logError("Input field without a name"),e)},mounted(){this.props.form.inputs[this.props.name]=this.model}}),z=e=>(e&&e.constructor===Object&&(e=Object.entries(e)),new Map(e));var Y=z({required:{set(e,t){t.required&&e.property("required",!0)},validate(e,t){if(e.property("required")){if(!t)return"required";if(""===t)return!0}}},minLength:{set(e,t){var r=+t.minLength;r==r&&e.attr("minlength",r)},validate(e,t){var r=+e.attr("minlength");if(r==r&&r>0&&t.length<r)return`too short - ${r} characters or more expected`}},maxLength:{set(e,t){var r=+t.maxLength;r==r&&e.attr("maxlength",r)},validate(e,t){var r=+e.attr("maxlength");if(r==r&&r>0&&t&&t.length>r)return`too long - ${r} characters or less expected`}},minimum:{set(e,t){var r=+t.minimum;r==r&&e.attr("min",r)},validate(e,t){var r=G(e);if(r&&+t<r[0])return`must be greater or equal ${r[0]}`}},maximum:{set(e,t){var r=+t.maximum;r==r&&e.attr("max",r)},validate(e,t){var r=G(e);if(r&&+t>r[1])return`must be less or equal ${r[1]}`}}});const G=e=>{var t=e.attr("min"),r=e.attr("max");return[t=null===t?-1/0:+t,r=null===r?1/0:+r]};var H=(e,t)=>{Y.forEach(r=>{r.set&&r.set(t,e.props)}),e.model.$on("value.validate",V),e.model.$validate=V};function V(){var e,t=this.$$view,r=this.value,n=t.sel.attr("id")===this.props.id?t.sel:t.sel.select(`#${this.props.id}`);for(let t of Y.values())if(e=t.validate(n,r)){!0===e&&(e="");break}this.error=e||""}const J=["checkbox","radio"];var Z=t.assign({},B,{render(){const e=this.init(this.createElement("input",!0));return e.attr("type",this.props.type||"text").attr("d3-value","value"),-1===J.indexOf(e.attr("type"))&&this.props.placeholder&&e.attr("placeholder",this.props.placeholder),H(this,e),this.wrap(e)}}),K=t.assign({},B,{model:t.assign({options:[]},B.model),render(){const e=this.init(this.createElement("select",!0));return this.model.options=Q(this.model.options),e.attr("d3-value","value").attr("placeholder",this.props.placeholder).append("option").attr("d3-for","option in options").attr("d3-html","option.label").attr("d3-attr-value","option.value"),H(this,e),this.wrap(e)}});const Q=e=>(t.isArray(e)||(e=[]),e.forEach((r,n)=>{t.isArray(r)?r={value:r[0],label:r[1]||r[0]}:t.isString(r)&&(r={value:r,label:r}),e[n]=r}),e);var ee=t.assign({},W,{render(){const e=this.props.tag||"fieldset",t=this.init(this.createElement(e,!0));return this.addChildren(t)}}),te=t.assign({},W,{model:{$submit(){this.$event&&this.$event.defaultPrevented||this.props.form.actions.submit.call(this,this.$event)}},render(){const e=this.props.tag||"button",t=this.init(this.createElement(e,!0));return t.attr("type",this.props.type||"submit").attr("name",this.props.name||"_submit_").attr("d3-on-click","$submit()").html(this.props.label||"submit"),this.wrap(t)}}),re=t.assign({},B,{render(){var e=this.init(this.createElement("textarea",!0));return e.attr("placeholder",this.props.placeholder).attr("d3-value","value"),H(this,e),this.wrap(e)}}),ne={default:function(e){var t=e.status<300?"info":e.status<500?"warning":"error";this.$emit("formMessage",{level:t,data:e.data,response:e})},redirect:function(e){this.$$view.providers.location.href=e.data.redirectTo||"/"}};var ie=t.assign({},W,{props:["url","values","form"],components:{"d3-form-fieldset":ee,"d3-form-input":Z,"d3-form-textarea":re,"d3-form-select":K,"d3-form-submit":te},model:{form:null,formSubmitted:!1,formPending:!1,$isValid(e){let t,r=!0;for(var n in this.inputs)t=this.inputs[n],e&&(t.isDirty=!0),t.$validate(),t.error&&(r=!1);return r},$setSubmit(){return this.formSubmitted=!0,this.formPending=!0,this.$isValid(!0)},$setSubmitDone(){this.formPending=!1},$inputData(){var e,t=this.inputs,r={};for(var n in t)((e=t[n].value)||Z.changed)&&(r[n]=e);return r},$response(e){if(e.data)if(this.props.resultHandler){var t=ne[this.props.resultHandler];t?t.call(this,e):this.$$view.logError(`Could not find ${this.props.resultHandler} result handler`)}else ne.default.call(this,e);else this.$responseError(e)},$responseError(e){this.$emit("formMessage",{level:"error",data:e.data,response:e})}},render(){return this.props.url?this.json(this.props.url).then(e=>this.build(e.data)):this.build()},childrenMounted(){var e=this.model,t=this.props.values;t&&Object.keys(t).forEach(r=>{var n=e.inputs[r];n&&(n.value=t[r])})},build(e){e&&(this.props=t.assign(this.props,e));const r=this.init(this.createElement("form",!0).attr("novalidate","")),n=this.model;for(var i in n.$formExtensions=this.root.$formExtensions||[],n.inputs={},n.actions={},T){var s=this.props[i];t.isString(s)&&(s=this.model.$get(s)),n.actions[i]=s||T[i]}return this.addChildren(r,n)}}),se={install(e){e.addComponent("d3form",ie),e.$formExtensions=[]},actions:T,responses:ne,validators:Y};if(t.inBrowser&&window.MutationObserver){new window.MutationObserver(function(e){let t,n,i,s;e.forEach(e=>{if((n=e.removedNodes)&&n.length){s=e.target?r.select(e.target).view():null;for(let e=0;e<n.length;++e)(i=n[e]).querySelectorAll&&!i.__d3_component__&&(t=r.select(i),(s||t.view())&&(t.selectAll("*").each(oe),oe.call(n[e])))}})}).observe(document.documentElement,{childList:!0,subtree:!0})}function oe(){var e=this.__d3_directives__,t=this.__d3_view__;e&&(e.all.forEach(e=>e.destroy()),delete this.__d3_directives__),t&&(t.destroy(),delete this.__d3_view__)}let ae=0;const le="d3v";function ue(e){var t=le+ ++ae;return arguments.length?(Object.defineProperty(e,"uid",{get:function(){return t}}),e):t}var ce=(e,t)=>{let r,n,s=null;function o(...o){return r=this,n=o,null!==s?s:s=new Promise((o,a)=>{i.timeout(()=>{s=null;try{o(e?e.apply(r,n):void 0)}catch(e){a(e)}},t)})}return o.promise=(()=>s),o},pe=()=>{let e=0;const t=s.dispatch("change");function r(){t.apply("change",this,arguments),e+=1}return{change:r,on(e,r){return arguments.length<2?t.on(e):(t.on(e,r),this)},trigger:ce(r),triggered:()=>e}};function he(e,t,r,n){var i=new Map,s=null;i.set("",pe()),Object.defineProperties(ue(e),{$events:{get:()=>i},parent:{get:()=>r},isolated:{get:()=>n}}),e.$child=function(t){null===s&&(s=function(e){function t(t){he(this,t,e,!1)}return t.prototype=e,t}(e));return new s(t)},e.$update(t)}var de=(e,t=0)=>Array.prototype.slice.call(e,t);const fe=new Set([Boolean,String,Number]);function ve(e){return e?e.constructor===Array?e.map(ve):"function"==typeof e.$data?e.$data():fe.has(e.constructor)?e:void 0:e}function me(e,t){t?e.on(`change.${t}`,null):e.on("change",null)}var ge=e=>e&&e.constructor===Object;const ye=e=>t.isObject(e)&&"[object d3Model]"===e.toString(),$e=(e,r,n)=>{var i;function s(t){if(i&&(t=i.get.call(e)),t!==n){if(y.logger.debug){var s=e.$$name||"model";y.logger.debug(`[d3-model] updating ${s}.${r}`)}e.$change(r,n).$change(),n=o(t,n)}}function o(r,n){return r===n?n:t.isArray(r)?function(e,r){ye(r)&&r.$off();t.isArray(r)||(r=[]);for(let t=0;t<e.length;++t)e[t]=o(e[t],r[t]);return e}(r,n):ye(n)?function(e,t){return ge(e)?(t.$update(e),t):(t.$off(),o(e))}(r,n):ge(r)?e.$new(r):r}e.$events.set(r,pe()),Object.defineProperty(e,r,function(){var o={get:function(){return n}};t.isFunction(n)&&(n={get:n});ge(n)&&t.isFunction(n.get)?(n=(i=n).get.call(e),i.reactOn?i.reactOn.forEach(t=>{e.$on(`${t}.${r}`,s)}):e.$logWarn(`reactive lazy property ${r} does not specify 'reactOn' list or properties`),t.isFunction(i.set)&&(o.set=i.set)):o.set=s;return o}()),n=o(n),e.$change(r)},be="[object d3Model]";function we(e,t){he(this,e,t,!0)}function Ee(e){return new we(e)}Ee.prototype=we.prototype={constructor:we,toString:function(){return be},$on:function(e,r){1===arguments.length&&t.isFunction(e)&&(r=e,e="");var n=e.split("."),i=n[0],s=function e(t,r){var n=t.$events.get(r);return!n&&t.parent?e(t.parent,r):n}(this,i);return s?(this.$events.get(i)||n.push(this.uid),n[0]="change",s.on(n.join("."),r)):O(`Cannot bind to "${i}" - no such reactive property`)},$change:function(e){var t=arguments.length?e:"",r=this.$events.get(t),n=de(arguments,1);return r?r.trigger.apply(this,n):this.isolated?O(`attribute '${t}' is not a reactive property this model`):this.parent.$change(t),this},$connect:function(e,t,r){if(this.$events.has(e))return this.$logWarn(`cannot connect ${e} attribute, it is already reactive`);if(t=t||e,!(r=(r||this).$owner(t)))return this.$logWarn(`cannot find model with attribute ${t}`);const n=pe();this.$events.set(e,n),Object.defineProperty(this,e,{get:()=>r[t],set(){this.$logWarn(`Cannot set "${e}" value because it is owned by a parent model`)}}),r.$events.get(t).on(`change.${this.uid}`,()=>{n.change.apply(this,arguments),r!=this&&this.$events.get("").change.apply(this)})},$emit:function(e,r){return function e(r,n,i,s){r&&(r.hasOwnProperty(n)&&t.isFunction(r[n])&&!1===r[n](i,s)||e(r.parent,n,i,s))}(this,"$"+e,r,this),this},$update:function(e,t){if(e)for(var r in t=2!==arguments.length||t,e)(t||void 0===this[r])&&this.$set(r,e[r]);return this},$set:function(e,t){"$"===e.substring(0,1)?this.constructor.prototype[e]?this.$logWarn(`Cannot set attribute method ${e}, it is protected`):this[e]=t:this.$events.get(e)?this[e]=t:$e(this,e,t)},$new:function(e){return new we(e,this)},$off:function(e){if(void 0===e)this.$events.forEach(e=>me(e));else{var t=e.split("."),r=t.splice(0,1)[0],n=this.$events.get(r);n&&me(n,t.join("."))}},$isReactive:function(e){return!!this.$events.has(e)||!(!this.parent||this.isolated)&&this.parent.$isReactive(e)},$owner:function(e){return this.$events.has(e)?this:this.parent?this.parent.$owner(e):void 0},$data:function(){var e,t=this,r={};return Array.from(this.$events.keys()).concat(Object.keys(this)).forEach(n=>{n&&"$"!==n.substring(0,1)&&void 0!==(e=ve(t[n]))&&(r[n]=e)}),r},$push:function(e,t){var r=this[e].slice();return r.push(t),this[e]=r,this},$splice:function(e,t,r){var n=this[e].slice();return 2==arguments.length?n.splice(t):3==arguments.length&&n.splice(t,r),this[e]=n,this},$logWarn(e){this.$$view?this.$$view.logWarn(e):O(e)}},Object.defineProperties(we.prototype,{root:{get(){return this.parent?this.parent.root:this}},isolatedRoot:{get(){return!this.isolated&&this.parent?this.parent.isolatedRoot:this}}});var _e=(e,t)=>{if("string"!=typeof e)throw new TypeError("expected a string");return e.trim().replace(/([a-z])([A-Z])/g,"$1-$2").replace(/\W/g,e=>/[À-ž]/.test(e)?e:"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,e=>t&&t.condense?"-":e).toLowerCase()};var xe=e=>{if(t.isString(e))try{return JSON.parse(e)}catch(t){return e}return e};function Oe(e){return Object.defineProperty(e,"sel",{get(){return r.select(this.el)}}),e}function Ae(){this.active=!0,this.data=new Map}Ae.prototype={constructor:Ae,set(e,t){this.active&&this.data.set(e,t)},get(e){if(this.active)return this.data.get(e)},has(e){return!!this.active&&this.data.has(e)},clear(){return this.data.clear()},delete(e){return this.data.delete(e)}};const Pe={COMPOUND:"Compound",IDENTIFIER:"Identifier",MEMBER_EXP:"MemberExpression",LITERAL:"Literal",THIS_EXP:"ThisExpression",CALL_EXP:"CallExpression",UNARY_EXP:"UnaryExpression",BINARY_EXP:"BinaryExpression",LOGICAL_EXP:"LogicalExpression",CONDITIONAL_EXP:"ConditionalExpression",ARRAY_EXP:"ArrayExpression"};var Ce=function(e,t){var r=new Error(e+" at character "+t);throw r.index=t,r.description=e,r},Me={"-":!0,"!":!0,"~":!0,"+":!0},Le={"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},De=function(e){var t,r=0;for(var n in e)(t=n.length)>r&&e.hasOwnProperty(n)&&(r=t);return r},je=De(Me),Ne=De(Le),Re={true:!0,false:!1,null:null},Ie=function(e){return Le[e]||0},Te=function(e,t,r){return{type:"||"===e||"&&"===e?Pe.LOGICAL_EXP:Pe.BINARY_EXP,operator:e,left:t,right:r}},ke=function(e){return e>=48&&e<=57},Se=function(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||e>=128&&!Le[String.fromCharCode(e)]},qe=function(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e>=128&&!Le[String.fromCharCode(e)]},Xe=function(e){for(var t,r,n=0,i=e.charAt,s=e.charCodeAt,o=function(t){return i.call(e,t)},a=function(t){return s.call(e,t)},l=e.length,u=function(){for(var e=a(n);32===e||9===e;)e=a(++n)},c=function(){var e,t,r=h();return u(),63!==a(n)?r:(n++,(e=c())||Ce("Expected expression",n),u(),58===a(n)?(n++,(t=c())||Ce("Expected expression",n),{type:Pe.CONDITIONAL_EXP,test:r,consequent:e,alternate:t}):void Ce("Expected :",n))},p=function(){u();for(var t=e.substr(n,Ne),r=t.length;r>0;){if(Le.hasOwnProperty(t))return n+=r,t;t=t.substr(0,--r)}return!1},h=function(){var e,t,r,i,s,o,a,l;if(o=d(),!(t=p()))return o;for(s={value:t,prec:Ie(t)},(a=d())||Ce("Expected expression after "+t,n),i=[o,s,a];(t=p())&&0!==(r=Ie(t));){for(s={value:t,prec:r};i.length>2&&r<=i[i.length-2].prec;)a=i.pop(),t=i.pop().value,o=i.pop(),e=Te(t,o,a),i.push(e);(e=d())||Ce("Expected expression after "+t,n),i.push(s,e)}for(e=i[l=i.length-1];l>1;)e=Te(i[l-1].value,i[l-2],e),l-=2;return e},d=function(){var t,r,i;if(u(),t=a(n),ke(t)||46===t)return f();if(39===t||34===t)return v();if(Se(t)||40===t)return y();if(91===t)return b();for(i=(r=e.substr(n,je)).length;i>0;){if(Me.hasOwnProperty(r))return n+=i,{type:Pe.UNARY_EXP,operator:r,argument:d(),prefix:!0};r=r.substr(0,--i)}return!1},f=function(){for(var e,t,r="";ke(a(n));)r+=o(n++);if(46===a(n))for(r+=o(n++);ke(a(n));)r+=o(n++);if("e"===(e=o(n))||"E"===e){for(r+=o(n++),"+"!==(e=o(n))&&"-"!==e||(r+=o(n++));ke(a(n));)r+=o(n++);ke(a(n-1))||Ce("Expected exponent ("+r+o(n)+")",n)}return t=a(n),Se(t)?Ce("Variable names cannot start with a number ("+r+o(n)+")",n):46===t&&Ce("Unexpected period",n),{type:Pe.LITERAL,value:parseFloat(r),raw:r}},v=function(){for(var e,t="",r=o(n++),i=!1;n<l;){if((e=o(n++))===r){i=!0;break}if("\\"===e)switch(e=o(n++)){case"n":t+="\n";break;case"r":t+="\r";break;case"t":t+="\t";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:t+="\\"+e}else t+=e}return i||Ce('Unclosed quote after "'+t+'"',n),{type:Pe.LITERAL,value:t,raw:r+t+r}},m=function(){var t,r=a(n),i=n;for(Se(r)?n++:Ce("Unexpected "+o(n),n);n<l&&(r=a(n),qe(r));)n++;return t=e.slice(i,n),Re.hasOwnProperty(t)?{type:Pe.LITERAL,value:Re[t],raw:t}:"this"===t?{type:Pe.THIS_EXP}:{type:Pe.IDENTIFIER,name:t}},g=function(e){for(var t,r,i=[],s=!1;n<l;){if(u(),(t=a(n))===e){s=!0,n++;break}44===t?n++:((r=c())&&r.type!==Pe.COMPOUND||Ce("Expected comma",n),i.push(r))}return s||Ce("Expected "+String.fromCharCode(e),n),i},y=function(){var e,t;for(t=40===(e=a(n))?$():m(),u(),e=a(n);46===e||91===e||40===e;)n++,46===e?(u(),t={type:Pe.MEMBER_EXP,computed:!1,object:t,property:m()}):91===e?(t={type:Pe.MEMBER_EXP,computed:!0,object:t,property:c()},u(),93!==(e=a(n))&&Ce("Unclosed [",n),n++):40===e&&(t={type:Pe.CALL_EXP,arguments:g(41),callee:t}),u(),e=a(n);return t},$=function(){n++;var e=c();if(u(),41===a(n))return n++,e;Ce("Unclosed (",n)},b=function(){return n++,{type:Pe.ARRAY_EXP,elements:g(93)}},w=[];n<l;)59===(t=a(n))||44===t?n++:(r=c())?w.push(r):n<l&&Ce('Unexpected "'+o(n)+'"',n);return 1===w.length?w[0]:{type:Pe.COMPOUND,body:w}};function Fe(e,t,r){switch(t.type){case Pe.IDENTIFIER:return e[t.name];case Pe.LITERAL:return r?e[t.value]:t.value;case Pe.ARRAY_EXP:return t.elements.map(t=>Fe(e,t));case Pe.LOGICAL_EXP:case Pe.BINARY_EXP:return function(e,t,r){Be[e]||(Be[e]=new Function("a","b",`return a ${e} b`));return Be[e](t,r)}(t.operator,Fe(e,t.left),Fe(e,t.right));case Pe.CALL_EXP:return function(e,t,r){var n;r=r.map(t=>Fe(e,t)),t.type!==Pe.IDENTIFIER&&(e=Fe(e,t.object),t=t.property);if(!(n=e[t.name]))throw new EvalError(`callable "${t.name}" not found in context`);return n.apply(e,r)}(e,t.callee,t.arguments);case Pe.MEMBER_EXP:return Fe(Fe(e,t.object),t.property,!0);case Pe.CONDITIONAL_EXP:return Fe(e,t.test)?Fe(e,t.consequent):Fe(e,t.alternate);case Pe.UNARY_EXP:return function(e,t){We[e]||(We[e]=new Function("arg",`return ${e} arg`));return We[e](t)}(t.operator,Fe(e,t.argument))}}function Ue(e,t){switch(1===arguments.length&&(t=new Set),e.type){case Pe.IDENTIFIER:t.add(e.name);break;case Pe.ARRAY_EXP:e.elements.forEach(e=>Ue(e,t));break;case Pe.LOGICAL_EXP:case Pe.BINARY_EXP:Ue(e.left,t),Ue(e.right,t);break;case Pe.CALL_EXP:Ue(e.callee,t),e.arguments.forEach(e=>Ue(e,t));break;case Pe.MEMBER_EXP:t.add(function e(t){return t.type===Pe.IDENTIFIER?t.name:`${e(t.object)}.${t.property.name}`}(e));break;case Pe.CONDITIONAL_EXP:Ue(e.test,t),Ue(e.consequent,t),Fe(e.alternate,t);break;case Pe.UNARY_EXP:Ue(e.argument,t)}return t}Xe.addUnaryOp=function(e){return je=Math.max(e.length,je),Me[e]=!0,this},Xe.addBinaryOp=function(e,t){return Ne=Math.max(e.length,Ne),Le[e]=t,this},Xe.addLiteral=function(e,t){return Re[e]=t,this},Xe.removeUnaryOp=function(e){return delete Me[e],e.length===je&&(je=De(Me)),this},Xe.removeBinaryOp=function(e){return delete Le[e],e.length===Ne&&(Ne=De(Le)),this},Xe.removeLiteral=function(e){return delete Re[e],this};const We={},Be={},ze={eval(e){return Fe(e,this.parsed)},safeEval(e){try{return Fe(e,this.parsed)}catch(e){O(`Could not evaluate <<${this.expr}>> expression: ${e}`)}},identifiers(){return Ue(this.parsed)}};function Ye(e){this.codes=Pe,this.expr=e,this.parsed=Xe(e)}function Ge(e){return new Ye(e)}Ye.prototype=ze;const He={create:e=>e,preMount(){},mount:e=>e,refresh(){},destroy(){},removeAttribute(){this.el.removeAttribute(this.name)},execute(e){this.active&&(this.removeAttribute(),this.identifiers=[],(e=this.mount(e))&&this.bindModel(e))},bindModel(e){var r=this,n=!1,i=e.$$view.events,s=function(){let t=r.expression?r.expression.eval(e):r.data;r.refresh(e,t),r.passes++,i.call("directive-refresh",void 0,r,e,t)};let o,a,l,u;if(r.cache=e.$$view.cache,r.data)r.data=e.$new(r.data),r.identifiers.push({model:r.data,attr:""});else if(this.expression){var c=new Map;this.expression.identifiers().forEach(i=>{for(o=i.split("."),a=e,l=null,u=0;u<o.length-1;++u)if(a=a[o[u]],!t.isObject(a)){l=o.slice(0,u+1).join("."),r.logError(`"${l}" is not an object, cannot bind to "${i}" identifier`),n=!0;break}null===l&&(a instanceof Ee?function e(r,n,i){var s=3===arguments.length?n[i]:void 0;t.isFunction(s)||2===arguments.length?Je(r,n).events.add(""):s instanceof Ee?(e(r,s),(n=n.$owner(i))&&Je(r,n).events.add("")):((n=n.$owner(i)||n).$isReactive(i)||n.$set(i,s),Je(r,n).events.add(i))}(c,a,o[o.length-1]):(r.logError(`${i} is not a reactive model. Cannot bind to it`),n=!0))}),c.forEach(e=>{e.events.has("")?r.identifiers.push({model:e.model,attr:""}):e.events.forEach(t=>{r.identifiers.push({model:e.model,attr:t})})})}else r.identifiers.push({model:e,attr:""});n||(this.identifiers.forEach(e=>{var t=`${e.attr}.${r.uid}`;e.model.$on(t,s)}),this.bindDestroy(e),s())},bindDestroy(e){var t=this,r=this.destroy;t.destroy=function(){t.identifiers.forEach(e=>{e.model.$off(`${e.attr}.${t.uid}`)}),t.data&&t.data.$off();try{r.call(t,e)}finally{e.$emit("destroyDirective",t)}}}};function Ve(e){function t(e,t,r){this.el=e,this.ownerDocument=e.ownerDocument,this.name=t.name,this.arg=r,this.passes=0;var n=Oe(ue(this)).create(t.value);if(n)try{this.expression=Ge(n)}catch(e){try{this.data=JSON.parse(n)}catch(t){this.logError(e)}}this.active||(this.active=Boolean(!t.value||this.expression||this.data))}function r(e,r,n){return new t(e,r,n)}return t.prototype={...D,...He,...e},r.prototype=t.prototype,r}function Je(e,t){var r=e.get(t.uid);return r||(r={model:t,events:new Set},e.set(t.uid,r)),r}const Ze=["name","class","disabled","readonly","required","href"];var Ke=(e,t)=>{const r=new Qe;for(let i=0;i<e.attributes.length;++i){let s,o=e.attributes[i],a=o.name.split("-"),l="d3"===a[0]?a[1]:null;if(l){if(t){!(s=a.slice(2).join("-"))&&Ze.indexOf(l)>-1&&(s=l,l="attr");var n=t.directives.get(l);n?r.add(n(e,o,s)):t.logWarn(`${e.tagName} cannot find directive "${l}". Did you forget to register it?`)}}else r.attrs[o.name]=o.value}return r};function Qe(){this.attrs={},this.all=[]}Qe.prototype={size(){return this.all.length},pop:function(e){var t=this.all.indexOf(e);return t>-1&&(e.removeAttribute(),this.all.splice(t,1)),e},add(e){this.all.push(e)},forEach(e){this.all.forEach(e)},preMount(){let e;for(let t=0;t<this.all.length;++t)if((e=this.all[t]).preMount())return this.pop(e)},execute(e){if(this.size())return Promise.all(this.all.map(t=>t.execute(e)))}},r.selection.prototype.mount=function(e){var t=[];return this.each(function(){var n=r.select(this).view();n?t.push(et(this,n,e)):O("Cannot mount, no view object available to mount to")}),Promise.all(t)},r.selection.prototype.view=function(e){if(arguments.length)return this.property("__d3_view__",e);for(var t=this.node(),r=t?t.__d3_view__:null,n=t?t.parentNode:null;n&&!r;)r=n.__d3_view__,n=n.parentNode;return r},r.selection.prototype.model=function(){var e=this.view();return e?e.model:null},r.selection.prototype.directives=function(e){const t=this.node();let r=t.__d3_directives__;void 0===r&&(r=Ke(t,e),t.__d3_directives__=r.size()||tt(t,e)?r:null);return r||Ke(t)};const et=(e,t,n)=>{if(e&&e.tagName){var i=tt(e,t),s=r.select(e).directives(t),o=s.preMount();return o?o.execute(t.model):i?i({parent:t}).mount(e,n).then(e=>(s.execute(e.model),e)):(s.execute(t.model),Promise.all(de(e.children).map(e=>et(e,t,n))))}},tt=(e,t)=>t.components.get(e.tagName.toLowerCase()),rt={doMount(e){return at(this,e)}},nt={render(){},childrenMounted(){},mounted(){},destroy(){},mount(e,r){if(lt(this))return;const n=x(e);if(!(e=n.node()))return this.logWarn("element not defined, pass an identifier or an HTMLElement object"),Promise.resolve(this);this.ownerDocument=e.ownerDocument;const i=n.directives(this);let s,o,a,l=t.assign((e=>{let t,r;return Object.keys(e).reduce((n,i)=>((r=i.split("-")).length>1&&"data"===r[0]&&(r=r.splice(1)),n[t=r.reduce((e,t,r)=>e+=r?t.substring(0,1).toUpperCase()+t.substring(1):t,"")]=e[i],n),{})})(i.attrs),n.datum(),r),u=xe(t.pop(l,"props"));return t.isObject(u)?l=t.assign(u,l):this.parent&&this.parent.props[u]&&(l=t.assign({},this.parent.props[u],l)),this.events.call("mount",void 0,this,e,l),this.parent?(a=this.parent.model,(o=t.pop(l,"model"))&&!o.$child&&(o=a[o]),o=o?o.$child():a.$new(),Object.keys(this.props).forEach(e=>{void 0===(s=this.parent.props[l[e]])?void 0!==(s=xe(l[e]))?l[e]=s:void 0!==this.props[e]&&(l[e]=this.props[e]):l[e]=s}),t.isString(u)&&(l=t.assign({},this.parent.props[u],l))):(l=t.assign(this.props,l),o=Ee()),Object.keys(this.model).forEach(e=>{void 0!==(s=t.pop(l,e))?t.isString(s)&&a&&a.$isReactive(s)?o.$connect(e,s,a):o.$set(e,xe(s)):void 0===o[e]&&o.$set(e,this.model[e])}),this.model=dt(this,o),l.id||(l.id=o.uid),this.props=l,this.doMount(e)},createElement(e,t){const r=this.ownerDocument||document,n=this.select(r.createElement(e));return t&&(n.attr("id",this.props.id),this.props.class&&n.classed(this.props.class,!0)),n},doMount(e){let t;try{t=this.render(e)}catch(e){t=Promise.reject(e)}return t&&t.then||(t=Promise.resolve(t)),t.then(t=>ct(this,e,t)).catch(t=>pt(this,e,t))},use(e){return t.isObject(e)?e.install(this):e(this),this},addComponent(e,t){e=_e(e);var r=it(e,t);return this.components.set(e,r),r},addDirective(e,t){e=_e(e);var r=Ve(t);return this.directives.set(e,r),r}},it=(e,r,n,i)=>{t.isFunction(r)&&(r={render:r});var o=t.assign({},r),a=st(new Map,t.pop(o,"components")),l=ot(new Map,t.pop(o,"directives")),u=t.pop(o,"model"),c=t.pop(o,"props");function p(r){var o=t.pop(r,"parent"),p=z(o?o.components:i),h=z(o?o.directives:n),d=o?o.events:s.dispatch("message","created","mount","mounted","error","directive-refresh"),f=o?o.cache:new Ae;a.forEach((e,t)=>{p.set(t,e)}),l.forEach((e,t)=>{h.set(t,e)}),st(p,t.pop(r,"components")),ot(h,t.pop(r,"directives")),Object.defineProperties(this,{name:{get:()=>e},components:{get:()=>p},directives:{get:()=>h},parent:{get:()=>o},root:{get(){return o?o.root:this}},cache:{get:()=>f},uid:{get(){return this.model.uid}},events:{get:()=>d}}),this.props=ht(c,t.pop(r,"props")),this.model=ht(u,t.pop(r,"model")),this.events.call("created",void 0,this)}function h(e){return new p(e)}return p.prototype=t.assign({},D,nt,o),h.prototype=p.prototype,h},st=(e,t)=>(z(t).forEach((t,r)=>{r=_e(r),e.set(r,it(r,t,nt))}),e),ot=(e,t)=>(z(t).forEach((t,r)=>{r=_e(r),e.set(r,Ve(t))}),e),at=(e,t)=>(Object.defineProperty(Oe(e),"el",{get:function(){return t}}),e.select(t).view(e).mount().then(()=>ut(e))),lt=e=>void 0===e.isMounted?(e.isMounted=!1,!1):(e.isMounted?e.logWarn("component already mounted"):(e.isMounted=!0,e.mounted(),e.events.call("mounted",void 0,e)),!0),ut=e=>{var t=e.parent;if(e.childrenMounted(),t&&!t.isMounted){const r=`mounted.${e.uid}`;e.events.on(r,n=>{n===t&&(e.events.on(r,null),lt(e))})}else lt(e);return e},ct=(e,r,n)=>{if(t.isString(n)){const t=Object.keys(e.props).length?e.props:null;n=e.viewElement(n,t,r.ownerDocument)}const i=(n=x(n)).size();if(!i)throw new Error("render() must return a single HTML node. It returned nothing!");return 1!==i&&e.logWarn("render() must return a single HTML node"),n=n.node(),r.__d3_component__=!0,r.parentNode&&r.parentNode.insertBefore(n,r),e.select(r).remove(),at(e,n)},pt=(e,t,r)=>(e.logWarn("failed to render due to the unhandled exception reported below"),e.logError(r),e.events.call("error",void 0,e,t,r),e),ht=(e,r)=>(t.isFunction(e)&&(e=e()),t.isArray(e)&&(e=e.reduce((e,t)=>(e[t]=void 0,e),{})),t.assign({},e,r)),dt=(e,t)=>(Object.defineProperties(t,{$$view:{get:()=>e},$$name:{get:()=>e.name},props:{get:()=>e.props}}),t);var ft={create(e){return this.arg?e:this.logWarn("Cannot bind to empty attribute. Specify :<attr-name>")},refresh(e,r){if("class"===this.arg)return this.refreshClass(r);if(t.isArray(r))return this.logWarn(`Cannot apply array to attribute ${this.arg}`);var n=q.get(this.arg);n?this.sel.property(n,r||!1):this.sel.attr(this.arg,r||null)},refreshClass(e){var r=this.sel;t.isArray(e)||(e=[e]),this.oldValue&&this.oldValue.forEach(e=>{e&&r.classed(e,!1)}),this.oldValue=e.map(e=>{var n=!0;return t.isArray(e)&&(n=e[1],e=e[0]),e&&r.classed(e,n),e})}},vt={create(e){var t=[];return e.trim().split(" ").forEach(e=>{e&&t.push(e)}),3!==t.length||"in"!=t[1]?this.logWarn(`directive requires "item in expression" template, got "${e}"`):(this.itemName=t[0],this.itemClass=`for${this.uid}`,t[2])},preMount:()=>!0,mount(e){if(this.creator=this.el,this.el=this.creator.parentNode,r.select(this.creator).remove(),this.el)return e},refresh(e,r){if(!t.isArray(r))return;let n;var i=this.creator,s=this.itemClass,o=`.${s}`,a=this.itemName,l=this.sel,u=l.selectAll(o),c=u.filter(function(){return n=this.__d3_view__.model[a],r.indexOf(n)>-1}).data(r),p=u.filter(function(){return n=this.__d3_view__.model[a],-1===r.indexOf(n)}).classed(s,!1),h=l.view();let d,f,v,m,g=h.components.get(i.tagName.toLowerCase());g||(g=it("forView",rt)),(this.transition(p)||p).style("opacity",0).remove(),c.enter().append(()=>(f=i.cloneNode(!0),v=h.select(f),h.transitionDuration(v)>0&&v.style("opacity",0),f)).each(function(e,t){(d={index:t})[a]=e,g({model:d,parent:h}).mount(this,{model:h.model}).then(e=>{e.sel.classed(s,!0),r[t]=e.model[a],(m=e.transition())&&m.style("opacity",1)})}),l.selectAll(o).each(function(e){this.__d3_view__.model[a]=e})}},mt={refresh(e,r){if(t.isNumber(r)&&(r=""+r),t.isString(r)){var n=this,i=this.sel,s=this.passes?this.transition(i):null;s?s.style("opacity",0).on("end",()=>{i.html(r),n.selectChildren().mount(),n.transition(i).style("opacity",1)}):(i.html(r),this.selectChildren().mount())}}},gt={mount(e){var t=this.sel;return this.display=t.style("display"),this.opacity=+t.style("opacity")||1,this.display&&"none"!==this.display||(this.display="block"),e},refresh(e,t){var r=this.sel,n=this.passes?this.transition(r):null;t?r.style("display",this.display):n||r.style("display","none"),n?t?n.style("opacity",1):n.style("opacity",0).on("end",()=>r.style("display","none")):r.style("opacity",t?this.opacity:0)}},yt={mount(e){var t=this.arg||"click",r=this.expression;this.on(this.sel,`${t}.${this.uid}`,t=>{var n=e.$child();n.$event=t,r.eval(n)}),this.bindDestroy(e)},destroy(){var e=this.arg||"click";this.on(this.sel,`${e}.${this.uid}`,null)}};const $t={on(e,t){var r=function(e,t,r){return ce(()=>{t.$set(r,e.value())})}(this,e,t),n=e.uid;this.sel.on(`input.${n}`,r).on(`change.${n}`,r)},off(e){var t=e.uid;this.sel.on(`input.${t}`,null).on(`change.${t}`,null)},value(e){if(!arguments.length)return this.sel.property("value");this.sel.property("value",e)}};function bt(e){function r(e){Oe(this).el=e}return r.prototype=t.assign({},$t,e),r}var wt=bt({value(e){if(!arguments.length)return this.sel.property("checked");this.sel.property("checked",e)}}),Et=bt(),_t={input:Et,textarea:Et,select:bt({value(e){var n,i=this.sel,s=i.selectAll("option"),o=e;if(!arguments.length)return o=[],s.each(function(){(n=r.select(this)).property("selected")&&o.push(n.attr("value")||"")}),i.property("multiple")?o:o[0]||"";t.isArray(o)||(o=[e||""]),s.each(function(){n=r.select(this),e=n.attr("value")||"",n.property("selected",o.indexOf(e)>-1)})}}),checkbox:wt},xt={attr:ft,html:mt,value:{create(e){var t=this.sel.attr("type"),r=this.el.tagName.toLowerCase(),n=_t[t]||_t[r];if(n)return this.tag=new n(this.el),e;this.logWarn(`Cannot apply d3-value directive to ${r}`)},mount(e){var t=this.expression;if(t.parsed.type===t.codes.IDENTIFIER){var r=this.expression.expr;return e.$set(r,this.tag.value()),this.tag.on(e,r),e}this.logWarn(`support identifiers only, got "${t.parsed.type}": ${this.expression}`)},refresh(e,t){this.tag.value(t)},destroy(e){this.tag.off(e)}},on:yt,for:vt,if:gt};const Ot=ot(new Map,xt);const At=()=>{document.removeEventListener("DOMContentLoaded",At),window.removeEventListener("load",At),Pt()},Pt=()=>{let e;for(;y.readyCallbacks.length;)e=y.readyCallbacks.shift(),i.timeout(e)};e.viewVersion="1.5.2",e.viewBase=D,e.viewBootstrapForms=R,e.viewForms=se,e.view=(e=>it("view",rt,Ot)(e)),e.viewModel=Ee,e.viewExpression=Ge,e.jsep=Xe,e.isAbsoluteUrl=(e=>o.test(e)),e.viewLibs=u,e.viewRequire=h,e.viewRequireFrom=p,e.viewResolve=c,e.viewDashify=_e,e.viewDebounce=ce,e.viewReady=(e=>{y.readyCallbacks.push(e),"complete"!==document.readyState?(document.addEventListener("DOMContentLoaded",At),window.addEventListener("load",At)):Pt()}),e.HttpError=w,e.HttpResponse=b,e.jsonResponse=E,e.viewProviders=y,e.viewSelect=x,e.viewSlugify=(e=>{e=(e=e.replace(/^\s+|\s+$/g,"")).toLowerCase();for(var t="àáäâèéëêìíïîòóöôùúüûñç·/_,:;",r=0,n=t.length;r<n;r++)e=e.replace(new RegExp(t.charAt(r),"g"),"aaaaeeeeiiiioooouuuunc------".charAt(r));return e=e.replace(/[^a-z0-9 -]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-")}),e.viewElement=P,e.viewTemplate=A,e.viewUid=ue,e.viewWarn=O,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=d3-view.min.js.map