@decidables/detectable-elements
Version:
detectable-elements: Web Components for visualizing Signal Detection Theory
122 lines (110 loc) • 5.11 kB
JavaScript
import {
css,
unsafeCSS,
} from 'lit';
import * as d3 from 'd3';
import {DecidablesElement} from '@decidables/decidables-elements';
/*
DetectableElement Base Class - Not intended for instantiation!
<detectable-element>
*/
export default class DetectableElement extends DecidablesElement {
static get properties() {
return {
interactive: {
attribute: 'interactive',
type: Boolean,
reflect: true,
},
};
}
constructor() {
super();
this.interactive = false;
}
static get colors() {
return {
h: d3.schemeSet1[2],
m: d3.schemeSet1[4],
fa: d3.schemeSet1[1],
cr: d3.schemeSet1[0],
hr: d3.schemeSet1[5],
far: d3.schemeSet1[3],
acc: d3.schemeSet1[8],
d: d3.schemeSet1[7],
c: d3.schemeSet1[6],
s: '#4545d0',
present: '#f032e6',
absent: '#10dbc9',
correct: '#ffffff',
error: '#000000',
nr: '#cccccc',
};
}
static get lights() {
return Object.keys(DetectableElement.colors).reduce((acc, cur) => {
acc[cur] = d3.interpolateRgb(DetectableElement.colors[cur], '#ffffff')(0.5);
return acc;
}, {});
}
static get darks() {
return Object.keys(DetectableElement.colors).reduce((acc, cur) => {
acc[cur] = d3.interpolateRgb(DetectableElement.colors[cur], '#000000')(0.5);
return acc;
}, {});
}
static get styles() {
return [
super.styles,
css`
:host {
---color-h: var(--color-h, ${unsafeCSS(this.colors.h)});
---color-m: var(--color-m, ${unsafeCSS(this.colors.m)});
---color-fa: var(--color-fa, ${unsafeCSS(this.colors.fa)});
---color-cr: var(--color-cr, ${unsafeCSS(this.colors.cr)});
---color-hr: var(--color-hr, ${unsafeCSS(this.colors.hr)});
---color-far: var(--color-far, ${unsafeCSS(this.colors.far)});
---color-acc: var(--color-acc, ${unsafeCSS(this.colors.acc)});
---color-d: var(--color-d, ${unsafeCSS(this.colors.d)});
---color-c: var(--color-c, ${unsafeCSS(this.colors.c)});
---color-s: var(--color-s, ${unsafeCSS(this.colors.s)});
---color-present: var(--color-present, ${unsafeCSS(this.colors.present)});
---color-absent: var(--color-absent, ${unsafeCSS(this.colors.absent)});
---color-correct: var(--color-correct, ${unsafeCSS(this.colors.correct)});
---color-error: var(--color-error, ${unsafeCSS(this.colors.error)});
---color-nr: var(--color-nr, ${unsafeCSS(this.colors.nr)});
---color-h-light: var(--color-h-light, ${unsafeCSS(this.lights.h)});
---color-m-light: var(--color-m-light, ${unsafeCSS(this.lights.m)});
---color-fa-light: var(--color-fa-light, ${unsafeCSS(this.lights.fa)});
---color-cr-light: var(--color-cr-light, ${unsafeCSS(this.lights.cr)});
---color-hr-light: var(--color-hr-light, ${unsafeCSS(this.lights.hr)});
---color-far-light: var(--color-far-light, ${unsafeCSS(this.lights.far)});
---color-acc-light: var(--color-acc-light, ${unsafeCSS(this.lights.acc)});
---color-d-light: var(--color-d-light, ${unsafeCSS(this.lights.d)});
---color-c-light: var(--color-c-light, ${unsafeCSS(this.lights.c)});
---color-s-light: var(--color-s-light, ${unsafeCSS(this.lights.s)});
---color-present-light: var(--color-present-light, ${unsafeCSS(this.lights.present)});
---color-absent-light: var(--color-absent-light, ${unsafeCSS(this.lights.absent)});
---color-correct-light: var(--color-correct-light, ${unsafeCSS(this.lights.correct)});
---color-error-light: var(--color-error-light, ${unsafeCSS(this.lights.error)});
---color-nr-light: var(--color-nr-light, ${unsafeCSS(this.lights.nr)});
---color-h-dark: var(--color-h-dark, ${unsafeCSS(this.darks.h)});
---color-m-dark: var(--color-m-dark, ${unsafeCSS(this.darks.m)});
---color-fa-dark: var(--color-fa-dark, ${unsafeCSS(this.darks.fa)});
---color-cr-dark: var(--color-cr-dark, ${unsafeCSS(this.darks.cr)});
---color-hr-dark: var(--color-hr-dark, ${unsafeCSS(this.darks.hr)});
---color-far-dark: var(--color-far-dark, ${unsafeCSS(this.darks.far)});
---color-acc-dark: var(--color-acc-dark, ${unsafeCSS(this.darks.acc)});
---color-d-dark: var(--color-d-dark, ${unsafeCSS(this.darks.d)});
---color-c-dark: var(--color-c-dark, ${unsafeCSS(this.darks.c)});
---color-s-dark: var(--color-s-dark, ${unsafeCSS(this.darks.s)});
---color-present-dark: var(--color-present-dark, ${unsafeCSS(this.darks.present)});
---color-absent-dark: var(--color-absent-dark, ${unsafeCSS(this.darks.absent)});
---color-correct-dark: var(--color-correct-dark, ${unsafeCSS(this.darks.correct)});
---color-error-dark: var(--color-error-dark, ${unsafeCSS(this.darks.error)});
---color-nr-dark: var(--color-nr-dark, ${unsafeCSS(this.darks.nr)});
}
`,
];
}
}