@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.
@@ -378,7 +378,7 @@
378
378
  v = /-->/g,
379
379
  a = />/g,
380
380
  f = />|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,
381
- _$n = /'/g,
381
+ _$p = /'/g,
382
382
  m = /"/g,
383
383
  g = /^(?:script|style|textarea|title)$/i,
384
384
  p = t => (i, ...s) => ({
@@ -418,7 +418,7 @@
418
418
  p = -1,
419
419
  $ = 0;
420
420
 
421
- 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);
421
+ 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);
422
422
 
423
423
  const y = d === f && t[i + 1].startsWith("/>") ? " " : "";
424
424
  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);
@@ -6468,14 +6468,14 @@
6468
6468
  return line;
6469
6469
  }
6470
6470
 
6471
- let _$m = t => t,
6472
- _t$m,
6473
- _t2$k,
6474
- _t3$a,
6475
- _t4$a,
6476
- _t5$a,
6477
- _t6$a,
6478
- _t7$a,
6471
+ let _$o = t => t,
6472
+ _t$o,
6473
+ _t2$m,
6474
+ _t3$c,
6475
+ _t4$c,
6476
+ _t5$c,
6477
+ _t6$c,
6478
+ _t7$c,
6479
6479
  _t8$8,
6480
6480
  _t9$8;
6481
6481
  /*
@@ -6484,28 +6484,8 @@
6484
6484
  */
6485
6485
 
6486
6486
  class DecidablesElement extends s {
6487
- // HACK: Create a unique ID for each DecidablesElement
6488
- // This is needed because Edge/IE11 don't have real Shadow DOM, so IDs leak
6489
- // out of elements and collide if there is more than one of an element on a
6490
- // page. Known issue for checkbox/switches and the id/for pattern on <input>
6491
- // and <label>
6492
- static get uniqueId() {
6493
- DecidablesElement.ID += 1;
6494
- return DecidablesElement.ID;
6495
- }
6496
-
6497
- constructor() {
6498
- super();
6499
- this.uniqueId = `decidables-${DecidablesElement.uniqueId}`;
6500
- }
6501
-
6502
6487
  getComputedStyleValue(property) {
6503
- // HACK: IE11 requires use of polyfill interface to get custom property value in Javascript
6504
- if (window.ShadyCSS) {
6505
- return window.ShadyCSS.getComputedStyleValue(this, property);
6506
- }
6507
-
6508
- return getComputedStyle(this).getPropertyValue(property);
6488
+ return getComputedStyle(this).getPropertyValue(property).trim();
6509
6489
  }
6510
6490
 
6511
6491
  firstUpdated(changedProperties) {
@@ -6675,11 +6655,11 @@
6675
6655
  }
6676
6656
 
6677
6657
  static get svgFilters() {
6678
- const shadows = DecidablesElement.shadows; // eslint-disable-line prefer-destructuring
6658
+ const shadows = DecidablesElement.shadows;
6659
+ /* eslint-disable-line prefer-destructuring */
6679
6660
 
6680
- const erodeRadius = 1;
6681
6661
  const filters = shadows.elevations.map(z => {
6682
- return y$1(_t$m || (_t$m = _$m`
6662
+ return y$1(_t$o || (_t$o = _$o`
6683
6663
  <filter id=${0} x="-250%" y="-250%" width="600%" height="600%">
6684
6664
  <feComponentTransfer in="SourceAlpha" result="solid">
6685
6665
  <feFuncA type="table" tableValues="0 1 1"/>
@@ -6699,8 +6679,7 @@
6699
6679
  <feComposite in="opU" in2="blurU" result="shU" operator="in" />
6700
6680
  <feComposite in="opP" in2="blurP" result="shP" operator="in" />
6701
6681
  <feComposite in="opA" in2="blurA" result="shA" operator="in" />
6702
- <!-- HACK Edge: Using a dynamic value for erode radius stops Edge from corrupting the "radius" value! -->
6703
- <feMorphology in="solid" result="smaller" operator="erode" radius=${0} />
6682
+ <feMorphology in="solid" result="smaller" operator="erode" radius="1" />
6704
6683
  <feComposite in="shU" in2="smaller" result="finalU" operator="out" />
6705
6684
  <feComposite in="shP" in2="smaller" result="finalP" operator="out" />
6706
6685
  <feComposite in="shA" in2="smaller" result="finalA" operator="out" />
@@ -6710,9 +6689,9 @@
6710
6689
  <feMergeNode in="finalA" />
6711
6690
  <feMergeNode in="SourceGraphic" />
6712
6691
  </feMerge>
6713
- </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);
6692
+ </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);
6714
6693
  });
6715
- return y$1(_t8$8 || (_t8$8 = _$m`
6694
+ return y$1(_t8$8 || (_t8$8 = _$o`
6716
6695
  <svg class="defs">
6717
6696
  <defs>
6718
6697
  ${0}
@@ -6722,7 +6701,7 @@
6722
6701
  }
6723
6702
 
6724
6703
  static get styles() {
6725
- return r$2(_t9$8 || (_t9$8 = _$m`
6704
+ return r$2(_t9$8 || (_t9$8 = _$o`
6726
6705
  :host {
6727
6706
  ---shadow-0: var(--shadow-0, ${0});
6728
6707
  ---shadow-2: var(--shadow-2, ${0});
@@ -6744,6 +6723,8 @@
6744
6723
  ---font-family-base: var(--font-family-base, "Source Sans", sans-serif);
6745
6724
  ---font-family-math: var(--font-family-math, "Source Serif", serif);
6746
6725
 
6726
+ ---border: var(--border, 1px solid var(---color-border));
6727
+ ---border-radius: var(--border-radius, 0.25rem);
6747
6728
  ---transition-duration: var(--transition-duration, 500ms);
6748
6729
 
6749
6730
  font-family: var(---font-family-base);
@@ -6777,16 +6758,14 @@
6777
6758
  width: 0;
6778
6759
  height: 0;
6779
6760
  }
6780
- `), 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));
6761
+ `), 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));
6781
6762
  }
6782
6763
 
6783
- } // Static property of DecidablesElement!
6784
-
6785
- DecidablesElement.ID = 0;
6764
+ }
6786
6765
 
6787
- let _$l = t => t,
6788
- _t$l,
6789
- _t2$j;
6766
+ let _$n = t => t,
6767
+ _t$n,
6768
+ _t2$l;
6790
6769
  class DecidablesButton extends DecidablesElement {
6791
6770
  static get properties() {
6792
6771
  return {
@@ -6805,7 +6784,7 @@
6805
6784
  }
6806
6785
 
6807
6786
  static get styles() {
6808
- return [super.styles, r$2(_t$l || (_t$l = _$l`
6787
+ return [super.styles, r$2(_t$n || (_t$n = _$n`
6809
6788
  :host {
6810
6789
  margin: 0.25rem;
6811
6790
  }
@@ -6821,7 +6800,7 @@
6821
6800
  color: var(---color-text-inverse);
6822
6801
 
6823
6802
  border: 0;
6824
- border-radius: 0.25rem;
6803
+ border-radius: var(---border-radius);
6825
6804
  outline: none;
6826
6805
  }
6827
6806
 
@@ -6862,7 +6841,7 @@
6862
6841
  }
6863
6842
 
6864
6843
  render() {
6865
- return $(_t2$j || (_t2$j = _$l`
6844
+ return $(_t2$l || (_t2$l = _$n`
6866
6845
  <button ?disabled=${0}>
6867
6846
  <slot></slot>
6868
6847
  </button>
@@ -6880,9 +6859,9 @@
6880
6859
 
6881
6860
  const l = l => null != l ? l : w;
6882
6861
 
6883
- let _$k = t => t,
6884
- _t$k,
6885
- _t2$i;
6862
+ let _$m = t => t,
6863
+ _t$m,
6864
+ _t2$k;
6886
6865
  class DecidablesSlider extends DecidablesElement {
6887
6866
  static get properties() {
6888
6867
  return {
@@ -6939,7 +6918,7 @@
6939
6918
  }
6940
6919
 
6941
6920
  static get styles() {
6942
- return [super.styles, r$2(_t$k || (_t$k = _$k`
6921
+ return [super.styles, r$2(_t$m || (_t$m = _$m`
6943
6922
  :host {
6944
6923
  ---shadow-2-rotate: var(--shadow-2-rotate, ${0});
6945
6924
  ---shadow-4-rotate: var(--shadow-4-rotate, ${0});
@@ -7193,23 +7172,23 @@
7193
7172
  }
7194
7173
 
7195
7174
  render() {
7196
- return $(_t2$i || (_t2$i = _$k`
7197
- <label for=${0}>
7175
+ return $(_t2$k || (_t2$k = _$m`
7176
+ <label for="slider">
7198
7177
  <slot></slot>
7199
7178
  </label>
7200
7179
  <div class="range">
7201
- <input type="range" id=${0} min=${0} max=${0} step=${0} .value=${0} @change=${0} @input=${0}>
7180
+ <input type="range" id="slider" min=${0} max=${0} step=${0} .value=${0} @change=${0} @input=${0}>
7202
7181
  </div>
7203
7182
  <decidables-spinner min=${0} max=${0} step=${0} .value=${0} @input=${0}></decidables-spinner>
7204
- `), `${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));
7183
+ `), 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));
7205
7184
  }
7206
7185
 
7207
7186
  }
7208
7187
  customElements.define('decidables-slider', DecidablesSlider);
7209
7188
 
7210
- let _$j = t => t,
7211
- _t$j,
7212
- _t2$h;
7189
+ let _$l = t => t,
7190
+ _t$l,
7191
+ _t2$j;
7213
7192
  class DecidablesSpinner extends DecidablesElement {
7214
7193
  static get properties() {
7215
7194
  return {
@@ -7256,7 +7235,7 @@
7256
7235
  }
7257
7236
 
7258
7237
  static get styles() {
7259
- return [super.styles, r$2(_t$j || (_t$j = _$j`
7238
+ return [super.styles, r$2(_t$l || (_t$l = _$l`
7260
7239
  :host {
7261
7240
  ---decidables-spinner-font-size: var(--decidables-spinner-font-size, 1.125rem);
7262
7241
  ---decidables-spinner-input-width: var(--decidables-spinner-input-width, 4rem);
@@ -7339,7 +7318,7 @@
7339
7318
  }
7340
7319
 
7341
7320
  render() {
7342
- return $(_t2$h || (_t2$h = _$j`
7321
+ return $(_t2$j || (_t2$j = _$l`
7343
7322
  <label>
7344
7323
  <slot></slot>
7345
7324
  <input ?disabled=${0} type="number" min=${0} max=${0} step=${0} .value=${0} @input=${0}>
@@ -7350,9 +7329,9 @@
7350
7329
  }
7351
7330
  customElements.define('decidables-spinner', DecidablesSpinner);
7352
7331
 
7353
- let _$i = t => t,
7354
- _t$i,
7355
- _t2$g;
7332
+ let _$k = t => t,
7333
+ _t$k,
7334
+ _t2$i;
7356
7335
  class DecidablesSwitch extends DecidablesElement {
7357
7336
  static get properties() {
7358
7337
  return {
@@ -7387,7 +7366,7 @@
7387
7366
  }
7388
7367
 
7389
7368
  static get styles() {
7390
- return [super.styles, r$2(_t$i || (_t$i = _$i`
7369
+ return [super.styles, r$2(_t$k || (_t$k = _$k`
7391
7370
  :host {
7392
7371
  display: flex;
7393
7372
 
@@ -7510,23 +7489,23 @@
7510
7489
  }
7511
7490
 
7512
7491
  render() {
7513
- return $(_t2$g || (_t2$g = _$i`
7514
- <input type="checkbox" id=${0} ?checked=${0} ?disabled=${0} @change=${0}>
7515
- <label for=${0}>
7492
+ return $(_t2$i || (_t2$i = _$k`
7493
+ <input type="checkbox" id="switch" ?checked=${0} ?disabled=${0} @change=${0}>
7494
+ <label for="switch">
7516
7495
  <slot name="off-label"></slot>
7517
7496
  </label>
7518
- <label for=${0}>
7497
+ <label for="switch">
7519
7498
  <slot></slot>
7520
7499
  </label>
7521
- `), `${this.uniqueId}-checkbox`, this.checked, this.disabled, this.changed.bind(this), `${this.uniqueId}-checkbox`, `${this.uniqueId}-checkbox`);
7500
+ `), this.checked, this.disabled, this.changed.bind(this));
7522
7501
  }
7523
7502
 
7524
7503
  }
7525
7504
  customElements.define('decidables-switch', DecidablesSwitch);
7526
7505
 
7527
- let _$h = t => t,
7528
- _t$h,
7529
- _t2$f;
7506
+ let _$j = t => t,
7507
+ _t$j,
7508
+ _t2$h;
7530
7509
  class DecidablesToggle extends DecidablesElement {
7531
7510
  static get properties() {
7532
7511
  return {
@@ -7545,7 +7524,7 @@
7545
7524
  }
7546
7525
 
7547
7526
  static get styles() {
7548
- return [super.styles, r$2(_t$h || (_t$h = _$h`
7527
+ return [super.styles, r$2(_t$j || (_t$j = _$j`
7549
7528
  fieldset {
7550
7529
  display: flex;
7551
7530
 
@@ -7566,7 +7545,7 @@
7566
7545
  }
7567
7546
 
7568
7547
  render() {
7569
- return $(_t2$f || (_t2$f = _$h`
7548
+ return $(_t2$h || (_t2$h = _$j`
7570
7549
  <fieldset ?disabled=${0}>
7571
7550
  <legend><slot name="label"></slot></legend>
7572
7551
  <slot></slot>
@@ -7577,9 +7556,9 @@
7577
7556
  }
7578
7557
  customElements.define('decidables-toggle', DecidablesToggle);
7579
7558
 
7580
- let _$g = t => t,
7581
- _t$g,
7582
- _t2$e;
7559
+ let _$i = t => t,
7560
+ _t$i,
7561
+ _t2$g;
7583
7562
  class DecidablesToggleOption extends DecidablesElement {
7584
7563
  static get properties() {
7585
7564
  return {
@@ -7627,7 +7606,7 @@
7627
7606
  }
7628
7607
 
7629
7608
  static get styles() {
7630
- return [super.styles, r$2(_t$g || (_t$g = _$g`
7609
+ return [super.styles, r$2(_t$i || (_t$i = _$i`
7631
7610
  :host {
7632
7611
  display: flex;
7633
7612
  }
@@ -7724,17 +7703,34 @@
7724
7703
  }
7725
7704
 
7726
7705
  render() {
7727
- return $(_t2$e || (_t2$e = _$g`
7728
- <input type="radio" id=${0} name=${0} value=${0} .checked=${0} @change=${0}>
7729
- <label for=${0}>
7706
+ return $(_t2$g || (_t2$g = _$i`
7707
+ <input type="radio" id="toggle-option" name=${0} value=${0} .checked=${0} @change=${0}>
7708
+ <label for="toggle-option">
7730
7709
  <slot></slot>
7731
7710
  </label>
7732
- `), `${this.uniqueId}-radio`, this.name, this.value, this.checked, this.changed.bind(this), `${this.uniqueId}-radio`);
7711
+ `), this.name, this.value, this.checked, this.changed.bind(this));
7733
7712
  }
7734
7713
 
7735
7714
  }
7736
7715
  customElements.define('decidables-toggle-option', DecidablesToggleOption);
7737
7716
 
7717
+ /*
7718
+ Attribute: Space-separated sequence of numbers
7719
+ Property: Array of numbers
7720
+ */
7721
+ const DecidablesConverterArray = {
7722
+ fromAttribute: value => {
7723
+ return value.split(/\s+/).map(item => {
7724
+ return Number.parseFloat(item);
7725
+ });
7726
+ },
7727
+ toAttribute: value => {
7728
+ return value.length ? value.map(item => {
7729
+ return item.toFixed(3);
7730
+ }).join(' ') : null;
7731
+ }
7732
+ };
7733
+
7738
7734
  /*
7739
7735
  Attribute: Space-separated sequence of strings
7740
7736
  Property: Set of strings
@@ -7748,8 +7744,8 @@
7748
7744
  }
7749
7745
  };
7750
7746
 
7751
- let _$f = t => t,
7752
- _t$f;
7747
+ let _$h = t => t,
7748
+ _t$h;
7753
7749
  /*
7754
7750
  DetectableElement Base Class - Not intended for instantiation!
7755
7751
  <detectable-element>
@@ -7806,7 +7802,7 @@
7806
7802
  }
7807
7803
 
7808
7804
  static get styles() {
7809
- return [super.styles, r$2(_t$f || (_t$f = _$f`
7805
+ return [super.styles, r$2(_t$h || (_t$h = _$h`
7810
7806
  :host {
7811
7807
  ---color-h: var(--color-h, ${0});
7812
7808
  ---color-m: var(--color-m, ${0});
@@ -7861,9 +7857,9 @@
7861
7857
 
7862
7858
  }
7863
7859
 
7864
- let _$e = t => t,
7865
- _t$e,
7866
- _t2$d;
7860
+ let _$g = t => t,
7861
+ _t$g,
7862
+ _t2$f;
7867
7863
  /*
7868
7864
  RDKTask element
7869
7865
  <rdk-task>
@@ -8017,7 +8013,7 @@
8017
8013
  }
8018
8014
 
8019
8015
  static get styles() {
8020
- return [super.styles, r$2(_t$e || (_t$e = _$e`
8016
+ return [super.styles, r$2(_t$g || (_t$g = _$g`
8021
8017
  :host {
8022
8018
  display: inline-block;
8023
8019
 
@@ -8042,7 +8038,7 @@
8042
8038
  }
8043
8039
 
8044
8040
  .dot {
8045
- /* r: 2px; HACK: Firefox does not support CSS SVG Geometry Properties */
8041
+ r: 2px;
8046
8042
  }
8047
8043
 
8048
8044
  .dots.coherent {
@@ -8066,8 +8062,8 @@
8066
8062
  }
8067
8063
 
8068
8064
  render() {
8069
- // eslint-disable-line class-methods-use-this
8070
- return $(_t2$d || (_t2$d = _$e``));
8065
+ /* eslint-disable-line class-methods-use-this */
8066
+ return $(_t2$f || (_t2$f = _$g``));
8071
8067
  }
8072
8068
 
8073
8069
  getDimensions() {
@@ -8088,9 +8084,8 @@
8088
8084
 
8089
8085
  firstUpdated(changedProperties) {
8090
8086
  super.firstUpdated(changedProperties); // Get the width and height after initial render/update has occurred
8091
- // HACK Edge: Edge doesn't have width/height until after a 0ms timeout
8092
8087
 
8093
- window.setTimeout(this.getDimensions.bind(this), 0);
8088
+ this.getDimensions();
8094
8089
  }
8095
8090
 
8096
8091
  update(changedProperties) {
@@ -8378,9 +8373,7 @@
8378
8373
  return datum;
8379
8374
  }); // ENTER
8380
8375
 
8381
- const dotEnter = dotUpdate.enter().append('circle').classed('dot', true).attr('r', 2);
8382
- /* HACK: Firefox does not support CSS SVG Geometry Properties */
8383
- // MERGE
8376
+ const dotEnter = dotUpdate.enter().append('circle').classed('dot', true); // MERGE
8384
8377
 
8385
8378
  dotEnter.merge(dotUpdate).attr('cx', datum => {
8386
8379
  return datum.x;
@@ -13258,9 +13251,9 @@
13258
13251
 
13259
13252
  }
13260
13253
 
13261
- let _$d = t => t,
13262
- _t$d,
13263
- _t2$c;
13254
+ let _$f = t => t,
13255
+ _t$f,
13256
+ _t2$e;
13264
13257
  /*
13265
13258
  ROCSpace element
13266
13259
  <roc-space>
@@ -13480,7 +13473,7 @@
13480
13473
  }
13481
13474
 
13482
13475
  static get styles() {
13483
- return [super.styles, r$2(_t$d || (_t$d = _$d`
13476
+ return [super.styles, r$2(_t$f || (_t$f = _$f`
13484
13477
  :host {
13485
13478
  display: inline-block;
13486
13479
 
@@ -13601,13 +13594,13 @@
13601
13594
  .point .circle {
13602
13595
  fill: var(---color-element-emphasis);
13603
13596
 
13604
- /* r: 6; HACK: Firefox does not support CSS SVG Geometry Properties */
13597
+ r: 6px;
13605
13598
  }
13606
13599
 
13607
13600
  .point .label {
13608
13601
  font-size: 0.75rem;
13609
13602
 
13610
- dominant-baseline: middle;
13603
+ dominant-baseline: central;
13611
13604
  text-anchor: middle;
13612
13605
 
13613
13606
  fill: var(---color-text-inverse);
@@ -13616,8 +13609,8 @@
13616
13609
  }
13617
13610
 
13618
13611
  render() {
13619
- // eslint-disable-line class-methods-use-this
13620
- return $(_t2$c || (_t2$c = _$d`
13612
+ /* eslint-disable-line class-methods-use-this */
13613
+ return $(_t2$e || (_t2$e = _$f`
13621
13614
  ${0}
13622
13615
  `), DetectableElement.svgFilters);
13623
13616
  }
@@ -13640,9 +13633,8 @@
13640
13633
 
13641
13634
  firstUpdated(changedProperties) {
13642
13635
  super.firstUpdated(changedProperties); // Get the width and height after initial render/update has occurred
13643
- // HACK Edge: Edge doesn't have width/height until after a 0ms timeout
13644
13636
 
13645
- window.setTimeout(this.getDimensions.bind(this), 0);
13637
+ this.getDimensions();
13646
13638
  }
13647
13639
 
13648
13640
  update(changedProperties) {
@@ -14033,9 +14025,7 @@
14033
14025
  }); // ENTER
14034
14026
 
14035
14027
  const pointEnter = pointUpdate.enter().append('g').classed('point', true);
14036
- pointEnter.append('circle').classed('circle', true).attr('r', 6);
14037
- /* HACK: Firefox does not support CSS SVG Geometry Properties */
14038
-
14028
+ pointEnter.append('circle').classed('circle', true);
14039
14029
  pointEnter.append('text').classed('label', true); // MERGE
14040
14030
 
14041
14031
  const pointMerge = pointEnter.merge(pointUpdate);
@@ -14160,14 +14150,14 @@
14160
14150
  }
14161
14151
  customElements.define('roc-space', ROCSpace);
14162
14152
 
14163
- let _$c = t => t,
14164
- _t$c,
14165
- _t2$b,
14166
- _t3$9,
14167
- _t4$9,
14168
- _t5$9,
14169
- _t6$9,
14170
- _t7$9,
14153
+ let _$e = t => t,
14154
+ _t$e,
14155
+ _t2$d,
14156
+ _t3$b,
14157
+ _t4$b,
14158
+ _t5$b,
14159
+ _t6$b,
14160
+ _t7$b,
14171
14161
  _t8$7,
14172
14162
  _t9$7,
14173
14163
  _t10$7,
@@ -14254,7 +14244,7 @@
14254
14244
  this.duration = undefined;
14255
14245
  this.coherence = undefined;
14256
14246
  this.payoff = undefined;
14257
- this.colors = ['none', 'accuracy', 'stimulus', 'response', 'outcome'];
14247
+ this.colors = ['none', 'accuracy', 'stimulus', 'response', 'outcome', 'all'];
14258
14248
  this.color = undefined;
14259
14249
  this.zRoc = undefined;
14260
14250
  this.run = false;
@@ -14354,7 +14344,7 @@
14354
14344
  }
14355
14345
 
14356
14346
  static get styles() {
14357
- return [super.styles, r$2(_t$c || (_t$c = _$c`
14347
+ return [super.styles, r$2(_t$e || (_t$e = _$e`
14358
14348
  :host {
14359
14349
  display: inline-block;
14360
14350
  }
@@ -14385,7 +14375,7 @@
14385
14375
  }
14386
14376
 
14387
14377
  render() {
14388
- return $(_t2$b || (_t2$b = _$c`
14378
+ return $(_t2$d || (_t2$d = _$e`
14389
14379
  <div class="holder">
14390
14380
  ${0}
14391
14381
  ${0}
@@ -14394,35 +14384,36 @@
14394
14384
  ${0}
14395
14385
  ${0}
14396
14386
  ${0}
14397
- </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`
14387
+ </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`
14398
14388
  <decidables-toggle @change=${0}>
14399
14389
  <span slot="label">Emphasis</span>
14400
- <decidables-toggle-option name=${0} value="none" ?checked=${0}>None</decidables-toggle-option>
14401
- <decidables-toggle-option name=${0} value="accuracy" ?checked=${0}>Accuracy</decidables-toggle-option>
14402
- <decidables-toggle-option name=${0} value="stimulus" ?checked=${0}>Stimulus</decidables-toggle-option>
14403
- <decidables-toggle-option name=${0} value="response" ?checked=${0}>Response</decidables-toggle-option>
14404
- <decidables-toggle-option name=${0} value="outcome" ?checked=${0}>Outcome</decidables-toggle-option>
14390
+ <decidables-toggle-option name="toggle" value="none" ?checked=${0}>None</decidables-toggle-option>
14391
+ <decidables-toggle-option name="toggle" value="accuracy" ?checked=${0}>Accuracy</decidables-toggle-option>
14392
+ <decidables-toggle-option name="toggle" value="stimulus" ?checked=${0}>Stimulus</decidables-toggle-option>
14393
+ <decidables-toggle-option name="toggle" value="response" ?checked=${0}>Response</decidables-toggle-option>
14394
+ <decidables-toggle-option name="toggle" value="outcome" ?checked=${0}>Outcome</decidables-toggle-option>
14395
+ <decidables-toggle-option name="toggle" value="all" ?checked=${0}>All</decidables-toggle-option>
14405
14396
  </decidables-toggle>
14406
- `), 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`
14397
+ `), 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`
14407
14398
  <decidables-switch ?checked=${0} @change=${0}>
14408
14399
  <span class="math-var">z</span>ROC
14409
14400
  <span slot="off-label">ROC</span>
14410
14401
  </decidables-switch>
14411
- `), this.zRoc, this.flipZRoc.bind(this)) : $(_t14$2 || (_t14$2 = _$c``)), this.run || this.pause || this.reset ? $(_t15$2 || (_t15$2 = _$c`
14402
+ `), this.zRoc, this.flipZRoc.bind(this)) : $(_t14$2 || (_t14$2 = _$e``)), this.run || this.pause || this.reset ? $(_t15$2 || (_t15$2 = _$e`
14412
14403
  <div class="buttons">
14413
14404
  ${0}
14414
14405
  ${0}
14415
14406
  ${0}
14416
14407
  </div>
14417
- `), 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``)));
14408
+ `), 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``)));
14418
14409
  }
14419
14410
 
14420
14411
  }
14421
14412
  customElements.define('detectable-control', DetectableControl);
14422
14413
 
14423
- let _$b = t => t,
14424
- _t$b,
14425
- _t2$a;
14414
+ let _$d = t => t,
14415
+ _t$d,
14416
+ _t2$c;
14426
14417
  /*
14427
14418
  SDTModel element
14428
14419
  <sdt-model>
@@ -14659,7 +14650,7 @@
14659
14650
  }
14660
14651
 
14661
14652
  static get styles() {
14662
- return [super.styles, r$2(_t$b || (_t$b = _$b`
14653
+ return [super.styles, r$2(_t$d || (_t$d = _$d`
14663
14654
  :host {
14664
14655
  display: inline-block;
14665
14656
 
@@ -14847,7 +14838,7 @@
14847
14838
  .threshold .handle {
14848
14839
  fill: var(---color-element-emphasis);
14849
14840
 
14850
- /* r: 6; HACK: Firefox does not support CSS SVG Geometry Properties */
14841
+ r: 6px;
14851
14842
  }
14852
14843
 
14853
14844
  /* Make a larger target for touch users */
@@ -14905,8 +14896,8 @@
14905
14896
  }
14906
14897
 
14907
14898
  render() {
14908
- // eslint-disable-line class-methods-use-this
14909
- return $(_t2$a || (_t2$a = _$b`
14899
+ /* eslint-disable-line class-methods-use-this */
14900
+ return $(_t2$c || (_t2$c = _$d`
14910
14901
  ${0}
14911
14902
  `), DetectableElement.svgFilters);
14912
14903
  }
@@ -14946,9 +14937,8 @@
14946
14937
 
14947
14938
  firstUpdated(changedProperties) {
14948
14939
  super.firstUpdated(changedProperties); // Get the width and height after initial render/update has occurred
14949
- // HACK Edge: Edge doesn't have width/height until after a 0ms timeout
14950
14940
 
14951
- window.setTimeout(this.getDimensions.bind(this), 0);
14941
+ this.getDimensions();
14952
14942
  }
14953
14943
 
14954
14944
  update(changedProperties) {
@@ -15052,7 +15042,8 @@
15052
15042
  datum.startMuS = this.muS;
15053
15043
  }).on('drag', (event, datum) => {
15054
15044
  this.drag = true;
15055
- let muS = this.muS; // eslint-disable-line prefer-destructuring
15045
+ let muS = this.muS;
15046
+ /* eslint-disable-line prefer-destructuring */
15056
15047
 
15057
15048
  if (this.interactive) {
15058
15049
  muS = xScale.invert(event.x); // Clamp Signal Curve to stay visible
@@ -15060,7 +15051,8 @@
15060
15051
  muS = muS < xScale.domain()[0] ? xScale.domain()[0] : muS > xScale.domain()[1] ? xScale.domain()[1] : muS;
15061
15052
  }
15062
15053
 
15063
- let hS = this.hS; // eslint-disable-line prefer-destructuring
15054
+ let hS = this.hS;
15055
+ /* eslint-disable-line prefer-destructuring */
15064
15056
 
15065
15057
  if (this.unequal) {
15066
15058
  hS = yScale.invert(event.y); // Clamp Signal Curve to stay visible
@@ -15191,7 +15183,8 @@
15191
15183
 
15192
15184
  const noiseMerge = signalNoiseMerge.selectAll('.noise').attr('tabindex', this.interactive ? 0 : null).classed('interactive', this.interactive).on('keydown', this.interactive ? event => {
15193
15185
  if (['ArrowRight', 'ArrowLeft'].includes(event.key)) {
15194
- let muN = this.muN; // eslint-disable-line prefer-destructuring
15186
+ let muN = this.muN;
15187
+ /* eslint-disable-line prefer-destructuring */
15195
15188
 
15196
15189
  switch (event.key) {
15197
15190
  case 'ArrowRight':
@@ -15322,7 +15315,8 @@
15322
15315
 
15323
15316
  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 => {
15324
15317
  if (['ArrowRight', 'ArrowLeft'].includes(event.key)) {
15325
- let muS = this.muS; // eslint-disable-line prefer-destructuring
15318
+ let muS = this.muS;
15319
+ /* eslint-disable-line prefer-destructuring */
15326
15320
 
15327
15321
  switch (event.key) {
15328
15322
  case 'ArrowRight':
@@ -15347,7 +15341,8 @@
15347
15341
  }
15348
15342
  } : null).on('keydown.variance', this.unequal ? event => {
15349
15343
  if (['ArrowUp', 'ArrowDown'].includes(event.key)) {
15350
- let hS = this.hS; // eslint-disable-line prefer-destructuring
15344
+ let hS = this.hS;
15345
+ /* eslint-disable-line prefer-destructuring */
15351
15346
 
15352
15347
  switch (event.key) {
15353
15348
  case 'ArrowUp':
@@ -15504,7 +15499,7 @@
15504
15499
  const interpolateD = interpolate$1(element.d !== undefined ? element.d : this.d, this.d);
15505
15500
  return time => {
15506
15501
  element.d = interpolateD(time);
15507
- select(element).text(+element.d.toFixed(3));
15502
+ select(element).text(format('.3')(element.d));
15508
15503
  };
15509
15504
  }); // EXIT
15510
15505
 
@@ -15535,7 +15530,7 @@
15535
15530
  const interpolateC = interpolate$1(element.c !== undefined ? element.c : this.c, this.c);
15536
15531
  return time => {
15537
15532
  element.c = interpolateC(time);
15538
- select(element).text(+element.c.toFixed(3));
15533
+ select(element).text(format('.3')(element.c));
15539
15534
  };
15540
15535
  }); // EXIT
15541
15536
 
@@ -15570,7 +15565,7 @@
15570
15565
  const interpolateS = interpolate$1(element.s !== undefined ? element.s : this.s, this.s);
15571
15566
  return time => {
15572
15567
  element.s = interpolateS(time);
15573
- select(element).text(+element.s.toFixed(3));
15568
+ select(element).text(format('.3')(element.s));
15574
15569
  };
15575
15570
  }); // EXIT
15576
15571
 
@@ -15581,9 +15576,7 @@
15581
15576
 
15582
15577
  const thresholdEnter = thresholdUpdate.enter().append('g').classed('threshold', true);
15583
15578
  thresholdEnter.append('line').classed('line', true);
15584
- thresholdEnter.append('circle').classed('handle', true).attr('r', 6);
15585
- /* HACK: Firefox does not support CSS SVG Geometry Properties */
15586
- // MERGE
15579
+ thresholdEnter.append('circle').classed('handle', true); // MERGE
15587
15580
 
15588
15581
  const thresholdMerge = thresholdEnter.merge(thresholdUpdate).attr('tabindex', this.interactive ? 0 : null).classed('interactive', this.interactive);
15589
15582
 
@@ -15591,7 +15584,8 @@
15591
15584
  if (this.interactive) {
15592
15585
  thresholdMerge.call(dragThreshold).on('keydown', event => {
15593
15586
  if (['ArrowRight', 'ArrowLeft'].includes(event.key)) {
15594
- let l = this.l; // eslint-disable-line prefer-destructuring
15587
+ let l = this.l;
15588
+ /* eslint-disable-line prefer-destructuring */
15595
15589
 
15596
15590
  switch (event.key) {
15597
15591
  case 'ArrowRight':
@@ -15841,14 +15835,14 @@
15841
15835
  }
15842
15836
  customElements.define('sdt-model', SDTModel);
15843
15837
 
15844
- let _$a = t => t,
15845
- _t$a,
15846
- _t2$9,
15847
- _t3$8,
15848
- _t4$8,
15849
- _t5$8,
15850
- _t6$8,
15851
- _t7$8,
15838
+ let _$c = t => t,
15839
+ _t$c,
15840
+ _t2$b,
15841
+ _t3$a,
15842
+ _t4$a,
15843
+ _t5$a,
15844
+ _t6$a,
15845
+ _t7$a,
15852
15846
  _t8$6,
15853
15847
  _t9$6,
15854
15848
  _t10$6,
@@ -16108,7 +16102,7 @@
16108
16102
  }
16109
16103
 
16110
16104
  static get styles() {
16111
- return [super.styles, r$2(_t$a || (_t$a = _$a`
16105
+ return [super.styles, r$2(_t$c || (_t$c = _$c`
16112
16106
  :host {
16113
16107
  display: inline-block;
16114
16108
  }
@@ -16180,6 +16174,11 @@
16180
16174
  border: 1px solid var(---color-element-border);
16181
16175
  }
16182
16176
 
16177
+ :host([payoff="trial"]) .feedback,
16178
+ :host([payoff="total"]) .feedback {
16179
+ height: 5rem;
16180
+ }
16181
+
16183
16182
  .feedback.h {
16184
16183
  background-color: var(---color-h-light);
16185
16184
  }
@@ -16215,59 +16214,76 @@
16215
16214
  line-height: 1.15;
16216
16215
  }
16217
16216
 
16218
- :host([payoff="trial"]) .feedback,
16219
- :host([payoff="total"]) .feedback {
16220
- height: 4rem;
16221
- }
16222
-
16223
16217
  /* Payoff feedback */
16224
- .payoff {
16218
+ .total {
16225
16219
  text-align: center;
16226
16220
  }
16227
16221
 
16228
- .payoff .label {
16222
+ .total .label {
16229
16223
  font-weight: 600;
16230
16224
  }
16231
16225
  `))];
16232
16226
  }
16233
16227
 
16234
16228
  render() {
16235
- return $(_t2$9 || (_t2$9 = _$a`
16229
+ const payoffFormatter = new Intl.NumberFormat('en-US', {
16230
+ style: 'currency',
16231
+ currency: 'USD',
16232
+ minimumFractionDigits: 0,
16233
+ maximumFractionDigits: 0
16234
+ });
16235
+
16236
+ const payoffFormat = number => {
16237
+ return payoffFormatter.formatToParts(number).map(({
16238
+ type,
16239
+ value
16240
+ }) => {
16241
+ if (type === 'minusSign') {
16242
+ return '−';
16243
+ }
16244
+
16245
+ return value;
16246
+ }).reduce((string, part) => {
16247
+ return string + part;
16248
+ });
16249
+ };
16250
+
16251
+ return $(_t2$b || (_t2$b = _$c`
16236
16252
  <div class="holder">
16237
16253
  <div class="responses">
16238
16254
  <decidables-button name="present" class=${0} ?disabled=${0} @click=${0}>Present</decidables-button>
16239
16255
  <decidables-button name="absent" class=${0} ?disabled=${0} @click=${0}>Absent</decidables-button>
16240
16256
  </div>
16241
16257
  ${0}
16242
- </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`
16258
+ </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`
16243
16259
  <div class="feedbacks">
16244
16260
  ${0}
16245
16261
  ${0}
16246
16262
  ${0}
16247
- </div>`), this.trial ? $(_t4$8 || (_t4$8 = _$a`
16263
+ </div>`), this.trial ? $(_t4$a || (_t4$a = _$c`
16248
16264
  <div class="trial">
16249
16265
  <span class="label">Trial: </span><span class="count">${0}</span><span class="of"> of </span><span class="total">${0}</span>
16250
- </div>`), this.trialCount, this.trialTotal) : $(_t5$8 || (_t5$8 = _$a``)), this.feedback !== 'none' ? $(_t6$8 || (_t6$8 = _$a`
16266
+ </div>`), this.trialCount, this.trialTotal) : $(_t5$a || (_t5$a = _$c``)), this.feedback !== 'none' ? $(_t6$a || (_t6$a = _$c`
16251
16267
  <div class=${0}>
16252
16268
  ${0}
16253
16269
  ${0}
16254
- </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`
16255
- <div class="payoff">
16270
+ </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`
16271
+ <div class="total">
16256
16272
  <span class="label">Total: </span><span class="value">${0}</span>
16257
- </div>`), this.totalPayoff) : $(_t19$1 || (_t19$1 = _$a``))) : $(_t20$1 || (_t20$1 = _$a``)));
16273
+ </div>`), payoffFormat(this.totalPayoff)) : $(_t19$1 || (_t19$1 = _$c``))) : $(_t20$1 || (_t20$1 = _$c``)));
16258
16274
  }
16259
16275
 
16260
16276
  }
16261
16277
  customElements.define('detectable-response', DetectableResponse);
16262
16278
 
16263
- let _$9 = t => t,
16264
- _t$9,
16265
- _t2$8,
16266
- _t3$7,
16267
- _t4$7,
16268
- _t5$7,
16269
- _t6$7,
16270
- _t7$7,
16279
+ let _$b = t => t,
16280
+ _t$b,
16281
+ _t2$a,
16282
+ _t3$9,
16283
+ _t4$9,
16284
+ _t5$9,
16285
+ _t6$9,
16286
+ _t7$9,
16271
16287
  _t8$5,
16272
16288
  _t9$5,
16273
16289
  _t10$5,
@@ -16414,8 +16430,8 @@
16414
16430
  this.numeric = false;
16415
16431
  this.summaries = ['stimulusRates', 'responseRates', 'accuracy'];
16416
16432
  this.summary = new Set();
16417
- this.colors = ['none', 'accuracy', 'stimulus', 'response', 'outcome'];
16418
- this.color = 'outcome';
16433
+ this.colors = ['none', 'accuracy', 'stimulus', 'response', 'outcome', 'all'];
16434
+ this.color = 'all';
16419
16435
  this.h = 40;
16420
16436
  this.m = 60;
16421
16437
  this.fa = 75;
@@ -16554,7 +16570,7 @@
16554
16570
  }
16555
16571
 
16556
16572
  static get styles() {
16557
- return [super.styles, r$2(_t$9 || (_t$9 = _$9`
16573
+ return [super.styles, r$2(_t$b || (_t$b = _$b`
16558
16574
  :host {
16559
16575
  display: inline-block;
16560
16576
  }
@@ -16617,7 +16633,7 @@
16617
16633
 
16618
16634
  /* Color schemes & Table emphasis */
16619
16635
 
16620
- /* (Default) Outcome color scheme */
16636
+ /* (Default) All color scheme */
16621
16637
  .h {
16622
16638
  background: var(---color-h-light);
16623
16639
  border-top: 2px solid var(---color-element-emphasis);
@@ -16716,6 +16732,15 @@
16716
16732
  background: var(---color-element-background);
16717
16733
  }
16718
16734
 
16735
+ /* Outcome color scheme */
16736
+ :host([color="outcome"]) .hr,
16737
+ :host([color="outcome"]) .far,
16738
+ :host([color="outcome"]) .ppv,
16739
+ :host([color="outcome"]) .fomr,
16740
+ :host([color="outcome"]) .acc {
16741
+ background: var(---color-element-background);
16742
+ }
16743
+
16719
16744
  /* No color scheme */
16720
16745
  :host([color="none"]) .cr,
16721
16746
  :host([color="none"]) .fa,
@@ -16738,6 +16763,22 @@
16738
16763
  minimumFractionDigits: 0,
16739
16764
  maximumFractionDigits: 0
16740
16765
  });
16766
+
16767
+ const payoffFormat = number => {
16768
+ return payoffFormatter.formatToParts(number).map(({
16769
+ type,
16770
+ value
16771
+ }) => {
16772
+ if (type === 'minusSign') {
16773
+ return '−';
16774
+ }
16775
+
16776
+ return value;
16777
+ }).reduce((string, part) => {
16778
+ return string + part;
16779
+ });
16780
+ };
16781
+
16741
16782
  this.alignState();
16742
16783
  let h;
16743
16784
  let m;
@@ -16750,72 +16791,72 @@
16750
16791
  let fomr;
16751
16792
 
16752
16793
  if (this.numeric) {
16753
- h = $(_t2$8 || (_t2$8 = _$9`
16794
+ h = $(_t2$a || (_t2$a = _$b`
16754
16795
  <decidables-spinner ?disabled=${0} min="0" .value="${0}" @input=${0}>
16755
16796
  <span>Hits</span>
16756
16797
  ${0}
16757
16798
  </decidables-spinner>
16758
- `), !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``)));
16759
- m = $(_t5$7 || (_t5$7 = _$9`
16799
+ `), !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``)));
16800
+ m = $(_t5$9 || (_t5$9 = _$b`
16760
16801
  <decidables-spinner ?disabled=${0} min="0" .value="${0}" @input=${0}>
16761
16802
  <span>Misses</span>
16762
16803
  ${0}
16763
16804
  </decidables-spinner>
16764
- `), !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``)));
16765
- fa = $(_t8$5 || (_t8$5 = _$9`
16805
+ `), !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``)));
16806
+ fa = $(_t8$5 || (_t8$5 = _$b`
16766
16807
  <decidables-spinner ?disabled=${0} min="0" .value="${0}" @input=${0}>
16767
16808
  <span>False Alarms</span>
16768
16809
  ${0}
16769
16810
  </decidables-spinner>
16770
- `), !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``)));
16771
- cr = $(_t11$5 || (_t11$5 = _$9`
16811
+ `), !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``)));
16812
+ cr = $(_t11$5 || (_t11$5 = _$b`
16772
16813
  <decidables-spinner ?disabled=${0} min="0" .value="${0}" @input=${0}>
16773
16814
  <span>Correct Rejections</span>
16774
16815
  ${0}
16775
16816
  </decidables-spinner>
16776
- `), !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``)));
16777
- hr = $(_t14 || (_t14 = _$9`
16817
+ `), !this.interactive, this.cr, this.crInput.bind(this), this.payoff ? $(_t12 || (_t12 = _$b`<span class="payoff">${0}</span>`), payoffFormat(this.crPayoff)) : $(_t13 || (_t13 = _$b``)));
16818
+ hr = $(_t14 || (_t14 = _$b`
16778
16819
  <decidables-spinner ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
16779
16820
  <span>Hit Rate</span>
16780
16821
  </decidables-spinner>
16781
16822
  `), !this.interactive, +this.hr.toFixed(3), this.hrInput.bind(this));
16782
- far = $(_t15 || (_t15 = _$9`
16823
+ far = $(_t15 || (_t15 = _$b`
16783
16824
  <decidables-spinner ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
16784
16825
  <span>False Alarm Rate</span>
16785
16826
  </decidables-spinner>
16786
16827
  `), !this.interactive, +this.far.toFixed(3), this.farInput.bind(this));
16787
- acc = $(_t16 || (_t16 = _$9`
16828
+ acc = $(_t16 || (_t16 = _$b`
16788
16829
  <decidables-spinner ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
16789
16830
  <span>Accuracy</span>
16790
16831
  </decidables-spinner>
16791
16832
  `), !this.interactive, +this.acc.toFixed(3), this.accInput.bind(this));
16792
- ppv = $(_t17 || (_t17 = _$9`
16833
+ ppv = $(_t17 || (_t17 = _$b`
16793
16834
  <decidables-spinner ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
16794
16835
  <span>Positive Predictive Value</span>
16795
16836
  </decidables-spinner>
16796
16837
  `), !this.interactive, +this.ppv.toFixed(3), this.ppvInput.bind(this));
16797
- fomr = $(_t18 || (_t18 = _$9`
16838
+ fomr = $(_t18 || (_t18 = _$b`
16798
16839
  <decidables-spinner ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
16799
16840
  <span>False Omission Rate</span>
16800
16841
  </decidables-spinner>
16801
16842
  `), !this.interactive, +this.fomr.toFixed(3), this.fomrInput.bind(this));
16802
16843
  } else {
16803
- h = $(_t19 || (_t19 = _$9`<span>Hits</span>
16804
- ${0}`), this.payoff ? $(_t20 || (_t20 = _$9`<span class="payoff">${0}</span>`), payoffFormatter.format(this.hPayoff)) : $(_t21 || (_t21 = _$9``)));
16805
- m = $(_t22 || (_t22 = _$9`<span>Misses</span>
16806
- ${0}`), this.payoff ? $(_t23 || (_t23 = _$9`<span class="payoff">${0}</span>`), payoffFormatter.format(this.mPayoff)) : $(_t24 || (_t24 = _$9``)));
16807
- fa = $(_t25 || (_t25 = _$9`<span>False Alarms</span>
16808
- ${0}`), this.payoff ? $(_t26 || (_t26 = _$9`<span class="payoff">${0}</span>`), payoffFormatter.format(this.faPayoff)) : $(_t27 || (_t27 = _$9``)));
16809
- cr = $(_t28 || (_t28 = _$9`<span>Correct Rejections</span>
16810
- ${0}`), this.payoff ? $(_t29 || (_t29 = _$9`<span class="payoff">${0}</span>`), payoffFormatter.format(this.crPayoff)) : $(_t30 || (_t30 = _$9``)));
16811
- hr = $(_t31 || (_t31 = _$9`<span>Hit Rate</span>`));
16812
- far = $(_t32 || (_t32 = _$9`<span>False Alarm Rate</span>`));
16813
- acc = $(_t33 || (_t33 = _$9`<span>Accuracy</span>`));
16814
- ppv = $(_t34 || (_t34 = _$9`<span>Positive Predictive Value</span>`));
16815
- fomr = $(_t35 || (_t35 = _$9`<span>False Omission Rate</span>`));
16844
+ h = $(_t19 || (_t19 = _$b`<span>Hits</span>
16845
+ ${0}`), this.payoff ? $(_t20 || (_t20 = _$b`<span class="payoff">${0}</span>`), payoffFormat(this.hPayoff)) : $(_t21 || (_t21 = _$b``)));
16846
+ m = $(_t22 || (_t22 = _$b`<span>Misses</span>
16847
+ ${0}`), this.payoff ? $(_t23 || (_t23 = _$b`<span class="payoff">${0}</span>`), payoffFormat(this.mPayoff)) : $(_t24 || (_t24 = _$b``)));
16848
+ fa = $(_t25 || (_t25 = _$b`<span>False Alarms</span>
16849
+ ${0}`), this.payoff ? $(_t26 || (_t26 = _$b`<span class="payoff">${0}</span>`), payoffFormat(this.faPayoff)) : $(_t27 || (_t27 = _$b``)));
16850
+ cr = $(_t28 || (_t28 = _$b`<span>Correct Rejections</span>
16851
+ ${0}`), this.payoff ? $(_t29 || (_t29 = _$b`<span class="payoff">${0}</span>`), payoffFormat(this.crPayoff)) : $(_t30 || (_t30 = _$b``)));
16852
+ hr = $(_t31 || (_t31 = _$b`<span>Hit Rate</span>`));
16853
+ far = $(_t32 || (_t32 = _$b`<span>False Alarm Rate</span>`));
16854
+ acc = $(_t33 || (_t33 = _$b`<span>Accuracy</span>`));
16855
+ ppv = $(_t34 || (_t34 = _$b`<span>Positive Predictive Value</span>`));
16856
+ fomr = $(_t35 || (_t35 = _$b`<span>False Omission Rate</span>`));
16816
16857
  }
16817
16858
 
16818
- return $(_t36 || (_t36 = _$9`
16859
+ return $(_t36 || (_t36 = _$b`
16819
16860
  <table class=${0}>
16820
16861
  <thead>
16821
16862
  <tr>
@@ -16826,10 +16867,10 @@
16826
16867
  </tr>
16827
16868
  <tr>
16828
16869
  <th class="th th-sub" scope="col">
16829
- "Present"
16870
+ Present
16830
16871
  </th>
16831
16872
  <th class="th th-sub" scope="col">
16832
- "Absent"
16873
+ Absent
16833
16874
  </th>
16834
16875
  </tr>
16835
16876
  </thead>
@@ -16863,35 +16904,35 @@
16863
16904
  </tr>
16864
16905
  ${0}
16865
16906
  </tbody>
16866
- </table>`), this.numeric ? 'numeric' : '', h, m, this.summary.has('stimulusRates') ? $(_t37 || (_t37 = _$9`
16907
+ </table>`), this.numeric ? 'numeric' : '', h, m, this.summary.has('stimulusRates') ? $(_t37 || (_t37 = _$b`
16867
16908
  <td class="td td-summary hr">
16868
16909
  ${0}
16869
- </td>`), hr) : $(_t38 || (_t38 = _$9``)), fa, cr, this.summary.has('stimulusRates') ? $(_t39 || (_t39 = _$9`
16910
+ </td>`), hr) : $(_t38 || (_t38 = _$b``)), fa, cr, this.summary.has('stimulusRates') ? $(_t39 || (_t39 = _$b`
16870
16911
  <td class="td td-summary far">
16871
16912
  ${0}
16872
- </td>`), far) : $(_t40 || (_t40 = _$9``)), this.summary.has('responseRates') || this.summary.has('accuracy') ? $(_t41 || (_t41 = _$9`
16913
+ </td>`), far) : $(_t40 || (_t40 = _$b``)), this.summary.has('responseRates') || this.summary.has('accuracy') ? $(_t41 || (_t41 = _$b`
16873
16914
  <tr>
16874
16915
  <td colspan="2"></td>
16875
16916
  ${0}
16876
16917
  ${0}
16877
- </tr>`), this.summary.has('responseRates') ? $(_t42 || (_t42 = _$9`
16918
+ </tr>`), this.summary.has('responseRates') ? $(_t42 || (_t42 = _$b`
16878
16919
  <td class="td td-summary ppv">
16879
16920
  ${0}
16880
16921
  </td>
16881
16922
  <td class="td td-summary fomr">
16882
16923
  ${0}
16883
- </td>`), ppv, fomr) : $(_t43 || (_t43 = _$9`
16884
- <td colspan="2"></td>`)), this.summary.has('accuracy') ? $(_t44 || (_t44 = _$9`
16924
+ </td>`), ppv, fomr) : $(_t43 || (_t43 = _$b`
16925
+ <td colspan="2"></td>`)), this.summary.has('accuracy') ? $(_t44 || (_t44 = _$b`
16885
16926
  <td class="td td-summary acc" rowspan="2">
16886
16927
  ${0}
16887
- </td>`), acc) : $(_t45 || (_t45 = _$9``))) : $(_t46 || (_t46 = _$9``)));
16928
+ </td>`), acc) : $(_t45 || (_t45 = _$b``))) : $(_t46 || (_t46 = _$b``)));
16888
16929
  }
16889
16930
 
16890
16931
  }
16891
16932
  customElements.define('detectable-table', DetectableTable);
16892
16933
 
16893
- let _$8 = t => t,
16894
- _t$8;
16934
+ let _$a = t => t,
16935
+ _t$a;
16895
16936
  /*
16896
16937
  SDTEquation Base Class - Not intended for instantiation!
16897
16938
  <sdt-equation>
@@ -16914,7 +16955,7 @@
16914
16955
  }
16915
16956
 
16916
16957
  static get styles() {
16917
- return [super.styles, r$2(_t$8 || (_t$8 = _$8`
16958
+ return [super.styles, r$2(_t$a || (_t$a = _$a`
16918
16959
  :host {
16919
16960
  display: block;
16920
16961
 
@@ -16933,6 +16974,7 @@
16933
16974
  /* Overall <table> */
16934
16975
  .equation {
16935
16976
  text-align: center;
16977
+ white-space: nowrap;
16936
16978
 
16937
16979
  border-collapse: collapse;
16938
16980
 
@@ -16952,6 +16994,10 @@
16952
16994
  font-style: normal;
16953
16995
  }
16954
16996
 
16997
+ var {
16998
+ border-radius: var(---border-radius);
16999
+ }
17000
+
16955
17001
  .tight {
16956
17002
  padding: 0;
16957
17003
  }
@@ -16977,6 +17023,8 @@
16977
17023
  padding: 0.125rem 0.375rem 0.375rem;
16978
17024
 
16979
17025
  vertical-align: middle;
17026
+
17027
+ border-radius: var(---border-radius);
16980
17028
  }
16981
17029
 
16982
17030
  .bottom {
@@ -17000,6 +17048,14 @@
17000
17048
  background: var(---color-fa-light);
17001
17049
  }
17002
17050
 
17051
+ .ppv {
17052
+ background: var(---color-present-light);
17053
+ }
17054
+
17055
+ .fomr {
17056
+ background: var(---color-absent-light);
17057
+ }
17058
+
17003
17059
  .acc {
17004
17060
  background: var(---color-acc-light);
17005
17061
  }
@@ -17028,14 +17084,14 @@
17028
17084
 
17029
17085
  }
17030
17086
 
17031
- let _$7 = t => t,
17032
- _t$7,
17033
- _t2$7,
17034
- _t3$6,
17035
- _t4$6,
17036
- _t5$6,
17037
- _t6$6,
17038
- _t7$6,
17087
+ let _$9 = t => t,
17088
+ _t$9,
17089
+ _t2$9,
17090
+ _t3$8,
17091
+ _t4$8,
17092
+ _t5$8,
17093
+ _t6$8,
17094
+ _t7$8,
17039
17095
  _t8$4,
17040
17096
  _t9$4,
17041
17097
  _t10$4,
@@ -17130,37 +17186,37 @@
17130
17186
  let far;
17131
17187
 
17132
17188
  if (this.numeric) {
17133
- d = $(_t$7 || (_t$7 = _$7`
17189
+ d = $(_t$9 || (_t$9 = _$9`
17134
17190
  <decidables-spinner class="d bottom" ?disabled=${0} step=".001" .value="${0}" @input=${0}>
17135
17191
  <var class="math-var">d′</var>
17136
17192
  </decidables-spinner>
17137
17193
  `), !this.interactive, this.d, this.dInput.bind(this));
17138
- c = $(_t2$7 || (_t2$7 = _$7`
17194
+ c = $(_t2$9 || (_t2$9 = _$9`
17139
17195
  <decidables-spinner class="c bottom" ?disabled=${0} step=".001" .value="${0}" @input=${0}>
17140
17196
  <var class="math-var">c</var>
17141
17197
  </decidables-spinner>
17142
17198
  `), !this.interactive, this.c, this.cInput.bind(this));
17143
- s = $(_t3$6 || (_t3$6 = _$7`
17199
+ s = $(_t3$8 || (_t3$8 = _$9`
17144
17200
  <decidables-spinner class="s bottom" ?disabled=${0} min="0" step=".001" .value="${0}" @input=${0}>
17145
17201
  <var class="math-var">σ</var>
17146
17202
  </decidables-spinner>
17147
17203
  `), !this.interactive, this.s, this.sInput.bind(this));
17148
- far = $(_t4$6 || (_t4$6 = _$7`
17204
+ far = $(_t4$8 || (_t4$8 = _$9`
17149
17205
  <decidables-spinner class="far bottom" disabled min="0" max="1" step=".001" .value="${0}">
17150
17206
  <var>False Alarm Rate</var>
17151
17207
  </decidables-spinner>
17152
17208
  `), +this.far.toFixed(3));
17153
17209
  } else {
17154
- d = $(_t5$6 || (_t5$6 = _$7`<var class="math-var d">d′</var>`));
17155
- c = $(_t6$6 || (_t6$6 = _$7`<var class="math-var c">c</var>`));
17156
- s = $(_t7$6 || (_t7$6 = _$7`<var class="math-var s">σ</var>`));
17157
- far = $(_t8$4 || (_t8$4 = _$7`<var class="far">False Alarm Rate</var>`));
17210
+ d = $(_t5$8 || (_t5$8 = _$9`<var class="math-var d">d′</var>`));
17211
+ c = $(_t6$8 || (_t6$8 = _$9`<var class="math-var c">c</var>`));
17212
+ s = $(_t7$8 || (_t7$8 = _$9`<var class="math-var s">σ</var>`));
17213
+ far = $(_t8$4 || (_t8$4 = _$9`<var class="far">False Alarm Rate</var>`));
17158
17214
  }
17159
17215
 
17160
17216
  let equation;
17161
17217
 
17162
17218
  if (this.unequal) {
17163
- equation = $(_t9$4 || (_t9$4 = _$7`
17219
+ equation = $(_t9$4 || (_t9$4 = _$9`
17164
17220
  <tr>
17165
17221
  <td rowspan="2">
17166
17222
  ${0}<span class="equals">=</span><var class="math-greek phi tight">Φ</var><span class="paren tight">(</span><span class="bracket tight">[</span>
@@ -17187,7 +17243,7 @@
17187
17243
  </td>
17188
17244
  </tr>`), far, s, d, c, s);
17189
17245
  } else {
17190
- equation = $(_t10$4 || (_t10$4 = _$7`
17246
+ equation = $(_t10$4 || (_t10$4 = _$9`
17191
17247
  <tr>
17192
17248
  <td rowspan="2">
17193
17249
  ${0}<span class="equals">=</span><var class="math-greek phi tight">Φ</var><span class="paren tight">(</span><span class="minus tight">−</span>
@@ -17206,7 +17262,7 @@
17206
17262
  </tr>`), far, d, c);
17207
17263
  }
17208
17264
 
17209
- return $(_t11$4 || (_t11$4 = _$7`
17265
+ return $(_t11$4 || (_t11$4 = _$9`
17210
17266
  <div class="holder">
17211
17267
  <table class="equation">
17212
17268
  <tbody>
@@ -17219,14 +17275,14 @@
17219
17275
  }
17220
17276
  customElements.define('sdt-equation-dc2far', SDTEquationDC2Far);
17221
17277
 
17222
- let _$6 = t => t,
17223
- _t$6,
17224
- _t2$6,
17225
- _t3$5,
17226
- _t4$5,
17227
- _t5$5,
17228
- _t6$5,
17229
- _t7$5,
17278
+ let _$8 = t => t,
17279
+ _t$8,
17280
+ _t2$8,
17281
+ _t3$7,
17282
+ _t4$7,
17283
+ _t5$7,
17284
+ _t6$7,
17285
+ _t7$7,
17230
17286
  _t8$3,
17231
17287
  _t9$3,
17232
17288
  _t10$3,
@@ -17321,37 +17377,37 @@
17321
17377
  let hr;
17322
17378
 
17323
17379
  if (this.numeric) {
17324
- d = $(_t$6 || (_t$6 = _$6`
17380
+ d = $(_t$8 || (_t$8 = _$8`
17325
17381
  <decidables-spinner class="d bottom" ?disabled=${0} step=".001" .value="${0}" @input=${0}>
17326
17382
  <var class="math-var">d′</var>
17327
17383
  </decidables-spinner>
17328
17384
  `), !this.interactive, this.d, this.dInput.bind(this));
17329
- c = $(_t2$6 || (_t2$6 = _$6`
17385
+ c = $(_t2$8 || (_t2$8 = _$8`
17330
17386
  <decidables-spinner class="c bottom" ?disabled=${0} step=".001" .value="${0}" @input=${0}>
17331
17387
  <var class="math-var">c</var>
17332
17388
  </decidables-spinner>
17333
17389
  `), !this.interactive, this.c, this.cInput.bind(this));
17334
- s = $(_t3$5 || (_t3$5 = _$6`
17390
+ s = $(_t3$7 || (_t3$7 = _$8`
17335
17391
  <decidables-spinner class="s bottom" ?disabled=${0} min="0" step=".001" .value="${0}" @input=${0}>
17336
17392
  <var class="math-var">σ</var>
17337
17393
  </decidables-spinner>
17338
17394
  `), !this.interactive, this.s, this.sInput.bind(this));
17339
- hr = $(_t4$5 || (_t4$5 = _$6`
17395
+ hr = $(_t4$7 || (_t4$7 = _$8`
17340
17396
  <decidables-spinner class="hr bottom" disabled min="0" max="1" step=".001" .value="${0}">
17341
17397
  <var>Hit Rate</var>
17342
17398
  </decidables-spinner>
17343
17399
  `), +this.hr.toFixed(3));
17344
17400
  } else {
17345
- d = $(_t5$5 || (_t5$5 = _$6`<var class="math-var d">d′</var>`));
17346
- c = $(_t6$5 || (_t6$5 = _$6`<var class="math-var c">c</var>`));
17347
- s = $(_t7$5 || (_t7$5 = _$6`<var class="math-var s">σ</var>`));
17348
- hr = $(_t8$3 || (_t8$3 = _$6`<var class="hr">Hit Rate</var>`));
17401
+ d = $(_t5$7 || (_t5$7 = _$8`<var class="math-var d">d′</var>`));
17402
+ c = $(_t6$7 || (_t6$7 = _$8`<var class="math-var c">c</var>`));
17403
+ s = $(_t7$7 || (_t7$7 = _$8`<var class="math-var s">σ</var>`));
17404
+ hr = $(_t8$3 || (_t8$3 = _$8`<var class="hr">Hit Rate</var>`));
17349
17405
  }
17350
17406
 
17351
17407
  let equation;
17352
17408
 
17353
17409
  if (this.unequal) {
17354
- equation = $(_t9$3 || (_t9$3 = _$6`
17410
+ equation = $(_t9$3 || (_t9$3 = _$8`
17355
17411
  <tr>
17356
17412
  <td rowspan="2">
17357
17413
  ${0}<span class="equals">=</span><var class="math-greek phi tight">Φ</var><span class="paren tight">(</span><span class="bracket tight">[</span>
@@ -17387,7 +17443,7 @@
17387
17443
  </td>
17388
17444
  </tr>`), hr, s, d, c, s, s);
17389
17445
  } else {
17390
- equation = $(_t10$3 || (_t10$3 = _$6`
17446
+ equation = $(_t10$3 || (_t10$3 = _$8`
17391
17447
  <tr>
17392
17448
  <td rowspan="2">
17393
17449
  ${0}<span class="equals">=</span><var class="math-greek phi tight">Φ</var><span class="paren tight">(</span>
@@ -17406,7 +17462,7 @@
17406
17462
  </tr>`), hr, d, c);
17407
17463
  }
17408
17464
 
17409
- return $(_t11$3 || (_t11$3 = _$6`
17465
+ return $(_t11$3 || (_t11$3 = _$8`
17410
17466
  <div class="holder">
17411
17467
  <table class="equation">
17412
17468
  <tbody>
@@ -17419,14 +17475,14 @@
17419
17475
  }
17420
17476
  customElements.define('sdt-equation-dc2hr', SDTEquationDC2Hr);
17421
17477
 
17422
- let _$5 = t => t,
17423
- _t$5,
17424
- _t2$5,
17425
- _t3$4,
17426
- _t4$4,
17427
- _t5$4,
17428
- _t6$4,
17429
- _t7$4;
17478
+ let _$7 = t => t,
17479
+ _t$7,
17480
+ _t2$7,
17481
+ _t3$6,
17482
+ _t4$6,
17483
+ _t5$6,
17484
+ _t6$6,
17485
+ _t7$6;
17430
17486
  /*
17431
17487
  SDTEquationFaCr2Far element
17432
17488
  <sdt-equation-facr2far>
@@ -17497,28 +17553,28 @@
17497
17553
  let far;
17498
17554
 
17499
17555
  if (this.numeric) {
17500
- fa = $(_t$5 || (_t$5 = _$5`
17556
+ fa = $(_t$7 || (_t$7 = _$7`
17501
17557
  <decidables-spinner class="fa" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17502
17558
  <var>False Alarms</var>
17503
17559
  </decidables-spinner>
17504
17560
  `), !this.interactive, this.fa, this.faInput.bind(this));
17505
- cr = $(_t2$5 || (_t2$5 = _$5`
17561
+ cr = $(_t2$7 || (_t2$7 = _$7`
17506
17562
  <decidables-spinner class="cr" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17507
17563
  <var>Correct Rejections</var>
17508
17564
  </decidables-spinner>
17509
17565
  `), !this.interactive, this.cr, this.crInput.bind(this));
17510
- far = $(_t3$4 || (_t3$4 = _$5`
17566
+ far = $(_t3$6 || (_t3$6 = _$7`
17511
17567
  <decidables-spinner class="far" disabled min="0" max="1" step=".001" .value="${0}">
17512
17568
  <var>False Alarm Rate</var>
17513
17569
  </decidables-spinner>
17514
17570
  `), +this.far.toFixed(3));
17515
17571
  } else {
17516
- fa = $(_t4$4 || (_t4$4 = _$5`<var class="fa">False Alarms</var>`));
17517
- cr = $(_t5$4 || (_t5$4 = _$5`<var class="cr">Correct Rejections</var>`));
17518
- far = $(_t6$4 || (_t6$4 = _$5`<var class="far">False Alarm Rate</var>`));
17572
+ fa = $(_t4$6 || (_t4$6 = _$7`<var class="fa">False Alarms</var>`));
17573
+ cr = $(_t5$6 || (_t5$6 = _$7`<var class="cr">Correct Rejections</var>`));
17574
+ far = $(_t6$6 || (_t6$6 = _$7`<var class="far">False Alarm Rate</var>`));
17519
17575
  }
17520
17576
 
17521
- return $(_t7$4 || (_t7$4 = _$5`
17577
+ return $(_t7$6 || (_t7$6 = _$7`
17522
17578
  <div class="holder">
17523
17579
  <table class="equation">
17524
17580
  <tbody>
@@ -17543,16 +17599,141 @@
17543
17599
  }
17544
17600
  customElements.define('sdt-equation-facr2far', SDTEquationFaCr2Far);
17545
17601
 
17546
- let _$4 = t => t,
17547
- _t$4,
17548
- _t2$4,
17549
- _t3$3,
17550
- _t4$3,
17551
- _t5$3,
17552
- _t6$3,
17553
- _t7$3;
17602
+ let _$6 = t => t,
17603
+ _t$6,
17604
+ _t2$6,
17605
+ _t3$5,
17606
+ _t4$5,
17607
+ _t5$5,
17608
+ _t6$5,
17609
+ _t7$5;
17554
17610
  /*
17555
- SDTEquationHM2Hr element
17611
+ SDTEquationHFa2Ppv element
17612
+ <sdt-equation-hm2hr>
17613
+
17614
+ Attributes:
17615
+ Hits; Misses; Hit Rate;
17616
+ */
17617
+
17618
+ class SDTEquationHFa2Ppv extends SDTEquation {
17619
+ static get properties() {
17620
+ return {
17621
+ h: {
17622
+ attribute: 'hits',
17623
+ type: Number,
17624
+ reflect: true
17625
+ },
17626
+ fa: {
17627
+ attribute: 'false-alarms',
17628
+ type: Number,
17629
+ reflect: true
17630
+ },
17631
+ ppv: {
17632
+ attribute: false,
17633
+ type: Number,
17634
+ reflect: false
17635
+ }
17636
+ };
17637
+ }
17638
+
17639
+ constructor() {
17640
+ super();
17641
+ this.h = 0;
17642
+ this.fa = 0;
17643
+ this.alignState();
17644
+ }
17645
+
17646
+ alignState() {
17647
+ this.ppv = SDTMath.hFa2Ppv(this.h, this.fa);
17648
+ }
17649
+
17650
+ sendEvent() {
17651
+ this.dispatchEvent(new CustomEvent('sdt-equation-hfa2ppv-change', {
17652
+ detail: {
17653
+ h: this.h,
17654
+ fa: this.fa,
17655
+ ppv: this.ppv
17656
+ },
17657
+ bubbles: true
17658
+ }));
17659
+ }
17660
+
17661
+ hInput(event) {
17662
+ this.h = parseInt(event.target.value, 10);
17663
+ this.alignState();
17664
+ this.sendEvent();
17665
+ }
17666
+
17667
+ faInput(event) {
17668
+ this.fa = parseInt(event.target.value, 10);
17669
+ this.alignState();
17670
+ this.sendEvent();
17671
+ }
17672
+
17673
+ render() {
17674
+ this.alignState();
17675
+ let h;
17676
+ let fa;
17677
+ let ppv;
17678
+
17679
+ if (this.numeric) {
17680
+ h = $(_t$6 || (_t$6 = _$6`
17681
+ <decidables-spinner class="h" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17682
+ <var>Hits</var>
17683
+ </decidables-spinner>
17684
+ `), !this.interactive, this.h, this.hInput.bind(this));
17685
+ fa = $(_t2$6 || (_t2$6 = _$6`
17686
+ <decidables-spinner class="fa" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17687
+ <var>False Alarms</var>
17688
+ </decidables-spinner>
17689
+ `), !this.interactive, this.fa, this.faInput.bind(this));
17690
+ ppv = $(_t3$5 || (_t3$5 = _$6`
17691
+ <decidables-spinner class="ppv" disabled min="0" max="1" step=".001" .value="${0}">
17692
+ <var>Positive Predictive Value</var>
17693
+ </decidables-spinner>
17694
+ `), +this.ppv.toFixed(3));
17695
+ } else {
17696
+ h = $(_t4$5 || (_t4$5 = _$6`<var class="h">Hits</var>`));
17697
+ fa = $(_t5$5 || (_t5$5 = _$6`<var class="fa">False Alarms</var>`));
17698
+ ppv = $(_t6$5 || (_t6$5 = _$6`<var class="ppv">Positive Predictive Value</var>`));
17699
+ }
17700
+
17701
+ return $(_t7$5 || (_t7$5 = _$6`
17702
+ <div class="holder">
17703
+ <table class="equation">
17704
+ <tbody>
17705
+ <tr>
17706
+ <td rowspan="2">
17707
+ ${0}<span class="equals">=</span>
17708
+ </td>
17709
+ <td class="underline">
17710
+ ${0}
17711
+ </td>
17712
+ </tr>
17713
+ <tr>
17714
+ <td>
17715
+ ${0}<span class="plus">+</span>${0}
17716
+ </td>
17717
+ </tr>
17718
+ </tbody>
17719
+ </table>
17720
+ </div>
17721
+ `), ppv, h, h, fa);
17722
+ }
17723
+
17724
+ }
17725
+ customElements.define('sdt-equation-hfa2ppv', SDTEquationHFa2Ppv);
17726
+
17727
+ let _$5 = t => t,
17728
+ _t$5,
17729
+ _t2$5,
17730
+ _t3$4,
17731
+ _t4$4,
17732
+ _t5$4,
17733
+ _t6$4,
17734
+ _t7$4;
17735
+ /*
17736
+ SDTEquationHM2Hr element
17556
17737
  <sdt-equation-hm2hr>
17557
17738
 
17558
17739
  Attributes:
@@ -17621,28 +17802,28 @@
17621
17802
  let hr;
17622
17803
 
17623
17804
  if (this.numeric) {
17624
- h = $(_t$4 || (_t$4 = _$4`
17805
+ h = $(_t$5 || (_t$5 = _$5`
17625
17806
  <decidables-spinner class="h" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17626
17807
  <var>Hits</var>
17627
17808
  </decidables-spinner>
17628
17809
  `), !this.interactive, this.h, this.hInput.bind(this));
17629
- m = $(_t2$4 || (_t2$4 = _$4`
17810
+ m = $(_t2$5 || (_t2$5 = _$5`
17630
17811
  <decidables-spinner class="m" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17631
17812
  <var>Misses</var>
17632
17813
  </decidables-spinner>
17633
17814
  `), !this.interactive, this.m, this.mInput.bind(this));
17634
- hr = $(_t3$3 || (_t3$3 = _$4`
17815
+ hr = $(_t3$4 || (_t3$4 = _$5`
17635
17816
  <decidables-spinner class="hr" disabled min="0" max="1" step=".001" .value="${0}">
17636
17817
  <var>Hit Rate</var>
17637
17818
  </decidables-spinner>
17638
17819
  `), +this.hr.toFixed(3));
17639
17820
  } else {
17640
- h = $(_t4$3 || (_t4$3 = _$4`<var class="h">Hits</var>`));
17641
- m = $(_t5$3 || (_t5$3 = _$4`<var class="m">Misses</var>`));
17642
- hr = $(_t6$3 || (_t6$3 = _$4`<var class="hr">Hit Rate</var>`));
17821
+ h = $(_t4$4 || (_t4$4 = _$5`<var class="h">Hits</var>`));
17822
+ m = $(_t5$4 || (_t5$4 = _$5`<var class="m">Misses</var>`));
17823
+ hr = $(_t6$4 || (_t6$4 = _$5`<var class="hr">Hit Rate</var>`));
17643
17824
  }
17644
17825
 
17645
- return $(_t7$3 || (_t7$3 = _$4`
17826
+ return $(_t7$4 || (_t7$4 = _$5`
17646
17827
  <div class="holder">
17647
17828
  <table class="equation">
17648
17829
  <tbody>
@@ -17668,14 +17849,14 @@
17668
17849
  }
17669
17850
  customElements.define('sdt-equation-hm2hr', SDTEquationHM2Hr);
17670
17851
 
17671
- let _$3 = t => t,
17672
- _t$3,
17673
- _t2$3,
17674
- _t3$2,
17675
- _t4$2,
17676
- _t5$2,
17677
- _t6$2,
17678
- _t7$2,
17852
+ let _$4 = t => t,
17853
+ _t$4,
17854
+ _t2$4,
17855
+ _t3$3,
17856
+ _t4$3,
17857
+ _t5$3,
17858
+ _t6$3,
17859
+ _t7$3,
17679
17860
  _t8$2,
17680
17861
  _t9$2,
17681
17862
  _t10$2,
@@ -17778,40 +17959,40 @@
17778
17959
  let acc;
17779
17960
 
17780
17961
  if (this.numeric) {
17781
- h = $(_t$3 || (_t$3 = _$3`
17962
+ h = $(_t$4 || (_t$4 = _$4`
17782
17963
  <decidables-spinner class="h" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17783
17964
  <var>Hits</var>
17784
17965
  </decidables-spinner>
17785
17966
  `), !this.interactive, this.h, this.hInput.bind(this));
17786
- m = $(_t2$3 || (_t2$3 = _$3`
17967
+ m = $(_t2$4 || (_t2$4 = _$4`
17787
17968
  <decidables-spinner class="m" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17788
17969
  <var>Misses</var>
17789
17970
  </decidables-spinner>
17790
17971
  `), !this.interactive, this.m, this.mInput.bind(this));
17791
- fa = $(_t3$2 || (_t3$2 = _$3`
17972
+ fa = $(_t3$3 || (_t3$3 = _$4`
17792
17973
  <decidables-spinner class="fa" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17793
17974
  <var>False Alarms</var>
17794
17975
  </decidables-spinner>
17795
17976
  `), !this.interactive, this.fa, this.faInput.bind(this));
17796
- cr = $(_t4$2 || (_t4$2 = _$3`
17977
+ cr = $(_t4$3 || (_t4$3 = _$4`
17797
17978
  <decidables-spinner class="cr" ?disabled=${0} min="0" .value="${0}" @input=${0}>
17798
17979
  <var>Correct Rejections</var>
17799
17980
  </decidables-spinner>
17800
17981
  `), !this.interactive, this.cr, this.crInput.bind(this));
17801
- acc = $(_t5$2 || (_t5$2 = _$3`
17982
+ acc = $(_t5$3 || (_t5$3 = _$4`
17802
17983
  <decidables-spinner class="acc" disabled min="0" max="1" step=".001" .value="${0}">
17803
17984
  <var>Accuracy</var>
17804
17985
  </decidables-spinner>
17805
17986
  `), +this.acc.toFixed(3));
17806
17987
  } else {
17807
- h = $(_t6$2 || (_t6$2 = _$3`<var class="h">Hits</var>`));
17808
- m = $(_t7$2 || (_t7$2 = _$3`<var class="m">Misses</var>`));
17809
- fa = $(_t8$2 || (_t8$2 = _$3`<var class="fa">False Alarms</var>`));
17810
- cr = $(_t9$2 || (_t9$2 = _$3`<var class="cr">Correct Rejections</var>`));
17811
- acc = $(_t10$2 || (_t10$2 = _$3`<var class="acc">Accuracy</var>`));
17988
+ h = $(_t6$3 || (_t6$3 = _$4`<var class="h">Hits</var>`));
17989
+ m = $(_t7$3 || (_t7$3 = _$4`<var class="m">Misses</var>`));
17990
+ fa = $(_t8$2 || (_t8$2 = _$4`<var class="fa">False Alarms</var>`));
17991
+ cr = $(_t9$2 || (_t9$2 = _$4`<var class="cr">Correct Rejections</var>`));
17992
+ acc = $(_t10$2 || (_t10$2 = _$4`<var class="acc">Accuracy</var>`));
17812
17993
  }
17813
17994
 
17814
- return $(_t11$2 || (_t11$2 = _$3`
17995
+ return $(_t11$2 || (_t11$2 = _$4`
17815
17996
  <div class="holder">
17816
17997
  <table class="equation">
17817
17998
  <tbody>
@@ -17830,20 +18011,20 @@
17830
18011
  </tr>
17831
18012
  </tbody>
17832
18013
  </table>
17833
- </div>`), acc, h, cr, h, m, fa, cr);
18014
+ </div>`), acc, h, cr, h, cr, m, fa);
17834
18015
  }
17835
18016
 
17836
18017
  }
17837
18018
  customElements.define('sdt-equation-hmfacr2acc', SDTEquationHMFaCr2Acc);
17838
18019
 
17839
- let _$2 = t => t,
17840
- _t$2,
17841
- _t2$2,
17842
- _t3$1,
17843
- _t4$1,
17844
- _t5$1,
17845
- _t6$1,
17846
- _t7$1,
18020
+ let _$3 = t => t,
18021
+ _t$3,
18022
+ _t2$3,
18023
+ _t3$2,
18024
+ _t4$2,
18025
+ _t5$2,
18026
+ _t6$2,
18027
+ _t7$2,
17847
18028
  _t8$1,
17848
18029
  _t9$1,
17849
18030
  _t10$1,
@@ -17938,37 +18119,37 @@
17938
18119
  let c;
17939
18120
 
17940
18121
  if (this.numeric) {
17941
- hr = $(_t$2 || (_t$2 = _$2`
18122
+ hr = $(_t$3 || (_t$3 = _$3`
17942
18123
  <decidables-spinner class="hr bottom" ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
17943
18124
  <var>Hit Rate</var>
17944
18125
  </decidables-spinner>
17945
18126
  `), !this.interactive, this.hr, this.hrInput.bind(this));
17946
- far = $(_t2$2 || (_t2$2 = _$2`
18127
+ far = $(_t2$3 || (_t2$3 = _$3`
17947
18128
  <decidables-spinner class="far bottom" ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
17948
18129
  <var>False Alarm Rate</var>
17949
18130
  </decidables-spinner>
17950
18131
  `), !this.interactive, this.far, this.farInput.bind(this));
17951
- s = $(_t3$1 || (_t3$1 = _$2`
18132
+ s = $(_t3$2 || (_t3$2 = _$3`
17952
18133
  <decidables-spinner class="s bottom" ?disabled=${0} min="0" step=".001" .value="${0}" @input=${0}>
17953
18134
  <var class="math-var">σ</var>
17954
18135
  </decidables-spinner>
17955
18136
  `), !this.interactive, this.s, this.sInput.bind(this));
17956
- c = $(_t4$1 || (_t4$1 = _$2`
18137
+ c = $(_t4$2 || (_t4$2 = _$3`
17957
18138
  <decidables-spinner class="c bottom" disabled step=".001" .value="${0}">
17958
18139
  <var class="math-var">c</var>
17959
18140
  </decidables-spinner>
17960
18141
  `), +this.c.toFixed(3));
17961
18142
  } else {
17962
- hr = $(_t5$1 || (_t5$1 = _$2`<var class="hr">Hit Rate</var>`));
17963
- far = $(_t6$1 || (_t6$1 = _$2`<var class="far">False Alarm Rate</var>`));
17964
- s = $(_t7$1 || (_t7$1 = _$2`<var class="math-var s">σ</var>`));
17965
- c = $(_t8$1 || (_t8$1 = _$2`<var class="math-var c">c</var>`));
18143
+ hr = $(_t5$2 || (_t5$2 = _$3`<var class="hr">Hit Rate</var>`));
18144
+ far = $(_t6$2 || (_t6$2 = _$3`<var class="far">False Alarm Rate</var>`));
18145
+ s = $(_t7$2 || (_t7$2 = _$3`<var class="math-var s">σ</var>`));
18146
+ c = $(_t8$1 || (_t8$1 = _$3`<var class="math-var c">c</var>`));
17966
18147
  }
17967
18148
 
17968
18149
  let equation;
17969
18150
 
17970
18151
  if (this.unequal) {
17971
- equation = $(_t9$1 || (_t9$1 = _$2`
18152
+ equation = $(_t9$1 || (_t9$1 = _$3`
17972
18153
  <tr>
17973
18154
  <td rowspan="2">
17974
18155
  ${0}<span class="equals">=</span><span class="bracket tight">(</span>
@@ -17995,7 +18176,7 @@
17995
18176
  </td>
17996
18177
  </tr>`), c, s, s, hr, far, s);
17997
18178
  } else {
17998
- equation = $(_t10$1 || (_t10$1 = _$2`
18179
+ equation = $(_t10$1 || (_t10$1 = _$3`
17999
18180
  <tr>
18000
18181
  <td rowspan="2">
18001
18182
  ${0}<span class="equals">=</span>
@@ -18011,7 +18192,7 @@
18011
18192
  </tr>`), c, hr, far);
18012
18193
  }
18013
18194
 
18014
- return $(_t11$1 || (_t11$1 = _$2`
18195
+ return $(_t11$1 || (_t11$1 = _$3`
18015
18196
  <div class="holder">
18016
18197
  <table class="equation">
18017
18198
  <tbody>
@@ -18024,14 +18205,14 @@
18024
18205
  }
18025
18206
  customElements.define('sdt-equation-hrfar2c', SDTEquationHrFar2C);
18026
18207
 
18027
- let _$1 = t => t,
18028
- _t$1,
18029
- _t2$1,
18030
- _t3,
18031
- _t4,
18032
- _t5,
18033
- _t6,
18034
- _t7,
18208
+ let _$2 = t => t,
18209
+ _t$2,
18210
+ _t2$2,
18211
+ _t3$1,
18212
+ _t4$1,
18213
+ _t5$1,
18214
+ _t6$1,
18215
+ _t7$1,
18035
18216
  _t8,
18036
18217
  _t9,
18037
18218
  _t10,
@@ -18126,37 +18307,37 @@
18126
18307
  let d;
18127
18308
 
18128
18309
  if (this.numeric) {
18129
- hr = $(_t$1 || (_t$1 = _$1`
18310
+ hr = $(_t$2 || (_t$2 = _$2`
18130
18311
  <decidables-spinner class="hr bottom" ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
18131
18312
  <var>Hit Rate</var>
18132
18313
  </decidables-spinner>
18133
18314
  `), !this.interactive, this.hr, this.hrInput.bind(this));
18134
- far = $(_t2$1 || (_t2$1 = _$1`
18315
+ far = $(_t2$2 || (_t2$2 = _$2`
18135
18316
  <decidables-spinner class="far bottom" ?disabled=${0} min="0" max="1" step=".001" .value="${0}" @input=${0}>
18136
18317
  <var>False Alarm Rate</var>
18137
18318
  </decidables-spinner>
18138
18319
  `), !this.interactive, this.far, this.farInput.bind(this));
18139
- s = $(_t3 || (_t3 = _$1`
18320
+ s = $(_t3$1 || (_t3$1 = _$2`
18140
18321
  <decidables-spinner class="s bottom" ?disabled=${0} min="0" step=".001" .value="${0}" @input=${0}>
18141
18322
  <var class="math-var">σ</var>
18142
18323
  </decidables-spinner>
18143
18324
  `), !this.interactive, this.s, this.sInput.bind(this));
18144
- d = $(_t4 || (_t4 = _$1`
18325
+ d = $(_t4$1 || (_t4$1 = _$2`
18145
18326
  <decidables-spinner class="d bottom" disabled step=".001" .value="${0}">
18146
18327
  <var class="math-var">d′</var>
18147
18328
  </decidables-spinner>
18148
18329
  `), +this.d.toFixed(3));
18149
18330
  } else {
18150
- hr = $(_t5 || (_t5 = _$1`<var class="hr">Hit Rate</var>`));
18151
- far = $(_t6 || (_t6 = _$1`<var class="far">False Alarm Rate</var>`));
18152
- s = $(_t7 || (_t7 = _$1`<var class="math-var s">σ</var>`));
18153
- d = $(_t8 || (_t8 = _$1`<var class="math-var d">d′</var>`));
18331
+ hr = $(_t5$1 || (_t5$1 = _$2`<var class="hr">Hit Rate</var>`));
18332
+ far = $(_t6$1 || (_t6$1 = _$2`<var class="far">False Alarm Rate</var>`));
18333
+ s = $(_t7$1 || (_t7$1 = _$2`<var class="math-var s">σ</var>`));
18334
+ d = $(_t8 || (_t8 = _$2`<var class="math-var d">d′</var>`));
18154
18335
  }
18155
18336
 
18156
18337
  let equation;
18157
18338
 
18158
18339
  if (this.unequal) {
18159
- equation = $(_t9 || (_t9 = _$1`
18340
+ equation = $(_t9 || (_t9 = _$2`
18160
18341
  <tr>
18161
18342
  <td rowspan="2">
18162
18343
  ${0}<span class="equals">=</span><span class="bracket tight">(</span>
@@ -18174,7 +18355,7 @@
18174
18355
  </td>
18175
18356
  </tr>`), d, s, s, hr, far);
18176
18357
  } else {
18177
- equation = $(_t10 || (_t10 = _$1`
18358
+ equation = $(_t10 || (_t10 = _$2`
18178
18359
  <tr>
18179
18360
  <td>
18180
18361
  ${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>
@@ -18182,7 +18363,7 @@
18182
18363
  </tr>`), d, hr, far);
18183
18364
  }
18184
18365
 
18185
- return $(_t11 || (_t11 = _$1`
18366
+ return $(_t11 || (_t11 = _$2`
18186
18367
  <div class="holder">
18187
18368
  <table class="equation">
18188
18369
  <tbody>
@@ -18195,6 +18376,131 @@
18195
18376
  }
18196
18377
  customElements.define('sdt-equation-hrfar2d', SDTEquationHrFar2D);
18197
18378
 
18379
+ let _$1 = t => t,
18380
+ _t$1,
18381
+ _t2$1,
18382
+ _t3,
18383
+ _t4,
18384
+ _t5,
18385
+ _t6,
18386
+ _t7;
18387
+ /*
18388
+ SDTEquationMCr2Fomr element
18389
+ <sdt-equation-mcr2fomr>
18390
+
18391
+ Attributes:
18392
+ Hits; Misses; Hit Rate;
18393
+ */
18394
+
18395
+ class SDTEquationMCr2Fomr extends SDTEquation {
18396
+ static get properties() {
18397
+ return {
18398
+ m: {
18399
+ attribute: 'misses',
18400
+ type: Number,
18401
+ reflect: true
18402
+ },
18403
+ cr: {
18404
+ attribute: 'correct-rejections',
18405
+ type: Number,
18406
+ reflect: true
18407
+ },
18408
+ fomr: {
18409
+ attribute: false,
18410
+ type: Number,
18411
+ reflect: false
18412
+ }
18413
+ };
18414
+ }
18415
+
18416
+ constructor() {
18417
+ super();
18418
+ this.m = 0;
18419
+ this.cr = 0;
18420
+ this.alignState();
18421
+ }
18422
+
18423
+ alignState() {
18424
+ this.fomr = SDTMath.mCr2Fomr(this.m, this.cr);
18425
+ }
18426
+
18427
+ sendEvent() {
18428
+ this.dispatchEvent(new CustomEvent('sdt-equation-mcr2fomr-change', {
18429
+ detail: {
18430
+ m: this.m,
18431
+ cr: this.cr,
18432
+ fomr: this.fomr
18433
+ },
18434
+ bubbles: true
18435
+ }));
18436
+ }
18437
+
18438
+ mInput(event) {
18439
+ this.m = parseInt(event.target.value, 10);
18440
+ this.alignState();
18441
+ this.sendEvent();
18442
+ }
18443
+
18444
+ crInput(event) {
18445
+ this.cr = parseInt(event.target.value, 10);
18446
+ this.alignState();
18447
+ this.sendEvent();
18448
+ }
18449
+
18450
+ render() {
18451
+ this.alignState();
18452
+ let m;
18453
+ let cr;
18454
+ let fomr;
18455
+
18456
+ if (this.numeric) {
18457
+ m = $(_t$1 || (_t$1 = _$1`
18458
+ <decidables-spinner class="m" ?disabled=${0} min="0" .value="${0}" @input=${0}>
18459
+ <var>Misses</var>
18460
+ </decidables-spinner>
18461
+ `), !this.interactive, this.m, this.mInput.bind(this));
18462
+ cr = $(_t2$1 || (_t2$1 = _$1`
18463
+ <decidables-spinner class="cr" ?disabled=${0} min="0" .value="${0}" @input=${0}>
18464
+ <var>Correct Rejections</var>
18465
+ </decidables-spinner>
18466
+ `), !this.interactive, this.cr, this.crInput.bind(this));
18467
+ fomr = $(_t3 || (_t3 = _$1`
18468
+ <decidables-spinner class="fomr" disabled min="0" max="1" step=".001" .value="${0}">
18469
+ <var>False Omission Rate</var>
18470
+ </decidables-spinner>
18471
+ `), +this.fomr.toFixed(3));
18472
+ } else {
18473
+ m = $(_t4 || (_t4 = _$1`<var class="m">Misses</var>`));
18474
+ cr = $(_t5 || (_t5 = _$1`<var class="cr">Correct Rejections</var>`));
18475
+ fomr = $(_t6 || (_t6 = _$1`<var class="fomr">False Omission Rate</var>`));
18476
+ }
18477
+
18478
+ return $(_t7 || (_t7 = _$1`
18479
+ <div class="holder">
18480
+ <table class="equation">
18481
+ <tbody>
18482
+ <tr>
18483
+ <td rowspan="2">
18484
+ ${0}<span class="equals">=</span>
18485
+ </td>
18486
+ <td class="underline">
18487
+ ${0}
18488
+ </td>
18489
+ </tr>
18490
+ <tr>
18491
+ <td>
18492
+ ${0}<span class="plus">+</span>${0}
18493
+ </td>
18494
+ </tr>
18495
+ </tbody>
18496
+ </table>
18497
+ </div>
18498
+ `), fomr, m, m, cr);
18499
+ }
18500
+
18501
+ }
18502
+ customElements.define('sdt-equation-mcr2fomr', SDTEquationMCr2Fomr);
18503
+
18198
18504
  let _ = t => t,
18199
18505
  _t,
18200
18506
  _t2;
@@ -18207,12 +18513,8 @@
18207
18513
  static get styles() {
18208
18514
  return [super.styles, r$2(_t || (_t = _`
18209
18515
  :host {
18210
- ---border: var(--border, 1px solid var(---color-border));
18211
18516
  display: inline-block;
18212
18517
 
18213
- /* This makes IE11 happy */
18214
- width: 100%;
18215
-
18216
18518
  margin-bottom: 1rem;
18217
18519
  }
18218
18520
 
@@ -18231,7 +18533,7 @@
18231
18533
  padding: 0.625rem;
18232
18534
 
18233
18535
  border: var(---border);
18234
- border-radius: 0.25rem;
18536
+ border-radius: var(---border-radius);
18235
18537
  }
18236
18538
 
18237
18539
  .body ::slotted(*) {
@@ -18257,7 +18559,7 @@
18257
18559
  }
18258
18560
 
18259
18561
  render() {
18260
- // eslint-disable-line class-methods-use-this
18562
+ /* eslint-disable-line class-methods-use-this */
18261
18563
  return $(_t2 || (_t2 = _`
18262
18564
  <div class="holder">
18263
18565
  <div class="body">
@@ -18905,6 +19207,81 @@
18905
19207
  }
18906
19208
  customElements.define('sdt-example-model', SDTExampleModel);
18907
19209
 
19210
+ /*
19211
+ SDTExampleMulti element
19212
+ <sdt-example-multi>
19213
+ */
19214
+
19215
+ class SDTExampleMultiple extends SDTExample {
19216
+ static get properties() {
19217
+ return {
19218
+ variable: {
19219
+ attribute: 'variable',
19220
+ type: String,
19221
+ reflect: true
19222
+ },
19223
+ values: {
19224
+ attribute: 'values',
19225
+ converter: DecidablesConverterArray,
19226
+ reflect: true
19227
+ }
19228
+ };
19229
+ }
19230
+
19231
+ constructor() {
19232
+ super();
19233
+ this.variables = ['d', 'c'];
19234
+ this.variable = 'd';
19235
+ this.values = [0, 1];
19236
+ }
19237
+
19238
+ firstUpdated() {
19239
+ this.detectableControl = this.querySelector('detectable-control');
19240
+ this.rocSpace = this.querySelector('roc-space');
19241
+ this.sdtModel = this.querySelector('sdt-model');
19242
+
19243
+ if (this.detectableControl) {
19244
+ this.detectableControl.addEventListener('detectable-control-z-roc', event => {
19245
+ this.rocSpace.zRoc = event.detail.zRoc;
19246
+ });
19247
+ }
19248
+
19249
+ if (this.rocSpace) {
19250
+ this.rocSpace.setWithSDT(1, 0, 'default', '', 1);
19251
+
19252
+ if (this.variable === 'd') {
19253
+ this.values.forEach((d, index) => {
19254
+ this.rocSpace.setWithSDT(d, this.sdtModel.c, `point${index}`, index + 1, this.sdtModel.s);
19255
+ });
19256
+ } else if (this.variable === 'c') {
19257
+ this.values.forEach((c, index) => {
19258
+ this.rocSpace.setWithSDT(this.sdtModel.d, c, `point${index}`, index + 1, this.sdtModel.s);
19259
+ });
19260
+ }
19261
+ }
19262
+
19263
+ if (this.sdtModel) {
19264
+ this.sdtModel.addEventListener('sdt-model-change', event => {
19265
+ if (this.rocSpace) {
19266
+ this.rocSpace.setWithSDT(event.detail.d, event.detail.c, 'default', '', event.detail.s);
19267
+
19268
+ if (this.variable === 'd') {
19269
+ this.values.forEach((d, index) => {
19270
+ this.rocSpace.setWithSDT(d, event.detail.c, `point${index}`, index + 1, event.detail.s);
19271
+ });
19272
+ } else if (this.variable === 'c') {
19273
+ this.values.forEach((c, index) => {
19274
+ this.rocSpace.setWithSDT(event.detail.d, c, `point${index}`, index + 1, event.detail.s);
19275
+ });
19276
+ }
19277
+ }
19278
+ });
19279
+ }
19280
+ }
19281
+
19282
+ }
19283
+ customElements.define('sdt-example-multiple', SDTExampleMultiple);
19284
+
18908
19285
  /*
18909
19286
  SDTExampleUnequal element
18910
19287
  <sdt-example-unequal>
@@ -18924,15 +19301,13 @@
18924
19301
 
18925
19302
  if (this.rocSpace) {
18926
19303
  this.rocSpace.setWithSDT(1, 0, 'default', '', 1); // Set 'default' to equal variance for contours
19304
+
19305
+ range(-1.5, 1.6, 0.5).forEach((c, index) => {
19306
+ this.rocSpace.setWithSDT(this.sdtModel.d, c, `point${index}`, '', this.sdtModel.s);
19307
+ });
18927
19308
  }
18928
19309
 
18929
19310
  if (this.sdtModel) {
18930
- if (this.rocSpace) {
18931
- range(-1.5, 1.6, 0.5).forEach((c, index) => {
18932
- this.rocSpace.setWithSDT(this.sdtModel.d, c, `point${index}`, '', this.sdtModel.s);
18933
- });
18934
- }
18935
-
18936
19311
  this.sdtModel.addEventListener('sdt-model-change', event => {
18937
19312
  if (this.rocSpace) {
18938
19313
  range(-1.5, 1.6, 0.5).forEach((c, index) => {
@@ -18955,14 +19330,17 @@
18955
19330
  exports.SDTEquationDC2Far = SDTEquationDC2Far;
18956
19331
  exports.SDTEquationDC2Hr = SDTEquationDC2Hr;
18957
19332
  exports.SDTEquationFaCr2Far = SDTEquationFaCr2Far;
19333
+ exports.SDTEquationHFa2Ppv = SDTEquationHFa2Ppv;
18958
19334
  exports.SDTEquationHM2Hr = SDTEquationHM2Hr;
18959
19335
  exports.SDTEquationHMFaCr2Acc = SDTEquationHMFaCr2Acc;
18960
19336
  exports.SDTEquationHrFar2C = SDTEquationHrFar2C;
18961
19337
  exports.SDTEquationHrFar2D = SDTEquationHrFar2D;
19338
+ exports.SDTEquationMCr2Fomr = SDTEquationMCr2Fomr;
18962
19339
  exports.SDTExampleDoubleInteractive = SDTExampleDoubleInteractive;
18963
19340
  exports.SDTExampleHuman = SDTExampleHuman;
18964
19341
  exports.SDTExampleInteractive = SDTExampleInteractive;
18965
19342
  exports.SDTExampleModel = SDTExampleModel;
19343
+ exports.SDTExampleMultiple = SDTExampleMultiple;
18966
19344
  exports.SDTExampleUnequal = SDTExampleUnequal;
18967
19345
  exports.SDTModel = SDTModel;
18968
19346