@decidables/detectable-elements 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/LICENSE.md +1112 -0
  3. package/README.md +1218 -0
  4. package/lib/detectableElements.esm.js +18385 -0
  5. package/lib/detectableElements.esm.js.map +1 -0
  6. package/lib/detectableElements.esm.min.js +13 -0
  7. package/lib/detectableElements.esm.min.js.map +1 -0
  8. package/lib/detectableElements.umd.js +18413 -0
  9. package/lib/detectableElements.umd.js.map +1 -0
  10. package/lib/detectableElements.umd.min.js +13 -0
  11. package/lib/detectableElements.umd.min.js.map +1 -0
  12. package/package.json +58 -0
  13. package/src/components/detectable-control.js +272 -0
  14. package/src/components/detectable-response.js +414 -0
  15. package/src/components/detectable-table.js +602 -0
  16. package/src/components/index.js +7 -0
  17. package/src/components/rdk-task.js +586 -0
  18. package/src/components/roc-space.js +1220 -0
  19. package/src/components/sdt-model.js +1835 -0
  20. package/src/detectable-element.js +121 -0
  21. package/src/equations/dc2far.js +182 -0
  22. package/src/equations/dc2hr.js +191 -0
  23. package/src/equations/facr2far.js +120 -0
  24. package/src/equations/hm2hr.js +121 -0
  25. package/src/equations/hmfacr2acc.js +161 -0
  26. package/src/equations/hrfar2c.js +179 -0
  27. package/src/equations/hrfar2d.js +162 -0
  28. package/src/equations/index.js +8 -0
  29. package/src/equations/sdt-equation.js +141 -0
  30. package/src/examples/double-interactive.js +171 -0
  31. package/src/examples/human.js +184 -0
  32. package/src/examples/index.js +6 -0
  33. package/src/examples/interactive.js +131 -0
  34. package/src/examples/model.js +203 -0
  35. package/src/examples/sdt-example.js +76 -0
  36. package/src/examples/unequal.js +43 -0
  37. package/src/index.js +6 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectableElements.esm.js","sources":["../../../node_modules/@lit/reactive-element/css-tag.js","../../../node_modules/@lit/reactive-element/reactive-element.js","../../../node_modules/lit-html/lit-html.js","../../../node_modules/lit-element/lit-element.js","../../../node_modules/d3-array/src/ascending.js","../../../node_modules/d3-array/src/bisector.js","../../../node_modules/d3-array/src/number.js","../../../node_modules/d3-array/src/bisect.js","../../../node_modules/d3-array/src/count.js","../../../node_modules/d3-array/src/extent.js","../../../node_modules/d3-array/src/fsum.js","../../../node_modules/d3-array/src/identity.js","../../../node_modules/d3-array/src/array.js","../../../node_modules/d3-array/src/constant.js","../../../node_modules/d3-array/src/ticks.js","../../../node_modules/d3-array/src/nice.js","../../../node_modules/d3-array/src/threshold/sturges.js","../../../node_modules/d3-array/src/bin.js","../../../node_modules/d3-array/src/merge.js","../../../node_modules/d3-array/src/range.js","../../../node_modules/d3-axis/src/identity.js","../../../node_modules/d3-axis/src/axis.js","../../../node_modules/d3-dispatch/src/dispatch.js","../../../node_modules/d3-selection/src/namespaces.js","../../../node_modules/d3-selection/src/namespace.js","../../../node_modules/d3-selection/src/creator.js","../../../node_modules/d3-selection/src/selector.js","../../../node_modules/d3-selection/src/selection/select.js","../../../node_modules/d3-selection/src/array.js","../../../node_modules/d3-selection/src/selectorAll.js","../../../node_modules/d3-selection/src/selection/selectAll.js","../../../node_modules/d3-selection/src/matcher.js","../../../node_modules/d3-selection/src/selection/selectChild.js","../../../node_modules/d3-selection/src/selection/selectChildren.js","../../../node_modules/d3-selection/src/selection/filter.js","../../../node_modules/d3-selection/src/selection/sparse.js","../../../node_modules/d3-selection/src/selection/enter.js","../../../node_modules/d3-selection/src/constant.js","../../../node_modules/d3-selection/src/selection/data.js","../../../node_modules/d3-selection/src/selection/exit.js","../../../node_modules/d3-selection/src/selection/join.js","../../../node_modules/d3-selection/src/selection/merge.js","../../../node_modules/d3-selection/src/selection/order.js","../../../node_modules/d3-selection/src/selection/sort.js","../../../node_modules/d3-selection/src/selection/call.js","../../../node_modules/d3-selection/src/selection/nodes.js","../../../node_modules/d3-selection/src/selection/node.js","../../../node_modules/d3-selection/src/selection/size.js","../../../node_modules/d3-selection/src/selection/empty.js","../../../node_modules/d3-selection/src/selection/each.js","../../../node_modules/d3-selection/src/selection/attr.js","../../../node_modules/d3-selection/src/window.js","../../../node_modules/d3-selection/src/selection/style.js","../../../node_modules/d3-selection/src/selection/property.js","../../../node_modules/d3-selection/src/selection/classed.js","../../../node_modules/d3-selection/src/selection/text.js","../../../node_modules/d3-selection/src/selection/html.js","../../../node_modules/d3-selection/src/selection/raise.js","../../../node_modules/d3-selection/src/selection/lower.js","../../../node_modules/d3-selection/src/selection/append.js","../../../node_modules/d3-selection/src/selection/insert.js","../../../node_modules/d3-selection/src/selection/remove.js","../../../node_modules/d3-selection/src/selection/clone.js","../../../node_modules/d3-selection/src/selection/datum.js","../../../node_modules/d3-selection/src/selection/on.js","../../../node_modules/d3-selection/src/selection/dispatch.js","../../../node_modules/d3-selection/src/selection/iterator.js","../../../node_modules/d3-selection/src/selection/index.js","../../../node_modules/d3-selection/src/select.js","../../../node_modules/d3-selection/src/sourceEvent.js","../../../node_modules/d3-selection/src/pointer.js","../../../node_modules/d3-drag/src/noevent.js","../../../node_modules/d3-drag/src/nodrag.js","../../../node_modules/d3-drag/src/constant.js","../../../node_modules/d3-drag/src/event.js","../../../node_modules/d3-drag/src/drag.js","../../../node_modules/d3-color/src/define.js","../../../node_modules/d3-color/src/color.js","../../../node_modules/d3-interpolate/src/constant.js","../../../node_modules/d3-interpolate/src/color.js","../../../node_modules/d3-interpolate/src/rgb.js","../../../node_modules/d3-interpolate/src/numberArray.js","../../../node_modules/d3-interpolate/src/array.js","../../../node_modules/d3-interpolate/src/date.js","../../../node_modules/d3-interpolate/src/number.js","../../../node_modules/d3-interpolate/src/object.js","../../../node_modules/d3-interpolate/src/string.js","../../../node_modules/d3-interpolate/src/value.js","../../../node_modules/d3-interpolate/src/round.js","../../../node_modules/d3-interpolate/src/transform/decompose.js","../../../node_modules/d3-interpolate/src/transform/parse.js","../../../node_modules/d3-interpolate/src/transform/index.js","../../../node_modules/d3-timer/src/timer.js","../../../node_modules/d3-timer/src/timeout.js","../../../node_modules/d3-timer/src/interval.js","../../../node_modules/d3-transition/src/transition/schedule.js","../../../node_modules/d3-transition/src/interrupt.js","../../../node_modules/d3-transition/src/selection/interrupt.js","../../../node_modules/d3-transition/src/transition/tween.js","../../../node_modules/d3-transition/src/transition/interpolate.js","../../../node_modules/d3-transition/src/transition/attr.js","../../../node_modules/d3-transition/src/transition/attrTween.js","../../../node_modules/d3-transition/src/transition/delay.js","../../../node_modules/d3-transition/src/transition/duration.js","../../../node_modules/d3-transition/src/transition/ease.js","../../../node_modules/d3-transition/src/transition/easeVarying.js","../../../node_modules/d3-transition/src/transition/filter.js","../../../node_modules/d3-transition/src/transition/merge.js","../../../node_modules/d3-transition/src/transition/on.js","../../../node_modules/d3-transition/src/transition/remove.js","../../../node_modules/d3-transition/src/transition/select.js","../../../node_modules/d3-transition/src/transition/selectAll.js","../../../node_modules/d3-transition/src/transition/selection.js","../../../node_modules/d3-transition/src/transition/style.js","../../../node_modules/d3-transition/src/transition/styleTween.js","../../../node_modules/d3-transition/src/transition/text.js","../../../node_modules/d3-transition/src/transition/textTween.js","../../../node_modules/d3-transition/src/transition/transition.js","../../../node_modules/d3-transition/src/transition/end.js","../../../node_modules/d3-transition/src/transition/index.js","../../../node_modules/d3-ease/src/linear.js","../../../node_modules/d3-ease/src/cubic.js","../../../node_modules/d3-transition/src/selection/transition.js","../../../node_modules/d3-transition/src/selection/index.js","../../../node_modules/d3-path/src/path.js","../../../node_modules/d3-contour/src/array.js","../../../node_modules/d3-contour/src/ascending.js","../../../node_modules/d3-contour/src/area.js","../../../node_modules/d3-contour/src/constant.js","../../../node_modules/d3-contour/src/contains.js","../../../node_modules/d3-contour/src/noop.js","../../../node_modules/d3-contour/src/contours.js","../../../node_modules/d3-format/src/formatDecimal.js","../../../node_modules/d3-format/src/exponent.js","../../../node_modules/d3-format/src/formatGroup.js","../../../node_modules/d3-format/src/formatNumerals.js","../../../node_modules/d3-format/src/formatSpecifier.js","../../../node_modules/d3-format/src/formatTrim.js","../../../node_modules/d3-format/src/formatPrefixAuto.js","../../../node_modules/d3-format/src/formatRounded.js","../../../node_modules/d3-format/src/formatTypes.js","../../../node_modules/d3-format/src/identity.js","../../../node_modules/d3-format/src/locale.js","../../../node_modules/d3-format/src/defaultLocale.js","../../../node_modules/d3-format/src/precisionFixed.js","../../../node_modules/d3-format/src/precisionPrefix.js","../../../node_modules/d3-format/src/precisionRound.js","../../../node_modules/d3/node_modules/d3-geo/src/math.js","../../../node_modules/d3/node_modules/d3-geo/src/noop.js","../../../node_modules/d3/node_modules/d3-geo/src/stream.js","../../../node_modules/d3/node_modules/d3-geo/src/clip/buffer.js","../../../node_modules/d3/node_modules/d3-geo/src/pointEqual.js","../../../node_modules/d3/node_modules/d3-geo/src/clip/rejoin.js","../../../node_modules/d3/node_modules/d3-geo/src/clip/line.js","../../../node_modules/d3/node_modules/d3-geo/src/clip/rectangle.js","../../../node_modules/d3/node_modules/d3-geo/src/identity.js","../../../node_modules/d3/node_modules/d3-geo/src/path/area.js","../../../node_modules/d3/node_modules/d3-geo/src/path/bounds.js","../../../node_modules/d3/node_modules/d3-geo/src/path/centroid.js","../../../node_modules/d3/node_modules/d3-geo/src/path/context.js","../../../node_modules/d3/node_modules/d3-geo/src/path/measure.js","../../../node_modules/d3/node_modules/d3-geo/src/path/string.js","../../../node_modules/d3/node_modules/d3-geo/src/path/index.js","../../../node_modules/d3/node_modules/d3-geo/src/transform.js","../../../node_modules/d3/node_modules/d3-geo/src/projection/fit.js","../../../node_modules/d3/node_modules/d3-geo/src/projection/identity.js","../../../node_modules/d3-scale/src/init.js","../../../node_modules/d3-scale/src/constant.js","../../../node_modules/d3-scale/src/number.js","../../../node_modules/d3-scale/src/continuous.js","../../../node_modules/d3-scale/src/tickFormat.js","../../../node_modules/d3-scale/src/linear.js","../../../node_modules/d3-scale-chromatic/src/colors.js","../../../node_modules/d3-scale-chromatic/src/categorical/Set1.js","../../../node_modules/d3/node_modules/d3-shape/src/constant.js","../../../node_modules/d3/node_modules/d3-shape/src/array.js","../../../node_modules/d3/node_modules/d3-shape/src/curve/linear.js","../../../node_modules/d3/node_modules/d3-shape/src/point.js","../../../node_modules/d3/node_modules/d3-shape/src/line.js","../../decidables-elements/src/decidables-element.js","../../decidables-elements/src/button.js","../../../node_modules/lit-html/directives/if-defined.js","../../decidables-elements/src/slider.js","../../decidables-elements/src/spinner.js","../../decidables-elements/src/switch.js","../../decidables-elements/src/toggle.js","../../decidables-elements/src/toggle-option.js","../../decidables-elements/src/converter-set.js","../src/detectable-element.js","../src/components/rdk-task.js","../../../node_modules/jstat/dist/jstat.js","../../detectable-math/src/sdt-math.js","../src/components/roc-space.js","../src/components/detectable-control.js","../src/components/sdt-model.js","../src/components/detectable-response.js","../src/components/detectable-table.js","../src/equations/sdt-equation.js","../src/equations/dc2far.js","../src/equations/dc2hr.js","../src/equations/facr2far.js","../src/equations/hm2hr.js","../src/equations/hmfacr2acc.js","../src/equations/hrfar2c.js","../src/equations/hrfar2d.js","../src/examples/sdt-example.js","../src/examples/double-interactive.js","../src/examples/human.js","../src/examples/interactive.js","../src/examples/model.js","../src/examples/unequal.js"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=window.ShadowRoot&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,e=Symbol(),n=new Map;class s{constructor(t,n){if(this._$cssResult$=!0,n!==e)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t}get styleSheet(){let e=n.get(this.cssText);return t&&void 0===e&&(n.set(this.cssText,e=new CSSStyleSheet),e.replaceSync(this.cssText)),e}toString(){return this.cssText}}const o=t=>new s(\"string\"==typeof t?t:t+\"\",e),r=(t,...n)=>{const o=1===t.length?t[0]:n.reduce(((e,n,s)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(n)+t[s+1]),t[0]);return new s(o,e)},i=(e,n)=>{t?e.adoptedStyleSheets=n.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):n.forEach((t=>{const n=document.createElement(\"style\"),s=window.litNonce;void 0!==s&&n.setAttribute(\"nonce\",s),n.textContent=t.cssText,e.appendChild(n)}))},S=t?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const n of t.cssRules)e+=n.cssText;return o(e)})(t):t;export{s as CSSResult,i as adoptStyles,r as css,S as getCompatibleStyle,t as supportsAdoptingStyleSheets,o as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as i}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var s;const e=window.trustedTypes,r=e?e.emptyScript:\"\",h=window.reactiveElementPolyfillSupport,o={toAttribute(t,i){switch(i){case Boolean:t=t?r:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,i){let s=t;switch(i){case Boolean:s=null!==t;break;case Number:s=null===t?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t)}catch(t){s=null}}return s}},n=(t,i)=>i!==t&&(i==i||t==t),l={attribute:!0,type:String,converter:o,reflect:!1,hasChanged:n};class a extends HTMLElement{constructor(){super(),this._$Et=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Ei=null,this.o()}static addInitializer(t){var i;null!==(i=this.l)&&void 0!==i||(this.l=[]),this.l.push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((i,s)=>{const e=this._$Eh(s,i);void 0!==e&&(this._$Eu.set(e,s),t.push(e))})),t}static createProperty(t,i=l){if(i.state&&(i.attribute=!1),this.finalize(),this.elementProperties.set(t,i),!i.noAccessor&&!this.prototype.hasOwnProperty(t)){const s=\"symbol\"==typeof t?Symbol():\"__\"+t,e=this.getPropertyDescriptor(t,s,i);void 0!==e&&Object.defineProperty(this.prototype,t,e)}}static getPropertyDescriptor(t,i,s){return{get(){return this[i]},set(e){const r=this[t];this[i]=e,this.requestUpdate(t,r,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||l}static finalize(){if(this.hasOwnProperty(\"finalized\"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),this.elementProperties=new Map(t.elementProperties),this._$Eu=new Map,this.hasOwnProperty(\"properties\")){const t=this.properties,i=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const s of i)this.createProperty(s,t[s])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(i){const s=[];if(Array.isArray(i)){const e=new Set(i.flat(1/0).reverse());for(const i of e)s.unshift(t(i))}else void 0!==i&&s.push(t(i));return s}static _$Eh(t,i){const s=i.attribute;return!1===s?void 0:\"string\"==typeof s?s:\"string\"==typeof t?t.toLowerCase():void 0}o(){var t;this._$Ep=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Em(),this.requestUpdate(),null===(t=this.constructor.l)||void 0===t||t.forEach((t=>t(this)))}addController(t){var i,s;(null!==(i=this._$Eg)&&void 0!==i?i:this._$Eg=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(s=t.hostConnected)||void 0===s||s.call(t))}removeController(t){var i;null===(i=this._$Eg)||void 0===i||i.splice(this._$Eg.indexOf(t)>>>0,1)}_$Em(){this.constructor.elementProperties.forEach(((t,i)=>{this.hasOwnProperty(i)&&(this._$Et.set(i,this[i]),delete this[i])}))}createRenderRoot(){var t;const s=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return i(s,this.constructor.elementStyles),s}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostConnected)||void 0===i?void 0:i.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostDisconnected)||void 0===i?void 0:i.call(t)}))}attributeChangedCallback(t,i,s){this._$AK(t,s)}_$ES(t,i,s=l){var e,r;const h=this.constructor._$Eh(t,s);if(void 0!==h&&!0===s.reflect){const n=(null!==(r=null===(e=s.converter)||void 0===e?void 0:e.toAttribute)&&void 0!==r?r:o.toAttribute)(i,s.type);this._$Ei=t,null==n?this.removeAttribute(h):this.setAttribute(h,n),this._$Ei=null}}_$AK(t,i){var s,e,r;const h=this.constructor,n=h._$Eu.get(t);if(void 0!==n&&this._$Ei!==n){const t=h.getPropertyOptions(n),l=t.converter,a=null!==(r=null!==(e=null===(s=l)||void 0===s?void 0:s.fromAttribute)&&void 0!==e?e:\"function\"==typeof l?l:null)&&void 0!==r?r:o.fromAttribute;this._$Ei=n,this[n]=a(i,t.type),this._$Ei=null}}requestUpdate(t,i,s){let e=!0;void 0!==t&&(((s=s||this.constructor.getPropertyOptions(t)).hasChanged||n)(this[t],i)?(this._$AL.has(t)||this._$AL.set(t,i),!0===s.reflect&&this._$Ei!==t&&(void 0===this._$E_&&(this._$E_=new Map),this._$E_.set(t,s))):e=!1),!this.isUpdatePending&&e&&(this._$Ep=this._$EC())}async _$EC(){this.isUpdatePending=!0;try{await this._$Ep}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Et&&(this._$Et.forEach(((t,i)=>this[i]=t)),this._$Et=void 0);let i=!1;const s=this._$AL;try{i=this.shouldUpdate(s),i?(this.willUpdate(s),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostUpdate)||void 0===i?void 0:i.call(t)})),this.update(s)):this._$EU()}catch(t){throw i=!1,this._$EU(),t}i&&this._$AE(s)}willUpdate(t){}_$AE(t){var i;null===(i=this._$Eg)||void 0===i||i.forEach((t=>{var i;return null===(i=t.hostUpdated)||void 0===i?void 0:i.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Ep}shouldUpdate(t){return!0}update(t){void 0!==this._$E_&&(this._$E_.forEach(((t,i)=>this._$ES(i,this[i],t))),this._$E_=void 0),this._$EU()}updated(t){}firstUpdated(t){}}a.finalized=!0,a.elementProperties=new Map,a.elementStyles=[],a.shadowRootOptions={mode:\"open\"},null==h||h({ReactiveElement:a}),(null!==(s=globalThis.reactiveElementVersions)&&void 0!==s?s:globalThis.reactiveElementVersions=[]).push(\"1.1.2\");export{a as ReactiveElement,o as defaultConverter,n as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar t;const i=globalThis.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=`lit$${(Math.random()+\"\").slice(9)}$`,o=\"?\"+e,n=`<${o}>`,l=document,h=(t=\"\")=>l.createComment(t),r=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,d=Array.isArray,u=t=>{var i;return d(t)||\"function\"==typeof(null===(i=t)||void 0===i?void 0:i[Symbol.iterator])},c=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,a=/>/g,f=/>|[ \t\\n\f\\r](?:([^\\s\"'>=/]+)([ \t\\n\f\\r]*=[ \t\\n\f\\r]*(?:[^ \t\\n\f\\r\"'`<>=]|(\"|')|))|$)/g,_=/'/g,m=/\"/g,g=/^(?:script|style|textarea)$/i,p=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),$=p(1),y=p(2),b=Symbol.for(\"lit-noChange\"),w=Symbol.for(\"lit-nothing\"),T=new WeakMap,x=(t,i,s)=>{var e,o;const n=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:i;let l=n._$litPart$;if(void 0===l){const t=null!==(o=null==s?void 0:s.renderBefore)&&void 0!==o?o:null;n._$litPart$=l=new N(i.insertBefore(h(),t),t,void 0,null!=s?s:{})}return l._$AI(t),l},A=l.createTreeWalker(l,129,null,!1),C=(t,i)=>{const o=t.length-1,l=[];let h,r=2===i?\"<svg>\":\"\",d=c;for(let i=0;i<o;i++){const s=t[i];let o,u,p=-1,$=0;for(;$<s.length&&(d.lastIndex=$,u=d.exec(s),null!==u);)$=d.lastIndex,d===c?\"!--\"===u[1]?d=v:void 0!==u[1]?d=a:void 0!==u[2]?(g.test(u[2])&&(h=RegExp(\"</\"+u[2],\"g\")),d=f):void 0!==u[3]&&(d=f):d===f?\">\"===u[0]?(d=null!=h?h:c,p=-1):void 0===u[1]?p=-2:(p=d.lastIndex-u[2].length,o=u[1],d=void 0===u[3]?f:'\"'===u[3]?m:_):d===m||d===_?d=f:d===v||d===a?d=c:(d=f,h=void 0);const y=d===f&&t[i+1].startsWith(\"/>\")?\" \":\"\";r+=d===c?s+n:p>=0?(l.push(o),s.slice(0,p)+\"$lit$\"+s.slice(p)+e+y):s+e+(-2===p?(l.push(void 0),i):y)}const u=r+(t[o]||\"<?>\")+(2===i?\"</svg>\":\"\");if(!Array.isArray(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return[void 0!==s?s.createHTML(u):u,l]};class E{constructor({strings:t,_$litType$:s},n){let l;this.parts=[];let r=0,d=0;const u=t.length-1,c=this.parts,[v,a]=C(t,s);if(this.el=E.createElement(v,n),A.currentNode=this.el.content,2===s){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(l=A.nextNode())&&c.length<u;){if(1===l.nodeType){if(l.hasAttributes()){const t=[];for(const i of l.getAttributeNames())if(i.endsWith(\"$lit$\")||i.startsWith(e)){const s=a[d++];if(t.push(i),void 0!==s){const t=l.getAttribute(s.toLowerCase()+\"$lit$\").split(e),i=/([.?@])?(.*)/.exec(s);c.push({type:1,index:r,name:i[2],strings:t,ctor:\".\"===i[1]?M:\"?\"===i[1]?H:\"@\"===i[1]?I:S})}else c.push({type:6,index:r})}for(const i of t)l.removeAttribute(i)}if(g.test(l.tagName)){const t=l.textContent.split(e),s=t.length-1;if(s>0){l.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)l.append(t[i],h()),A.nextNode(),c.push({type:2,index:++r});l.append(t[s],h())}}}else if(8===l.nodeType)if(l.data===o)c.push({type:2,index:r});else{let t=-1;for(;-1!==(t=l.data.indexOf(e,t+1));)c.push({type:7,index:r}),t+=e.length-1}r++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function P(t,i,s=t,e){var o,n,l,h;if(i===b)return i;let d=void 0!==e?null===(o=s._$Cl)||void 0===o?void 0:o[e]:s._$Cu;const u=r(i)?void 0:i._$litDirective$;return(null==d?void 0:d.constructor)!==u&&(null===(n=null==d?void 0:d._$AO)||void 0===n||n.call(d,!1),void 0===u?d=void 0:(d=new u(t),d._$AT(t,s,e)),void 0!==e?(null!==(l=(h=s)._$Cl)&&void 0!==l?l:h._$Cl=[])[e]=d:s._$Cu=d),void 0!==d&&(i=P(t,d._$AS(t,i.values),d,e)),i}class V{constructor(t,i){this.v=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(t){var i;const{el:{content:s},parts:e}=this._$AD,o=(null!==(i=null==t?void 0:t.creationScope)&&void 0!==i?i:l).importNode(s,!0);A.currentNode=o;let n=A.nextNode(),h=0,r=0,d=e[0];for(;void 0!==d;){if(h===d.index){let i;2===d.type?i=new N(n,n.nextSibling,this,t):1===d.type?i=new d.ctor(n,d.name,d.strings,this,t):6===d.type&&(i=new L(n,this,t)),this.v.push(i),d=e[++r]}h!==(null==d?void 0:d.index)&&(n=A.nextNode(),h++)}return o}m(t){let i=0;for(const s of this.v)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class N{constructor(t,i,s,e){var o;this.type=2,this._$AH=w,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cg=null===(o=null==e?void 0:e.isConnected)||void 0===o||o}get _$AU(){var t,i;return null!==(i=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==i?i:this._$Cg}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=P(this,t,i),r(t)?t===w||null==t||\"\"===t?(this._$AH!==w&&this._$AR(),this._$AH=w):t!==this._$AH&&t!==b&&this.$(t):void 0!==t._$litType$?this.T(t):void 0!==t.nodeType?this.S(t):u(t)?this.A(t):this.$(t)}M(t,i=this._$AB){return this._$AA.parentNode.insertBefore(t,i)}S(t){this._$AH!==t&&(this._$AR(),this._$AH=this.M(t))}$(t){this._$AH!==w&&r(this._$AH)?this._$AA.nextSibling.data=t:this.S(l.createTextNode(t)),this._$AH=t}T(t){var i;const{values:s,_$litType$:e}=t,o=\"number\"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=E.createElement(e.h,this.options)),e);if((null===(i=this._$AH)||void 0===i?void 0:i._$AD)===o)this._$AH.m(s);else{const t=new V(o,this),i=t.p(this.options);t.m(s),this.S(i),this._$AH=t}}_$AC(t){let i=T.get(t.strings);return void 0===i&&T.set(t.strings,i=new E(t)),i}A(t){d(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const o of t)e===i.length?i.push(s=new N(this.M(h()),this.M(h()),this,this.options)):s=i[e],s._$AI(o),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){var s;for(null===(s=this._$AP)||void 0===s||s.call(this,!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var i;void 0===this._$AM&&(this._$Cg=t,null===(i=this._$AP)||void 0===i||i.call(this,t))}}class S{constructor(t,i,s,e,o){this.type=1,this._$AH=w,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=o,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=w}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=!1;if(void 0===o)t=P(this,t,i,0),n=!r(t)||t!==this._$AH&&t!==b,n&&(this._$AH=t);else{const e=t;let l,h;for(t=o[0],l=0;l<o.length-1;l++)h=P(this,e[s+l],i,l),h===b&&(h=this._$AH[l]),n||(n=!r(h)||h!==this._$AH[l]),h===w?t=w:t!==w&&(t+=(null!=h?h:\"\")+o[l+1]),this._$AH[l]=h}n&&!e&&this.k(t)}k(t){t===w?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:\"\")}}class M extends S{constructor(){super(...arguments),this.type=3}k(t){this.element[this.name]=t===w?void 0:t}}const k=i?i.emptyScript:\"\";class H extends S{constructor(){super(...arguments),this.type=4}k(t){t&&t!==w?this.element.setAttribute(this.name,k):this.element.removeAttribute(this.name)}}class I extends S{constructor(t,i,s,e,o){super(t,i,s,e,o),this.type=5}_$AI(t,i=this){var s;if((t=null!==(s=P(this,t,i,0))&&void 0!==s?s:w)===b)return;const e=this._$AH,o=t===w&&e!==w||t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive,n=t!==w&&(e===w||o);o&&this.element.removeEventListener(this.name,this,e),n&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var i,s;\"function\"==typeof this._$AH?this._$AH.call(null!==(s=null===(i=this.options)||void 0===i?void 0:i.host)&&void 0!==s?s:this.element,t):this._$AH.handleEvent(t)}}class L{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){P(this,t)}}const R={P:\"$lit$\",V:e,L:o,I:1,N:C,R:V,D:u,j:P,H:N,O:S,F:H,B:I,W:M,Z:L},z=window.litHtmlPolyfillSupport;null==z||z(E,N),(null!==(t=globalThis.litHtmlVersions)&&void 0!==t?t:globalThis.litHtmlVersions=[]).push(\"2.1.1\");export{R as _$LH,$ as html,b as noChange,w as nothing,x as render,y as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as i}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var l,o;const r=t;class s extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var t,e;const i=super.createRenderRoot();return null!==(t=(e=this.renderOptions).renderBefore)&&void 0!==t||(e.renderBefore=i.firstChild),i}update(t){const i=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Dt=e(i,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!1)}render(){return i}}s.finalized=!0,s._$litElement$=!0,null===(l=globalThis.litElementHydrateSupport)||void 0===l||l.call(globalThis,{LitElement:s});const n=globalThis.litElementPolyfillSupport;null==n||n({LitElement:s});const h={_$AK:(t,e,i)=>{t._$AK(e,i)},_$AL:t=>t._$AL};(null!==(o=globalThis.litElementVersions)&&void 0!==o?o:globalThis.litElementVersions=[]).push(\"3.1.1\");export{s as LitElement,r as UpdatingElement,h as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function bisector(f) {\n let delta = f;\n let compare1 = f;\n let compare2 = f;\n\n if (f.length !== 2) {\n delta = (d, x) => f(d) - x;\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function count(values, valueof) {\n let count = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count;\n }\n }\n }\n return count;\n}\n","export default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n","export default function identity(x) {\n return x;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function constant(x) {\n return () => x;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function ticks(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","import {tickIncrement} from \"./ticks.js\";\n\nexport default function nice(start, stop, count) {\n let prestep;\n while (true) {\n const step = tickIncrement(start, stop, count);\n if (step === prestep || step === 0 || !isFinite(step)) {\n return [start, stop];\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n }\n prestep = step;\n }\n}\n","import count from \"../count.js\";\n\nexport default function thresholdSturges(values) {\n return Math.ceil(Math.log(count(values)) / Math.LN2) + 1;\n}\n","import {slice} from \"./array.js\";\nimport bisect from \"./bisect.js\";\nimport constant from \"./constant.js\";\nimport extent from \"./extent.js\";\nimport identity from \"./identity.js\";\nimport nice from \"./nice.js\";\nimport ticks, {tickIncrement} from \"./ticks.js\";\nimport sturges from \"./threshold/sturges.js\";\n\nexport default function bin() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n if (!Array.isArray(data)) data = Array.from(data);\n\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds, and nice the\n // default domain accordingly.\n if (!Array.isArray(tz)) {\n const max = x1, tn = +tz;\n if (domain === extent) [x0, x1] = nice(x0, x1, tn);\n tz = ticks(x0, x1, tn);\n\n // If the last threshold is coincident with the domain’s upper bound, the\n // last bin will be zero-width. If the default domain is used, and this\n // last threshold is coincident with the maximum input value, we can\n // extend the niced upper bound by one tick to ensure uniform bin widths;\n // otherwise, we simply remove the last threshold. Note that we don’t\n // coerce values or the domain to numbers, and thus must be careful to\n // compare order (>=) rather than strict equality (===)!\n if (tz[tz.length - 1] >= x1) {\n if (max >= x1 && domain === extent) {\n const step = tickIncrement(x0, x1, tn);\n if (isFinite(step)) {\n if (step > 0) {\n x1 = (Math.floor(x1 / step) + 1) * step;\n } else if (step < 0) {\n x1 = (Math.ceil(x1 * -step) + 1) / -step;\n }\n }\n } else {\n tz.pop();\n }\n }\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x != null && x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","function* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nexport default function merge(arrays) {\n return Array.from(flatten(arrays));\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\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 {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\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","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export const linear = t => +t;\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","export default x => () => x;\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, ticks, tickStep} from \"d3-array\";\nimport {slice} from \"./array.js\";\nimport ascending from \"./ascending.js\";\nimport area from \"./area.js\";\nimport constant from \"./constant.js\";\nimport contains from \"./contains.js\";\nimport noop from \"./noop.js\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n const e = extent(values), ts = tickStep(e[0], e[1], tz);\n tz = ticks(Math.floor(e[0] / ts) * ts, Math.floor(e[1] / ts - 1) * ts, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(value => contour(values, value));\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.floor(_[0]), _1 = Math.floor(_[1]);\n if (!(_0 >= 0 && _1 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","export default x => x;\n","import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n areaRingSum = new Adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum = new Adder();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum = new Adder();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum = new Adder();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n alpha = 0, ca, sa, // angle\n x0 = null, y0, x1, y1, // clip extent\n kx = 1, ky = 1,\n transform = transformer({\n point: function(x, y) {\n var p = projection([x, y])\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = identity,\n cache,\n cacheStream;\n\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n\n function projection (p) {\n var x = p[0] * kx, y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n } \n return [x + tx, y + ty];\n }\n projection.invert = function(p) {\n var x = p[0] - tx, y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function(_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function(_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n }\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n };\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n return projection;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","\nimport {\n LitElement,\n css,\n svg,\n unsafeCSS,\n} from 'lit';\nimport * as d3 from 'd3';\n\n/*\n DecidablesElement Base Class - Not intended for instantiation!\n <decidables-element>\n*/\nexport default class DecidablesElement extends LitElement {\n // HACK: Create a unique ID for each DecidablesElement\n // This is needed because Edge/IE11 don't have real Shadow DOM, so IDs leak\n // out of elements and collide if there is more than one of an element on a\n // page. Known issue for checkbox/switches and the id/for pattern on <input>\n // and <label>\n static get uniqueId() {\n DecidablesElement.ID += 1;\n return DecidablesElement.ID;\n }\n\n constructor() {\n super();\n this.uniqueId = `decidables-${DecidablesElement.uniqueId}`;\n }\n\n getComputedStyleValue(property) {\n // HACK: IE11 requires use of polyfill interface to get custom property value in Javascript\n if (window.ShadyCSS) {\n return window.ShadyCSS.getComputedStyleValue(this, property);\n }\n return getComputedStyle(this).getPropertyValue(property);\n }\n\n firstUpdated(changedProperties) {\n super.firstUpdated(changedProperties);\n\n // Use focus highlighting if keyboard is used at all\n d3.select(this.renderRoot.host)\n .classed('keyboard', true)\n .on('mousemove.keyboard touchstart.keyboard', (event) => {\n const element = event.currentTarget;\n d3.select(element.renderRoot.host)\n .classed('keyboard', false)\n .on('mousemove.keyboard touchstart.keyboard', null);\n })\n .on('keydown.keyboard', (event) => {\n const element = event.currentTarget;\n d3.select(element.renderRoot.host)\n .classed('keyboard', true)\n .on('keydown.keyboard mousemove.keyboard touchstart.keyboard', null);\n });\n }\n\n static get greys() {\n const grey = '#999999';\n const greys = {};\n greys.white = '#ffffff';\n greys.light75 = d3.interpolateRgb(grey, '#ffffff')(0.75);\n greys.light50 = d3.interpolateRgb(grey, '#ffffff')(0.5);\n greys.light25 = d3.interpolateRgb(grey, '#ffffff')(0.25);\n greys.grey = grey;\n greys.dark25 = d3.interpolateRgb(grey, '#000000')(0.25);\n greys.dark50 = d3.interpolateRgb(grey, '#000000')(0.5);\n greys.dark75 = d3.interpolateRgb(grey, '#000000')(0.75);\n greys.black = '#000000';\n return greys;\n }\n\n static get shadows() {\n // Material Design elevation styles\n // References:\n // https://github.com/material-components/material-components-web/tree/master/packages/mdc-elevation\n // https://codepen.io/hanger/pen/yOGvQp\n /* eslint-disable key-spacing, object-curly-newline */\n return {\n elevations: [0, 2, 4, 8, 16],\n baselineColor: '#000000',\n baselineColorString: '0, 0, 0',\n inverseBaselineColor: '#FFFFFF',\n inverseBaselineColorString: '255, 255, 255',\n opacityUmbra: 0.2,\n opacityPenumbra: 0.14,\n opacityAmbient: 0.12,\n opacityBoost: 0.2,\n mapUmbra: {// $mdc-elevation-umbra-map\n 0: {x: 0, y: 0, b: 0, s: 0}, // offset-x, offset-y, blur-radius, spread-radius\n 2: {x: 0, y: 3, b: 1, s: -2},\n 4: {x: 0, y: 2, b: 4, s: -1},\n 8: {x: 0, y: 5, b: 5, s: -3},\n 16: {x: 0, y: 8, b: 10, s: -5},\n },\n mapPenumbra: {// $mdc-elevation-penumbra-map\n 0: {x: 0, y: 0, b: 0, s: 0}, // offset-x, offset-y, blur-radius, spread-radius\n 2: {x: 0, y: 2, b: 2, s: 0},\n 4: {x: 0, y: 4, b: 5, s: 0},\n 8: {x: 0, y: 8, b: 10, s: 1},\n 16: {x: 0, y: 16, b: 24, s: 2},\n },\n mapAmbient: {// $mdc-elevation-ambient-map\n 0: {x: 0, y: 0, b: 0, s: 0}, // offset-x, offset-y, blur-radius, spread-radius\n 2: {x: 0, y: 1, b: 5, s: 0},\n 4: {x: 0, y: 1, b: 10, s: 0},\n 8: {x: 0, y: 3, b: 14, s: 2},\n 16: {x: 0, y: 6, b: 30, s: 5},\n },\n };\n /* eslint-enable key-spacing, object-curly-newline */\n }\n\n static cssBoxShadow(elevation, rotate = false, inverse = false) {\n const umbraO = this.shadows.opacityUmbra + this.shadows.opacityBoost;\n const penumbraO = this.shadows.opacityPenumbra + this.shadows.opacityBoost;\n const ambientO = this.shadows.opacityAmbient + this.shadows.opacityBoost;\n\n const umbraC = (inverse)\n ? `rgba(${this.shadows.inverseBaselineColorString}, ${umbraO})`\n : `rgba(${this.shadows.baselineColorString}, ${umbraO})`;\n const penumbraC = (inverse)\n ? `rgba(${this.shadows.inverseBaselineColorString}, ${penumbraO})`\n : `rgba(${this.shadows.baselineColorString}, ${penumbraO})`;\n const ambientC = (inverse)\n ? `rgba(${this.shadows.inverseBaselineColorString}, ${ambientO})`\n : `rgba(${this.shadows.baselineColorString}, ${ambientO})`;\n\n const umbraM = this.shadows.mapUmbra[elevation];\n const penumbraM = this.shadows.mapPenumbra[elevation];\n const ambientM = this.shadows.mapAmbient[elevation];\n\n const umbraS = (rotate)\n ? `${-umbraM.y}px ${umbraM.y / 2}px ${umbraM.b}px ${umbraM.s}px`\n : `${umbraM.y / 2}px ${umbraM.y}px ${umbraM.b}px ${umbraM.s}px`;\n const penumbraS = (rotate)\n ? `${-penumbraM.y}px ${penumbraM.y / 2}px ${penumbraM.b}px ${penumbraM.s}px`\n : `${penumbraM.y / 2}px ${penumbraM.y}px ${penumbraM.b}px ${penumbraM.s}px`;\n const ambientS = (rotate)\n ? `${-ambientM.y}px ${ambientM.y / 2}px ${ambientM.b}px ${ambientM.s}px`\n : `${ambientM.y / 2}px ${ambientM.y}px ${ambientM.b}px ${ambientM.s}px`;\n\n return `${umbraS} ${umbraC}, ${penumbraS} ${penumbraC}, ${ambientS} ${ambientC}`;\n }\n\n static get svgFilters() {\n const shadows = DecidablesElement.shadows; // eslint-disable-line prefer-destructuring\n const erodeRadius = 1;\n\n const filters = shadows.elevations.map((z) => {\n return svg`\n <filter id=${`shadow-${z}`} x=\"-250%\" y=\"-250%\" width=\"600%\" height=\"600%\">\n <feComponentTransfer in=\"SourceAlpha\" result=\"solid\">\n <feFuncA type=\"table\" tableValues=\"0 1 1\"/>\n </feComponentTransfer>\n <feOffset in=\"solid\" result=\"offU\" dx=${shadows.mapUmbra[z].y / 2} dy=${shadows.mapUmbra[z].y} />\n <feOffset in=\"solid\" result=\"offP\" dx=${shadows.mapPenumbra[z].y / 2} dy=${shadows.mapPenumbra[z].y} />\n <feOffset in=\"solid\" result=\"offA\" dx=${shadows.mapAmbient[z].y / 2} dy=${shadows.mapAmbient[z].y} />\n ${(shadows.mapUmbra[z].s === 0)\n ? svg``\n : svg`<feMorphology in=\"offU\" result=\"spreadU\" operator=${(shadows.mapUmbra[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapUmbra[z].s)} />`\n }\n ${(shadows.mapPenumbra[z].s === 0)\n ? svg``\n : svg`<feMorphology in=\"offP\" result=\"spreadP\" operator=${(shadows.mapPenumbra[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapPenumbra[z].s)} />`\n }\n ${(shadows.mapAmbient[z].s === 0)\n ? svg``\n : svg`<feMorphology in=\"offA\" result=\"spreadA\" operator=${(shadows.mapAmbient[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapAmbient[z].s)} />`\n }\n <feGaussianBlur in=${(shadows.mapUmbra[z].s === 0) ? 'offU' : 'spreadU'} result=\"blurU\" stdDeviation=${shadows.mapUmbra[z].b / 2} />\n <feGaussianBlur in=${(shadows.mapPenumbra[z].s === 0) ? 'offP' : 'spreadP'} result=\"blurP\" stdDeviation=${shadows.mapPenumbra[z].b / 2} />\n <feGaussianBlur in=${(shadows.mapAmbient[z].s === 0) ? 'offA' : 'spreadA'} result=\"blurA\" stdDeviation=${shadows.mapAmbient[z].b / 2} />\n <feFlood in=\"SourceGraphic\" result=\"opU\" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityUmbra + shadows.opacityBoost} />\n <feFlood in=\"SourceGraphic\" result=\"opP\" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityPenumbra + shadows.opacityBoost} />\n <feFlood in=\"SourceGraphic\" result=\"opA\" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityAmbient + shadows.opacityBoost} />\n <feComposite in=\"opU\" in2=\"blurU\" result=\"shU\" operator=\"in\" />\n <feComposite in=\"opP\" in2=\"blurP\" result=\"shP\" operator=\"in\" />\n <feComposite in=\"opA\" in2=\"blurA\" result=\"shA\" operator=\"in\" />\n <!-- HACK Edge: Using a dynamic value for erode radius stops Edge from corrupting the \"radius\" value! -->\n <feMorphology in=\"solid\" result=\"smaller\" operator=\"erode\" radius=${erodeRadius} />\n <feComposite in=\"shU\" in2=\"smaller\" result=\"finalU\" operator=\"out\" />\n <feComposite in=\"shP\" in2=\"smaller\" result=\"finalP\" operator=\"out\" />\n <feComposite in=\"shA\" in2=\"smaller\" result=\"finalA\" operator=\"out\" />\n <feMerge>\n <feMergeNode in=\"finalU\" />\n <feMergeNode in=\"finalP\" />\n <feMergeNode in=\"finalA\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>`;\n });\n\n return svg`\n <svg class=\"defs\">\n <defs>\n ${filters}\n </defs>\n </svg>\n `;\n }\n\n static get styles() {\n return css`\n :host {\n ---shadow-0: var(--shadow-0, ${unsafeCSS(this.cssBoxShadow(0))});\n ---shadow-2: var(--shadow-2, ${unsafeCSS(this.cssBoxShadow(2))});\n ---shadow-4: var(--shadow-4, ${unsafeCSS(this.cssBoxShadow(4))});\n ---shadow-8: var(--shadow-8, ${unsafeCSS(this.cssBoxShadow(8))});\n\n ---color-background: var(--color-background, ${unsafeCSS(this.greys.white)});\n ---color-border: var(--color-border, ${unsafeCSS(this.greys.light75)});\n ---color-text: var(--color-text, ${unsafeCSS(this.greys.dark75)});\n ---color-text-inverse: var(--color-text-inverse, ${unsafeCSS(this.greys.white)});\n ---color-link: var(--color-link, ${unsafeCSS(this.greys.dark25)});\n ---color-element-background: var(--color-element-background, ${unsafeCSS(this.greys.light75)});\n ---color-element-disabled: var(--color-element-disabled, ${unsafeCSS(this.greys.light50)});\n ---color-element-enabled: var(--color-element-enabled, ${unsafeCSS(this.greys.grey)});\n ---color-element-selected: var(--color-element-selected, ${unsafeCSS(this.greys.dark25)});\n ---color-element-border: var(--color-element-border, ${unsafeCSS(this.greys.dark50)});\n ---color-element-emphasis: var(--color-element-emphasis, ${unsafeCSS(this.greys.dark75)});\n\n ---font-family-base: var(--font-family-base, \"Source Sans\", sans-serif);\n ---font-family-math: var(--font-family-math, \"Source Serif\", serif);\n\n ---transition-duration: var(--transition-duration, 500ms);\n\n font-family: var(---font-family-base);\n }\n\n :host,\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: border-box;\n }\n\n .math-greek {\n font-family: var(---font-family-math);\n font-style: normal;\n }\n\n .math-num {\n font-family: var(---font-family-base);\n font-style: normal;\n }\n\n .math-var {\n font-family: var(---font-family-math);\n font-style: italic;\n }\n\n .defs {\n display: block;\n\n width: 0;\n height: 0;\n }\n `;\n }\n}\n\n// Static property of DecidablesElement!\nDecidablesElement.ID = 0;\n","\nimport {html, css} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesButton extends DecidablesElement {\n static get properties() {\n return {\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.disabled = false;\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n margin: 0.25rem;\n }\n\n button {\n width: 100%;\n height: 100%;\n padding: 0.375rem 0.75rem;\n\n font-family: var(---font-family-base);\n font-size: 1.125rem;\n line-height: 1.5;\n color: var(---color-text-inverse);\n\n border: 0;\n border-radius: 0.25rem;\n outline: none;\n }\n\n button:disabled {\n background-color: var(--decidables-button-background-color, var(---color-element-disabled));\n outline: none;\n box-shadow: none;\n }\n\n button:enabled {\n cursor: pointer;\n\n background-color: var(--decidables-button-background-color, var(---color-element-enabled));\n outline: none;\n box-shadow: var(---shadow-2);\n }\n\n button:enabled:hover {\n outline: none;\n box-shadow: var(---shadow-4);\n }\n\n button:enabled:active {\n outline: none;\n box-shadow: var(---shadow-8);\n }\n\n :host(.keyboard) button:enabled:focus {\n outline: none;\n box-shadow: var(---shadow-4);\n }\n\n :host(.keyboard) button:enabled:focus:active {\n outline: none;\n box-shadow: var(---shadow-8);\n }\n `,\n ];\n }\n\n render() {\n return html`\n <button ?disabled=${this.disabled}>\n <slot></slot>\n </button>\n `;\n }\n}\n\ncustomElements.define('decidables-button', DecidablesButton);\n","import{nothing as t}from\"../lit-html.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const l=l=>null!=l?l:t;export{l as ifDefined};\n//# sourceMappingURL=if-defined.js.map\n","\nimport {ifDefined} from 'lit/directives/if-defined.js'; /* eslint-disable-line import/extensions */\nimport {html, css, unsafeCSS} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesSlider extends DecidablesElement {\n static get properties() {\n return {\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n max: {\n attribute: 'max',\n type: Number,\n reflect: true,\n },\n min: {\n attribute: 'min',\n type: Number,\n reflect: true,\n },\n step: {\n attribute: 'step',\n type: Number,\n reflect: true,\n },\n value: {\n attribute: 'value',\n type: Number,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.disabled = false;\n this.max = undefined;\n this.min = undefined;\n this.step = undefined;\n this.value = undefined;\n }\n\n changed(event) {\n this.value = event.target.value;\n this.dispatchEvent(new CustomEvent('change', {\n detail: {\n value: this.value,\n },\n bubbles: true,\n }));\n }\n\n inputted(event) {\n this.value = event.target.value;\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n ---shadow-2-rotate: var(--shadow-2-rotate, ${unsafeCSS(this.cssBoxShadow(2, true, false))});\n ---shadow-4-rotate: var(--shadow-4-rotate, ${unsafeCSS(this.cssBoxShadow(4, true, false))});\n ---shadow-8-rotate: var(--shadow-8-rotate, ${unsafeCSS(this.cssBoxShadow(8, true, false))});\n\n display: flex;\n\n flex-direction: column;\n\n align-items: center;\n justify-content: center;\n }\n\n label {\n margin: 0.25rem 0.25rem 0;\n }\n\n .range {\n display: inline-block;\n\n width: 3.5rem;\n height: 4.75rem;\n margin: 0 0.25rem 0.25rem;\n }\n\n decidables-spinner {\n --decidables-spinner-input-width: 3.5rem;\n\n margin: 0 0.25rem 0.25rem;\n }\n\n /* Adapted from http://danielstern.ca/range.css/#/ */\n /* Overall */\n input[type=range] {\n width: 4.75rem;\n height: 3.5rem;\n padding: 0;\n margin: 0;\n\n background-color: unset;\n\n transform: rotate(-90deg);\n transform-origin: 2.375rem 2.375rem;\n\n /* stylelint-disable-next-line property-no-vendor-prefix */\n -webkit-appearance: none;\n }\n\n input[type=range]:enabled {\n cursor: ns-resize;\n }\n\n input[type=range]:focus {\n outline: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-ms-tooltip {\n display: none;\n }\n\n /* Track */\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-webkit-slider-runnable-track {\n width: 100%;\n height: 4px;\n\n background: var(---color-element-disabled);\n border: 0;\n border-radius: 2px;\n box-shadow: none;\n }\n\n input[type=range]:focus::-webkit-slider-runnable-track {\n background: var(---color-element-disabled);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-moz-range-track {\n width: 100%;\n height: 4px;\n\n background: var(---color-element-disabled);\n border: 0;\n border-radius: 2px;\n box-shadow: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-ms-track {\n width: 100%;\n height: 4px;\n\n color: transparent;\n\n background: transparent;\n border-color: transparent;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-ms-fill-lower {\n background: #cccccc;\n /* background: var(---color-element-disabled); */\n border: 0;\n border-radius: 2px;\n box-shadow: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-ms-fill-upper {\n background: #cccccc;\n /* background: var(---color-element-disabled); */\n border: 0;\n border-radius: 2px;\n box-shadow: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:focus::-ms-fill-lower {\n background: var(---color-element-disabled);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:focus::-ms-fill-upper {\n background: var(---color-element-disabled);\n }\n\n /* Thumb */\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-webkit-slider-thumb {\n width: 10px;\n height: 20px;\n margin-top: -8px;\n\n border: 0;\n border-radius: 4px;\n\n /* stylelint-disable-next-line property-no-vendor-prefix */\n -webkit-appearance: none;\n }\n\n input[type=range]:disabled::-webkit-slider-thumb {\n background: var(---color-element-disabled);\n box-shadow: none;\n }\n\n input[type=range]:enabled::-webkit-slider-thumb {\n background: var(---color-element-enabled);\n box-shadow: var(---shadow-2-rotate);\n }\n\n input[type=range]:enabled:hover::-webkit-slider-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n input[type=range]:enabled:active::-webkit-slider-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n\n :host(.keyboard) input[type=range]:enabled:focus::-webkit-slider-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n :host(.keyboard) input[type=range]:focus:active::-webkit-slider-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-moz-range-thumb {\n width: 10px;\n height: 20px;\n\n border: 0;\n border-radius: 4px;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:disabled::-moz-range-thumb {\n background: var(---color-element-disabled);\n box-shadow: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled::-moz-range-thumb {\n background: var(---color-element-enabled);\n box-shadow: var(---shadow-2-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled:hover::-moz-range-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled:active::-moz-range-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n\n :host(.keyboard) input[type=range]:enabled:focus::-moz-range-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n :host(.keyboard) input[type=range]:enabled:focus:active::-moz-range-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-ms-thumb {\n width: 10px;\n height: 20px;\n margin-top: 0;\n\n background: #999999;\n /* background: var(---color-element-enabled); */\n border: 0;\n border-radius: 4px;\n box-shadow: var(---shadow-2-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:disabled::-ms-thumb {\n background: var(---color-element-disabled);\n box-shadow: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled::-ms-thumb {\n background: var(---color-element-enabled);\n box-shadow: var(---shadow-2-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled:hover::-ms-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled:active::-ms-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n :host(.keyboard) input[type=range]:enabled:focus::-ms-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n :host(.keyboard) input[type=range]:enabled:focus:active::-ms-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n `,\n ];\n }\n\n render() {\n return html`\n <label for=${`${this.uniqueId}-slider`}>\n <slot></slot>\n </label>\n <div class=\"range\">\n <input type=\"range\" id=${`${this.uniqueId}-slider`} min=${ifDefined(this.min)} max=${ifDefined(this.max)} step=${ifDefined(this.step)} .value=${this.value} @change=${this.changed.bind(this)} @input=${this.inputted.bind(this)}>\n </div>\n <decidables-spinner min=${ifDefined(this.min)} max=${ifDefined(this.max)} step=${ifDefined(this.step)} .value=${this.value} @input=${this.inputted.bind(this)}></decidables-spinner>\n `;\n }\n}\n\ncustomElements.define('decidables-slider', DecidablesSlider);\n","\nimport {ifDefined} from 'lit/directives/if-defined.js'; /* eslint-disable-line import/extensions */\nimport {html, css} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesSpinner extends DecidablesElement {\n static get properties() {\n return {\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n max: {\n attribute: 'max',\n type: Number,\n reflect: true,\n },\n min: {\n attribute: 'min',\n type: Number,\n reflect: true,\n },\n step: {\n attribute: 'step',\n type: Number,\n reflect: true,\n },\n value: {\n attribute: 'value',\n type: Number,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.disabled = false;\n this.max = undefined;\n this.min = undefined;\n this.step = undefined;\n this.value = undefined;\n }\n\n inputted(event) {\n this.value = event.target.value;\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n ---decidables-spinner-font-size: var(--decidables-spinner-font-size, 1.125rem);\n ---decidables-spinner-input-width: var(--decidables-spinner-input-width, 4rem);\n ---decidables-spinner-prefix: var(--decidables-spinner-prefix, \"\");\n\n display: block;\n }\n\n label {\n position: relative;\n display: flex;\n\n flex-direction: column;\n\n align-items: center;\n\n margin: 0;\n\n font-size: 0.75rem;\n }\n\n label::before {\n position: absolute;\n bottom: 1px;\n left: calc(50% - var(---decidables-spinner-input-width) / 2 + 0.25rem);\n\n font-size: var(---decidables-spinner-font-size);\n line-height: normal;\n\n content: var(---decidables-spinner-prefix);\n }\n\n input[type=number] {\n width: var(---decidables-spinner-input-width);\n\n font-family: var(---font-family-base);\n font-size: var(---decidables-spinner-font-size);\n color: inherit;\n text-align: right;\n\n background: none;\n border: 0;\n border-radius: 0;\n outline: none;\n box-shadow: var(---shadow-2);\n\n -webkit-appearance: none; /* stylelint-disable-line property-no-vendor-prefix */\n }\n\n input[type=number]:hover {\n box-shadow: var(---shadow-4);\n }\n\n input[type=number]:focus,\n input[type=number]:active {\n box-shadow: var(---shadow-8);\n }\n\n input[type=number]:disabled {\n color: var(---color-text);\n\n border: 0;\n box-shadow: none;\n\n /* HACK: Use correct text color in Safari */\n -webkit-opacity: 1;\n /* HACK: Hide spinners in disabled input for Firefox and Safari */\n -moz-appearance: textfield; /* stylelint-disable-line property-no-vendor-prefix */\n /* HACK: Use correct text color in Safari */\n -webkit-text-fill-color: var(---color-text);\n }\n\n /* HACK: Hide spinners in disabled input for Firefox and Safari */\n input[type=number]:disabled::-webkit-outer-spin-button,\n input[type=number]:disabled::-webkit-inner-spin-button {\n margin: 0;\n -webkit-appearance: none; /* stylelint-disable-line property-no-vendor-prefix */\n }\n `,\n ];\n }\n\n render() {\n return html`\n <label>\n <slot></slot>\n <input ?disabled=${this.disabled} type=\"number\" min=${ifDefined(this.min)} max=${ifDefined(this.max)} step=${ifDefined(this.step)} .value=${this.value} @input=${this.inputted.bind(this)}>\n </label>\n `;\n }\n}\n\ncustomElements.define('decidables-spinner', DecidablesSpinner);\n","\nimport {html, css} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesSwitch extends DecidablesElement {\n static get properties() {\n return {\n checked: {\n attribute: 'checked',\n type: Boolean,\n reflect: true,\n },\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.checked = false;\n this.disabled = false;\n }\n\n changed(event) {\n this.checked = event.target.checked;\n this.dispatchEvent(new CustomEvent('change', {\n detail: {\n checked: this.checked,\n },\n bubbles: true,\n }));\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: flex;\n\n flex-direction: column;\n\n align-items: center;\n justify-content: center;\n }\n\n /* Adapted from https://codepen.io/guuslieben/pen/YyPRVP */\n input[type=checkbox] {\n /* visuallyhidden: https://github.com/h5bp/html5-boilerplate/blob/master/dist/doc/css.md */\n position: absolute;\n\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n\n white-space: nowrap;\n\n border: 0;\n clip-path: inset(100%); /* May cause a performance issue: https://github.com/h5bp/html5-boilerplate/issues/2021 */\n }\n\n input[type=checkbox] + label {\n order: 1;\n\n margin: 0 0.25rem 0.25rem;\n\n font-weight: 400;\n }\n\n input[type=checkbox] + label + label {\n position: relative;\n\n min-width: 24px;\n padding: 0 0 36px;\n margin: 0.25rem 0.25rem 0;\n\n font-weight: 400;\n\n outline: none;\n }\n\n input[type=checkbox] + label + label::before,\n input[type=checkbox] + label + label::after {\n position: absolute;\n\n left: 50%;\n\n margin: 0;\n\n content: \"\";\n\n outline: 0;\n\n transition: all var(---transition-duration) ease;\n transform: translate(-50%, 0);\n }\n\n input[type=checkbox] + label + label::before {\n bottom: 1px;\n\n width: 8px;\n height: 34px;\n\n background-color: var(---color-element-disabled);\n border-radius: 4px;\n }\n\n input[type=checkbox] + label + label::after {\n bottom: 0;\n\n width: 18px;\n height: 18px;\n\n background-color: var(---color-element-enabled);\n border-radius: 50%;\n box-shadow: var(---shadow-2);\n }\n\n input[type=checkbox]:checked + label + label::after {\n transform: translate(-50%, -100%);\n }\n\n input[type=checkbox]:disabled + label + label::after {\n background-color: var(---color-element-disabled);\n box-shadow: none;\n }\n\n input[type=checkbox]:enabled + label,\n input[type=checkbox]:enabled + label + label {\n cursor: pointer;\n }\n\n input[type=checkbox]:enabled + label:hover + label::after,\n input[type=checkbox]:enabled + label + label:hover::after {\n box-shadow: var(---shadow-4);\n }\n\n input[type=checkbox]:enabled + label:active + label::after,\n input[type=checkbox]:enabled + label + label:active::after {\n box-shadow: var(---shadow-8);\n }\n\n /* stylelint-disable-next-line selector-max-compound-selectors */\n :host(.keyboard) input[type=checkbox]:enabled:focus + label + label::after {\n box-shadow: var(---shadow-4);\n }\n\n /* stylelint-disable-next-line selector-max-compound-selectors */\n :host(.keyboard) input[type=checkbox]:enabled:focus + label + label:active::after,\n :host(.keyboard) input[type=checkbox]:enabled:focus:active + label + label::after {\n box-shadow: var(---shadow-8);\n }\n `,\n ];\n }\n\n render() {\n return html`\n <input type=\"checkbox\" id=${`${this.uniqueId}-checkbox`} ?checked=${this.checked} ?disabled=${this.disabled} @change=${this.changed.bind(this)}>\n <label for=${`${this.uniqueId}-checkbox`}>\n <slot name=\"off-label\"></slot>\n </label>\n <label for=${`${this.uniqueId}-checkbox`}>\n <slot></slot>\n </label>\n `;\n }\n}\n\ncustomElements.define('decidables-switch', DecidablesSwitch);\n","\nimport {html, css} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesToggle extends DecidablesElement {\n static get properties() {\n return {\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.disabled = false;\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n fieldset {\n display: flex;\n\n flex-direction: column;\n\n align-items: stretch;\n justify-content: center;\n\n margin: 0.25rem;\n\n border: 0;\n }\n\n legend {\n text-align: center;\n }\n `,\n ];\n }\n\n render() {\n return html`\n <fieldset ?disabled=${this.disabled}>\n <legend><slot name=\"label\"></slot></legend>\n <slot></slot>\n </fieldset>\n `;\n }\n}\n\ncustomElements.define('decidables-toggle', DecidablesToggle);\n","\nimport {html, css} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesToggleOption extends DecidablesElement {\n static get properties() {\n return {\n checked: {\n attribute: 'checked',\n type: Boolean,\n reflect: true,\n },\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n name: {\n attribute: 'name',\n type: String,\n reflect: true,\n },\n value: {\n attribute: 'value',\n type: String,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.checked = false;\n this.disabled = false;\n this.name = undefined;\n this.value = undefined;\n }\n\n changed(event) {\n this.checked = event.target.checked;\n this.dispatchEvent(new CustomEvent('change', {\n detail: {\n checked: this.checked,\n value: this.value,\n },\n bubbles: true,\n }));\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: flex;\n }\n\n input[type=radio] {\n /* visuallyhidden: https://github.com/h5bp/html5-boilerplate/blob/master/dist/doc/css.md */\n position: absolute;\n\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n\n white-space: nowrap;\n\n border: 0;\n clip-path: inset(100%); /* May cause a performance issue: https://github.com/h5bp/html5-boilerplate/issues/2021 */\n }\n\n input[type=radio] + label {\n width: 100%;\n padding: 0.375rem 0.75rem;\n\n font-family: var(---font-family-base);\n font-size: 1.125rem;\n line-height: 1.5;\n color: var(---color-text-inverse);\n text-align: center;\n\n cursor: pointer;\n\n background-color: var(---color-element-enabled);\n border: 0;\n border-radius: 0;\n outline: none;\n\n box-shadow: var(---shadow-2);\n }\n\n input[type=radio]:checked + label {\n background-color: var(---color-element-selected);\n outline: none;\n box-shadow: var(---shadow-2);\n }\n\n input[type=radio] + label:hover {\n z-index: 1;\n\n outline: none;\n box-shadow: var(---shadow-4);\n }\n\n input[type=radio] + label:active {\n z-index: 2;\n\n outline: none;\n box-shadow: var(---shadow-8);\n }\n\n :host(:first-of-type) input[type=radio] + label {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n\n :host(:last-of-type) input[type=radio] + label {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n\n :host(.keyboard) input[type=radio]:focus + label {\n z-index: 1;\n\n outline: none;\n box-shadow: var(---shadow-4);\n }\n\n :host(.keyboard) input[type=radio]:focus:checked + label {\n z-index: 1;\n\n background-color: var(---color-element-selected);\n outline: none;\n box-shadow: var(---shadow-4);\n }\n\n :host(.keyboard) input[type=radio]:focus + label:active {\n z-index: 2;\n\n outline: none;\n box-shadow: var(---shadow-8);\n }\n `,\n ];\n }\n\n render() {\n return html`\n <input type=\"radio\" id=${`${this.uniqueId}-radio`} name=${this.name} value=${this.value} .checked=${this.checked} @change=${this.changed.bind(this)}>\n <label for=${`${this.uniqueId}-radio`}>\n <slot></slot>\n </label>\n `;\n }\n}\n\ncustomElements.define('decidables-toggle-option', DecidablesToggleOption);\n","\n/*\n Attribute: Space-separated sequence of strings\n Property: Set of strings\n*/\nconst DecidablesConverterSet = {\n fromAttribute: (value) => {\n return new Set(value.split(/\\s+/));\n },\n toAttribute: (value) => {\n return (value.size) ? [...value].join(' ') : null;\n },\n};\n\nexport default DecidablesConverterSet;\n","\nimport {\n css,\n unsafeCSS,\n} from 'lit';\nimport * as d3 from 'd3';\n\nimport {DecidablesElement} from '@decidables/decidables-elements';\n\n/*\n DetectableElement Base Class - Not intended for instantiation!\n <detectable-element>\n*/\nexport default class DetectableElement extends DecidablesElement {\n static get properties() {\n return {\n interactive: {\n attribute: 'interactive',\n type: Boolean,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n this.interactive = false;\n }\n\n static get colors() {\n return {\n h: d3.schemeSet1[2],\n m: d3.schemeSet1[4],\n fa: d3.schemeSet1[1],\n cr: d3.schemeSet1[0],\n hr: d3.schemeSet1[5],\n far: d3.schemeSet1[3],\n acc: d3.schemeSet1[8],\n d: d3.schemeSet1[7],\n c: d3.schemeSet1[6],\n s: '#4545d0',\n present: '#f032e6',\n absent: '#10dbc9',\n correct: '#ffffff',\n error: '#000000',\n nr: '#cccccc',\n };\n }\n\n static get lights() {\n return Object.keys(DetectableElement.colors).reduce((acc, cur) => {\n acc[cur] = d3.interpolateRgb(DetectableElement.colors[cur], '#ffffff')(0.5);\n return acc;\n }, {});\n }\n\n static get darks() {\n return Object.keys(DetectableElement.colors).reduce((acc, cur) => {\n acc[cur] = d3.interpolateRgb(DetectableElement.colors[cur], '#000000')(0.5);\n return acc;\n }, {});\n }\n\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n ---color-h: var(--color-h, ${unsafeCSS(this.colors.h)});\n ---color-m: var(--color-m, ${unsafeCSS(this.colors.m)});\n ---color-fa: var(--color-fa, ${unsafeCSS(this.colors.fa)});\n ---color-cr: var(--color-cr, ${unsafeCSS(this.colors.cr)});\n ---color-hr: var(--color-hr, ${unsafeCSS(this.colors.hr)});\n ---color-far: var(--color-far, ${unsafeCSS(this.colors.far)});\n ---color-acc: var(--color-acc, ${unsafeCSS(this.colors.acc)});\n ---color-d: var(--color-d, ${unsafeCSS(this.colors.d)});\n ---color-c: var(--color-c, ${unsafeCSS(this.colors.c)});\n ---color-s: var(--color-s, ${unsafeCSS(this.colors.s)});\n ---color-present: var(--color-present, ${unsafeCSS(this.colors.present)});\n ---color-absent: var(--color-absent, ${unsafeCSS(this.colors.absent)});\n ---color-correct: var(--color-correct, ${unsafeCSS(this.colors.correct)});\n ---color-error: var(--color-error, ${unsafeCSS(this.colors.error)});\n ---color-nr: var(--color-nr, ${unsafeCSS(this.colors.nr)});\n\n ---color-h-light: var(--color-h-light, ${unsafeCSS(this.lights.h)});\n ---color-m-light: var(--color-m-light, ${unsafeCSS(this.lights.m)});\n ---color-fa-light: var(--color-fa-light, ${unsafeCSS(this.lights.fa)});\n ---color-cr-light: var(--color-cr-light, ${unsafeCSS(this.lights.cr)});\n ---color-hr-light: var(--color-hr-light, ${unsafeCSS(this.lights.hr)});\n ---color-far-light: var(--color-far-light, ${unsafeCSS(this.lights.far)});\n ---color-acc-light: var(--color-acc-light, ${unsafeCSS(this.lights.acc)});\n ---color-d-light: var(--color-d-light, ${unsafeCSS(this.lights.d)});\n ---color-c-light: var(--color-c-light, ${unsafeCSS(this.lights.c)});\n ---color-s-light: var(--color-s-light, ${unsafeCSS(this.lights.s)});\n ---color-present-light: var(--color-present-light, ${unsafeCSS(this.lights.present)});\n ---color-absent-light: var(--color-absent-light, ${unsafeCSS(this.lights.absent)});\n ---color-correct-light: var(--color-correct-light, ${unsafeCSS(this.lights.correct)});\n ---color-error-light: var(--color-error-light, ${unsafeCSS(this.lights.error)});\n ---color-nr-light: var(--color-nr-light, ${unsafeCSS(this.lights.nr)});\n\n ---color-h-dark: var(--color-h-dark, ${unsafeCSS(this.darks.h)});\n ---color-m-dark: var(--color-m-dark, ${unsafeCSS(this.darks.m)});\n ---color-fa-dark: var(--color-fa-dark, ${unsafeCSS(this.darks.fa)});\n ---color-cr-dark: var(--color-cr-dark, ${unsafeCSS(this.darks.cr)});\n ---color-hr-dark: var(--color-hr-dark, ${unsafeCSS(this.darks.hr)});\n ---color-far-dark: var(--color-far-dark, ${unsafeCSS(this.darks.far)});\n ---color-acc-dark: var(--color-acc-dark, ${unsafeCSS(this.darks.acc)});\n ---color-d-dark: var(--color-d-dark, ${unsafeCSS(this.darks.d)});\n ---color-c-dark: var(--color-c-dark, ${unsafeCSS(this.darks.c)});\n ---color-s-dark: var(--color-s-dark, ${unsafeCSS(this.darks.s)});\n ---color-present-dark: var(--color-present-dark, ${unsafeCSS(this.darks.present)});\n ---color-absent-dark: var(--color-absent-dark, ${unsafeCSS(this.darks.absent)});\n ---color-correct-dark: var(--color-correct-dark, ${unsafeCSS(this.darks.correct)});\n ---color-error-dark: var(--color-error-dark, ${unsafeCSS(this.darks.error)});\n ---color-nr-dark: var(--color-nr-dark, ${unsafeCSS(this.darks.nr)});\n }\n `,\n ];\n }\n}\n","\nimport {html, css} from 'lit';\nimport * as d3 from 'd3';\n\nimport DetectableElement from '../detectable-element';\n\n/*\n RDKTask element\n <rdk-task>\n\n Attributes:\n Dots; Coherence;\n # Direction, Speed, Lifetime\n*/\nexport default class RDKTask extends DetectableElement {\n static get properties() {\n return {\n coherence: {\n attribute: 'coherence',\n type: Number,\n reflect: true,\n },\n count: {\n attribute: 'count',\n type: Number,\n reflect: true,\n },\n probability: {\n attribute: 'probability',\n type: Number,\n reflect: true,\n },\n duration: {\n attribute: 'duration',\n type: Number,\n reflect: true,\n },\n wait: {\n attribute: 'wait',\n type: Number,\n reflect: true,\n },\n iti: {\n attribute: 'iti',\n type: Number,\n reflect: true,\n },\n trials: {\n attribute: 'trials',\n type: Number,\n reflect: true,\n },\n running: {\n attribute: 'running',\n type: Boolean,\n reflect: true,\n },\n\n direction: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n lifetime: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n speed: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n\n width: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n height: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n rem: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.coherence = 0.5; // Proportion of dots moving coherently\n this.count = 100; // Number of dots\n this.probability = 0.5; // Probability of signal (as opposed to noise)\n this.duration = 2000; // Duration of stimulus in milliseconds\n this.wait = 2000; // Duration of wait period for response in milliseconds\n this.iti = 2000; // Duration of inter-trial interval in milliseconds\n this.trials = 5; // Number of trials per block\n this.running = false; // Currently executing block of trials\n\n // Properties\n this.direction = -1; // Direction of current trial in degrees\n this.lifetime = 400; // Lifetime of each dot in milliseconds\n this.speed = 50; // Rate of dot movement in pixels per second\n\n this.width = NaN; // Width of component in pixels\n this.height = NaN; // Height of component in pixels\n this.rem = NaN; // Pixels per rem for component\n\n // Private\n this.firstUpdate = true;\n this.COHERENT = 0; // \"Constant\" for index to coherent dots\n this.RANDOM = 1; // \"Constant\" for index to random dots\n this.dots = [[], []]; // Array of array of dots\n this.trial = 0; // Count of current trial\n\n this.states = ['resetted', 'iti', 'stimulus', 'wait', 'ended']; // Possible states of task\n this.state = 'resetted'; // Current state of task\n\n this.baseTime = 0; // Real time, in milliseconds, that the current block started\n this.pauseTime = 0; // Real time, in milliseconds, that block was paused at\n this.startTime = 0; // Virtual time, in milliseconds, that current stage of trial started\n this.lastTime = 0; // Virtual time, in milliseconds, of the most recent frame\n this.currentDirection = undefined; // Direction in degrees for current trial\n\n this.signals = ['present', 'absent']; // Possible trial types\n this.signal = undefined; // Current trial type\n\n this.runner = undefined; // D3 Interval for frame timing\n this.xScale = undefined; // D3 Scale for x-axis\n this.yScale = undefined; // D3 Scale for y-axis\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n\n width: 10rem;\n height: 10rem;\n }\n\n .main {\n width: 100%;\n height: 100%;\n }\n\n .background {\n fill: var(---color-element-disabled);\n stroke: none;\n }\n\n .outline {\n fill: none;\n stroke: var(---color-element-emphasis);\n stroke-width: 2px;\n }\n\n .dot {\n /* r: 2px; HACK: Firefox does not support CSS SVG Geometry Properties */\n }\n\n .dots.coherent {\n fill: var(---color-background);\n }\n\n .dots.random {\n fill: var(---color-background);\n }\n\n .fixation {\n stroke: var(---color-text);\n stroke-width: 2px;\n }\n\n .query {\n font-size: 1.75rem;\n font-weight: 600;\n }\n `,\n ];\n }\n\n render() { // eslint-disable-line class-methods-use-this\n return html``;\n }\n\n getDimensions() {\n this.width = parseFloat(this.getComputedStyleValue('width'), 10);\n this.height = parseFloat(this.getComputedStyleValue('height'), 10);\n this.rem = parseFloat(getComputedStyle(document.documentElement).getPropertyValue('font-size'), 10);\n // console.log(`rdk-task: width = ${this.width}, height = ${this.height}, rem = ${this.rem}`);\n }\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('resize', this.getDimensions.bind(this));\n }\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.getDimensions.bind(this));\n super.disconnectedCallback();\n }\n\n firstUpdated(changedProperties) {\n super.firstUpdated(changedProperties);\n\n // Get the width and height after initial render/update has occurred\n // HACK Edge: Edge doesn't have width/height until after a 0ms timeout\n window.setTimeout(this.getDimensions.bind(this), 0);\n }\n\n update(changedProperties) {\n super.update(changedProperties);\n\n // Bail out if we can't get the width/height/rem\n if (Number.isNaN(this.width) || Number.isNaN(this.height) || Number.isNaN(this.rem)) {\n return;\n }\n\n const elementWidth = this.width;\n const elementHeight = this.height;\n const elementSize = Math.min(elementWidth, elementHeight);\n\n const margin = {\n top: 0.25 * this.rem,\n bottom: 0.25 * this.rem,\n left: 0.25 * this.rem,\n right: 0.25 * this.rem,\n };\n const height = elementSize - (margin.top + margin.bottom);\n const width = elementSize - (margin.left + margin.right);\n\n // X Scale\n this.xScale = d3.scaleLinear()\n .domain([-1, 1])\n .range([0, width]);\n\n // Y Scale\n this.yScale = d3.scaleLinear()\n .domain([1, -1])\n .range([0, height]);\n\n // Svg\n // DATA-JOIN\n const svgUpdate = d3.select(this.renderRoot).selectAll('.main')\n .data([{\n width: this.width,\n height: this.height,\n rem: this.rem,\n }]);\n // ENTER\n const svgEnter = svgUpdate.enter().append('svg')\n .classed('main', true);\n // MERGE\n const svgMerge = svgEnter.merge(svgUpdate)\n .attr('viewBox', `0 0 ${elementSize} ${elementSize}`);\n\n // Clippath\n // ENTER\n svgEnter.append('clipPath')\n .attr('id', 'clip-rdk-task')\n .append('circle');\n // MERGE\n svgMerge.select('clipPath circle')\n .attr('cx', this.xScale(0))\n .attr('cy', this.yScale(0))\n .attr('r', this.xScale(1) - this.xScale(0));\n\n // Plot\n // ENTER\n const plotEnter = svgEnter.append('g')\n .classed('plot', true);\n // MERGE\n const plotMerge = svgMerge.select('.plot')\n .attr('transform', `translate(${margin.left}, ${margin.top})`);\n\n // Underlayer\n // ENTER\n const underlayerEnter = plotEnter.append('g')\n .classed('underlayer', true);\n // MERGE\n const underlayerMerge = plotMerge.select('.underlayer');\n\n // Background\n // ENTER\n underlayerEnter.append('circle')\n .classed('background', true);\n // MERGE\n underlayerMerge.select('.background')\n .attr('cx', this.xScale(0))\n .attr('cy', this.yScale(0))\n .attr('r', this.xScale(1) - this.xScale(0));\n\n // Content\n // ENTER\n plotEnter.append('g')\n .classed('content', true)\n .attr('clip-path', 'url(#clip-rdk-task)');\n // MERGE\n const contentMerge = plotMerge.select('.content');\n\n // Dot Groups\n // DATA-JOIN\n const dotsUpdate = contentMerge.selectAll('.dots')\n .data([[], []]);\n // ENTER\n dotsUpdate.enter().append('g')\n .classed('dots', true)\n .classed('coherent', (datum, index) => { return index === this.COHERENT; })\n .classed('random', (datum, index) => { return index === this.RANDOM; });\n\n // Overlayer\n // ENTER\n const overlayerEnter = plotEnter.append('g')\n .classed('overlayer', true);\n // MERGE\n const overlayerMerge = plotMerge.select('.overlayer');\n\n // Outline\n // ENTER\n overlayerEnter.append('circle')\n .classed('outline', true);\n // MERGE\n overlayerMerge.select('.outline')\n .attr('cx', this.xScale(0))\n .attr('cy', this.yScale(0))\n .attr('r', this.xScale(1) - this.yScale(0));\n\n // Start or stop trial block\n if (this.firstUpdate || changedProperties.has('running')) {\n if (this.running) {\n // (Re)Start\n if (this.pauseTime) {\n // Shift timeline forward as if paused time never happened\n this.baseTime += (d3.now() - this.pauseTime);\n this.pauseTime = 0;\n }\n this.runner = d3.interval(this.run.bind(this), 20); // FIXME??\n } else if (this.runner !== undefined) {\n // Pause\n this.runner.stop();\n this.pauseTime = d3.now();\n }\n }\n\n this.firstUpdate = false;\n }\n\n reset() {\n if (this.runner !== undefined) {\n this.runner.stop();\n }\n this.running = false;\n this.trial = 0;\n this.state = 'resetted';\n this.baseTime = 0;\n this.pauseTime = 0;\n this.startTime = 0;\n this.lastTime = 0;\n this.signal = undefined;\n this.currentDirection = undefined;\n\n const dotsUpdate = d3.select(this.renderRoot).select('.content').selectAll('.dots')\n .data([[], []]);\n const dotUpdate = dotsUpdate.selectAll('.dot')\n .data((datum) => { return datum; });\n dotUpdate.exit()\n .remove();\n\n const fixationUpdate = d3.select(this.renderRoot).select('.content').selectAll('.fixation')\n .data([]);\n fixationUpdate.exit()\n .remove();\n const queryUpdate = d3.select(this.renderRoot).select('.content').selectAll('.query')\n .data([]);\n queryUpdate.exit()\n .remove();\n }\n\n run(/* elapsed */) {\n const realTime = d3.now();\n const currentTime = (this.baseTime) ? (realTime - this.baseTime) : 0;\n const elapsedTime = (this.baseTime) ? (currentTime - this.startTime) : 0;\n const frameTime = (this.baseTime) ? (currentTime - this.lastTime) : 0;\n this.lastTime = currentTime;\n let newTrial = false;\n if (this.state === 'resetted') {\n // Start block with an ITI\n this.state = 'iti';\n this.baseTime = realTime;\n this.startTime = 0;\n this.dispatchEvent(new CustomEvent('rdk-block-start', {\n detail: {\n trials: this.trials,\n },\n bubbles: true,\n }));\n } else if ((this.state === 'iti') && (elapsedTime >= this.iti)) {\n // Start new trial with a stimulus\n newTrial = true;\n this.trial += 1;\n this.state = 'stimulus';\n this.startTime = currentTime;\n this.signal = (Math.random() < this.probability) ? 'present' : 'absent';\n this.currentDirection = (this.signal === 'absent')\n ? undefined\n : (this.direction >= 0)\n ? this.direction\n : (Math.random() * 360);\n this.dispatchEvent(new CustomEvent('rdk-trial-start', {\n detail: {\n trials: this.trials,\n duration: this.duration,\n wait: this.wait,\n iti: this.iti,\n trial: this.trial,\n signal: this.signal,\n },\n bubbles: true,\n }));\n } else if ((this.state === 'stimulus') && (elapsedTime >= this.duration)) {\n // Stimulus is over, now wait\n this.state = 'wait';\n this.startTime = currentTime;\n this.dispatchEvent(new CustomEvent('rdk-trial-middle', {\n detail: {\n trials: this.trials,\n duration: this.duration,\n wait: this.wait,\n iti: this.iti,\n trial: this.trial,\n signal: this.signal,\n },\n bubbles: true,\n }));\n } else if ((this.state === 'wait') && (elapsedTime >= this.wait)) {\n // Wait is over, end of trial\n this.dispatchEvent(new CustomEvent('rdk-trial-end', {\n detail: {\n trials: this.trials,\n duration: this.duration,\n wait: this.wait,\n iti: this.iti,\n trial: this.trial,\n signal: this.signal,\n },\n bubbles: true,\n }));\n if (this.trial >= this.trials) {\n // End of block\n this.runner.stop();\n this.running = false;\n this.state = 'ended';\n this.baseTime = 0;\n this.pauseTime = 0;\n this.startTime = 0;\n this.lastTime = 0;\n this.signal = undefined;\n this.currentDirection = undefined;\n this.dispatchEvent(new CustomEvent('rdk-block-end', {\n detail: {\n trials: this.trial,\n },\n bubbles: true,\n }));\n } else {\n // ITI\n this.state = 'iti';\n this.startTime = currentTime;\n }\n }\n\n // Dots\n if (this.state === 'stimulus') {\n this.dots[this.COHERENT].length = (this.signal === 'present') ? Math.round(this.count * this.coherence) : 0;\n this.dots[this.RANDOM].length = (this.signal === 'present') ? (this.count - this.dots[this.COHERENT].length) : this.count;\n\n for (let t = 0; t < this.dots.length; t += 1) {\n for (let i = 0; i < this.dots[t].length; i += 1) {\n const newDot = (this.dots[t][i] === undefined);\n if (newDot) {\n this.dots[t][i] = {};\n }\n const dot = this.dots[t][i];\n if (newTrial || newDot) {\n dot.direction = (t === this.RANDOM) ? (Math.random() * 360) : this.currentDirection;\n dot.birth = currentTime - Math.floor(Math.random() * this.lifetime);\n const angle = Math.random() * 2 * Math.PI;\n const radius = Math.sqrt(Math.random());\n dot.x = this.xScale(radius * Math.cos(angle));\n dot.y = this.yScale(radius * Math.sin(angle));\n } else if (currentTime > (dot.birth + this.lifetime)) {\n // Dot has died, so rebirth\n dot.birth += this.lifetime;\n dot.direction = (t === this.RANDOM) ? (Math.random() * 360) : this.currentDirection;\n const angle = Math.random() * 2 * Math.PI;\n const radius = Math.sqrt(Math.random());\n dot.x = this.xScale(radius * Math.cos(angle));\n dot.y = this.yScale(radius * Math.sin(angle));\n } else {\n if (t === this.COHERENT) {\n dot.direction = this.currentDirection;\n }\n const directionR = dot.direction * (Math.PI / 180);\n dot.dx = this.speed * (frameTime / 1000) * Math.cos(directionR);\n dot.dy = this.speed * (frameTime / 1000) * Math.sin(directionR);\n // Update position\n dot.x += dot.dx;\n dot.y += dot.dy;\n // Calculate squared distance from center\n const distance2 = ((dot.x - this.xScale(0)) ** 2) + ((dot.y - this.yScale(0)) ** 2);\n const radius2 = (this.xScale(1) - this.xScale(0)) ** 2;\n if (distance2 > radius2) {\n // Dot has exited so move to other side\n dot.x = -(dot.x - this.xScale(0)) + this.xScale(0);\n dot.y = -(dot.y - this.yScale(0)) + this.yScale(0);\n }\n }\n }\n }\n }\n\n // Fixation\n // DATA-JOIN\n const fixationUpdate = d3.select(this.renderRoot).select('.content').selectAll('.fixation')\n .data((this.state === 'iti') ? [true] : []);\n // ENTER\n const fixationEnter = fixationUpdate.enter().append('g')\n .classed('fixation', true);\n fixationEnter.append('line')\n .attr('x1', this.xScale(-0.1))\n .attr('y1', this.xScale(0))\n .attr('x2', this.xScale(0.1))\n .attr('y2', this.xScale(0));\n fixationEnter.append('line')\n .attr('x1', this.xScale(0))\n .attr('y1', this.xScale(-0.1))\n .attr('x2', this.xScale(0))\n .attr('y2', this.xScale(0.1));\n // EXIT\n fixationUpdate.exit().remove();\n\n // Dots\n // DATA-JOIN\n const dotsUpdate = d3.select(this.renderRoot).select('.content').selectAll('.dots')\n .data((this.state === 'stimulus') ? this.dots : [[], []]);\n const dotUpdate = dotsUpdate.selectAll('.dot')\n .data((datum) => { return datum; });\n // ENTER\n const dotEnter = dotUpdate.enter().append('circle')\n .classed('dot', true)\n .attr('r', 2); /* HACK: Firefox does not support CSS SVG Geometry Properties */\n // MERGE\n dotEnter.merge(dotUpdate)\n .attr('cx', (datum) => { return datum.x; })\n .attr('cy', (datum) => { return datum.y; });\n // EXIT\n dotUpdate.exit().remove();\n\n // Query\n // DATA-JOIN\n const queryUpdate = d3.select(this.renderRoot).select('.content').selectAll('.query')\n .data((this.state === 'wait') ? [true] : []);\n // ENTER\n const queryEnter = queryUpdate.enter().append('g')\n .classed('query', true);\n queryEnter.append('text')\n .attr('x', this.xScale(0))\n .attr('y', this.xScale(0))\n .attr('text-anchor', 'middle')\n .attr('alignment-baseline', 'middle')\n .text('?');\n // EXIT\n queryUpdate.exit().remove();\n }\n}\n\ncustomElements.define('rdk-task', RDKTask);\n","(function (window, factory) {\n if (typeof exports === 'object') {\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n define(factory);\n } else {\n window.jStat = factory();\n }\n})(this, function () {\nvar jStat = (function(Math, undefined) {\n\n// For quick reference.\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\nvar toString = Object.prototype.toString;\n\n// Calculate correction for IEEE error\n// TODO: This calculation can be improved.\nfunction calcRdx(n, m) {\n var val = n > m ? n : m;\n return Math.pow(10,\n 17 - ~~(Math.log(((val > 0) ? val : -val)) * Math.LOG10E));\n}\n\n\nvar isArray = Array.isArray || function isArray(arg) {\n return toString.call(arg) === '[object Array]';\n};\n\n\nfunction isFunction(arg) {\n return toString.call(arg) === '[object Function]';\n}\n\n\nfunction isNumber(num) {\n return (typeof num === 'number') ? num - num === 0 : false;\n}\n\n\n// Converts the jStat matrix to vector.\nfunction toVector(arr) {\n return concat.apply([], arr);\n}\n\n\n// The one and only jStat constructor.\nfunction jStat() {\n return new jStat._init(arguments);\n}\n\n\n// TODO: Remove after all references in src files have been removed.\njStat.fn = jStat.prototype;\n\n\n// By separating the initializer from the constructor it's easier to handle\n// always returning a new instance whether \"new\" was used or not.\njStat._init = function _init(args) {\n // If first argument is an array, must be vector or matrix.\n if (isArray(args[0])) {\n // Check if matrix.\n if (isArray(args[0][0])) {\n // See if a mapping function was also passed.\n if (isFunction(args[1]))\n args[0] = jStat.map(args[0], args[1]);\n // Iterate over each is faster than this.push.apply(this, args[0].\n for (var i = 0; i < args[0].length; i++)\n this[i] = args[0][i];\n this.length = args[0].length;\n\n // Otherwise must be a vector.\n } else {\n this[0] = isFunction(args[1]) ? jStat.map(args[0], args[1]) : args[0];\n this.length = 1;\n }\n\n // If first argument is number, assume creation of sequence.\n } else if (isNumber(args[0])) {\n this[0] = jStat.seq.apply(null, args);\n this.length = 1;\n\n // Handle case when jStat object is passed to jStat.\n } else if (args[0] instanceof jStat) {\n // Duplicate the object and pass it back.\n return jStat(args[0].toArray());\n\n // Unexpected argument value, return empty jStat object.\n // TODO: This is strange behavior. Shouldn't this throw or some such to let\n // the user know they had bad arguments?\n } else {\n this[0] = [];\n this.length = 1;\n }\n\n return this;\n};\njStat._init.prototype = jStat.prototype;\njStat._init.constructor = jStat;\n\n\n// Utility functions.\n// TODO: for internal use only?\njStat.utils = {\n calcRdx: calcRdx,\n isArray: isArray,\n isFunction: isFunction,\n isNumber: isNumber,\n toVector: toVector\n};\n\n\njStat._random_fn = Math.random;\njStat.setRandom = function setRandom(fn) {\n if (typeof fn !== 'function')\n throw new TypeError('fn is not a function');\n jStat._random_fn = fn;\n};\n\n\n// Easily extend the jStat object.\n// TODO: is this seriously necessary?\njStat.extend = function extend(obj) {\n var i, j;\n\n if (arguments.length === 1) {\n for (j in obj)\n jStat[j] = obj[j];\n return this;\n }\n\n for (i = 1; i < arguments.length; i++) {\n for (j in arguments[i])\n obj[j] = arguments[i][j];\n }\n\n return obj;\n};\n\n\n// Returns the number of rows in the matrix.\njStat.rows = function rows(arr) {\n return arr.length || 1;\n};\n\n\n// Returns the number of columns in the matrix.\njStat.cols = function cols(arr) {\n return arr[0].length || 1;\n};\n\n\n// Returns the dimensions of the object { rows: i, cols: j }\njStat.dimensions = function dimensions(arr) {\n return {\n rows: jStat.rows(arr),\n cols: jStat.cols(arr)\n };\n};\n\n\n// Returns a specified row as a vector or return a sub matrix by pick some rows\njStat.row = function row(arr, index) {\n if (isArray(index)) {\n return index.map(function(i) {\n return jStat.row(arr, i);\n })\n }\n return arr[index];\n};\n\n\n// return row as array\n// rowa([[1,2],[3,4]],0) -> [1,2]\njStat.rowa = function rowa(arr, i) {\n return jStat.row(arr, i);\n};\n\n\n// Returns the specified column as a vector or return a sub matrix by pick some\n// columns\njStat.col = function col(arr, index) {\n if (isArray(index)) {\n var submat = jStat.arange(arr.length).map(function() {\n return new Array(index.length);\n });\n index.forEach(function(ind, i){\n jStat.arange(arr.length).forEach(function(j) {\n submat[j][i] = arr[j][ind];\n });\n });\n return submat;\n }\n var column = new Array(arr.length);\n for (var i = 0; i < arr.length; i++)\n column[i] = [arr[i][index]];\n return column;\n};\n\n\n// return column as array\n// cola([[1,2],[3,4]],0) -> [1,3]\njStat.cola = function cola(arr, i) {\n return jStat.col(arr, i).map(function(a){ return a[0] });\n};\n\n\n// Returns the diagonal of the matrix\njStat.diag = function diag(arr) {\n var nrow = jStat.rows(arr);\n var res = new Array(nrow);\n for (var row = 0; row < nrow; row++)\n res[row] = [arr[row][row]];\n return res;\n};\n\n\n// Returns the anti-diagonal of the matrix\njStat.antidiag = function antidiag(arr) {\n var nrow = jStat.rows(arr) - 1;\n var res = new Array(nrow);\n for (var i = 0; nrow >= 0; nrow--, i++)\n res[i] = [arr[i][nrow]];\n return res;\n};\n\n// Transpose a matrix or array.\njStat.transpose = function transpose(arr) {\n var obj = [];\n var objArr, rows, cols, j, i;\n\n // Make sure arr is in matrix format.\n if (!isArray(arr[0]))\n arr = [arr];\n\n rows = arr.length;\n cols = arr[0].length;\n\n for (i = 0; i < cols; i++) {\n objArr = new Array(rows);\n for (j = 0; j < rows; j++)\n objArr[j] = arr[j][i];\n obj.push(objArr);\n }\n\n // If obj is vector, return only single array.\n return obj.length === 1 ? obj[0] : obj;\n};\n\n\n// Map a function to an array or array of arrays.\n// \"toAlter\" is an internal variable.\njStat.map = function map(arr, func, toAlter) {\n var row, nrow, ncol, res, col;\n\n if (!isArray(arr[0]))\n arr = [arr];\n\n nrow = arr.length;\n ncol = arr[0].length;\n res = toAlter ? arr : new Array(nrow);\n\n for (row = 0; row < nrow; row++) {\n // if the row doesn't exist, create it\n if (!res[row])\n res[row] = new Array(ncol);\n for (col = 0; col < ncol; col++)\n res[row][col] = func(arr[row][col], row, col);\n }\n\n return res.length === 1 ? res[0] : res;\n};\n\n\n// Cumulatively combine the elements of an array or array of arrays using a function.\njStat.cumreduce = function cumreduce(arr, func, toAlter) {\n var row, nrow, ncol, res, col;\n\n if (!isArray(arr[0]))\n arr = [arr];\n\n nrow = arr.length;\n ncol = arr[0].length;\n res = toAlter ? arr : new Array(nrow);\n\n for (row = 0; row < nrow; row++) {\n // if the row doesn't exist, create it\n if (!res[row])\n res[row] = new Array(ncol);\n if (ncol > 0)\n res[row][0] = arr[row][0];\n for (col = 1; col < ncol; col++)\n res[row][col] = func(res[row][col-1], arr[row][col]);\n }\n return res.length === 1 ? res[0] : res;\n};\n\n\n// Destructively alter an array.\njStat.alter = function alter(arr, func) {\n return jStat.map(arr, func, true);\n};\n\n\n// Generate a rows x cols matrix according to the supplied function.\njStat.create = function create(rows, cols, func) {\n var res = new Array(rows);\n var i, j;\n\n if (isFunction(cols)) {\n func = cols;\n cols = rows;\n }\n\n for (i = 0; i < rows; i++) {\n res[i] = new Array(cols);\n for (j = 0; j < cols; j++)\n res[i][j] = func(i, j);\n }\n\n return res;\n};\n\n\nfunction retZero() { return 0; }\n\n\n// Generate a rows x cols matrix of zeros.\njStat.zeros = function zeros(rows, cols) {\n if (!isNumber(cols))\n cols = rows;\n return jStat.create(rows, cols, retZero);\n};\n\n\nfunction retOne() { return 1; }\n\n\n// Generate a rows x cols matrix of ones.\njStat.ones = function ones(rows, cols) {\n if (!isNumber(cols))\n cols = rows;\n return jStat.create(rows, cols, retOne);\n};\n\n\n// Generate a rows x cols matrix of uniformly random numbers.\njStat.rand = function rand(rows, cols) {\n if (!isNumber(cols))\n cols = rows;\n return jStat.create(rows, cols, jStat._random_fn);\n};\n\n\nfunction retIdent(i, j) { return i === j ? 1 : 0; }\n\n\n// Generate an identity matrix of size row x cols.\njStat.identity = function identity(rows, cols) {\n if (!isNumber(cols))\n cols = rows;\n return jStat.create(rows, cols, retIdent);\n};\n\n\n// Tests whether a matrix is symmetric\njStat.symmetric = function symmetric(arr) {\n var size = arr.length;\n var row, col;\n\n if (arr.length !== arr[0].length)\n return false;\n\n for (row = 0; row < size; row++) {\n for (col = 0; col < size; col++)\n if (arr[col][row] !== arr[row][col])\n return false;\n }\n\n return true;\n};\n\n\n// Set all values to zero.\njStat.clear = function clear(arr) {\n return jStat.alter(arr, retZero);\n};\n\n\n// Generate sequence.\njStat.seq = function seq(min, max, length, func) {\n if (!isFunction(func))\n func = false;\n\n var arr = [];\n var hival = calcRdx(min, max);\n var step = (max * hival - min * hival) / ((length - 1) * hival);\n var current = min;\n var cnt;\n\n // Current is assigned using a technique to compensate for IEEE error.\n // TODO: Needs better implementation.\n for (cnt = 0;\n current <= max && cnt < length;\n cnt++, current = (min * hival + step * hival * cnt) / hival) {\n arr.push((func ? func(current, cnt) : current));\n }\n\n return arr;\n};\n\n\n// arange(5) -> [0,1,2,3,4]\n// arange(1,5) -> [1,2,3,4]\n// arange(5,1,-1) -> [5,4,3,2]\njStat.arange = function arange(start, end, step) {\n var rl = [];\n var i;\n step = step || 1;\n if (end === undefined) {\n end = start;\n start = 0;\n }\n if (start === end || step === 0) {\n return [];\n }\n if (start < end && step < 0) {\n return [];\n }\n if (start > end && step > 0) {\n return [];\n }\n if (step > 0) {\n for (i = start; i < end; i += step) {\n rl.push(i);\n }\n } else {\n for (i = start; i > end; i += step) {\n rl.push(i);\n }\n }\n return rl;\n};\n\n\n// A=[[1,2,3],[4,5,6],[7,8,9]]\n// slice(A,{row:{end:2},col:{start:1}}) -> [[2,3],[5,6]]\n// slice(A,1,{start:1}) -> [5,6]\n// as numpy code A[:2,1:]\njStat.slice = (function(){\n function _slice(list, start, end, step) {\n // note it's not equal to range.map mode it's a bug\n var i;\n var rl = [];\n var length = list.length;\n if (start === undefined && end === undefined && step === undefined) {\n return jStat.copy(list);\n }\n\n start = start || 0;\n end = end || list.length;\n start = start >= 0 ? start : length + start;\n end = end >= 0 ? end : length + end;\n step = step || 1;\n if (start === end || step === 0) {\n return [];\n }\n if (start < end && step < 0) {\n return [];\n }\n if (start > end && step > 0) {\n return [];\n }\n if (step > 0) {\n for (i = start; i < end; i += step) {\n rl.push(list[i]);\n }\n } else {\n for (i = start; i > end;i += step) {\n rl.push(list[i]);\n }\n }\n return rl;\n }\n\n function slice(list, rcSlice) {\n var colSlice, rowSlice;\n rcSlice = rcSlice || {};\n if (isNumber(rcSlice.row)) {\n if (isNumber(rcSlice.col))\n return list[rcSlice.row][rcSlice.col];\n var row = jStat.rowa(list, rcSlice.row);\n colSlice = rcSlice.col || {};\n return _slice(row, colSlice.start, colSlice.end, colSlice.step);\n }\n\n if (isNumber(rcSlice.col)) {\n var col = jStat.cola(list, rcSlice.col);\n rowSlice = rcSlice.row || {};\n return _slice(col, rowSlice.start, rowSlice.end, rowSlice.step);\n }\n\n rowSlice = rcSlice.row || {};\n colSlice = rcSlice.col || {};\n var rows = _slice(list, rowSlice.start, rowSlice.end, rowSlice.step);\n return rows.map(function(row) {\n return _slice(row, colSlice.start, colSlice.end, colSlice.step);\n });\n }\n\n return slice;\n}());\n\n\n// A=[[1,2,3],[4,5,6],[7,8,9]]\n// sliceAssign(A,{row:{start:1},col:{start:1}},[[0,0],[0,0]])\n// A=[[1,2,3],[4,0,0],[7,0,0]]\njStat.sliceAssign = function sliceAssign(A, rcSlice, B) {\n var nl, ml;\n if (isNumber(rcSlice.row)) {\n if (isNumber(rcSlice.col))\n return A[rcSlice.row][rcSlice.col] = B;\n rcSlice.col = rcSlice.col || {};\n rcSlice.col.start = rcSlice.col.start || 0;\n rcSlice.col.end = rcSlice.col.end || A[0].length;\n rcSlice.col.step = rcSlice.col.step || 1;\n nl = jStat.arange(rcSlice.col.start,\n Math.min(A.length, rcSlice.col.end),\n rcSlice.col.step);\n var m = rcSlice.row;\n nl.forEach(function(n, i) {\n A[m][n] = B[i];\n });\n return A;\n }\n\n if (isNumber(rcSlice.col)) {\n rcSlice.row = rcSlice.row || {};\n rcSlice.row.start = rcSlice.row.start || 0;\n rcSlice.row.end = rcSlice.row.end || A.length;\n rcSlice.row.step = rcSlice.row.step || 1;\n ml = jStat.arange(rcSlice.row.start,\n Math.min(A[0].length, rcSlice.row.end),\n rcSlice.row.step);\n var n = rcSlice.col;\n ml.forEach(function(m, j) {\n A[m][n] = B[j];\n });\n return A;\n }\n\n if (B[0].length === undefined) {\n B = [B];\n }\n rcSlice.row.start = rcSlice.row.start || 0;\n rcSlice.row.end = rcSlice.row.end || A.length;\n rcSlice.row.step = rcSlice.row.step || 1;\n rcSlice.col.start = rcSlice.col.start || 0;\n rcSlice.col.end = rcSlice.col.end || A[0].length;\n rcSlice.col.step = rcSlice.col.step || 1;\n ml = jStat.arange(rcSlice.row.start,\n Math.min(A.length, rcSlice.row.end),\n rcSlice.row.step);\n nl = jStat.arange(rcSlice.col.start,\n Math.min(A[0].length, rcSlice.col.end),\n rcSlice.col.step);\n ml.forEach(function(m, i) {\n nl.forEach(function(n, j) {\n A[m][n] = B[i][j];\n });\n });\n return A;\n};\n\n\n// [1,2,3] ->\n// [[1,0,0],[0,2,0],[0,0,3]]\njStat.diagonal = function diagonal(diagArray) {\n var mat = jStat.zeros(diagArray.length, diagArray.length);\n diagArray.forEach(function(t, i) {\n mat[i][i] = t;\n });\n return mat;\n};\n\n\n// return copy of A\njStat.copy = function copy(A) {\n return A.map(function(row) {\n if (isNumber(row))\n return row;\n return row.map(function(t) {\n return t;\n });\n });\n};\n\n\n// TODO: Go over this entire implementation. Seems a tragic waste of resources\n// doing all this work. Instead, and while ugly, use new Function() to generate\n// a custom function for each static method.\n\n// Quick reference.\nvar jProto = jStat.prototype;\n\n// Default length.\njProto.length = 0;\n\n// For internal use only.\n// TODO: Check if they're actually used, and if they are then rename them\n// to _*\njProto.push = Array.prototype.push;\njProto.sort = Array.prototype.sort;\njProto.splice = Array.prototype.splice;\njProto.slice = Array.prototype.slice;\n\n\n// Return a clean array.\njProto.toArray = function toArray() {\n return this.length > 1 ? slice.call(this) : slice.call(this)[0];\n};\n\n\n// Map a function to a matrix or vector.\njProto.map = function map(func, toAlter) {\n return jStat(jStat.map(this, func, toAlter));\n};\n\n\n// Cumulatively combine the elements of a matrix or vector using a function.\njProto.cumreduce = function cumreduce(func, toAlter) {\n return jStat(jStat.cumreduce(this, func, toAlter));\n};\n\n\n// Destructively alter an array.\njProto.alter = function alter(func) {\n jStat.alter(this, func);\n return this;\n};\n\n\n// Extend prototype with methods that have no argument.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jProto[passfunc] = function(func) {\n var self = this,\n results;\n // Check for callback.\n if (func) {\n setTimeout(function() {\n func.call(self, jProto[passfunc].call(self));\n });\n return this;\n }\n results = jStat[passfunc](this);\n return isArray(results) ? jStat(results) : results;\n };\n })(funcs[i]);\n})('transpose clear symmetric rows cols dimensions diag antidiag'.split(' '));\n\n\n// Extend prototype with methods that have one argument.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jProto[passfunc] = function(index, func) {\n var self = this;\n // check for callback\n if (func) {\n setTimeout(function() {\n func.call(self, jProto[passfunc].call(self, index));\n });\n return this;\n }\n return jStat(jStat[passfunc](this, index));\n };\n })(funcs[i]);\n})('row col'.split(' '));\n\n\n// Extend prototype with simple shortcut methods.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jProto[passfunc] = function() {\n return jStat(jStat[passfunc].apply(null, arguments));\n };\n })(funcs[i]);\n})('create zeros ones rand identity'.split(' '));\n\n\n// Exposing jStat.\nreturn jStat;\n\n}(Math));\n(function(jStat, Math) {\n\nvar isFunction = jStat.utils.isFunction;\n\n// Ascending functions for sort\nfunction ascNum(a, b) { return a - b; }\n\nfunction clip(arg, min, max) {\n return Math.max(min, Math.min(arg, max));\n}\n\n\n// sum of an array\njStat.sum = function sum(arr) {\n var sum = 0;\n var i = arr.length;\n while (--i >= 0)\n sum += arr[i];\n return sum;\n};\n\n\n// sum squared\njStat.sumsqrd = function sumsqrd(arr) {\n var sum = 0;\n var i = arr.length;\n while (--i >= 0)\n sum += arr[i] * arr[i];\n return sum;\n};\n\n\n// sum of squared errors of prediction (SSE)\njStat.sumsqerr = function sumsqerr(arr) {\n var mean = jStat.mean(arr);\n var sum = 0;\n var i = arr.length;\n var tmp;\n while (--i >= 0) {\n tmp = arr[i] - mean;\n sum += tmp * tmp;\n }\n return sum;\n};\n\n// sum of an array in each row\njStat.sumrow = function sumrow(arr) {\n var sum = 0;\n var i = arr.length;\n while (--i >= 0)\n sum += arr[i];\n return sum;\n};\n\n// product of an array\njStat.product = function product(arr) {\n var prod = 1;\n var i = arr.length;\n while (--i >= 0)\n prod *= arr[i];\n return prod;\n};\n\n\n// minimum value of an array\njStat.min = function min(arr) {\n var low = arr[0];\n var i = 0;\n while (++i < arr.length)\n if (arr[i] < low)\n low = arr[i];\n return low;\n};\n\n\n// maximum value of an array\njStat.max = function max(arr) {\n var high = arr[0];\n var i = 0;\n while (++i < arr.length)\n if (arr[i] > high)\n high = arr[i];\n return high;\n};\n\n\n// unique values of an array\njStat.unique = function unique(arr) {\n var hash = {}, _arr = [];\n for(var i = 0; i < arr.length; i++) {\n if (!hash[arr[i]]) {\n hash[arr[i]] = true;\n _arr.push(arr[i]);\n }\n }\n return _arr;\n};\n\n\n// mean value of an array\njStat.mean = function mean(arr) {\n return jStat.sum(arr) / arr.length;\n};\n\n\n// mean squared error (MSE)\njStat.meansqerr = function meansqerr(arr) {\n return jStat.sumsqerr(arr) / arr.length;\n};\n\n\n// geometric mean of an array\njStat.geomean = function geomean(arr) {\n return Math.pow(jStat.product(arr), 1 / arr.length);\n};\n\n\n// median of an array\njStat.median = function median(arr) {\n var arrlen = arr.length;\n var _arr = arr.slice().sort(ascNum);\n // check if array is even or odd, then return the appropriate\n return !(arrlen & 1)\n ? (_arr[(arrlen / 2) - 1 ] + _arr[(arrlen / 2)]) / 2\n : _arr[(arrlen / 2) | 0 ];\n};\n\n\n// cumulative sum of an array\njStat.cumsum = function cumsum(arr) {\n return jStat.cumreduce(arr, function (a, b) { return a + b; });\n};\n\n\n// cumulative product of an array\njStat.cumprod = function cumprod(arr) {\n return jStat.cumreduce(arr, function (a, b) { return a * b; });\n};\n\n\n// successive differences of a sequence\njStat.diff = function diff(arr) {\n var diffs = [];\n var arrLen = arr.length;\n var i;\n for (i = 1; i < arrLen; i++)\n diffs.push(arr[i] - arr[i - 1]);\n return diffs;\n};\n\n\n// ranks of an array\njStat.rank = function (arr) {\n var i;\n var distinctNumbers = [];\n var numberCounts = {};\n for (i = 0; i < arr.length; i++) {\n var number = arr[i];\n if (numberCounts[number]) {\n numberCounts[number]++;\n } else {\n numberCounts[number] = 1;\n distinctNumbers.push(number);\n }\n }\n\n var sortedDistinctNumbers = distinctNumbers.sort(ascNum);\n var numberRanks = {};\n var currentRank = 1;\n for (i = 0; i < sortedDistinctNumbers.length; i++) {\n var number = sortedDistinctNumbers[i];\n var count = numberCounts[number];\n var first = currentRank;\n var last = currentRank + count - 1;\n var rank = (first + last) / 2;\n numberRanks[number] = rank;\n currentRank += count;\n }\n\n return arr.map(function (number) {\n return numberRanks[number];\n });\n};\n\n\n// mode of an array\n// if there are multiple modes of an array, return all of them\n// is this the appropriate way of handling it?\njStat.mode = function mode(arr) {\n var arrLen = arr.length;\n var _arr = arr.slice().sort(ascNum);\n var count = 1;\n var maxCount = 0;\n var numMaxCount = 0;\n var mode_arr = [];\n var i;\n\n for (i = 0; i < arrLen; i++) {\n if (_arr[i] === _arr[i + 1]) {\n count++;\n } else {\n if (count > maxCount) {\n mode_arr = [_arr[i]];\n maxCount = count;\n numMaxCount = 0;\n }\n // are there multiple max counts\n else if (count === maxCount) {\n mode_arr.push(_arr[i]);\n numMaxCount++;\n }\n // resetting count for new value in array\n count = 1;\n }\n }\n\n return numMaxCount === 0 ? mode_arr[0] : mode_arr;\n};\n\n\n// range of an array\njStat.range = function range(arr) {\n return jStat.max(arr) - jStat.min(arr);\n};\n\n// variance of an array\n// flag = true indicates sample instead of population\njStat.variance = function variance(arr, flag) {\n return jStat.sumsqerr(arr) / (arr.length - (flag ? 1 : 0));\n};\n\n// pooled variance of an array of arrays\njStat.pooledvariance = function pooledvariance(arr) {\n var sumsqerr = arr.reduce(function (a, samples) {return a + jStat.sumsqerr(samples);}, 0);\n var count = arr.reduce(function (a, samples) {return a + samples.length;}, 0);\n return sumsqerr / (count - arr.length);\n};\n\n// deviation of an array\njStat.deviation = function (arr) {\n var mean = jStat.mean(arr);\n var arrlen = arr.length;\n var dev = new Array(arrlen);\n for (var i = 0; i < arrlen; i++) {\n dev[i] = arr[i] - mean;\n }\n return dev;\n};\n\n// standard deviation of an array\n// flag = true indicates sample instead of population\njStat.stdev = function stdev(arr, flag) {\n return Math.sqrt(jStat.variance(arr, flag));\n};\n\n// pooled standard deviation of an array of arrays\njStat.pooledstdev = function pooledstdev(arr) {\n return Math.sqrt(jStat.pooledvariance(arr));\n};\n\n// mean deviation (mean absolute deviation) of an array\njStat.meandev = function meandev(arr) {\n var mean = jStat.mean(arr);\n var a = [];\n for (var i = arr.length - 1; i >= 0; i--) {\n a.push(Math.abs(arr[i] - mean));\n }\n return jStat.mean(a);\n};\n\n\n// median deviation (median absolute deviation) of an array\njStat.meddev = function meddev(arr) {\n var median = jStat.median(arr);\n var a = [];\n for (var i = arr.length - 1; i >= 0; i--) {\n a.push(Math.abs(arr[i] - median));\n }\n return jStat.median(a);\n};\n\n\n// coefficient of variation\njStat.coeffvar = function coeffvar(arr) {\n return jStat.stdev(arr) / jStat.mean(arr);\n};\n\n\n// quartiles of an array\njStat.quartiles = function quartiles(arr) {\n var arrlen = arr.length;\n var _arr = arr.slice().sort(ascNum);\n return [\n _arr[ Math.round((arrlen) / 4) - 1 ],\n _arr[ Math.round((arrlen) / 2) - 1 ],\n _arr[ Math.round((arrlen) * 3 / 4) - 1 ]\n ];\n};\n\n\n// Arbitary quantiles of an array. Direct port of the scipy.stats\n// implementation by Pierre GF Gerard-Marchant.\njStat.quantiles = function quantiles(arr, quantilesArray, alphap, betap) {\n var sortedArray = arr.slice().sort(ascNum);\n var quantileVals = [quantilesArray.length];\n var n = arr.length;\n var i, p, m, aleph, k, gamma;\n\n if (typeof alphap === 'undefined')\n alphap = 3 / 8;\n if (typeof betap === 'undefined')\n betap = 3 / 8;\n\n for (i = 0; i < quantilesArray.length; i++) {\n p = quantilesArray[i];\n m = alphap + p * (1 - alphap - betap);\n aleph = n * p + m;\n k = Math.floor(clip(aleph, 1, n - 1));\n gamma = clip(aleph - k, 0, 1);\n quantileVals[i] = (1 - gamma) * sortedArray[k - 1] + gamma * sortedArray[k];\n }\n\n return quantileVals;\n};\n\n// Return the k-th percentile of values in a range, where k is in the range 0..1, inclusive.\n// Passing true for the exclusive parameter excludes both endpoints of the range.\njStat.percentile = function percentile(arr, k, exclusive) {\n var _arr = arr.slice().sort(ascNum);\n var realIndex = k * (_arr.length + (exclusive ? 1 : -1)) + (exclusive ? 0 : 1);\n var index = parseInt(realIndex);\n var frac = realIndex - index;\n if (index + 1 < _arr.length) {\n return _arr[index - 1] + frac * (_arr[index] - _arr[index - 1]);\n } else {\n return _arr[index - 1];\n }\n}\n\n// The percentile rank of score in a given array. Returns the percentage\n// of all values in the input array that are less than (kind='strict') or\n// less or equal than (kind='weak') score. Default is weak.\njStat.percentileOfScore = function percentileOfScore(arr, score, kind) {\n var counter = 0;\n var len = arr.length;\n var strict = false;\n var value, i;\n\n if (kind === 'strict')\n strict = true;\n\n for (i = 0; i < len; i++) {\n value = arr[i];\n if ((strict && value < score) ||\n (!strict && value <= score)) {\n counter++;\n }\n }\n\n return counter / len;\n};\n\n\n// Histogram (bin count) data\njStat.histogram = function histogram(arr, binCnt) {\n binCnt = binCnt || 4;\n var first = jStat.min(arr);\n var binWidth = (jStat.max(arr) - first) / binCnt;\n var len = arr.length;\n var bins = [];\n var i;\n\n for (i = 0; i < binCnt; i++)\n bins[i] = 0;\n for (i = 0; i < len; i++)\n bins[Math.min(Math.floor(((arr[i] - first) / binWidth)), binCnt - 1)] += 1;\n\n return bins;\n};\n\n\n// covariance of two arrays\njStat.covariance = function covariance(arr1, arr2) {\n var u = jStat.mean(arr1);\n var v = jStat.mean(arr2);\n var arr1Len = arr1.length;\n var sq_dev = new Array(arr1Len);\n var i;\n\n for (i = 0; i < arr1Len; i++)\n sq_dev[i] = (arr1[i] - u) * (arr2[i] - v);\n\n return jStat.sum(sq_dev) / (arr1Len - 1);\n};\n\n\n// (pearson's) population correlation coefficient, rho\njStat.corrcoeff = function corrcoeff(arr1, arr2) {\n return jStat.covariance(arr1, arr2) /\n jStat.stdev(arr1, 1) /\n jStat.stdev(arr2, 1);\n};\n\n // (spearman's) rank correlation coefficient, sp\njStat.spearmancoeff = function (arr1, arr2) {\n arr1 = jStat.rank(arr1);\n arr2 = jStat.rank(arr2);\n //return pearson's correlation of the ranks:\n return jStat.corrcoeff(arr1, arr2);\n}\n\n\n// statistical standardized moments (general form of skew/kurt)\njStat.stanMoment = function stanMoment(arr, n) {\n var mu = jStat.mean(arr);\n var sigma = jStat.stdev(arr);\n var len = arr.length;\n var skewSum = 0;\n\n for (var i = 0; i < len; i++)\n skewSum += Math.pow((arr[i] - mu) / sigma, n);\n\n return skewSum / arr.length;\n};\n\n// (pearson's) moment coefficient of skewness\njStat.skewness = function skewness(arr) {\n return jStat.stanMoment(arr, 3);\n};\n\n// (pearson's) (excess) kurtosis\njStat.kurtosis = function kurtosis(arr) {\n return jStat.stanMoment(arr, 4) - 3;\n};\n\n\nvar jProto = jStat.prototype;\n\n\n// Extend jProto with method for calculating cumulative sums and products.\n// This differs from the similar extension below as cumsum and cumprod should\n// not be run again in the case fullbool === true.\n// If a matrix is passed, automatically assume operation should be done on the\n// columns.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n // If a matrix is passed, automatically assume operation should be done on\n // the columns.\n jProto[passfunc] = function(fullbool, func) {\n var arr = [];\n var i = 0;\n var tmpthis = this;\n // Assignment reassignation depending on how parameters were passed in.\n if (isFunction(fullbool)) {\n func = fullbool;\n fullbool = false;\n }\n // Check if a callback was passed with the function.\n if (func) {\n setTimeout(function() {\n func.call(tmpthis, jProto[passfunc].call(tmpthis, fullbool));\n });\n return this;\n }\n // Check if matrix and run calculations.\n if (this.length > 1) {\n tmpthis = fullbool === true ? this : this.transpose();\n for (; i < tmpthis.length; i++)\n arr[i] = jStat[passfunc](tmpthis[i]);\n return arr;\n }\n // Pass fullbool if only vector, not a matrix. for variance and stdev.\n return jStat[passfunc](this[0], fullbool);\n };\n })(funcs[i]);\n})(('cumsum cumprod').split(' '));\n\n\n// Extend jProto with methods which don't require arguments and work on columns.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n // If a matrix is passed, automatically assume operation should be done on\n // the columns.\n jProto[passfunc] = function(fullbool, func) {\n var arr = [];\n var i = 0;\n var tmpthis = this;\n // Assignment reassignation depending on how parameters were passed in.\n if (isFunction(fullbool)) {\n func = fullbool;\n fullbool = false;\n }\n // Check if a callback was passed with the function.\n if (func) {\n setTimeout(function() {\n func.call(tmpthis, jProto[passfunc].call(tmpthis, fullbool));\n });\n return this;\n }\n // Check if matrix and run calculations.\n if (this.length > 1) {\n if (passfunc !== 'sumrow')\n tmpthis = fullbool === true ? this : this.transpose();\n for (; i < tmpthis.length; i++)\n arr[i] = jStat[passfunc](tmpthis[i]);\n return fullbool === true\n ? jStat[passfunc](jStat.utils.toVector(arr))\n : arr;\n }\n // Pass fullbool if only vector, not a matrix. for variance and stdev.\n return jStat[passfunc](this[0], fullbool);\n };\n })(funcs[i]);\n})(('sum sumsqrd sumsqerr sumrow product min max unique mean meansqerr ' +\n 'geomean median diff rank mode range variance deviation stdev meandev ' +\n 'meddev coeffvar quartiles histogram skewness kurtosis').split(' '));\n\n\n// Extend jProto with functions that take arguments. Operations on matrices are\n// done on columns.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jProto[passfunc] = function() {\n var arr = [];\n var i = 0;\n var tmpthis = this;\n var args = Array.prototype.slice.call(arguments);\n var callbackFunction;\n\n // If the last argument is a function, we assume it's a callback; we\n // strip the callback out and call the function again.\n if (isFunction(args[args.length - 1])) {\n callbackFunction = args[args.length - 1];\n var argsToPass = args.slice(0, args.length - 1);\n\n setTimeout(function() {\n callbackFunction.call(tmpthis,\n jProto[passfunc].apply(tmpthis, argsToPass));\n });\n return this;\n\n // Otherwise we curry the function args and call normally.\n } else {\n callbackFunction = undefined;\n var curriedFunction = function curriedFunction(vector) {\n return jStat[passfunc].apply(tmpthis, [vector].concat(args));\n }\n }\n\n // If this is a matrix, run column-by-column.\n if (this.length > 1) {\n tmpthis = tmpthis.transpose();\n for (; i < tmpthis.length; i++)\n arr[i] = curriedFunction(tmpthis[i]);\n return arr;\n }\n\n // Otherwise run on the vector.\n return curriedFunction(this[0]);\n };\n })(funcs[i]);\n})('quantiles percentileOfScore'.split(' '));\n\n}(jStat, Math));\n// Special functions //\n(function(jStat, Math) {\n\n// Log-gamma function\njStat.gammaln = function gammaln(x) {\n var j = 0;\n var cof = [\n 76.18009172947146, -86.50532032941677, 24.01409824083091,\n -1.231739572450155, 0.1208650973866179e-2, -0.5395239384953e-5\n ];\n var ser = 1.000000000190015;\n var xx, y, tmp;\n tmp = (y = xx = x) + 5.5;\n tmp -= (xx + 0.5) * Math.log(tmp);\n for (; j < 6; j++)\n ser += cof[j] / ++y;\n return Math.log(2.5066282746310005 * ser / xx) - tmp;\n};\n\n/*\n * log-gamma function to support poisson distribution sampling. The\n * algorithm comes from SPECFUN by Shanjie Zhang and Jianming Jin and their\n * book \"Computation of Special Functions\", 1996, John Wiley & Sons, Inc.\n */\njStat.loggam = function loggam(x) {\n var x0, x2, xp, gl, gl0;\n var k, n;\n\n var a = [8.333333333333333e-02, -2.777777777777778e-03,\n 7.936507936507937e-04, -5.952380952380952e-04,\n 8.417508417508418e-04, -1.917526917526918e-03,\n 6.410256410256410e-03, -2.955065359477124e-02,\n 1.796443723688307e-01, -1.39243221690590e+00];\n x0 = x;\n n = 0;\n if ((x == 1.0) || (x == 2.0)) {\n return 0.0;\n }\n if (x <= 7.0) {\n n = Math.floor(7 - x);\n x0 = x + n;\n }\n x2 = 1.0 / (x0 * x0);\n xp = 2 * Math.PI;\n gl0 = a[9];\n for (k = 8; k >= 0; k--) {\n gl0 *= x2;\n gl0 += a[k];\n }\n gl = gl0 / x0 + 0.5 * Math.log(xp) + (x0 - 0.5) * Math.log(x0) - x0;\n if (x <= 7.0) {\n for (k = 1; k <= n; k++) {\n gl -= Math.log(x0 - 1.0);\n x0 -= 1.0;\n }\n }\n return gl;\n}\n\n// gamma of x\njStat.gammafn = function gammafn(x) {\n var p = [-1.716185138865495, 24.76565080557592, -379.80425647094563,\n 629.3311553128184, 866.9662027904133, -31451.272968848367,\n -36144.413418691176, 66456.14382024054\n ];\n var q = [-30.8402300119739, 315.35062697960416, -1015.1563674902192,\n -3107.771671572311, 22538.118420980151, 4755.8462775278811,\n -134659.9598649693, -115132.2596755535];\n var fact = false;\n var n = 0;\n var xden = 0;\n var xnum = 0;\n var y = x;\n var i, z, yi, res;\n if (x > 171.6243769536076) {\n return Infinity;\n }\n if (y <= 0) {\n res = y % 1 + 3.6e-16;\n if (res) {\n fact = (!(y & 1) ? 1 : -1) * Math.PI / Math.sin(Math.PI * res);\n y = 1 - y;\n } else {\n return Infinity;\n }\n }\n yi = y;\n if (y < 1) {\n z = y++;\n } else {\n z = (y -= n = (y | 0) - 1) - 1;\n }\n for (i = 0; i < 8; ++i) {\n xnum = (xnum + p[i]) * z;\n xden = xden * z + q[i];\n }\n res = xnum / xden + 1;\n if (yi < y) {\n res /= yi;\n } else if (yi > y) {\n for (i = 0; i < n; ++i) {\n res *= y;\n y++;\n }\n }\n if (fact) {\n res = fact / res;\n }\n return res;\n};\n\n\n// lower incomplete gamma function, which is usually typeset with a\n// lower-case greek gamma as the function symbol\njStat.gammap = function gammap(a, x) {\n return jStat.lowRegGamma(a, x) * jStat.gammafn(a);\n};\n\n\n// The lower regularized incomplete gamma function, usually written P(a,x)\njStat.lowRegGamma = function lowRegGamma(a, x) {\n var aln = jStat.gammaln(a);\n var ap = a;\n var sum = 1 / a;\n var del = sum;\n var b = x + 1 - a;\n var c = 1 / 1.0e-30;\n var d = 1 / b;\n var h = d;\n var i = 1;\n // calculate maximum number of itterations required for a\n var ITMAX = -~(Math.log((a >= 1) ? a : 1 / a) * 8.5 + a * 0.4 + 17);\n var an;\n\n if (x < 0 || a <= 0) {\n return NaN;\n } else if (x < a + 1) {\n for (; i <= ITMAX; i++) {\n sum += del *= x / ++ap;\n }\n return (sum * Math.exp(-x + a * Math.log(x) - (aln)));\n }\n\n for (; i <= ITMAX; i++) {\n an = -i * (i - a);\n b += 2;\n d = an * d + b;\n c = b + an / c;\n d = 1 / d;\n h *= d * c;\n }\n\n return (1 - h * Math.exp(-x + a * Math.log(x) - (aln)));\n};\n\n// natural log factorial of n\njStat.factorialln = function factorialln(n) {\n return n < 0 ? NaN : jStat.gammaln(n + 1);\n};\n\n// factorial of n\njStat.factorial = function factorial(n) {\n return n < 0 ? NaN : jStat.gammafn(n + 1);\n};\n\n// combinations of n, m\njStat.combination = function combination(n, m) {\n // make sure n or m don't exceed the upper limit of usable values\n return (n > 170 || m > 170)\n ? Math.exp(jStat.combinationln(n, m))\n : (jStat.factorial(n) / jStat.factorial(m)) / jStat.factorial(n - m);\n};\n\n\njStat.combinationln = function combinationln(n, m){\n return jStat.factorialln(n) - jStat.factorialln(m) - jStat.factorialln(n - m);\n};\n\n\n// permutations of n, m\njStat.permutation = function permutation(n, m) {\n return jStat.factorial(n) / jStat.factorial(n - m);\n};\n\n\n// beta function\njStat.betafn = function betafn(x, y) {\n // ensure arguments are positive\n if (x <= 0 || y <= 0)\n return undefined;\n // make sure x + y doesn't exceed the upper limit of usable values\n return (x + y > 170)\n ? Math.exp(jStat.betaln(x, y))\n : jStat.gammafn(x) * jStat.gammafn(y) / jStat.gammafn(x + y);\n};\n\n\n// natural logarithm of beta function\njStat.betaln = function betaln(x, y) {\n return jStat.gammaln(x) + jStat.gammaln(y) - jStat.gammaln(x + y);\n};\n\n\n// Evaluates the continued fraction for incomplete beta function by modified\n// Lentz's method.\njStat.betacf = function betacf(x, a, b) {\n var fpmin = 1e-30;\n var m = 1;\n var qab = a + b;\n var qap = a + 1;\n var qam = a - 1;\n var c = 1;\n var d = 1 - qab * x / qap;\n var m2, aa, del, h;\n\n // These q's will be used in factors that occur in the coefficients\n if (Math.abs(d) < fpmin)\n d = fpmin;\n d = 1 / d;\n h = d;\n\n for (; m <= 100; m++) {\n m2 = 2 * m;\n aa = m * (b - m) * x / ((qam + m2) * (a + m2));\n // One step (the even one) of the recurrence\n d = 1 + aa * d;\n if (Math.abs(d) < fpmin)\n d = fpmin;\n c = 1 + aa / c;\n if (Math.abs(c) < fpmin)\n c = fpmin;\n d = 1 / d;\n h *= d * c;\n aa = -(a + m) * (qab + m) * x / ((a + m2) * (qap + m2));\n // Next step of the recurrence (the odd one)\n d = 1 + aa * d;\n if (Math.abs(d) < fpmin)\n d = fpmin;\n c = 1 + aa / c;\n if (Math.abs(c) < fpmin)\n c = fpmin;\n d = 1 / d;\n del = d * c;\n h *= del;\n if (Math.abs(del - 1.0) < 3e-7)\n break;\n }\n\n return h;\n};\n\n\n// Returns the inverse of the lower regularized inomplete gamma function\njStat.gammapinv = function gammapinv(p, a) {\n var j = 0;\n var a1 = a - 1;\n var EPS = 1e-8;\n var gln = jStat.gammaln(a);\n var x, err, t, u, pp, lna1, afac;\n\n if (p >= 1)\n return Math.max(100, a + 100 * Math.sqrt(a));\n if (p <= 0)\n return 0;\n if (a > 1) {\n lna1 = Math.log(a1);\n afac = Math.exp(a1 * (lna1 - 1) - gln);\n pp = (p < 0.5) ? p : 1 - p;\n t = Math.sqrt(-2 * Math.log(pp));\n x = (2.30753 + t * 0.27061) / (1 + t * (0.99229 + t * 0.04481)) - t;\n if (p < 0.5)\n x = -x;\n x = Math.max(1e-3,\n a * Math.pow(1 - 1 / (9 * a) - x / (3 * Math.sqrt(a)), 3));\n } else {\n t = 1 - a * (0.253 + a * 0.12);\n if (p < t)\n x = Math.pow(p / t, 1 / a);\n else\n x = 1 - Math.log(1 - (p - t) / (1 - t));\n }\n\n for(; j < 12; j++) {\n if (x <= 0)\n return 0;\n err = jStat.lowRegGamma(a, x) - p;\n if (a > 1)\n t = afac * Math.exp(-(x - a1) + a1 * (Math.log(x) - lna1));\n else\n t = Math.exp(-x + a1 * Math.log(x) - gln);\n u = err / t;\n x -= (t = u / (1 - 0.5 * Math.min(1, u * ((a - 1) / x - 1))));\n if (x <= 0)\n x = 0.5 * (x + t);\n if (Math.abs(t) < EPS * x)\n break;\n }\n\n return x;\n};\n\n\n// Returns the error function erf(x)\njStat.erf = function erf(x) {\n var cof = [-1.3026537197817094, 6.4196979235649026e-1, 1.9476473204185836e-2,\n -9.561514786808631e-3, -9.46595344482036e-4, 3.66839497852761e-4,\n 4.2523324806907e-5, -2.0278578112534e-5, -1.624290004647e-6,\n 1.303655835580e-6, 1.5626441722e-8, -8.5238095915e-8,\n 6.529054439e-9, 5.059343495e-9, -9.91364156e-10,\n -2.27365122e-10, 9.6467911e-11, 2.394038e-12,\n -6.886027e-12, 8.94487e-13, 3.13092e-13,\n -1.12708e-13, 3.81e-16, 7.106e-15,\n -1.523e-15, -9.4e-17, 1.21e-16,\n -2.8e-17];\n var j = cof.length - 1;\n var isneg = false;\n var d = 0;\n var dd = 0;\n var t, ty, tmp, res;\n\n if (x < 0) {\n x = -x;\n isneg = true;\n }\n\n t = 2 / (2 + x);\n ty = 4 * t - 2;\n\n for(; j > 0; j--) {\n tmp = d;\n d = ty * d - dd + cof[j];\n dd = tmp;\n }\n\n res = t * Math.exp(-x * x + 0.5 * (cof[0] + ty * d) - dd);\n return isneg ? res - 1 : 1 - res;\n};\n\n\n// Returns the complmentary error function erfc(x)\njStat.erfc = function erfc(x) {\n return 1 - jStat.erf(x);\n};\n\n\n// Returns the inverse of the complementary error function\njStat.erfcinv = function erfcinv(p) {\n var j = 0;\n var x, err, t, pp;\n if (p >= 2)\n return -100;\n if (p <= 0)\n return 100;\n pp = (p < 1) ? p : 2 - p;\n t = Math.sqrt(-2 * Math.log(pp / 2));\n x = -0.70711 * ((2.30753 + t * 0.27061) /\n (1 + t * (0.99229 + t * 0.04481)) - t);\n for (; j < 2; j++) {\n err = jStat.erfc(x) - pp;\n x += err / (1.12837916709551257 * Math.exp(-x * x) - x * err);\n }\n return (p < 1) ? x : -x;\n};\n\n\n// Returns the inverse of the incomplete beta function\njStat.ibetainv = function ibetainv(p, a, b) {\n var EPS = 1e-8;\n var a1 = a - 1;\n var b1 = b - 1;\n var j = 0;\n var lna, lnb, pp, t, u, err, x, al, h, w, afac;\n if (p <= 0)\n return 0;\n if (p >= 1)\n return 1;\n if (a >= 1 && b >= 1) {\n pp = (p < 0.5) ? p : 1 - p;\n t = Math.sqrt(-2 * Math.log(pp));\n x = (2.30753 + t * 0.27061) / (1 + t* (0.99229 + t * 0.04481)) - t;\n if (p < 0.5)\n x = -x;\n al = (x * x - 3) / 6;\n h = 2 / (1 / (2 * a - 1) + 1 / (2 * b - 1));\n w = (x * Math.sqrt(al + h) / h) - (1 / (2 * b - 1) - 1 / (2 * a - 1)) *\n (al + 5 / 6 - 2 / (3 * h));\n x = a / (a + b * Math.exp(2 * w));\n } else {\n lna = Math.log(a / (a + b));\n lnb = Math.log(b / (a + b));\n t = Math.exp(a * lna) / a;\n u = Math.exp(b * lnb) / b;\n w = t + u;\n if (p < t / w)\n x = Math.pow(a * w * p, 1 / a);\n else\n x = 1 - Math.pow(b * w * (1 - p), 1 / b);\n }\n afac = -jStat.gammaln(a) - jStat.gammaln(b) + jStat.gammaln(a + b);\n for(; j < 10; j++) {\n if (x === 0 || x === 1)\n return x;\n err = jStat.ibeta(x, a, b) - p;\n t = Math.exp(a1 * Math.log(x) + b1 * Math.log(1 - x) + afac);\n u = err / t;\n x -= (t = u / (1 - 0.5 * Math.min(1, u * (a1 / x - b1 / (1 - x)))));\n if (x <= 0)\n x = 0.5 * (x + t);\n if (x >= 1)\n x = 0.5 * (x + t + 1);\n if (Math.abs(t) < EPS * x && j > 0)\n break;\n }\n return x;\n};\n\n\n// Returns the incomplete beta function I_x(a,b)\njStat.ibeta = function ibeta(x, a, b) {\n // Factors in front of the continued fraction.\n var bt = (x === 0 || x === 1) ? 0 :\n Math.exp(jStat.gammaln(a + b) - jStat.gammaln(a) -\n jStat.gammaln(b) + a * Math.log(x) + b *\n Math.log(1 - x));\n if (x < 0 || x > 1)\n return false;\n if (x < (a + 1) / (a + b + 2))\n // Use continued fraction directly.\n return bt * jStat.betacf(x, a, b) / a;\n // else use continued fraction after making the symmetry transformation.\n return 1 - bt * jStat.betacf(1 - x, b, a) / b;\n};\n\n\n// Returns a normal deviate (mu=0, sigma=1).\n// If n and m are specified it returns a object of normal deviates.\njStat.randn = function randn(n, m) {\n var u, v, x, y, q;\n if (!m)\n m = n;\n if (n)\n return jStat.create(n, m, function() { return jStat.randn(); });\n do {\n u = jStat._random_fn();\n v = 1.7156 * (jStat._random_fn() - 0.5);\n x = u - 0.449871;\n y = Math.abs(v) + 0.386595;\n q = x * x + y * (0.19600 * y - 0.25472 * x);\n } while (q > 0.27597 && (q > 0.27846 || v * v > -4 * Math.log(u) * u * u));\n return v / u;\n};\n\n\n// Returns a gamma deviate by the method of Marsaglia and Tsang.\njStat.randg = function randg(shape, n, m) {\n var oalph = shape;\n var a1, a2, u, v, x, mat;\n if (!m)\n m = n;\n if (!shape)\n shape = 1;\n if (n) {\n mat = jStat.zeros(n,m);\n mat.alter(function() { return jStat.randg(shape); });\n return mat;\n }\n if (shape < 1)\n shape += 1;\n a1 = shape - 1 / 3;\n a2 = 1 / Math.sqrt(9 * a1);\n do {\n do {\n x = jStat.randn();\n v = 1 + a2 * x;\n } while(v <= 0);\n v = v * v * v;\n u = jStat._random_fn();\n } while(u > 1 - 0.331 * Math.pow(x, 4) &&\n Math.log(u) > 0.5 * x*x + a1 * (1 - v + Math.log(v)));\n // alpha > 1\n if (shape == oalph)\n return a1 * v;\n // alpha < 1\n do {\n u = jStat._random_fn();\n } while(u === 0);\n return Math.pow(u, 1 / oalph) * a1 * v;\n};\n\n\n// making use of static methods on the instance\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jStat.fn[passfunc] = function() {\n return jStat(\n jStat.map(this, function(value) { return jStat[passfunc](value); }));\n }\n })(funcs[i]);\n})('gammaln gammafn factorial factorialln'.split(' '));\n\n\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jStat.fn[passfunc] = function() {\n return jStat(jStat[passfunc].apply(null, arguments));\n };\n })(funcs[i]);\n})('randn'.split(' '));\n\n}(jStat, Math));\n(function(jStat, Math) {\n\n// generate all distribution instance methods\n(function(list) {\n for (var i = 0; i < list.length; i++) (function(func) {\n // distribution instance method\n jStat[func] = function f(a, b, c) {\n if (!(this instanceof f))\n return new f(a, b, c);\n this._a = a;\n this._b = b;\n this._c = c;\n return this;\n };\n // distribution method to be used on a jStat instance\n jStat.fn[func] = function(a, b, c) {\n var newthis = jStat[func](a, b, c);\n newthis.data = this;\n return newthis;\n };\n // sample instance method\n jStat[func].prototype.sample = function(arr) {\n var a = this._a;\n var b = this._b;\n var c = this._c;\n if (arr)\n return jStat.alter(arr, function() {\n return jStat[func].sample(a, b, c);\n });\n else\n return jStat[func].sample(a, b, c);\n };\n // generate the pdf, cdf and inv instance methods\n (function(vals) {\n for (var i = 0; i < vals.length; i++) (function(fnfunc) {\n jStat[func].prototype[fnfunc] = function(x) {\n var a = this._a;\n var b = this._b;\n var c = this._c;\n if (!x && x !== 0)\n x = this.data;\n if (typeof x !== 'number') {\n return jStat.fn.map.call(x, function(x) {\n return jStat[func][fnfunc](x, a, b, c);\n });\n }\n return jStat[func][fnfunc](x, a, b, c);\n };\n })(vals[i]);\n })('pdf cdf inv'.split(' '));\n // generate the mean, median, mode and variance instance methods\n (function(vals) {\n for (var i = 0; i < vals.length; i++) (function(fnfunc) {\n jStat[func].prototype[fnfunc] = function() {\n return jStat[func][fnfunc](this._a, this._b, this._c);\n };\n })(vals[i]);\n })('mean median mode variance'.split(' '));\n })(list[i]);\n})((\n 'beta centralF cauchy chisquare exponential gamma invgamma kumaraswamy ' +\n 'laplace lognormal noncentralt normal pareto studentt weibull uniform ' +\n 'binomial negbin hypgeom poisson triangular tukey arcsine'\n).split(' '));\n\n\n\n// extend beta function with static methods\njStat.extend(jStat.beta, {\n pdf: function pdf(x, alpha, beta) {\n // PDF is zero outside the support\n if (x > 1 || x < 0)\n return 0;\n // PDF is one for the uniform case\n if (alpha == 1 && beta == 1)\n return 1;\n\n if (alpha < 512 && beta < 512) {\n return (Math.pow(x, alpha - 1) * Math.pow(1 - x, beta - 1)) /\n jStat.betafn(alpha, beta);\n } else {\n return Math.exp((alpha - 1) * Math.log(x) +\n (beta - 1) * Math.log(1 - x) -\n jStat.betaln(alpha, beta));\n }\n },\n\n cdf: function cdf(x, alpha, beta) {\n return (x > 1 || x < 0) ? (x > 1) * 1 : jStat.ibeta(x, alpha, beta);\n },\n\n inv: function inv(x, alpha, beta) {\n return jStat.ibetainv(x, alpha, beta);\n },\n\n mean: function mean(alpha, beta) {\n return alpha / (alpha + beta);\n },\n\n median: function median(alpha, beta) {\n return jStat.ibetainv(0.5, alpha, beta);\n },\n\n mode: function mode(alpha, beta) {\n return (alpha - 1 ) / ( alpha + beta - 2);\n },\n\n // return a random sample\n sample: function sample(alpha, beta) {\n var u = jStat.randg(alpha);\n return u / (u + jStat.randg(beta));\n },\n\n variance: function variance(alpha, beta) {\n return (alpha * beta) / (Math.pow(alpha + beta, 2) * (alpha + beta + 1));\n }\n});\n\n// extend F function with static methods\njStat.extend(jStat.centralF, {\n // This implementation of the pdf function avoids float overflow\n // See the way that R calculates this value:\n // https://svn.r-project.org/R/trunk/src/nmath/df.c\n pdf: function pdf(x, df1, df2) {\n var p, q, f;\n\n if (x < 0)\n return 0;\n\n if (df1 <= 2) {\n if (x === 0 && df1 < 2) {\n return Infinity;\n }\n if (x === 0 && df1 === 2) {\n return 1;\n }\n return (1 / jStat.betafn(df1 / 2, df2 / 2)) *\n Math.pow(df1 / df2, df1 / 2) *\n Math.pow(x, (df1/2) - 1) *\n Math.pow((1 + (df1 / df2) * x), -(df1 + df2) / 2);\n }\n\n p = (df1 * x) / (df2 + x * df1);\n q = df2 / (df2 + x * df1);\n f = df1 * q / 2.0;\n return f * jStat.binomial.pdf((df1 - 2) / 2, (df1 + df2 - 2) / 2, p);\n },\n\n cdf: function cdf(x, df1, df2) {\n if (x < 0)\n return 0;\n return jStat.ibeta((df1 * x) / (df1 * x + df2), df1 / 2, df2 / 2);\n },\n\n inv: function inv(x, df1, df2) {\n return df2 / (df1 * (1 / jStat.ibetainv(x, df1 / 2, df2 / 2) - 1));\n },\n\n mean: function mean(df1, df2) {\n return (df2 > 2) ? df2 / (df2 - 2) : undefined;\n },\n\n mode: function mode(df1, df2) {\n return (df1 > 2) ? (df2 * (df1 - 2)) / (df1 * (df2 + 2)) : undefined;\n },\n\n // return a random sample\n sample: function sample(df1, df2) {\n var x1 = jStat.randg(df1 / 2) * 2;\n var x2 = jStat.randg(df2 / 2) * 2;\n return (x1 / df1) / (x2 / df2);\n },\n\n variance: function variance(df1, df2) {\n if (df2 <= 4)\n return undefined;\n return 2 * df2 * df2 * (df1 + df2 - 2) /\n (df1 * (df2 - 2) * (df2 - 2) * (df2 - 4));\n }\n});\n\n\n// extend cauchy function with static methods\njStat.extend(jStat.cauchy, {\n pdf: function pdf(x, local, scale) {\n if (scale < 0) { return 0; }\n\n return (scale / (Math.pow(x - local, 2) + Math.pow(scale, 2))) / Math.PI;\n },\n\n cdf: function cdf(x, local, scale) {\n return Math.atan((x - local) / scale) / Math.PI + 0.5;\n },\n\n inv: function(p, local, scale) {\n return local + scale * Math.tan(Math.PI * (p - 0.5));\n },\n\n median: function median(local/*, scale*/) {\n return local;\n },\n\n mode: function mode(local/*, scale*/) {\n return local;\n },\n\n sample: function sample(local, scale) {\n return jStat.randn() *\n Math.sqrt(1 / (2 * jStat.randg(0.5))) * scale + local;\n }\n});\n\n\n\n// extend chisquare function with static methods\njStat.extend(jStat.chisquare, {\n pdf: function pdf(x, dof) {\n if (x < 0)\n return 0;\n return (x === 0 && dof === 2) ? 0.5 :\n Math.exp((dof / 2 - 1) * Math.log(x) - x / 2 - (dof / 2) *\n Math.log(2) - jStat.gammaln(dof / 2));\n },\n\n cdf: function cdf(x, dof) {\n if (x < 0)\n return 0;\n return jStat.lowRegGamma(dof / 2, x / 2);\n },\n\n inv: function(p, dof) {\n return 2 * jStat.gammapinv(p, 0.5 * dof);\n },\n\n mean : function(dof) {\n return dof;\n },\n\n // TODO: this is an approximation (is there a better way?)\n median: function median(dof) {\n return dof * Math.pow(1 - (2 / (9 * dof)), 3);\n },\n\n mode: function mode(dof) {\n return (dof - 2 > 0) ? dof - 2 : 0;\n },\n\n sample: function sample(dof) {\n return jStat.randg(dof / 2) * 2;\n },\n\n variance: function variance(dof) {\n return 2 * dof;\n }\n});\n\n\n\n// extend exponential function with static methods\njStat.extend(jStat.exponential, {\n pdf: function pdf(x, rate) {\n return x < 0 ? 0 : rate * Math.exp(-rate * x);\n },\n\n cdf: function cdf(x, rate) {\n return x < 0 ? 0 : 1 - Math.exp(-rate * x);\n },\n\n inv: function(p, rate) {\n return -Math.log(1 - p) / rate;\n },\n\n mean : function(rate) {\n return 1 / rate;\n },\n\n median: function (rate) {\n return (1 / rate) * Math.log(2);\n },\n\n mode: function mode(/*rate*/) {\n return 0;\n },\n\n sample: function sample(rate) {\n return -1 / rate * Math.log(jStat._random_fn());\n },\n\n variance : function(rate) {\n return Math.pow(rate, -2);\n }\n});\n\n\n\n// extend gamma function with static methods\njStat.extend(jStat.gamma, {\n pdf: function pdf(x, shape, scale) {\n if (x < 0)\n return 0;\n return (x === 0 && shape === 1) ? 1 / scale :\n Math.exp((shape - 1) * Math.log(x) - x / scale -\n jStat.gammaln(shape) - shape * Math.log(scale));\n },\n\n cdf: function cdf(x, shape, scale) {\n if (x < 0)\n return 0;\n return jStat.lowRegGamma(shape, x / scale);\n },\n\n inv: function(p, shape, scale) {\n return jStat.gammapinv(p, shape) * scale;\n },\n\n mean : function(shape, scale) {\n return shape * scale;\n },\n\n mode: function mode(shape, scale) {\n if(shape > 1) return (shape - 1) * scale;\n return undefined;\n },\n\n sample: function sample(shape, scale) {\n return jStat.randg(shape) * scale;\n },\n\n variance: function variance(shape, scale) {\n return shape * scale * scale;\n }\n});\n\n// extend inverse gamma function with static methods\njStat.extend(jStat.invgamma, {\n pdf: function pdf(x, shape, scale) {\n if (x <= 0)\n return 0;\n return Math.exp(-(shape + 1) * Math.log(x) - scale / x -\n jStat.gammaln(shape) + shape * Math.log(scale));\n },\n\n cdf: function cdf(x, shape, scale) {\n if (x <= 0)\n return 0;\n return 1 - jStat.lowRegGamma(shape, scale / x);\n },\n\n inv: function(p, shape, scale) {\n return scale / jStat.gammapinv(1 - p, shape);\n },\n\n mean : function(shape, scale) {\n return (shape > 1) ? scale / (shape - 1) : undefined;\n },\n\n mode: function mode(shape, scale) {\n return scale / (shape + 1);\n },\n\n sample: function sample(shape, scale) {\n return scale / jStat.randg(shape);\n },\n\n variance: function variance(shape, scale) {\n if (shape <= 2)\n return undefined;\n return scale * scale / ((shape - 1) * (shape - 1) * (shape - 2));\n }\n});\n\n\n// extend kumaraswamy function with static methods\njStat.extend(jStat.kumaraswamy, {\n pdf: function pdf(x, alpha, beta) {\n if (x === 0 && alpha === 1)\n return beta;\n else if (x === 1 && beta === 1)\n return alpha;\n return Math.exp(Math.log(alpha) + Math.log(beta) + (alpha - 1) *\n Math.log(x) + (beta - 1) *\n Math.log(1 - Math.pow(x, alpha)));\n },\n\n cdf: function cdf(x, alpha, beta) {\n if (x < 0)\n return 0;\n else if (x > 1)\n return 1;\n return (1 - Math.pow(1 - Math.pow(x, alpha), beta));\n },\n\n inv: function inv(p, alpha, beta) {\n return Math.pow(1 - Math.pow(1 - p, 1 / beta), 1 / alpha);\n },\n\n mean : function(alpha, beta) {\n return (beta * jStat.gammafn(1 + 1 / alpha) *\n jStat.gammafn(beta)) / (jStat.gammafn(1 + 1 / alpha + beta));\n },\n\n median: function median(alpha, beta) {\n return Math.pow(1 - Math.pow(2, -1 / beta), 1 / alpha);\n },\n\n mode: function mode(alpha, beta) {\n if (!(alpha >= 1 && beta >= 1 && (alpha !== 1 && beta !== 1)))\n return undefined;\n return Math.pow((alpha - 1) / (alpha * beta - 1), 1 / alpha);\n },\n\n variance: function variance(/*alpha, beta*/) {\n throw new Error('variance not yet implemented');\n // TODO: complete this\n }\n});\n\n\n\n// extend lognormal function with static methods\njStat.extend(jStat.lognormal, {\n pdf: function pdf(x, mu, sigma) {\n if (x <= 0)\n return 0;\n return Math.exp(-Math.log(x) - 0.5 * Math.log(2 * Math.PI) -\n Math.log(sigma) - Math.pow(Math.log(x) - mu, 2) /\n (2 * sigma * sigma));\n },\n\n cdf: function cdf(x, mu, sigma) {\n if (x < 0)\n return 0;\n return 0.5 +\n (0.5 * jStat.erf((Math.log(x) - mu) / Math.sqrt(2 * sigma * sigma)));\n },\n\n inv: function(p, mu, sigma) {\n return Math.exp(-1.41421356237309505 * sigma * jStat.erfcinv(2 * p) + mu);\n },\n\n mean: function mean(mu, sigma) {\n return Math.exp(mu + sigma * sigma / 2);\n },\n\n median: function median(mu/*, sigma*/) {\n return Math.exp(mu);\n },\n\n mode: function mode(mu, sigma) {\n return Math.exp(mu - sigma * sigma);\n },\n\n sample: function sample(mu, sigma) {\n return Math.exp(jStat.randn() * sigma + mu);\n },\n\n variance: function variance(mu, sigma) {\n return (Math.exp(sigma * sigma) - 1) * Math.exp(2 * mu + sigma * sigma);\n }\n});\n\n\n\n// extend noncentralt function with static methods\njStat.extend(jStat.noncentralt, {\n pdf: function pdf(x, dof, ncp) {\n var tol = 1e-14;\n if (Math.abs(ncp) < tol) // ncp approx 0; use student-t\n return jStat.studentt.pdf(x, dof)\n\n if (Math.abs(x) < tol) { // different formula for x == 0\n return Math.exp(jStat.gammaln((dof + 1) / 2) - ncp * ncp / 2 -\n 0.5 * Math.log(Math.PI * dof) - jStat.gammaln(dof / 2));\n }\n\n // formula for x != 0\n return dof / x *\n (jStat.noncentralt.cdf(x * Math.sqrt(1 + 2 / dof), dof+2, ncp) -\n jStat.noncentralt.cdf(x, dof, ncp));\n },\n\n cdf: function cdf(x, dof, ncp) {\n var tol = 1e-14;\n var min_iterations = 200;\n\n if (Math.abs(ncp) < tol) // ncp approx 0; use student-t\n return jStat.studentt.cdf(x, dof);\n\n // turn negative x into positive and flip result afterwards\n var flip = false;\n if (x < 0) {\n flip = true;\n ncp = -ncp;\n }\n\n var prob = jStat.normal.cdf(-ncp, 0, 1);\n var value = tol + 1;\n // use value at last two steps to determine convergence\n var lastvalue = value;\n var y = x * x / (x * x + dof);\n var j = 0;\n var p = Math.exp(-ncp * ncp / 2);\n var q = Math.exp(-ncp * ncp / 2 - 0.5 * Math.log(2) -\n jStat.gammaln(3 / 2)) * ncp;\n while (j < min_iterations || lastvalue > tol || value > tol) {\n lastvalue = value;\n if (j > 0) {\n p *= (ncp * ncp) / (2 * j);\n q *= (ncp * ncp) / (2 * (j + 1 / 2));\n }\n value = p * jStat.beta.cdf(y, j + 0.5, dof / 2) +\n q * jStat.beta.cdf(y, j+1, dof/2);\n prob += 0.5 * value;\n j++;\n }\n\n return flip ? (1 - prob) : prob;\n }\n});\n\n\n// extend normal function with static methods\njStat.extend(jStat.normal, {\n pdf: function pdf(x, mean, std) {\n return Math.exp(-0.5 * Math.log(2 * Math.PI) -\n Math.log(std) - Math.pow(x - mean, 2) / (2 * std * std));\n },\n\n cdf: function cdf(x, mean, std) {\n return 0.5 * (1 + jStat.erf((x - mean) / Math.sqrt(2 * std * std)));\n },\n\n inv: function(p, mean, std) {\n return -1.41421356237309505 * std * jStat.erfcinv(2 * p) + mean;\n },\n\n mean : function(mean/*, std*/) {\n return mean;\n },\n\n median: function median(mean/*, std*/) {\n return mean;\n },\n\n mode: function (mean/*, std*/) {\n return mean;\n },\n\n sample: function sample(mean, std) {\n return jStat.randn() * std + mean;\n },\n\n variance : function(mean, std) {\n return std * std;\n }\n});\n\n\n\n// extend pareto function with static methods\njStat.extend(jStat.pareto, {\n pdf: function pdf(x, scale, shape) {\n if (x < scale)\n return 0;\n return (shape * Math.pow(scale, shape)) / Math.pow(x, shape + 1);\n },\n\n cdf: function cdf(x, scale, shape) {\n if (x < scale)\n return 0;\n return 1 - Math.pow(scale / x, shape);\n },\n\n inv: function inv(p, scale, shape) {\n return scale / Math.pow(1 - p, 1 / shape);\n },\n\n mean: function mean(scale, shape) {\n if (shape <= 1)\n return undefined;\n return (shape * Math.pow(scale, shape)) / (shape - 1);\n },\n\n median: function median(scale, shape) {\n return scale * (shape * Math.SQRT2);\n },\n\n mode: function mode(scale/*, shape*/) {\n return scale;\n },\n\n variance : function(scale, shape) {\n if (shape <= 2)\n return undefined;\n return (scale*scale * shape) / (Math.pow(shape - 1, 2) * (shape - 2));\n }\n});\n\n\n\n// extend studentt function with static methods\njStat.extend(jStat.studentt, {\n pdf: function pdf(x, dof) {\n dof = dof > 1e100 ? 1e100 : dof;\n return (1/(Math.sqrt(dof) * jStat.betafn(0.5, dof/2))) *\n Math.pow(1 + ((x * x) / dof), -((dof + 1) / 2));\n },\n\n cdf: function cdf(x, dof) {\n var dof2 = dof / 2;\n return jStat.ibeta((x + Math.sqrt(x * x + dof)) /\n (2 * Math.sqrt(x * x + dof)), dof2, dof2);\n },\n\n inv: function(p, dof) {\n var x = jStat.ibetainv(2 * Math.min(p, 1 - p), 0.5 * dof, 0.5);\n x = Math.sqrt(dof * (1 - x) / x);\n return (p > 0.5) ? x : -x;\n },\n\n mean: function mean(dof) {\n return (dof > 1) ? 0 : undefined;\n },\n\n median: function median(/*dof*/) {\n return 0;\n },\n\n mode: function mode(/*dof*/) {\n return 0;\n },\n\n sample: function sample(dof) {\n return jStat.randn() * Math.sqrt(dof / (2 * jStat.randg(dof / 2)));\n },\n\n variance: function variance(dof) {\n return (dof > 2) ? dof / (dof - 2) : (dof > 1) ? Infinity : undefined;\n }\n});\n\n\n\n// extend weibull function with static methods\njStat.extend(jStat.weibull, {\n pdf: function pdf(x, scale, shape) {\n if (x < 0 || scale < 0 || shape < 0)\n return 0;\n return (shape / scale) * Math.pow((x / scale), (shape - 1)) *\n Math.exp(-(Math.pow((x / scale), shape)));\n },\n\n cdf: function cdf(x, scale, shape) {\n return x < 0 ? 0 : 1 - Math.exp(-Math.pow((x / scale), shape));\n },\n\n inv: function(p, scale, shape) {\n return scale * Math.pow(-Math.log(1 - p), 1 / shape);\n },\n\n mean : function(scale, shape) {\n return scale * jStat.gammafn(1 + 1 / shape);\n },\n\n median: function median(scale, shape) {\n return scale * Math.pow(Math.log(2), 1 / shape);\n },\n\n mode: function mode(scale, shape) {\n if (shape <= 1)\n return 0;\n return scale * Math.pow((shape - 1) / shape, 1 / shape);\n },\n\n sample: function sample(scale, shape) {\n return scale * Math.pow(-Math.log(jStat._random_fn()), 1 / shape);\n },\n\n variance: function variance(scale, shape) {\n return scale * scale * jStat.gammafn(1 + 2 / shape) -\n Math.pow(jStat.weibull.mean(scale, shape), 2);\n }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.uniform, {\n pdf: function pdf(x, a, b) {\n return (x < a || x > b) ? 0 : 1 / (b - a);\n },\n\n cdf: function cdf(x, a, b) {\n if (x < a)\n return 0;\n else if (x < b)\n return (x - a) / (b - a);\n return 1;\n },\n\n inv: function(p, a, b) {\n return a + (p * (b - a));\n },\n\n mean: function mean(a, b) {\n return 0.5 * (a + b);\n },\n\n median: function median(a, b) {\n return jStat.mean(a, b);\n },\n\n mode: function mode(/*a, b*/) {\n throw new Error('mode is not yet implemented');\n },\n\n sample: function sample(a, b) {\n return (a / 2 + b / 2) + (b / 2 - a / 2) * (2 * jStat._random_fn() - 1);\n },\n\n variance: function variance(a, b) {\n return Math.pow(b - a, 2) / 12;\n }\n});\n\n\n// Got this from http://www.math.ucla.edu/~tom/distributions/binomial.html\nfunction betinc(x, a, b, eps) {\n var a0 = 0;\n var b0 = 1;\n var a1 = 1;\n var b1 = 1;\n var m9 = 0;\n var a2 = 0;\n var c9;\n\n while (Math.abs((a1 - a2) / a1) > eps) {\n a2 = a1;\n c9 = -(a + m9) * (a + b + m9) * x / (a + 2 * m9) / (a + 2 * m9 + 1);\n a0 = a1 + c9 * a0;\n b0 = b1 + c9 * b0;\n m9 = m9 + 1;\n c9 = m9 * (b - m9) * x / (a + 2 * m9 - 1) / (a + 2 * m9);\n a1 = a0 + c9 * a1;\n b1 = b0 + c9 * b1;\n a0 = a0 / b1;\n b0 = b0 / b1;\n a1 = a1 / b1;\n b1 = 1;\n }\n\n return a1 / a;\n}\n\n\n// extend uniform function with static methods\njStat.extend(jStat.binomial, {\n pdf: function pdf(k, n, p) {\n return (p === 0 || p === 1) ?\n ((n * p) === k ? 1 : 0) :\n jStat.combination(n, k) * Math.pow(p, k) * Math.pow(1 - p, n - k);\n },\n\n cdf: function cdf(x, n, p) {\n var betacdf;\n var eps = 1e-10;\n\n if (x < 0)\n return 0;\n if (x >= n)\n return 1;\n if (p < 0 || p > 1 || n <= 0)\n return NaN;\n\n x = Math.floor(x);\n var z = p;\n var a = x + 1;\n var b = n - x;\n var s = a + b;\n var bt = Math.exp(jStat.gammaln(s) - jStat.gammaln(b) -\n jStat.gammaln(a) + a * Math.log(z) + b * Math.log(1 - z));\n\n if (z < (a + 1) / (s + 2))\n betacdf = bt * betinc(z, a, b, eps);\n else\n betacdf = 1 - bt * betinc(1 - z, b, a, eps);\n\n return Math.round((1 - betacdf) * (1 / eps)) / (1 / eps);\n }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.negbin, {\n pdf: function pdf(k, r, p) {\n if (k !== k >>> 0)\n return false;\n if (k < 0)\n return 0;\n return jStat.combination(k + r - 1, r - 1) *\n Math.pow(1 - p, k) * Math.pow(p, r);\n },\n\n cdf: function cdf(x, r, p) {\n var sum = 0,\n k = 0;\n if (x < 0) return 0;\n for (; k <= x; k++) {\n sum += jStat.negbin.pdf(k, r, p);\n }\n return sum;\n }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.hypgeom, {\n pdf: function pdf(k, N, m, n) {\n // Hypergeometric PDF.\n\n // A simplification of the CDF algorithm below.\n\n // k = number of successes drawn\n // N = population size\n // m = number of successes in population\n // n = number of items drawn from population\n\n if(k !== k | 0) {\n return false;\n } else if(k < 0 || k < m - (N - n)) {\n // It's impossible to have this few successes drawn.\n return 0;\n } else if(k > n || k > m) {\n // It's impossible to have this many successes drawn.\n return 0;\n } else if (m * 2 > N) {\n // More than half the population is successes.\n\n if(n * 2 > N) {\n // More than half the population is sampled.\n\n return jStat.hypgeom.pdf(N - m - n + k, N, N - m, N - n)\n } else {\n // Half or less of the population is sampled.\n\n return jStat.hypgeom.pdf(n - k, N, N - m, n);\n }\n\n } else if(n * 2 > N) {\n // Half or less is successes.\n\n return jStat.hypgeom.pdf(m - k, N, m, N - n);\n\n } else if(m < n) {\n // We want to have the number of things sampled to be less than the\n // successes available. So swap the definitions of successful and sampled.\n return jStat.hypgeom.pdf(k, N, n, m);\n } else {\n // If we get here, half or less of the population was sampled, half or\n // less of it was successes, and we had fewer sampled things than\n // successes. Now we can do this complicated iterative algorithm in an\n // efficient way.\n\n // The basic premise of the algorithm is that we partially normalize our\n // intermediate product to keep it in a numerically good region, and then\n // finish the normalization at the end.\n\n // This variable holds the scaled probability of the current number of\n // successes.\n var scaledPDF = 1;\n\n // This keeps track of how much we have normalized.\n var samplesDone = 0;\n\n for(var i = 0; i < k; i++) {\n // For every possible number of successes up to that observed...\n\n while(scaledPDF > 1 && samplesDone < n) {\n // Intermediate result is growing too big. Apply some of the\n // normalization to shrink everything.\n\n scaledPDF *= 1 - (m / (N - samplesDone));\n\n // Say we've normalized by this sample already.\n samplesDone++;\n }\n\n // Work out the partially-normalized hypergeometric PDF for the next\n // number of successes\n scaledPDF *= (n - i) * (m - i) / ((i + 1) * (N - m - n + i + 1));\n }\n\n for(; samplesDone < n; samplesDone++) {\n // Apply all the rest of the normalization\n scaledPDF *= 1 - (m / (N - samplesDone));\n }\n\n // Bound answer sanely before returning.\n return Math.min(1, Math.max(0, scaledPDF));\n }\n },\n\n cdf: function cdf(x, N, m, n) {\n // Hypergeometric CDF.\n\n // This algorithm is due to Prof. Thomas S. Ferguson, <tom@math.ucla.edu>,\n // and comes from his hypergeometric test calculator at\n // <http://www.math.ucla.edu/~tom/distributions/Hypergeometric.html>.\n\n // x = number of successes drawn\n // N = population size\n // m = number of successes in population\n // n = number of items drawn from population\n\n if(x < 0 || x < m - (N - n)) {\n // It's impossible to have this few successes drawn or fewer.\n return 0;\n } else if(x >= n || x >= m) {\n // We will always have this many successes or fewer.\n return 1;\n } else if (m * 2 > N) {\n // More than half the population is successes.\n\n if(n * 2 > N) {\n // More than half the population is sampled.\n\n return jStat.hypgeom.cdf(N - m - n + x, N, N - m, N - n)\n } else {\n // Half or less of the population is sampled.\n\n return 1 - jStat.hypgeom.cdf(n - x - 1, N, N - m, n);\n }\n\n } else if(n * 2 > N) {\n // Half or less is successes.\n\n return 1 - jStat.hypgeom.cdf(m - x - 1, N, m, N - n);\n\n } else if(m < n) {\n // We want to have the number of things sampled to be less than the\n // successes available. So swap the definitions of successful and sampled.\n return jStat.hypgeom.cdf(x, N, n, m);\n } else {\n // If we get here, half or less of the population was sampled, half or\n // less of it was successes, and we had fewer sampled things than\n // successes. Now we can do this complicated iterative algorithm in an\n // efficient way.\n\n // The basic premise of the algorithm is that we partially normalize our\n // intermediate sum to keep it in a numerically good region, and then\n // finish the normalization at the end.\n\n // Holds the intermediate, scaled total CDF.\n var scaledCDF = 1;\n\n // This variable holds the scaled probability of the current number of\n // successes.\n var scaledPDF = 1;\n\n // This keeps track of how much we have normalized.\n var samplesDone = 0;\n\n for(var i = 0; i < x; i++) {\n // For every possible number of successes up to that observed...\n\n while(scaledCDF > 1 && samplesDone < n) {\n // Intermediate result is growing too big. Apply some of the\n // normalization to shrink everything.\n\n var factor = 1 - (m / (N - samplesDone));\n\n scaledPDF *= factor;\n scaledCDF *= factor;\n\n // Say we've normalized by this sample already.\n samplesDone++;\n }\n\n // Work out the partially-normalized hypergeometric PDF for the next\n // number of successes\n scaledPDF *= (n - i) * (m - i) / ((i + 1) * (N - m - n + i + 1));\n\n // Add to the CDF answer.\n scaledCDF += scaledPDF;\n }\n\n for(; samplesDone < n; samplesDone++) {\n // Apply all the rest of the normalization\n scaledCDF *= 1 - (m / (N - samplesDone));\n }\n\n // Bound answer sanely before returning.\n return Math.min(1, Math.max(0, scaledCDF));\n }\n }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.poisson, {\n pdf: function pdf(k, l) {\n if (l < 0 || (k % 1) !== 0 || k < 0) {\n return 0;\n }\n\n return Math.pow(l, k) * Math.exp(-l) / jStat.factorial(k);\n },\n\n cdf: function cdf(x, l) {\n var sumarr = [],\n k = 0;\n if (x < 0) return 0;\n for (; k <= x; k++) {\n sumarr.push(jStat.poisson.pdf(k, l));\n }\n return jStat.sum(sumarr);\n },\n\n mean : function(l) {\n return l;\n },\n\n variance : function(l) {\n return l;\n },\n\n sampleSmall: function sampleSmall(l) {\n var p = 1, k = 0, L = Math.exp(-l);\n do {\n k++;\n p *= jStat._random_fn();\n } while (p > L);\n return k - 1;\n },\n\n sampleLarge: function sampleLarge(l) {\n var lam = l;\n var k;\n var U, V, slam, loglam, a, b, invalpha, vr, us;\n\n slam = Math.sqrt(lam);\n loglam = Math.log(lam);\n b = 0.931 + 2.53 * slam;\n a = -0.059 + 0.02483 * b;\n invalpha = 1.1239 + 1.1328 / (b - 3.4);\n vr = 0.9277 - 3.6224 / (b - 2);\n\n while (1) {\n U = Math.random() - 0.5;\n V = Math.random();\n us = 0.5 - Math.abs(U);\n k = Math.floor((2 * a / us + b) * U + lam + 0.43);\n if ((us >= 0.07) && (V <= vr)) {\n return k;\n }\n if ((k < 0) || ((us < 0.013) && (V > us))) {\n continue;\n }\n /* log(V) == log(0.0) ok here */\n /* if U==0.0 so that us==0.0, log is ok since always returns */\n if ((Math.log(V) + Math.log(invalpha) - Math.log(a / (us * us) + b)) <= (-lam + k * loglam - jStat.loggam(k + 1))) {\n return k;\n }\n }\n },\n\n sample: function sample(l) {\n if (l < 10)\n return this.sampleSmall(l);\n else\n return this.sampleLarge(l);\n }\n});\n\n// extend triangular function with static methods\njStat.extend(jStat.triangular, {\n pdf: function pdf(x, a, b, c) {\n if (b <= a || c < a || c > b) {\n return NaN;\n } else {\n if (x < a || x > b) {\n return 0;\n } else if (x < c) {\n return (2 * (x - a)) / ((b - a) * (c - a));\n } else if (x === c) {\n return (2 / (b - a));\n } else { // x > c\n return (2 * (b - x)) / ((b - a) * (b - c));\n }\n }\n },\n\n cdf: function cdf(x, a, b, c) {\n if (b <= a || c < a || c > b)\n return NaN;\n if (x <= a)\n return 0;\n else if (x >= b)\n return 1;\n if (x <= c)\n return Math.pow(x - a, 2) / ((b - a) * (c - a));\n else // x > c\n return 1 - Math.pow(b - x, 2) / ((b - a) * (b - c));\n },\n\n inv: function inv(p, a, b, c) {\n if (b <= a || c < a || c > b) {\n return NaN;\n } else {\n if (p <= ((c - a) / (b - a))) {\n return a + (b - a) * Math.sqrt(p * ((c - a) / (b - a)));\n } else { // p > ((c - a) / (b - a))\n return a + (b - a) * (1 - Math.sqrt((1 - p) * (1 - ((c - a) / (b - a)))));\n }\n }\n },\n\n mean: function mean(a, b, c) {\n return (a + b + c) / 3;\n },\n\n median: function median(a, b, c) {\n if (c <= (a + b) / 2) {\n return b - Math.sqrt((b - a) * (b - c)) / Math.sqrt(2);\n } else if (c > (a + b) / 2) {\n return a + Math.sqrt((b - a) * (c - a)) / Math.sqrt(2);\n }\n },\n\n mode: function mode(a, b, c) {\n return c;\n },\n\n sample: function sample(a, b, c) {\n var u = jStat._random_fn();\n if (u < ((c - a) / (b - a)))\n return a + Math.sqrt(u * (b - a) * (c - a))\n return b - Math.sqrt((1 - u) * (b - a) * (b - c));\n },\n\n variance: function variance(a, b, c) {\n return (a * a + b * b + c * c - a * b - a * c - b * c) / 18;\n }\n});\n\n\n// extend arcsine function with static methods\njStat.extend(jStat.arcsine, {\n pdf: function pdf(x, a, b) {\n if (b <= a) return NaN;\n\n return (x <= a || x >= b) ? 0 :\n (2 / Math.PI) *\n Math.pow(Math.pow(b - a, 2) -\n Math.pow(2 * x - a - b, 2), -0.5);\n },\n\n cdf: function cdf(x, a, b) {\n if (x < a)\n return 0;\n else if (x < b)\n return (2 / Math.PI) * Math.asin(Math.sqrt((x - a)/(b - a)));\n return 1;\n },\n\n inv: function(p, a, b) {\n return a + (0.5 - 0.5 * Math.cos(Math.PI * p)) * (b - a);\n },\n\n mean: function mean(a, b) {\n if (b <= a) return NaN;\n return (a + b) / 2;\n },\n\n median: function median(a, b) {\n if (b <= a) return NaN;\n return (a + b) / 2;\n },\n\n mode: function mode(/*a, b*/) {\n throw new Error('mode is not yet implemented');\n },\n\n sample: function sample(a, b) {\n return ((a + b) / 2) + ((b - a) / 2) *\n Math.sin(2 * Math.PI * jStat.uniform.sample(0, 1));\n },\n\n variance: function variance(a, b) {\n if (b <= a) return NaN;\n return Math.pow(b - a, 2) / 8;\n }\n});\n\n\nfunction laplaceSign(x) { return x / Math.abs(x); }\n\njStat.extend(jStat.laplace, {\n pdf: function pdf(x, mu, b) {\n return (b <= 0) ? 0 : (Math.exp(-Math.abs(x - mu) / b)) / (2 * b);\n },\n\n cdf: function cdf(x, mu, b) {\n if (b <= 0) { return 0; }\n\n if(x < mu) {\n return 0.5 * Math.exp((x - mu) / b);\n } else {\n return 1 - 0.5 * Math.exp(- (x - mu) / b);\n }\n },\n\n mean: function(mu/*, b*/) {\n return mu;\n },\n\n median: function(mu/*, b*/) {\n return mu;\n },\n\n mode: function(mu/*, b*/) {\n return mu;\n },\n\n variance: function(mu, b) {\n return 2 * b * b;\n },\n\n sample: function sample(mu, b) {\n var u = jStat._random_fn() - 0.5;\n\n return mu - (b * laplaceSign(u) * Math.log(1 - (2 * Math.abs(u))));\n }\n});\n\nfunction tukeyWprob(w, rr, cc) {\n var nleg = 12;\n var ihalf = 6;\n\n var C1 = -30;\n var C2 = -50;\n var C3 = 60;\n var bb = 8;\n var wlar = 3;\n var wincr1 = 2;\n var wincr2 = 3;\n var xleg = [\n 0.981560634246719250690549090149,\n 0.904117256370474856678465866119,\n 0.769902674194304687036893833213,\n 0.587317954286617447296702418941,\n 0.367831498998180193752691536644,\n 0.125233408511468915472441369464\n ];\n var aleg = [\n 0.047175336386511827194615961485,\n 0.106939325995318430960254718194,\n 0.160078328543346226334652529543,\n 0.203167426723065921749064455810,\n 0.233492536538354808760849898925,\n 0.249147045813402785000562436043\n ];\n\n var qsqz = w * 0.5;\n\n // if w >= 16 then the integral lower bound (occurs for c=20)\n // is 0.99999999999995 so return a value of 1.\n\n if (qsqz >= bb)\n return 1.0;\n\n // find (f(w/2) - 1) ^ cc\n // (first term in integral of hartley's form).\n\n var pr_w = 2 * jStat.normal.cdf(qsqz, 0, 1, 1, 0) - 1; // erf(qsqz / M_SQRT2)\n // if pr_w ^ cc < 2e-22 then set pr_w = 0\n if (pr_w >= Math.exp(C2 / cc))\n pr_w = Math.pow(pr_w, cc);\n else\n pr_w = 0.0;\n\n // if w is large then the second component of the\n // integral is small, so fewer intervals are needed.\n\n var wincr;\n if (w > wlar)\n wincr = wincr1;\n else\n wincr = wincr2;\n\n // find the integral of second term of hartley's form\n // for the integral of the range for equal-length\n // intervals using legendre quadrature. limits of\n // integration are from (w/2, 8). two or three\n // equal-length intervals are used.\n\n // blb and bub are lower and upper limits of integration.\n\n var blb = qsqz;\n var binc = (bb - qsqz) / wincr;\n var bub = blb + binc;\n var einsum = 0.0;\n\n // integrate over each interval\n\n var cc1 = cc - 1.0;\n for (var wi = 1; wi <= wincr; wi++) {\n var elsum = 0.0;\n var a = 0.5 * (bub + blb);\n\n // legendre quadrature with order = nleg\n\n var b = 0.5 * (bub - blb);\n\n for (var jj = 1; jj <= nleg; jj++) {\n var j, xx;\n if (ihalf < jj) {\n j = (nleg - jj) + 1;\n xx = xleg[j-1];\n } else {\n j = jj;\n xx = -xleg[j-1];\n }\n var c = b * xx;\n var ac = a + c;\n\n // if exp(-qexpo/2) < 9e-14,\n // then doesn't contribute to integral\n\n var qexpo = ac * ac;\n if (qexpo > C3)\n break;\n\n var pplus = 2 * jStat.normal.cdf(ac, 0, 1, 1, 0);\n var pminus= 2 * jStat.normal.cdf(ac, w, 1, 1, 0);\n\n // if rinsum ^ (cc-1) < 9e-14,\n // then doesn't contribute to integral\n\n var rinsum = (pplus * 0.5) - (pminus * 0.5);\n if (rinsum >= Math.exp(C1 / cc1)) {\n rinsum = (aleg[j-1] * Math.exp(-(0.5 * qexpo))) * Math.pow(rinsum, cc1);\n elsum += rinsum;\n }\n }\n elsum *= (((2.0 * b) * cc) / Math.sqrt(2 * Math.PI));\n einsum += elsum;\n blb = bub;\n bub += binc;\n }\n\n // if pr_w ^ rr < 9e-14, then return 0\n pr_w += einsum;\n if (pr_w <= Math.exp(C1 / rr))\n return 0;\n\n pr_w = Math.pow(pr_w, rr);\n if (pr_w >= 1) // 1 was iMax was eps\n return 1;\n return pr_w;\n}\n\nfunction tukeyQinv(p, c, v) {\n var p0 = 0.322232421088;\n var q0 = 0.993484626060e-01;\n var p1 = -1.0;\n var q1 = 0.588581570495;\n var p2 = -0.342242088547;\n var q2 = 0.531103462366;\n var p3 = -0.204231210125;\n var q3 = 0.103537752850;\n var p4 = -0.453642210148e-04;\n var q4 = 0.38560700634e-02;\n var c1 = 0.8832;\n var c2 = 0.2368;\n var c3 = 1.214;\n var c4 = 1.208;\n var c5 = 1.4142;\n var vmax = 120.0;\n\n var ps = 0.5 - 0.5 * p;\n var yi = Math.sqrt(Math.log(1.0 / (ps * ps)));\n var t = yi + (((( yi * p4 + p3) * yi + p2) * yi + p1) * yi + p0)\n / (((( yi * q4 + q3) * yi + q2) * yi + q1) * yi + q0);\n if (v < vmax) t += (t * t * t + t) / v / 4.0;\n var q = c1 - c2 * t;\n if (v < vmax) q += -c3 / v + c4 * t / v;\n return t * (q * Math.log(c - 1.0) + c5);\n}\n\njStat.extend(jStat.tukey, {\n cdf: function cdf(q, nmeans, df) {\n // Identical implementation as the R ptukey() function as of commit 68947\n var rr = 1;\n var cc = nmeans;\n\n var nlegq = 16;\n var ihalfq = 8;\n\n var eps1 = -30.0;\n var eps2 = 1.0e-14;\n var dhaf = 100.0;\n var dquar = 800.0;\n var deigh = 5000.0;\n var dlarg = 25000.0;\n var ulen1 = 1.0;\n var ulen2 = 0.5;\n var ulen3 = 0.25;\n var ulen4 = 0.125;\n var xlegq = [\n 0.989400934991649932596154173450,\n 0.944575023073232576077988415535,\n 0.865631202387831743880467897712,\n 0.755404408355003033895101194847,\n 0.617876244402643748446671764049,\n 0.458016777657227386342419442984,\n 0.281603550779258913230460501460,\n 0.950125098376374401853193354250e-1\n ];\n var alegq = [\n 0.271524594117540948517805724560e-1,\n 0.622535239386478928628438369944e-1,\n 0.951585116824927848099251076022e-1,\n 0.124628971255533872052476282192,\n 0.149595988816576732081501730547,\n 0.169156519395002538189312079030,\n 0.182603415044923588866763667969,\n 0.189450610455068496285396723208\n ];\n\n if (q <= 0)\n return 0;\n\n // df must be > 1\n // there must be at least two values\n\n if (df < 2 || rr < 1 || cc < 2) return NaN;\n\n if (!Number.isFinite(q))\n return 1;\n\n if (df > dlarg)\n return tukeyWprob(q, rr, cc);\n\n // calculate leading constant\n\n var f2 = df * 0.5;\n var f2lf = ((f2 * Math.log(df)) - (df * Math.log(2))) - jStat.gammaln(f2);\n var f21 = f2 - 1.0;\n\n // integral is divided into unit, half-unit, quarter-unit, or\n // eighth-unit length intervals depending on the value of the\n // degrees of freedom.\n\n var ff4 = df * 0.25;\n var ulen;\n if (df <= dhaf) ulen = ulen1;\n else if (df <= dquar) ulen = ulen2;\n else if (df <= deigh) ulen = ulen3;\n else ulen = ulen4;\n\n f2lf += Math.log(ulen);\n\n // integrate over each subinterval\n\n var ans = 0.0;\n\n for (var i = 1; i <= 50; i++) {\n var otsum = 0.0;\n\n // legendre quadrature with order = nlegq\n // nodes (stored in xlegq) are symmetric around zero.\n\n var twa1 = (2 * i - 1) * ulen;\n\n for (var jj = 1; jj <= nlegq; jj++) {\n var j, t1;\n if (ihalfq < jj) {\n j = jj - ihalfq - 1;\n t1 = (f2lf + (f21 * Math.log(twa1 + (xlegq[j] * ulen))))\n - (((xlegq[j] * ulen) + twa1) * ff4);\n } else {\n j = jj - 1;\n t1 = (f2lf + (f21 * Math.log(twa1 - (xlegq[j] * ulen))))\n + (((xlegq[j] * ulen) - twa1) * ff4);\n }\n\n // if exp(t1) < 9e-14, then doesn't contribute to integral\n var qsqz;\n if (t1 >= eps1) {\n if (ihalfq < jj) {\n qsqz = q * Math.sqrt(((xlegq[j] * ulen) + twa1) * 0.5);\n } else {\n qsqz = q * Math.sqrt(((-(xlegq[j] * ulen)) + twa1) * 0.5);\n }\n\n // call wprob to find integral of range portion\n\n var wprb = tukeyWprob(qsqz, rr, cc);\n var rotsum = (wprb * alegq[j]) * Math.exp(t1);\n otsum += rotsum;\n }\n // end legendre integral for interval i\n // L200:\n }\n\n // if integral for interval i < 1e-14, then stop.\n // However, in order to avoid small area under left tail,\n // at least 1 / ulen intervals are calculated.\n if (i * ulen >= 1.0 && otsum <= eps2)\n break;\n\n // end of interval i\n // L330:\n\n ans += otsum;\n }\n\n if (otsum > eps2) { // not converged\n throw new Error('tukey.cdf failed to converge');\n }\n if (ans > 1)\n ans = 1;\n return ans;\n },\n\n inv: function(p, nmeans, df) {\n // Identical implementation as the R qtukey() function as of commit 68947\n var rr = 1;\n var cc = nmeans;\n\n var eps = 0.0001;\n var maxiter = 50;\n\n // df must be > 1 ; there must be at least two values\n if (df < 2 || rr < 1 || cc < 2) return NaN;\n\n if (p < 0 || p > 1) return NaN;\n if (p === 0) return 0;\n if (p === 1) return Infinity;\n\n // Initial value\n\n var x0 = tukeyQinv(p, cc, df);\n\n // Find prob(value < x0)\n\n var valx0 = jStat.tukey.cdf(x0, nmeans, df) - p;\n\n // Find the second iterate and prob(value < x1).\n // If the first iterate has probability value\n // exceeding p then second iterate is 1 less than\n // first iterate; otherwise it is 1 greater.\n\n var x1;\n if (valx0 > 0.0)\n x1 = Math.max(0.0, x0 - 1.0);\n else\n x1 = x0 + 1.0;\n var valx1 = jStat.tukey.cdf(x1, nmeans, df) - p;\n\n // Find new iterate\n\n var ans;\n for(var iter = 1; iter < maxiter; iter++) {\n ans = x1 - ((valx1 * (x1 - x0)) / (valx1 - valx0));\n valx0 = valx1;\n\n // New iterate must be >= 0\n\n x0 = x1;\n if (ans < 0.0) {\n ans = 0.0;\n valx1 = -p;\n }\n // Find prob(value < new iterate)\n\n valx1 = jStat.tukey.cdf(ans, nmeans, df) - p;\n x1 = ans;\n\n // If the difference between two successive\n // iterates is less than eps, stop\n\n var xabs = Math.abs(x1 - x0);\n if (xabs < eps)\n return ans;\n }\n\n throw new Error('tukey.inv failed to converge');\n }\n});\n\n}(jStat, Math));\n/* Provides functions for the solution of linear system of equations, integration, extrapolation,\n * interpolation, eigenvalue problems, differential equations and PCA analysis. */\n\n(function(jStat, Math) {\n\nvar push = Array.prototype.push;\nvar isArray = jStat.utils.isArray;\n\nfunction isUsable(arg) {\n return isArray(arg) || arg instanceof jStat;\n}\n\njStat.extend({\n\n // add a vector/matrix to a vector/matrix or scalar\n add: function add(arr, arg) {\n // check if arg is a vector or scalar\n if (isUsable(arg)) {\n if (!isUsable(arg[0])) arg = [ arg ];\n return jStat.map(arr, function(value, row, col) {\n return value + arg[row][col];\n });\n }\n return jStat.map(arr, function(value) { return value + arg; });\n },\n\n // subtract a vector or scalar from the vector\n subtract: function subtract(arr, arg) {\n // check if arg is a vector or scalar\n if (isUsable(arg)) {\n if (!isUsable(arg[0])) arg = [ arg ];\n return jStat.map(arr, function(value, row, col) {\n return value - arg[row][col] || 0;\n });\n }\n return jStat.map(arr, function(value) { return value - arg; });\n },\n\n // matrix division\n divide: function divide(arr, arg) {\n if (isUsable(arg)) {\n if (!isUsable(arg[0])) arg = [ arg ];\n return jStat.multiply(arr, jStat.inv(arg));\n }\n return jStat.map(arr, function(value) { return value / arg; });\n },\n\n // matrix multiplication\n multiply: function multiply(arr, arg) {\n var row, col, nrescols, sum, nrow, ncol, res, rescols;\n // eg: arr = 2 arg = 3 -> 6 for res[0][0] statement closure\n if (arr.length === undefined && arg.length === undefined) {\n return arr * arg;\n }\n nrow = arr.length,\n ncol = arr[0].length,\n res = jStat.zeros(nrow, nrescols = (isUsable(arg)) ? arg[0].length : ncol),\n rescols = 0;\n if (isUsable(arg)) {\n for (; rescols < nrescols; rescols++) {\n for (row = 0; row < nrow; row++) {\n sum = 0;\n for (col = 0; col < ncol; col++)\n sum += arr[row][col] * arg[col][rescols];\n res[row][rescols] = sum;\n }\n }\n return (nrow === 1 && rescols === 1) ? res[0][0] : res;\n }\n return jStat.map(arr, function(value) { return value * arg; });\n },\n\n // outer([1,2,3],[4,5,6])\n // ===\n // [[1],[2],[3]] times [[4,5,6]]\n // ->\n // [[4,5,6],[8,10,12],[12,15,18]]\n outer:function outer(A, B) {\n return jStat.multiply(A.map(function(t){ return [t] }), [B]);\n },\n\n\n // Returns the dot product of two matricies\n dot: function dot(arr, arg) {\n if (!isUsable(arr[0])) arr = [ arr ];\n if (!isUsable(arg[0])) arg = [ arg ];\n // convert column to row vector\n var left = (arr[0].length === 1 && arr.length !== 1) ? jStat.transpose(arr) : arr,\n right = (arg[0].length === 1 && arg.length !== 1) ? jStat.transpose(arg) : arg,\n res = [],\n row = 0,\n nrow = left.length,\n ncol = left[0].length,\n sum, col;\n for (; row < nrow; row++) {\n res[row] = [];\n sum = 0;\n for (col = 0; col < ncol; col++)\n sum += left[row][col] * right[row][col];\n res[row] = sum;\n }\n return (res.length === 1) ? res[0] : res;\n },\n\n // raise every element by a scalar\n pow: function pow(arr, arg) {\n return jStat.map(arr, function(value) { return Math.pow(value, arg); });\n },\n\n // exponentiate every element\n exp: function exp(arr) {\n return jStat.map(arr, function(value) { return Math.exp(value); });\n },\n\n // generate the natural log of every element\n log: function exp(arr) {\n return jStat.map(arr, function(value) { return Math.log(value); });\n },\n\n // generate the absolute values of the vector\n abs: function abs(arr) {\n return jStat.map(arr, function(value) { return Math.abs(value); });\n },\n\n // computes the p-norm of the vector\n // In the case that a matrix is passed, uses the first row as the vector\n norm: function norm(arr, p) {\n var nnorm = 0,\n i = 0;\n // check the p-value of the norm, and set for most common case\n if (isNaN(p)) p = 2;\n // check if multi-dimensional array, and make vector correction\n if (isUsable(arr[0])) arr = arr[0];\n // vector norm\n for (; i < arr.length; i++) {\n nnorm += Math.pow(Math.abs(arr[i]), p);\n }\n return Math.pow(nnorm, 1 / p);\n },\n\n // computes the angle between two vectors in rads\n // In case a matrix is passed, this uses the first row as the vector\n angle: function angle(arr, arg) {\n return Math.acos(jStat.dot(arr, arg) / (jStat.norm(arr) * jStat.norm(arg)));\n },\n\n // augment one matrix by another\n // Note: this function returns a matrix, not a jStat object\n aug: function aug(a, b) {\n var newarr = [];\n var i;\n for (i = 0; i < a.length; i++) {\n newarr.push(a[i].slice());\n }\n for (i = 0; i < newarr.length; i++) {\n push.apply(newarr[i], b[i]);\n }\n return newarr;\n },\n\n // The inv() function calculates the inverse of a matrix\n // Create the inverse by augmenting the matrix by the identity matrix of the\n // appropriate size, and then use G-J elimination on the augmented matrix.\n inv: function inv(a) {\n var rows = a.length;\n var cols = a[0].length;\n var b = jStat.identity(rows, cols);\n var c = jStat.gauss_jordan(a, b);\n var result = [];\n var i = 0;\n var j;\n\n //We need to copy the inverse portion to a new matrix to rid G-J artifacts\n for (; i < rows; i++) {\n result[i] = [];\n for (j = cols; j < c[0].length; j++)\n result[i][j - cols] = c[i][j];\n }\n return result;\n },\n\n // calculate the determinant of a matrix\n det: function det(a) {\n var alen = a.length,\n alend = alen * 2,\n vals = new Array(alend),\n rowshift = alen - 1,\n colshift = alend - 1,\n mrow = rowshift - alen + 1,\n mcol = colshift,\n i = 0,\n result = 0,\n j;\n // check for special 2x2 case\n if (alen === 2) {\n return a[0][0] * a[1][1] - a[0][1] * a[1][0];\n }\n for (; i < alend; i++) {\n vals[i] = 1;\n }\n for (i = 0; i < alen; i++) {\n for (j = 0; j < alen; j++) {\n vals[(mrow < 0) ? mrow + alen : mrow ] *= a[i][j];\n vals[(mcol < alen) ? mcol + alen : mcol ] *= a[i][j];\n mrow++;\n mcol--;\n }\n mrow = --rowshift - alen + 1;\n mcol = --colshift;\n }\n for (i = 0; i < alen; i++) {\n result += vals[i];\n }\n for (; i < alend; i++) {\n result -= vals[i];\n }\n return result;\n },\n\n gauss_elimination: function gauss_elimination(a, b) {\n var i = 0,\n j = 0,\n n = a.length,\n m = a[0].length,\n factor = 1,\n sum = 0,\n x = [],\n maug, pivot, temp, k;\n a = jStat.aug(a, b);\n maug = a[0].length;\n for(i = 0; i < n; i++) {\n pivot = a[i][i];\n j = i;\n for (k = i + 1; k < m; k++) {\n if (pivot < Math.abs(a[k][i])) {\n pivot = a[k][i];\n j = k;\n }\n }\n if (j != i) {\n for(k = 0; k < maug; k++) {\n temp = a[i][k];\n a[i][k] = a[j][k];\n a[j][k] = temp;\n }\n }\n for (j = i + 1; j < n; j++) {\n factor = a[j][i] / a[i][i];\n for(k = i; k < maug; k++) {\n a[j][k] = a[j][k] - factor * a[i][k];\n }\n }\n }\n for (i = n - 1; i >= 0; i--) {\n sum = 0;\n for (j = i + 1; j<= n - 1; j++) {\n sum = sum + x[j] * a[i][j];\n }\n x[i] =(a[i][maug - 1] - sum) / a[i][i];\n }\n return x;\n },\n\n gauss_jordan: function gauss_jordan(a, b) {\n var m = jStat.aug(a, b);\n var h = m.length;\n var w = m[0].length;\n var c = 0;\n var x, y, y2;\n // find max pivot\n for (y = 0; y < h; y++) {\n var maxrow = y;\n for (y2 = y+1; y2 < h; y2++) {\n if (Math.abs(m[y2][y]) > Math.abs(m[maxrow][y]))\n maxrow = y2;\n }\n var tmp = m[y];\n m[y] = m[maxrow];\n m[maxrow] = tmp\n for (y2 = y+1; y2 < h; y2++) {\n c = m[y2][y] / m[y][y];\n for (x = y; x < w; x++) {\n m[y2][x] -= m[y][x] * c;\n }\n }\n }\n // backsubstitute\n for (y = h-1; y >= 0; y--) {\n c = m[y][y];\n for (y2 = 0; y2 < y; y2++) {\n for (x = w-1; x > y-1; x--) {\n m[y2][x] -= m[y][x] * m[y2][y] / c;\n }\n }\n m[y][y] /= c;\n for (x = h; x < w; x++) {\n m[y][x] /= c;\n }\n }\n return m;\n },\n\n // solve equation\n // Ax=b\n // A is upper triangular matrix\n // A=[[1,2,3],[0,4,5],[0,6,7]]\n // b=[1,2,3]\n // triaUpSolve(A,b) // -> [2.666,0.1666,1.666]\n // if you use matrix style\n // A=[[1,2,3],[0,4,5],[0,6,7]]\n // b=[[1],[2],[3]]\n // will return [[2.666],[0.1666],[1.666]]\n triaUpSolve: function triaUpSolve(A, b) {\n var size = A[0].length;\n var x = jStat.zeros(1, size)[0];\n var parts;\n var matrix_mode = false;\n\n if (b[0].length != undefined) {\n b = b.map(function(i){ return i[0] });\n matrix_mode = true;\n }\n\n jStat.arange(size - 1, -1, -1).forEach(function(i) {\n parts = jStat.arange(i + 1, size).map(function(j) {\n return x[j] * A[i][j];\n });\n x[i] = (b[i] - jStat.sum(parts)) / A[i][i];\n });\n\n if (matrix_mode)\n return x.map(function(i){ return [i] });\n return x;\n },\n\n triaLowSolve: function triaLowSolve(A, b) {\n // like to triaUpSolve but A is lower triangular matrix\n var size = A[0].length;\n var x = jStat.zeros(1, size)[0];\n var parts;\n\n var matrix_mode=false;\n if (b[0].length != undefined) {\n b = b.map(function(i){ return i[0] });\n matrix_mode = true;\n }\n\n jStat.arange(size).forEach(function(i) {\n parts = jStat.arange(i).map(function(j) {\n return A[i][j] * x[j];\n });\n x[i] = (b[i] - jStat.sum(parts)) / A[i][i];\n })\n\n if (matrix_mode)\n return x.map(function(i){ return [i] });\n return x;\n },\n\n\n // A -> [L,U]\n // A=LU\n // L is lower triangular matrix\n // U is upper triangular matrix\n lu: function lu(A) {\n var size = A.length;\n //var L=jStat.diagonal(jStat.ones(1,size)[0]);\n var L = jStat.identity(size);\n var R = jStat.zeros(A.length, A[0].length);\n var parts;\n jStat.arange(size).forEach(function(t) {\n R[0][t] = A[0][t];\n });\n jStat.arange(1, size).forEach(function(l) {\n jStat.arange(l).forEach(function(i) {\n parts = jStat.arange(i).map(function(jj) {\n return L[l][jj] * R[jj][i];\n });\n L[l][i] = (A[l][i] - jStat.sum(parts)) / R[i][i];\n });\n jStat.arange(l, size).forEach(function(j) {\n parts = jStat.arange(l).map(function(jj) {\n return L[l][jj] * R[jj][j];\n });\n R[l][j] = A[parts.length][j] - jStat.sum(parts);\n });\n });\n return [L, R];\n },\n\n // A -> T\n // A=TT'\n // T is lower triangular matrix\n cholesky: function cholesky(A) {\n var size = A.length;\n var T = jStat.zeros(A.length, A[0].length);\n var parts;\n jStat.arange(size).forEach(function(i) {\n parts = jStat.arange(i).map(function(t) {\n return Math.pow(T[i][t],2);\n });\n T[i][i] = Math.sqrt(A[i][i] - jStat.sum(parts));\n jStat.arange(i + 1, size).forEach(function(j) {\n parts = jStat.arange(i).map(function(t) {\n return T[i][t] * T[j][t];\n });\n T[j][i] = (A[i][j] - jStat.sum(parts)) / T[i][i];\n });\n });\n return T;\n },\n\n\n gauss_jacobi: function gauss_jacobi(a, b, x, r) {\n var i = 0;\n var j = 0;\n var n = a.length;\n var l = [];\n var u = [];\n var d = [];\n var xv, c, h, xk;\n for (; i < n; i++) {\n l[i] = [];\n u[i] = [];\n d[i] = [];\n for (j = 0; j < n; j++) {\n if (i > j) {\n l[i][j] = a[i][j];\n u[i][j] = d[i][j] = 0;\n } else if (i < j) {\n u[i][j] = a[i][j];\n l[i][j] = d[i][j] = 0;\n } else {\n d[i][j] = a[i][j];\n l[i][j] = u[i][j] = 0;\n }\n }\n }\n h = jStat.multiply(jStat.multiply(jStat.inv(d), jStat.add(l, u)), -1);\n c = jStat.multiply(jStat.inv(d), b);\n xv = x;\n xk = jStat.add(jStat.multiply(h, x), c);\n i = 2;\n while (Math.abs(jStat.norm(jStat.subtract(xk,xv))) > r) {\n xv = xk;\n xk = jStat.add(jStat.multiply(h, xv), c);\n i++;\n }\n return xk;\n },\n\n gauss_seidel: function gauss_seidel(a, b, x, r) {\n var i = 0;\n var n = a.length;\n var l = [];\n var u = [];\n var d = [];\n var j, xv, c, h, xk;\n for (; i < n; i++) {\n l[i] = [];\n u[i] = [];\n d[i] = [];\n for (j = 0; j < n; j++) {\n if (i > j) {\n l[i][j] = a[i][j];\n u[i][j] = d[i][j] = 0;\n } else if (i < j) {\n u[i][j] = a[i][j];\n l[i][j] = d[i][j] = 0;\n } else {\n d[i][j] = a[i][j];\n l[i][j] = u[i][j] = 0;\n }\n }\n }\n h = jStat.multiply(jStat.multiply(jStat.inv(jStat.add(d, l)), u), -1);\n c = jStat.multiply(jStat.inv(jStat.add(d, l)), b);\n xv = x;\n xk = jStat.add(jStat.multiply(h, x), c);\n i = 2;\n while (Math.abs(jStat.norm(jStat.subtract(xk, xv))) > r) {\n xv = xk;\n xk = jStat.add(jStat.multiply(h, xv), c);\n i = i + 1;\n }\n return xk;\n },\n\n SOR: function SOR(a, b, x, r, w) {\n var i = 0;\n var n = a.length;\n var l = [];\n var u = [];\n var d = [];\n var j, xv, c, h, xk;\n for (; i < n; i++) {\n l[i] = [];\n u[i] = [];\n d[i] = [];\n for (j = 0; j < n; j++) {\n if (i > j) {\n l[i][j] = a[i][j];\n u[i][j] = d[i][j] = 0;\n } else if (i < j) {\n u[i][j] = a[i][j];\n l[i][j] = d[i][j] = 0;\n } else {\n d[i][j] = a[i][j];\n l[i][j] = u[i][j] = 0;\n }\n }\n }\n h = jStat.multiply(jStat.inv(jStat.add(d, jStat.multiply(l, w))),\n jStat.subtract(jStat.multiply(d, 1 - w),\n jStat.multiply(u, w)));\n c = jStat.multiply(jStat.multiply(jStat.inv(jStat.add(d,\n jStat.multiply(l, w))), b), w);\n xv = x;\n xk = jStat.add(jStat.multiply(h, x), c);\n i = 2;\n while (Math.abs(jStat.norm(jStat.subtract(xk, xv))) > r) {\n xv = xk;\n xk = jStat.add(jStat.multiply(h, xv), c);\n i++;\n }\n return xk;\n },\n\n householder: function householder(a) {\n var m = a.length;\n var n = a[0].length;\n var i = 0;\n var w = [];\n var p = [];\n var alpha, r, k, j, factor;\n for (; i < m - 1; i++) {\n alpha = 0;\n for (j = i + 1; j < n; j++)\n alpha += (a[j][i] * a[j][i]);\n factor = (a[i + 1][i] > 0) ? -1 : 1;\n alpha = factor * Math.sqrt(alpha);\n r = Math.sqrt((((alpha * alpha) - a[i + 1][i] * alpha) / 2));\n w = jStat.zeros(m, 1);\n w[i + 1][0] = (a[i + 1][i] - alpha) / (2 * r);\n for (k = i + 2; k < m; k++) w[k][0] = a[k][i] / (2 * r);\n p = jStat.subtract(jStat.identity(m, n),\n jStat.multiply(jStat.multiply(w, jStat.transpose(w)), 2));\n a = jStat.multiply(p, jStat.multiply(a, p));\n }\n return a;\n },\n\n // A -> [Q,R]\n // Q is orthogonal matrix\n // R is upper triangular\n QR: (function() {\n // x -> Q\n // find a orthogonal matrix Q st.\n // Qx=y\n // y is [||x||,0,0,...]\n\n // quick ref\n var sum = jStat.sum;\n var range = jStat.arange;\n\n function qr2(x) {\n // quick impletation\n // https://www.stat.wisc.edu/~larget/math496/qr.html\n\n var n = x.length;\n var p = x[0].length;\n\n var r = jStat.zeros(p, p);\n x = jStat.copy(x);\n\n var i,j,k;\n for(j = 0; j < p; j++){\n r[j][j] = Math.sqrt(sum(range(n).map(function(i){\n return x[i][j] * x[i][j];\n })));\n for(i = 0; i < n; i++){\n x[i][j] = x[i][j] / r[j][j];\n }\n for(k = j+1; k < p; k++){\n r[j][k] = sum(range(n).map(function(i){\n return x[i][j] * x[i][k];\n }));\n for(i = 0; i < n; i++){\n x[i][k] = x[i][k] - x[i][j]*r[j][k];\n }\n }\n }\n return [x, r];\n }\n\n return qr2;\n }()),\n\n lstsq: (function() {\n // solve least squard problem for Ax=b as QR decomposition way if b is\n // [[b1],[b2],[b3]] form will return [[x1],[x2],[x3]] array form solution\n // else b is [b1,b2,b3] form will return [x1,x2,x3] array form solution\n function R_I(A) {\n A = jStat.copy(A);\n var size = A.length;\n var I = jStat.identity(size);\n jStat.arange(size - 1, -1, -1).forEach(function(i) {\n jStat.sliceAssign(\n I, { row: i }, jStat.divide(jStat.slice(I, { row: i }), A[i][i]));\n jStat.sliceAssign(\n A, { row: i }, jStat.divide(jStat.slice(A, { row: i }), A[i][i]));\n jStat.arange(i).forEach(function(j) {\n var c = jStat.multiply(A[j][i], -1);\n var Aj = jStat.slice(A, { row: j });\n var cAi = jStat.multiply(jStat.slice(A, { row: i }), c);\n jStat.sliceAssign(A, { row: j }, jStat.add(Aj, cAi));\n var Ij = jStat.slice(I, { row: j });\n var cIi = jStat.multiply(jStat.slice(I, { row: i }), c);\n jStat.sliceAssign(I, { row: j }, jStat.add(Ij, cIi));\n })\n });\n return I;\n }\n\n function qr_solve(A, b){\n var array_mode = false;\n if (b[0].length === undefined) {\n // [c1,c2,c3] mode\n b = b.map(function(x){ return [x] });\n array_mode = true;\n }\n var QR = jStat.QR(A);\n var Q = QR[0];\n var R = QR[1];\n var attrs = A[0].length;\n var Q1 = jStat.slice(Q,{col:{end:attrs}});\n var R1 = jStat.slice(R,{row:{end:attrs}});\n var RI = R_I(R1);\n var Q2 = jStat.transpose(Q1);\n\n if(Q2[0].length === undefined){\n Q2 = [Q2]; // The confusing jStat.multifly implementation threat nature process again.\n }\n\n var x = jStat.multiply(jStat.multiply(RI, Q2), b);\n\n if(x.length === undefined){\n x = [[x]]; // The confusing jStat.multifly implementation threat nature process again.\n }\n\n\n if (array_mode)\n return x.map(function(i){ return i[0] });\n return x;\n }\n\n return qr_solve;\n }()),\n\n jacobi: function jacobi(a) {\n var condition = 1;\n var n = a.length;\n var e = jStat.identity(n, n);\n var ev = [];\n var b, i, j, p, q, maxim, theta, s;\n // condition === 1 only if tolerance is not reached\n while (condition === 1) {\n maxim = a[0][1];\n p = 0;\n q = 1;\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n if (i != j) {\n if (maxim < Math.abs(a[i][j])) {\n maxim = Math.abs(a[i][j]);\n p = i;\n q = j;\n }\n }\n }\n }\n if (a[p][p] === a[q][q])\n theta = (a[p][q] > 0) ? Math.PI / 4 : -Math.PI / 4;\n else\n theta = Math.atan(2 * a[p][q] / (a[p][p] - a[q][q])) / 2;\n s = jStat.identity(n, n);\n s[p][p] = Math.cos(theta);\n s[p][q] = -Math.sin(theta);\n s[q][p] = Math.sin(theta);\n s[q][q] = Math.cos(theta);\n // eigen vector matrix\n e = jStat.multiply(e, s);\n b = jStat.multiply(jStat.multiply(jStat.inv(s), a), s);\n a = b;\n condition = 0;\n for (i = 1; i < n; i++) {\n for (j = 1; j < n; j++) {\n if (i != j && Math.abs(a[i][j]) > 0.001) {\n condition = 1;\n }\n }\n }\n }\n for (i = 0; i < n; i++) ev.push(a[i][i]);\n //returns both the eigenvalue and eigenmatrix\n return [e, ev];\n },\n\n rungekutta: function rungekutta(f, h, p, t_j, u_j, order) {\n var k1, k2, u_j1, k3, k4;\n if (order === 2) {\n while (t_j <= p) {\n k1 = h * f(t_j, u_j);\n k2 = h * f(t_j + h, u_j + k1);\n u_j1 = u_j + (k1 + k2) / 2;\n u_j = u_j1;\n t_j = t_j + h;\n }\n }\n if (order === 4) {\n while (t_j <= p) {\n k1 = h * f(t_j, u_j);\n k2 = h * f(t_j + h / 2, u_j + k1 / 2);\n k3 = h * f(t_j + h / 2, u_j + k2 / 2);\n k4 = h * f(t_j +h, u_j + k3);\n u_j1 = u_j + (k1 + 2 * k2 + 2 * k3 + k4) / 6;\n u_j = u_j1;\n t_j = t_j + h;\n }\n }\n return u_j;\n },\n\n romberg: function romberg(f, a, b, order) {\n var i = 0;\n var h = (b - a) / 2;\n var x = [];\n var h1 = [];\n var g = [];\n var m, a1, j, k, I;\n while (i < order / 2) {\n I = f(a);\n for (j = a, k = 0; j <= b; j = j + h, k++) x[k] = j;\n m = x.length;\n for (j = 1; j < m - 1; j++) {\n I += (((j % 2) !== 0) ? 4 : 2) * f(x[j]);\n }\n I = (h / 3) * (I + f(b));\n g[i] = I;\n h /= 2;\n i++;\n }\n a1 = g.length;\n m = 1;\n while (a1 !== 1) {\n for (j = 0; j < a1 - 1; j++)\n h1[j] = ((Math.pow(4, m)) * g[j + 1] - g[j]) / (Math.pow(4, m) - 1);\n a1 = h1.length;\n g = h1;\n h1 = [];\n m++;\n }\n return g;\n },\n\n richardson: function richardson(X, f, x, h) {\n function pos(X, x) {\n var i = 0;\n var n = X.length;\n var p;\n for (; i < n; i++)\n if (X[i] === x) p = i;\n return p;\n }\n var h_min = Math.abs(x - X[pos(X, x) + 1]);\n var i = 0;\n var g = [];\n var h1 = [];\n var y1, y2, m, a, j;\n while (h >= h_min) {\n y1 = pos(X, x + h);\n y2 = pos(X, x);\n g[i] = (f[y1] - 2 * f[y2] + f[2 * y2 - y1]) / (h * h);\n h /= 2;\n i++;\n }\n a = g.length;\n m = 1;\n while (a != 1) {\n for (j = 0; j < a - 1; j++)\n h1[j] = ((Math.pow(4, m)) * g[j + 1] - g[j]) / (Math.pow(4, m) - 1);\n a = h1.length;\n g = h1;\n h1 = [];\n m++;\n }\n return g;\n },\n\n simpson: function simpson(f, a, b, n) {\n var h = (b - a) / n;\n var I = f(a);\n var x = [];\n var j = a;\n var k = 0;\n var i = 1;\n var m;\n for (; j <= b; j = j + h, k++)\n x[k] = j;\n m = x.length;\n for (; i < m - 1; i++) {\n I += ((i % 2 !== 0) ? 4 : 2) * f(x[i]);\n }\n return (h / 3) * (I + f(b));\n },\n\n hermite: function hermite(X, F, dF, value) {\n var n = X.length;\n var p = 0;\n var i = 0;\n var l = [];\n var dl = [];\n var A = [];\n var B = [];\n var j;\n for (; i < n; i++) {\n l[i] = 1;\n for (j = 0; j < n; j++) {\n if (i != j) l[i] *= (value - X[j]) / (X[i] - X[j]);\n }\n dl[i] = 0;\n for (j = 0; j < n; j++) {\n if (i != j) dl[i] += 1 / (X [i] - X[j]);\n }\n A[i] = (1 - 2 * (value - X[i]) * dl[i]) * (l[i] * l[i]);\n B[i] = (value - X[i]) * (l[i] * l[i]);\n p += (A[i] * F[i] + B[i] * dF[i]);\n }\n return p;\n },\n\n lagrange: function lagrange(X, F, value) {\n var p = 0;\n var i = 0;\n var j, l;\n var n = X.length;\n for (; i < n; i++) {\n l = F[i];\n for (j = 0; j < n; j++) {\n // calculating the lagrange polynomial L_i\n if (i != j) l *= (value - X[j]) / (X[i] - X[j]);\n }\n // adding the lagrange polynomials found above\n p += l;\n }\n return p;\n },\n\n cubic_spline: function cubic_spline(X, F, value) {\n var n = X.length;\n var i = 0, j;\n var A = [];\n var B = [];\n var alpha = [];\n var c = [];\n var h = [];\n var b = [];\n var d = [];\n for (; i < n - 1; i++)\n h[i] = X[i + 1] - X[i];\n alpha[0] = 0;\n for (i = 1; i < n - 1; i++) {\n alpha[i] = (3 / h[i]) * (F[i + 1] - F[i]) -\n (3 / h[i-1]) * (F[i] - F[i-1]);\n }\n for (i = 1; i < n - 1; i++) {\n A[i] = [];\n B[i] = [];\n A[i][i-1] = h[i-1];\n A[i][i] = 2 * (h[i - 1] + h[i]);\n A[i][i+1] = h[i];\n B[i][0] = alpha[i];\n }\n c = jStat.multiply(jStat.inv(A), B);\n for (j = 0; j < n - 1; j++) {\n b[j] = (F[j + 1] - F[j]) / h[j] - h[j] * (c[j + 1][0] + 2 * c[j][0]) / 3;\n d[j] = (c[j + 1][0] - c[j][0]) / (3 * h[j]);\n }\n for (j = 0; j < n; j++) {\n if (X[j] > value) break;\n }\n j -= 1;\n return F[j] + (value - X[j]) * b[j] + jStat.sq(value-X[j]) *\n c[j] + (value - X[j]) * jStat.sq(value - X[j]) * d[j];\n },\n\n gauss_quadrature: function gauss_quadrature() {\n throw new Error('gauss_quadrature not yet implemented');\n },\n\n PCA: function PCA(X) {\n var m = X.length;\n var n = X[0].length;\n var i = 0;\n var j, temp1;\n var u = [];\n var D = [];\n var result = [];\n var temp2 = [];\n var Y = [];\n var Bt = [];\n var B = [];\n var C = [];\n var V = [];\n var Vt = [];\n for (i = 0; i < m; i++) {\n u[i] = jStat.sum(X[i]) / n;\n }\n for (i = 0; i < n; i++) {\n B[i] = [];\n for(j = 0; j < m; j++) {\n B[i][j] = X[j][i] - u[j];\n }\n }\n B = jStat.transpose(B);\n for (i = 0; i < m; i++) {\n C[i] = [];\n for (j = 0; j < m; j++) {\n C[i][j] = (jStat.dot([B[i]], [B[j]])) / (n - 1);\n }\n }\n result = jStat.jacobi(C);\n V = result[0];\n D = result[1];\n Vt = jStat.transpose(V);\n for (i = 0; i < D.length; i++) {\n for (j = i; j < D.length; j++) {\n if(D[i] < D[j]) {\n temp1 = D[i];\n D[i] = D[j];\n D[j] = temp1;\n temp2 = Vt[i];\n Vt[i] = Vt[j];\n Vt[j] = temp2;\n }\n }\n }\n Bt = jStat.transpose(B);\n for (i = 0; i < m; i++) {\n Y[i] = [];\n for (j = 0; j < Bt.length; j++) {\n Y[i][j] = jStat.dot([Vt[i]], [Bt[j]]);\n }\n }\n return [X, D, Vt, Y];\n }\n});\n\n// extend jStat.fn with methods that require one argument\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jStat.fn[passfunc] = function(arg, func) {\n var tmpthis = this;\n // check for callback\n if (func) {\n setTimeout(function() {\n func.call(tmpthis, jStat.fn[passfunc].call(tmpthis, arg));\n }, 15);\n return this;\n }\n if (typeof jStat[passfunc](this, arg) === 'number')\n return jStat[passfunc](this, arg);\n else\n return jStat(jStat[passfunc](this, arg));\n };\n }(funcs[i]));\n}('add divide multiply subtract dot pow exp log abs norm angle'.split(' ')));\n\n}(jStat, Math));\n(function(jStat, Math) {\n\nvar slice = [].slice;\nvar isNumber = jStat.utils.isNumber;\nvar isArray = jStat.utils.isArray;\n\n// flag==true denotes use of sample standard deviation\n// Z Statistics\njStat.extend({\n // 2 different parameter lists:\n // (value, mean, sd)\n // (value, array, flag)\n zscore: function zscore() {\n var args = slice.call(arguments);\n if (isNumber(args[1])) {\n return (args[0] - args[1]) / args[2];\n }\n return (args[0] - jStat.mean(args[1])) / jStat.stdev(args[1], args[2]);\n },\n\n // 3 different paramter lists:\n // (value, mean, sd, sides)\n // (zscore, sides)\n // (value, array, sides, flag)\n ztest: function ztest() {\n var args = slice.call(arguments);\n var z;\n if (isArray(args[1])) {\n // (value, array, sides, flag)\n z = jStat.zscore(args[0],args[1],args[3]);\n return (args[2] === 1) ?\n (jStat.normal.cdf(-Math.abs(z), 0, 1)) :\n (jStat.normal.cdf(-Math.abs(z), 0, 1)*2);\n } else {\n if (args.length > 2) {\n // (value, mean, sd, sides)\n z = jStat.zscore(args[0],args[1],args[2]);\n return (args[3] === 1) ?\n (jStat.normal.cdf(-Math.abs(z),0,1)) :\n (jStat.normal.cdf(-Math.abs(z),0,1)* 2);\n } else {\n // (zscore, sides)\n z = args[0];\n return (args[1] === 1) ?\n (jStat.normal.cdf(-Math.abs(z),0,1)) :\n (jStat.normal.cdf(-Math.abs(z),0,1)*2);\n }\n }\n }\n});\n\njStat.extend(jStat.fn, {\n zscore: function zscore(value, flag) {\n return (value - this.mean()) / this.stdev(flag);\n },\n\n ztest: function ztest(value, sides, flag) {\n var zscore = Math.abs(this.zscore(value, flag));\n return (sides === 1) ?\n (jStat.normal.cdf(-zscore, 0, 1)) :\n (jStat.normal.cdf(-zscore, 0, 1) * 2);\n }\n});\n\n// T Statistics\njStat.extend({\n // 2 parameter lists\n // (value, mean, sd, n)\n // (value, array)\n tscore: function tscore() {\n var args = slice.call(arguments);\n return (args.length === 4) ?\n ((args[0] - args[1]) / (args[2] / Math.sqrt(args[3]))) :\n ((args[0] - jStat.mean(args[1])) /\n (jStat.stdev(args[1], true) / Math.sqrt(args[1].length)));\n },\n\n // 3 different paramter lists:\n // (value, mean, sd, n, sides)\n // (tscore, n, sides)\n // (value, array, sides)\n ttest: function ttest() {\n var args = slice.call(arguments);\n var tscore;\n if (args.length === 5) {\n tscore = Math.abs(jStat.tscore(args[0], args[1], args[2], args[3]));\n return (args[4] === 1) ?\n (jStat.studentt.cdf(-tscore, args[3]-1)) :\n (jStat.studentt.cdf(-tscore, args[3]-1)*2);\n }\n if (isNumber(args[1])) {\n tscore = Math.abs(args[0])\n return (args[2] == 1) ?\n (jStat.studentt.cdf(-tscore, args[1]-1)) :\n (jStat.studentt.cdf(-tscore, args[1]-1) * 2);\n }\n tscore = Math.abs(jStat.tscore(args[0], args[1]))\n return (args[2] == 1) ?\n (jStat.studentt.cdf(-tscore, args[1].length-1)) :\n (jStat.studentt.cdf(-tscore, args[1].length-1) * 2);\n }\n});\n\njStat.extend(jStat.fn, {\n tscore: function tscore(value) {\n return (value - this.mean()) / (this.stdev(true) / Math.sqrt(this.cols()));\n },\n\n ttest: function ttest(value, sides) {\n return (sides === 1) ?\n (1 - jStat.studentt.cdf(Math.abs(this.tscore(value)), this.cols()-1)) :\n (jStat.studentt.cdf(-Math.abs(this.tscore(value)), this.cols()-1)*2);\n }\n});\n\n// F Statistics\njStat.extend({\n // Paramter list is as follows:\n // (array1, array2, array3, ...)\n // or it is an array of arrays\n // array of arrays conversion\n anovafscore: function anovafscore() {\n var args = slice.call(arguments),\n expVar, sample, sampMean, sampSampMean, tmpargs, unexpVar, i, j;\n if (args.length === 1) {\n tmpargs = new Array(args[0].length);\n for (i = 0; i < args[0].length; i++) {\n tmpargs[i] = args[0][i];\n }\n args = tmpargs;\n }\n // Builds sample array\n sample = new Array();\n for (i = 0; i < args.length; i++) {\n sample = sample.concat(args[i]);\n }\n sampMean = jStat.mean(sample);\n // Computes the explained variance\n expVar = 0;\n for (i = 0; i < args.length; i++) {\n expVar = expVar + args[i].length * Math.pow(jStat.mean(args[i]) - sampMean, 2);\n }\n expVar /= (args.length - 1);\n // Computes unexplained variance\n unexpVar = 0;\n for (i = 0; i < args.length; i++) {\n sampSampMean = jStat.mean(args[i]);\n for (j = 0; j < args[i].length; j++) {\n unexpVar += Math.pow(args[i][j] - sampSampMean, 2);\n }\n }\n unexpVar /= (sample.length - args.length);\n return expVar / unexpVar;\n },\n\n // 2 different paramter setups\n // (array1, array2, array3, ...)\n // (anovafscore, df1, df2)\n anovaftest: function anovaftest() {\n var args = slice.call(arguments),\n df1, df2, n, i;\n if (isNumber(args[0])) {\n return 1 - jStat.centralF.cdf(args[0], args[1], args[2]);\n }\n var anovafscore = jStat.anovafscore(args);\n df1 = args.length - 1;\n n = 0;\n for (i = 0; i < args.length; i++) {\n n = n + args[i].length;\n }\n df2 = n - df1 - 1;\n return 1 - jStat.centralF.cdf(anovafscore, df1, df2);\n },\n\n ftest: function ftest(fscore, df1, df2) {\n return 1 - jStat.centralF.cdf(fscore, df1, df2);\n }\n});\n\njStat.extend(jStat.fn, {\n anovafscore: function anovafscore() {\n return jStat.anovafscore(this.toArray());\n },\n\n anovaftes: function anovaftes() {\n var n = 0;\n var i;\n for (i = 0; i < this.length; i++) {\n n = n + this[i].length;\n }\n return jStat.ftest(this.anovafscore(), this.length - 1, n - this.length);\n }\n});\n\n// Tukey's range test\njStat.extend({\n // 2 parameter lists\n // (mean1, mean2, n1, n2, sd)\n // (array1, array2, sd)\n qscore: function qscore() {\n var args = slice.call(arguments);\n var mean1, mean2, n1, n2, sd;\n if (isNumber(args[0])) {\n mean1 = args[0];\n mean2 = args[1];\n n1 = args[2];\n n2 = args[3];\n sd = args[4];\n } else {\n mean1 = jStat.mean(args[0]);\n mean2 = jStat.mean(args[1]);\n n1 = args[0].length;\n n2 = args[1].length;\n sd = args[2];\n }\n return Math.abs(mean1 - mean2) / (sd * Math.sqrt((1 / n1 + 1 / n2) / 2));\n },\n\n // 3 different parameter lists:\n // (qscore, n, k)\n // (mean1, mean2, n1, n2, sd, n, k)\n // (array1, array2, sd, n, k)\n qtest: function qtest() {\n var args = slice.call(arguments);\n\n var qscore;\n if (args.length === 3) {\n qscore = args[0];\n args = args.slice(1);\n } else if (args.length === 7) {\n qscore = jStat.qscore(args[0], args[1], args[2], args[3], args[4]);\n args = args.slice(5);\n } else {\n qscore = jStat.qscore(args[0], args[1], args[2]);\n args = args.slice(3);\n }\n\n var n = args[0];\n var k = args[1];\n\n return 1 - jStat.tukey.cdf(qscore, k, n - k);\n },\n\n tukeyhsd: function tukeyhsd(arrays) {\n var sd = jStat.pooledstdev(arrays);\n var means = arrays.map(function (arr) {return jStat.mean(arr);});\n var n = arrays.reduce(function (n, arr) {return n + arr.length;}, 0);\n\n var results = [];\n for (var i = 0; i < arrays.length; ++i) {\n for (var j = i + 1; j < arrays.length; ++j) {\n var p = jStat.qtest(means[i], means[j], arrays[i].length, arrays[j].length, sd, n, arrays.length);\n results.push([[i, j], p]);\n }\n }\n\n return results;\n }\n});\n\n// Error Bounds\njStat.extend({\n // 2 different parameter setups\n // (value, alpha, sd, n)\n // (value, alpha, array)\n normalci: function normalci() {\n var args = slice.call(arguments),\n ans = new Array(2),\n change;\n if (args.length === 4) {\n change = Math.abs(jStat.normal.inv(args[1] / 2, 0, 1) *\n args[2] / Math.sqrt(args[3]));\n } else {\n change = Math.abs(jStat.normal.inv(args[1] / 2, 0, 1) *\n jStat.stdev(args[2]) / Math.sqrt(args[2].length));\n }\n ans[0] = args[0] - change;\n ans[1] = args[0] + change;\n return ans;\n },\n\n // 2 different parameter setups\n // (value, alpha, sd, n)\n // (value, alpha, array)\n tci: function tci() {\n var args = slice.call(arguments),\n ans = new Array(2),\n change;\n if (args.length === 4) {\n change = Math.abs(jStat.studentt.inv(args[1] / 2, args[3] - 1) *\n args[2] / Math.sqrt(args[3]));\n } else {\n change = Math.abs(jStat.studentt.inv(args[1] / 2, args[2].length - 1) *\n jStat.stdev(args[2], true) / Math.sqrt(args[2].length));\n }\n ans[0] = args[0] - change;\n ans[1] = args[0] + change;\n return ans;\n },\n\n significant: function significant(pvalue, alpha) {\n return pvalue < alpha;\n }\n});\n\njStat.extend(jStat.fn, {\n normalci: function normalci(value, alpha) {\n return jStat.normalci(value, alpha, this.toArray());\n },\n\n tci: function tci(value, alpha) {\n return jStat.tci(value, alpha, this.toArray());\n }\n});\n\n// internal method for calculating the z-score for a difference of proportions test\nfunction differenceOfProportions(p1, n1, p2, n2) {\n if (p1 > 1 || p2 > 1 || p1 <= 0 || p2 <= 0) {\n throw new Error(\"Proportions should be greater than 0 and less than 1\")\n }\n var pooled = (p1 * n1 + p2 * n2) / (n1 + n2);\n var se = Math.sqrt(pooled * (1 - pooled) * ((1/n1) + (1/n2)));\n return (p1 - p2) / se;\n}\n\n// Difference of Proportions\njStat.extend(jStat.fn, {\n oneSidedDifferenceOfProportions: function oneSidedDifferenceOfProportions(p1, n1, p2, n2) {\n var z = differenceOfProportions(p1, n1, p2, n2);\n return jStat.ztest(z, 1);\n },\n\n twoSidedDifferenceOfProportions: function twoSidedDifferenceOfProportions(p1, n1, p2, n2) {\n var z = differenceOfProportions(p1, n1, p2, n2);\n return jStat.ztest(z, 2);\n }\n});\n\n}(jStat, Math));\njStat.models = (function(){\n function sub_regress(exog) {\n var var_count = exog[0].length;\n var modelList = jStat.arange(var_count).map(function(endog_index) {\n var exog_index =\n jStat.arange(var_count).filter(function(i){return i!==endog_index});\n return ols(jStat.col(exog, endog_index).map(function(x){ return x[0] }),\n jStat.col(exog, exog_index))\n });\n return modelList;\n }\n\n // do OLS model regress\n // exog have include const columns ,it will not generate it .In fact, exog is\n // \"design matrix\" look at\n //https://en.wikipedia.org/wiki/Design_matrix\n function ols(endog, exog) {\n var nobs = endog.length;\n var df_model = exog[0].length - 1;\n var df_resid = nobs-df_model - 1;\n var coef = jStat.lstsq(exog, endog);\n var predict =\n jStat.multiply(exog, coef.map(function(x) { return [x] }))\n .map(function(p) { return p[0] });\n var resid = jStat.subtract(endog, predict);\n var ybar = jStat.mean(endog);\n // constant cause problem\n // var SST = jStat.sum(endog.map(function(y) {\n // return Math.pow(y-ybar,2);\n // }));\n var SSE = jStat.sum(predict.map(function(f) {\n return Math.pow(f - ybar, 2);\n }));\n var SSR = jStat.sum(endog.map(function(y, i) {\n return Math.pow(y - predict[i], 2);\n }));\n var SST = SSE + SSR;\n var R2 = (SSE / SST);\n return {\n exog:exog,\n endog:endog,\n nobs:nobs,\n df_model:df_model,\n df_resid:df_resid,\n coef:coef,\n predict:predict,\n resid:resid,\n ybar:ybar,\n SST:SST,\n SSE:SSE,\n SSR:SSR,\n R2:R2\n };\n }\n\n // H0: b_I=0\n // H1: b_I!=0\n function t_test(model) {\n var subModelList = sub_regress(model.exog);\n //var sigmaHat=jStat.stdev(model.resid);\n var sigmaHat = Math.sqrt(model.SSR / (model.df_resid));\n var seBetaHat = subModelList.map(function(mod) {\n var SST = mod.SST;\n var R2 = mod.R2;\n return sigmaHat / Math.sqrt(SST * (1 - R2));\n });\n var tStatistic = model.coef.map(function(coef, i) {\n return (coef - 0) / seBetaHat[i];\n });\n var pValue = tStatistic.map(function(t) {\n var leftppf = jStat.studentt.cdf(t, model.df_resid);\n return (leftppf > 0.5 ? 1 - leftppf : leftppf) * 2;\n });\n var c = jStat.studentt.inv(0.975, model.df_resid);\n var interval95 = model.coef.map(function(coef, i) {\n var d = c * seBetaHat[i];\n return [coef - d, coef + d];\n })\n return {\n se: seBetaHat,\n t: tStatistic,\n p: pValue,\n sigmaHat: sigmaHat,\n interval95: interval95\n };\n }\n\n function F_test(model) {\n var F_statistic =\n (model.R2 / model.df_model) / ((1 - model.R2) / model.df_resid);\n var fcdf = function(x, n1, n2) {\n return jStat.beta.cdf(x / (n2 / n1 + x), n1 / 2, n2 / 2)\n }\n var pvalue = 1 - fcdf(F_statistic, model.df_model, model.df_resid);\n return { F_statistic: F_statistic, pvalue: pvalue };\n }\n\n function ols_wrap(endog, exog) {\n var model = ols(endog,exog);\n var ttest = t_test(model);\n var ftest = F_test(model);\n // Provide the Wherry / Ezekiel / McNemar / Cohen Adjusted R^2\n // Which matches the 'adjusted R^2' provided by R's lm package\n var adjust_R2 =\n 1 - (1 - model.R2) * ((model.nobs - 1) / (model.df_resid));\n model.t = ttest;\n model.f = ftest;\n model.adjust_R2 = adjust_R2;\n return model;\n }\n\n return { ols: ols_wrap };\n})();\n//To regress, simply build X matrix\n//(append column of 1's) using\n//buildxmatrix and build the Y\n//matrix using buildymatrix\n//(simply the transpose)\n//and run regress.\n\n\n\n//Regressions\n\njStat.extend({\n buildxmatrix: function buildxmatrix(){\n //Parameters will be passed in as such\n //(array1,array2,array3,...)\n //as (x1,x2,x3,...)\n //needs to be (1,x1,x2,x3,...)\n var matrixRows = new Array(arguments.length);\n for(var i=0;i<arguments.length;i++){\n var array = [1];\n matrixRows[i]= array.concat(arguments[i]);\n }\n return jStat(matrixRows);\n\n },\n\n builddxmatrix: function builddxmatrix() {\n //Paramters will be passed in as such\n //([array1,array2,...]\n var matrixRows = new Array(arguments[0].length);\n for(var i=0;i<arguments[0].length;i++){\n var array = [1]\n matrixRows[i]= array.concat(arguments[0][i]);\n }\n return jStat(matrixRows);\n\n },\n\n buildjxmatrix: function buildjxmatrix(jMat) {\n //Builds from jStat Matrix\n var pass = new Array(jMat.length)\n for(var i=0;i<jMat.length;i++){\n pass[i] = jMat[i];\n }\n return jStat.builddxmatrix(pass);\n\n },\n\n buildymatrix: function buildymatrix(array){\n return jStat(array).transpose();\n },\n\n buildjymatrix: function buildjymatrix(jMat){\n return jMat.transpose();\n },\n\n matrixmult: function matrixmult(A,B){\n var i, j, k, result, sum;\n if (A.cols() == B.rows()) {\n if(B.rows()>1){\n result = [];\n for (i = 0; i < A.rows(); i++) {\n result[i] = [];\n for (j = 0; j < B.cols(); j++) {\n sum = 0;\n for (k = 0; k < A.cols(); k++) {\n sum += A.toArray()[i][k] * B.toArray()[k][j];\n }\n result[i][j] = sum;\n }\n }\n return jStat(result);\n }\n result = [];\n for (i = 0; i < A.rows(); i++) {\n result[i] = [];\n for (j = 0; j < B.cols(); j++) {\n sum = 0;\n for (k = 0; k < A.cols(); k++) {\n sum += A.toArray()[i][k] * B.toArray()[j];\n }\n result[i][j] = sum;\n }\n }\n return jStat(result);\n }\n },\n\n //regress and regresst to be fixed\n\n regress: function regress(jMatX,jMatY){\n //print(\"regressin!\");\n //print(jMatX.toArray());\n var innerinv = jStat.xtranspxinv(jMatX);\n //print(innerinv);\n var xtransp = jMatX.transpose();\n var next = jStat.matrixmult(jStat(innerinv),xtransp);\n return jStat.matrixmult(next,jMatY);\n\n },\n\n regresst: function regresst(jMatX,jMatY,sides){\n var beta = jStat.regress(jMatX,jMatY);\n\n var compile = {};\n compile.anova = {};\n var jMatYBar = jStat.jMatYBar(jMatX, beta);\n compile.yBar = jMatYBar;\n var yAverage = jMatY.mean();\n compile.anova.residuals = jStat.residuals(jMatY, jMatYBar);\n\n compile.anova.ssr = jStat.ssr(jMatYBar, yAverage);\n compile.anova.msr = compile.anova.ssr / (jMatX[0].length - 1);\n\n compile.anova.sse = jStat.sse(jMatY, jMatYBar);\n compile.anova.mse =\n compile.anova.sse / (jMatY.length - (jMatX[0].length - 1) - 1);\n\n compile.anova.sst = jStat.sst(jMatY, yAverage);\n compile.anova.mst = compile.anova.sst / (jMatY.length - 1);\n\n compile.anova.r2 = 1 - (compile.anova.sse / compile.anova.sst);\n if (compile.anova.r2 < 0) compile.anova.r2 = 0;\n\n compile.anova.fratio = compile.anova.msr / compile.anova.mse;\n compile.anova.pvalue =\n jStat.anovaftest(compile.anova.fratio,\n jMatX[0].length - 1,\n jMatY.length - (jMatX[0].length - 1) - 1);\n\n compile.anova.rmse = Math.sqrt(compile.anova.mse);\n\n compile.anova.r2adj = 1 - (compile.anova.mse / compile.anova.mst);\n if (compile.anova.r2adj < 0) compile.anova.r2adj = 0;\n\n compile.stats = new Array(jMatX[0].length);\n var covar = jStat.xtranspxinv(jMatX);\n var sds, ts, ps;\n\n for(var i=0; i<beta.length;i++){\n sds=Math.sqrt(compile.anova.mse * Math.abs(covar[i][i]));\n ts= Math.abs(beta[i] / sds);\n ps= jStat.ttest(ts, jMatY.length - jMatX[0].length - 1, sides);\n\n compile.stats[i]=[beta[i], sds, ts, ps];\n }\n\n compile.regress = beta;\n return compile;\n },\n\n xtranspx: function xtranspx(jMatX){\n return jStat.matrixmult(jMatX.transpose(),jMatX);\n },\n\n\n xtranspxinv: function xtranspxinv(jMatX){\n var inner = jStat.matrixmult(jMatX.transpose(),jMatX);\n var innerinv = jStat.inv(inner);\n return innerinv;\n },\n\n jMatYBar: function jMatYBar(jMatX, beta) {\n var yBar = jStat.matrixmult(jMatX, beta);\n return new jStat(yBar);\n },\n\n residuals: function residuals(jMatY, jMatYBar) {\n return jStat.matrixsubtract(jMatY, jMatYBar);\n },\n\n ssr: function ssr(jMatYBar, yAverage) {\n var ssr = 0;\n for(var i = 0; i < jMatYBar.length; i++) {\n ssr += Math.pow(jMatYBar[i] - yAverage, 2);\n }\n return ssr;\n },\n\n sse: function sse(jMatY, jMatYBar) {\n var sse = 0;\n for(var i = 0; i < jMatY.length; i++) {\n sse += Math.pow(jMatY[i] - jMatYBar[i], 2);\n }\n return sse;\n },\n\n sst: function sst(jMatY, yAverage) {\n var sst = 0;\n for(var i = 0; i < jMatY.length; i++) {\n sst += Math.pow(jMatY[i] - yAverage, 2);\n }\n return sst;\n },\n\n matrixsubtract: function matrixsubtract(A,B){\n var ans = new Array(A.length);\n for(var i=0;i<A.length;i++){\n ans[i] = new Array(A[i].length);\n for(var j=0;j<A[i].length;j++){\n ans[i][j]=A[i][j]-B[i][j];\n }\n }\n return jStat(ans);\n }\n});\n // Make it compatible with previous version.\n jStat.jStat = jStat;\n\n return jStat;\n});\n","\nimport jStat from 'jstat';\n\n/*\n SDTMath Static Class - Not intended for instantiation!\n\n Variables:\n H = hits\n M = misses\n FA = false alarms\n CR = correct rejections\n HR = hit rate\n zHR = Z-transformed hit rate\n FAR = false alarm rate\n zFAR = Z-transformed false alarm rate\n ACC = accuracy\n PPV = positive predictive value\n FOMR = false omission rate (used FOMR to avoid keyword FOR!)\n d = sensitivity (d' for equal variance, d_a for unequal variance)\n c = response bias (c for equal variance, c_a for unequal variance)\n s = standard deviation of signal distribution, with standard deviation of noise distribution = 1\n muN = mean of noise distribution\n muS = mean of signal distribution\n l = lambda, threshold location, with l = 0 indicating no response bias\n h = height of signal distribution\n\n Functions:\n Z = z-score\n Z^-1 = inverse z-score\n\n Equations (* = unequal variance):\n HR = H / (H + M)\n FAR = FA / (FA + CR)\n ACC = (H + CR) / (H + M + FA + CR)\n ACC = (HR + (1 - FAR)) / 2\n PPV = H / (H + FA)\n FOMR = M / (M + CR)\n\n d' = Z^-1(HR) - Z^-1(FAR)\n *d' = (2 / (s^2 + 1))^(1/2) * (s * Z^-1(HR) - Z^-1(FAR))\n\n c = -(Z^-1(HR) + Z^-1(FAR))/2\n *c = (2 / (s^2 + 1))^(1/2) * (s / s + 1) * -(Z^-1(HR) + Z^-1(FAR))\n\n HR = Z(d'/2 - c)\n *HR = Z(((s^2 + 1) / 2)^(1/2) * (d' / (s + 1) - c / s))\n\n FAR = Z(-d'/2 - c)\n *FAR = Z(((s^2 + 1) / 2)^(1/2) * -(d' / (s + 1) + c))\n\n HR = Z(d' + Z^-1(FAR))\n *HR = Z(((s^2 + 1) / 2)^(1/2) * d' + Z^-1(FAR) / s)\n\n HR = Z(-2c - Z^-1(FAR))\n *HR = Z(-((s^2 + 1) / 2)^(1/2) * ((s + 1) / s) * c - Z^-1(FAR))\n\n muN = -d'/2\n *muN = -((s^2 + 1) / 2)^(1/2) * (1 / (s + 1)) * d'\n\n d' = -2 * muN\n *d' = -(2 / (s^2 + 1))^(1/2) * (s + 1) * muN\n\n muS = d'/2\n *muS = ((s^2 + 1) / 2)^(1/2) * (s / (s + 1)) * d'\n\n d' = 2 * muS\n *d' = (2 / (s^2 + 1))^(1/2) * ((s + 1) / s) * muS\n\n l = c\n *l = ((s^2 + 1) / 2)^(1/2) * c\n\n c = l\n *c = (2 / (s^2 + 1))^(1/2) * l\n\n h = 1 / (s * (2 * pi)^(1/2))\n s = 1 / (h * (2 * pi)^(1/2))\n\n zHR = Z(HR)\n\n zFAR = Z(FAR)\n\n HR = Z^-1(zHR)\n\n FAR = Z^-1(zFAR)\n\n*/\nexport default class SDTMath {\n static hM2Hr(h, m) {\n if ((h === 0) && (m === 0)) {\n return 0;\n }\n return h / (h + m);\n }\n\n static faCr2Far(fa, cr) {\n if ((fa === 0) && (cr === 0)) {\n return 0;\n }\n return fa / (fa + cr);\n }\n\n static hMFaCr2Acc(h, m, fa, cr) {\n if ((h === 0) && (m === 0) && (fa === 0) && (cr === 0)) {\n return 0;\n }\n return (h + cr) / (h + m + fa + cr);\n }\n\n static hrFar2Acc(hr, far) {\n return (hr + (1 - far)) / 2;\n }\n\n static hFa2Ppv(h, fa) {\n if ((h === 0) && (fa === 0)) {\n return 0;\n }\n return h / (h + fa);\n }\n\n static mCr2Fomr(m, cr) {\n if ((m === 0) && (cr === 0)) {\n return 0;\n }\n return m / (m + cr);\n }\n\n static hrFar2D(hr, far, s = 1) {\n if (s === 1) return (jStat.normal.inv(hr, 0, 1) - jStat.normal.inv(far, 0, 1));\n return (\n Math.sqrt(2 / (s * s + 1))\n * (s * jStat.normal.inv(hr, 0, 1) - jStat.normal.inv(far, 0, 1))\n );\n }\n\n static hrFar2C(hr, far, s = 1) {\n if (s === 1) return (-(jStat.normal.inv(hr, 0, 1) + jStat.normal.inv(far, 0, 1)) / 2);\n return (\n Math.sqrt(2 / (s * s + 1))\n * (s / (s + 1))\n * -(jStat.normal.inv(hr, 0, 1) + jStat.normal.inv(far, 0, 1))\n );\n }\n\n static dC2Hr(d, c, s = 1) {\n if (s === 1) return (jStat.normal.cdf(d / 2 - c, 0, 1));\n return (jStat.normal.cdf(Math.sqrt((s * s + 1) / 2) * (d / (1 + s) - c / s), 0, 1));\n }\n\n static dC2Far(d, c, s = 1) {\n if (s === 1) return (jStat.normal.cdf(-(d / 2 + c), 0, 1));\n return (jStat.normal.cdf(Math.sqrt((s * s + 1) / 2) * -(d / (1 + s) + c), 0, 1));\n }\n\n static dFar2Hr(d, far, s = 1) {\n if (s === 1) return (jStat.normal.cdf(d + jStat.normal.inv(far, 0, 1), 0, 1));\n return (jStat.normal.cdf(\n (Math.sqrt((s * s + 1) / 2) * d + jStat.normal.inv(far, 0, 1)) / s,\n 0,\n 1,\n ));\n }\n\n static cFar2Hr(c, far, s = 1) {\n if (s === 1) return (jStat.normal.cdf(-(2 * c) - jStat.normal.inv(far, 0, 1), 0, 1));\n return (jStat.normal.cdf(\n -Math.sqrt((s * s + 1) / 2) * ((s + 1) / s) * c - jStat.normal.inv(far, 0, 1),\n 0,\n 1,\n ));\n }\n\n static d2MuN(d, s = 1) {\n if (s === 1) return -d / 2;\n return -Math.sqrt((s * s + 1) / 2) * (1 / (s + 1)) * d;\n }\n\n static muN2D(muN, s = 1) {\n if (s === 1) return -2 * muN;\n return -Math.sqrt(2 / (s * s + 1)) * (s + 1) * muN;\n }\n\n static d2MuS(d, s = 1) {\n if (s === 1) return d / 2;\n return Math.sqrt((s * s + 1) / 2) * (s / (s + 1)) * d;\n }\n\n static muS2D(muS, s = 1) {\n if (s === 1) return 2 * muS;\n return Math.sqrt(2 / (s * s + 1)) * ((s + 1) / s) * muS;\n }\n\n static c2L(c, s = 1) {\n if (s === 1) return c;\n return Math.sqrt((s * s + 1) / 2) * c;\n }\n\n static l2C(l, s = 1) {\n if (s === 1) return l;\n return Math.sqrt(2 / (s * s + 1)) * l;\n }\n\n static s2H(s = 1) {\n return 1 / (s * Math.sqrt(2 * Math.PI));\n }\n\n static h2S(h) {\n return 1 / (h * Math.sqrt(2 * Math.PI));\n }\n\n static hr2Zhr(hr) {\n return jStat.normal.inv(hr, 0, 1);\n }\n\n static far2Zfar(far) {\n return jStat.normal.inv(far, 0, 1);\n }\n\n static zhr2Hr(zhr) {\n return jStat.normal.cdf(zhr, 0, 1);\n }\n\n static zfar2Far(zfar) {\n return jStat.normal.cdf(zfar, 0, 1);\n }\n}\n","\nimport {html, css} from 'lit';\nimport * as d3 from 'd3';\n\nimport SDTMath from '@decidables/detectable-math';\n\nimport DetectableElement from '../detectable-element';\n\n/*\n ROCSpace element\n <roc-space>\n\n Attributes:\n FAR; HR;\n d'; C; zFAR; zHR\n\n draggable: yes/no\n\n scale: FAR/HR; zFAR/zHR; d'/C\n grid: FAR/HR; zFAR/zHR; d'/C\n isos: d'; C; FAR; HR\n\n Styles:\n ??\n*/\nexport default class ROCSpace extends DetectableElement {\n static get properties() {\n return {\n contour: {\n attribute: 'contour',\n type: String,\n reflect: true,\n },\n point: {\n attribute: 'point',\n type: String,\n reflect: true,\n },\n isoD: {\n attribute: 'iso-d',\n type: String,\n reflect: true,\n },\n isoC: {\n attribute: 'iso-c',\n type: String,\n reflect: true,\n },\n\n zRoc: {\n attribute: 'z-roc',\n type: Boolean,\n reflect: true,\n },\n\n far: {\n attribute: 'far',\n type: Number,\n reflect: true,\n },\n hr: {\n attribute: 'hr',\n type: Number,\n reflect: true,\n },\n\n d: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n c: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n s: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n\n width: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n height: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n rem: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n\n this.firstUpdate = true;\n this.drag = false;\n this.sdt = false;\n\n this.contours = ['sensitivity', 'bias', 'accuracy'];\n this.contour = undefined;\n this.points = ['all', 'first', 'rest', 'none'];\n this.point = 'all';\n this.isoDs = ['all', 'first', 'rest', 'none'];\n this.isoD = 'first';\n this.isoCs = ['all', 'first', 'rest', 'none'];\n this.isoC = 'first';\n\n this.zRoc = false;\n\n this.far = 0.25;\n this.hr = 0.75;\n\n this.s = 1;\n\n this.label = '';\n\n this.locations = [\n {\n name: 'default',\n far: this.far,\n hr: this.hr,\n s: this.s,\n label: '',\n },\n ];\n\n this.pointArray = [];\n this.isoDArray = [];\n this.isoCArray = [];\n\n this.width = NaN;\n this.height = NaN;\n this.rem = NaN;\n\n this.alignState();\n }\n\n alignState() {\n this.locations[0].hr = this.hr;\n this.locations[0].far = this.far;\n this.locations[0].s = this.s;\n this.locations[0].label = this.label;\n\n this.d = SDTMath.hrFar2D(this.hr, this.far, this.s);\n this.c = SDTMath.hrFar2C(this.hr, this.far, this.s);\n\n this.pointArray = [];\n this.isoDArray = [];\n this.isoCArray = [];\n this.locations.forEach((item, index) => {\n item.d = SDTMath.hrFar2D(item.hr, item.far, item.s);\n item.c = SDTMath.hrFar2C(item.hr, item.far, item.s);\n\n if ((index === 0) && (this.point === 'first' || this.point === 'all')) {\n this.pointArray.push(item);\n } else if ((index > 0) && (this.point === 'rest' || this.point === 'all')) {\n this.pointArray.push(item);\n }\n\n if ((index === 0) && (this.isoD === 'first' || this.isoD === 'all')) {\n this.isoDArray.push(item);\n } else if ((index > 0) && (this.isoD === 'rest' || this.isoD === 'all')) {\n this.isoDArray.push(item);\n }\n\n if ((index === 0) && (this.isoC === 'first' || this.isoC === 'all')) {\n this.isoCArray.push(item);\n } else if ((index > 0) && (this.isoC === 'rest' || this.isoC === 'all')) {\n this.isoCArray.push(item);\n }\n });\n }\n\n set(hr, far, name = 'default', label = '', s = 1) {\n if (name === 'default') {\n this.hr = hr;\n this.far = far;\n this.s = s;\n this.label = label;\n }\n const location = this.locations.find((item) => {\n return (item.name === name);\n });\n if (location === undefined) {\n this.locations.push({\n name: name,\n far: far,\n hr: hr,\n s: s,\n label: label,\n });\n } else {\n location.hr = hr;\n location.far = far;\n location.s = s;\n location.label = label;\n }\n\n this.requestUpdate();\n }\n\n setWithSDT(d, c, name = 'default', label = '', s = 1) {\n if (name === 'default') {\n this.hr = SDTMath.dC2Hr(d, c, s);\n this.far = SDTMath.dC2Far(d, c, s);\n this.s = s;\n this.label = label;\n }\n const location = this.locations.find((item) => {\n return (item.name === name);\n });\n if (location === undefined) {\n this.locations.push({\n name: name,\n far: SDTMath.dC2Far(d, c, s),\n hr: SDTMath.dC2Hr(d, c, s),\n s: s,\n label: label,\n });\n } else {\n location.hr = SDTMath.dC2Hr(d, c, s);\n location.far = SDTMath.dC2Far(d, c, s);\n location.s = s;\n location.label = label;\n }\n\n this.sdt = true;\n this.requestUpdate();\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n\n width: 20rem;\n height: 20rem;\n }\n\n .main {\n width: 100%;\n height: 100%;\n }\n\n .plot-contour,\n .legend-contour .contour {\n stroke: var(---color-background);\n stroke-width: 0.5;\n }\n\n text {\n /* stylelint-disable property-no-vendor-prefix */\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n\n .point.interactive {\n cursor: move;\n\n filter: url(\"#shadow-2\");\n outline: none;\n\n /* HACK: This gets Safari to correctly apply the filter! */\n /* https://github.com/emilbjorklund/svg-weirdness/issues/27 */\n stroke: #000000;\n stroke-opacity: 0;\n stroke-width: 0;\n }\n\n /* Make a larger target for touch users */\n @media (pointer: coarse) {\n .point.interactive .circle {\n stroke: #000000;\n stroke-opacity: 0;\n stroke-width: 12px;\n }\n }\n\n .point.interactive:hover {\n filter: url(\"#shadow-4\");\n\n /* HACK: This gets Safari to correctly apply the filter! */\n stroke: #ff0000;\n }\n\n .point.interactive:active {\n filter: url(\"#shadow-8\");\n\n /* HACK: This gets Safari to correctly apply the filter! */\n stroke: #00ff00;\n }\n\n :host(.keyboard) .point.interactive:focus {\n filter: url(\"#shadow-8\");\n\n /* HACK: This gets Safari to correctly apply the filter! */\n stroke: #0000ff;\n }\n\n .background {\n fill: var(---color-element-background);\n stroke: var(---color-element-border);\n stroke-width: 1;\n shape-rendering: crispEdges;\n }\n\n .title-x,\n .title-y,\n .title-contour {\n font-weight: 600;\n\n fill: currentColor;\n }\n\n .tick {\n font-size: 0.75rem;\n }\n\n .axis-x path,\n .axis-x line,\n .axis-y path,\n .axis-y line {\n stroke: var(---color-element-border);\n }\n\n .axis-contour .domain {\n stroke: none;\n }\n\n .diagonal {\n stroke: var(---color-element-border);\n stroke-dasharray: 4;\n stroke-width: 1;\n }\n\n .curve-iso-d {\n fill: none;\n stroke: var(---color-d);\n stroke-width: 2;\n }\n\n .curve-iso-c {\n fill: none;\n stroke: var(---color-c);\n stroke-width: 2;\n }\n\n .point .circle {\n fill: var(---color-element-emphasis);\n\n /* r: 6; HACK: Firefox does not support CSS SVG Geometry Properties */\n }\n\n .point .label {\n font-size: 0.75rem;\n\n dominant-baseline: middle;\n text-anchor: middle;\n\n fill: var(---color-text-inverse);\n }\n `,\n ];\n }\n\n render() { // eslint-disable-line class-methods-use-this\n return html`\n ${DetectableElement.svgFilters}\n `;\n }\n\n getDimensions() {\n this.width = parseFloat(this.getComputedStyleValue('width'), 10);\n this.height = parseFloat(this.getComputedStyleValue('height'), 10);\n this.rem = parseFloat(getComputedStyle(document.documentElement).getPropertyValue('font-size'), 10);\n // console.log(`roc-space: width = ${this.width}, height = ${this.height}, rem = ${this.rem}`);\n }\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('resize', this.getDimensions.bind(this));\n }\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.getDimensions.bind(this));\n super.disconnectedCallback();\n }\n\n firstUpdated(changedProperties) {\n super.firstUpdated(changedProperties);\n\n // Get the width and height after initial render/update has occurred\n // HACK Edge: Edge doesn't have width/height until after a 0ms timeout\n window.setTimeout(this.getDimensions.bind(this), 0);\n }\n\n update(changedProperties) {\n super.update(changedProperties);\n\n this.alignState();\n\n // Bail out if we can't get the width/height/rem\n if (Number.isNaN(this.width) || Number.isNaN(this.height) || Number.isNaN(this.rem)) {\n return;\n }\n\n const elementWidth = this.width;\n const elementHeight = this.height;\n const elementSize = Math.min(elementWidth, elementHeight);\n\n const margin = {\n top: 2 * this.rem,\n bottom: 3 * this.rem,\n left: 3 * this.rem,\n right: 2 * this.rem,\n };\n const height = elementSize - (margin.top + margin.bottom);\n const width = elementSize - (margin.left + margin.right);\n\n const transitionDuration = parseInt(this.getComputedStyleValue('---transition-duration'), 10);\n\n // X Scale\n const xScale = d3.scaleLinear()\n .domain(this.zRoc ? [-3, 3] : [0, 1]) // zFAR or FAR\n .range([0, width]);\n this.xScale = xScale;\n\n // Y Scale\n const yScale = d3.scaleLinear()\n .domain(this.zRoc ? [3, -3] : [1, 0]) // zHR or HR\n .range([0, height]);\n this.yScale = yScale;\n\n // Drag behavior\n const drag = d3.drag()\n .subject((event, datum) => {\n return {\n x: this.xScale(this.zRoc ? SDTMath.far2Zfar(datum.far) : datum.far),\n y: this.yScale(this.zRoc ? SDTMath.hr2Zhr(datum.hr) : datum.hr),\n };\n })\n .on('start', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', true);\n })\n .on('drag', (event, datum) => {\n this.drag = true;\n const far = this.zRoc\n ? SDTMath.zfar2Far(this.xScale.invert(event.x))\n : this.xScale.invert(event.x);\n const hr = this.zRoc\n ? SDTMath.zhr2Hr(this.yScale.invert(event.y))\n : this.yScale.invert(event.y);\n // Clamp FAR and HR to ROC Space\n datum.far = (far < 0.001)\n ? 0.001\n : ((far > 0.999)\n ? 0.999\n : far);\n datum.hr = (hr <= 0.001)\n ? 0.001\n : (hr >= 0.999)\n ? 0.999\n : hr;\n // console.log(`roc-space.drag: far = ${datum.far}, hr = ${datum.hr}`);\n if (datum.name === 'default') {\n this.far = datum.far;\n this.hr = datum.hr;\n }\n this.alignState();\n this.requestUpdate();\n this.dispatchEvent(new CustomEvent('roc-point-change', {\n detail: {\n name: datum.name,\n far: datum.far,\n hr: datum.hr,\n d: datum.d,\n c: datum.c,\n s: datum.s,\n label: datum.label,\n },\n bubbles: true,\n }));\n })\n .on('end', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', false);\n });\n\n // Line for FAR/HR Space\n const line = d3.line()\n .x((datum) => { return xScale(this.zRoc ? SDTMath.far2Zfar(datum.far) : datum.far); })\n .y((datum) => { return yScale(this.zRoc ? SDTMath.hr2Zhr(datum.hr) : datum.hr); });\n\n // Svg\n // DATA-JOIN\n const svgUpdate = d3.select(this.renderRoot).selectAll('.main')\n .data([{\n width: this.width,\n height: this.height,\n rem: this.rem,\n }]);\n // ENTER\n const svgEnter = svgUpdate.enter().append('svg')\n .classed('main', true);\n // MERGE\n const svgMerge = svgEnter.merge(svgUpdate)\n .attr('viewBox', `0 0 ${elementSize} ${elementSize}`);\n\n // Plot\n // ENTER\n const plotEnter = svgEnter.append('g')\n .classed('plot', true);\n // MERGE\n const plotMerge = svgMerge.select('.plot')\n .attr('transform', `translate(${margin.left}, ${margin.top})`);\n\n // Clippath\n // ENTER\n plotEnter.append('clipPath')\n .attr('id', 'clip-roc-space')\n .append('rect');\n // MERGE\n plotMerge.select('clipPath rect')\n .attr('height', height + 1)\n .attr('width', width + 1);\n\n // Underlayer\n // ENTER\n const underlayerEnter = plotEnter.append('g')\n .classed('underlayer', true);\n // MERGE\n const underlayerMerge = plotMerge.select('.underlayer');\n\n // Background\n // ENTER\n underlayerEnter.append('rect')\n .classed('background', true);\n // MERGE\n underlayerMerge.select('.background')\n .attr('height', height)\n .attr('width', width);\n\n // Contour Plotting\n // Handles: Bias, Sensitivity, & Accuracy\n if (\n this.firstUpdate\n || changedProperties.has('contour')\n || changedProperties.has('zRoc')\n || changedProperties.has('width')\n || changedProperties.has('height')\n || changedProperties.has('rem')\n || changedProperties.has('s')\n ) {\n if (this.contour !== undefined) {\n // Contour Plot\n const n = 100; // Resolution\n const contourValues = [];\n for (let j = 0.5, k = 0; j < n; j += 1) {\n for (let i = 0.5; i < n; i += 1, k += 1) {\n const hr = this.zRoc\n ? SDTMath.zhr2Hr(((i / n) * 6) - 3)\n : i / n;\n const far = this.zRoc\n ? SDTMath.zfar2Far(((1 - j / n) * 6) - 3)\n : (1 - j / n);\n contourValues[k] = (this.contour === 'bias')\n ? SDTMath.hrFar2C(hr, far, this.s)\n : (this.contour === 'sensitivity')\n ? SDTMath.hrFar2D(hr, far, this.s)\n : (this.contour === 'accuracy')\n ? SDTMath.hrFar2Acc(hr, far)\n : null;\n }\n }\n const contourThresholds = (this.contour === 'bias')\n ? d3.range(-3, 3, 0.25)\n : (this.contour === 'sensitivity')\n ? d3.range(-6, 6, 0.5)\n : (this.contour === 'accuracy')\n ? d3.range(0, 1, 0.05)\n : null;\n const contours = d3.contours()\n .size([n, n])\n .thresholds(contourThresholds);\n const contourColorStart = this.getComputedStyleValue((this.contour === 'bias')\n ? '---color-element-background'\n : (this.contour === 'sensitivity')\n ? '---color-d'\n : (this.contour === 'accuracy')\n ? '---color-acc-dark'\n : null);\n const contourColorEnd = this.getComputedStyleValue((this.contour === 'bias')\n ? '---color-c'\n : (this.contour === 'sensitivity')\n ? '---color-element-background'\n : (this.contour === 'accuracy')\n ? '---color-element-background'\n : null);\n const contourColor = d3.scaleLinear()\n .domain(d3.extent(contourThresholds))\n .interpolate(() => { return d3.interpolateRgb(contourColorStart, contourColorEnd); });\n // DATA-JOIN\n const contourPlotUpdate = underlayerMerge.selectAll('.plot-contour')\n .data([this.contour]);\n // ENTER\n const contourPlotEnter = contourPlotUpdate.enter().append('g')\n .classed('plot-contour', true);\n // MERGE\n const contourPlotMerge = contourPlotEnter.merge(contourPlotUpdate);\n\n // Contour Plot Contours\n // DATA-JOIN\n const contoursUpdate = contourPlotMerge.selectAll('.contour')\n .data(contours(contourValues));\n // ENTER\n const contoursEnter = contoursUpdate.enter().append('path')\n .classed('contour', true);\n // MERGE\n contoursEnter.merge(contoursUpdate).transition()\n .duration(transitionDuration * 2) // Extra long transition!\n .ease(d3.easeCubicOut)\n .attr('d', d3.geoPath(d3.geoIdentity().scale(width / n))) // ????\n .attr('fill', (datum) => { return contourColor(datum.value); });\n // EXIT\n contoursUpdate.exit().remove();\n\n // Contour Title\n // DATA-JOIN\n const contourTitleUpdate = underlayerMerge.selectAll('.title-contour')\n .data([this.contour]);\n // ENTER\n const contourTitleEnter = contourTitleUpdate.enter().append('text')\n .classed('title-contour', true)\n .attr('text-anchor', 'middle');\n // MERGE\n contourTitleEnter.merge(contourTitleUpdate)\n .classed('math-var', (this.contour === 'bias') || (this.contour === 'sensitivity'))\n .attr('transform', (this.contour === 'bias')\n ? `translate(${(width + (1.25 * this.rem))}, ${this.rem})`\n : (this.contour === 'sensitivity')\n ? `translate(${(width + (1.25 * this.rem))}, ${this.rem})`\n : (this.contour === 'accuracy')\n ? `translate(${(width + (1.125 * this.rem))}, ${this.rem})`\n : null)\n .text((this.contour === 'bias')\n ? 'c'\n : (this.contour === 'sensitivity')\n ? 'd′'\n : (this.contour === 'accuracy')\n ? 'Acc'\n : null);\n\n // Contour Legend\n const l = 100;\n const contourLegendValues = []; // new Array(4 * l);\n for (let i = 0.5, k = 0; i < l; i += 1, k += 4) {\n contourLegendValues[k] = (this.contour === 'bias')\n ? -(((i / n) * 6) - 3)\n : (this.contour === 'sensitivity')\n ? ((i / n) * 12) - 6\n : (this.contour === 'accuracy')\n ? (i / n)\n : null;\n contourLegendValues[k + 1] = contourLegendValues[k];\n contourLegendValues[k + 2] = contourLegendValues[k];\n contourLegendValues[k + 3] = contourLegendValues[k];\n }\n const legendContours = d3.contours()\n .size([4, l])\n .thresholds(contourThresholds);\n const legendScale = d3.scaleLinear()\n .domain((this.contour === 'bias')\n ? [3, -3]\n : (this.contour === 'sensitivity')\n ? [6, -6]\n : (this.contour === 'accuracy')\n ? [1, 0]\n : null)\n .range([0, (10 * this.rem)]);\n // DATA-JOIN\n const contourLegendUpdate = underlayerMerge.selectAll('.legend-contour')\n .data([this.contour]);\n // ENTER\n const contourLegendEnter = contourLegendUpdate.enter().append('g')\n .classed('legend-contour', true);\n // MERGE\n const contourLegendMerge = contourLegendEnter.merge(contourLegendUpdate)\n .attr('transform', (this.contour === 'bias')\n ? `translate(${(width + (1.25 * this.rem))}, ${(1.5 * this.rem)})`\n : (this.contour === 'sensitivity')\n ? `translate(${(width + (1.25 * this.rem))}, ${(1.5 * this.rem)})`\n : (this.contour === 'accuracy')\n ? `translate(${(width + (1.5 * this.rem))}, ${(1.5 * this.rem)})`\n : null);\n // EXIT\n contourLegendUpdate.exit().remove();\n\n // Contour Legend Axis\n // ENTER\n contourLegendEnter.append('g')\n .classed('axis-contour', true);\n // MERGE\n contourLegendMerge.select('.axis-contour')\n .call(d3.axisLeft(legendScale).ticks(7).tickSize(0))\n .attr('font-size', null)\n .attr('font-family', null);\n\n // Contour Legend Contours\n // DATA-JOIN\n const legendContoursUpdate = contourLegendMerge.selectAll('.contour')\n .data(legendContours(contourLegendValues));\n // ENTER\n const legendContoursEnter = legendContoursUpdate.enter().append('path')\n .classed('contour', true);\n // MERGE\n legendContoursEnter.merge(legendContoursUpdate)\n .attr('d', d3.geoPath(d3.geoIdentity().scale((10 * this.rem) / l))) // ????\n .attr('fill', (datum) => { return contourColor(datum.value); });\n // EXIT\n legendContoursUpdate.exit().remove();\n } else {\n // Contour Plot\n // DATA-JOIN\n const contourPlotUpdate = underlayerMerge.selectAll('.plot-contour')\n .data([]);\n // EXIT\n contourPlotUpdate.exit().remove();\n\n // Contour Title\n // DATA-JOIN\n const contourTitleUpdate = underlayerMerge.selectAll('.title-contour')\n .data([]);\n // EXIT\n contourTitleUpdate.exit().remove();\n\n // Contour Legend\n // DATA-JOIN\n const contourLegendUpdate = underlayerMerge.selectAll('.legend-contour')\n .data([]);\n // EXIT\n contourLegendUpdate.exit().remove();\n }\n }\n\n // X Axis\n // ENTER\n underlayerEnter.append('g')\n .classed('axis-x', true);\n // MERGE\n const axisXMerge = underlayerMerge.select('.axis-x')\n .attr('transform', `translate(0, ${height})`);\n const axisXTransition = axisXMerge.transition()\n .duration(transitionDuration * 2) // Extra long transition!\n .ease(d3.easeCubicOut)\n .call(d3.axisBottom(xScale))\n .attr('font-size', null)\n .attr('font-family', null);\n axisXTransition.selectAll('line, path')\n .attr('stroke', null);\n\n // X Axis Title\n // ENTER\n const titleXEnter = underlayerEnter.append('text')\n .classed('title-x', true)\n .attr('text-anchor', 'middle');\n titleXEnter.append('tspan')\n .classed('z math-var', true);\n titleXEnter.append('tspan')\n .classed('name', true);\n // MERGE\n const titleXMerge = underlayerMerge.select('.title-x')\n .attr('transform', `translate(${(width / 2)}, ${(height + (2.25 * this.rem))})`);\n titleXMerge.select('tspan.z')\n .text(this.zRoc ? 'z' : '');\n titleXMerge.select('tspan.name')\n .text(this.zRoc ? '(False Alarm Rate)' : 'False Alarm Rate');\n\n // Y Axis\n // ENTER\n underlayerEnter.append('g')\n .classed('axis-y', true);\n // MERGE\n const axisYTransition = underlayerMerge.select('.axis-y').transition()\n .duration(transitionDuration * 2) // Extra long transition!\n .ease(d3.easeCubicOut)\n .call(d3.axisLeft(yScale))\n .attr('font-size', null)\n .attr('font-family', null);\n axisYTransition.selectAll('line, path')\n .attr('stroke', null);\n\n // Y Axis Title\n // ENTER\n const titleYEnter = underlayerEnter.append('text')\n .classed('title-y', true)\n .attr('text-anchor', 'middle');\n titleYEnter.append('tspan')\n .classed('z math-var', true);\n titleYEnter.append('tspan')\n .classed('name', true);\n // MERGE\n const titleYMerge = underlayerMerge.select('.title-y')\n .attr('transform', `translate(${-2 * this.rem}, ${(height / 2)})rotate(-90)`);\n titleYMerge.select('tspan.z')\n .text(this.zRoc ? 'z' : '');\n titleYMerge.select('tspan.name')\n .text(this.zRoc ? '(Hit Rate)' : 'Hit Rate');\n\n // No-Information Line\n // ENTER\n underlayerEnter.append('line')\n .classed('diagonal', true);\n // MERGE\n underlayerMerge.select('.diagonal')\n .attr('x1', this.zRoc ? xScale(-3) : xScale(0))\n .attr('y1', this.zRoc ? yScale(-3) : yScale(0))\n .attr('x2', this.zRoc ? xScale(3) : xScale(1))\n .attr('y2', this.zRoc ? yScale(3) : yScale(1));\n\n // Content\n // ENTER\n plotEnter.append('g')\n .classed('content', true);\n // MERGE\n const contentMerge = plotMerge.select('.content');\n\n // Iso-sensitivity Curve\n // DATA-JOIN\n const isoDUpdate = contentMerge.selectAll('.curve-iso-d')\n .data(this.isoDArray, (datum) => { return datum.name; });\n // ENTER\n const isoDEnter = isoDUpdate.enter().append('path')\n .classed('curve-iso-d', true)\n .attr('clip-path', 'url(#clip-roc-space)');\n // MERGE\n const isoDMerge = isoDEnter.merge(isoDUpdate);\n if (this.firstUpdate || changedProperties.has('zRoc')) {\n isoDMerge.transition()\n .duration(this.drag ? 0 : (transitionDuration * 2)) // Extra long transition!\n .ease(d3.easeCubicOut)\n .attr('d', (datum) => {\n return line(d3.range(xScale.range()[0], xScale.range()[1] + 1, 1).map((x) => {\n return {\n far: (this.zRoc\n ? SDTMath.zfar2Far(xScale.invert(x))\n : xScale.invert(x)),\n hr: (this.zRoc\n ? SDTMath.dFar2Hr(datum.d, SDTMath.zfar2Far(xScale.invert(x)), datum.s)\n : SDTMath.dFar2Hr(datum.d, xScale.invert(x), datum.s)),\n };\n }));\n });\n } else if (this.sdt) {\n isoDMerge.transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attrTween('d', (datum, index, elements) => {\n const element = elements[index];\n element.hr = undefined;\n element.far = undefined;\n const interpolateD = d3.interpolate(\n (element.d !== undefined) ? element.d : datum.d,\n datum.d,\n );\n const interpolateS = d3.interpolate(\n (element.s !== undefined) ? element.s : datum.s,\n datum.s,\n );\n return (time) => {\n element.d = interpolateD(time);\n element.s = interpolateS(time);\n const isoD = d3.range(xScale.range()[0], xScale.range()[1] + 1, 1).map((x) => {\n return {\n far: (this.zRoc\n ? SDTMath.zfar2Far(xScale.invert(x))\n : xScale.invert(x)),\n hr: (this.zRoc\n ? SDTMath.dFar2Hr(element.d, SDTMath.zfar2Far(xScale.invert(x)), element.s)\n : SDTMath.dFar2Hr(element.d, xScale.invert(x), element.s)),\n };\n });\n return line(isoD);\n };\n });\n } else {\n isoDMerge.transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attrTween('d', (datum, index, elements) => {\n const element = elements[index];\n element.d = undefined;\n element.s = undefined;\n const interpolateHr = d3.interpolate(\n (element.hr !== undefined) ? element.hr : datum.hr,\n datum.hr,\n );\n const interpolateFar = d3.interpolate(\n (element.far !== undefined) ? element.far : datum.far,\n datum.far,\n );\n return (time) => {\n element.hr = interpolateHr(time);\n element.far = interpolateFar(time);\n const isoD = d3.range(xScale.range()[0], xScale.range()[1] + 1, 1).map((x) => {\n return {\n far: (this.zRoc\n ? SDTMath.zfar2Far(xScale.invert(x))\n : xScale.invert(x)),\n hr: (this.zRoc\n ? SDTMath.dFar2Hr(\n SDTMath.hrFar2D(element.hr, element.far, datum.s),\n SDTMath.zfar2Far(xScale.invert(x)),\n datum.s,\n )\n : SDTMath.dFar2Hr(\n SDTMath.hrFar2D(element.hr, element.far, datum.s),\n xScale.invert(x),\n datum.s,\n )\n ),\n };\n });\n return line(isoD);\n };\n });\n }\n // EXIT\n // NOTE: Could add a transition here\n isoDUpdate.exit().remove();\n\n // Iso-bias Curve\n // DATA-JOIN\n const isoCUpdate = contentMerge.selectAll('.curve-iso-c')\n .data(this.isoCArray, (datum) => { return datum.name; });\n // ENTER\n const isoCEnter = isoCUpdate.enter().append('path')\n .classed('curve-iso-c', true)\n .attr('clip-path', 'url(#clip-roc-space)');\n // MERGE\n const isoCMerge = isoCEnter.merge(isoCUpdate);\n if (this.firstUpdate || changedProperties.has('zRoc')) {\n isoCMerge.transition()\n .duration(this.drag ? 0 : (transitionDuration * 2)) // Extra long transition!\n .ease(d3.easeCubicOut)\n .attr('d', (datum) => {\n return line(d3.range(xScale.range()[0], xScale.range()[1] + 1, 1).map((x) => {\n return {\n far: (this.zRoc\n ? SDTMath.zfar2Far(xScale.invert(x))\n : xScale.invert(x)),\n hr: (this.zRoc\n ? SDTMath.cFar2Hr(datum.c, SDTMath.zfar2Far(xScale.invert(x)), datum.s)\n : SDTMath.cFar2Hr(datum.c, xScale.invert(x), datum.s)),\n };\n }));\n });\n } else if (this.sdt) {\n isoCMerge.transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attrTween('d', (datum, index, elements) => {\n const element = elements[index];\n element.hr = undefined;\n element.far = undefined;\n const interpolateC = d3.interpolate(\n (element.c !== undefined) ? element.c : datum.c,\n datum.c,\n );\n const interpolateS = d3.interpolate(\n (element.s !== undefined) ? element.s : datum.s,\n datum.s,\n );\n return (time) => {\n element.c = interpolateC(time);\n element.s = interpolateS(time);\n const isoC = d3.range(xScale.range()[0], xScale.range()[1] + 1, 1).map((x) => {\n return {\n far: (this.zRoc\n ? SDTMath.zfar2Far(xScale.invert(x))\n : xScale.invert(x)),\n hr: (this.zRoc\n ? SDTMath.cFar2Hr(element.c, SDTMath.zfar2Far(xScale.invert(x)), element.s)\n : SDTMath.cFar2Hr(element.c, xScale.invert(x), element.s)),\n };\n });\n return line(isoC);\n };\n });\n } else {\n isoCMerge.transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attrTween('d', (datum, index, elements) => {\n const element = elements[index];\n element.c = undefined;\n element.s = undefined;\n const interpolateHr = d3.interpolate(\n (element.hr !== undefined) ? element.hr : datum.hr,\n datum.hr,\n );\n const interpolateFar = d3.interpolate(\n (element.far !== undefined) ? element.far : datum.far,\n datum.far,\n );\n return (time) => {\n element.hr = interpolateHr(time);\n element.far = interpolateFar(time);\n const isoC = d3.range(xScale.range()[0], xScale.range()[1] + 1, 1).map((x) => {\n return {\n far: (this.zRoc\n ? SDTMath.zfar2Far(xScale.invert(x))\n : xScale.invert(x)),\n hr: (this.zRoc\n ? SDTMath.cFar2Hr(\n SDTMath.hrFar2C(element.hr, element.far, datum.s),\n SDTMath.zfar2Far(xScale.invert(x)),\n datum.s,\n )\n : SDTMath.cFar2Hr(\n SDTMath.hrFar2C(element.hr, element.far, datum.s),\n xScale.invert(x),\n datum.s,\n )\n ),\n };\n });\n return line(isoC);\n };\n });\n }\n // EXIT\n // NOTE: Could add a transition here\n isoCUpdate.exit().remove();\n\n // Point\n // DATA-JOIN\n const pointUpdate = contentMerge.selectAll('.point')\n .data(this.pointArray, (datum) => { return datum.name; });\n // ENTER\n const pointEnter = pointUpdate.enter().append('g')\n .classed('point', true);\n pointEnter.append('circle')\n .classed('circle', true)\n .attr('r', 6); /* HACK: Firefox does not support CSS SVG Geometry Properties */\n pointEnter.append('text')\n .classed('label', true);\n // MERGE\n const pointMerge = pointEnter.merge(pointUpdate);\n pointMerge.select('text')\n .text((datum) => { return datum.label; });\n if (this.firstUpdate || changedProperties.has('interactive')) {\n if (this.interactive) {\n pointMerge\n .attr('tabindex', 0)\n .classed('interactive', true)\n .call(drag)\n .on('keydown', (event, datum) => {\n if (['ArrowUp', 'ArrowDown', 'ArrowRight', 'ArrowLeft'].includes(event.key)) {\n let hr = this.zRoc ? SDTMath.hr2Zhr(datum.hr) : datum.hr;\n let far = this.zRoc ? SDTMath.far2Zfar(datum.far) : datum.far;\n switch (event.key) {\n case 'ArrowUp':\n hr += this.zRoc\n ? (event.shiftKey ? 0.05 : 0.25)\n : (event.shiftKey ? 0.01 : 0.05);\n break;\n case 'ArrowDown':\n hr -= this.zRoc\n ? (event.shiftKey ? 0.05 : 0.25)\n : (event.shiftKey ? 0.01 : 0.05);\n break;\n case 'ArrowRight':\n far += this.zRoc\n ? (event.shiftKey ? 0.05 : 0.25)\n : (event.shiftKey ? 0.01 : 0.05);\n break;\n case 'ArrowLeft':\n far -= this.zRoc\n ? (event.shiftKey ? 0.05 : 0.25)\n : (event.shiftKey ? 0.01 : 0.05);\n break;\n default:\n // no-op\n }\n hr = this.zRoc ? SDTMath.zhr2Hr(hr) : hr;\n far = this.zRoc ? SDTMath.zfar2Far(far) : far;\n // Clamp FAR and HR to ROC Space\n hr = (hr < 0.001)\n ? 0.001\n : (hr > 0.999)\n ? 0.999\n : hr;\n far = (far < 0.001)\n ? 0.001\n : (far > 0.999)\n ? 0.999\n : far;\n if ((hr !== datum.hr) || (far !== datum.far)) {\n datum.hr = hr;\n datum.far = far;\n if (datum.name === 'default') {\n this.hr = datum.hr;\n this.far = datum.far;\n }\n this.alignState();\n this.requestUpdate();\n this.dispatchEvent(new CustomEvent('roc-point-change', {\n detail: {\n name: datum.name,\n far: datum.far,\n hr: datum.hr,\n d: datum.d,\n c: datum.c,\n s: datum.s,\n label: datum.label,\n },\n bubbles: true,\n }));\n }\n event.preventDefault();\n }\n });\n } else {\n pointMerge\n .attr('tabindex', null)\n .classed('interactive', false)\n .on('drag', null)\n .on('keydown', null);\n }\n }\n if (this.firstUpdate || changedProperties.has('zRoc')) {\n pointMerge.transition()\n .duration(this.drag ? 0 : (transitionDuration * 2)) // Extra long transition!\n .ease(d3.easeCubicOut)\n .attr('transform', (datum, index, elements) => {\n const element = elements[index];\n element.d = undefined;\n element.c = undefined;\n element.s = undefined;\n return `translate(\n ${xScale(this.zRoc ? SDTMath.far2Zfar(datum.far) : datum.far)},\n ${yScale(this.zRoc ? SDTMath.hr2Zhr(datum.hr) : datum.hr)}\n )`;\n });\n } else if (this.sdt) {\n pointMerge.transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attrTween('transform', (datum, index, elements) => {\n const element = elements[index];\n const interpolateD = d3.interpolate(\n (element.d !== undefined) ? element.d : datum.d,\n datum.d,\n );\n const interpolateC = d3.interpolate(\n (element.c !== undefined) ? element.c : datum.c,\n datum.c,\n );\n const interpolateS = d3.interpolate(\n (element.s !== undefined) ? element.s : datum.s,\n datum.s,\n );\n return (time) => {\n element.d = interpolateD(time);\n element.c = interpolateC(time);\n element.s = interpolateS(time);\n return `translate(\n ${xScale(\n this.zRoc\n ? SDTMath.far2Zfar(SDTMath.dC2Far(element.d, element.c, element.s))\n : SDTMath.dC2Far(element.d, element.c, element.s),\n )},\n ${yScale(\n this.zRoc\n ? SDTMath.hr2Zhr(SDTMath.dC2Hr(element.d, element.c, element.s))\n : SDTMath.dC2Hr(element.d, element.c, element.s),\n )}\n )`;\n };\n });\n } else {\n pointMerge.transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('transform', (datum, index, elements) => {\n const element = elements[index];\n element.d = undefined;\n element.c = undefined;\n element.s = undefined;\n return `translate(\n ${xScale(this.zRoc ? SDTMath.far2Zfar(datum.far) : datum.far)},\n ${yScale(this.zRoc ? SDTMath.hr2Zhr(datum.hr) : datum.hr)}\n )`;\n });\n }\n // EXIT\n // NOTE: Could add a transition here\n pointUpdate.exit().remove();\n\n this.drag = false;\n this.sdt = false;\n this.firstUpdate = false;\n }\n}\n\ncustomElements.define('roc-space', ROCSpace);\n","\nimport {html, css} from 'lit';\n\nimport '@decidables/decidables-elements/button';\nimport '@decidables/decidables-elements/slider';\nimport '@decidables/decidables-elements/switch';\nimport '@decidables/decidables-elements/toggle';\nimport '@decidables/decidables-elements/toggle-option';\n\nimport DetectableElement from '../detectable-element';\n\n/*\n DetectableControl element\n <detectable-control>\n\n Attributes:\n\n*/\nexport default class DetectableControl extends DetectableElement {\n static get properties() {\n return {\n trials: {\n attribute: 'trials',\n type: Number,\n reflect: true,\n },\n duration: {\n attribute: 'duration',\n type: Number,\n reflect: true,\n },\n coherence: {\n attribute: 'coherence',\n type: Number,\n reflect: true,\n },\n payoff: {\n attribute: 'payoff',\n type: Number,\n reflect: true,\n },\n color: {\n attribute: 'color',\n type: String,\n reflect: true,\n },\n zRoc: {\n attribute: 'z-roc',\n type: Boolean,\n reflect: true,\n },\n run: {\n attribute: 'run',\n type: Boolean,\n reflect: true,\n },\n pause: {\n attribute: 'pause',\n type: Boolean,\n reflect: true,\n },\n reset: {\n attribute: 'reset',\n type: Boolean,\n reflect: true,\n },\n\n state: {\n atribute: false,\n type: String,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.trials = undefined;\n this.duration = undefined;\n this.coherence = undefined;\n this.payoff = undefined;\n this.colors = ['none', 'accuracy', 'stimulus', 'response', 'outcome'];\n this.color = undefined;\n this.zRoc = undefined;\n this.run = false;\n this.pause = false;\n this.reset = false;\n\n // Properties\n this.states = ['resetted', 'running', 'paused', 'ended'];\n this.state = 'resetted';\n }\n\n setTrials(e) {\n this.trials = e.target.value;\n this.dispatchEvent(new CustomEvent('detectable-control-trials', {\n detail: {\n trials: this.trials,\n },\n bubbles: true,\n }));\n }\n\n setDuration(e) {\n this.duration = e.target.value;\n this.dispatchEvent(new CustomEvent('detectable-control-duration', {\n detail: {\n duration: this.duration,\n },\n bubbles: true,\n }));\n }\n\n setCoherence(e) {\n this.coherence = e.target.value;\n this.dispatchEvent(new CustomEvent('detectable-control-coherence', {\n detail: {\n coherence: this.coherence,\n },\n bubbles: true,\n }));\n }\n\n setPayoff(e) {\n this.payoff = e.target.value;\n this.dispatchEvent(new CustomEvent('detectable-control-payoff', {\n detail: {\n payoff: this.payoff,\n },\n bubbles: true,\n }));\n }\n\n chooseColor(e) {\n this.color = e.target.value;\n this.dispatchEvent(new CustomEvent('detectable-control-color', {\n detail: {\n color: this.color,\n },\n bubbles: true,\n }));\n }\n\n flipZRoc(e) {\n this.zRoc = e.target.checked;\n this.dispatchEvent(new CustomEvent('detectable-control-z-roc', {\n detail: {\n zRoc: this.zRoc,\n },\n bubbles: true,\n }));\n }\n\n doRun() {\n this.state = 'running';\n this.dispatchEvent(new CustomEvent('detectable-control-run', {\n detail: {},\n bubbles: true,\n }));\n }\n\n doPause() {\n this.state = 'paused';\n this.dispatchEvent(new CustomEvent('detectable-control-pause', {\n detail: {},\n bubbles: true,\n }));\n }\n\n doReset() {\n this.state = 'resetted';\n this.dispatchEvent(new CustomEvent('detectable-control-reset', {\n detail: {},\n bubbles: true,\n }));\n }\n\n complete() {\n this.state = 'ended';\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n }\n\n .holder {\n display: flex;\n\n flex-direction: row;\n\n align-items: stretch;\n justify-content: center;\n }\n\n .buttons {\n display: flex;\n\n flex-direction: column;\n\n align-items: stretch;\n justify-content: center;\n }\n\n /* Payoff Slider */\n .payoff {\n --decidables-spinner-prefix: \"$\";\n }\n `,\n ];\n }\n\n render() {\n return html`\n <div class=\"holder\">\n ${this.trials\n ? html`<decidables-slider min=\"1\" max=\"100\" step=\"1\" .value=${this.trials} @change=${this.setTrials.bind(this)} @input=${this.setTrials.bind(this)}>Trials</decidables-slider>`\n : html``}\n ${this.duration\n ? html`<decidables-slider min=\"10\" max=\"2000\" step=\"10\" .value=${this.duration} @change=${this.setDuration.bind(this)} @input=${this.setDuration.bind(this)}>Duration</decidables-slider>`\n : html``}\n ${this.coherence\n ? html`<decidables-slider min=\"0\" max=\"1\" step=\".01\" .value=${this.coherence} @change=${this.setCoherence.bind(this)} @input=${this.setCoherence.bind(this)}>Coherence</decidables-slider>`\n : html``}\n ${this.payoff\n ? html`<decidables-slider class=\"payoff\" min=\"0\" max=\"100\" step=\"1\" .value=${this.payoff} @change=${this.setPayoff.bind(this)} @input=${this.setPayoff.bind(this)}>Payoff</decidables-slider>`\n : html``}\n ${this.color !== undefined\n ? html`\n <decidables-toggle @change=${this.chooseColor.bind(this)}>\n <span slot=\"label\">Emphasis</span>\n <decidables-toggle-option name=${`${this.uniqueId}-color`} value=\"none\" ?checked=${this.color === 'none'}>None</decidables-toggle-option>\n <decidables-toggle-option name=${`${this.uniqueId}-color`} value=\"accuracy\" ?checked=${this.color === 'accuracy'}>Accuracy</decidables-toggle-option>\n <decidables-toggle-option name=${`${this.uniqueId}-color`} value=\"stimulus\" ?checked=${this.color === 'stimulus'}>Stimulus</decidables-toggle-option>\n <decidables-toggle-option name=${`${this.uniqueId}-color`} value=\"response\" ?checked=${this.color === 'response'}>Response</decidables-toggle-option>\n <decidables-toggle-option name=${`${this.uniqueId}-color`} value=\"outcome\" ?checked=${this.color === 'outcome'}>Outcome</decidables-toggle-option>\n </decidables-toggle>\n `\n : html``}\n ${this.zRoc !== undefined\n ? html`\n <decidables-switch ?checked=${this.zRoc} @change=${this.flipZRoc.bind(this)}>\n <span class=\"math-var\">z</span>ROC\n <span slot=\"off-label\">ROC</span>\n </decidables-switch>\n `\n : html``}\n ${this.run || this.pause || this.reset\n ? html`\n <div class=\"buttons\">\n ${this.run\n ? html`<decidables-button name=\"run\" ?disabled=${this.state === 'running' || this.state === 'ended'} @click=${this.doRun.bind(this)}>Run</decidables-button>`\n : html``}\n ${this.pause\n ? html`<decidables-button name=\"pause\" ?disabled=${this.state !== 'running'} @click=${this.doPause.bind(this)}>Pause</decidables-button>`\n : html``}\n ${this.reset\n ? html`<decidables-button name=\"reset\" ?disabled=${this.state === 'resetted'} @click=${this.doReset.bind(this)}>Reset</decidables-button>`\n : html``}\n </div>\n `\n : html``}\n </div>`;\n }\n}\n\ncustomElements.define('detectable-control', DetectableControl);\n","\nimport {html, css} from 'lit';\nimport * as d3 from 'd3';\nimport jStat from 'jstat';\n\nimport SDTMath from '@decidables/detectable-math';\n\nimport DetectableElement from '../detectable-element';\n\n/*\n SDTModel element\n <sdt-model>\n\n Attributes:\n d'; C;\n FAR; HR; zFAR; zHR;\n\n draggable: d'; C;\n highlight: H; M; CR; FA;\n\n Styles:\n ??\n*/\nexport default class SDTModel extends DetectableElement {\n static get properties() {\n return {\n color: {\n attribute: 'color',\n type: String,\n reflect: true,\n },\n distributions: {\n attribute: 'distributions',\n type: Boolean,\n reflect: true,\n },\n threshold: {\n attribute: 'threshold',\n type: Boolean,\n reflect: true,\n },\n unequal: {\n attribute: 'unequal',\n type: Boolean,\n reflect: true,\n },\n sensitivity: {\n attribute: 'sensitivity',\n type: Boolean,\n reflect: true,\n },\n bias: {\n attribute: 'bias',\n type: Boolean,\n reflect: true,\n },\n variance: {\n attribute: 'variance',\n type: Boolean,\n reflect: true,\n },\n histogram: {\n attribute: 'histogram',\n type: Boolean,\n reflect: true,\n },\n d: {\n attribute: 'd',\n type: Number,\n reflect: true,\n },\n c: {\n attribute: 'c',\n type: Number,\n reflect: true,\n },\n s: {\n attribute: 's',\n type: Number,\n reflect: true,\n },\n\n far: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n hr: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n binWidth: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n trials: {\n attribute: false,\n type: Array,\n reflect: false,\n },\n\n width: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n height: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n rem: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n\n constructor() {\n super();\n\n // Attributes\n this.colors = ['outcome', 'response', 'stimulus', 'none']; // Allowable values of 'color'\n this.color = 'outcome'; // How to color distributions and trials\n this.distributions = false; // Show distributions?\n this.threshold = false; // Show threshold?\n this.unequal = false; // Allow unequal variance?\n this.sensitivity = false; // Show d'?\n this.bias = false; // Show c?\n this.variance = false; // Show variance?\n this.histogram = false; // Show histogram?\n\n this.d = 1; // Sensitivity\n this.c = 0; // Bias\n this.s = 1; // Variance\n\n // Properties\n this.binWidth = 0.25; // Histogram bin width in units of evidence\n this.signals = ['present', 'absent']; // Allowable values of trial.signal\n this.responses = ['present', 'absent']; // Allowable values of trial.response\n this.trials = []; // Array of simulated trials\n\n this.width = NaN; // Width of component in pixels\n this.height = NaN; // Height of component in pixels\n this.rem = NaN; // Pixels per rem for component\n\n // Private\n this.muN = NaN; // Mean of noise distribution\n this.muS = NaN; // Mean of signal distribution\n this.l = NaN; // lambda (threshold location)\n this.hS = NaN; // Height of signal distribution\n\n this.binRange = [-3.0, 3.0]; // Range of histogram\n this.h = 0; // Hits\n this.m = 0; // Misses\n this.fa = 0; // False alarms\n this.cr = 0; // Correct rejections\n\n this.firstUpdate = true; // Are we waiting for the first update?\n this.drag = false; // Are we currently dragging?\n\n this.alignState();\n }\n\n reset() {\n this.trials = [];\n this.h = 0;\n this.m = 0;\n this.fa = 0;\n this.cr = 0;\n }\n\n trial(trialNumber, signal, duration, wait, iti) {\n const trial = {};\n trial.new = true;\n trial.paused = false;\n trial.trial = trialNumber;\n trial.signal = signal;\n trial.duration = duration;\n trial.wait = wait;\n trial.iti = iti;\n trial.evidence = jStat.normal.sample(0, 1);\n\n this.alignTrial(trial);\n\n this.trials.push(trial);\n\n this.requestUpdate();\n }\n\n alignTrial(trial) {\n if (trial.signal === 'present') {\n trial.trueEvidence = trial.evidence * this.s + this.muS;\n trial.response = (trial.trueEvidence > this.l) ? 'present' : 'absent';\n trial.outcome = (trial.response === 'present') ? 'h' : 'm';\n } else { // trial.signal == 'absent'\n trial.trueEvidence = trial.evidence + this.muN;\n trial.response = (trial.trueEvidence > this.l) ? 'present' : 'absent';\n trial.outcome = (trial.response === 'present') ? 'fa' : 'cr';\n }\n if (!trial.new) this[trial.outcome] += 1;\n return trial;\n }\n\n alignState() {\n this.far = SDTMath.dC2Far(this.d, this.c, this.s);\n this.hr = SDTMath.dC2Hr(this.d, this.c, this.s);\n\n this.muN = SDTMath.d2MuN(this.d, this.s);\n this.muS = SDTMath.d2MuS(this.d, this.s);\n this.l = SDTMath.c2L(this.c, this.s);\n this.hS = SDTMath.s2H(this.s);\n\n this.h = 0;\n this.m = 0;\n this.fa = 0;\n this.cr = 0;\n for (let i = 0; i < this.trials.length; i += 1) {\n this.alignTrial(this.trials[i]);\n }\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n\n width: 27rem;\n height: 15rem;\n }\n\n .main {\n width: 100%;\n height: 100%;\n }\n\n text {\n /* stylelint-disable property-no-vendor-prefix */\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n\n .tick {\n font-size: 0.75rem;\n }\n\n .axis-x path,\n .axis-x line,\n .axis-y path,\n .axis-y line,\n .axis-y2 path,\n .axis-y2 line {\n stroke: var(---color-element-border);\n }\n\n .noise.interactive,\n .signal.interactive,\n .threshold.interactive {\n cursor: ew-resize;\n\n filter: url(\"#shadow-2\");\n outline: none;\n }\n\n .signal.unequal {\n cursor: ns-resize;\n\n filter: url(\"#shadow-2\");\n outline: none;\n }\n\n .signal.interactive.unequal {\n cursor: move;\n }\n\n .noise.interactive:hover,\n .signal.interactive:hover,\n .signal.unequal:hover,\n .threshold.interactive:hover {\n filter: url(\"#shadow-4\");\n\n /* HACK: This gets Safari to correctly apply the filter! */\n transform: translateX(0);\n }\n\n .noise.interactive:active,\n .signal.interactive:active,\n .signal.unequal:active,\n .threshold.interactive:active {\n filter: url(\"#shadow-8\");\n\n /* HACK: This gets Safari to correctly apply the filter! */\n transform: translateY(0);\n }\n\n :host(.keyboard) .noise.interactive:focus,\n :host(.keyboard) .signal.interactive:focus,\n :host(.keyboard) .signal.unequal:focus,\n :host(.keyboard) .threshold.interactive:focus {\n filter: url(\"#shadow-8\");\n\n /* HACK: This gets Safari to correctly apply the filter! */\n transform: translateZ(0);\n }\n\n .underlayer .background {\n fill: var(---color-element-background);\n stroke: none;\n }\n\n .overlayer .background {\n fill: none;\n stroke: var(---color-element-border);\n stroke-width: 1;\n shape-rendering: crispEdges;\n }\n\n .title-x,\n .title-y,\n .title-y2 {\n font-weight: 600;\n\n fill: currentColor;\n }\n\n .curve-cr,\n .curve-fa,\n .curve-m,\n .curve-h {\n fill-opacity: 0.5;\n stroke: none;\n\n transition: fill var(---transition-duration) ease;\n }\n\n .curve-cr {\n fill: var(---color-cr);\n }\n\n .curve-fa {\n fill: var(---color-fa);\n }\n\n .curve-m {\n fill: var(---color-m);\n }\n\n .curve-h {\n fill: var(---color-h);\n }\n\n :host([color=\"accuracy\"]) .curve-h,\n :host([color=\"accuracy\"]) .curve-cr {\n fill: var(---color-correct);\n }\n\n :host([color=\"accuracy\"]) .curve-m,\n :host([color=\"accuracy\"]) .curve-fa {\n fill: var(---color-error);\n }\n\n :host([color=\"stimulus\"]) .curve-cr,\n :host([color=\"stimulus\"]) .curve-fa {\n fill: var(---color-far);\n }\n\n :host([color=\"stimulus\"]) .curve-m,\n :host([color=\"stimulus\"]) .curve-h {\n fill: var(---color-hr);\n }\n\n :host([color=\"response\"]) .curve-cr,\n :host([color=\"response\"]) .curve-m {\n fill: var(---color-absent);\n }\n\n :host([color=\"response\"]) .curve-fa,\n :host([color=\"response\"]) .curve-h {\n fill: var(---color-present);\n }\n\n :host([color=\"none\"]) .curve-cr,\n :host([color=\"none\"]) .curve-fa,\n :host([color=\"none\"]) .curve-m,\n :host([color=\"none\"]) .curve-h {\n fill: var(---color-element-enabled);\n }\n\n .curve-noise,\n .curve-signal {\n fill: none;\n stroke: var(---color-element-emphasis);\n stroke-width: 2;\n }\n\n .measure-d,\n .measure-c,\n .measure-s {\n pointer-events: none;\n }\n\n .threshold .line {\n stroke: var(---color-element-emphasis);\n stroke-width: 2;\n }\n\n .threshold .handle {\n fill: var(---color-element-emphasis);\n\n /* r: 6; HACK: Firefox does not support CSS SVG Geometry Properties */\n }\n\n /* Make a larger target for touch users */\n @media (pointer: coarse) {\n .threshold.interactive .handle {\n stroke: #000000;\n stroke-opacity: 0;\n stroke-width: 12px;\n }\n }\n\n .measure-d .line,\n .measure-d .cap-left,\n .measure-d .cap-right {\n stroke: var(---color-d);\n stroke-width: 2;\n shape-rendering: crispEdges;\n }\n\n .measure-d .label {\n font-size: 0.75rem;\n\n text-anchor: start;\n fill: currentColor;\n }\n\n .measure-c .line,\n .measure-c .cap-zero {\n stroke: var(---color-c);\n stroke-width: 2;\n shape-rendering: crispEdges;\n }\n\n .measure-c .label {\n font-size: 0.75rem;\n\n fill: currentColor;\n }\n\n .measure-s .line,\n .measure-s .cap-left,\n .measure-s .cap-right {\n stroke: var(---color-s);\n stroke-width: 2;\n shape-rendering: crispEdges;\n }\n\n .measure-s .label {\n font-size: 0.75rem;\n\n text-anchor: middle;\n fill: currentColor;\n }\n `,\n ];\n }\n\n render() { // eslint-disable-line class-methods-use-this\n return html`\n ${DetectableElement.svgFilters}\n `;\n }\n\n sendEvent() {\n this.dispatchEvent(new CustomEvent('sdt-model-change', {\n detail: {\n d: this.d,\n c: this.c,\n s: this.s,\n far: this.far,\n hr: this.hr,\n h: this.h,\n m: this.m,\n fa: this.fa,\n cr: this.cr,\n },\n bubbles: true,\n }));\n }\n\n getDimensions() {\n this.width = parseFloat(this.getComputedStyleValue('width'), 10);\n this.height = parseFloat(this.getComputedStyleValue('height'), 10);\n this.rem = parseFloat(getComputedStyle(document.documentElement).getPropertyValue('font-size'), 10);\n // console.log(`sdt-model: width = ${this.width}, height = ${this.height}, rem = ${this.rem}`);\n }\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('resize', this.getDimensions.bind(this));\n }\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.getDimensions.bind(this));\n super.disconnectedCallback();\n }\n\n firstUpdated(changedProperties) {\n super.firstUpdated(changedProperties);\n\n // Get the width and height after initial render/update has occurred\n // HACK Edge: Edge doesn't have width/height until after a 0ms timeout\n window.setTimeout(this.getDimensions.bind(this), 0);\n }\n\n update(changedProperties) {\n super.update(changedProperties);\n\n this.alignState();\n\n // Bail out if we can't get the width/height\n if (Number.isNaN(this.width) || Number.isNaN(this.height) || Number.isNaN(this.rem)) {\n return;\n }\n\n const hostWidth = this.width;\n const hostHeight = this.height;\n const hostAspectRatio = hostWidth / hostHeight;\n\n const elementAspectRatio = 1.8;\n let elementWidth;\n let elementHeight;\n\n if (hostAspectRatio > elementAspectRatio) {\n elementHeight = hostHeight;\n elementWidth = elementHeight * elementAspectRatio;\n } else {\n elementWidth = hostWidth;\n elementHeight = elementWidth / elementAspectRatio;\n }\n\n const margin = {\n top: 2 * this.rem,\n bottom: 3 * this.rem,\n left: 3 * this.rem,\n right: ((this.histogram && this.distributions) ? 3 : 0.75) * this.rem,\n };\n const height = elementHeight - (margin.top + margin.bottom);\n const width = elementWidth - (margin.left + margin.right);\n\n const transitionDuration = parseInt(this.getComputedStyleValue('---transition-duration'), 10);\n\n // X Scale\n const xScale = d3.scaleLinear()\n .domain([-3, 3]) // Evidence // FIX - no hardcoding\n .range([0, width]);\n\n // Y Scale\n const yScale = d3.scaleLinear()\n .domain([0.5, 0]) // Probability // FIX - no hardcoding\n .range([0, height]);\n\n // 2nd Y Scale\n const strokeWidth = 3; // FIX - no hardcoding\n const binWidth = xScale(this.binWidth) - xScale(0);\n const y2Scale = d3.scaleLinear()\n .domain([height / binWidth, 0]) // Number of Stimuli\n .range([0, height]);\n\n // Threshold Drag behavior\n const dragThreshold = d3.drag()\n .subject(() => {\n return {x: xScale(this.l), y: 0};\n })\n .on('start', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', true);\n })\n .on('drag', (event) => {\n this.drag = true;\n let l = xScale.invert(event.x);\n // Clamp lambda to stay visible\n l = (l < xScale.domain()[0])\n ? xScale.domain()[0]\n : (l > xScale.domain()[1])\n ? xScale.domain()[1]\n : l;\n this.c = SDTMath.l2C(l, this.s);\n this.alignState();\n this.sendEvent();\n })\n .on('end', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', false);\n });\n\n // Noise Curve Drag behavior\n const dragNoise = d3.drag()\n .subject(() => {\n return {x: xScale(this.muN), y: 0};\n })\n .on('start', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', true);\n })\n .on('drag', (event) => {\n this.drag = true;\n let muN = xScale.invert(event.x);\n // Clamp Noise Curve to stay visible\n muN = (muN < xScale.domain()[0])\n ? xScale.domain()[0]\n : (muN > xScale.domain()[1])\n ? xScale.domain()[1]\n : muN;\n this.d = SDTMath.muN2D(muN, this.s);\n this.alignState();\n this.sendEvent();\n })\n .on('end', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', false);\n });\n\n // Signal+Noise Curve Drag behavior\n const dragSignal = d3.drag()\n .subject(() => {\n return {x: xScale(this.muS), y: yScale(this.hS)};\n })\n .on('start', (event, datum) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', true);\n datum.startX = event.x;\n datum.startY = event.y;\n datum.startHS = this.hS;\n datum.startMuS = this.muS;\n })\n .on('drag', (event, datum) => {\n this.drag = true;\n let muS = this.muS; // eslint-disable-line prefer-destructuring\n if (this.interactive) {\n muS = xScale.invert(event.x);\n // Clamp Signal Curve to stay visible\n muS = (muS < xScale.domain()[0])\n ? xScale.domain()[0]\n : (muS > xScale.domain()[1])\n ? xScale.domain()[1]\n : muS;\n }\n let hS = this.hS; // eslint-disable-line prefer-destructuring\n if (this.unequal) {\n hS = yScale.invert(event.y);\n // Clamp Signal Curve to stay visible\n hS = (hS < 0.01)\n ? 0.01\n : (hS > yScale.domain()[0])\n ? yScale.domain()[0]\n : hS;\n }\n if (this.interactive && this.unequal) {\n // Use shift key as modifier for single dimension\n if (event.sourceEvent.shiftKey) {\n if (Math.abs(event.x - datum.startX) > Math.abs(event.y - datum.startY)) {\n hS = datum.startHS;\n } else {\n muS = datum.startMuS;\n }\n }\n }\n if (this.unequal) {\n this.s = SDTMath.h2S(hS);\n this.c = SDTMath.l2C(this.l, this.s);\n }\n this.d = SDTMath.muS2D(muS, this.s);\n this.alignState();\n this.sendEvent();\n })\n .on('end', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', false);\n });\n\n // Line for Evidence/Probability Space\n const line = d3.line()\n .x((datum) => { return xScale(datum.e); })\n .y((datum) => { return yScale(datum.p); });\n\n // Svg\n // DATA-JOIN\n const svgUpdate = d3.select(this.renderRoot).selectAll('.main')\n .data([{\n width: this.width,\n height: this.height,\n rem: this.rem,\n }]);\n // ENTER\n const svgEnter = svgUpdate.enter().append('svg')\n .classed('main', true);\n // MERGE\n const svgMerge = svgEnter.merge(svgUpdate)\n .attr('viewBox', `0 0 ${elementWidth} ${elementHeight}`);\n\n // Plot\n // ENTER\n const plotEnter = svgEnter.append('g')\n .classed('plot', true);\n // MERGE\n const plotMerge = svgMerge.select('.plot')\n .attr('transform', `translate(${margin.left}, ${margin.top})`);\n\n // Underlayer\n // ENTER\n const underlayerEnter = plotEnter.append('g')\n .classed('underlayer', true);\n // MERGE\n const underlayerMerge = plotMerge.select('.underlayer');\n\n // Background\n // ENTER\n underlayerEnter.append('rect')\n .classed('background', true);\n // MERGE\n underlayerMerge.select('.background')\n .attr('height', height)\n .attr('width', width);\n\n // X Axis\n // ENTER\n underlayerEnter.append('g')\n .classed('axis-x', true);\n // MERGE\n const axisXMerge = underlayerMerge.select('.axis-x')\n .attr('transform', `translate(0, ${height})`)\n .call(d3.axisBottom(xScale))\n .attr('font-size', null)\n .attr('font-family', null);\n axisXMerge.selectAll('line, path')\n .attr('stroke', null);\n\n // X Axis Title\n // ENTER\n underlayerEnter.append('text')\n .classed('title-x', true)\n .attr('text-anchor', 'middle')\n .text('Evidence');\n // MERGE\n underlayerMerge.select('.title-x')\n .attr('transform', `translate(${width / 2}, ${height + (2.25 * this.rem)})`);\n\n // Y Axis\n // DATA-JOIN\n const axisYUpdate = underlayerMerge.selectAll('.axis-y')\n .data(this.distributions ? [{}] : []);\n // ENTER\n const axisYEnter = axisYUpdate.enter().append('g')\n .classed('axis-y', true);\n // MERGE\n const axisYMerge = axisYEnter.merge(axisYUpdate)\n .call(d3.axisLeft(yScale).ticks(5))\n .attr('font-size', null)\n .attr('font-family', null);\n axisYMerge.selectAll('line, path')\n .attr('stroke', null);\n // EXIT\n axisYUpdate.exit().remove();\n\n // Y Axis Title\n // DATA-JOIN\n const titleYUpdate = underlayerMerge.selectAll('.title-y')\n .data(this.distributions ? [{}] : []);\n // ENTER\n const titleYEnter = titleYUpdate.enter().append('text')\n .classed('title-y', true)\n .attr('text-anchor', 'middle')\n .text('Probability');\n // MERGE\n titleYEnter.merge(titleYUpdate)\n .attr('transform', `translate(${-2 * this.rem}, ${height / 2})rotate(-90)`);\n // EXIT\n titleYUpdate.exit().remove();\n\n // 2nd Y Axis\n // DATA-JOIN\n const axisY2Update = underlayerMerge.selectAll('.axis-y2')\n .data(this.histogram ? [{}] : []);\n // ENTER\n const axisY2Enter = axisY2Update.enter().append('g')\n .classed('axis-y2', true);\n // MERGE\n const axisY2Merge = axisY2Enter.merge(axisY2Update)\n .attr('transform', this.distributions ? `translate(${width}, 0)` : '')\n .call(this.distributions ? d3.axisRight(y2Scale).ticks(10) : d3.axisLeft(y2Scale).ticks(10))\n .attr('font-size', null)\n .attr('font-family', null);\n axisY2Merge.selectAll('line, path')\n .attr('stroke', null);\n // EXIT\n axisY2Update.exit().remove();\n\n // 2nd Y Axis Title\n // DATA-JOIN\n const titleY2Update = underlayerMerge.selectAll('.title-y2')\n .data(this.histogram ? [{}] : []);\n // ENTER\n const titleY2Enter = titleY2Update.enter().append('text')\n .classed('title-y2', true)\n .attr('text-anchor', 'middle')\n .text('Count');\n // MERGE\n titleY2Enter.merge(titleY2Update)\n .attr('transform', this.distributions\n ? `translate(${width + (1.5 * this.rem)}, ${height / 2})rotate(90)`\n : `translate(${-1.5 * this.rem}, ${height / 2})rotate(-90)`);\n // EXIT\n titleY2Update.exit().remove();\n\n // Plot Content\n plotEnter.append('g')\n .classed('content', true);\n // MERGE\n const contentMerge = plotMerge.select('.content');\n\n // Noise & Signal + Noise Distributions\n // DATA-JOIN\n const signalNoiseUpdate = contentMerge.selectAll('.signal-noise')\n .data(this.distributions ? [{}] : []);\n // ENTER\n const signalNoiseEnter = signalNoiseUpdate.enter().append('g')\n .classed('signal-noise', true);\n // MERGE\n const signalNoiseMerge = signalNoiseEnter.merge(signalNoiseUpdate);\n // EXIT\n signalNoiseUpdate.exit().remove();\n\n // Noise Distribution\n // ENTER\n const noiseEnter = signalNoiseEnter.append('g')\n .classed('noise', true);\n // MERGE\n const noiseMerge = signalNoiseMerge.selectAll('.noise')\n .attr('tabindex', this.interactive ? 0 : null)\n .classed('interactive', this.interactive)\n .on('keydown', this.interactive\n ? (event) => {\n if (['ArrowRight', 'ArrowLeft'].includes(event.key)) {\n let muN = this.muN; // eslint-disable-line prefer-destructuring\n switch (event.key) {\n case 'ArrowRight':\n muN += event.shiftKey ? 0.01 : 0.1;\n break;\n case 'ArrowLeft':\n muN -= event.shiftKey ? 0.01 : 0.1;\n break;\n default:\n }\n // Clamp C to visible extent\n muN = (muN < xScale.domain()[0])\n ? xScale.domain()[0]\n : (muN > xScale.domain()[1])\n ? xScale.domain()[1]\n : muN;\n if (muN !== this.muN) {\n this.d = SDTMath.muN2D(muN, this.s);\n this.alignState();\n this.sendEvent();\n }\n event.preventDefault();\n }\n }\n : null);\n if (\n this.firstUpdate\n || changedProperties.has('interactive')\n ) {\n if (this.interactive) {\n noiseMerge.call(dragNoise);\n } else {\n noiseMerge.on('.drag', null);\n }\n }\n\n // CR Curve\n // ENTER\n noiseEnter.append('path')\n .classed('curve-cr', true);\n // MERGE\n noiseMerge.select('.curve-cr').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attrTween('d', (datum, index, elements) => {\n const element = elements[index];\n const interpolateD = d3.interpolate(\n (element.d !== undefined) ? element.d : this.d,\n this.d,\n );\n const interpolateC = d3.interpolate(\n (element.c !== undefined) ? element.c : this.c,\n this.c,\n );\n const interpolateS = d3.interpolate(\n (element.s !== undefined) ? element.s : this.s,\n this.s,\n );\n return (time) => {\n element.d = interpolateD(time);\n element.c = interpolateC(time);\n element.s = interpolateS(time);\n const correctRejections = d3.range(\n xScale.domain()[0],\n SDTMath.c2L(element.c, element.s),\n 0.05,\n ).map((e) => {\n return {\n e: e,\n p: jStat.normal.pdf(e, SDTMath.d2MuN(element.d, element.s), 1),\n };\n });\n correctRejections.push({\n e: SDTMath.c2L(element.c, element.s),\n p: jStat.normal.pdf(\n SDTMath.c2L(element.c, element.s),\n SDTMath.d2MuN(element.d, element.s),\n 1,\n ),\n });\n correctRejections.push({\n e: SDTMath.c2L(element.c, element.s),\n p: 0,\n });\n correctRejections.push({\n e: xScale.domain()[0],\n p: 0,\n });\n return line(correctRejections);\n };\n });\n\n // FA Curve\n // ENTER\n noiseEnter.append('path')\n .classed('curve-fa', true);\n // MERGE\n noiseMerge.select('.curve-fa').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attrTween('d', (datum, index, elements) => {\n const element = elements[index];\n const interpolateD = d3.interpolate(\n (element.d !== undefined) ? element.d : this.d,\n this.d,\n );\n const interpolateC = d3.interpolate(\n (element.c !== undefined) ? element.c : this.c,\n this.c,\n );\n const interpolateS = d3.interpolate(\n (element.s !== undefined) ? element.s : this.s,\n this.s,\n );\n return (time) => {\n element.d = interpolateD(time);\n element.c = interpolateC(time);\n element.s = interpolateS(time);\n const falseAlarms = d3.range(\n SDTMath.c2L(element.c, element.s),\n xScale.domain()[1],\n 0.05,\n ).map((e) => {\n return {\n e: e,\n p: jStat.normal.pdf(e, SDTMath.d2MuN(element.d, element.s), 1),\n };\n });\n falseAlarms.push({\n e: xScale.domain()[1],\n p: jStat.normal.pdf(xScale.domain()[1], SDTMath.d2MuN(element.d, element.s), 1),\n });\n falseAlarms.push({\n e: xScale.domain()[1],\n p: 0,\n });\n falseAlarms.push({\n e: SDTMath.c2L(element.c, element.s),\n p: 0,\n });\n return line(falseAlarms);\n };\n });\n\n // Noise Curve\n // ENTER\n noiseEnter.append('path')\n .classed('curve-noise', true);\n // MERGE\n noiseMerge.select('.curve-noise').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attrTween('d', (datum, index, elements) => {\n const element = elements[index];\n const interpolateD = d3.interpolate(\n (element.d !== undefined) ? element.d : this.d,\n this.d,\n );\n const interpolateS = d3.interpolate(\n (element.s !== undefined) ? element.s : this.s,\n this.s,\n );\n return (time) => {\n element.d = interpolateD(time);\n element.s = interpolateS(time);\n const noise = d3.range(\n xScale.domain()[0],\n xScale.domain()[1],\n 0.05,\n ).map((e) => {\n return {\n e: e,\n p: jStat.normal.pdf(e, SDTMath.d2MuN(element.d, element.s), 1),\n };\n });\n noise.push({\n e: xScale.domain()[1],\n p: jStat.normal.pdf(xScale.domain()[1], SDTMath.d2MuN(element.d, element.s), 1),\n });\n return line(noise);\n };\n });\n\n // Signal + Noise Distribution\n // ENTER\n const signalEnter = signalNoiseEnter.append('g')\n .classed('signal', true);\n // MERGE\n const signalMerge = signalNoiseMerge.selectAll('.signal')\n .attr('tabindex', (this.interactive || this.unequal) ? 0 : null)\n .classed('interactive', this.interactive)\n .classed('unequal', this.unequal)\n .on('keydown.sensitivity', this.interactive\n ? (event) => {\n if (['ArrowRight', 'ArrowLeft'].includes(event.key)) {\n let muS = this.muS; // eslint-disable-line prefer-destructuring\n switch (event.key) {\n case 'ArrowRight':\n muS += event.shiftKey ? 0.01 : 0.1;\n break;\n case 'ArrowLeft':\n muS -= event.shiftKey ? 0.01 : 0.1;\n break;\n default:\n }\n // Clamp C to visible extent\n muS = (muS < xScale.domain()[0])\n ? xScale.domain()[0]\n : (muS > xScale.domain()[1])\n ? xScale.domain()[1]\n : muS;\n if (muS !== this.muS) {\n this.d = SDTMath.muS2D(muS, this.s);\n this.alignState();\n this.sendEvent();\n }\n event.preventDefault();\n }\n }\n : null)\n .on('keydown.variance', this.unequal\n ? (event) => {\n if (['ArrowUp', 'ArrowDown'].includes(event.key)) {\n let hS = this.hS; // eslint-disable-line prefer-destructuring\n switch (event.key) {\n case 'ArrowUp':\n hS += event.shiftKey ? 0.002 : 0.02;\n break;\n case 'ArrowDown':\n hS -= event.shiftKey ? 0.002 : 0.02;\n break;\n default:\n }\n // Clamp s so distribution stays visible\n hS = (hS < 0.01)\n ? 0.01\n : (hS > yScale.domain()[0])\n ? yScale.domain()[0]\n : hS;\n if (hS !== this.hS) {\n this.s = SDTMath.h2S(hS);\n this.d = SDTMath.muN2D(this.muN, this.s);\n this.c = SDTMath.l2C(this.l, this.s);\n this.alignState();\n this.sendEvent();\n }\n event.preventDefault();\n }\n }\n : null);\n if (\n this.firstUpdate\n || changedProperties.has('interactive')\n || changedProperties.has('unequal')\n ) {\n if (this.interactive || this.unequal) {\n signalMerge.call(dragSignal);\n } else {\n signalMerge.on('.drag', null);\n }\n }\n\n // M Curve\n // ENTER\n signalEnter.append('path')\n .classed('curve-m', true);\n // MERGE\n signalMerge.select('.curve-m').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attrTween('d', (datum, index, elements) => {\n const element = elements[index];\n const interpolateD = d3.interpolate(\n (element.d !== undefined) ? element.d : this.d,\n this.d,\n );\n const interpolateC = d3.interpolate(\n (element.c !== undefined) ? element.c : this.c,\n this.c,\n );\n const interpolateS = d3.interpolate(\n (element.s !== undefined) ? element.s : this.s,\n this.s,\n );\n return (time) => {\n element.d = interpolateD(time);\n element.c = interpolateC(time);\n element.s = interpolateS(time);\n const misses = d3.range(\n xScale.domain()[0],\n SDTMath.c2L(element.c, element.s),\n 0.05,\n ).map((e) => {\n return {\n e: e,\n p: jStat.normal.pdf(e, SDTMath.d2MuS(element.d, element.s), element.s),\n };\n });\n misses.push({\n e: SDTMath.c2L(element.c, element.s),\n p: jStat.normal.pdf(\n SDTMath.c2L(element.c, element.s),\n SDTMath.d2MuS(element.d, element.s),\n element.s,\n ),\n });\n misses.push({\n e: SDTMath.c2L(element.c, element.s),\n p: 0,\n });\n misses.push({\n e: xScale.domain()[0],\n p: 0,\n });\n return line(misses);\n };\n });\n\n // H Curve\n // ENTER\n signalEnter.append('path')\n .classed('curve-h', true);\n // MERGE\n signalMerge.select('.curve-h').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attrTween('d', (datum, index, elements) => {\n const element = elements[index];\n const interpolateD = d3.interpolate(\n (element.d !== undefined) ? element.d : this.d,\n this.d,\n );\n const interpolateC = d3.interpolate(\n (element.c !== undefined) ? element.c : this.c,\n this.c,\n );\n const interpolateS = d3.interpolate(\n (element.s !== undefined) ? element.s : this.s,\n this.s,\n );\n return (time) => {\n element.d = interpolateD(time);\n element.c = interpolateC(time);\n element.s = interpolateS(time);\n const hits = d3.range(\n SDTMath.c2L(element.c, element.s),\n xScale.domain()[1],\n 0.05,\n ).map((e) => {\n return {\n e: e,\n p: jStat.normal.pdf(e, SDTMath.d2MuS(element.d, element.s), element.s),\n };\n });\n hits.push({\n e: xScale.domain()[1],\n p: jStat.normal.pdf(\n xScale.domain()[1],\n SDTMath.d2MuS(element.d, element.s),\n element.s,\n ),\n });\n hits.push({\n e: xScale.domain()[1],\n p: 0,\n });\n hits.push({\n e: SDTMath.c2L(element.c, element.s),\n p: 0,\n });\n return line(hits);\n };\n });\n\n // Signal Curve\n // ENTER\n signalEnter.append('path')\n .classed('curve-signal', true);\n // MERGE\n signalMerge.select('.curve-signal').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attrTween('d', (datum, index, elements) => {\n const element = elements[index];\n const interpolateD = d3.interpolate(\n (element.d !== undefined) ? element.d : this.d,\n this.d,\n );\n const interpolateS = d3.interpolate(\n (element.s !== undefined) ? element.s : this.s,\n this.s,\n );\n return (time) => {\n element.d = interpolateD(time);\n element.s = interpolateS(time);\n const signal = d3.range(\n xScale.domain()[0],\n xScale.domain()[1],\n 0.05,\n ).map((e) => {\n return {\n e: e,\n p: jStat.normal.pdf(e, SDTMath.d2MuS(element.d, element.s), element.s),\n };\n });\n signal.push({\n e: xScale.domain()[1],\n p: jStat.normal.pdf(\n xScale.domain()[1],\n SDTMath.d2MuS(element.d, element.s),\n element.s,\n ),\n });\n return line(signal);\n };\n });\n\n // d' Measure\n // DATA-JOIN\n const dUpdate = contentMerge.selectAll('.measure-d')\n .data(this.sensitivity ? [{}] : []);\n // ENTER\n const dEnter = dUpdate.enter().append('g')\n .classed('measure-d', true);\n dEnter.append('line')\n .classed('line', true);\n dEnter.append('line')\n .classed('cap-left', true);\n dEnter.append('line')\n .classed('cap-right', true);\n const dLabel = dEnter.append('text')\n .classed('label', true);\n dLabel.append('tspan')\n .classed('d math-var', true)\n .text('d′');\n dLabel.append('tspan')\n .classed('equals', true)\n .text(' = ');\n dLabel.append('tspan')\n .classed('value', true);\n // MERGE\n const dMerge = dEnter.merge(dUpdate);\n dMerge.select('.line').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', xScale(this.muN))\n .attr('y1', yScale(0.43)) // FIX - no hardcoding\n .attr('x2', xScale(this.muS))\n .attr('y2', yScale(0.43)); // FIX - no hardcoding\n dMerge.select('.cap-left').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', xScale(this.muN))\n .attr('y1', yScale(0.43) + 5) // FIX - no hardcoding\n .attr('x2', xScale(this.muN))\n .attr('y2', yScale(0.43) - 5); // FIX - no hardcoding\n dMerge.select('.cap-right').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', xScale(this.muS))\n .attr('y1', yScale(0.43) + 5) // FIX - no hardcoding\n .attr('x2', xScale(this.muS))\n .attr('y2', yScale(0.43) - 5); // FIX - no hardcoding\n const dLabelTransition = dMerge.select('.label').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x', xScale((this.muN > this.muS) ? this.muN : this.muS) + 5)\n .attr('y', yScale(0.43) + 3); // FIX - no hardcoding\n dLabelTransition.select('.value')\n .tween('text', (datum, index, elements) => {\n const element = elements[index];\n const interpolateD = d3.interpolate(\n (element.d !== undefined) ? element.d : this.d,\n this.d,\n );\n return (time) => {\n element.d = interpolateD(time);\n d3.select(element).text(+(element.d).toFixed(3));\n };\n });\n // EXIT\n dUpdate.exit().remove();\n\n // c Measure\n // DATA-JOIN\n const cUpdate = contentMerge.selectAll('.measure-c')\n .data(this.bias ? [{}] : []);\n // ENTER\n const cEnter = cUpdate.enter().append('g')\n .classed('measure-c', true);\n cEnter.append('line')\n .classed('line', true);\n cEnter.append('line')\n .classed('cap-zero', true);\n const cLabel = cEnter.append('text')\n .classed('label', true);\n cLabel.append('tspan')\n .classed('c math-var', true)\n .text('c');\n cLabel.append('tspan')\n .classed('equals', true)\n .text(' = ');\n cLabel.append('tspan')\n .classed('value', true);\n // MERGE\n const cMerge = cEnter.merge(cUpdate);\n cMerge.select('.line').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', xScale(this.l))\n .attr('y1', yScale(0.47)) // FIX - no hardcoding\n .attr('x2', xScale(0))\n .attr('y2', yScale(0.47)); // FIX - no hardcoding\n cMerge.select('.cap-zero').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', xScale(0))\n .attr('y1', yScale(0.47) + 5) // FIX - no hardcoding\n .attr('x2', xScale(0))\n .attr('y2', yScale(0.47) - 5); // FIX - no hardcoding\n const cLabelTransition = cMerge.select('.label').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x', xScale(0) + ((this.l < 0) ? 5 : -5))\n .attr('y', yScale(0.47) + 3) // FIX - no hardcoding\n .attr('text-anchor', (this.c < 0) ? 'start' : 'end');\n cLabelTransition.select('.value')\n .tween('text', (datum, index, elements) => {\n const element = elements[index];\n const interpolateC = d3.interpolate(\n (element.c !== undefined) ? element.c : this.c,\n this.c,\n );\n return (time) => {\n element.c = interpolateC(time);\n d3.select(element).text(+(element.c).toFixed(3));\n };\n });\n // EXIT\n cUpdate.exit().remove();\n\n // s Measure\n // DATA-JOIN\n const sUpdate = contentMerge.selectAll('.measure-s')\n .data(this.variance ? [{}] : []);\n // ENTER\n const sEnter = sUpdate.enter().append('g')\n .classed('measure-s', true);\n sEnter.append('line')\n .classed('line', true);\n sEnter.append('line')\n .classed('cap-left', true);\n sEnter.append('line')\n .classed('cap-right', true);\n const sLabel = sEnter.append('text')\n .classed('label', true);\n sLabel.append('tspan')\n .classed('s math-var', true)\n .text('σ');\n sLabel.append('tspan')\n .classed('equals', true)\n .text(' = ');\n sLabel.append('tspan')\n .classed('value', true);\n // MERGE\n const sMerge = sEnter.merge(sUpdate);\n sMerge.select('.line').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', xScale(this.muS - this.s))\n .attr('y1', yScale(jStat.normal.pdf(this.s, 0, this.s)) + (10 / this.s)) // FIX - no hardcoding\n .attr('x2', xScale(this.muS + this.s))\n .attr('y2', yScale(jStat.normal.pdf(this.s, 0, this.s)) + (10 / this.s)); // FIX - no hardcoding\n sMerge.select('.cap-left').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', xScale(this.muS - this.s))\n .attr('y1', yScale(jStat.normal.pdf(this.s, 0, this.s)) + (10 / this.s) + 5) // FIX - no hardcoding\n .attr('x2', xScale(this.muS - this.s))\n .attr('y2', yScale(jStat.normal.pdf(this.s, 0, this.s)) + (10 / this.s) - 5); // FIX - no hardcoding\n sMerge.select('.cap-right').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', xScale(this.muS + this.s))\n .attr('y1', yScale(jStat.normal.pdf(this.s, 0, this.s)) + (10 / this.s) + 5) // FIX - no hardcoding\n .attr('x2', xScale(this.muS + this.s))\n .attr('y2', yScale(jStat.normal.pdf(this.s, 0, this.s)) + (10 / this.s) - 5); // FIX - no hardcoding\n const sLabelTransition = sMerge.select('.label').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x', xScale(this.muS))\n .attr('y', yScale(jStat.normal.pdf(this.s, 0, this.s)) + (10 / this.s) - 3); // FIX - no hardcoding\n sLabelTransition.select('.value')\n .tween('text', (datum, index, elements) => {\n const element = elements[index];\n const interpolateS = d3.interpolate(\n (element.s !== undefined) ? element.s : this.s,\n this.s,\n );\n return (time) => {\n element.s = interpolateS(time);\n d3.select(element).text(+(element.s).toFixed(3));\n };\n });\n // EXIT\n sUpdate.exit().remove();\n\n // Threshold Line\n // DATA-JOIN\n const thresholdUpdate = contentMerge.selectAll('.threshold')\n .data(this.threshold ? [{}] : []);\n // ENTER\n const thresholdEnter = thresholdUpdate.enter().append('g')\n .classed('threshold', true);\n thresholdEnter.append('line')\n .classed('line', true);\n thresholdEnter.append('circle')\n .classed('handle', true)\n .attr('r', 6); /* HACK: Firefox does not support CSS SVG Geometry Properties */\n // MERGE\n const thresholdMerge = thresholdEnter.merge(thresholdUpdate)\n .attr('tabindex', this.interactive ? 0 : null)\n .classed('interactive', this.interactive);\n if (\n this.firstUpdate\n || changedProperties.has('interactive')\n ) {\n if (this.interactive) {\n thresholdMerge\n .call(dragThreshold)\n .on('keydown', (event) => {\n if (['ArrowRight', 'ArrowLeft'].includes(event.key)) {\n let l = this.l; // eslint-disable-line prefer-destructuring\n switch (event.key) {\n case 'ArrowRight':\n l += event.shiftKey ? 0.01 : 0.1;\n break;\n case 'ArrowLeft':\n l -= event.shiftKey ? 0.01 : 0.1;\n break;\n default:\n }\n // Clamp C to visible extent\n l = (l < xScale.domain()[0])\n ? xScale.domain()[0]\n : (l > xScale.domain()[1])\n ? xScale.domain()[1]\n : l;\n if (l !== this.l) {\n this.c = SDTMath.l2C(l, this.s);\n this.alignState();\n this.sendEvent();\n }\n event.preventDefault();\n }\n });\n } else {\n thresholdMerge\n .on('drag', null)\n .on('keydown', null);\n }\n }\n thresholdMerge.select('.line').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', xScale(this.l))\n .attr('y1', yScale(0))\n .attr('x2', xScale(this.l))\n .attr('y2', yScale(0.54));\n thresholdMerge.select('.handle').transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('cx', xScale(this.l))\n .attr('cy', yScale(0.54));\n // EXIT\n thresholdUpdate.exit().remove();\n\n // Histogram\n // DATA-JOIN\n const histogramUpdate = contentMerge.selectAll('.histogram')\n .data(this.histogram ? [{}] : []);\n // ENTER\n const histogramEnter = histogramUpdate.enter().append('g')\n .classed('histogram', true);\n // MERGE\n const histogramMerge = histogramEnter.merge(histogramUpdate);\n // EXIT\n histogramUpdate.exit().remove();\n\n // Trials\n if (this.histogram) {\n const histogram = d3.histogram()\n .value((datum) => { return datum.trueEvidence; })\n .domain(xScale.domain())\n .thresholds(d3.range(this.binRange[0], this.binRange[1], this.binWidth));\n const hist = histogram(this.trials);\n let binCountLeft = -1;\n let binCountRight = -1;\n for (let i = 0; i < hist.length; i += 1) {\n for (let j = 0; j < hist[i].length; j += 1) {\n hist[i][j].binValue = hist[i].x0;\n hist[i][j].binCount = j;\n if (i === 0) binCountLeft = j;\n if (i === hist.length - 1) binCountRight = j;\n }\n }\n // Put out-of-range values in extreme left/right bins\n for (let i = 0; i < this.trials.length; i += 1) {\n if (this.trials[i].trueEvidence < this.binRange[0]) {\n binCountLeft += 1;\n this.trials[i].binCount = binCountLeft;\n this.trials[i].binValue = hist[0].x0;\n }\n if (this.trials[i].trueEvidence > this.binRange[1]) {\n binCountRight += 1;\n this.trials[i].binCount = binCountRight;\n this.trials[i].binValue = hist[hist.length - 1].x0;\n }\n }\n // DATA-JOIN\n const trialUpdate = histogramMerge.selectAll('.trial')\n .data(this.trials, (datum) => { return datum.trial; });\n // ENTER\n const trialEnter = trialUpdate.enter().append('rect')\n .attr('stroke-width', strokeWidth)\n .attr('data-new-trial-ease-time', 0) // use 'data-trial-enter'\n .attr('stroke', this.getComputedStyleValue('---color-acc'))\n .attr('fill', this.getComputedStyleValue('---color-acc-light'));\n // MERGE\n const trialMerge = trialEnter.merge(trialUpdate)\n .attr('class', (datum) => { return `trial ${datum.outcome}`; })\n .attr('width', binWidth - strokeWidth)\n .attr('height', binWidth - strokeWidth);\n // MERGE - Active New Trials\n const trialMergeNewActive = trialMerge.filter((datum) => {\n return (datum.new && !datum.paused);\n });\n if (!trialMergeNewActive.empty()) {\n const easeTime = trialMergeNewActive.attr('data-new-trial-ease-time');\n const scaleIn = (time) => {\n return d3.scaleLinear().domain([0, 1]).range([easeTime, 1])(time);\n };\n const scaleOutGenerator = (easeFunction) => {\n return (time) => {\n return d3.scaleLinear()\n .domain([easeFunction(easeTime), 1]).range([0, 1])(easeFunction(time));\n };\n };\n trialMergeNewActive.transition('new')\n .duration((datum) => {\n return Math.floor((datum.duration * 0.75 + datum.wait * 0.25) * (1 - easeTime));\n })\n .ease(scaleIn)\n .attr('data-new-trial-ease-time', 1)\n .attrTween('stroke', (datum, index, elements) => {\n const element = elements[index];\n const interpolator = d3.interpolateRgb(\n element.getAttribute('stroke'),\n (this.color === 'stimulus')\n ? (datum.signal === 'present')\n ? this.getComputedStyleValue('---color-hr')\n : this.getComputedStyleValue('---color-far')\n : (this.color === 'response')\n ? this.getComputedStyleValue(`---color-${datum.response}`)\n : (this.color === 'outcome')\n ? this.getComputedStyleValue(`---color-${datum.outcome}`)\n : this.getComputedStyleValue('---color-acc'),\n );\n return (time) => { return interpolator(scaleOutGenerator(d3.easeCubicIn)(time)); };\n })\n .attrTween('fill', (datum, index, elements) => {\n const element = elements[index];\n const interpolator = d3.interpolateRgb(\n element.getAttribute('fill'),\n (this.color === 'stimulus')\n ? (datum.signal === 'present')\n ? this.getComputedStyleValue('---color-hr-light')\n : this.getComputedStyleValue('---color-far-light')\n : (this.color === 'response')\n ? this.getComputedStyleValue(`---color-${datum.response}-light`)\n : (this.color === 'outcome')\n ? this.getComputedStyleValue(`---color-${datum.outcome}-light`)\n : this.getComputedStyleValue('---color-acc-light'),\n );\n return (time) => { return interpolator(scaleOutGenerator(d3.easeCubicIn)(time)); };\n })\n .attrTween('x', (datum, index, elements) => {\n const element = elements[index];\n const interpolator = d3.interpolate(\n element.getAttribute('x'),\n xScale(datum.binValue) + (strokeWidth / 2),\n );\n return (time) => { return interpolator(scaleOutGenerator(d3.easeCubicOut)(time)); };\n })\n .attrTween('y', (datum, index, elements) => {\n const element = elements[index];\n const interpolator = d3.interpolate(\n element.getAttribute('y'),\n yScale(0) + (strokeWidth / 2) - ((datum.binCount + 1) * binWidth),\n );\n return (time) => { return interpolator(scaleOutGenerator(d3.easeCubicIn)(time)); };\n })\n .on('end', (datum, index, elements) => {\n const element = elements[index];\n element.removeAttribute('data-new-trial-ease-time');\n datum.new = false;\n this.alignTrial(datum);\n this.dispatchEvent(new CustomEvent('detectable-response', {\n detail: {\n stimulus: datum.signal,\n response: datum.response,\n outcome: datum.outcome,\n h: this.h,\n m: this.m,\n fa: this.fa,\n cr: this.cr,\n nr: 0,\n },\n bubbles: true,\n }));\n });\n }\n // MERGE - Paused New Trials\n const trialMergeNewPaused = trialMerge.filter((datum) => {\n return (datum.new && datum.paused);\n });\n if (!trialMergeNewPaused.empty()) {\n const easeTime = trialMergeNewPaused.attr('data-new-trial-ease-time');\n trialMergeNewPaused.transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x', (datum) => {\n const interpolator = d3.interpolate(\n 0,\n xScale(datum.binValue) + (strokeWidth / 2),\n );\n return interpolator(d3.easeCubicOut(easeTime));\n })\n .attr('y', (datum) => {\n const interpolator = d3.interpolate(\n 0,\n yScale(0) + (strokeWidth / 2) - ((datum.binCount + 1) * binWidth),\n );\n return interpolator(d3.easeCubicIn(easeTime));\n })\n .attr('stroke', (datum) => {\n const interpolator = d3.interpolateRgb(\n this.getComputedStyleValue('---color-acc'),\n (this.color === 'stimulus')\n ? (datum.signal === 'present')\n ? this.getComputedStyleValue('---color-hr')\n : this.getComputedStyleValue('---color-far')\n : (this.color === 'response')\n ? this.getComputedStyleValue(`---color-${datum.response}`)\n : (this.color === 'outcome')\n ? this.getComputedStyleValue(`---color-${datum.outcome}`)\n : this.getComputedStyleValue('---color-acc'),\n );\n return interpolator(d3.easeCubicIn(easeTime));\n })\n .attr('fill', (datum) => {\n const interpolator = d3.interpolateRgb(\n this.getComputedStyleValue('---color-acc-light'),\n (this.color === 'stimulus')\n ? (datum.signal === 'present')\n ? this.getComputedStyleValue('---color-hr-light')\n : this.getComputedStyleValue('---color-far-light')\n : (this.color === 'response')\n ? this.getComputedStyleValue(`---color-${datum.response}-light`)\n : (this.color === 'outcome')\n ? this.getComputedStyleValue(`---color-${datum.outcome}-light`)\n : this.getComputedStyleValue('---color-acc-light'),\n );\n return interpolator(d3.easeCubicIn(easeTime));\n });\n }\n // MERGE - Old Trials\n trialMerge.filter((datum) => { return !datum.new; }).transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x', (datum) => {\n return xScale(datum.binValue) + (strokeWidth / 2);\n })\n .attr('y', (datum) => {\n return yScale(0) + (strokeWidth / 2) - ((datum.binCount + 1) * binWidth);\n })\n .attr('stroke', (datum) => {\n return (this.color === 'stimulus')\n ? (datum.signal === 'present')\n ? this.getComputedStyleValue('---color-hr')\n : this.getComputedStyleValue('---color-far')\n : (this.color === 'response')\n ? this.getComputedStyleValue(`---color-${datum.response}`)\n : (this.color === 'outcome')\n ? this.getComputedStyleValue(`---color-${datum.outcome}`)\n : this.getComputedStyleValue('---color-acc');\n })\n .attr('fill', (datum) => {\n return (this.color === 'stimulus')\n ? (datum.signal === 'present')\n ? this.getComputedStyleValue('---color-hr-light')\n : this.getComputedStyleValue('---color-far-light')\n : (this.color === 'response')\n ? this.getComputedStyleValue(`---color-${datum.response}-light`)\n : (this.color === 'outcome')\n ? this.getComputedStyleValue(`---color-${datum.outcome}-light`)\n : this.getComputedStyleValue('---color-acc-light');\n });\n // EXIT\n trialUpdate.exit().transition()\n .duration(transitionDuration)\n .ease(d3.easeLinear)\n .attrTween('stroke', (datum, index, elements) => {\n const element = elements[index];\n const interpolator = d3.interpolateRgb(\n element.getAttribute('stroke'),\n this.getComputedStyleValue('---color-acc'),\n );\n return (time) => { return interpolator(d3.easeCubicIn(time)); };\n })\n .attrTween('fill', (datum, index, elements) => {\n const element = elements[index];\n const interpolator = d3.interpolateRgb(\n element.getAttribute('fill'),\n this.getComputedStyleValue('---color-acc-light'),\n );\n return (time) => { return interpolator(d3.easeCubicIn(time)); };\n })\n .attrTween('x', (datum, index, elements) => {\n const element = elements[index];\n const interpolator = d3.interpolate(element.getAttribute('x'), 0);\n return (time) => { return interpolator(d3.easeCubicIn(time)); };\n })\n .attrTween('y', (datum, index, elements) => {\n const element = elements[index];\n const interpolator = d3.interpolate(element.getAttribute('y'), 0);\n return (time) => { return interpolator(d3.easeCubicOut(time)); };\n })\n .remove();\n }\n\n // Overlayer\n // ENTER\n const overlayerEnter = plotEnter.append('g')\n .classed('overlayer', true);\n // MERGE\n const overlayerMerge = plotMerge.select('.overlayer');\n\n // Background\n // ENTER\n overlayerEnter.append('rect')\n .classed('background', true);\n // MERGE\n overlayerMerge.select('.background')\n .attr('height', height)\n .attr('width', width);\n\n this.drag = false;\n this.firstUpdate = false;\n }\n\n // Called to pause trial animations!\n pauseTrial() {\n const trialNew = d3.select(this.renderRoot).select('.trial[data-new-trial-ease-time]');\n trialNew.interrupt('new');\n trialNew.datum((datum) => {\n datum.paused = true;\n return datum;\n });\n }\n\n // Called to resume trial animations!\n resumeTrial() {\n const trialNew = d3.select(this.renderRoot).select('.trial[data-new-trial-ease-time]');\n trialNew.datum((datum) => {\n datum.paused = false;\n return datum;\n });\n this.requestUpdate();\n }\n}\n\ncustomElements.define('sdt-model', SDTModel);\n","\nimport {html, css} from 'lit';\n\nimport '@decidables/decidables-elements/button';\n\nimport DetectableElement from '../detectable-element';\n\n/*\n DetectableResponse element\n <detectable-response>\n\n Attributes:\n\n*/\nexport default class DetectableResponse extends DetectableElement {\n static get properties() {\n return {\n feedback: {\n attribute: 'feedback',\n type: String,\n reflect: true,\n },\n trial: {\n attribute: 'trial',\n type: Boolean,\n reflect: true,\n },\n payoff: {\n attribute: 'payoff',\n type: String,\n reflect: true,\n },\n hPayoff: {\n attribute: 'hit-payoff',\n type: Number,\n reflect: true,\n },\n mPayoff: {\n attribute: 'miss-payoff',\n type: Number,\n reflect: true,\n },\n faPayoff: {\n attribute: 'false-alarm-payoff',\n type: Number,\n reflect: true,\n },\n crPayoff: {\n attribute: 'correct-rejection-payoff',\n type: Number,\n reflect: true,\n },\n nrPayoff: {\n attribute: 'no-response-payoff',\n type: Number,\n reflect: true,\n },\n\n state: {\n attribute: false,\n type: String,\n reflect: false,\n },\n trialCount: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n trialTotal: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.feedbacks = ['none', 'accuracy', 'outcome']; // Possible values for 'feedback'\n this.feedback = 'outcome'; // What feedback to display\n this.trial = false; // Show trial count?\n this.payoffs = ['none', 'trial', 'total']; // Possible types of 'payoff' info\n this.payoff = 'none'; // What payoff info to display\n\n this.hPayoff = 0; // Hit payoff\n this.mPayoff = 0; // Miss payoff\n this.crPayoff = 0; // Correct Rejection payoff\n this.faPayoff = 0; // False Alarm payoff\n this.nrPayoff = 0; // No Response payoff\n\n // Properties\n this.states = ['off', 'waiting', 'feedback']; // Possible states\n this.state = 'off'; // Current state\n\n this.trialCount = 0; // Current trial\n this.trialTotal = 0; // Total trials\n\n // Private\n this.signals = ['present', 'absent']; // Possible values of 'signal'\n this.signal = undefined; // Signal for current trial\n this.responses = ['present', 'absent']; // Possible values of 'response'\n this.response = undefined; // Response for current trial\n this.outcomes = ['h', 'm', 'fa', 'cr', 'nr']; // Possible values of 'outcome'\n this.outcome = undefined; // Outcome for current trial\n this.accuracies = ['c', 'e', 'nr']; // Possible values of 'accuracy'\n this.accuracy = undefined; // Accuracy for current trial\n\n this.h = 0; // Count of Hits\n this.m = 0; // Count of Misses\n this.cr = 0; // Count of Correct Rejections\n this.fa = 0; // Count of False Alarms\n\n this.c = 0; // Count of Correct trials\n this.e = 0; // Count of Error trials\n\n this.nr = 0; // Count of No Response trials\n }\n\n get trialPayoff() {\n switch (this.outcome) {\n case 'h':\n return this.hPayoff;\n case 'm':\n return this.mPayoff;\n case 'fa':\n return this.faPayoff;\n case 'cr':\n return this.crPayoff;\n case 'nr':\n return this.nrPayoff;\n default:\n return undefined;\n }\n }\n\n get totalPayoff() {\n return ((this.h * this.hPayoff)\n + (this.m * this.mPayoff)\n + (this.cr * this.crPayoff)\n + (this.fa * this.faPayoff)\n + (this.nr * this.nrPayoff));\n }\n\n start(signal, trial) {\n this.trialCount = trial;\n this.state = 'waiting';\n this.signal = signal;\n this.response = undefined;\n this.outcome = undefined;\n }\n\n stop() {\n this.state = 'feedback';\n if (this.response === undefined) {\n this.outcome = 'nr';\n this.nr += 1;\n this.accuracy = 'nr';\n }\n }\n\n present() {\n this.responded('present');\n }\n\n absent() {\n this.responded('absent');\n }\n\n responded(response) {\n this.state = 'feedback';\n this.response = response;\n if (this.signal === 'present' && this.response === 'present') {\n this.outcome = 'h';\n this.h += 1;\n this.accuracy = 'c';\n this.c += 1;\n } else if (this.signal === 'present' && this.response === 'absent') {\n this.outcome = 'm';\n this.m += 1;\n this.accuracy = 'e';\n this.e += 1;\n } else if (this.signal === 'absent' && this.response === 'present') {\n this.outcome = 'fa';\n this.fa += 1;\n this.accuracy = 'e';\n this.e += 1;\n } else if (this.signal === 'absent' && this.response === 'absent') {\n this.outcome = 'cr';\n this.cr += 1;\n this.accuracy = 'c';\n this.c += 1;\n }\n\n this.dispatchEvent(new CustomEvent('detectable-response', {\n detail: {\n trial: this.trialCount,\n signal: this.signal,\n response: this.response,\n outcome: this.outcome,\n payoff: this.trialPayoff,\n h: this.h,\n m: this.m,\n fa: this.fa,\n cr: this.cr,\n nr: this.nr,\n totalPayoff: this.totalPayoff,\n },\n bubbles: true,\n }));\n }\n\n reset() {\n this.state = 'off';\n this.trialCount = 0;\n this.signal = undefined;\n this.response = undefined;\n this.outcome = undefined;\n this.accuracy = undefined;\n this.h = 0;\n this.m = 0;\n this.cr = 0;\n this.fa = 0;\n this.nr = 0;\n this.c = 0;\n this.e = 0;\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n }\n\n /* Overall container */\n .holder {\n display: flex;\n\n flex-direction: row;\n }\n\n /* Response buttons */\n .responses {\n display: flex;\n\n flex-direction: column;\n\n align-items: stretch;\n justify-content: center;\n }\n\n .waiting[disabled] {\n --decidables-button-background-color: var(---color-element-enabled);\n }\n\n .selected[disabled][name=\"present\"] {\n --decidables-button-background-color: var(---color-present);\n }\n\n .selected[disabled][name=\"absent\"] {\n --decidables-button-background-color: var(---color-absent);\n }\n\n /* Feedback messages */\n .feedbacks {\n display: flex;\n\n flex-direction: column;\n\n justify-content: center;\n }\n\n /* Trial feedback */\n .trial {\n text-align: center;\n }\n\n .trial .label {\n font-weight: 600;\n }\n\n /* Outcome feedback */\n .feedback {\n display: flex;\n\n flex-direction: column;\n\n align-items: center;\n justify-content: center;\n\n width: 6rem;\n height: 3.5rem;\n padding: 0.375rem 0.75rem;\n margin: 0.25rem;\n\n text-align: center;\n\n background-color: var(---color-element-background);\n border: 1px solid var(---color-element-border);\n }\n\n .feedback.h {\n background-color: var(---color-h-light);\n }\n\n .feedback.m {\n background-color: var(---color-m-light);\n }\n\n .feedback.fa {\n background-color: var(---color-fa-light);\n }\n\n .feedback.cr {\n background-color: var(---color-cr-light);\n }\n\n .feedback.nr {\n background-color: var(---color-nr-light);\n }\n\n .feedback.c {\n background-color: var(---color-correct-light);\n }\n\n .feedback.e {\n color: var(---color-text-inverse);\n\n background-color: var(---color-error-light);\n }\n\n .feedback .outcome {\n font-weight: 600;\n line-height: 1.15;\n }\n\n :host([payoff=\"trial\"]) .feedback,\n :host([payoff=\"total\"]) .feedback {\n height: 4rem;\n }\n\n /* Payoff feedback */\n .payoff {\n text-align: center;\n }\n\n .payoff .label {\n font-weight: 600;\n }\n `,\n ];\n }\n\n render() {\n return html`\n <div class=\"holder\">\n <div class=\"responses\">\n <decidables-button name=\"present\" class=${(this.state === 'feedback' && this.response === 'present') ? 'selected' : ((this.state === 'waiting') ? 'waiting' : '')} ?disabled=${this.state !== 'waiting' || this.interactive !== true} @click=${this.present.bind(this)}>Present</decidables-button>\n <decidables-button name=\"absent\" class=${(this.state === 'feedback' && this.response === 'absent') ? 'selected' : ((this.state === 'waiting') ? 'waiting' : '')} ?disabled=${this.state !== 'waiting' || this.interactive !== true} @click=${this.absent.bind(this)}>Absent</decidables-button>\n </div>\n ${(this.trial || this.feedback !== 'none' || this.payoff === 'total')\n ? html`\n <div class=\"feedbacks\">\n ${(this.trial)\n ? html`\n <div class=\"trial\">\n <span class=\"label\">Trial: </span><span class=\"count\">${this.trialCount}</span><span class=\"of\"> of </span><span class=\"total\">${this.trialTotal}</span>\n </div>`\n : html``}\n ${(this.feedback !== 'none')\n ? html`\n <div class=${`feedback ${(this.state === 'feedback')\n ? (this.feedback === 'outcome')\n ? this.outcome\n : this.accuracy\n : ''}`}>\n ${(this.state === 'feedback')\n ? (this.feedback === 'outcome')\n ? (this.outcome === 'h')\n ? html`<span class=\"outcome\">Hit</span>`\n : (this.outcome === 'm')\n ? html`<span class=\"outcome\">Miss</span>`\n : (this.outcome === 'fa')\n ? html`<span class=\"outcome\">False<br>Alarm</span>`\n : (this.outcome === 'cr')\n ? html`<span class=\"outcome\">Correct<br>Rejection</span>`\n : html`<span class=\"outcome\">No<br>Response</span>`\n : (this.accuracy === 'c')\n ? html`<span class=\"outcome\">Correct</span>`\n : (this.accuracy === 'e')\n ? html`<span class=\"outcome\">Error</span>`\n : html`<span class=\"outcome\">No<br>Response</span>`\n : ''}\n ${(this.payoff === 'trial' || this.payoff === 'total')\n ? html`<span class=\"payoff\">${this.trialPayoff}</span>`\n : html``}\n </div>`\n : html``}\n ${(this.payoff === 'total')\n ? html`\n <div class=\"payoff\">\n <span class=\"label\">Total: </span><span class=\"value\">${this.totalPayoff}</span>\n </div>`\n : html``}\n </div>`\n : html``}\n </div>`;\n }\n}\n\ncustomElements.define('detectable-response', DetectableResponse);\n","\nimport {html, css} from 'lit';\n\nimport '@decidables/decidables-elements/spinner';\nimport DecidablesConverterSet from '@decidables/decidables-elements/converter-set';\nimport SDTMath from '@decidables/detectable-math';\n\nimport DetectableElement from '../detectable-element';\n\n/*\n DetectableTable element\n <detectable-table>\n\n Attributes:\n Hit; Miss; FalseAlarm; CorrectRejection;\n*/\nexport default class DetectableTable extends DetectableElement {\n static get properties() {\n return {\n numeric: {\n attribute: 'numeric',\n type: Boolean,\n reflect: true,\n },\n summary: {\n attribute: 'summary',\n converter: DecidablesConverterSet,\n reflect: true,\n },\n color: {\n attribute: 'color',\n type: String,\n reflect: true,\n },\n h: {\n attribute: 'hits',\n type: Number,\n reflect: true,\n },\n m: {\n attribute: 'misses',\n type: Number,\n reflect: true,\n },\n fa: {\n attribute: 'false-alarms',\n type: Number,\n reflect: true,\n },\n cr: {\n attribute: 'correct-rejections',\n type: Number,\n reflect: true,\n },\n\n payoff: {\n attribute: 'payoff',\n type: Boolean,\n reflect: true,\n },\n hPayoff: {\n attribute: 'hit-payoff',\n type: Number,\n reflect: true,\n },\n mPayoff: {\n attribute: 'miss-payoff',\n type: Number,\n reflect: true,\n },\n faPayoff: {\n attribute: 'false-alarm-payoff',\n type: Number,\n reflect: true,\n },\n crPayoff: {\n attribute: 'correct-rejection-payoff',\n type: Number,\n reflect: true,\n },\n\n far: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n hr: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n acc: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n // positive predictive value (https://en.wikipedia.org/wiki/Receiver_operating_characteristic)\n ppv: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n // false omission rate (https://en.wikipedia.org/wiki/Receiver_operating_characteristic)\n // Using \"fomr\" to avoid keyword \"for\"\n fomr: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n\n this.numeric = false;\n\n this.summaries = ['stimulusRates', 'responseRates', 'accuracy'];\n this.summary = new Set();\n\n this.colors = ['none', 'accuracy', 'stimulus', 'response', 'outcome'];\n this.color = 'outcome';\n\n this.h = 40;\n this.m = 60;\n this.fa = 75;\n this.cr = 25;\n this.alignState();\n\n this.payoff = false;\n this.hPayoff = undefined; // Hit payoff\n this.mPayoff = undefined; // Miss payoff\n this.crPayoff = undefined; // Correct Rejection payoff\n this.faPayoff = undefined; // False Alarm payoff\n }\n\n alignState() {\n this.hr = SDTMath.hM2Hr(this.h, this.m);\n this.far = SDTMath.faCr2Far(this.fa, this.cr);\n this.acc = SDTMath.hMFaCr2Acc(this.h, this.m, this.fa, this.cr);\n this.ppv = SDTMath.hFa2Ppv(this.h, this.fa);\n this.fomr = SDTMath.mCr2Fomr(this.m, this.cr);\n }\n\n sendEvent() {\n this.dispatchEvent(new CustomEvent('detectable-table-change', {\n detail: {\n h: this.h,\n m: this.m,\n hr: this.hr,\n fa: this.fa,\n cr: this.cr,\n far: this.far,\n acc: this.acc,\n ppv: this.ppv,\n fomr: this.fomr,\n },\n bubbles: true,\n }));\n }\n\n hInput(e) {\n this.h = parseInt(e.target.value, 10);\n this.alignState();\n this.sendEvent();\n }\n\n mInput(e) {\n this.m = parseInt(e.target.value, 10);\n this.alignState();\n this.sendEvent();\n }\n\n faInput(e) {\n this.fa = parseInt(e.target.value, 10);\n this.alignState();\n this.sendEvent();\n }\n\n crInput(e) {\n this.cr = parseInt(e.target.value, 10);\n this.alignState();\n this.sendEvent();\n }\n\n hrInput(e) {\n const newhr = parseFloat(e.target.value);\n const present = this.h + this.m;\n this.h = Math.round(newhr * present);\n this.m = present - this.h;\n this.alignState();\n this.sendEvent();\n }\n\n farInput(e) {\n const newfar = parseFloat(e.target.value);\n const absent = this.fa + this.cr;\n this.fa = Math.round(newfar * absent);\n this.cr = absent - this.fa;\n this.alignState();\n this.sendEvent();\n }\n\n accInput(e) {\n const newacc = parseFloat(e.target.value);\n const present = this.h + this.m;\n const absent = this.fa + this.cr;\n const x = (this.hr + this.far - 1) / 2; // Rotate into ACC\n let newhr = x + newacc;\n let newfar = 1 + x - newacc;\n\n if (newfar > 1) {\n newfar = 1;\n newhr = newfar + 2 * newacc - 1;\n }\n if (newfar < 0) {\n newfar = 0;\n newhr = newfar + 2 * newacc - 1;\n }\n if (newhr > 1) {\n newhr = 1;\n newfar = newhr - 2 * newacc + 1;\n }\n if (newhr < 0) {\n newhr = 0;\n newfar = newhr - 2 * newacc + 1;\n }\n this.h = Math.round(newhr * present);\n this.m = present - this.h;\n this.fa = Math.round(newfar * absent);\n this.cr = absent - this.fa;\n\n this.alignState();\n this.sendEvent();\n }\n\n ppvInput(e) {\n const newppv = parseFloat(e.target.value);\n const present = this.h + this.fa;\n this.h = Math.round(newppv * present);\n this.fa = present - this.h;\n this.alignState();\n this.sendEvent();\n }\n\n fomrInput(e) {\n const newfomr = parseFloat(e.target.value);\n const present = this.m + this.cr;\n this.m = Math.round(newfomr * present);\n this.cr = present - this.m;\n this.alignState();\n this.sendEvent();\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n }\n\n /* Overall element */\n table {\n text-align: center;\n\n border-collapse: collapse;\n\n border: 0;\n }\n\n /* Headers */\n .th-main {\n padding: 0;\n\n font-weight: bold;\n }\n\n .th-sub {\n padding: 0 0.25rem;\n\n font-weight: 600;\n }\n\n .th-left {\n padding-left: 0;\n\n text-align: right;\n }\n\n /* Cells */\n .td {\n width: 10rem;\n\n padding: 0.25rem 0.25rem 0.375rem;\n\n transition: all var(---transition-duration) ease;\n }\n\n .numeric .td {\n width: 7rem;\n }\n\n /* Labels */\n .payoff {\n font-weight: 600;\n line-height: 0.75rem;\n }\n\n /* User interaction <input> */\n .td-data decidables-spinner {\n --decidables-spinner-input-width: 3.5rem;\n }\n\n .td-summary decidables-spinner {\n --decidables-spinner-input-width: 4.5rem;\n }\n\n /* Color schemes & Table emphasis */\n\n /* (Default) Outcome color scheme */\n .h {\n background: var(---color-h-light);\n border-top: 2px solid var(---color-element-emphasis);\n border-left: 2px solid var(---color-element-emphasis);\n }\n\n .m {\n background: var(---color-m-light);\n border-top: 2px solid var(---color-element-emphasis);\n border-right: 2px solid var(---color-element-emphasis);\n }\n\n .fa {\n background: var(---color-fa-light);\n border-bottom: 2px solid var(---color-element-emphasis);\n border-left: 2px solid var(---color-element-emphasis);\n }\n\n .cr {\n background: var(---color-cr-light);\n border-right: 2px solid var(---color-element-emphasis);\n border-bottom: 2px solid var(---color-element-emphasis);\n }\n\n .hr {\n background: var(---color-hr-light);\n }\n\n .far {\n background: var(---color-far-light);\n }\n\n .acc {\n background: var(---color-acc-light);\n }\n\n .ppv {\n background: var(---color-present-light);\n }\n\n .fomr {\n background: var(---color-absent-light);\n }\n\n /* Accuracy color scheme */\n :host([color=\"accuracy\"]) .h,\n :host([color=\"accuracy\"]) .cr {\n background: var(---color-correct-light);\n }\n\n :host([color=\"accuracy\"]) .m,\n :host([color=\"accuracy\"]) .fa {\n color: var(---color-text-inverse);\n\n background: var(---color-error-light);\n }\n\n :host([color=\"accuracy\"]) .hr,\n :host([color=\"accuracy\"]) .far,\n :host([color=\"accuracy\"]) .ppv,\n :host([color=\"accuracy\"]) .fomr {\n background: var(---color-element-background);\n }\n\n /* Stimulus color scheme */\n :host([color=\"stimulus\"]) .cr,\n :host([color=\"stimulus\"]) .fa {\n background: var(---color-far-light);\n }\n\n :host([color=\"stimulus\"]) .m,\n :host([color=\"stimulus\"]) .h {\n background: var(---color-hr-light);\n }\n\n :host([color=\"stimulus\"]) .ppv,\n :host([color=\"stimulus\"]) .fomr,\n :host([color=\"stimulus\"]) .acc {\n background: var(---color-element-background);\n }\n\n /* Response color scheme */\n :host([color=\"response\"]) .cr,\n :host([color=\"response\"]) .m {\n background: var(---color-absent-light);\n }\n\n :host([color=\"response\"]) .fa,\n :host([color=\"response\"]) .h {\n background: var(---color-present-light);\n }\n\n :host([color=\"response\"]) .hr,\n :host([color=\"response\"]) .far,\n :host([color=\"response\"]) .acc {\n background: var(---color-element-background);\n }\n\n /* No color scheme */\n :host([color=\"none\"]) .cr,\n :host([color=\"none\"]) .fa,\n :host([color=\"none\"]) .m,\n :host([color=\"none\"]) .h,\n :host([color=\"none\"]) .hr,\n :host([color=\"none\"]) .far,\n :host([color=\"none\"]) .ppv,\n :host([color=\"none\"]) .fomr,\n :host([color=\"none\"]) .acc {\n background: var(---color-element-background);\n }\n `,\n ];\n }\n\n render() {\n const payoffFormatter = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n this.alignState();\n let h;\n let m;\n let fa;\n let cr;\n let hr;\n let far;\n let acc;\n let ppv;\n let fomr;\n if (this.numeric) {\n h = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${this.h}\" @input=${this.hInput.bind(this)}>\n <span>Hits</span>\n ${this.payoff ? html`<span class=\"payoff\">${payoffFormatter.format(this.hPayoff)}</span>` : html``}\n </decidables-spinner>\n `;\n m = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${this.m}\" @input=${this.mInput.bind(this)}>\n <span>Misses</span>\n ${this.payoff ? html`<span class=\"payoff\">${payoffFormatter.format(this.mPayoff)}</span>` : html``}\n </decidables-spinner>\n `;\n fa = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${this.fa}\" @input=${this.faInput.bind(this)}>\n <span>False Alarms</span>\n ${this.payoff ? html`<span class=\"payoff\">${payoffFormatter.format(this.faPayoff)}</span>` : html``}\n </decidables-spinner>\n `;\n cr = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${this.cr}\" @input=${this.crInput.bind(this)}>\n <span>Correct Rejections</span>\n ${this.payoff ? html`<span class=\"payoff\">${payoffFormatter.format(this.crPayoff)}</span>` : html``}\n </decidables-spinner>\n `;\n hr = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" max=\"1\" step=\".001\" .value=\"${+this.hr.toFixed(3)}\" @input=${this.hrInput.bind(this)}>\n <span>Hit Rate</span>\n </decidables-spinner>\n `;\n far = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" max=\"1\" step=\".001\" .value=\"${+this.far.toFixed(3)}\" @input=${this.farInput.bind(this)}>\n <span>False Alarm Rate</span>\n </decidables-spinner>\n `;\n acc = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" max=\"1\" step=\".001\" .value=\"${+this.acc.toFixed(3)}\" @input=${this.accInput.bind(this)}>\n <span>Accuracy</span>\n </decidables-spinner>\n `;\n ppv = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" max=\"1\" step=\".001\" .value=\"${+this.ppv.toFixed(3)}\" @input=${this.ppvInput.bind(this)}>\n <span>Positive Predictive Value</span>\n </decidables-spinner>\n `;\n fomr = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" max=\"1\" step=\".001\" .value=\"${+this.fomr.toFixed(3)}\" @input=${this.fomrInput.bind(this)}>\n <span>False Omission Rate</span>\n </decidables-spinner>\n `;\n } else {\n h = html`<span>Hits</span>\n ${this.payoff ? html`<span class=\"payoff\">${payoffFormatter.format(this.hPayoff)}</span>` : html``}`;\n m = html`<span>Misses</span>\n ${this.payoff ? html`<span class=\"payoff\">${payoffFormatter.format(this.mPayoff)}</span>` : html``}`;\n fa = html`<span>False Alarms</span>\n ${this.payoff ? html`<span class=\"payoff\">${payoffFormatter.format(this.faPayoff)}</span>` : html``}`;\n cr = html`<span>Correct Rejections</span>\n ${this.payoff ? html`<span class=\"payoff\">${payoffFormatter.format(this.crPayoff)}</span>` : html``}`;\n hr = html`<span>Hit Rate</span>`;\n far = html`<span>False Alarm Rate</span>`;\n acc = html`<span>Accuracy</span>`;\n ppv = html`<span>Positive Predictive Value</span>`;\n fomr = html`<span>False Omission Rate</span>`;\n }\n return html`\n <table class=${this.numeric ? 'numeric' : ''}>\n <thead>\n <tr>\n <th colspan=\"2\" rowspan=\"2\"></th>\n <th class=\"th th-main\" colspan=\"2\" scope=\"col\">\n Response\n </th>\n </tr>\n <tr>\n <th class=\"th th-sub\" scope=\"col\">\n \"Present\"\n </th>\n <th class=\"th th-sub\" scope=\"col\">\n \"Absent\"\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th class=\"th th-main\" rowspan=\"2\" scope=\"row\">\n Signal\n </th>\n <th class=\"th th-sub th-left\" scope=\"row\">\n Present\n </th>\n <td class=\"td td-data h\">\n ${h}\n </td>\n <td class=\"td td-data m\">\n ${m}\n </td>\n ${(this.summary.has('stimulusRates'))\n ? html`\n <td class=\"td td-summary hr\">\n ${hr}\n </td>`\n : html``}\n </tr>\n <tr>\n <th class=\"th th-sub th-left\" scope=\"row\">\n Absent\n </th>\n <td class=\"td td-data fa\">\n ${fa}\n </td>\n <td class=\"td td-data cr\">\n ${cr}\n </td>\n ${(this.summary.has('stimulusRates'))\n ? html`\n <td class=\"td td-summary far\">\n ${far}\n </td>`\n : html``}\n </tr>\n ${(this.summary.has('responseRates') || this.summary.has('accuracy'))\n ? html`\n <tr>\n <td colspan=\"2\"></td>\n ${(this.summary.has('responseRates'))\n ? html`\n <td class=\"td td-summary ppv\">\n ${ppv}\n </td>\n <td class=\"td td-summary fomr\">\n ${fomr}\n </td>`\n : html`\n <td colspan=\"2\"></td>`}\n ${(this.summary.has('accuracy'))\n ? html`\n <td class=\"td td-summary acc\" rowspan=\"2\">\n ${acc}\n </td>`\n : html``}\n </tr>`\n : html``}\n </tbody>\n </table>`;\n }\n}\n\ncustomElements.define('detectable-table', DetectableTable);\n","\nimport {css} from 'lit';\n\nimport DetectableElement from '../detectable-element';\n\n/*\n SDTEquation Base Class - Not intended for instantiation!\n <sdt-equation>\n*/\nexport default class SDTEquation extends DetectableElement {\n static get properties() {\n return {\n numeric: {\n attribute: 'numeric',\n type: Boolean,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n this.numeric = false;\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: block;\n\n margin: 1rem;\n }\n\n /* Containing <div> */\n .holder {\n display: flex;\n\n flex-direction: row;\n\n justify-content: left;\n }\n\n /* Overall <table> */\n .equation {\n text-align: center;\n\n border-collapse: collapse;\n\n border: 0;\n }\n\n /* Modifies <td> */\n .underline {\n border-bottom: 1px solid var(---color-text);\n }\n\n /* Basic <span> and <var> w/modifiers */\n span,\n var {\n padding: 0 0.25rem;\n\n font-style: normal;\n }\n\n .tight {\n padding: 0;\n }\n\n .paren {\n font-size: 150%;\n }\n\n .bracket {\n font-size: 175%;\n }\n\n .exp {\n font-size: 0.75rem;\n }\n\n /* Input wrapping <label> */\n decidables-spinner {\n --decidables-spinner-input-width: 4rem;\n\n display: inline-block;\n\n padding: 0.125rem 0.375rem 0.375rem;\n\n vertical-align: middle;\n }\n\n .bottom {\n vertical-align: bottom;\n }\n\n /* Color scheme */\n .h {\n background: var(---color-h-light);\n }\n\n .m {\n background: var(---color-m-light);\n }\n\n .hr {\n background: var(---color-hr-light);\n }\n\n .fa {\n background: var(---color-fa-light);\n }\n\n .acc {\n background: var(---color-acc-light);\n }\n\n .cr {\n background: var(---color-cr-light);\n }\n\n .far {\n background: var(---color-far-light);\n }\n\n .d {\n background: var(---color-d-light);\n }\n\n .c {\n background: var(---color-c-light);\n }\n\n .s {\n background: var(---color-s-light);\n }\n `,\n ];\n }\n}\n","\nimport {html} from 'lit';\n\nimport '@decidables/decidables-elements/spinner';\nimport SDTMath from '@decidables/detectable-math';\n\nimport SDTEquation from './sdt-equation';\n\n/*\n SDTEquationDC2Far element\n <sdt-equation-dc2far>\n\n Attributes:\n d'; c; False Alarm Rate;\n*/\nexport default class SDTEquationDC2Far extends SDTEquation {\n static get properties() {\n return {\n unequal: {\n attribute: 'unequal',\n type: Boolean,\n reflect: true,\n },\n d: {\n attribute: 'd',\n type: Number,\n reflect: true,\n },\n c: {\n attribute: 'c',\n type: Number,\n reflect: true,\n },\n s: {\n attribute: 's',\n type: Number,\n reflect: true,\n },\n\n far: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n this.unequal = false;\n this.d = 0;\n this.c = 0;\n this.s = 1;\n this.alignState();\n }\n\n alignState() {\n this.far = SDTMath.dC2Far(this.d, this.c, this.s);\n }\n\n sendEvent() {\n this.dispatchEvent(new CustomEvent('sdt-equation-dc2far-change', {\n detail: {\n d: this.d,\n c: this.c,\n s: this.s,\n far: this.far,\n },\n bubbles: true,\n }));\n }\n\n dInput(event) {\n this.d = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n cInput(event) {\n this.c = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n sInput(event) {\n this.s = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n render() {\n this.alignState();\n let d;\n let c;\n let s;\n let far;\n if (this.numeric) {\n d = html`\n <decidables-spinner class=\"d bottom\" ?disabled=${!this.interactive} step=\".001\" .value=\"${this.d}\" @input=${this.dInput.bind(this)}>\n <var class=\"math-var\">d′</var>\n </decidables-spinner>\n `;\n c = html`\n <decidables-spinner class=\"c bottom\" ?disabled=${!this.interactive} step=\".001\" .value=\"${this.c}\" @input=${this.cInput.bind(this)}>\n <var class=\"math-var\">c</var>\n </decidables-spinner>\n `;\n s = html`\n <decidables-spinner class=\"s bottom\" ?disabled=${!this.interactive} min=\"0\" step=\".001\" .value=\"${this.s}\" @input=${this.sInput.bind(this)}>\n <var class=\"math-var\">σ</var>\n </decidables-spinner>\n `;\n far = html`\n <decidables-spinner class=\"far bottom\" disabled min=\"0\" max=\"1\" step=\".001\" .value=\"${+this.far.toFixed(3)}\">\n <var>False Alarm Rate</var>\n </decidables-spinner>\n `;\n } else {\n d = html`<var class=\"math-var d\">d′</var>`;\n c = html`<var class=\"math-var c\">c</var>`;\n s = html`<var class=\"math-var s\">σ</var>`;\n far = html`<var class=\"far\">False Alarm Rate</var>`;\n }\n let equation;\n if (this.unequal) {\n equation = html`\n <tr>\n <td rowspan=\"2\">\n ${far}<span class=\"equals\">=</span><var class=\"math-greek phi tight\">Φ</var><span class=\"paren tight\">(</span><span class=\"bracket tight\">[</span>\n </td>\n <td class=\"underline bottom\">\n <span>1</span><span class=\"plus tight\">+</span><span>${s}<sup class=\"exp\">2</sup></span>\n </td>\n <td rowspan=\"2\">\n <span class=\"bracket tight\">]<sup class=\"exp\">½</sup></span><span class=\"bracket tight\">[</span>\n </td>\n <td class=\"underline\">\n <span class=\"minus tight\">−</span>${d}\n </td>\n <td rowspan=\"2\">\n <span class=\"minus\">−</span>${c}<span class=\"bracket tight\">]</span><span class=\"paren tight\">)</span>\n </td>\n </tr>\n <tr>\n <td>\n <span>2</span>\n </td>\n <td>\n <span><span>1</span><span class=\"plus\">+</span>${s}</span>\n </td>\n </tr>`;\n } else {\n equation = html`\n <tr>\n <td rowspan=\"2\">\n ${far}<span class=\"equals\">=</span><var class=\"math-greek phi tight\">Φ</var><span class=\"paren tight\">(</span><span class=\"minus tight\">−</span>\n </td>\n <td class=\"underline\">\n ${d}\n </td>\n <td rowspan=\"2\">\n <span class=\"minus\">−</span>${c}<span class=\"paren tight\">)</span>\n </td>\n </tr>\n <tr>\n <td>\n <span>2</span>\n </td>\n </tr>`;\n }\n return html`\n <div class=\"holder\">\n <table class=\"equation\">\n <tbody>\n ${equation}\n </tbody>\n </table>\n </div>`;\n }\n}\n\ncustomElements.define('sdt-equation-dc2far', SDTEquationDC2Far);\n","\nimport {html} from 'lit';\n\nimport '@decidables/decidables-elements/spinner';\nimport SDTMath from '@decidables/detectable-math';\n\nimport SDTEquation from './sdt-equation';\n\n/*\n SDTEquationDC2Hr element\n <sdt-equation-dc2hr>\n\n Attributes:\n d'; c; Hit Rate;\n*/\nexport default class SDTEquationDC2Hr extends SDTEquation {\n static get properties() {\n return {\n unequal: {\n attribute: 'unequal',\n type: Boolean,\n reflect: true,\n },\n d: {\n attribute: 'd',\n type: Number,\n reflect: true,\n },\n c: {\n attribute: 'c',\n type: Number,\n reflect: true,\n },\n s: {\n attribute: 's',\n type: Number,\n reflect: true,\n },\n\n hr: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n this.unequal = false;\n this.d = 0;\n this.c = 0;\n this.s = 1;\n this.alignState();\n }\n\n alignState() {\n this.hr = SDTMath.dC2Hr(this.d, this.c, this.s);\n }\n\n sendEvent() {\n this.dispatchEvent(new CustomEvent('sdt-equation-dc2hr-change', {\n detail: {\n d: this.d,\n c: this.c,\n s: this.s,\n hr: this.hr,\n },\n bubbles: true,\n }));\n }\n\n dInput(event) {\n this.d = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n cInput(event) {\n this.c = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n sInput(event) {\n this.s = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n render() {\n this.alignState();\n let d;\n let c;\n let s;\n let hr;\n if (this.numeric) {\n d = html`\n <decidables-spinner class=\"d bottom\" ?disabled=${!this.interactive} step=\".001\" .value=\"${this.d}\" @input=${this.dInput.bind(this)}>\n <var class=\"math-var\">d′</var>\n </decidables-spinner>\n `;\n c = html`\n <decidables-spinner class=\"c bottom\" ?disabled=${!this.interactive} step=\".001\" .value=\"${this.c}\" @input=${this.cInput.bind(this)}>\n <var class=\"math-var\">c</var>\n </decidables-spinner>\n `;\n s = html`\n <decidables-spinner class=\"s bottom\" ?disabled=${!this.interactive} min=\"0\" step=\".001\" .value=\"${this.s}\" @input=${this.sInput.bind(this)}>\n <var class=\"math-var\">σ</var>\n </decidables-spinner>\n `;\n hr = html`\n <decidables-spinner class=\"hr bottom\" disabled min=\"0\" max=\"1\" step=\".001\" .value=\"${+this.hr.toFixed(3)}\">\n <var>Hit Rate</var>\n </decidables-spinner>\n `;\n } else {\n d = html`<var class=\"math-var d\">d′</var>`;\n c = html`<var class=\"math-var c\">c</var>`;\n s = html`<var class=\"math-var s\">σ</var>`;\n hr = html`<var class=\"hr\">Hit Rate</var>`;\n }\n let equation;\n if (this.unequal) {\n equation = html`\n <tr>\n <td rowspan=\"2\">\n ${hr}<span class=\"equals\">=</span><var class=\"math-greek phi tight\">Φ</var><span class=\"paren tight\">(</span><span class=\"bracket tight\">[</span>\n </td>\n <td class=\"underline bottom\">\n <span>1</span><span class=\"plus tight\">+</span><span>${s}<sup class=\"exp\">2</sup></span>\n </td>\n <td rowspan=\"2\">\n <span class=\"bracket tight\">]<sup class=\"exp\">½</sup></span><span class=\"bracket tight\">[</span>\n </td>\n <td class=\"underline\">\n ${d}\n </td>\n <td rowspan=\"2\">\n <span class=\"minus\">−</span>\n </td>\n <td class=\"underline\">\n ${c}\n </td>\n <td rowspan=\"2\">\n <span class=\"bracket tight\">]</span><span class=\"paren tight\">)</span>\n </td>\n </tr>\n <tr>\n <td>\n <span>2</span>\n </td>\n <td>\n <span><span>1</span><span class=\"plus\">+</span>${s}</span>\n </td>\n <td>\n ${s}\n </td>\n </tr>`;\n } else {\n equation = html`\n <tr>\n <td rowspan=\"2\">\n ${hr}<span class=\"equals\">=</span><var class=\"math-greek phi tight\">Φ</var><span class=\"paren tight\">(</span>\n </td>\n <td class=\"underline\">\n ${d}\n </td>\n <td rowspan=\"2\">\n <span class=\"minus\">−</span>${c}<span class=\"paren tight\">)</span>\n </td>\n </tr>\n <tr>\n <td>\n <span>2</span>\n </td>\n </tr>`;\n }\n return html`\n <div class=\"holder\">\n <table class=\"equation\">\n <tbody>\n ${equation}\n </tbody>\n </table>\n </div>`;\n }\n}\n\ncustomElements.define('sdt-equation-dc2hr', SDTEquationDC2Hr);\n","\nimport {html} from 'lit';\n\nimport '@decidables/decidables-elements/spinner';\nimport SDTMath from '@decidables/detectable-math';\n\nimport SDTEquation from './sdt-equation';\n\n/*\n SDTEquationFaCr2Far element\n <sdt-equation-facr2far>\n\n Attributes:\n False Alarms; Correct Rejections; False Alarm Rate;\n*/\nexport default class SDTEquationFaCr2Far extends SDTEquation {\n static get properties() {\n return {\n fa: {\n attribute: 'false-alarms',\n type: Number,\n reflect: true,\n },\n cr: {\n attribute: 'correct-rejections',\n type: Number,\n reflect: true,\n },\n far: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n this.fa = 0;\n this.cr = 0;\n this.alignState();\n }\n\n alignState() {\n this.far = SDTMath.faCr2Far(this.fa, this.cr);\n }\n\n sendEvent() {\n this.dispatchEvent(new CustomEvent('sdt-equation-facr2far-change', {\n detail: {\n fa: this.fa,\n cr: this.cr,\n far: this.far,\n },\n bubbles: true,\n }));\n }\n\n faInput(event) {\n this.fa = parseInt(event.target.value, 10);\n this.alignState();\n this.sendEvent();\n }\n\n crInput(event) {\n this.cr = parseInt(event.target.value, 10);\n this.alignState();\n this.sendEvent();\n }\n\n render() {\n this.alignState();\n let fa;\n let cr;\n let far;\n if (this.numeric) {\n fa = html`\n <decidables-spinner class=\"fa\" ?disabled=${!this.interactive} min=\"0\" .value=\"${this.fa}\" @input=${this.faInput.bind(this)}>\n <var>False Alarms</var>\n </decidables-spinner>\n `;\n cr = html`\n <decidables-spinner class=\"cr\" ?disabled=${!this.interactive} min=\"0\" .value=\"${this.cr}\" @input=${this.crInput.bind(this)}>\n <var>Correct Rejections</var>\n </decidables-spinner>\n `;\n far = html`\n <decidables-spinner class=\"far\" disabled min=\"0\" max=\"1\" step=\".001\" .value=\"${+this.far.toFixed(3)}\">\n <var>False Alarm Rate</var>\n </decidables-spinner>\n `;\n } else {\n fa = html`<var class=\"fa\">False Alarms</var>`;\n cr = html`<var class=\"cr\">Correct Rejections</var>`;\n far = html`<var class=\"far\">False Alarm Rate</var>`;\n }\n return html`\n <div class=\"holder\">\n <table class=\"equation\">\n <tbody>\n <tr>\n <td rowspan=\"2\">\n ${far}<span class=\"equals\">=</span>\n </td>\n <td class=\"underline\">\n ${fa}\n </td>\n </tr>\n <tr>\n <td>\n ${fa}<span class=\"plus\">+</span>${cr}\n </td>\n </tr>\n </tbody>\n </table>\n </div>`;\n }\n}\n\ncustomElements.define('sdt-equation-facr2far', SDTEquationFaCr2Far);\n","\nimport {html} from 'lit';\n\nimport '@decidables/decidables-elements/spinner';\nimport SDTMath from '@decidables/detectable-math';\n\nimport SDTEquation from './sdt-equation';\n\n/*\n SDTEquationHM2Hr element\n <sdt-equation-hm2hr>\n\n Attributes:\n Hits; Misses; Hit Rate;\n*/\nexport default class SDTEquationHM2Hr extends SDTEquation {\n static get properties() {\n return {\n h: {\n attribute: 'hits',\n type: Number,\n reflect: true,\n },\n m: {\n attribute: 'misses',\n type: Number,\n reflect: true,\n },\n hr: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n this.h = 0;\n this.m = 0;\n this.alignState();\n }\n\n alignState() {\n this.hr = SDTMath.hM2Hr(this.h, this.m);\n }\n\n sendEvent() {\n this.dispatchEvent(new CustomEvent('sdt-equation-hm2hr-change', {\n detail: {\n h: this.h,\n m: this.m,\n hr: this.hr,\n },\n bubbles: true,\n }));\n }\n\n hInput(event) {\n this.h = parseInt(event.target.value, 10);\n this.alignState();\n this.sendEvent();\n }\n\n mInput(event) {\n this.m = parseInt(event.target.value, 10);\n this.alignState();\n this.sendEvent();\n }\n\n render() {\n this.alignState();\n let h;\n let m;\n let hr;\n if (this.numeric) {\n h = html`\n <decidables-spinner class=\"h\" ?disabled=${!this.interactive} min=\"0\" .value=\"${this.h}\" @input=${this.hInput.bind(this)}>\n <var>Hits</var>\n </decidables-spinner>\n `;\n m = html`\n <decidables-spinner class=\"m\" ?disabled=${!this.interactive} min=\"0\" .value=\"${this.m}\" @input=${this.mInput.bind(this)}>\n <var>Misses</var>\n </decidables-spinner>\n `;\n hr = html`\n <decidables-spinner class=\"hr\" disabled min=\"0\" max=\"1\" step=\".001\" .value=\"${+this.hr.toFixed(3)}\">\n <var>Hit Rate</var>\n </decidables-spinner>\n `;\n } else {\n h = html`<var class=\"h\">Hits</var>`;\n m = html`<var class=\"m\">Misses</var>`;\n hr = html`<var class=\"hr\">Hit Rate</var>`;\n }\n return html`\n <div class=\"holder\">\n <table class=\"equation\">\n <tbody>\n <tr>\n <td rowspan=\"2\">\n ${hr}<span class=\"equals\">=</span>\n </td>\n <td class=\"underline\">\n ${h}\n </td>\n </tr>\n <tr>\n <td>\n ${h}<span class=\"plus\">+</span>${m}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n `;\n }\n}\n\ncustomElements.define('sdt-equation-hm2hr', SDTEquationHM2Hr);\n","\nimport {html} from 'lit';\n\nimport '@decidables/decidables-elements/spinner';\nimport SDTMath from '@decidables/detectable-math';\n\nimport SDTEquation from './sdt-equation';\n\n/*\n SDTEquationHMFaCr2Acc element\n <sdt-equation-hmfacr2acc>\n\n Attributes:\n Hits; Misses; False Alarms; Correct Rejections; Accuracy;\n*/\nexport default class SDTEquationHMFaCr2Acc extends SDTEquation {\n static get properties() {\n return {\n h: {\n attribute: 'hits',\n type: Number,\n reflect: true,\n },\n m: {\n attribute: 'misses',\n type: Number,\n reflect: true,\n },\n fa: {\n attribute: 'false-alarms',\n type: Number,\n reflect: true,\n },\n cr: {\n attribute: 'correct-rejections',\n type: Number,\n reflect: true,\n },\n acc: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n this.h = 0;\n this.m = 0;\n this.fa = 0;\n this.cr = 0;\n this.alignState();\n }\n\n alignState() {\n this.acc = SDTMath.hMFaCr2Acc(this.h, this.m, this.fa, this.cr);\n }\n\n sendEvent() {\n this.dispatchEvent(new CustomEvent('sdt-equation-hmfacr2acc-change', {\n detail: {\n h: this.h,\n m: this.m,\n fa: this.fa,\n cr: this.cr,\n acc: this.acc,\n },\n bubbles: true,\n }));\n }\n\n hInput(event) {\n this.h = parseInt(event.target.value, 10);\n this.alignState();\n this.sendEvent();\n }\n\n mInput(event) {\n this.m = parseInt(event.target.value, 10);\n this.alignState();\n this.sendEvent();\n }\n\n faInput(event) {\n this.fa = parseInt(event.target.value, 10);\n this.alignState();\n this.sendEvent();\n }\n\n crInput(event) {\n this.cr = parseInt(event.target.value, 10);\n this.alignState();\n this.sendEvent();\n }\n\n render() {\n this.alignState();\n let h;\n let m;\n let fa;\n let cr;\n let acc;\n\n if (this.numeric) {\n h = html`\n <decidables-spinner class=\"h\" ?disabled=${!this.interactive} min=\"0\" .value=\"${this.h}\" @input=${this.hInput.bind(this)}>\n <var>Hits</var>\n </decidables-spinner>\n `;\n m = html`\n <decidables-spinner class=\"m\" ?disabled=${!this.interactive} min=\"0\" .value=\"${this.m}\" @input=${this.mInput.bind(this)}>\n <var>Misses</var>\n </decidables-spinner>\n `;\n fa = html`\n <decidables-spinner class=\"fa\" ?disabled=${!this.interactive} min=\"0\" .value=\"${this.fa}\" @input=${this.faInput.bind(this)}>\n <var>False Alarms</var>\n </decidables-spinner>\n `;\n cr = html`\n <decidables-spinner class=\"cr\" ?disabled=${!this.interactive} min=\"0\" .value=\"${this.cr}\" @input=${this.crInput.bind(this)}>\n <var>Correct Rejections</var>\n </decidables-spinner>\n `;\n acc = html`\n <decidables-spinner class=\"acc\" disabled min=\"0\" max=\"1\" step=\".001\" .value=\"${+this.acc.toFixed(3)}\">\n <var>Accuracy</var>\n </decidables-spinner>\n `;\n } else {\n h = html`<var class=\"h\">Hits</var>`;\n m = html`<var class=\"m\">Misses</var>`;\n fa = html`<var class=\"fa\">False Alarms</var>`;\n cr = html`<var class=\"cr\">Correct Rejections</var>`;\n acc = html`<var class=\"acc\">Accuracy</var>`;\n }\n return html`\n <div class=\"holder\">\n <table class=\"equation\">\n <tbody>\n <tr>\n <td rowspan=\"2\">\n ${acc}<span class=\"equals\">=</span>\n </td>\n <td class=\"underline\">\n ${h}<span class=\"plus\">+</span>${cr}\n </td>\n </tr>\n <tr>\n <td>\n ${h}<span class=\"plus\">+</span>${m}<span class=\"plus\">+</span>${fa}<span class=\"plus\">+</span>${cr}\n </td>\n </tr>\n </tbody>\n </table>\n </div>`;\n }\n}\n\ncustomElements.define('sdt-equation-hmfacr2acc', SDTEquationHMFaCr2Acc);\n","\nimport {html} from 'lit';\n\nimport '@decidables/decidables-elements/spinner';\nimport SDTMath from '@decidables/detectable-math';\n\nimport SDTEquation from './sdt-equation';\n\n/*\n SDTEquationHrFar2C element\n <sdt-equation-hrfar2c>\n\n Attributes:\n Hit Rate; False Alarm Rate; d';\n*/\nexport default class SDTEquationHrFar2C extends SDTEquation {\n static get properties() {\n return {\n unequal: {\n attribute: 'unequal',\n type: Boolean,\n reflect: true,\n },\n hr: {\n attribute: 'hit-rate',\n type: Number,\n reflect: true,\n },\n far: {\n attribute: 'false-alarm-rate',\n type: Number,\n reflect: true,\n },\n s: {\n attribute: 's',\n type: Number,\n reflect: true,\n },\n\n c: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n this.unequal = false;\n this.hr = 0;\n this.far = 0;\n this.s = 1;\n this.alignState();\n }\n\n alignState() {\n this.c = SDTMath.hrFar2C(this.hr, this.far, this.s);\n }\n\n sendEvent() {\n this.dispatchEvent(new CustomEvent('sdt-equation-hrfar2c-change', {\n detail: {\n hr: this.hr,\n far: this.far,\n s: this.s,\n c: this.c,\n },\n bubbles: true,\n }));\n }\n\n hrInput(event) {\n this.hr = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n farInput(event) {\n this.far = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n sInput(event) {\n this.s = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n render() {\n this.alignState();\n let hr;\n let far;\n let s;\n let c;\n if (this.numeric) {\n hr = html`\n <decidables-spinner class=\"hr bottom\" ?disabled=${!this.interactive} min=\"0\" max=\"1\" step=\".001\" .value=\"${this.hr}\" @input=${this.hrInput.bind(this)}>\n <var>Hit Rate</var>\n </decidables-spinner>\n `;\n far = html`\n <decidables-spinner class=\"far bottom\" ?disabled=${!this.interactive} min=\"0\" max=\"1\" step=\".001\" .value=\"${this.far}\" @input=${this.farInput.bind(this)}>\n <var>False Alarm Rate</var>\n </decidables-spinner>\n `;\n s = html`\n <decidables-spinner class=\"s bottom\" ?disabled=${!this.interactive} min=\"0\" step=\".001\" .value=\"${this.s}\" @input=${this.sInput.bind(this)}>\n <var class=\"math-var\">σ</var>\n </decidables-spinner>\n `;\n c = html`\n <decidables-spinner class=\"c bottom\" disabled step=\".001\" .value=\"${+this.c.toFixed(3)}\">\n <var class=\"math-var\">c</var>\n </decidables-spinner>\n `;\n } else {\n hr = html`<var class=\"hr\">Hit Rate</var>`;\n far = html`<var class=\"far\">False Alarm Rate</var>`;\n s = html`<var class=\"math-var s\">σ</var>`;\n c = html`<var class=\"math-var c\">c</var>`;\n }\n let equation;\n if (this.unequal) {\n equation = html`\n <tr>\n <td rowspan=\"2\">\n ${c}<span class=\"equals\">=</span><span class=\"bracket tight\">(</span>\n </td>\n <td class=\"underline bottom\">\n <span>1</span><span class=\"plus tight\">+</span><span>${s}<sup class=\"exp\">2</sup></span>\n </td>\n <td rowspan=\"2\">\n <span class=\"bracket tight\">)<sup class=\"exp\">−½</sup></span><span class=\"bracket tight\">(</span>\n </td>\n <td class=\"underline bottom\">\n <span class=\"minus tight\">−</span>${s}\n </td>\n <td rowspan=\"2\">\n <span class=\"bracket tight\">)</span><span class=\"bracket\">[</span><span class=\"tight\"><var class=\"math-greek phi tight\">Φ</var><sup class=\"exp\">−1</sup></span><span class=\"paren tight\">(</span>${hr}<span class=\"paren tight\">)</span><span class=\"plus\">+</span><span class=\"tight\"><var class=\"math-greek phi tight\">Φ</var><sup class=\"exp\">−1</sup></span><span class=\"paren tight\">(</span>${far}<span class=\"paren tight\">)</span><span class=\"bracket\">]</span>\n </td>\n </tr>\n <tr>\n <td>\n <span>2</span>\n </td>\n <td>\n <span><span>1</span><span class=\"plus\">+</span>${s}</span>\n </td>\n </tr>`;\n } else {\n equation = html`\n <tr>\n <td rowspan=\"2\">\n ${c}<span class=\"equals\">=</span>\n </td>\n <td class=\"underline\">\n <span class=\"minus tight\">−</span><span class=\"bracket tight\">[</span><span class=\"tight\"><var class=\"math-greek phi tight\">Φ</var><sup class=\"exp\">−1</sup></span><span class=\"paren tight\">(</span>${hr}<span class=\"paren tight\">)</span><span class=\"plus\">+</span><span class=\"tight\"><var class=\"math-greek phi tight\">Φ</var><sup class=\"exp\">−1</sup></span><span class=\"paren tight\">(</span>${far}<span class=\"paren tight\">)</span><span class=\"bracket tight\">]</span>\n </td>\n </tr>\n <tr>\n <td>\n <span>2</span>\n </td>\n </tr>`;\n }\n return html`\n <div class=\"holder\">\n <table class=\"equation\">\n <tbody>\n ${equation}\n </tbody>\n </table>\n </div>`;\n }\n}\n\ncustomElements.define('sdt-equation-hrfar2c', SDTEquationHrFar2C);\n","\nimport {html} from 'lit';\n\nimport '@decidables/decidables-elements/spinner';\nimport SDTMath from '@decidables/detectable-math';\n\nimport SDTEquation from './sdt-equation';\n\n/*\n SDTEquationHrFar2D element\n <sdt-equation-hrfar2d>\n\n Attributes:\n Hit Rate; False Alarm Rate; d';\n*/\nexport default class SDTEquationHrFar2D extends SDTEquation {\n static get properties() {\n return {\n unequal: {\n attribute: 'unequal',\n type: Boolean,\n reflect: true,\n },\n hr: {\n attribute: 'hit-rate',\n type: Number,\n reflect: true,\n },\n far: {\n attribute: 'false-alarm-rate',\n type: Number,\n reflect: true,\n },\n s: {\n attribute: 's',\n type: Number,\n reflect: true,\n },\n\n d: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n this.unequal = false;\n this.hr = 0;\n this.far = 0;\n this.s = 1;\n this.alignState();\n }\n\n alignState() {\n this.d = SDTMath.hrFar2D(this.hr, this.far, this.s);\n }\n\n sendEvent() {\n this.dispatchEvent(new CustomEvent('sdt-equation-hrfar2d-change', {\n detail: {\n hr: this.hr,\n far: this.far,\n s: this.s,\n d: this.d,\n },\n bubbles: true,\n }));\n }\n\n hrInput(event) {\n this.hr = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n farInput(event) {\n this.far = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n sInput(event) {\n this.s = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n render() {\n this.alignState();\n let hr;\n let far;\n let s;\n let d;\n if (this.numeric) {\n hr = html`\n <decidables-spinner class=\"hr bottom\" ?disabled=${!this.interactive} min=\"0\" max=\"1\" step=\".001\" .value=\"${this.hr}\" @input=${this.hrInput.bind(this)}>\n <var>Hit Rate</var>\n </decidables-spinner>\n `;\n far = html`\n <decidables-spinner class=\"far bottom\" ?disabled=${!this.interactive} min=\"0\" max=\"1\" step=\".001\" .value=\"${this.far}\" @input=${this.farInput.bind(this)}>\n <var>False Alarm Rate</var>\n </decidables-spinner>\n `;\n s = html`\n <decidables-spinner class=\"s bottom\" ?disabled=${!this.interactive} min=\"0\" step=\".001\" .value=\"${this.s}\" @input=${this.sInput.bind(this)}>\n <var class=\"math-var\">σ</var>\n </decidables-spinner>\n `;\n d = html`\n <decidables-spinner class=\"d bottom\" disabled step=\".001\" .value=\"${+this.d.toFixed(3)}\">\n <var class=\"math-var\">d′</var>\n </decidables-spinner>\n `;\n } else {\n hr = html`<var class=\"hr\">Hit Rate</var>`;\n far = html`<var class=\"far\">False Alarm Rate</var>`;\n s = html`<var class=\"math-var s\">σ</var>`;\n d = html`<var class=\"math-var d\">d′</var>`;\n }\n let equation;\n if (this.unequal) {\n equation = html`\n <tr>\n <td rowspan=\"2\">\n ${d}<span class=\"equals\">=</span><span class=\"bracket tight\">(</span>\n </td>\n <td class=\"underline bottom\">\n <span>1</span><span class=\"plus tight\">+</span><span>${s}<sup class=\"exp\">2</sup></span>\n </td>\n <td rowspan=\"2\">\n <span class=\"bracket tight\">)<sup class=\"exp\">−½</sup></span><span class=\"bracket\">[</span>${s}<span class=\"tight\"><var class=\"math-greek phi tight\">Φ</var><sup class=\"exp\">−1</sup></span><span class=\"paren tight\">(</span>${hr}<span class=\"paren tight\">)</span><span class=\"minus\">−</span><span class=\"tight\"><var class=\"math-greek phi tight\">Φ</var><sup class=\"exp\">−1</sup></span><span class=\"paren tight\">(</span>${far}<span class=\"paren tight\">)</span><span class=\"bracket\">]</span>\n </td>\n </tr>\n <tr>\n <td>\n <span>2</span>\n </td>\n </tr>`;\n } else {\n equation = html`\n <tr>\n <td>\n ${d}<span class=\"equals\">=</span><span class=\"tight\"><var class=\"math-greek phi tight\">Φ</var><sup class=\"exp\">−1</sup></span><span class=\"paren tight\">(</span>${hr}<span class=\"paren tight\">)</span><span class=\"minus\">−</span><span class=\"tight\"><var class=\"math-greek phi tight\">Φ</var><sup class=\"exp\">−1</sup></span><span class=\"paren tight\">(</span>${far}<span class=\"paren tight\">)</span>\n </td>\n </tr>`;\n }\n return html`\n <div class=\"holder\">\n <table class=\"equation\">\n <tbody>\n ${equation}\n </tbody>\n </table>\n </div>`;\n }\n}\n\ncustomElements.define('sdt-equation-hrfar2d', SDTEquationHrFar2D);\n","\nimport {html, css} from 'lit';\n\nimport DetectableElement from '../detectable-element';\n\n/*\n SDTExample Base Class - Not intended for instantiation!\n <sdt-example>\n*/\nexport default class SDTExample extends DetectableElement {\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n ---border: var(--border, 1px solid var(---color-border));\n display: inline-block;\n\n /* This makes IE11 happy */\n width: 100%;\n\n margin-bottom: 1rem;\n }\n\n .holder {\n display: flex;\n }\n\n .body {\n display: flex;\n\n flex-wrap: wrap;\n\n align-items: center;\n justify-content: left;\n\n padding: 0.625rem;\n\n border: var(---border);\n border-radius: 0.25rem;\n }\n\n .body ::slotted(*) {\n margin: 0.625rem;\n }\n\n /* HACK: Sibling selectors not working with ::slotted */\n /* .body > rdk-task + detectable-response,\n ::slotted(rdk-task) + ::slotted(detectable-response) { */\n .body ::slotted(detectable-response) {\n margin-left: 0;\n }\n\n /* HACK: Sibling selectors not working with ::slotted */\n /* .body > detectable-control + rdk-task,\n ::slotted(detectable-control) + ::slotted(rdk-task) {\n margin-left: 0;\n } */\n .body ::slotted(rdk-task) {\n margin-left: 0;\n }\n `,\n ];\n }\n\n render() { // eslint-disable-line class-methods-use-this\n return html`\n <div class=\"holder\">\n <div class=\"body\">\n <slot>Empty!</slot>\n </div>\n </div>`;\n }\n}\n\ncustomElements.define('sdt-example', SDTExample);\n","\nimport SDTMath from '@decidables/detectable-math';\n\nimport SDTExample from './sdt-example';\n\n/*\n SDTExample_DoubleInteractive element\n <sdt-example-interactive>\n*/\nexport default class SDTExampleDoubleInteractive extends SDTExample {\n firstUpdated(/* changedProperties */) {\n this.one = {};\n this.one.h = 95;\n this.one.m = 5;\n this.one.fa = 35;\n this.one.cr = 65;\n this.one.hr = SDTMath.hM2Hr(this.one.h, this.one.m);\n this.one.far = SDTMath.faCr2Far(this.one.fa, this.one.cr);\n this.one.d = SDTMath.hrFar2D(this.one.hr, this.one.far);\n this.one.c = SDTMath.hrFar2C(this.one.hr, this.one.far);\n\n this.two = {};\n this.two.h = 40;\n this.two.m = 60;\n this.two.fa = 20;\n this.two.cr = 80;\n this.two.hr = SDTMath.hM2Hr(this.two.h, this.two.m);\n this.two.far = SDTMath.faCr2Far(this.two.fa, this.two.cr);\n this.two.d = SDTMath.hrFar2D(this.two.hr, this.two.far);\n this.two.c = SDTMath.hrFar2C(this.two.hr, this.two.far);\n\n this.detectableTableOne = this.querySelector('detectable-table:nth-of-type(1)');\n this.detectableTableTwo = this.querySelector('detectable-table:nth-of-type(2)');\n this.rocSpace = this.querySelector('roc-space');\n this.sdtModelOne = this.querySelector('sdt-model:nth-of-type(1)');\n this.sdtModelTwo = this.querySelector('sdt-model:nth-of-type(2)');\n\n if (this.detectableTableOne) {\n this.detectableTableOne.h = this.one.h;\n this.detectableTableOne.m = this.one.m;\n this.detectableTableOne.fa = this.one.fa;\n this.detectableTableOne.cr = this.one.cr;\n\n this.detectableTableOne.addEventListener('detectable-table-change', (event) => {\n if (this.rocSpace) {\n this.rocSpace.set(event.detail.hr, event.detail.far, 'default', '↑');\n }\n\n if (this.sdtModelOne) {\n this.sdtModelOne.d = SDTMath.hrFar2D(event.detail.hr, event.detail.far);\n this.sdtModelOne.c = SDTMath.hrFar2C(event.detail.hr, event.detail.far);\n }\n });\n }\n\n if (this.detectableTableTwo) {\n this.detectableTableTwo.h = this.two.h;\n this.detectableTableTwo.m = this.two.m;\n this.detectableTableTwo.fa = this.two.fa;\n this.detectableTableTwo.cr = this.two.cr;\n\n this.detectableTableTwo.addEventListener('detectable-table-change', (event) => {\n if (this.rocSpace) {\n this.rocSpace.set(event.detail.hr, event.detail.far, 'two', '↓');\n }\n\n if (this.sdtModelTwo) {\n this.sdtModelTwo.d = SDTMath.hrFar2D(event.detail.hr, event.detail.far);\n this.sdtModelTwo.c = SDTMath.hrFar2C(event.detail.hr, event.detail.far);\n }\n });\n }\n\n if (this.rocSpace) {\n this.rocSpace.set(this.one.hr, this.one.far, 'default', '↑');\n this.rocSpace.set(this.two.hr, this.two.far, 'two', '↓');\n\n this.rocSpace.addEventListener('roc-point-change', (event) => {\n if (event.detail.name === 'default' && this.sdtModelOne) {\n this.sdtModelOne.d = event.detail.d;\n this.sdtModelOne.c = event.detail.c;\n } else if (event.detail.name === 'two' && this.sdtModelTwo) {\n this.sdtModelTwo.d = event.detail.d;\n this.sdtModelTwo.c = event.detail.c;\n }\n\n if (event.detail.name === 'default' && this.detectableTableOne) {\n const newh = Math.round(\n (this.detectableTableOne.h + this.detectableTableOne.m) * event.detail.hr,\n );\n const newm = (this.detectableTableOne.h + this.detectableTableOne.m) - newh;\n const newfa = Math.round(\n (this.detectableTableOne.fa + this.detectableTableOne.cr) * event.detail.far,\n );\n const newcr = (this.detectableTableOne.fa + this.detectableTableOne.cr) - newfa;\n this.detectableTableOne.h = newh;\n this.detectableTableOne.m = newm;\n this.detectableTableOne.fa = newfa;\n this.detectableTableOne.cr = newcr;\n } else if (event.detail.name === 'two' && this.detectableTableTwo) {\n const newh = Math.round(\n (this.detectableTableTwo.h + this.detectableTableTwo.m) * event.detail.hr,\n );\n const newm = (this.detectableTableTwo.h + this.detectableTableTwo.m) - newh;\n const newfa = Math.round(\n (this.detectableTableTwo.fa + this.detectableTableTwo.cr) * event.detail.far,\n );\n const newcr = (this.detectableTableTwo.fa + this.detectableTableTwo.cr) - newfa;\n this.detectableTableTwo.h = newh;\n this.detectableTableTwo.m = newm;\n this.detectableTableTwo.fa = newfa;\n this.detectableTableTwo.cr = newcr;\n }\n });\n }\n\n if (this.sdtModelOne) {\n this.sdtModelOne.d = this.one.d;\n this.sdtModelOne.c = this.one.c;\n\n this.sdtModelOne.addEventListener('sdt-model-change', (event) => {\n if (this.rocSpace) {\n this.rocSpace.setWithSDT(event.detail.d, event.detail.c, 'default', '↑');\n }\n\n if (this.detectableTableOne) {\n const newh = Math.round(\n (this.detectableTableOne.h + this.detectableTableOne.m) * event.detail.hr,\n );\n const newm = (this.detectableTableOne.h + this.detectableTableOne.m) - newh;\n const newfa = Math.round(\n (this.detectableTableOne.fa + this.detectableTableOne.cr) * event.detail.far,\n );\n const newcr = (this.detectableTableOne.fa + this.detectableTableOne.cr) - newfa;\n this.detectableTableOne.h = newh;\n this.detectableTableOne.m = newm;\n this.detectableTableOne.fa = newfa;\n this.detectableTableOne.cr = newcr;\n }\n });\n }\n\n if (this.sdtModelTwo) {\n this.sdtModelTwo.d = this.two.d;\n this.sdtModelTwo.c = this.two.c;\n\n this.sdtModelTwo.addEventListener('sdt-model-change', (event) => {\n if (this.rocSpace) {\n this.rocSpace.setWithSDT(event.detail.d, event.detail.c, 'two', '↓');\n }\n\n if (this.detectableTableTwo) {\n const newh = Math.round(\n (this.detectableTableTwo.h + this.detectableTableTwo.m) * event.detail.hr,\n );\n const newm = (this.detectableTableTwo.h + this.detectableTableTwo.m) - newh;\n const newfa = Math.round(\n (this.detectableTableTwo.fa + this.detectableTableTwo.cr) * event.detail.far,\n );\n const newcr = (this.detectableTableTwo.fa + this.detectableTableTwo.cr) - newfa;\n this.detectableTableTwo.h = newh;\n this.detectableTableTwo.m = newm;\n this.detectableTableTwo.fa = newfa;\n this.detectableTableTwo.cr = newcr;\n }\n });\n }\n }\n}\n\ncustomElements.define('sdt-example-double-interactive', SDTExampleDoubleInteractive);\n","\nimport SDTMath from '@decidables/detectable-math';\n\nimport SDTExample from './sdt-example';\n\n/*\n SDTExample_Human element\n <sdt-example-human>\n*/\nexport default class SDTExampleHuman extends SDTExample {\n firstUpdated(/* changedProperties */) {\n this.count = 1;\n\n this.detectableControl = this.querySelector('detectable-control');\n this.rdkTask = this.querySelector('rdk-task');\n this.detectableResponse = this.querySelector('detectable-response');\n this.detectableTable = this.querySelector('detectable-table');\n this.rocSpace = this.querySelector('roc-space');\n this.sdtModel = this.querySelector('sdt-model');\n\n if (this.rocSpace) {\n if (this.rocSpace.hasAttribute('history')) {\n this.rocSpace.set(0.5, 0.5, 'default', this.count);\n }\n }\n\n if (this.detectableControl && this.detectableControl.hasAttribute('trials')) {\n this.detectableControl.addEventListener('detectable-control-trials', (event) => {\n if (this.rdkTask) {\n this.rdkTask.trials = event.detail.trials;\n }\n\n if (this.detectableResponse) {\n this.detectableResponse.trialTotal = event.detail.trials;\n }\n });\n }\n\n if (this.detectableControl && this.detectableControl.hasAttribute('duration')) {\n this.detectableControl.addEventListener('detectable-control-duration', (event) => {\n if (this.rdkTask) {\n this.rdkTask.duration = event.detail.duration;\n this.rdkTask.wait = event.detail.duration;\n this.rdkTask.iti = event.detail.duration;\n }\n });\n }\n\n if (this.detectableControl && this.detectableControl.hasAttribute('coherence')) {\n this.detectableControl.addEventListener('detectable-control-coherence', (event) => {\n if (this.rdkTask) {\n this.rdkTask.coherence = event.detail.coherence;\n }\n });\n }\n\n if (this.detectableControl && this.detectableControl.hasAttribute('payoff')) {\n this.detectableControl.addEventListener('detectable-control-payoff', (event) => {\n if (this.detectableResponse) {\n this.detectableResponse.hPayoff = event.detail.payoff;\n this.detectableResponse.mPayoff = -event.detail.payoff + 0; // Get rid of -0\n this.detectableResponse.faPayoff = -(100 - event.detail.payoff) + 0; // Get rid of -0\n this.detectableResponse.crPayoff = (100 - event.detail.payoff);\n }\n if (this.detectableTable) {\n this.detectableTable.hPayoff = event.detail.payoff;\n this.detectableTable.mPayoff = -event.detail.payoff + 0; // Get rid of -0\n this.detectableTable.faPayoff = -(100 - event.detail.payoff) + 0; // Get rid of -0\n this.detectableTable.crPayoff = (100 - event.detail.payoff);\n }\n });\n }\n\n if (this.detectableControl && this.detectableControl.hasAttribute('run')) {\n this.detectableControl.addEventListener('detectable-control-run', (/* event */) => {\n if (this.rdkTask) {\n this.rdkTask.running = true;\n }\n });\n }\n\n if (this.detectableControl && this.detectableControl.hasAttribute('pause')) {\n this.detectableControl.addEventListener('detectable-control-pause', (/* event */) => {\n if (this.rdkTask) {\n this.rdkTask.running = false;\n }\n });\n }\n\n if (this.detectableControl && this.detectableControl.hasAttribute('reset')) {\n this.detectableControl.addEventListener('detectable-control-reset', (/* event */) => {\n if (this.rdkTask) {\n this.rdkTask.reset();\n }\n\n if (this.detectableResponse) {\n this.detectableResponse.reset();\n }\n\n if (this.detectableTable) {\n this.detectableTable.h = 0;\n this.detectableTable.m = 0;\n this.detectableTable.fa = 0;\n this.detectableTable.cr = 0;\n }\n\n if (this.rocSpace) {\n if (this.rocSpace.hasAttribute('history')) {\n this.count += 1;\n this.rocSpace.set(0.5, 0.5, `point${this.count}`, this.count);\n } else {\n this.rocSpace.hr = 0.5;\n this.rocSpace.far = 0.5;\n }\n }\n\n if (this.sdtModel) {\n this.sdtModel.d = 0;\n this.sdtModel.c = 0;\n }\n });\n }\n\n if (this.rdkTask) {\n if (this.detectableResponse) {\n this.detectableResponse.trialTotal = this.rdkTask.trials;\n }\n }\n\n if (this.rdkTask) {\n this.rdkTask.addEventListener('rdk-trial-start', (event) => {\n if (this.detectableResponse) {\n this.detectableResponse.start(event.detail.signal, event.detail.trial);\n }\n });\n }\n\n if (this.rdkTask) {\n this.rdkTask.addEventListener('rdk-trial-end', (/* event */) => {\n if (this.detectableResponse) {\n this.detectableResponse.stop();\n }\n });\n }\n\n if (this.rdkTask) {\n this.rdkTask.addEventListener('rdk-block-end', (/* event */) => {\n if (this.detectableControl) {\n this.detectableControl.complete();\n }\n });\n }\n\n if (this.detectableResponse) {\n this.detectableResponse.addEventListener('detectable-response', (event) => {\n if (this.detectableTable) {\n this.detectableTable.h = event.detail.h;\n this.detectableTable.m = event.detail.m;\n this.detectableTable.fa = event.detail.fa;\n this.detectableTable.cr = event.detail.cr;\n }\n\n const newhr = SDTMath.hM2Hr((event.detail.h + 1), (event.detail.m + 1));\n const newfar = SDTMath.faCr2Far((event.detail.fa + 1), (event.detail.cr + 1));\n\n if (this.rocSpace) {\n if (this.rocSpace.hasAttribute('history')) {\n this.rocSpace.set(newhr, newfar, (this.count === 1) ? 'default' : `point${this.count}`, this.count);\n } else {\n this.rocSpace.hr = newhr;\n this.rocSpace.far = newfar;\n }\n }\n\n if (this.sdtModel) {\n this.sdtModel.d = SDTMath.hrFar2D(newhr, newfar);\n this.sdtModel.c = SDTMath.hrFar2C(newhr, newfar);\n }\n });\n }\n }\n}\n\ncustomElements.define('sdt-example-human', SDTExampleHuman);\n","\nimport SDTMath from '@decidables/detectable-math';\n\nimport SDTExample from './sdt-example';\n\n/*\n SDTExample_Interactive element\n <sdt-example-interactive>\n*/\nexport default class SDTExampleInteractive extends SDTExample {\n firstUpdated(/* changedProperties */) {\n this.detectableControl = this.querySelector('detectable-control');\n this.detectableTable = this.querySelector('detectable-table');\n this.rocSpace = this.querySelector('roc-space');\n this.sdtModel = this.querySelector('sdt-model');\n\n this.rocSpaces = this.querySelectorAll('roc-space');\n\n if (this.detectableControl && this.detectableControl.hasAttribute('color')) {\n this.detectableControl.addEventListener('detectable-control-color', (event) => {\n if (this.sdtModel) {\n this.sdtModel.color = event.detail.color;\n }\n\n if (this.detectableTable) {\n this.detectableTable.color = event.detail.color;\n }\n });\n }\n\n if (this.detectableControl) {\n this.detectableControl.addEventListener('detectable-control-z-roc', (event) => {\n if (this.rocSpaces.length > 0) {\n this.rocSpaces.forEach((rocSpace) => {\n rocSpace.zRoc = event.detail.zRoc;\n });\n }\n });\n }\n\n if (this.detectableTable) {\n if (this.rocSpace) {\n this.rocSpace.hr = SDTMath.hM2Hr(this.detectableTable.h, this.detectableTable.m);\n this.rocSpace.far = SDTMath.faCr2Far(this.detectableTable.fa, this.detectableTable.cr);\n }\n\n if (this.sdtModel) {\n this.sdtModel.d = SDTMath.hrFar2D(\n SDTMath.hM2Hr(this.detectableTable.h, this.detectableTable.m),\n SDTMath.faCr2Far(this.detectableTable.fa, this.detectableTable.cr),\n this.sdtModel.s,\n );\n this.sdtModel.c = SDTMath.hrFar2C(\n SDTMath.hM2Hr(this.detectableTable.h, this.detectableTable.m),\n SDTMath.faCr2Far(this.detectableTable.fa, this.detectableTable.cr),\n this.sdtModel.s,\n );\n }\n\n this.detectableTable.addEventListener('detectable-table-change', (event) => {\n if (this.rocSpace) {\n this.rocSpace.far = event.detail.far;\n this.rocSpace.hr = event.detail.hr;\n }\n\n if (this.sdtModel) {\n this.sdtModel.d = SDTMath.hrFar2D(event.detail.hr, event.detail.far, this.sdtModel.s);\n this.sdtModel.c = SDTMath.hrFar2C(event.detail.hr, event.detail.far, this.sdtModel.s);\n }\n });\n }\n\n if (this.rocSpace) {\n if (this.sdtModel && !this.detectableTable) {\n this.sdtModel.d = SDTMath.hrFar2D(this.rocSpace.hr, this.rocSpace.far, this.rocSpace.s);\n this.sdtModel.c = SDTMath.hrFar2C(this.rocSpace.hr, this.rocSpace.far, this.rocSpace.s);\n this.sdtModel.s = this.rocSpace.s;\n }\n\n this.rocSpace.addEventListener('roc-point-change', (event) => {\n if (this.sdtModel) {\n this.sdtModel.d = event.detail.d;\n this.sdtModel.c = event.detail.c;\n this.sdtModel.s = event.detail.s;\n }\n\n if (this.detectableTable) {\n const newh = Math.round(\n (this.detectableTable.h + this.detectableTable.m) * event.detail.hr,\n );\n const newm = (this.detectableTable.h + this.detectableTable.m) - newh;\n const newfa = Math.round(\n (this.detectableTable.fa + this.detectableTable.cr) * event.detail.far,\n );\n const newcr = (this.detectableTable.fa + this.detectableTable.cr) - newfa;\n this.detectableTable.h = newh;\n this.detectableTable.m = newm;\n this.detectableTable.fa = newfa;\n this.detectableTable.cr = newcr;\n }\n });\n }\n\n if (this.sdtModel) {\n this.sdtModel.addEventListener('sdt-model-change', (event) => {\n if (this.rocSpaces.length > 0) {\n this.rocSpaces.forEach((rocSpace) => {\n rocSpace.setWithSDT(event.detail.d, event.detail.c, 'default', '', event.detail.s);\n });\n }\n\n if (this.detectableTable) {\n const newh = Math.round(\n (this.detectableTable.h + this.detectableTable.m) * event.detail.hr,\n );\n const newm = (this.detectableTable.h + this.detectableTable.m) - newh;\n const newfa = Math.round(\n (this.detectableTable.fa + this.detectableTable.cr) * event.detail.far,\n );\n const newcr = (this.detectableTable.fa + this.detectableTable.cr) - newfa;\n this.detectableTable.h = newh;\n this.detectableTable.m = newm;\n this.detectableTable.fa = newfa;\n this.detectableTable.cr = newcr;\n }\n });\n }\n }\n}\n\ncustomElements.define('sdt-example-interactive', SDTExampleInteractive);\n","\nimport SDTMath from '@decidables/detectable-math';\n\nimport SDTExample from './sdt-example';\n\n/*\n SDTExample_Model element\n <sdt-example-model>\n*/\nexport default class SDTExampleModel extends SDTExample {\n firstUpdated(/* changedProperties */) {\n this.count = 1;\n\n this.detectableControl = this.querySelector('detectable-control');\n this.rdkTask = this.querySelector('rdk-task');\n this.sdtModel = this.querySelector('sdt-model');\n this.detectableResponse = this.querySelector('detectable-response');\n this.detectableTable = this.querySelector('detectable-table');\n this.rocSpace = this.querySelector('roc-space');\n\n if (this.detectableControl && this.detectableControl.hasAttribute('color')) {\n this.detectableControl.addEventListener('detectable-control-color', (event) => {\n if (this.sdtModel) {\n this.sdtModel.color = event.detail.color;\n }\n\n if (this.detectableTable) {\n this.detectableTable.color = event.detail.color;\n }\n });\n }\n\n if (this.detectableControl && this.detectableControl.hasAttribute('duration')) {\n this.detectableControl.addEventListener('detectable-control-duration', (event) => {\n if (this.rdkTask) {\n this.rdkTask.duration = event.detail.duration;\n this.rdkTask.wait = event.detail.duration;\n this.rdkTask.iti = event.detail.duration;\n }\n });\n }\n\n if (this.detectableControl && this.detectableControl.hasAttribute('trials')) {\n this.detectableControl.addEventListener('detectable-control-trials', (event) => {\n if (this.rdkTask) {\n this.rdkTask.trials = event.detail.trials;\n }\n\n if (this.detectableResponse) {\n this.detectableResponse.trialTotal = event.detail.trials;\n }\n });\n }\n\n if (this.detectableControl && this.detectableControl.hasAttribute('coherence')) {\n this.detectableControl.addEventListener('detectable-control-coherence', (event) => {\n if (this.rdkTask) {\n this.rdkTask.coherence = event.detail.coherence;\n }\n });\n }\n\n if (this.detectableControl && this.detectableControl.hasAttribute('run')) {\n this.detectableControl.addEventListener('detectable-control-run', (/* event */) => {\n if (this.rdkTask) {\n this.rdkTask.running = true;\n }\n if (this.sdtModel) {\n this.sdtModel.resumeTrial();\n }\n });\n }\n\n if (this.detectableControl && this.detectableControl.hasAttribute('pause')) {\n this.detectableControl.addEventListener('detectable-control-pause', (/* event */) => {\n if (this.rdkTask) {\n this.rdkTask.running = false;\n }\n if (this.sdtModel) {\n this.sdtModel.pauseTrial();\n }\n });\n }\n\n if (this.detectableControl && this.detectableControl.hasAttribute('reset')) {\n this.detectableControl.addEventListener('detectable-control-reset', (/* event */) => {\n if (this.rdkTask) {\n this.rdkTask.reset();\n }\n\n if (this.detectableResponse) {\n this.detectableResponse.reset();\n }\n\n if (this.sdtModel) {\n this.sdtModel.reset();\n }\n\n if (this.detectableTable) {\n this.detectableTable.h = 0;\n this.detectableTable.m = 0;\n this.detectableTable.fa = 0;\n this.detectableTable.cr = 0;\n }\n\n if (this.rocSpace) {\n if (this.rocSpace.hasAttribute('history')) {\n this.count += 1;\n this.rocSpace.set(0.5, 0.5, `point${this.count}`, '', 1);\n } else {\n this.rocSpace.hr = 0.5;\n this.rocSpace.far = 0.5;\n }\n }\n });\n }\n\n if (this.rdkTask) {\n if (this.detectableResponse) {\n this.detectableResponse.trialTotal = this.rdkTask.trials;\n }\n }\n\n if (this.rdkTask) {\n this.rdkTask.addEventListener('rdk-trial-start', (event) => {\n if (this.detectableResponse) {\n this.detectableResponse.start(event.detail.signal, event.detail.trial);\n }\n if (this.sdtModel) {\n this.sdtModel.trial(\n event.detail.trial,\n event.detail.signal,\n event.detail.duration,\n event.detail.wait,\n event.detail.iti,\n );\n }\n });\n }\n\n if (this.rdkTask) {\n this.rdkTask.addEventListener('rdk-trial-middle', (/* event */) => {\n // if (this.sdtModel) {\n // this.sdtModel.trial(event.detail.trial, event.detail.signal);\n // }\n });\n }\n\n if (this.rdkTask) {\n this.rdkTask.addEventListener('rdk-trial-end', (/* event */) => {\n if (this.detectableResponse) {\n this.detectableResponse.stop();\n }\n });\n }\n\n if (this.rdkTask) {\n this.rdkTask.addEventListener('rdk-block-end', (/* event */) => {\n if (this.detectableControl) {\n this.detectableControl.complete();\n }\n });\n }\n\n if (this.sdtModel) {\n this.sdtModel.addEventListener('detectable-response', (event) => {\n if (this.detectableResponse) {\n this.detectableResponse.responded(event.detail.response);\n }\n\n if (this.detectableTable) {\n this.detectableTable.h = event.detail.h;\n this.detectableTable.m = event.detail.m;\n this.detectableTable.fa = event.detail.fa;\n this.detectableTable.cr = event.detail.cr;\n }\n\n if (this.rocSpace) {\n this.rocSpace.hr = SDTMath.hM2Hr((event.detail.h), (event.detail.m));\n this.rocSpace.far = SDTMath.faCr2Far((event.detail.fa), (event.detail.cr));\n }\n });\n }\n\n if (this.sdtModel) {\n this.sdtModel.addEventListener('sdt-model-change', (event) => {\n if (this.detectableTable) {\n this.detectableTable.h = event.detail.h;\n this.detectableTable.m = event.detail.m;\n this.detectableTable.fa = event.detail.fa;\n this.detectableTable.cr = event.detail.cr;\n }\n\n if (this.rocSpace) {\n this.rocSpace.hr = SDTMath.hM2Hr((event.detail.h), (event.detail.m));\n this.rocSpace.far = SDTMath.faCr2Far((event.detail.fa), (event.detail.cr));\n }\n });\n }\n }\n}\n\ncustomElements.define('sdt-example-model', SDTExampleModel);\n","import * as d3 from 'd3';\n\nimport SDTExample from './sdt-example';\n\n/*\n SDTExampleUnequal element\n <sdt-example-unequal>\n*/\nexport default class SDTExampleUnequal extends SDTExample {\n firstUpdated(/* changedProperties */) {\n this.detectableControl = this.querySelector('detectable-control');\n this.rocSpace = this.querySelector('roc-space');\n this.sdtModel = this.querySelector('sdt-model');\n\n if (this.detectableControl) {\n this.detectableControl.addEventListener('detectable-control-z-roc', (event) => {\n this.rocSpace.zRoc = event.detail.zRoc;\n });\n }\n\n if (this.rocSpace) {\n this.rocSpace.setWithSDT(1, 0, 'default', '', 1); // Set 'default' to equal variance for contours\n }\n\n if (this.sdtModel) {\n if (this.rocSpace) {\n d3.range(-1.5, 1.6, 0.5).forEach((c, index) => {\n this.rocSpace.setWithSDT(this.sdtModel.d, c, `point${index}`, '', this.sdtModel.s);\n });\n }\n\n this.sdtModel.addEventListener('sdt-model-change', (event) => {\n if (this.rocSpace) {\n d3.range(-1.5, 1.6, 0.5).forEach((c, index) => {\n this.rocSpace.setWithSDT(event.detail.d, c, `point${index}`, '', event.detail.s);\n });\n }\n });\n }\n }\n}\n\ncustomElements.define('sdt-example-unequal', SDTExampleUnequal);\n"],"names":["supportsAdoptingStyleSheets","window","ShadowRoot","undefined","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","constructionToken","Symbol","styleSheetCache","Map","CSSResult","constructor","cssText","safeToken","this","_$cssResult$","Error","styleSheet","get","set","replaceSync","toString","unsafeCSS","value","String","css","strings","values","length","reduce","acc","v","idx","adoptStyles","renderRoot","styles","adoptedStyleSheets","map","s","forEach","style","document","createElement","nonce","litNonce","setAttribute","textContent","appendChild","getCompatibleStyle","sheet","cssRules","rule","trustedTypes","emptyStringForBooleanAttribute","emptyScript","polyfillSupport","reactiveElementPolyfillSupport","defaultConverter","toAttribute","type","Boolean","Object","Array","JSON","stringify","fromAttribute","fromValue","Number","parse","e","notEqual","old","defaultPropertyDeclaration","attribute","converter","reflect","hasChanged","ReactiveElement","super","_initialize","static","__updatePromise","Promise","res","enableUpdating","_$changedProperties","__saveInstanceProperties","requestUpdate","_initializers","i","addController","controller","__controllers","push","isConnected","hostConnected","removeController","splice","indexOf","elementProperties","_v","p","hasOwnProperty","__instanceProperties","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","elementStyles","connectedCallback","c","_requestedUpdate","disconnectedCallback","hostDisconnected","attributeChangedCallback","name","_old","_$attributeToProperty","__propertyToAttribute","options","attr","__attributeNameForProperty","attrValue","__reflectingProperty","removeAttribute","ctor","propName","__attributeToPropertyMap","getPropertyOptions","r","oldValue","shouldRequestUpdate","has","__reflectingProperties","isUpdatePending","__enqueueUpdate","async","reject","result","scheduleUpdate","performUpdate","hasUpdated","shouldUpdate","changedProperties","willUpdate","hostUpdate","update","__markUpdated","_$didUpdate","_changedProperties","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","k","initializer","observedAttributes","finalize","attributes","state","noAccessor","key","descriptor","getPropertyDescriptor","defineProperty","configurable","enumerable","finalized","superCtor","getPrototypeOf","props","properties","propKeys","getOwnPropertyNames","getOwnPropertySymbols","createProperty","finalizeStyles","isArray","Set","flat","Infinity","reverse","unshift","toLowerCase","HTMLElement","mode","globalThis","reactiveElementVersions","policy","createPolicy","createHTML","marker","Math","random","slice","markerMatch","nodeMarker","d","createMarker","createComment","isPrimitive","isIterable","iterator","textEndRegex","commentEndRegex","comment2EndRegex","tagEndRegex","singleQuoteAttrEndRegex","doubleQuoteAttrEndRegex","rawTextElement","tag","_$litType$","html","svg","noChange","for","nothing","templateCache","WeakMap","render","container","partOwnerNode","renderBefore","part","_$litPart$","endNode","ChildPart","insertBefore","_$setValue","walker","createTreeWalker","getTemplateHtml","l","attrNames","rawTextEndRegex","regex","attrName","match","attrNameEndIndex","lastIndex","exec","test","RegExp","end","startsWith","htmlResult","Template","node","nodeIndex","attrNameIndex","partCount","parts","el","currentNode","content","svgElement","firstChild","remove","append","childNodes","nextNode","nodeType","hasAttributes","attrsToRemove","getAttributeNames","endsWith","realName","statics","getAttribute","split","m","index","PropertyPart","BooleanAttributePart","EventPart","AttributePart","tagName","data","_options","innerHTML","resolveDirective","attributeIndex","parent","currentDirective","__directives","__directive","nextDirectiveConstructor","_$litDirective$","_$AO","n","_$initialize","_$resolve","TemplateInstance","template","_$template","_$parent","parentNode","_$isConnected","_clone","fragment","creationScope","importNode","partIndex","templatePart","nextSibling","ElementPart","_parts","_update","startNode","_$startNode","_$endNode","__isConnected","directiveParent","_$committedValue","_$clear","_commitText","_commitTemplateResult","_commitNode","_commitIterable","_insert","ref","createTextNode","_$getTemplate","h","instance","itemParts","itemPart","item","from","start","_$notifyConnectionChanged","setConnected","element","fill","noCommit","valueIndex","change","_commitValue","newListener","oldListener","shouldRemoveListener","capture","once","passive","shouldAddListener","removeEventListener","addEventListener","handleEvent","event","call","host","litHtmlPolyfillSupport","litHtmlVersions","LitElement","renderOptions","__childPart","_$litElement$","litElementHydrateSupport","litElementPolyfillSupport","litElementVersions","ascending","a","b","NaN","bisector","f","delta","compare1","compare2","x","left","lo","hi","mid","right","center","number","ascendingBisect","bisectRight","count","valueof","extent","min","max","Adder","_partials","Float64Array","_n","j","y","abs","identity","array","constant","e10","sqrt","e5","e2","ticks","stop","step","tickIncrement","isFinite","r0","round","r1","power","floor","log","LN10","error","pow","tickStep","step0","step1","nice","prestep","ceil","thresholdSturges","LN2","bin","domain","threshold","sturges","histogram","xz","x0","x1","tz","tn","pop","shift","bins","bisect","_","arguments","thresholds","flatten","arrays","merge","range","top","bottom","epsilon","translateX","translateY","scale","offset","bandwidth","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","devicePixelRatio","transform","context","apply","format","spacing","range0","range1","position","copy","selection","path","selectAll","tick","order","tickExit","exit","tickEnter","enter","line","select","text","insert","transition","filter","each","tickSize","axisRight","axisBottom","axisLeft","noop","dispatch","t","Dispatch","parseTypenames","typenames","types","trim","on","typename","callback","T","that","args","concat","xhtml","xlink","xml","xmlns","prefix","namespaces","space","local","creatorInherit","ownerDocument","uri","namespaceURI","documentElement","createElementNS","creatorFixed","fullname","namespace","none","selector","querySelector","groups","_groups","subgroups","group","subgroup","subnode","__data__","Selection","_parents","empty","querySelectorAll","arrayAll","selectorAll","parents","matches","childMatcher","find","childFind","children","childFirst","firstElementChild","childrenFilter","matcher","_enter","sparse","EnterNode","datum","_next","_parent","child","next","bindIndex","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","keyValue","delete","bind","arraylike","enterGroup","updateGroup","exitGroup","i0","i1","previous","_exit","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","compare","compareNode","sortgroups","sortgroup","sort","size","attrRemove","attrRemoveNS","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","getAttributeNS","defaultView","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","add","join","contains","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textConstant","textFunction","htmlRemove","htmlConstant","htmlFunction","raise","lower","previousSibling","create","creator","constantNull","before","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","deep","property","contextListener","listener","onRemove","__on","o","onAdd","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","root","selection_selection","selection_select","selection_selectAll","selectChild","selection_selectChild","selectChildren","selection_selectChildren","selection_filter","selection_data","selection_enter","selection_exit","selection_join","selection_merge","selection_order","selection_sort","selection_call","nodes","selection_nodes","selection_node","selection_size","selection_empty","selection_each","selection_attr","selection_style","selection_property","classed","selection_classed","selection_text","selection_html","selection_raise","selection_lower","selection_append","selection_insert","selection_remove","selection_clone","selection_datum","selection_on","selection_dispatch","selection_iterator","sourceEvent","currentTarget","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","getBoundingClientRect","rect","clientLeft","clientTop","pageX","pageY","nonpassive","nonpassivecapture","nopropagation","stopImmediatePropagation","preventDefault","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","setTimeout","DragEvent","subject","target","identifier","active","dx","dy","defineProperties","defaultFilter","ctrlKey","button","defaultContainer","defaultSubject","defaultTouchable","navigator","maxTouchPoints","touchable","gestures","listeners","mousedownx","mousedowny","mousemoving","touchending","clickDistance2","drag","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","mousemoved","mouseupped","nodrag","mouse","touches","changedTouches","clearTimeout","touch","pointer","p0","clickDistance","factory","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","define","color","channels","assign","displayable","rgb","hex","color_formatHex","formatHex","formatHsl","color_formatHsl","formatRgb","color_formatRgb","hslConvert","parseInt","rgbn","Rgb","rgba","hsla","g","rgbConvert","opacity","rgb_formatHex","rgb_formatRgb","isNaN","Hsl","hsl","m2","hsl2rgb","linear","exponential","gamma","nogamma","rgbGamma","colorRgb","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","Date","setTime","reA","reB","source","zero","one","bi","am","bm","bs","q","date","numberArray","valueOf","object","degrees","PI","rotate","skewX","scaleX","scaleY","atan2","atan","svgNode","parseCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","parseSvg","baseVal","consolidate","matrix","interpolateTransform","pxComma","pxParen","degParen","translate","xa","ya","xb","yb","interpolateTransformCss","interpolateTransformSvg","frame","timeout","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","restart","delay","time","TypeError","sleep","timerFlush","wake","nap","poke","t0","t1","t2","clearInterval","setInterval","elapsed","total","_restart","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","id","timing","schedules","__transition","tween","duration","ease","init","schedule","self","interrupt","tweenRemove","tween0","tween1","tweenFunction","_id","tweenValue","interpolateNumber","interpolateRgb","interpolateString","interpolate","value1","string00","string1","interpolate0","string0","string10","attrTween","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","easeVarying","Transition","_name","every","onFunction","on0","on1","sit","removeFunction","inherit","styleNull","styleMaybeRemove","listener0","styleTween","styleInterpolate","textInterpolate","textTween","id0","id1","newId","resolve","cancel","selection_prototype","transition_select","transition_selectAll","transition_filter","transition_merge","transition_selection","transition_transition","transition_on","transition_attr","transition_attrTween","transition_style","transition_styleTween","transition_text","transition_textTween","transition_remove","transition_tween","transition_delay","transition_duration","transition_ease","transition_easeVarying","transition_end","cubicIn","cubicOut","cubicInOut","defaultTiming","easeCubicInOut","selection_interrupt","selection_transition","pi","tau","tauEpsilon","Path","_x0","_y0","_x1","_y1","moveTo","closePath","lineTo","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","cos","sin","cw","da","w","ring","area","hole","ringContains","xi","yi","pj","xj","yj","segmentContains","collinear","within","cases","smooth","smoothLinear","contours","ts","contour","polygons","holes","isorings","polygon","coordinates","fragmentByStart","fragmentByEnd","t3","stitch","startIndex","endIndex","xt","yt","v0","v1","_0","_1","toLocaleString","replace","formatDecimalParts","toExponential","coefficient","grouping","thousands","width","substring","numerals","re","formatSpecifier","specifier","FormatSpecifier","align","sign","symbol","comma","precision","out","prefixExponent","exponent","toFixed","formatDecimal","toPrecision","formatRounded","formatPrefixAuto","toUpperCase","prefixes","locale","formatGroup","currencyPrefix","currency","currencySuffix","decimal","formatNumerals","percent","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","charCodeAt","padding","formatPrefix","defaultLocale","formatLocale","radians","streamGeometry","geometry","stream","streamGeometryType","streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","lines","rejoin","Intersection","points","other","entry","z","segments","compareIntersection","startInside","clip","segment","p1","pointEqual","link","current","isSubject","ax","ay","bx","by","clipMax","clipMin","clipRectangle","visible","to","direction","corner","comparePoint","ca","cb","activeStream","bufferStream","clipBuffer","x__","y__","v__","x_","y_","v_","first","clean","clipStream","polygonInside","winding","b0","b1","cleanInside","clipRejoin","linePoint","clipLine","areaSum","areaRingSum","x00","y00","areaStream","areaRingStart","areaRingEnd","areaPointFirst","areaPoint","boundsStream","boundsPoint","bounds","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_context","_radius","pointRadius","_line","_point","lengthSum","lengthRing","lengthStream","lengthPointFirst","lengthPoint","PathString","_string","_circle","circle","radius","projection","projectionStream","contextStream","pathArea","measure","pathMeasure","pathBounds","pathCentroid","transformer","methods","TransformStream","fit","fitBounds","clipExtent","geoStream","fitExtent","fitSize","fitWidth","fitHeight","height","tx","ty","sx","sy","alpha","sa","kx","ky","postclip","cache","cacheStream","reset","invert","angle","reflectX","reflectY","initRange","constants","unit","normalize","clamper","bimap","d0","d1","polymap","clamp","unknown","interpolateValue","untransform","piecewise","output","input","rescale","rangeRound","interpolateRound","u","continuous","precisionPrefix","precisionRound","precisionFixed","linearish","maxIter","colors","Linear","areaStart","areaEnd","defined","curve","curveLinear","pointX","pointY","defined0","buffer","DecidablesElement","uniqueId","getComputedStyleValue","d3","ID","greys","light75","light50","light25","dark25","dark50","dark75","elevations","baselineColor","baselineColorString","inverseBaselineColor","inverseBaselineColorString","opacityUmbra","opacityPenumbra","opacityAmbient","opacityBoost","mapUmbra","mapPenumbra","mapAmbient","elevation","umbraO","shadows","penumbraO","ambientO","umbraC","penumbraC","ambientC","umbraM","penumbraM","ambientM","umbraS","penumbraS","ambientS","erodeRadius","filters","cssBoxShadow","DecidablesButton","disabled","customElements","ifDefined","DecidablesSlider","changed","inputted","DecidablesSpinner","DecidablesSwitch","checked","DecidablesToggle","DecidablesToggleOption","DecidablesConverterSet","DetectableElement","interactive","fa","cr","hr","far","present","absent","correct","nr","keys","cur","lights","darks","RDKTask","coherence","probability","wait","iti","trials","running","lifetime","speed","rem","firstUpdate","COHERENT","RANDOM","dots","trial","states","baseTime","pauseTime","startTime","lastTime","currentDirection","signals","signal","runner","xScale","yScale","parseFloat","getDimensions","elementWidth","elementHeight","elementSize","margin","svgUpdate","svgEnter","svgMerge","plotEnter","plotMerge","underlayerEnter","underlayerMerge","contentMerge","dotsUpdate","overlayerEnter","overlayerMerge","run","dotUpdate","fixationUpdate","queryUpdate","realTime","currentTime","elapsedTime","frameTime","newTrial","newDot","dot","birth","directionR","distance2","radius2","fixationEnter","dotEnter","queryEnter","module","jStat","calcRdx","val","LOG10E","arg","isFunction","isNumber","num","toVector","arr","_init","fn","seq","toArray","utils","_random_fn","setRandom","obj","rows","cols","dimensions","row","rowa","col","submat","arange","ind","column","cola","diag","nrow","antidiag","transpose","objArr","func","toAlter","ncol","cumreduce","alter","retZero","zeros","retOne","ones","rand","retIdent","symmetric","clear","hival","cnt","rl","_slice","rcSlice","colSlice","rowSlice","sliceAssign","A","B","nl","ml","diagonal","diagArray","mat","jProto","funcs","passfunc","results","ascNum","sum","sumsqrd","sumsqerr","mean","tmp","sumrow","product","prod","low","high","unique","hash","_arr","meansqerr","geomean","median","arrlen","cumsum","cumprod","diff","diffs","arrLen","rank","distinctNumbers","numberCounts","sortedDistinctNumbers","numberRanks","currentRank","last","maxCount","numMaxCount","mode_arr","variance","flag","pooledvariance","samples","deviation","dev","stdev","pooledstdev","meandev","meddev","coeffvar","quartiles","quantiles","quantilesArray","alphap","betap","sortedArray","quantileVals","aleph","percentile","exclusive","realIndex","frac","percentileOfScore","score","kind","counter","len","strict","binCnt","binWidth","covariance","arr1","arr2","arr1Len","sq_dev","corrcoeff","spearmancoeff","stanMoment","mu","sigma","skewSum","skewness","kurtosis","fullbool","tmpthis","callbackFunction","argsToPass","curriedFunction","vector","gammaln","cof","ser","xx","loggam","xp","gl","gl0","gammafn","fact","xden","xnum","gammap","lowRegGamma","aln","ap","del","ITMAX","an","exp","factorialln","factorial","combination","combinationln","permutation","betafn","betaln","betacf","fpmin","qab","qap","qam","aa","gammapinv","EPS","gln","err","pp","lna1","afac","erf","isneg","dd","erfc","erfcinv","ibetainv","lna","lnb","al","ibeta","bt","randn","randg","shape","oalph","a2","_a","_b","_c","newthis","sample","vals","fnfunc","beta","pdf","cdf","inv","centralF","df1","df2","binomial","cauchy","chisquare","dof","rate","invgamma","kumaraswamy","lognormal","noncentralt","ncp","tol","studentt","min_iterations","flip","prob","normal","lastvalue","std","pareto","SQRT2","dof2","weibull","uniform","betinc","eps","m9","c9","betacdf","negbin","hypgeom","N","scaledPDF","samplesDone","scaledCDF","factor","poisson","sumarr","sampleSmall","L","sampleLarge","lam","U","V","slam","loglam","invalpha","vr","us","triangular","arcsine","asin","laplaceSign","laplace","tukeyWprob","rr","cc","nleg","ihalf","C1","C2","C3","bb","wlar","wincr1","wincr2","xleg","aleg","qsqz","pr_w","wincr","blb","binc","bub","einsum","cc1","wi","elsum","jj","ac","qexpo","pplus","pminus","rinsum","tukeyQinv","q0","q1","p2","q2","p3","q3","p4","q4","c1","c2","c3","c4","c5","vmax","ps","tukey","nmeans","df","nlegq","ihalfq","eps1","eps2","dhaf","dquar","deigh","dlarg","ulen1","ulen2","ulen3","ulen4","xlegq","alegq","f2","f2lf","f21","ff4","ulen","ans","otsum","twa1","wprb","rotsum","maxiter","valx0","valx1","iter","xabs","isUsable","subtract","divide","multiply","nrescols","rescols","outer","norm","nnorm","aug","newarr","gauss_jordan","det","alen","alend","rowshift","colshift","mrow","mcol","gauss_elimination","maug","pivot","temp","maxrow","triaUpSolve","matrix_mode","triaLowSolve","lu","R","cholesky","gauss_jacobi","xv","xk","gauss_seidel","SOR","householder","QR","qr2","lstsq","R_I","I","Aj","cAi","Ij","cIi","qr_solve","array_mode","Q","attrs","Q1","R1","RI","Q2","jacobi","condition","ev","maxim","theta","rungekutta","t_j","u_j","k1","k2","u_j1","k3","k4","romberg","h1","richardson","X","pos","h_min","simpson","hermite","F","dF","dl","lagrange","cubic_spline","sq","gauss_quadrature","PCA","temp1","D","temp2","Y","Bt","C","Vt","zscore","ztest","sides","tscore","ttest","anovafscore","expVar","sampMean","sampSampMean","tmpargs","unexpVar","anovaftest","ftest","fscore","anovaftes","qscore","mean1","mean2","n1","n2","sd","qtest","tukeyhsd","means","normalci","tci","significant","pvalue","differenceOfProportions","pooled","se","oneSidedDifferenceOfProportions","twoSidedDifferenceOfProportions","models","sub_regress","exog","var_count","modelList","endog_index","exog_index","ols","endog","nobs","df_model","df_resid","coef","predict","resid","ybar","SSE","SSR","SST","R2","t_test","model","subModelList","sigmaHat","seBetaHat","mod","tStatistic","pValue","leftppf","interval95","F_test","F_statistic","fcdf","ols_wrap","adjust_R2","buildxmatrix","matrixRows","builddxmatrix","buildjxmatrix","jMat","pass","buildymatrix","buildjymatrix","matrixmult","regress","jMatX","jMatY","innerinv","xtranspxinv","xtransp","regresst","compile","anova","jMatYBar","yBar","yAverage","residuals","ssr","msr","sse","mse","sst","mst","r2","fratio","rmse","r2adj","stats","covar","sds","xtranspx","inner","matrixsubtract","SDTMath","muN","muS","zhr","zfar","ROCSpace","sdt","isoDs","isoD","isoCs","isoC","zRoc","label","locations","pointArray","isoDArray","isoCArray","alignState","hrFar2D","hrFar2C","location","dC2Hr","dC2Far","svgFilters","transitionDuration","far2Zfar","hr2Zhr","zfar2Far","zhr2Hr","contourValues","hrFar2Acc","contourThresholds","contourColorStart","contourColorEnd","contourColor","contourPlotUpdate","contourPlotEnter","contourPlotMerge","contoursUpdate","contoursEnter","contourTitleUpdate","contourTitleEnter","contourLegendValues","legendContours","legendScale","contourLegendUpdate","contourLegendEnter","contourLegendMerge","legendContoursUpdate","legendContoursEnter","axisXMerge","axisXTransition","titleXEnter","titleXMerge","axisYTransition","titleYEnter","titleYMerge","isoDUpdate","isoDEnter","isoDMerge","dFar2Hr","elements","interpolateD","interpolateS","interpolateHr","interpolateFar","isoCUpdate","isoCEnter","isoCMerge","cFar2Hr","interpolateC","pointUpdate","pointEnter","pointMerge","includes","shiftKey","DetectableControl","payoff","pause","setTrials","setDuration","setCoherence","setPayoff","chooseColor","flipZRoc","doRun","doPause","doReset","atribute","SDTModel","distributions","unequal","sensitivity","bias","responses","hS","binRange","trialNumber","new","paused","evidence","alignTrial","trueEvidence","response","outcome","d2MuN","d2MuS","c2L","s2H","hostWidth","hostHeight","hostAspectRatio","elementAspectRatio","strokeWidth","y2Scale","dragThreshold","l2C","sendEvent","dragNoise","muN2D","dragSignal","startX","startY","startHS","startMuS","h2S","muS2D","axisYUpdate","axisYEnter","axisYMerge","titleYUpdate","axisY2Update","axisY2Enter","axisY2Merge","titleY2Update","titleY2Enter","signalNoiseUpdate","signalNoiseEnter","signalNoiseMerge","noiseEnter","noiseMerge","correctRejections","falseAlarms","noise","signalEnter","signalMerge","misses","hits","dUpdate","dEnter","dLabel","dMerge","dLabelTransition","cUpdate","cEnter","cLabel","cMerge","cLabelTransition","sUpdate","sEnter","sLabel","sMerge","sLabelTransition","thresholdUpdate","thresholdEnter","thresholdMerge","histogramUpdate","histogramEnter","histogramMerge","hist","binCountLeft","binCountRight","binValue","binCount","trialUpdate","trialEnter","trialMerge","trialMergeNewActive","easeTime","scaleIn","scaleOutGenerator","easeFunction","interpolator","stimulus","trialMergeNewPaused","trialNew","DetectableResponse","feedbacks","feedback","payoffs","hPayoff","mPayoff","crPayoff","faPayoff","nrPayoff","trialCount","trialTotal","outcomes","accuracies","accuracy","responded","trialPayoff","totalPayoff","DetectableTable","numeric","summaries","summary","hM2Hr","faCr2Far","hMFaCr2Acc","ppv","hFa2Ppv","fomr","mCr2Fomr","newhr","newfar","newacc","newppv","newfomr","payoffFormatter","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","hInput","mInput","faInput","crInput","hrInput","farInput","accInput","ppvInput","fomrInput","SDTEquation","SDTEquationDC2Far","dInput","cInput","sInput","equation","SDTEquationDC2Hr","SDTEquationFaCr2Far","SDTEquationHM2Hr","SDTEquationHMFaCr2Acc","SDTEquationHrFar2C","SDTEquationHrFar2D","SDTExample","SDTExampleDoubleInteractive","two","detectableTableOne","detectableTableTwo","rocSpace","sdtModelOne","sdtModelTwo","newh","newm","newfa","newcr","setWithSDT","SDTExampleHuman","detectableControl","rdkTask","detectableResponse","detectableTable","sdtModel","hasAttribute","complete","SDTExampleInteractive","rocSpaces","SDTExampleModel","resumeTrial","pauseTrial","SDTExampleUnequal"],"mappings":"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"}