@decidables/detectable-elements 0.1.1 → 0.2.0

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.
@@ -372,7 +372,7 @@ const i = globalThis.trustedTypes,
372
372
  v = /-->/g,
373
373
  a = />/g,
374
374
  f = />|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,
375
- _$n = /'/g,
375
+ _$p = /'/g,
376
376
  m = /"/g,
377
377
  g = /^(?:script|style|textarea|title)$/i,
378
378
  p = t => (i, ...s) => ({
@@ -412,7 +412,7 @@ const i = globalThis.trustedTypes,
412
412
  p = -1,
413
413
  $ = 0;
414
414
 
415
- 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 : _$n) : d === m || d === _$n ? d = f : d === v || d === a ? d = c : (d = f, h = void 0);
415
+ 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 : _$p) : d === m || d === _$p ? d = f : d === v || d === a ? d = c : (d = f, h = void 0);
416
416
 
417
417
  const y = d === f && t[i + 1].startsWith("/>") ? " " : "";
418
418
  r += d === c ? s + n$1 : 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);
@@ -6462,14 +6462,14 @@ function line (x$1, y$1) {
6462
6462
  return line;
6463
6463
  }
6464
6464
 
6465
- let _$m = t => t,
6466
- _t$m,
6467
- _t2$k,
6468
- _t3$a,
6469
- _t4$a,
6470
- _t5$a,
6471
- _t6$a,
6472
- _t7$a,
6465
+ let _$o = t => t,
6466
+ _t$o,
6467
+ _t2$m,
6468
+ _t3$c,
6469
+ _t4$c,
6470
+ _t5$c,
6471
+ _t6$c,
6472
+ _t7$c,
6473
6473
  _t8$8,
6474
6474
  _t9$8;
6475
6475
  /*
@@ -6478,28 +6478,8 @@ let _$m = t => t,
6478
6478
  */
6479
6479
 
6480
6480
  class DecidablesElement extends s {
6481
- // HACK: Create a unique ID for each DecidablesElement
6482
- // This is needed because Edge/IE11 don't have real Shadow DOM, so IDs leak
6483
- // out of elements and collide if there is more than one of an element on a
6484
- // page. Known issue for checkbox/switches and the id/for pattern on <input>
6485
- // and <label>
6486
- static get uniqueId() {
6487
- DecidablesElement.ID += 1;
6488
- return DecidablesElement.ID;
6489
- }
6490
-
6491
- constructor() {
6492
- super();
6493
- this.uniqueId = `decidables-${DecidablesElement.uniqueId}`;
6494
- }
6495
-
6496
6481
  getComputedStyleValue(property) {
6497
- // HACK: IE11 requires use of polyfill interface to get custom property value in Javascript
6498
- if (window.ShadyCSS) {
6499
- return window.ShadyCSS.getComputedStyleValue(this, property);
6500
- }
6501
-
6502
- return getComputedStyle(this).getPropertyValue(property);
6482
+ return getComputedStyle(this).getPropertyValue(property).trim();
6503
6483
  }
6504
6484
 
6505
6485
  firstUpdated(changedProperties) {
@@ -6669,11 +6649,11 @@ class DecidablesElement extends s {
6669
6649
  }
6670
6650
 
6671
6651
  static get svgFilters() {
6672
- const shadows = DecidablesElement.shadows; // eslint-disable-line prefer-destructuring
6652
+ const shadows = DecidablesElement.shadows;
6653
+ /* eslint-disable-line prefer-destructuring */
6673
6654
 
6674
- const erodeRadius = 1;
6675
6655
  const filters = shadows.elevations.map(z => {
6676
- return y$1(_t$m || (_t$m = _$m`
6656
+ return y$1(_t$o || (_t$o = _$o`
6677
6657
  <filter id=${0} x="-250%" y="-250%" width="600%" height="600%">
6678
6658
  <feComponentTransfer in="SourceAlpha" result="solid">
6679
6659
  <feFuncA type="table" tableValues="0 1 1"/>
@@ -6693,8 +6673,7 @@ class DecidablesElement extends s {
6693
6673
  <feComposite in="opU" in2="blurU" result="shU" operator="in" />
6694
6674
  <feComposite in="opP" in2="blurP" result="shP" operator="in" />
6695
6675
  <feComposite in="opA" in2="blurA" result="shA" operator="in" />
6696
- <!-- HACK Edge: Using a dynamic value for erode radius stops Edge from corrupting the "radius" value! -->
6697
- <feMorphology in="solid" result="smaller" operator="erode" radius=${0} />
6676
+ <feMorphology in="solid" result="smaller" operator="erode" radius="1" />
6698
6677
  <feComposite in="shU" in2="smaller" result="finalU" operator="out" />
6699
6678
  <feComposite in="shP" in2="smaller" result="finalP" operator="out" />
6700
6679
  <feComposite in="shA" in2="smaller" result="finalA" operator="out" />
@@ -6704,9 +6683,9 @@ class DecidablesElement extends s {
6704
6683
  <feMergeNode in="finalA" />
6705
6684
  <feMergeNode in="SourceGraphic" />
6706
6685
  </feMerge>
6707
- </filter>`), `shadow-${z}`, shadows.mapUmbra[z].y / 2, shadows.mapUmbra[z].y, shadows.mapPenumbra[z].y / 2, shadows.mapPenumbra[z].y, shadows.mapAmbient[z].y / 2, shadows.mapAmbient[z].y, shadows.mapUmbra[z].s === 0 ? y$1(_t2$k || (_t2$k = _$m``)) : y$1(_t3$a || (_t3$a = _$m`<feMorphology in="offU" result="spreadU" operator=${0} radius=${0} />`), shadows.mapUmbra[z].s > 0 ? 'dilate' : 'erode', Math.abs(shadows.mapUmbra[z].s)), shadows.mapPenumbra[z].s === 0 ? y$1(_t4$a || (_t4$a = _$m``)) : y$1(_t5$a || (_t5$a = _$m`<feMorphology in="offP" result="spreadP" operator=${0} radius=${0} />`), shadows.mapPenumbra[z].s > 0 ? 'dilate' : 'erode', Math.abs(shadows.mapPenumbra[z].s)), shadows.mapAmbient[z].s === 0 ? y$1(_t6$a || (_t6$a = _$m``)) : y$1(_t7$a || (_t7$a = _$m`<feMorphology in="offA" result="spreadA" operator=${0} radius=${0} />`), shadows.mapAmbient[z].s > 0 ? 'dilate' : 'erode', Math.abs(shadows.mapAmbient[z].s)), shadows.mapUmbra[z].s === 0 ? 'offU' : 'spreadU', shadows.mapUmbra[z].b / 2, shadows.mapPenumbra[z].s === 0 ? 'offP' : 'spreadP', shadows.mapPenumbra[z].b / 2, shadows.mapAmbient[z].s === 0 ? 'offA' : 'spreadA', shadows.mapAmbient[z].b / 2, shadows.baselineColor, shadows.opacityUmbra + shadows.opacityBoost, shadows.baselineColor, shadows.opacityPenumbra + shadows.opacityBoost, shadows.baselineColor, shadows.opacityAmbient + shadows.opacityBoost, erodeRadius);
6686
+ </filter>`), `shadow-${z}`, shadows.mapUmbra[z].y / 2, shadows.mapUmbra[z].y, shadows.mapPenumbra[z].y / 2, shadows.mapPenumbra[z].y, shadows.mapAmbient[z].y / 2, shadows.mapAmbient[z].y, shadows.mapUmbra[z].s === 0 ? y$1(_t2$m || (_t2$m = _$o``)) : y$1(_t3$c || (_t3$c = _$o`<feMorphology in="offU" result="spreadU" operator=${0} radius=${0} />`), shadows.mapUmbra[z].s > 0 ? 'dilate' : 'erode', Math.abs(shadows.mapUmbra[z].s)), shadows.mapPenumbra[z].s === 0 ? y$1(_t4$c || (_t4$c = _$o``)) : y$1(_t5$c || (_t5$c = _$o`<feMorphology in="offP" result="spreadP" operator=${0} radius=${0} />`), shadows.mapPenumbra[z].s > 0 ? 'dilate' : 'erode', Math.abs(shadows.mapPenumbra[z].s)), shadows.mapAmbient[z].s === 0 ? y$1(_t6$c || (_t6$c = _$o``)) : y$1(_t7$c || (_t7$c = _$o`<feMorphology in="offA" result="spreadA" operator=${0} radius=${0} />`), shadows.mapAmbient[z].s > 0 ? 'dilate' : 'erode', Math.abs(shadows.mapAmbient[z].s)), shadows.mapUmbra[z].s === 0 ? 'offU' : 'spreadU', shadows.mapUmbra[z].b / 2, shadows.mapPenumbra[z].s === 0 ? 'offP' : 'spreadP', shadows.mapPenumbra[z].b / 2, shadows.mapAmbient[z].s === 0 ? 'offA' : 'spreadA', shadows.mapAmbient[z].b / 2, shadows.baselineColor, shadows.opacityUmbra + shadows.opacityBoost, shadows.baselineColor, shadows.opacityPenumbra + shadows.opacityBoost, shadows.baselineColor, shadows.opacityAmbient + shadows.opacityBoost);
6708
6687
  });
6709
- return y$1(_t8$8 || (_t8$8 = _$m`
6688
+ return y$1(_t8$8 || (_t8$8 = _$o`
6710
6689
  <svg class="defs">
6711
6690
  <defs>
6712
6691
  ${0}
@@ -6716,7 +6695,7 @@ class DecidablesElement extends s {
6716
6695
  }
6717
6696
 
6718
6697
  static get styles() {
6719
- return r$2(_t9$8 || (_t9$8 = _$m`
6698
+ return r$2(_t9$8 || (_t9$8 = _$o`
6720
6699
  :host {
6721
6700
  ---shadow-0: var(--shadow-0, ${0});
6722
6701
  ---shadow-2: var(--shadow-2, ${0});
@@ -6738,6 +6717,8 @@ class DecidablesElement extends s {
6738
6717
  ---font-family-base: var(--font-family-base, "Source Sans", sans-serif);
6739
6718
  ---font-family-math: var(--font-family-math, "Source Serif", serif);
6740
6719
 
6720
+ ---border: var(--border, 1px solid var(---color-border));
6721
+ ---border-radius: var(--border-radius, 0.25rem);
6741
6722
  ---transition-duration: var(--transition-duration, 500ms);
6742
6723
 
6743
6724
  font-family: var(---font-family-base);
@@ -6771,16 +6752,14 @@ class DecidablesElement extends s {
6771
6752
  width: 0;
6772
6753
  height: 0;
6773
6754
  }
6774
- `), o$3(this.cssBoxShadow(0)), o$3(this.cssBoxShadow(2)), o$3(this.cssBoxShadow(4)), o$3(this.cssBoxShadow(8)), o$3(this.greys.white), o$3(this.greys.light75), o$3(this.greys.dark75), o$3(this.greys.white), o$3(this.greys.dark25), o$3(this.greys.light75), o$3(this.greys.light50), o$3(this.greys.grey), o$3(this.greys.dark25), o$3(this.greys.dark50), o$3(this.greys.dark75));
6755
+ `), o$3(this.cssBoxShadow(0)), o$3(this.cssBoxShadow(2)), o$3(this.cssBoxShadow(4)), o$3(this.cssBoxShadow(8)), o$3(this.greys.white), o$3(this.greys.light75), o$3(this.greys.dark75), o$3(this.greys.white), o$3(this.greys.dark25), o$3(this.greys.light75), o$3(this.greys.light50), o$3(this.greys.dark25), o$3(this.greys.grey), o$3(this.greys.dark50), o$3(this.greys.dark75));
6775
6756
  }
6776
6757
 
6777
- } // Static property of DecidablesElement!
6778
-
6779
- DecidablesElement.ID = 0;
6758
+ }
6780
6759
 
6781
- let _$l = t => t,
6782
- _t$l,
6783
- _t2$j;
6760
+ let _$n = t => t,
6761
+ _t$n,
6762
+ _t2$l;
6784
6763
  class DecidablesButton extends DecidablesElement {
6785
6764
  static get properties() {
6786
6765
  return {
@@ -6799,7 +6778,7 @@ class DecidablesButton extends DecidablesElement {
6799
6778
  }
6800
6779
 
6801
6780
  static get styles() {
6802
- return [super.styles, r$2(_t$l || (_t$l = _$l`
6781
+ return [super.styles, r$2(_t$n || (_t$n = _$n`
6803
6782
  :host {
6804
6783
  margin: 0.25rem;
6805
6784
  }
@@ -6815,7 +6794,7 @@ class DecidablesButton extends DecidablesElement {
6815
6794
  color: var(---color-text-inverse);
6816
6795
 
6817
6796
  border: 0;
6818
- border-radius: 0.25rem;
6797
+ border-radius: var(---border-radius);
6819
6798
  outline: none;
6820
6799
  }
6821
6800
 
@@ -6856,7 +6835,7 @@ class DecidablesButton extends DecidablesElement {
6856
6835
  }
6857
6836
 
6858
6837
  render() {
6859
- return $(_t2$j || (_t2$j = _$l`
6838
+ return $(_t2$l || (_t2$l = _$n`
6860
6839
  <button ?disabled=${0}>
6861
6840
  <slot></slot>
6862
6841
  </button>
@@ -6874,9 +6853,9 @@ customElements.define('decidables-button', DecidablesButton);
6874
6853
 
6875
6854
  const l = l => null != l ? l : w;
6876
6855
 
6877
- let _$k = t => t,
6878
- _t$k,
6879
- _t2$i;
6856
+ let _$m = t => t,
6857
+ _t$m,
6858
+ _t2$k;
6880
6859
  class DecidablesSlider extends DecidablesElement {
6881
6860
  static get properties() {
6882
6861
  return {
@@ -6933,7 +6912,7 @@ class DecidablesSlider extends DecidablesElement {
6933
6912
  }
6934
6913
 
6935
6914
  static get styles() {
6936
- return [super.styles, r$2(_t$k || (_t$k = _$k`
6915
+ return [super.styles, r$2(_t$m || (_t$m = _$m`
6937
6916
  :host {
6938
6917
  ---shadow-2-rotate: var(--shadow-2-rotate, ${0});
6939
6918
  ---shadow-4-rotate: var(--shadow-4-rotate, ${0});
@@ -7187,23 +7166,23 @@ class DecidablesSlider extends DecidablesElement {
7187
7166
  }
7188
7167
 
7189
7168
  render() {
7190
- return $(_t2$i || (_t2$i = _$k`
7191
- <label for=${0}>
7169
+ return $(_t2$k || (_t2$k = _$m`
7170
+ <label for="slider">
7192
7171
  <slot></slot>
7193
7172
  </label>
7194
7173
  <div class="range">
7195
- <input type="range" id=${0} min=${0} max=${0} step=${0} .value=${0} @change=${0} @input=${0}>
7174
+ <input type="range" id="slider" min=${0} max=${0} step=${0} .value=${0} @change=${0} @input=${0}>
7196
7175
  </div>
7197
7176
  <decidables-spinner min=${0} max=${0} step=${0} .value=${0} @input=${0}></decidables-spinner>
7198
- `), `${this.uniqueId}-slider`, `${this.uniqueId}-slider`, l(this.min), l(this.max), l(this.step), this.value, this.changed.bind(this), this.inputted.bind(this), l(this.min), l(this.max), l(this.step), this.value, this.inputted.bind(this));
7177
+ `), l(this.min), l(this.max), l(this.step), this.value, this.changed.bind(this), this.inputted.bind(this), l(this.min), l(this.max), l(this.step), this.value, this.inputted.bind(this));
7199
7178
  }
7200
7179
 
7201
7180
  }
7202
7181
  customElements.define('decidables-slider', DecidablesSlider);
7203
7182
 
7204
- let _$j = t => t,
7205
- _t$j,
7206
- _t2$h;
7183
+ let _$l = t => t,
7184
+ _t$l,
7185
+ _t2$j;
7207
7186
  class DecidablesSpinner extends DecidablesElement {
7208
7187
  static get properties() {
7209
7188
  return {
@@ -7250,7 +7229,7 @@ class DecidablesSpinner extends DecidablesElement {
7250
7229
  }
7251
7230
 
7252
7231
  static get styles() {
7253
- return [super.styles, r$2(_t$j || (_t$j = _$j`
7232
+ return [super.styles, r$2(_t$l || (_t$l = _$l`
7254
7233
  :host {
7255
7234
  ---decidables-spinner-font-size: var(--decidables-spinner-font-size, 1.125rem);
7256
7235
  ---decidables-spinner-input-width: var(--decidables-spinner-input-width, 4rem);
@@ -7333,7 +7312,7 @@ class DecidablesSpinner extends DecidablesElement {
7333
7312
  }
7334
7313
 
7335
7314
  render() {
7336
- return $(_t2$h || (_t2$h = _$j`
7315
+ return $(_t2$j || (_t2$j = _$l`
7337
7316
  <label>
7338
7317
  <slot></slot>
7339
7318
  <input ?disabled=${0} type="number" min=${0} max=${0} step=${0} .value=${0} @input=${0}>
@@ -7344,9 +7323,9 @@ class DecidablesSpinner extends DecidablesElement {
7344
7323
  }
7345
7324
  customElements.define('decidables-spinner', DecidablesSpinner);
7346
7325
 
7347
- let _$i = t => t,
7348
- _t$i,
7349
- _t2$g;
7326
+ let _$k = t => t,
7327
+ _t$k,
7328
+ _t2$i;
7350
7329
  class DecidablesSwitch extends DecidablesElement {
7351
7330
  static get properties() {
7352
7331
  return {
@@ -7381,7 +7360,7 @@ class DecidablesSwitch extends DecidablesElement {
7381
7360
  }
7382
7361
 
7383
7362
  static get styles() {
7384
- return [super.styles, r$2(_t$i || (_t$i = _$i`
7363
+ return [super.styles, r$2(_t$k || (_t$k = _$k`
7385
7364
  :host {
7386
7365
  display: flex;
7387
7366
 
@@ -7504,23 +7483,23 @@ class DecidablesSwitch extends DecidablesElement {
7504
7483
  }
7505
7484
 
7506
7485
  render() {
7507
- return $(_t2$g || (_t2$g = _$i`
7508
- <input type="checkbox" id=${0} ?checked=${0} ?disabled=${0} @change=${0}>
7509
- <label for=${0}>
7486
+ return $(_t2$i || (_t2$i = _$k`
7487
+ <input type="checkbox" id="switch" ?checked=${0} ?disabled=${0} @change=${0}>
7488
+ <label for="switch">
7510
7489
  <slot name="off-label"></slot>
7511
7490
  </label>
7512
- <label for=${0}>
7491
+ <label for="switch">
7513
7492
  <slot></slot>
7514
7493
  </label>
7515
- `), `${this.uniqueId}-checkbox`, this.checked, this.disabled, this.changed.bind(this), `${this.uniqueId}-checkbox`, `${this.uniqueId}-checkbox`);
7494
+ `), this.checked, this.disabled, this.changed.bind(this));
7516
7495
  }
7517
7496
 
7518
7497
  }
7519
7498
  customElements.define('decidables-switch', DecidablesSwitch);
7520
7499
 
7521
- let _$h = t => t,
7522
- _t$h,
7523
- _t2$f;
7500
+ let _$j = t => t,
7501
+ _t$j,
7502
+ _t2$h;
7524
7503
  class DecidablesToggle extends DecidablesElement {
7525
7504
  static get properties() {
7526
7505
  return {
@@ -7539,7 +7518,7 @@ class DecidablesToggle extends DecidablesElement {
7539
7518
  }
7540
7519
 
7541
7520
  static get styles() {
7542
- return [super.styles, r$2(_t$h || (_t$h = _$h`
7521
+ return [super.styles, r$2(_t$j || (_t$j = _$j`
7543
7522
  fieldset {
7544
7523
  display: flex;
7545
7524
 
@@ -7560,7 +7539,7 @@ class DecidablesToggle extends DecidablesElement {
7560
7539
  }
7561
7540
 
7562
7541
  render() {
7563
- return $(_t2$f || (_t2$f = _$h`
7542
+ return $(_t2$h || (_t2$h = _$j`
7564
7543
  <fieldset ?disabled=${0}>
7565
7544
  <legend><slot name="label"></slot></legend>
7566
7545
  <slot></slot>
@@ -7571,9 +7550,9 @@ class DecidablesToggle extends DecidablesElement {
7571
7550
  }
7572
7551
  customElements.define('decidables-toggle', DecidablesToggle);
7573
7552
 
7574
- let _$g = t => t,
7575
- _t$g,
7576
- _t2$e;
7553
+ let _$i = t => t,
7554
+ _t$i,
7555
+ _t2$g;
7577
7556
  class DecidablesToggleOption extends DecidablesElement {
7578
7557
  static get properties() {
7579
7558
  return {
@@ -7621,7 +7600,7 @@ class DecidablesToggleOption extends DecidablesElement {
7621
7600
  }
7622
7601
 
7623
7602
  static get styles() {
7624
- return [super.styles, r$2(_t$g || (_t$g = _$g`
7603
+ return [super.styles, r$2(_t$i || (_t$i = _$i`
7625
7604
  :host {
7626
7605
  display: flex;
7627
7606
  }
@@ -7718,17 +7697,34 @@ class DecidablesToggleOption extends DecidablesElement {
7718
7697
  }
7719
7698
 
7720
7699
  render() {
7721
- return $(_t2$e || (_t2$e = _$g`
7722
- <input type="radio" id=${0} name=${0} value=${0} .checked=${0} @change=${0}>
7723
- <label for=${0}>
7700
+ return $(_t2$g || (_t2$g = _$i`
7701
+ <input type="radio" id="toggle-option" name=${0} value=${0} .checked=${0} @change=${0}>
7702
+ <label for="toggle-option">
7724
7703
  <slot></slot>
7725
7704
  </label>
7726
- `), `${this.uniqueId}-radio`, this.name, this.value, this.checked, this.changed.bind(this), `${this.uniqueId}-radio`);
7705
+ `), this.name, this.value, this.checked, this.changed.bind(this));
7727
7706
  }
7728
7707
 
7729
7708
  }
7730
7709
  customElements.define('decidables-toggle-option', DecidablesToggleOption);
7731
7710
 
7711
+ /*
7712
+ Attribute: Space-separated sequence of numbers
7713
+ Property: Array of numbers
7714
+ */
7715
+ const DecidablesConverterArray = {
7716
+ fromAttribute: value => {
7717
+ return value.split(/\s+/).map(item => {
7718
+ return Number.parseFloat(item);
7719
+ });
7720
+ },
7721
+ toAttribute: value => {
7722
+ return value.length ? value.map(item => {
7723
+ return item.toFixed(3);
7724
+ }).join(' ') : null;
7725
+ }
7726
+ };
7727
+
7732
7728
  /*
7733
7729
  Attribute: Space-separated sequence of strings
7734
7730
  Property: Set of strings
@@ -7742,8 +7738,8 @@ const DecidablesConverterSet = {
7742
7738
  }
7743
7739
  };
7744
7740
 
7745
- let _$f = t => t,
7746
- _t$f;
7741
+ let _$h = t => t,
7742
+ _t$h;
7747
7743
  /*
7748
7744
  DetectableElement Base Class - Not intended for instantiation!
7749
7745
  <detectable-element>
@@ -7800,7 +7796,7 @@ class DetectableElement extends DecidablesElement {
7800
7796
  }
7801
7797
 
7802
7798
  static get styles() {
7803
- return [super.styles, r$2(_t$f || (_t$f = _$f`
7799
+ return [super.styles, r$2(_t$h || (_t$h = _$h`
7804
7800
  :host {
7805
7801
  ---color-h: var(--color-h, ${0});
7806
7802
  ---color-m: var(--color-m, ${0});
@@ -7855,9 +7851,9 @@ class DetectableElement extends DecidablesElement {
7855
7851
 
7856
7852
  }
7857
7853
 
7858
- let _$e = t => t,
7859
- _t$e,
7860
- _t2$d;
7854
+ let _$g = t => t,
7855
+ _t$g,
7856
+ _t2$f;
7861
7857
  /*
7862
7858
  RDKTask element
7863
7859
  <rdk-task>
@@ -8011,7 +8007,7 @@ class RDKTask extends DetectableElement {
8011
8007
  }
8012
8008
 
8013
8009
  static get styles() {
8014
- return [super.styles, r$2(_t$e || (_t$e = _$e`
8010
+ return [super.styles, r$2(_t$g || (_t$g = _$g`
8015
8011
  :host {
8016
8012
  display: inline-block;
8017
8013
 
@@ -8036,7 +8032,7 @@ class RDKTask extends DetectableElement {
8036
8032
  }
8037
8033
 
8038
8034
  .dot {
8039
- /* r: 2px; HACK: Firefox does not support CSS SVG Geometry Properties */
8035
+ r: 2px;
8040
8036
  }
8041
8037
 
8042
8038
  .dots.coherent {
@@ -8060,8 +8056,8 @@ class RDKTask extends DetectableElement {
8060
8056
  }
8061
8057
 
8062
8058
  render() {
8063
- // eslint-disable-line class-methods-use-this
8064
- return $(_t2$d || (_t2$d = _$e``));
8059
+ /* eslint-disable-line class-methods-use-this */
8060
+ return $(_t2$f || (_t2$f = _$g``));
8065
8061
  }
8066
8062
 
8067
8063
  getDimensions() {
@@ -8082,9 +8078,8 @@ class RDKTask extends DetectableElement {
8082
8078
 
8083
8079
  firstUpdated(changedProperties) {
8084
8080
  super.firstUpdated(changedProperties); // Get the width and height after initial render/update has occurred
8085
- // HACK Edge: Edge doesn't have width/height until after a 0ms timeout
8086
8081
 
8087
- window.setTimeout(this.getDimensions.bind(this), 0);
8082
+ this.getDimensions();
8088
8083
  }
8089
8084
 
8090
8085
  update(changedProperties) {
@@ -8372,9 +8367,7 @@ class RDKTask extends DetectableElement {
8372
8367
  return datum;
8373
8368
  }); // ENTER
8374
8369
 
8375
- const dotEnter = dotUpdate.enter().append('circle').classed('dot', true).attr('r', 2);
8376
- /* HACK: Firefox does not support CSS SVG Geometry Properties */
8377
- // MERGE
8370
+ const dotEnter = dotUpdate.enter().append('circle').classed('dot', true); // MERGE
8378
8371
 
8379
8372
  dotEnter.merge(dotUpdate).attr('cx', datum => {
8380
8373
  return datum.x;
@@ -13252,9 +13245,9 @@ class SDTMath {
13252
13245
 
13253
13246
  }
13254
13247
 
13255
- let _$d = t => t,
13256
- _t$d,
13257
- _t2$c;
13248
+ let _$f = t => t,
13249
+ _t$f,
13250
+ _t2$e;
13258
13251
  /*
13259
13252
  ROCSpace element
13260
13253
  <roc-space>
@@ -13474,7 +13467,7 @@ class ROCSpace extends DetectableElement {
13474
13467
  }
13475
13468
 
13476
13469
  static get styles() {
13477
- return [super.styles, r$2(_t$d || (_t$d = _$d`
13470
+ return [super.styles, r$2(_t$f || (_t$f = _$f`
13478
13471
  :host {
13479
13472
  display: inline-block;
13480
13473
 
@@ -13595,13 +13588,13 @@ class ROCSpace extends DetectableElement {
13595
13588
  .point .circle {
13596
13589
  fill: var(---color-element-emphasis);
13597
13590
 
13598
- /* r: 6; HACK: Firefox does not support CSS SVG Geometry Properties */
13591
+ r: 6px;
13599
13592
  }
13600
13593
 
13601
13594
  .point .label {
13602
13595
  font-size: 0.75rem;
13603
13596
 
13604
- dominant-baseline: middle;
13597
+ dominant-baseline: central;
13605
13598
  text-anchor: middle;
13606
13599
 
13607
13600
  fill: var(---color-text-inverse);
@@ -13610,8 +13603,8 @@ class ROCSpace extends DetectableElement {
13610
13603
  }
13611
13604
 
13612
13605
  render() {
13613
- // eslint-disable-line class-methods-use-this
13614
- return $(_t2$c || (_t2$c = _$d`
13606
+ /* eslint-disable-line class-methods-use-this */
13607
+ return $(_t2$e || (_t2$e = _$f`
13615
13608
  ${0}
13616
13609
  `), DetectableElement.svgFilters);
13617
13610
  }
@@ -13634,9 +13627,8 @@ class ROCSpace extends DetectableElement {
13634
13627
 
13635
13628
  firstUpdated(changedProperties) {
13636
13629
  super.firstUpdated(changedProperties); // Get the width and height after initial render/update has occurred
13637
- // HACK Edge: Edge doesn't have width/height until after a 0ms timeout
13638
13630
 
13639
- window.setTimeout(this.getDimensions.bind(this), 0);
13631
+ this.getDimensions();
13640
13632
  }
13641
13633
 
13642
13634
  update(changedProperties) {
@@ -14027,9 +14019,7 @@ class ROCSpace extends DetectableElement {
14027
14019
  }); // ENTER
14028
14020
 
14029
14021
  const pointEnter = pointUpdate.enter().append('g').classed('point', true);
14030
- pointEnter.append('circle').classed('circle', true).attr('r', 6);
14031
- /* HACK: Firefox does not support CSS SVG Geometry Properties */
14032
-
14022
+ pointEnter.append('circle').classed('circle', true);
14033
14023
  pointEnter.append('text').classed('label', true); // MERGE
14034
14024
 
14035
14025
  const pointMerge = pointEnter.merge(pointUpdate);
@@ -14154,14 +14144,14 @@ class ROCSpace extends DetectableElement {
14154
14144
  }
14155
14145
  customElements.define('roc-space', ROCSpace);
14156
14146
 
14157
- let _$c = t => t,
14158
- _t$c,
14159
- _t2$b,
14160
- _t3$9,
14161
- _t4$9,
14162
- _t5$9,
14163
- _t6$9,
14164
- _t7$9,
14147
+ let _$e = t => t,
14148
+ _t$e,
14149
+ _t2$d,
14150
+ _t3$b,
14151
+ _t4$b,
14152
+ _t5$b,
14153
+ _t6$b,
14154
+ _t7$b,
14165
14155
  _t8$7,
14166
14156
  _t9$7,
14167
14157
  _t10$7,
@@ -14248,7 +14238,7 @@ class DetectableControl extends DetectableElement {
14248
14238
  this.duration = undefined;
14249
14239
  this.coherence = undefined;
14250
14240
  this.payoff = undefined;
14251
- this.colors = ['none', 'accuracy', 'stimulus', 'response', 'outcome'];
14241
+ this.colors = ['none', 'accuracy', 'stimulus', 'response', 'outcome', 'all'];
14252
14242
  this.color = undefined;
14253
14243
  this.zRoc = undefined;
14254
14244
  this.run = false;
@@ -14348,7 +14338,7 @@ class DetectableControl extends DetectableElement {
14348
14338
  }
14349
14339
 
14350
14340
  static get styles() {
14351
- return [super.styles, r$2(_t$c || (_t$c = _$c`
14341
+ return [super.styles, r$2(_t$e || (_t$e = _$e`
14352
14342
  :host {
14353
14343
  display: inline-block;
14354
14344
  }
@@ -14379,7 +14369,7 @@ class DetectableControl extends DetectableElement {
14379
14369
  }
14380
14370
 
14381
14371
  render() {
14382
- return $(_t2$b || (_t2$b = _$c`
14372
+ return $(_t2$d || (_t2$d = _$e`
14383
14373
  <div class="holder">
14384
14374
  ${0}
14385
14375
  ${0}
@@ -14388,35 +14378,36 @@ class DetectableControl extends DetectableElement {
14388
14378
  ${0}
14389
14379
  ${0}
14390
14380
  ${0}
14391
- </div>`), this.trials ? $(_t3$9 || (_t3$9 = _$c`<decidables-slider min="1" max="100" step="1" .value=${0} @change=${0} @input=${0}>Trials</decidables-slider>`), this.trials, this.setTrials.bind(this), this.setTrials.bind(this)) : $(_t4$9 || (_t4$9 = _$c``)), this.duration ? $(_t5$9 || (_t5$9 = _$c`<decidables-slider min="10" max="2000" step="10" .value=${0} @change=${0} @input=${0}>Duration</decidables-slider>`), this.duration, this.setDuration.bind(this), this.setDuration.bind(this)) : $(_t6$9 || (_t6$9 = _$c``)), this.coherence ? $(_t7$9 || (_t7$9 = _$c`<decidables-slider min="0" max="1" step=".01" .value=${0} @change=${0} @input=${0}>Coherence</decidables-slider>`), this.coherence, this.setCoherence.bind(this), this.setCoherence.bind(this)) : $(_t8$7 || (_t8$7 = _$c``)), this.payoff ? $(_t9$7 || (_t9$7 = _$c`<decidables-slider class="payoff" min="0" max="100" step="1" .value=${0} @change=${0} @input=${0}>Payoff</decidables-slider>`), this.payoff, this.setPayoff.bind(this), this.setPayoff.bind(this)) : $(_t10$7 || (_t10$7 = _$c``)), this.color !== undefined ? $(_t11$7 || (_t11$7 = _$c`
14381
+ </div>`), this.trials ? $(_t3$b || (_t3$b = _$e`<decidables-slider min="1" max="100" step="1" .value=${0} @change=${0} @input=${0}>Trials</decidables-slider>`), this.trials, this.setTrials.bind(this), this.setTrials.bind(this)) : $(_t4$b || (_t4$b = _$e``)), this.duration ? $(_t5$b || (_t5$b = _$e`<decidables-slider min="10" max="2000" step="10" .value=${0} @change=${0} @input=${0}>Duration</decidables-slider>`), this.duration, this.setDuration.bind(this), this.setDuration.bind(this)) : $(_t6$b || (_t6$b = _$e``)), this.coherence ? $(_t7$b || (_t7$b = _$e`<decidables-slider min="0" max="1" step=".01" .value=${0} @change=${0} @input=${0}>Coherence</decidables-slider>`), this.coherence, this.setCoherence.bind(this), this.setCoherence.bind(this)) : $(_t8$7 || (_t8$7 = _$e``)), this.payoff ? $(_t9$7 || (_t9$7 = _$e`<decidables-slider class="payoff" min="0" max="100" step="1" .value=${0} @change=${0} @input=${0}>Payoff</decidables-slider>`), this.payoff, this.setPayoff.bind(this), this.setPayoff.bind(this)) : $(_t10$7 || (_t10$7 = _$e``)), this.color !== undefined ? $(_t11$7 || (_t11$7 = _$e`
14392
14382
  <decidables-toggle @change=${0}>
14393
14383
  <span slot="label">Emphasis</span>
14394
- <decidables-toggle-option name=${0} value="none" ?checked=${0}>None</decidables-toggle-option>
14395
- <decidables-toggle-option name=${0} value="accuracy" ?checked=${0}>Accuracy</decidables-toggle-option>
14396
- <decidables-toggle-option name=${0} value="stimulus" ?checked=${0}>Stimulus</decidables-toggle-option>
14397
- <decidables-toggle-option name=${0} value="response" ?checked=${0}>Response</decidables-toggle-option>
14398
- <decidables-toggle-option name=${0} value="outcome" ?checked=${0}>Outcome</decidables-toggle-option>
14384
+ <decidables-toggle-option name="toggle" value="none" ?checked=${0}>None</decidables-toggle-option>
14385
+ <decidables-toggle-option name="toggle" value="accuracy" ?checked=${0}>Accuracy</decidables-toggle-option>
14386
+ <decidables-toggle-option name="toggle" value="stimulus" ?checked=${0}>Stimulus</decidables-toggle-option>
14387
+ <decidables-toggle-option name="toggle" value="response" ?checked=${0}>Response</decidables-toggle-option>
14388
+ <decidables-toggle-option name="toggle" value="outcome" ?checked=${0}>Outcome</decidables-toggle-option>
14389
+ <decidables-toggle-option name="toggle" value="all" ?checked=${0}>All</decidables-toggle-option>
14399
14390
  </decidables-toggle>
14400
- `), this.chooseColor.bind(this), `${this.uniqueId}-color`, this.color === 'none', `${this.uniqueId}-color`, this.color === 'accuracy', `${this.uniqueId}-color`, this.color === 'stimulus', `${this.uniqueId}-color`, this.color === 'response', `${this.uniqueId}-color`, this.color === 'outcome') : $(_t12$2 || (_t12$2 = _$c``)), this.zRoc !== undefined ? $(_t13$2 || (_t13$2 = _$c`
14391
+ `), this.chooseColor.bind(this), this.color === 'none', this.color === 'accuracy', this.color === 'stimulus', this.color === 'response', this.color === 'outcome', this.color === 'all') : $(_t12$2 || (_t12$2 = _$e``)), this.zRoc !== undefined ? $(_t13$2 || (_t13$2 = _$e`
14401
14392
  <decidables-switch ?checked=${0} @change=${0}>
14402
14393
  <span class="math-var">z</span>ROC
14403
14394
  <span slot="off-label">ROC</span>
14404
14395
  </decidables-switch>
14405
- `), this.zRoc, this.flipZRoc.bind(this)) : $(_t14$2 || (_t14$2 = _$c``)), this.run || this.pause || this.reset ? $(_t15$2 || (_t15$2 = _$c`
14396
+ `), this.zRoc, this.flipZRoc.bind(this)) : $(_t14$2 || (_t14$2 = _$e``)), this.run || this.pause || this.reset ? $(_t15$2 || (_t15$2 = _$e`
14406
14397
  <div class="buttons">
14407
14398
  ${0}
14408
14399
  ${0}
14409
14400
  ${0}
14410
14401
  </div>
14411
- `), this.run ? $(_t16$2 || (_t16$2 = _$c`<decidables-button name="run" ?disabled=${0} @click=${0}>Run</decidables-button>`), this.state === 'running' || this.state === 'ended', this.doRun.bind(this)) : $(_t17$2 || (_t17$2 = _$c``)), this.pause ? $(_t18$2 || (_t18$2 = _$c`<decidables-button name="pause" ?disabled=${0} @click=${0}>Pause</decidables-button>`), this.state !== 'running', this.doPause.bind(this)) : $(_t19$2 || (_t19$2 = _$c``)), this.reset ? $(_t20$2 || (_t20$2 = _$c`<decidables-button name="reset" ?disabled=${0} @click=${0}>Reset</decidables-button>`), this.state === 'resetted', this.doReset.bind(this)) : $(_t21$1 || (_t21$1 = _$c``))) : $(_t22$1 || (_t22$1 = _$c``)));
14402
+ `), this.run ? $(_t16$2 || (_t16$2 = _$e`<decidables-button name="run" ?disabled=${0} @click=${0}>Run</decidables-button>`), this.state === 'running' || this.state === 'ended', this.doRun.bind(this)) : $(_t17$2 || (_t17$2 = _$e``)), this.pause ? $(_t18$2 || (_t18$2 = _$e`<decidables-button name="pause" ?disabled=${0} @click=${0}>Pause</decidables-button>`), this.state !== 'running', this.doPause.bind(this)) : $(_t19$2 || (_t19$2 = _$e``)), this.reset ? $(_t20$2 || (_t20$2 = _$e`<decidables-button name="reset" ?disabled=${0} @click=${0}>Reset</decidables-button>`), this.state === 'resetted', this.doReset.bind(this)) : $(_t21$1 || (_t21$1 = _$e``))) : $(_t22$1 || (_t22$1 = _$e``)));
14412
14403
  }
14413
14404
 
14414
14405
  }
14415
14406
  customElements.define('detectable-control', DetectableControl);
14416
14407
 
14417
- let _$b = t => t,
14418
- _t$b,
14419
- _t2$a;
14408
+ let _$d = t => t,
14409
+ _t$d,
14410
+ _t2$c;
14420
14411
  /*
14421
14412
  SDTModel element
14422
14413
  <sdt-model>
@@ -14653,7 +14644,7 @@ class SDTModel extends DetectableElement {
14653
14644
  }
14654
14645
 
14655
14646
  static get styles() {
14656
- return [super.styles, r$2(_t$b || (_t$b = _$b`
14647
+ return [super.styles, r$2(_t$d || (_t$d = _$d`
14657
14648
  :host {
14658
14649
  display: inline-block;
14659
14650
 
@@ -14841,7 +14832,7 @@ class SDTModel extends DetectableElement {
14841
14832
  .threshold .handle {
14842
14833
  fill: var(---color-element-emphasis);
14843
14834
 
14844
- /* r: 6; HACK: Firefox does not support CSS SVG Geometry Properties */
14835
+ r: 6px;
14845
14836
  }
14846
14837
 
14847
14838
  /* Make a larger target for touch users */
@@ -14899,8 +14890,8 @@ class SDTModel extends DetectableElement {
14899
14890
  }
14900
14891
 
14901
14892
  render() {
14902
- // eslint-disable-line class-methods-use-this
14903
- return $(_t2$a || (_t2$a = _$b`
14893
+ /* eslint-disable-line class-methods-use-this */
14894
+ return $(_t2$c || (_t2$c = _$d`
14904
14895
  ${0}
14905
14896
  `), DetectableElement.svgFilters);
14906
14897
  }
@@ -14940,9 +14931,8 @@ class SDTModel extends DetectableElement {
14940
14931
 
14941
14932
  firstUpdated(changedProperties) {
14942
14933
  super.firstUpdated(changedProperties); // Get the width and height after initial render/update has occurred
14943
- // HACK Edge: Edge doesn't have width/height until after a 0ms timeout
14944
14934
 
14945
- window.setTimeout(this.getDimensions.bind(this), 0);
14935
+ this.getDimensions();
14946
14936
  }
14947
14937
 
14948
14938
  update(changedProperties) {
@@ -15046,7 +15036,8 @@ class SDTModel extends DetectableElement {
15046
15036
  datum.startMuS = this.muS;
15047
15037
  }).on('drag', (event, datum) => {
15048
15038
  this.drag = true;
15049
- let muS = this.muS; // eslint-disable-line prefer-destructuring
15039
+ let muS = this.muS;
15040
+ /* eslint-disable-line prefer-destructuring */
15050
15041
 
15051
15042
  if (this.interactive) {
15052
15043
  muS = xScale.invert(event.x); // Clamp Signal Curve to stay visible
@@ -15054,7 +15045,8 @@ class SDTModel extends DetectableElement {
15054
15045
  muS = muS < xScale.domain()[0] ? xScale.domain()[0] : muS > xScale.domain()[1] ? xScale.domain()[1] : muS;
15055
15046
  }
15056
15047
 
15057
- let hS = this.hS; // eslint-disable-line prefer-destructuring
15048
+ let hS = this.hS;
15049
+ /* eslint-disable-line prefer-destructuring */
15058
15050
 
15059
15051
  if (this.unequal) {
15060
15052
  hS = yScale.invert(event.y); // Clamp Signal Curve to stay visible
@@ -15185,7 +15177,8 @@ class SDTModel extends DetectableElement {
15185
15177
 
15186
15178
  const noiseMerge = signalNoiseMerge.selectAll('.noise').attr('tabindex', this.interactive ? 0 : null).classed('interactive', this.interactive).on('keydown', this.interactive ? event => {
15187
15179
  if (['ArrowRight', 'ArrowLeft'].includes(event.key)) {
15188
- let muN = this.muN; // eslint-disable-line prefer-destructuring
15180
+ let muN = this.muN;
15181
+ /* eslint-disable-line prefer-destructuring */
15189
15182
 
15190
15183
  switch (event.key) {
15191
15184
  case 'ArrowRight':
@@ -15316,7 +15309,8 @@ class SDTModel extends DetectableElement {
15316
15309
 
15317
15310
  const signalMerge = signalNoiseMerge.selectAll('.signal').attr('tabindex', this.interactive || this.unequal ? 0 : null).classed('interactive', this.interactive).classed('unequal', this.unequal).on('keydown.sensitivity', this.interactive ? event => {
15318
15311
  if (['ArrowRight', 'ArrowLeft'].includes(event.key)) {
15319
- let muS = this.muS; // eslint-disable-line prefer-destructuring
15312
+ let muS = this.muS;
15313
+ /* eslint-disable-line prefer-destructuring */
15320
15314
 
15321
15315
  switch (event.key) {
15322
15316
  case 'ArrowRight':
@@ -15341,7 +15335,8 @@ class SDTModel extends DetectableElement {
15341
15335
  }
15342
15336
  } : null).on('keydown.variance', this.unequal ? event => {
15343
15337
  if (['ArrowUp', 'ArrowDown'].includes(event.key)) {
15344
- let hS = this.hS; // eslint-disable-line prefer-destructuring
15338
+ let hS = this.hS;
15339
+ /* eslint-disable-line prefer-destructuring */
15345
15340
 
15346
15341
  switch (event.key) {
15347
15342
  case 'ArrowUp':
@@ -15498,7 +15493,7 @@ class SDTModel extends DetectableElement {
15498
15493
  const interpolateD = interpolate$1(element.d !== undefined ? element.d : this.d, this.d);
15499
15494
  return time => {
15500
15495
  element.d = interpolateD(time);
15501
- select(element).text(+element.d.toFixed(3));
15496
+ select(element).text(format('.3')(element.d));
15502
15497
  };
15503
15498
  }); // EXIT
15504
15499
 
@@ -15529,7 +15524,7 @@ class SDTModel extends DetectableElement {
15529
15524
  const interpolateC = interpolate$1(element.c !== undefined ? element.c : this.c, this.c);
15530
15525
  return time => {
15531
15526
  element.c = interpolateC(time);
15532
- select(element).text(+element.c.toFixed(3));
15527
+ select(element).text(format('.3')(element.c));
15533
15528
  };
15534
15529
  }); // EXIT
15535
15530
 
@@ -15564,7 +15559,7 @@ class SDTModel extends DetectableElement {
15564
15559
  const interpolateS = interpolate$1(element.s !== undefined ? element.s : this.s, this.s);
15565
15560
  return time => {
15566
15561
  element.s = interpolateS(time);
15567
- select(element).text(+element.s.toFixed(3));
15562
+ select(element).text(format('.3')(element.s));
15568
15563
  };
15569
15564
  }); // EXIT
15570
15565
 
@@ -15575,9 +15570,7 @@ class SDTModel extends DetectableElement {
15575
15570
 
15576
15571
  const thresholdEnter = thresholdUpdate.enter().append('g').classed('threshold', true);
15577
15572
  thresholdEnter.append('line').classed('line', true);
15578
- thresholdEnter.append('circle').classed('handle', true).attr('r', 6);
15579
- /* HACK: Firefox does not support CSS SVG Geometry Properties */
15580
- // MERGE
15573
+ thresholdEnter.append('circle').classed('handle', true); // MERGE
15581
15574
 
15582
15575
  const thresholdMerge = thresholdEnter.merge(thresholdUpdate).attr('tabindex', this.interactive ? 0 : null).classed('interactive', this.interactive);
15583
15576
 
@@ -15585,7 +15578,8 @@ class SDTModel extends DetectableElement {
15585
15578
  if (this.interactive) {
15586
15579
  thresholdMerge.call(dragThreshold).on('keydown', event => {
15587
15580
  if (['ArrowRight', 'ArrowLeft'].includes(event.key)) {
15588
- let l = this.l; // eslint-disable-line prefer-destructuring
15581
+ let l = this.l;
15582
+ /* eslint-disable-line prefer-destructuring */
15589
15583
 
15590
15584
  switch (event.key) {
15591
15585
  case 'ArrowRight':
@@ -15835,14 +15829,14 @@ class SDTModel extends DetectableElement {
15835
15829
  }
15836
15830
  customElements.define('sdt-model', SDTModel);
15837
15831
 
15838
- let _$a = t => t,
15839
- _t$a,
15840
- _t2$9,
15841
- _t3$8,
15842
- _t4$8,
15843
- _t5$8,
15844
- _t6$8,
15845
- _t7$8,
15832
+ let _$c = t => t,
15833
+ _t$c,
15834
+ _t2$b,
15835
+ _t3$a,
15836
+ _t4$a,
15837
+ _t5$a,
15838
+ _t6$a,
15839
+ _t7$a,
15846
15840
  _t8$6,
15847
15841
  _t9$6,
15848
15842
  _t10$6,
@@ -16102,7 +16096,7 @@ class DetectableResponse extends DetectableElement {
16102
16096
  }
16103
16097
 
16104
16098
  static get styles() {
16105
- return [super.styles, r$2(_t$a || (_t$a = _$a`
16099
+ return [super.styles, r$2(_t$c || (_t$c = _$c`
16106
16100
  :host {
16107
16101
  display: inline-block;
16108
16102
  }
@@ -16174,6 +16168,11 @@ class DetectableResponse extends DetectableElement {
16174
16168
  border: 1px solid var(---color-element-border);
16175
16169
  }
16176
16170
 
16171
+ :host([payoff="trial"]) .feedback,
16172
+ :host([payoff="total"]) .feedback {
16173
+ height: 5rem;
16174
+ }
16175
+
16177
16176
  .feedback.h {
16178
16177
  background-color: var(---color-h-light);
16179
16178
  }
@@ -16209,59 +16208,76 @@ class DetectableResponse extends DetectableElement {
16209
16208
  line-height: 1.15;
16210
16209
  }
16211
16210
 
16212
- :host([payoff="trial"]) .feedback,
16213
- :host([payoff="total"]) .feedback {
16214
- height: 4rem;
16215
- }
16216
-
16217
16211
  /* Payoff feedback */
16218
- .payoff {
16212
+ .total {
16219
16213
  text-align: center;
16220
16214
  }
16221
16215
 
16222
- .payoff .label {
16216
+ .total .label {
16223
16217
  font-weight: 600;
16224
16218
  }
16225
16219
  `))];
16226
16220
  }
16227
16221
 
16228
16222
  render() {
16229
- return $(_t2$9 || (_t2$9 = _$a`
16223
+ const payoffFormatter = new Intl.NumberFormat('en-US', {
16224
+ style: 'currency',
16225
+ currency: 'USD',
16226
+ minimumFractionDigits: 0,
16227
+ maximumFractionDigits: 0
16228
+ });
16229
+
16230
+ const payoffFormat = number => {
16231
+ return payoffFormatter.formatToParts(number).map(({
16232
+ type,
16233
+ value
16234
+ }) => {
16235
+ if (type === 'minusSign') {
16236
+ return '−';
16237
+ }
16238
+
16239
+ return value;
16240
+ }).reduce((string, part) => {
16241
+ return string + part;
16242
+ });
16243
+ };
16244
+
16245
+ return $(_t2$b || (_t2$b = _$c`
16230
16246
  <div class="holder">
16231
16247
  <div class="responses">
16232
16248
  <decidables-button name="present" class=${0} ?disabled=${0} @click=${0}>Present</decidables-button>
16233
16249
  <decidables-button name="absent" class=${0} ?disabled=${0} @click=${0}>Absent</decidables-button>
16234
16250
  </div>
16235
16251
  ${0}
16236
- </div>`), this.state === 'feedback' && this.response === 'present' ? 'selected' : this.state === 'waiting' ? 'waiting' : '', this.state !== 'waiting' || this.interactive !== true, this.present.bind(this), this.state === 'feedback' && this.response === 'absent' ? 'selected' : this.state === 'waiting' ? 'waiting' : '', this.state !== 'waiting' || this.interactive !== true, this.absent.bind(this), this.trial || this.feedback !== 'none' || this.payoff === 'total' ? $(_t3$8 || (_t3$8 = _$a`
16252
+ </div>`), this.state === 'feedback' && this.response === 'present' ? 'selected' : this.state === 'waiting' ? 'waiting' : '', this.state !== 'waiting' || this.interactive !== true, this.present.bind(this), this.state === 'feedback' && this.response === 'absent' ? 'selected' : this.state === 'waiting' ? 'waiting' : '', this.state !== 'waiting' || this.interactive !== true, this.absent.bind(this), this.trial || this.feedback !== 'none' || this.payoff === 'total' ? $(_t3$a || (_t3$a = _$c`
16237
16253
  <div class="feedbacks">
16238
16254
  ${0}
16239
16255
  ${0}
16240
16256
  ${0}
16241
- </div>`), this.trial ? $(_t4$8 || (_t4$8 = _$a`
16257
+ </div>`), this.trial ? $(_t4$a || (_t4$a = _$c`
16242
16258
  <div class="trial">
16243
16259
  <span class="label">Trial: </span><span class="count">${0}</span><span class="of"> of </span><span class="total">${0}</span>
16244
- </div>`), this.trialCount, this.trialTotal) : $(_t5$8 || (_t5$8 = _$a``)), this.feedback !== 'none' ? $(_t6$8 || (_t6$8 = _$a`
16260
+ </div>`), this.trialCount, this.trialTotal) : $(_t5$a || (_t5$a = _$c``)), this.feedback !== 'none' ? $(_t6$a || (_t6$a = _$c`
16245
16261
  <div class=${0}>
16246
16262
  ${0}
16247
16263
  ${0}
16248
- </div>`), `feedback ${this.state === 'feedback' ? this.feedback === 'outcome' ? this.outcome : this.accuracy : ''}`, this.state === 'feedback' ? this.feedback === 'outcome' ? this.outcome === 'h' ? $(_t7$8 || (_t7$8 = _$a`<span class="outcome">Hit</span>`)) : this.outcome === 'm' ? $(_t8$6 || (_t8$6 = _$a`<span class="outcome">Miss</span>`)) : this.outcome === 'fa' ? $(_t9$6 || (_t9$6 = _$a`<span class="outcome">False<br>Alarm</span>`)) : this.outcome === 'cr' ? $(_t10$6 || (_t10$6 = _$a`<span class="outcome">Correct<br>Rejection</span>`)) : $(_t11$6 || (_t11$6 = _$a`<span class="outcome">No<br>Response</span>`)) : this.accuracy === 'c' ? $(_t12$1 || (_t12$1 = _$a`<span class="outcome">Correct</span>`)) : this.accuracy === 'e' ? $(_t13$1 || (_t13$1 = _$a`<span class="outcome">Error</span>`)) : $(_t14$1 || (_t14$1 = _$a`<span class="outcome">No<br>Response</span>`)) : '', this.payoff === 'trial' || this.payoff === 'total' ? $(_t15$1 || (_t15$1 = _$a`<span class="payoff">${0}</span>`), this.trialPayoff) : $(_t16$1 || (_t16$1 = _$a``))) : $(_t17$1 || (_t17$1 = _$a``)), this.payoff === 'total' ? $(_t18$1 || (_t18$1 = _$a`
16249
- <div class="payoff">
16264
+ </div>`), `feedback ${this.state === 'feedback' ? this.feedback === 'outcome' ? this.outcome : this.accuracy : ''}`, this.state === 'feedback' ? this.feedback === 'outcome' ? this.outcome === 'h' ? $(_t7$a || (_t7$a = _$c`<span class="outcome">Hit</span>`)) : this.outcome === 'm' ? $(_t8$6 || (_t8$6 = _$c`<span class="outcome">Miss</span>`)) : this.outcome === 'fa' ? $(_t9$6 || (_t9$6 = _$c`<span class="outcome">False<br>Alarm</span>`)) : this.outcome === 'cr' ? $(_t10$6 || (_t10$6 = _$c`<span class="outcome">Correct<br>Rejection</span>`)) : $(_t11$6 || (_t11$6 = _$c`<span class="outcome">No<br>Response</span>`)) : this.accuracy === 'c' ? $(_t12$1 || (_t12$1 = _$c`<span class="outcome">Correct</span>`)) : this.accuracy === 'e' ? $(_t13$1 || (_t13$1 = _$c`<span class="outcome">Error</span>`)) : $(_t14$1 || (_t14$1 = _$c`<span class="outcome">No<br>Response</span>`)) : '', this.state === 'feedback' && (this.payoff === 'trial' || this.payoff === 'total') ? $(_t15$1 || (_t15$1 = _$c`<span class="payoff">${0}</span>`), payoffFormat(this.trialPayoff)) : $(_t16$1 || (_t16$1 = _$c``))) : $(_t17$1 || (_t17$1 = _$c``)), this.payoff === 'total' ? $(_t18$1 || (_t18$1 = _$c`
16265
+ <div class="total">
16250
16266
  <span class="label">Total: </span><span class="value">${0}</span>
16251
- </div>`), this.totalPayoff) : $(_t19$1 || (_t19$1 = _$a``))) : $(_t20$1 || (_t20$1 = _$a``)));
16267
+ </div>`), payoffFormat(this.totalPayoff)) : $(_t19$1 || (_t19$1 = _$c``))) : $(_t20$1 || (_t20$1 = _$c``)));
16252
16268
  }
16253
16269
 
16254
16270
  }
16255
16271
  customElements.define('detectable-response', DetectableResponse);
16256
16272
 
16257
- let _$9 = t => t,
16258
- _t$9,
16259
- _t2$8,
16260
- _t3$7,
16261
- _t4$7,
16262
- _t5$7,
16263
- _t6$7,
16264
- _t7$7,
16273
+ let _$b = t => t,
16274
+ _t$b,
16275
+ _t2$a,
16276
+ _t3$9,
16277
+ _t4$9,
16278
+ _t5$9,
16279
+ _t6$9,
16280
+ _t7$9,
16265
16281
  _t8$5,
16266
16282
  _t9$5,
16267
16283
  _t10$5,
@@ -16408,8 +16424,8 @@ class DetectableTable extends DetectableElement {
16408
16424
  this.numeric = false;
16409
16425
  this.summaries = ['stimulusRates', 'responseRates', 'accuracy'];
16410
16426
  this.summary = new Set();
16411
- this.colors = ['none', 'accuracy', 'stimulus', 'response', 'outcome'];
16412
- this.color = 'outcome';
16427
+ this.colors = ['none', 'accuracy', 'stimulus', 'response', 'outcome', 'all'];
16428
+ this.color = 'all';
16413
16429
  this.h = 40;
16414
16430
  this.m = 60;
16415
16431
  this.fa = 75;
@@ -16548,7 +16564,7 @@ class DetectableTable extends DetectableElement {
16548
16564
  }
16549
16565
 
16550
16566
  static get styles() {
16551
- return [super.styles, r$2(_t$9 || (_t$9 = _$9`
16567
+ return [super.styles, r$2(_t$b || (_t$b = _$b`
16552
16568
  :host {
16553
16569
  display: inline-block;
16554
16570
  }
@@ -16611,7 +16627,7 @@ class DetectableTable extends DetectableElement {
16611
16627
 
16612
16628
  /* Color schemes & Table emphasis */
16613
16629
 
16614
- /* (Default) Outcome color scheme */
16630
+ /* (Default) All color scheme */
16615
16631
  .h {
16616
16632
  background: var(---color-h-light);
16617
16633
  border-top: 2px solid var(---color-element-emphasis);
@@ -16710,6 +16726,15 @@ class DetectableTable extends DetectableElement {
16710
16726
  background: var(---color-element-background);
16711
16727
  }
16712
16728
 
16729
+ /* Outcome color scheme */
16730
+ :host([color="outcome"]) .hr,
16731
+ :host([color="outcome"]) .far,
16732
+ :host([color="outcome"]) .ppv,
16733
+ :host([color="outcome"]) .fomr,
16734
+ :host([color="outcome"]) .acc {
16735
+ background: var(---color-element-background);
16736
+ }
16737
+
16713
16738
  /* No color scheme */
16714
16739
  :host([color="none"]) .cr,
16715
16740
  :host([color="none"]) .fa,
@@ -16732,6 +16757,22 @@ class DetectableTable extends DetectableElement {
16732
16757
  minimumFractionDigits: 0,
16733
16758
  maximumFractionDigits: 0
16734
16759
  });
16760
+
16761
+ const payoffFormat = number => {
16762
+ return payoffFormatter.formatToParts(number).map(({
16763
+ type,
16764
+ value
16765
+ }) => {
16766
+ if (type === 'minusSign') {
16767
+ return '−';
16768
+ }
16769
+
16770
+ return value;
16771
+ }).reduce((string, part) => {
16772
+ return string + part;
16773
+ });
16774
+ };
16775
+
16735
16776
  this.alignState();
16736
16777
  let h;
16737
16778
  let m;
@@ -16744,72 +16785,72 @@ class DetectableTable extends DetectableElement {
16744
16785
  let fomr;
16745
16786
 
16746
16787
  if (this.numeric) {
16747
- h = $(_t2$8 || (_t2$8 = _$9`
16788
+ h = $(_t2$a || (_t2$a = _$b`
16748
16789
  <decidables-spinner ?disabled=${0} min="0" .value="${0}" @input=${0}>
16749
16790
  <span>Hits</span>
16750
16791
  ${0}
16751
16792
  </decidables-spinner>
16752
- `), !this.interactive, this.h, this.hInput.bind(this), this.payoff ? $(_t3$7 || (_t3$7 = _$9`<span class="payoff">${0}</span>`), payoffFormatter.format(this.hPayoff)) : $(_t4$7 || (_t4$7 = _$9``)));
16753
- m = $(_t5$7 || (_t5$7 = _$9`
16793
+ `), !this.interactive, this.h, this.hInput.bind(this), this.payoff ? $(_t3$9 || (_t3$9 = _$b`<span class="payoff">${0}</span>`), payoffFormat(this.hPayoff)) : $(_t4$9 || (_t4$9 = _$b``)));
16794
+ m = $(_t5$9 || (_t5$9 = _$b`
16754
16795
  <decidables-spinner ?disabled=${0} min="0" .value="${0}" @input=${0}>
16755
16796
  <span>Misses</span>
16756
16797
  ${0}
16757
16798
  </decidables-spinner>
16758
- `), !this.interactive, this.m, this.mInput.bind(this), this.payoff ? $(_t6$7 || (_t6$7 = _$9`<span class="payoff">${0}</span>`), payoffFormatter.format(this.mPayoff)) : $(_t7$7 || (_t7$7 = _$9``)));
16759
- fa = $(_t8$5 || (_t8$5 = _$9`
16799
+ `), !this.interactive, this.m, this.mInput.bind(this), this.payoff ? $(_t6$9 || (_t6$9 = _$b`<span class="payoff">${0}</span>`), payoffFormat(this.mPayoff)) : $(_t7$9 || (_t7$9 = _$b``)));
16800
+ fa = $(_t8$5 || (_t8$5 = _$b`
16760
16801
  <decidables-spinner ?disabled=${0} min="0" .value="${0}" @input=${0}>
16761
16802
  <span>False Alarms</span>
16762
16803
  ${0}
16763
16804
  </decidables-spinner>
16764
- `), !this.interactive, this.fa, this.faInput.bind(this), this.payoff ? $(_t9$5 || (_t9$5 = _$9`<span class="payoff">${0}</span>`), payoffFormatter.format(this.faPayoff)) : $(_t10$5 || (_t10$5 = _$9``)));
16765
- cr = $(_t11$5 || (_t11$5 = _$9`
16805
+ `), !this.interactive, this.fa, this.faInput.bind(this), this.payoff ? $(_t9$5 || (_t9$5 = _$b`<span class="payoff">${0}</span>`), payoffFormat(this.faPayoff)) : $(_t10$5 || (_t10$5 = _$b``)));
16806
+ cr = $(_t11$5 || (_t11$5 = _$b`
16766
16807
  <decidables-spinner ?disabled=${0} min="0" .value="${0}" @input=${0}>
16767
16808
  <span>Correct Rejections</span>
16768
16809
  ${0}
16769
16810
  </decidables-spinner>
16770
- `), !this.interactive, this.cr, this.crInput.bind(this), this.payoff ? $(_t12 || (_t12 = _$9`<span class="payoff">${0}</span>`), payoffFormatter.format(this.crPayoff)) : $(_t13 || (_t13 = _$9``)));
16771
- hr = $(_t14 || (_t14 = _$9`
16811
+ `), !this.interactive, this.cr, this.crInput.bind(this), this.payoff ? $(_t12 || (_t12 = _$b`<span class="payoff">${0}</span>`), payoffFormat(this.crPayoff)) : $(_t13 || (_t13 = _$b``)));
16812
+ hr = $(_t14 || (_t14 = _$b`
16772
16813
  <decidables-spinner ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
16773
16814
  <span>Hit Rate</span>
16774
16815
  </decidables-spinner>
16775
16816
  `), !this.interactive, +this.hr.toFixed(3), this.hrInput.bind(this));
16776
- far = $(_t15 || (_t15 = _$9`
16817
+ far = $(_t15 || (_t15 = _$b`
16777
16818
  <decidables-spinner ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
16778
16819
  <span>False Alarm Rate</span>
16779
16820
  </decidables-spinner>
16780
16821
  `), !this.interactive, +this.far.toFixed(3), this.farInput.bind(this));
16781
- acc = $(_t16 || (_t16 = _$9`
16822
+ acc = $(_t16 || (_t16 = _$b`
16782
16823
  <decidables-spinner ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
16783
16824
  <span>Accuracy</span>
16784
16825
  </decidables-spinner>
16785
16826
  `), !this.interactive, +this.acc.toFixed(3), this.accInput.bind(this));
16786
- ppv = $(_t17 || (_t17 = _$9`
16827
+ ppv = $(_t17 || (_t17 = _$b`
16787
16828
  <decidables-spinner ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
16788
16829
  <span>Positive Predictive Value</span>
16789
16830
  </decidables-spinner>
16790
16831
  `), !this.interactive, +this.ppv.toFixed(3), this.ppvInput.bind(this));
16791
- fomr = $(_t18 || (_t18 = _$9`
16832
+ fomr = $(_t18 || (_t18 = _$b`
16792
16833
  <decidables-spinner ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
16793
16834
  <span>False Omission Rate</span>
16794
16835
  </decidables-spinner>
16795
16836
  `), !this.interactive, +this.fomr.toFixed(3), this.fomrInput.bind(this));
16796
16837
  } else {
16797
- h = $(_t19 || (_t19 = _$9`<span>Hits</span>
16798
- ${0}`), this.payoff ? $(_t20 || (_t20 = _$9`<span class="payoff">${0}</span>`), payoffFormatter.format(this.hPayoff)) : $(_t21 || (_t21 = _$9``)));
16799
- m = $(_t22 || (_t22 = _$9`<span>Misses</span>
16800
- ${0}`), this.payoff ? $(_t23 || (_t23 = _$9`<span class="payoff">${0}</span>`), payoffFormatter.format(this.mPayoff)) : $(_t24 || (_t24 = _$9``)));
16801
- fa = $(_t25 || (_t25 = _$9`<span>False Alarms</span>
16802
- ${0}`), this.payoff ? $(_t26 || (_t26 = _$9`<span class="payoff">${0}</span>`), payoffFormatter.format(this.faPayoff)) : $(_t27 || (_t27 = _$9``)));
16803
- cr = $(_t28 || (_t28 = _$9`<span>Correct Rejections</span>
16804
- ${0}`), this.payoff ? $(_t29 || (_t29 = _$9`<span class="payoff">${0}</span>`), payoffFormatter.format(this.crPayoff)) : $(_t30 || (_t30 = _$9``)));
16805
- hr = $(_t31 || (_t31 = _$9`<span>Hit Rate</span>`));
16806
- far = $(_t32 || (_t32 = _$9`<span>False Alarm Rate</span>`));
16807
- acc = $(_t33 || (_t33 = _$9`<span>Accuracy</span>`));
16808
- ppv = $(_t34 || (_t34 = _$9`<span>Positive Predictive Value</span>`));
16809
- fomr = $(_t35 || (_t35 = _$9`<span>False Omission Rate</span>`));
16838
+ h = $(_t19 || (_t19 = _$b`<span>Hits</span>
16839
+ ${0}`), this.payoff ? $(_t20 || (_t20 = _$b`<span class="payoff">${0}</span>`), payoffFormat(this.hPayoff)) : $(_t21 || (_t21 = _$b``)));
16840
+ m = $(_t22 || (_t22 = _$b`<span>Misses</span>
16841
+ ${0}`), this.payoff ? $(_t23 || (_t23 = _$b`<span class="payoff">${0}</span>`), payoffFormat(this.mPayoff)) : $(_t24 || (_t24 = _$b``)));
16842
+ fa = $(_t25 || (_t25 = _$b`<span>False Alarms</span>
16843
+ ${0}`), this.payoff ? $(_t26 || (_t26 = _$b`<span class="payoff">${0}</span>`), payoffFormat(this.faPayoff)) : $(_t27 || (_t27 = _$b``)));
16844
+ cr = $(_t28 || (_t28 = _$b`<span>Correct Rejections</span>
16845
+ ${0}`), this.payoff ? $(_t29 || (_t29 = _$b`<span class="payoff">${0}</span>`), payoffFormat(this.crPayoff)) : $(_t30 || (_t30 = _$b``)));
16846
+ hr = $(_t31 || (_t31 = _$b`<span>Hit Rate</span>`));
16847
+ far = $(_t32 || (_t32 = _$b`<span>False Alarm Rate</span>`));
16848
+ acc = $(_t33 || (_t33 = _$b`<span>Accuracy</span>`));
16849
+ ppv = $(_t34 || (_t34 = _$b`<span>Positive Predictive Value</span>`));
16850
+ fomr = $(_t35 || (_t35 = _$b`<span>False Omission Rate</span>`));
16810
16851
  }
16811
16852
 
16812
- return $(_t36 || (_t36 = _$9`
16853
+ return $(_t36 || (_t36 = _$b`
16813
16854
  <table class=${0}>
16814
16855
  <thead>
16815
16856
  <tr>
@@ -16820,10 +16861,10 @@ class DetectableTable extends DetectableElement {
16820
16861
  </tr>
16821
16862
  <tr>
16822
16863
  <th class="th th-sub" scope="col">
16823
- "Present"
16864
+ Present
16824
16865
  </th>
16825
16866
  <th class="th th-sub" scope="col">
16826
- "Absent"
16867
+ Absent
16827
16868
  </th>
16828
16869
  </tr>
16829
16870
  </thead>
@@ -16857,35 +16898,35 @@ class DetectableTable extends DetectableElement {
16857
16898
  </tr>
16858
16899
  ${0}
16859
16900
  </tbody>
16860
- </table>`), this.numeric ? 'numeric' : '', h, m, this.summary.has('stimulusRates') ? $(_t37 || (_t37 = _$9`
16901
+ </table>`), this.numeric ? 'numeric' : '', h, m, this.summary.has('stimulusRates') ? $(_t37 || (_t37 = _$b`
16861
16902
  <td class="td td-summary hr">
16862
16903
  ${0}
16863
- </td>`), hr) : $(_t38 || (_t38 = _$9``)), fa, cr, this.summary.has('stimulusRates') ? $(_t39 || (_t39 = _$9`
16904
+ </td>`), hr) : $(_t38 || (_t38 = _$b``)), fa, cr, this.summary.has('stimulusRates') ? $(_t39 || (_t39 = _$b`
16864
16905
  <td class="td td-summary far">
16865
16906
  ${0}
16866
- </td>`), far) : $(_t40 || (_t40 = _$9``)), this.summary.has('responseRates') || this.summary.has('accuracy') ? $(_t41 || (_t41 = _$9`
16907
+ </td>`), far) : $(_t40 || (_t40 = _$b``)), this.summary.has('responseRates') || this.summary.has('accuracy') ? $(_t41 || (_t41 = _$b`
16867
16908
  <tr>
16868
16909
  <td colspan="2"></td>
16869
16910
  ${0}
16870
16911
  ${0}
16871
- </tr>`), this.summary.has('responseRates') ? $(_t42 || (_t42 = _$9`
16912
+ </tr>`), this.summary.has('responseRates') ? $(_t42 || (_t42 = _$b`
16872
16913
  <td class="td td-summary ppv">
16873
16914
  ${0}
16874
16915
  </td>
16875
16916
  <td class="td td-summary fomr">
16876
16917
  ${0}
16877
- </td>`), ppv, fomr) : $(_t43 || (_t43 = _$9`
16878
- <td colspan="2"></td>`)), this.summary.has('accuracy') ? $(_t44 || (_t44 = _$9`
16918
+ </td>`), ppv, fomr) : $(_t43 || (_t43 = _$b`
16919
+ <td colspan="2"></td>`)), this.summary.has('accuracy') ? $(_t44 || (_t44 = _$b`
16879
16920
  <td class="td td-summary acc" rowspan="2">
16880
16921
  ${0}
16881
- </td>`), acc) : $(_t45 || (_t45 = _$9``))) : $(_t46 || (_t46 = _$9``)));
16922
+ </td>`), acc) : $(_t45 || (_t45 = _$b``))) : $(_t46 || (_t46 = _$b``)));
16882
16923
  }
16883
16924
 
16884
16925
  }
16885
16926
  customElements.define('detectable-table', DetectableTable);
16886
16927
 
16887
- let _$8 = t => t,
16888
- _t$8;
16928
+ let _$a = t => t,
16929
+ _t$a;
16889
16930
  /*
16890
16931
  SDTEquation Base Class - Not intended for instantiation!
16891
16932
  <sdt-equation>
@@ -16908,7 +16949,7 @@ class SDTEquation extends DetectableElement {
16908
16949
  }
16909
16950
 
16910
16951
  static get styles() {
16911
- return [super.styles, r$2(_t$8 || (_t$8 = _$8`
16952
+ return [super.styles, r$2(_t$a || (_t$a = _$a`
16912
16953
  :host {
16913
16954
  display: block;
16914
16955
 
@@ -16927,6 +16968,7 @@ class SDTEquation extends DetectableElement {
16927
16968
  /* Overall <table> */
16928
16969
  .equation {
16929
16970
  text-align: center;
16971
+ white-space: nowrap;
16930
16972
 
16931
16973
  border-collapse: collapse;
16932
16974
 
@@ -16946,6 +16988,10 @@ class SDTEquation extends DetectableElement {
16946
16988
  font-style: normal;
16947
16989
  }
16948
16990
 
16991
+ var {
16992
+ border-radius: var(---border-radius);
16993
+ }
16994
+
16949
16995
  .tight {
16950
16996
  padding: 0;
16951
16997
  }
@@ -16971,6 +17017,8 @@ class SDTEquation extends DetectableElement {
16971
17017
  padding: 0.125rem 0.375rem 0.375rem;
16972
17018
 
16973
17019
  vertical-align: middle;
17020
+
17021
+ border-radius: var(---border-radius);
16974
17022
  }
16975
17023
 
16976
17024
  .bottom {
@@ -16994,6 +17042,14 @@ class SDTEquation extends DetectableElement {
16994
17042
  background: var(---color-fa-light);
16995
17043
  }
16996
17044
 
17045
+ .ppv {
17046
+ background: var(---color-present-light);
17047
+ }
17048
+
17049
+ .fomr {
17050
+ background: var(---color-absent-light);
17051
+ }
17052
+
16997
17053
  .acc {
16998
17054
  background: var(---color-acc-light);
16999
17055
  }
@@ -17022,14 +17078,14 @@ class SDTEquation extends DetectableElement {
17022
17078
 
17023
17079
  }
17024
17080
 
17025
- let _$7 = t => t,
17026
- _t$7,
17027
- _t2$7,
17028
- _t3$6,
17029
- _t4$6,
17030
- _t5$6,
17031
- _t6$6,
17032
- _t7$6,
17081
+ let _$9 = t => t,
17082
+ _t$9,
17083
+ _t2$9,
17084
+ _t3$8,
17085
+ _t4$8,
17086
+ _t5$8,
17087
+ _t6$8,
17088
+ _t7$8,
17033
17089
  _t8$4,
17034
17090
  _t9$4,
17035
17091
  _t10$4,
@@ -17124,37 +17180,37 @@ class SDTEquationDC2Far extends SDTEquation {
17124
17180
  let far;
17125
17181
 
17126
17182
  if (this.numeric) {
17127
- d = $(_t$7 || (_t$7 = _$7`
17183
+ d = $(_t$9 || (_t$9 = _$9`
17128
17184
  <decidables-spinner class="d bottom" ?disabled=${0} step=".001" .value="${0}" @input=${0}>
17129
17185
  <var class="math-var">d′</var>
17130
17186
  </decidables-spinner>
17131
17187
  `), !this.interactive, this.d, this.dInput.bind(this));
17132
- c = $(_t2$7 || (_t2$7 = _$7`
17188
+ c = $(_t2$9 || (_t2$9 = _$9`
17133
17189
  <decidables-spinner class="c bottom" ?disabled=${0} step=".001" .value="${0}" @input=${0}>
17134
17190
  <var class="math-var">c</var>
17135
17191
  </decidables-spinner>
17136
17192
  `), !this.interactive, this.c, this.cInput.bind(this));
17137
- s = $(_t3$6 || (_t3$6 = _$7`
17193
+ s = $(_t3$8 || (_t3$8 = _$9`
17138
17194
  <decidables-spinner class="s bottom" ?disabled=${0} min="0" step=".001" .value="${0}" @input=${0}>
17139
17195
  <var class="math-var">σ</var>
17140
17196
  </decidables-spinner>
17141
17197
  `), !this.interactive, this.s, this.sInput.bind(this));
17142
- far = $(_t4$6 || (_t4$6 = _$7`
17198
+ far = $(_t4$8 || (_t4$8 = _$9`
17143
17199
  <decidables-spinner class="far bottom" disabled min="0" max="1" step=".001" .value="${0}">
17144
17200
  <var>False Alarm Rate</var>
17145
17201
  </decidables-spinner>
17146
17202
  `), +this.far.toFixed(3));
17147
17203
  } else {
17148
- d = $(_t5$6 || (_t5$6 = _$7`<var class="math-var d">d′</var>`));
17149
- c = $(_t6$6 || (_t6$6 = _$7`<var class="math-var c">c</var>`));
17150
- s = $(_t7$6 || (_t7$6 = _$7`<var class="math-var s">σ</var>`));
17151
- far = $(_t8$4 || (_t8$4 = _$7`<var class="far">False Alarm Rate</var>`));
17204
+ d = $(_t5$8 || (_t5$8 = _$9`<var class="math-var d">d′</var>`));
17205
+ c = $(_t6$8 || (_t6$8 = _$9`<var class="math-var c">c</var>`));
17206
+ s = $(_t7$8 || (_t7$8 = _$9`<var class="math-var s">σ</var>`));
17207
+ far = $(_t8$4 || (_t8$4 = _$9`<var class="far">False Alarm Rate</var>`));
17152
17208
  }
17153
17209
 
17154
17210
  let equation;
17155
17211
 
17156
17212
  if (this.unequal) {
17157
- equation = $(_t9$4 || (_t9$4 = _$7`
17213
+ equation = $(_t9$4 || (_t9$4 = _$9`
17158
17214
  <tr>
17159
17215
  <td rowspan="2">
17160
17216
  ${0}<span class="equals">=</span><var class="math-greek phi tight">Φ</var><span class="paren tight">(</span><span class="bracket tight">[</span>
@@ -17181,7 +17237,7 @@ class SDTEquationDC2Far extends SDTEquation {
17181
17237
  </td>
17182
17238
  </tr>`), far, s, d, c, s);
17183
17239
  } else {
17184
- equation = $(_t10$4 || (_t10$4 = _$7`
17240
+ equation = $(_t10$4 || (_t10$4 = _$9`
17185
17241
  <tr>
17186
17242
  <td rowspan="2">
17187
17243
  ${0}<span class="equals">=</span><var class="math-greek phi tight">Φ</var><span class="paren tight">(</span><span class="minus tight">−</span>
@@ -17200,7 +17256,7 @@ class SDTEquationDC2Far extends SDTEquation {
17200
17256
  </tr>`), far, d, c);
17201
17257
  }
17202
17258
 
17203
- return $(_t11$4 || (_t11$4 = _$7`
17259
+ return $(_t11$4 || (_t11$4 = _$9`
17204
17260
  <div class="holder">
17205
17261
  <table class="equation">
17206
17262
  <tbody>
@@ -17213,14 +17269,14 @@ class SDTEquationDC2Far extends SDTEquation {
17213
17269
  }
17214
17270
  customElements.define('sdt-equation-dc2far', SDTEquationDC2Far);
17215
17271
 
17216
- let _$6 = t => t,
17217
- _t$6,
17218
- _t2$6,
17219
- _t3$5,
17220
- _t4$5,
17221
- _t5$5,
17222
- _t6$5,
17223
- _t7$5,
17272
+ let _$8 = t => t,
17273
+ _t$8,
17274
+ _t2$8,
17275
+ _t3$7,
17276
+ _t4$7,
17277
+ _t5$7,
17278
+ _t6$7,
17279
+ _t7$7,
17224
17280
  _t8$3,
17225
17281
  _t9$3,
17226
17282
  _t10$3,
@@ -17315,37 +17371,37 @@ class SDTEquationDC2Hr extends SDTEquation {
17315
17371
  let hr;
17316
17372
 
17317
17373
  if (this.numeric) {
17318
- d = $(_t$6 || (_t$6 = _$6`
17374
+ d = $(_t$8 || (_t$8 = _$8`
17319
17375
  <decidables-spinner class="d bottom" ?disabled=${0} step=".001" .value="${0}" @input=${0}>
17320
17376
  <var class="math-var">d′</var>
17321
17377
  </decidables-spinner>
17322
17378
  `), !this.interactive, this.d, this.dInput.bind(this));
17323
- c = $(_t2$6 || (_t2$6 = _$6`
17379
+ c = $(_t2$8 || (_t2$8 = _$8`
17324
17380
  <decidables-spinner class="c bottom" ?disabled=${0} step=".001" .value="${0}" @input=${0}>
17325
17381
  <var class="math-var">c</var>
17326
17382
  </decidables-spinner>
17327
17383
  `), !this.interactive, this.c, this.cInput.bind(this));
17328
- s = $(_t3$5 || (_t3$5 = _$6`
17384
+ s = $(_t3$7 || (_t3$7 = _$8`
17329
17385
  <decidables-spinner class="s bottom" ?disabled=${0} min="0" step=".001" .value="${0}" @input=${0}>
17330
17386
  <var class="math-var">σ</var>
17331
17387
  </decidables-spinner>
17332
17388
  `), !this.interactive, this.s, this.sInput.bind(this));
17333
- hr = $(_t4$5 || (_t4$5 = _$6`
17389
+ hr = $(_t4$7 || (_t4$7 = _$8`
17334
17390
  <decidables-spinner class="hr bottom" disabled min="0" max="1" step=".001" .value="${0}">
17335
17391
  <var>Hit Rate</var>
17336
17392
  </decidables-spinner>
17337
17393
  `), +this.hr.toFixed(3));
17338
17394
  } else {
17339
- d = $(_t5$5 || (_t5$5 = _$6`<var class="math-var d">d′</var>`));
17340
- c = $(_t6$5 || (_t6$5 = _$6`<var class="math-var c">c</var>`));
17341
- s = $(_t7$5 || (_t7$5 = _$6`<var class="math-var s">σ</var>`));
17342
- hr = $(_t8$3 || (_t8$3 = _$6`<var class="hr">Hit Rate</var>`));
17395
+ d = $(_t5$7 || (_t5$7 = _$8`<var class="math-var d">d′</var>`));
17396
+ c = $(_t6$7 || (_t6$7 = _$8`<var class="math-var c">c</var>`));
17397
+ s = $(_t7$7 || (_t7$7 = _$8`<var class="math-var s">σ</var>`));
17398
+ hr = $(_t8$3 || (_t8$3 = _$8`<var class="hr">Hit Rate</var>`));
17343
17399
  }
17344
17400
 
17345
17401
  let equation;
17346
17402
 
17347
17403
  if (this.unequal) {
17348
- equation = $(_t9$3 || (_t9$3 = _$6`
17404
+ equation = $(_t9$3 || (_t9$3 = _$8`
17349
17405
  <tr>
17350
17406
  <td rowspan="2">
17351
17407
  ${0}<span class="equals">=</span><var class="math-greek phi tight">Φ</var><span class="paren tight">(</span><span class="bracket tight">[</span>
@@ -17381,7 +17437,7 @@ class SDTEquationDC2Hr extends SDTEquation {
17381
17437
  </td>
17382
17438
  </tr>`), hr, s, d, c, s, s);
17383
17439
  } else {
17384
- equation = $(_t10$3 || (_t10$3 = _$6`
17440
+ equation = $(_t10$3 || (_t10$3 = _$8`
17385
17441
  <tr>
17386
17442
  <td rowspan="2">
17387
17443
  ${0}<span class="equals">=</span><var class="math-greek phi tight">Φ</var><span class="paren tight">(</span>
@@ -17400,7 +17456,7 @@ class SDTEquationDC2Hr extends SDTEquation {
17400
17456
  </tr>`), hr, d, c);
17401
17457
  }
17402
17458
 
17403
- return $(_t11$3 || (_t11$3 = _$6`
17459
+ return $(_t11$3 || (_t11$3 = _$8`
17404
17460
  <div class="holder">
17405
17461
  <table class="equation">
17406
17462
  <tbody>
@@ -17413,14 +17469,14 @@ class SDTEquationDC2Hr extends SDTEquation {
17413
17469
  }
17414
17470
  customElements.define('sdt-equation-dc2hr', SDTEquationDC2Hr);
17415
17471
 
17416
- let _$5 = t => t,
17417
- _t$5,
17418
- _t2$5,
17419
- _t3$4,
17420
- _t4$4,
17421
- _t5$4,
17422
- _t6$4,
17423
- _t7$4;
17472
+ let _$7 = t => t,
17473
+ _t$7,
17474
+ _t2$7,
17475
+ _t3$6,
17476
+ _t4$6,
17477
+ _t5$6,
17478
+ _t6$6,
17479
+ _t7$6;
17424
17480
  /*
17425
17481
  SDTEquationFaCr2Far element
17426
17482
  <sdt-equation-facr2far>
@@ -17491,28 +17547,28 @@ class SDTEquationFaCr2Far extends SDTEquation {
17491
17547
  let far;
17492
17548
 
17493
17549
  if (this.numeric) {
17494
- fa = $(_t$5 || (_t$5 = _$5`
17550
+ fa = $(_t$7 || (_t$7 = _$7`
17495
17551
  <decidables-spinner class="fa" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17496
17552
  <var>False Alarms</var>
17497
17553
  </decidables-spinner>
17498
17554
  `), !this.interactive, this.fa, this.faInput.bind(this));
17499
- cr = $(_t2$5 || (_t2$5 = _$5`
17555
+ cr = $(_t2$7 || (_t2$7 = _$7`
17500
17556
  <decidables-spinner class="cr" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17501
17557
  <var>Correct Rejections</var>
17502
17558
  </decidables-spinner>
17503
17559
  `), !this.interactive, this.cr, this.crInput.bind(this));
17504
- far = $(_t3$4 || (_t3$4 = _$5`
17560
+ far = $(_t3$6 || (_t3$6 = _$7`
17505
17561
  <decidables-spinner class="far" disabled min="0" max="1" step=".001" .value="${0}">
17506
17562
  <var>False Alarm Rate</var>
17507
17563
  </decidables-spinner>
17508
17564
  `), +this.far.toFixed(3));
17509
17565
  } else {
17510
- fa = $(_t4$4 || (_t4$4 = _$5`<var class="fa">False Alarms</var>`));
17511
- cr = $(_t5$4 || (_t5$4 = _$5`<var class="cr">Correct Rejections</var>`));
17512
- far = $(_t6$4 || (_t6$4 = _$5`<var class="far">False Alarm Rate</var>`));
17566
+ fa = $(_t4$6 || (_t4$6 = _$7`<var class="fa">False Alarms</var>`));
17567
+ cr = $(_t5$6 || (_t5$6 = _$7`<var class="cr">Correct Rejections</var>`));
17568
+ far = $(_t6$6 || (_t6$6 = _$7`<var class="far">False Alarm Rate</var>`));
17513
17569
  }
17514
17570
 
17515
- return $(_t7$4 || (_t7$4 = _$5`
17571
+ return $(_t7$6 || (_t7$6 = _$7`
17516
17572
  <div class="holder">
17517
17573
  <table class="equation">
17518
17574
  <tbody>
@@ -17537,16 +17593,141 @@ class SDTEquationFaCr2Far extends SDTEquation {
17537
17593
  }
17538
17594
  customElements.define('sdt-equation-facr2far', SDTEquationFaCr2Far);
17539
17595
 
17540
- let _$4 = t => t,
17541
- _t$4,
17542
- _t2$4,
17543
- _t3$3,
17544
- _t4$3,
17545
- _t5$3,
17546
- _t6$3,
17547
- _t7$3;
17596
+ let _$6 = t => t,
17597
+ _t$6,
17598
+ _t2$6,
17599
+ _t3$5,
17600
+ _t4$5,
17601
+ _t5$5,
17602
+ _t6$5,
17603
+ _t7$5;
17548
17604
  /*
17549
- SDTEquationHM2Hr element
17605
+ SDTEquationHFa2Ppv element
17606
+ <sdt-equation-hm2hr>
17607
+
17608
+ Attributes:
17609
+ Hits; Misses; Hit Rate;
17610
+ */
17611
+
17612
+ class SDTEquationHFa2Ppv extends SDTEquation {
17613
+ static get properties() {
17614
+ return {
17615
+ h: {
17616
+ attribute: 'hits',
17617
+ type: Number,
17618
+ reflect: true
17619
+ },
17620
+ fa: {
17621
+ attribute: 'false-alarms',
17622
+ type: Number,
17623
+ reflect: true
17624
+ },
17625
+ ppv: {
17626
+ attribute: false,
17627
+ type: Number,
17628
+ reflect: false
17629
+ }
17630
+ };
17631
+ }
17632
+
17633
+ constructor() {
17634
+ super();
17635
+ this.h = 0;
17636
+ this.fa = 0;
17637
+ this.alignState();
17638
+ }
17639
+
17640
+ alignState() {
17641
+ this.ppv = SDTMath.hFa2Ppv(this.h, this.fa);
17642
+ }
17643
+
17644
+ sendEvent() {
17645
+ this.dispatchEvent(new CustomEvent('sdt-equation-hfa2ppv-change', {
17646
+ detail: {
17647
+ h: this.h,
17648
+ fa: this.fa,
17649
+ ppv: this.ppv
17650
+ },
17651
+ bubbles: true
17652
+ }));
17653
+ }
17654
+
17655
+ hInput(event) {
17656
+ this.h = parseInt(event.target.value, 10);
17657
+ this.alignState();
17658
+ this.sendEvent();
17659
+ }
17660
+
17661
+ faInput(event) {
17662
+ this.fa = parseInt(event.target.value, 10);
17663
+ this.alignState();
17664
+ this.sendEvent();
17665
+ }
17666
+
17667
+ render() {
17668
+ this.alignState();
17669
+ let h;
17670
+ let fa;
17671
+ let ppv;
17672
+
17673
+ if (this.numeric) {
17674
+ h = $(_t$6 || (_t$6 = _$6`
17675
+ <decidables-spinner class="h" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17676
+ <var>Hits</var>
17677
+ </decidables-spinner>
17678
+ `), !this.interactive, this.h, this.hInput.bind(this));
17679
+ fa = $(_t2$6 || (_t2$6 = _$6`
17680
+ <decidables-spinner class="fa" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17681
+ <var>False Alarms</var>
17682
+ </decidables-spinner>
17683
+ `), !this.interactive, this.fa, this.faInput.bind(this));
17684
+ ppv = $(_t3$5 || (_t3$5 = _$6`
17685
+ <decidables-spinner class="ppv" disabled min="0" max="1" step=".001" .value="${0}">
17686
+ <var>Positive Predictive Value</var>
17687
+ </decidables-spinner>
17688
+ `), +this.ppv.toFixed(3));
17689
+ } else {
17690
+ h = $(_t4$5 || (_t4$5 = _$6`<var class="h">Hits</var>`));
17691
+ fa = $(_t5$5 || (_t5$5 = _$6`<var class="fa">False Alarms</var>`));
17692
+ ppv = $(_t6$5 || (_t6$5 = _$6`<var class="ppv">Positive Predictive Value</var>`));
17693
+ }
17694
+
17695
+ return $(_t7$5 || (_t7$5 = _$6`
17696
+ <div class="holder">
17697
+ <table class="equation">
17698
+ <tbody>
17699
+ <tr>
17700
+ <td rowspan="2">
17701
+ ${0}<span class="equals">=</span>
17702
+ </td>
17703
+ <td class="underline">
17704
+ ${0}
17705
+ </td>
17706
+ </tr>
17707
+ <tr>
17708
+ <td>
17709
+ ${0}<span class="plus">+</span>${0}
17710
+ </td>
17711
+ </tr>
17712
+ </tbody>
17713
+ </table>
17714
+ </div>
17715
+ `), ppv, h, h, fa);
17716
+ }
17717
+
17718
+ }
17719
+ customElements.define('sdt-equation-hfa2ppv', SDTEquationHFa2Ppv);
17720
+
17721
+ let _$5 = t => t,
17722
+ _t$5,
17723
+ _t2$5,
17724
+ _t3$4,
17725
+ _t4$4,
17726
+ _t5$4,
17727
+ _t6$4,
17728
+ _t7$4;
17729
+ /*
17730
+ SDTEquationHM2Hr element
17550
17731
  <sdt-equation-hm2hr>
17551
17732
 
17552
17733
  Attributes:
@@ -17615,28 +17796,28 @@ class SDTEquationHM2Hr extends SDTEquation {
17615
17796
  let hr;
17616
17797
 
17617
17798
  if (this.numeric) {
17618
- h = $(_t$4 || (_t$4 = _$4`
17799
+ h = $(_t$5 || (_t$5 = _$5`
17619
17800
  <decidables-spinner class="h" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17620
17801
  <var>Hits</var>
17621
17802
  </decidables-spinner>
17622
17803
  `), !this.interactive, this.h, this.hInput.bind(this));
17623
- m = $(_t2$4 || (_t2$4 = _$4`
17804
+ m = $(_t2$5 || (_t2$5 = _$5`
17624
17805
  <decidables-spinner class="m" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17625
17806
  <var>Misses</var>
17626
17807
  </decidables-spinner>
17627
17808
  `), !this.interactive, this.m, this.mInput.bind(this));
17628
- hr = $(_t3$3 || (_t3$3 = _$4`
17809
+ hr = $(_t3$4 || (_t3$4 = _$5`
17629
17810
  <decidables-spinner class="hr" disabled min="0" max="1" step=".001" .value="${0}">
17630
17811
  <var>Hit Rate</var>
17631
17812
  </decidables-spinner>
17632
17813
  `), +this.hr.toFixed(3));
17633
17814
  } else {
17634
- h = $(_t4$3 || (_t4$3 = _$4`<var class="h">Hits</var>`));
17635
- m = $(_t5$3 || (_t5$3 = _$4`<var class="m">Misses</var>`));
17636
- hr = $(_t6$3 || (_t6$3 = _$4`<var class="hr">Hit Rate</var>`));
17815
+ h = $(_t4$4 || (_t4$4 = _$5`<var class="h">Hits</var>`));
17816
+ m = $(_t5$4 || (_t5$4 = _$5`<var class="m">Misses</var>`));
17817
+ hr = $(_t6$4 || (_t6$4 = _$5`<var class="hr">Hit Rate</var>`));
17637
17818
  }
17638
17819
 
17639
- return $(_t7$3 || (_t7$3 = _$4`
17820
+ return $(_t7$4 || (_t7$4 = _$5`
17640
17821
  <div class="holder">
17641
17822
  <table class="equation">
17642
17823
  <tbody>
@@ -17662,14 +17843,14 @@ class SDTEquationHM2Hr extends SDTEquation {
17662
17843
  }
17663
17844
  customElements.define('sdt-equation-hm2hr', SDTEquationHM2Hr);
17664
17845
 
17665
- let _$3 = t => t,
17666
- _t$3,
17667
- _t2$3,
17668
- _t3$2,
17669
- _t4$2,
17670
- _t5$2,
17671
- _t6$2,
17672
- _t7$2,
17846
+ let _$4 = t => t,
17847
+ _t$4,
17848
+ _t2$4,
17849
+ _t3$3,
17850
+ _t4$3,
17851
+ _t5$3,
17852
+ _t6$3,
17853
+ _t7$3,
17673
17854
  _t8$2,
17674
17855
  _t9$2,
17675
17856
  _t10$2,
@@ -17772,40 +17953,40 @@ class SDTEquationHMFaCr2Acc extends SDTEquation {
17772
17953
  let acc;
17773
17954
 
17774
17955
  if (this.numeric) {
17775
- h = $(_t$3 || (_t$3 = _$3`
17956
+ h = $(_t$4 || (_t$4 = _$4`
17776
17957
  <decidables-spinner class="h" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17777
17958
  <var>Hits</var>
17778
17959
  </decidables-spinner>
17779
17960
  `), !this.interactive, this.h, this.hInput.bind(this));
17780
- m = $(_t2$3 || (_t2$3 = _$3`
17961
+ m = $(_t2$4 || (_t2$4 = _$4`
17781
17962
  <decidables-spinner class="m" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17782
17963
  <var>Misses</var>
17783
17964
  </decidables-spinner>
17784
17965
  `), !this.interactive, this.m, this.mInput.bind(this));
17785
- fa = $(_t3$2 || (_t3$2 = _$3`
17966
+ fa = $(_t3$3 || (_t3$3 = _$4`
17786
17967
  <decidables-spinner class="fa" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17787
17968
  <var>False Alarms</var>
17788
17969
  </decidables-spinner>
17789
17970
  `), !this.interactive, this.fa, this.faInput.bind(this));
17790
- cr = $(_t4$2 || (_t4$2 = _$3`
17971
+ cr = $(_t4$3 || (_t4$3 = _$4`
17791
17972
  <decidables-spinner class="cr" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17792
17973
  <var>Correct Rejections</var>
17793
17974
  </decidables-spinner>
17794
17975
  `), !this.interactive, this.cr, this.crInput.bind(this));
17795
- acc = $(_t5$2 || (_t5$2 = _$3`
17976
+ acc = $(_t5$3 || (_t5$3 = _$4`
17796
17977
  <decidables-spinner class="acc" disabled min="0" max="1" step=".001" .value="${0}">
17797
17978
  <var>Accuracy</var>
17798
17979
  </decidables-spinner>
17799
17980
  `), +this.acc.toFixed(3));
17800
17981
  } else {
17801
- h = $(_t6$2 || (_t6$2 = _$3`<var class="h">Hits</var>`));
17802
- m = $(_t7$2 || (_t7$2 = _$3`<var class="m">Misses</var>`));
17803
- fa = $(_t8$2 || (_t8$2 = _$3`<var class="fa">False Alarms</var>`));
17804
- cr = $(_t9$2 || (_t9$2 = _$3`<var class="cr">Correct Rejections</var>`));
17805
- acc = $(_t10$2 || (_t10$2 = _$3`<var class="acc">Accuracy</var>`));
17982
+ h = $(_t6$3 || (_t6$3 = _$4`<var class="h">Hits</var>`));
17983
+ m = $(_t7$3 || (_t7$3 = _$4`<var class="m">Misses</var>`));
17984
+ fa = $(_t8$2 || (_t8$2 = _$4`<var class="fa">False Alarms</var>`));
17985
+ cr = $(_t9$2 || (_t9$2 = _$4`<var class="cr">Correct Rejections</var>`));
17986
+ acc = $(_t10$2 || (_t10$2 = _$4`<var class="acc">Accuracy</var>`));
17806
17987
  }
17807
17988
 
17808
- return $(_t11$2 || (_t11$2 = _$3`
17989
+ return $(_t11$2 || (_t11$2 = _$4`
17809
17990
  <div class="holder">
17810
17991
  <table class="equation">
17811
17992
  <tbody>
@@ -17824,20 +18005,20 @@ class SDTEquationHMFaCr2Acc extends SDTEquation {
17824
18005
  </tr>
17825
18006
  </tbody>
17826
18007
  </table>
17827
- </div>`), acc, h, cr, h, m, fa, cr);
18008
+ </div>`), acc, h, cr, h, cr, m, fa);
17828
18009
  }
17829
18010
 
17830
18011
  }
17831
18012
  customElements.define('sdt-equation-hmfacr2acc', SDTEquationHMFaCr2Acc);
17832
18013
 
17833
- let _$2 = t => t,
17834
- _t$2,
17835
- _t2$2,
17836
- _t3$1,
17837
- _t4$1,
17838
- _t5$1,
17839
- _t6$1,
17840
- _t7$1,
18014
+ let _$3 = t => t,
18015
+ _t$3,
18016
+ _t2$3,
18017
+ _t3$2,
18018
+ _t4$2,
18019
+ _t5$2,
18020
+ _t6$2,
18021
+ _t7$2,
17841
18022
  _t8$1,
17842
18023
  _t9$1,
17843
18024
  _t10$1,
@@ -17932,37 +18113,37 @@ class SDTEquationHrFar2C extends SDTEquation {
17932
18113
  let c;
17933
18114
 
17934
18115
  if (this.numeric) {
17935
- hr = $(_t$2 || (_t$2 = _$2`
18116
+ hr = $(_t$3 || (_t$3 = _$3`
17936
18117
  <decidables-spinner class="hr bottom" ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
17937
18118
  <var>Hit Rate</var>
17938
18119
  </decidables-spinner>
17939
18120
  `), !this.interactive, this.hr, this.hrInput.bind(this));
17940
- far = $(_t2$2 || (_t2$2 = _$2`
18121
+ far = $(_t2$3 || (_t2$3 = _$3`
17941
18122
  <decidables-spinner class="far bottom" ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
17942
18123
  <var>False Alarm Rate</var>
17943
18124
  </decidables-spinner>
17944
18125
  `), !this.interactive, this.far, this.farInput.bind(this));
17945
- s = $(_t3$1 || (_t3$1 = _$2`
18126
+ s = $(_t3$2 || (_t3$2 = _$3`
17946
18127
  <decidables-spinner class="s bottom" ?disabled=${0} min="0" step=".001" .value="${0}" @input=${0}>
17947
18128
  <var class="math-var">σ</var>
17948
18129
  </decidables-spinner>
17949
18130
  `), !this.interactive, this.s, this.sInput.bind(this));
17950
- c = $(_t4$1 || (_t4$1 = _$2`
18131
+ c = $(_t4$2 || (_t4$2 = _$3`
17951
18132
  <decidables-spinner class="c bottom" disabled step=".001" .value="${0}">
17952
18133
  <var class="math-var">c</var>
17953
18134
  </decidables-spinner>
17954
18135
  `), +this.c.toFixed(3));
17955
18136
  } else {
17956
- hr = $(_t5$1 || (_t5$1 = _$2`<var class="hr">Hit Rate</var>`));
17957
- far = $(_t6$1 || (_t6$1 = _$2`<var class="far">False Alarm Rate</var>`));
17958
- s = $(_t7$1 || (_t7$1 = _$2`<var class="math-var s">σ</var>`));
17959
- c = $(_t8$1 || (_t8$1 = _$2`<var class="math-var c">c</var>`));
18137
+ hr = $(_t5$2 || (_t5$2 = _$3`<var class="hr">Hit Rate</var>`));
18138
+ far = $(_t6$2 || (_t6$2 = _$3`<var class="far">False Alarm Rate</var>`));
18139
+ s = $(_t7$2 || (_t7$2 = _$3`<var class="math-var s">σ</var>`));
18140
+ c = $(_t8$1 || (_t8$1 = _$3`<var class="math-var c">c</var>`));
17960
18141
  }
17961
18142
 
17962
18143
  let equation;
17963
18144
 
17964
18145
  if (this.unequal) {
17965
- equation = $(_t9$1 || (_t9$1 = _$2`
18146
+ equation = $(_t9$1 || (_t9$1 = _$3`
17966
18147
  <tr>
17967
18148
  <td rowspan="2">
17968
18149
  ${0}<span class="equals">=</span><span class="bracket tight">(</span>
@@ -17989,7 +18170,7 @@ class SDTEquationHrFar2C extends SDTEquation {
17989
18170
  </td>
17990
18171
  </tr>`), c, s, s, hr, far, s);
17991
18172
  } else {
17992
- equation = $(_t10$1 || (_t10$1 = _$2`
18173
+ equation = $(_t10$1 || (_t10$1 = _$3`
17993
18174
  <tr>
17994
18175
  <td rowspan="2">
17995
18176
  ${0}<span class="equals">=</span>
@@ -18005,7 +18186,7 @@ class SDTEquationHrFar2C extends SDTEquation {
18005
18186
  </tr>`), c, hr, far);
18006
18187
  }
18007
18188
 
18008
- return $(_t11$1 || (_t11$1 = _$2`
18189
+ return $(_t11$1 || (_t11$1 = _$3`
18009
18190
  <div class="holder">
18010
18191
  <table class="equation">
18011
18192
  <tbody>
@@ -18018,14 +18199,14 @@ class SDTEquationHrFar2C extends SDTEquation {
18018
18199
  }
18019
18200
  customElements.define('sdt-equation-hrfar2c', SDTEquationHrFar2C);
18020
18201
 
18021
- let _$1 = t => t,
18022
- _t$1,
18023
- _t2$1,
18024
- _t3,
18025
- _t4,
18026
- _t5,
18027
- _t6,
18028
- _t7,
18202
+ let _$2 = t => t,
18203
+ _t$2,
18204
+ _t2$2,
18205
+ _t3$1,
18206
+ _t4$1,
18207
+ _t5$1,
18208
+ _t6$1,
18209
+ _t7$1,
18029
18210
  _t8,
18030
18211
  _t9,
18031
18212
  _t10,
@@ -18120,37 +18301,37 @@ class SDTEquationHrFar2D extends SDTEquation {
18120
18301
  let d;
18121
18302
 
18122
18303
  if (this.numeric) {
18123
- hr = $(_t$1 || (_t$1 = _$1`
18304
+ hr = $(_t$2 || (_t$2 = _$2`
18124
18305
  <decidables-spinner class="hr bottom" ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
18125
18306
  <var>Hit Rate</var>
18126
18307
  </decidables-spinner>
18127
18308
  `), !this.interactive, this.hr, this.hrInput.bind(this));
18128
- far = $(_t2$1 || (_t2$1 = _$1`
18309
+ far = $(_t2$2 || (_t2$2 = _$2`
18129
18310
  <decidables-spinner class="far bottom" ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
18130
18311
  <var>False Alarm Rate</var>
18131
18312
  </decidables-spinner>
18132
18313
  `), !this.interactive, this.far, this.farInput.bind(this));
18133
- s = $(_t3 || (_t3 = _$1`
18314
+ s = $(_t3$1 || (_t3$1 = _$2`
18134
18315
  <decidables-spinner class="s bottom" ?disabled=${0} min="0" step=".001" .value="${0}" @input=${0}>
18135
18316
  <var class="math-var">σ</var>
18136
18317
  </decidables-spinner>
18137
18318
  `), !this.interactive, this.s, this.sInput.bind(this));
18138
- d = $(_t4 || (_t4 = _$1`
18319
+ d = $(_t4$1 || (_t4$1 = _$2`
18139
18320
  <decidables-spinner class="d bottom" disabled step=".001" .value="${0}">
18140
18321
  <var class="math-var">d′</var>
18141
18322
  </decidables-spinner>
18142
18323
  `), +this.d.toFixed(3));
18143
18324
  } else {
18144
- hr = $(_t5 || (_t5 = _$1`<var class="hr">Hit Rate</var>`));
18145
- far = $(_t6 || (_t6 = _$1`<var class="far">False Alarm Rate</var>`));
18146
- s = $(_t7 || (_t7 = _$1`<var class="math-var s">σ</var>`));
18147
- d = $(_t8 || (_t8 = _$1`<var class="math-var d">d′</var>`));
18325
+ hr = $(_t5$1 || (_t5$1 = _$2`<var class="hr">Hit Rate</var>`));
18326
+ far = $(_t6$1 || (_t6$1 = _$2`<var class="far">False Alarm Rate</var>`));
18327
+ s = $(_t7$1 || (_t7$1 = _$2`<var class="math-var s">σ</var>`));
18328
+ d = $(_t8 || (_t8 = _$2`<var class="math-var d">d′</var>`));
18148
18329
  }
18149
18330
 
18150
18331
  let equation;
18151
18332
 
18152
18333
  if (this.unequal) {
18153
- equation = $(_t9 || (_t9 = _$1`
18334
+ equation = $(_t9 || (_t9 = _$2`
18154
18335
  <tr>
18155
18336
  <td rowspan="2">
18156
18337
  ${0}<span class="equals">=</span><span class="bracket tight">(</span>
@@ -18168,7 +18349,7 @@ class SDTEquationHrFar2D extends SDTEquation {
18168
18349
  </td>
18169
18350
  </tr>`), d, s, s, hr, far);
18170
18351
  } else {
18171
- equation = $(_t10 || (_t10 = _$1`
18352
+ equation = $(_t10 || (_t10 = _$2`
18172
18353
  <tr>
18173
18354
  <td>
18174
18355
  ${0}<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>${0}<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>${0}<span class="paren tight">)</span>
@@ -18176,7 +18357,7 @@ class SDTEquationHrFar2D extends SDTEquation {
18176
18357
  </tr>`), d, hr, far);
18177
18358
  }
18178
18359
 
18179
- return $(_t11 || (_t11 = _$1`
18360
+ return $(_t11 || (_t11 = _$2`
18180
18361
  <div class="holder">
18181
18362
  <table class="equation">
18182
18363
  <tbody>
@@ -18189,6 +18370,131 @@ class SDTEquationHrFar2D extends SDTEquation {
18189
18370
  }
18190
18371
  customElements.define('sdt-equation-hrfar2d', SDTEquationHrFar2D);
18191
18372
 
18373
+ let _$1 = t => t,
18374
+ _t$1,
18375
+ _t2$1,
18376
+ _t3,
18377
+ _t4,
18378
+ _t5,
18379
+ _t6,
18380
+ _t7;
18381
+ /*
18382
+ SDTEquationMCr2Fomr element
18383
+ <sdt-equation-mcr2fomr>
18384
+
18385
+ Attributes:
18386
+ Hits; Misses; Hit Rate;
18387
+ */
18388
+
18389
+ class SDTEquationMCr2Fomr extends SDTEquation {
18390
+ static get properties() {
18391
+ return {
18392
+ m: {
18393
+ attribute: 'misses',
18394
+ type: Number,
18395
+ reflect: true
18396
+ },
18397
+ cr: {
18398
+ attribute: 'correct-rejections',
18399
+ type: Number,
18400
+ reflect: true
18401
+ },
18402
+ fomr: {
18403
+ attribute: false,
18404
+ type: Number,
18405
+ reflect: false
18406
+ }
18407
+ };
18408
+ }
18409
+
18410
+ constructor() {
18411
+ super();
18412
+ this.m = 0;
18413
+ this.cr = 0;
18414
+ this.alignState();
18415
+ }
18416
+
18417
+ alignState() {
18418
+ this.fomr = SDTMath.mCr2Fomr(this.m, this.cr);
18419
+ }
18420
+
18421
+ sendEvent() {
18422
+ this.dispatchEvent(new CustomEvent('sdt-equation-mcr2fomr-change', {
18423
+ detail: {
18424
+ m: this.m,
18425
+ cr: this.cr,
18426
+ fomr: this.fomr
18427
+ },
18428
+ bubbles: true
18429
+ }));
18430
+ }
18431
+
18432
+ mInput(event) {
18433
+ this.m = parseInt(event.target.value, 10);
18434
+ this.alignState();
18435
+ this.sendEvent();
18436
+ }
18437
+
18438
+ crInput(event) {
18439
+ this.cr = parseInt(event.target.value, 10);
18440
+ this.alignState();
18441
+ this.sendEvent();
18442
+ }
18443
+
18444
+ render() {
18445
+ this.alignState();
18446
+ let m;
18447
+ let cr;
18448
+ let fomr;
18449
+
18450
+ if (this.numeric) {
18451
+ m = $(_t$1 || (_t$1 = _$1`
18452
+ <decidables-spinner class="m" ?disabled=${0} min="0" .value="${0}" @input=${0}>
18453
+ <var>Misses</var>
18454
+ </decidables-spinner>
18455
+ `), !this.interactive, this.m, this.mInput.bind(this));
18456
+ cr = $(_t2$1 || (_t2$1 = _$1`
18457
+ <decidables-spinner class="cr" ?disabled=${0} min="0" .value="${0}" @input=${0}>
18458
+ <var>Correct Rejections</var>
18459
+ </decidables-spinner>
18460
+ `), !this.interactive, this.cr, this.crInput.bind(this));
18461
+ fomr = $(_t3 || (_t3 = _$1`
18462
+ <decidables-spinner class="fomr" disabled min="0" max="1" step=".001" .value="${0}">
18463
+ <var>False Omission Rate</var>
18464
+ </decidables-spinner>
18465
+ `), +this.fomr.toFixed(3));
18466
+ } else {
18467
+ m = $(_t4 || (_t4 = _$1`<var class="m">Misses</var>`));
18468
+ cr = $(_t5 || (_t5 = _$1`<var class="cr">Correct Rejections</var>`));
18469
+ fomr = $(_t6 || (_t6 = _$1`<var class="fomr">False Omission Rate</var>`));
18470
+ }
18471
+
18472
+ return $(_t7 || (_t7 = _$1`
18473
+ <div class="holder">
18474
+ <table class="equation">
18475
+ <tbody>
18476
+ <tr>
18477
+ <td rowspan="2">
18478
+ ${0}<span class="equals">=</span>
18479
+ </td>
18480
+ <td class="underline">
18481
+ ${0}
18482
+ </td>
18483
+ </tr>
18484
+ <tr>
18485
+ <td>
18486
+ ${0}<span class="plus">+</span>${0}
18487
+ </td>
18488
+ </tr>
18489
+ </tbody>
18490
+ </table>
18491
+ </div>
18492
+ `), fomr, m, m, cr);
18493
+ }
18494
+
18495
+ }
18496
+ customElements.define('sdt-equation-mcr2fomr', SDTEquationMCr2Fomr);
18497
+
18192
18498
  let _ = t => t,
18193
18499
  _t,
18194
18500
  _t2;
@@ -18201,12 +18507,8 @@ class SDTExample extends DetectableElement {
18201
18507
  static get styles() {
18202
18508
  return [super.styles, r$2(_t || (_t = _`
18203
18509
  :host {
18204
- ---border: var(--border, 1px solid var(---color-border));
18205
18510
  display: inline-block;
18206
18511
 
18207
- /* This makes IE11 happy */
18208
- width: 100%;
18209
-
18210
18512
  margin-bottom: 1rem;
18211
18513
  }
18212
18514
 
@@ -18225,7 +18527,7 @@ class SDTExample extends DetectableElement {
18225
18527
  padding: 0.625rem;
18226
18528
 
18227
18529
  border: var(---border);
18228
- border-radius: 0.25rem;
18530
+ border-radius: var(---border-radius);
18229
18531
  }
18230
18532
 
18231
18533
  .body ::slotted(*) {
@@ -18251,7 +18553,7 @@ class SDTExample extends DetectableElement {
18251
18553
  }
18252
18554
 
18253
18555
  render() {
18254
- // eslint-disable-line class-methods-use-this
18556
+ /* eslint-disable-line class-methods-use-this */
18255
18557
  return $(_t2 || (_t2 = _`
18256
18558
  <div class="holder">
18257
18559
  <div class="body">
@@ -18899,6 +19201,81 @@ class SDTExampleModel extends SDTExample {
18899
19201
  }
18900
19202
  customElements.define('sdt-example-model', SDTExampleModel);
18901
19203
 
19204
+ /*
19205
+ SDTExampleMulti element
19206
+ <sdt-example-multi>
19207
+ */
19208
+
19209
+ class SDTExampleMultiple extends SDTExample {
19210
+ static get properties() {
19211
+ return {
19212
+ variable: {
19213
+ attribute: 'variable',
19214
+ type: String,
19215
+ reflect: true
19216
+ },
19217
+ values: {
19218
+ attribute: 'values',
19219
+ converter: DecidablesConverterArray,
19220
+ reflect: true
19221
+ }
19222
+ };
19223
+ }
19224
+
19225
+ constructor() {
19226
+ super();
19227
+ this.variables = ['d', 'c'];
19228
+ this.variable = 'd';
19229
+ this.values = [0, 1];
19230
+ }
19231
+
19232
+ firstUpdated() {
19233
+ this.detectableControl = this.querySelector('detectable-control');
19234
+ this.rocSpace = this.querySelector('roc-space');
19235
+ this.sdtModel = this.querySelector('sdt-model');
19236
+
19237
+ if (this.detectableControl) {
19238
+ this.detectableControl.addEventListener('detectable-control-z-roc', event => {
19239
+ this.rocSpace.zRoc = event.detail.zRoc;
19240
+ });
19241
+ }
19242
+
19243
+ if (this.rocSpace) {
19244
+ this.rocSpace.setWithSDT(1, 0, 'default', '', 1);
19245
+
19246
+ if (this.variable === 'd') {
19247
+ this.values.forEach((d, index) => {
19248
+ this.rocSpace.setWithSDT(d, this.sdtModel.c, `point${index}`, index + 1, this.sdtModel.s);
19249
+ });
19250
+ } else if (this.variable === 'c') {
19251
+ this.values.forEach((c, index) => {
19252
+ this.rocSpace.setWithSDT(this.sdtModel.d, c, `point${index}`, index + 1, this.sdtModel.s);
19253
+ });
19254
+ }
19255
+ }
19256
+
19257
+ if (this.sdtModel) {
19258
+ this.sdtModel.addEventListener('sdt-model-change', event => {
19259
+ if (this.rocSpace) {
19260
+ this.rocSpace.setWithSDT(event.detail.d, event.detail.c, 'default', '', event.detail.s);
19261
+
19262
+ if (this.variable === 'd') {
19263
+ this.values.forEach((d, index) => {
19264
+ this.rocSpace.setWithSDT(d, event.detail.c, `point${index}`, index + 1, event.detail.s);
19265
+ });
19266
+ } else if (this.variable === 'c') {
19267
+ this.values.forEach((c, index) => {
19268
+ this.rocSpace.setWithSDT(event.detail.d, c, `point${index}`, index + 1, event.detail.s);
19269
+ });
19270
+ }
19271
+ }
19272
+ });
19273
+ }
19274
+ }
19275
+
19276
+ }
19277
+ customElements.define('sdt-example-multiple', SDTExampleMultiple);
19278
+
18902
19279
  /*
18903
19280
  SDTExampleUnequal element
18904
19281
  <sdt-example-unequal>
@@ -18918,15 +19295,13 @@ class SDTExampleUnequal extends SDTExample {
18918
19295
 
18919
19296
  if (this.rocSpace) {
18920
19297
  this.rocSpace.setWithSDT(1, 0, 'default', '', 1); // Set 'default' to equal variance for contours
19298
+
19299
+ range(-1.5, 1.6, 0.5).forEach((c, index) => {
19300
+ this.rocSpace.setWithSDT(this.sdtModel.d, c, `point${index}`, '', this.sdtModel.s);
19301
+ });
18921
19302
  }
18922
19303
 
18923
19304
  if (this.sdtModel) {
18924
- if (this.rocSpace) {
18925
- range(-1.5, 1.6, 0.5).forEach((c, index) => {
18926
- this.rocSpace.setWithSDT(this.sdtModel.d, c, `point${index}`, '', this.sdtModel.s);
18927
- });
18928
- }
18929
-
18930
19305
  this.sdtModel.addEventListener('sdt-model-change', event => {
18931
19306
  if (this.rocSpace) {
18932
19307
  range(-1.5, 1.6, 0.5).forEach((c, index) => {
@@ -18940,5 +19315,5 @@ class SDTExampleUnequal extends SDTExample {
18940
19315
  }
18941
19316
  customElements.define('sdt-example-unequal', SDTExampleUnequal);
18942
19317
 
18943
- export { DetectableControl, DetectableElement, DetectableResponse, DetectableTable, RDKTask, ROCSpace, SDTEquationDC2Far, SDTEquationDC2Hr, SDTEquationFaCr2Far, SDTEquationHM2Hr, SDTEquationHMFaCr2Acc, SDTEquationHrFar2C, SDTEquationHrFar2D, SDTExampleDoubleInteractive, SDTExampleHuman, SDTExampleInteractive, SDTExampleModel, SDTExampleUnequal, SDTModel };
19318
+ export { DetectableControl, DetectableElement, DetectableResponse, DetectableTable, RDKTask, ROCSpace, SDTEquationDC2Far, SDTEquationDC2Hr, SDTEquationFaCr2Far, SDTEquationHFa2Ppv, SDTEquationHM2Hr, SDTEquationHMFaCr2Acc, SDTEquationHrFar2C, SDTEquationHrFar2D, SDTEquationMCr2Fomr, SDTExampleDoubleInteractive, SDTExampleHuman, SDTExampleInteractive, SDTExampleModel, SDTExampleMultiple, SDTExampleUnequal, SDTModel };
18944
19319
  //# sourceMappingURL=detectableElements.esm.js.map