UNPKG

@decidables/discountable-elements

Version:

discountable-elements: Web Components for visualizing Hyperbolic Temporal Discounting

93 lines (80 loc) 3.61 kB
import { css, unsafeCSS, } from 'lit'; import * as d3 from 'd3'; import {DecidablesElement} from '@decidables/decidables-elements'; import {colors} from './colors.yml'; /* DiscountableElement Base Class - Not intended for instantiation! <sdt-element> */ export default class DiscountableElement extends DecidablesElement { static get properties() { return { interactive: { attribute: 'interactive', type: Boolean, reflect: true, }, }; } constructor() { super(); this.interactive = false; } static get colors() { return colors; } static get lights() { return Object.keys(DiscountableElement.colors).reduce((acc, cur) => { acc[cur] = d3.interpolateRgb(DiscountableElement.colors[cur], '#ffffff')(0.5); return acc; }, {}); } static get darks() { return Object.keys(DiscountableElement.colors).reduce((acc, cur) => { acc[cur] = d3.interpolateRgb(DiscountableElement.colors[cur], '#000000')(0.5); return acc; }, {}); } static get styles() { return [ super.styles, css` :host { ---color-a: var(--color-a, ${unsafeCSS(this.colors.a)}); ---color-d: var(--color-d, ${unsafeCSS(this.colors.d)}); ---color-k: var(--color-k, ${unsafeCSS(this.colors.k)}); ---color-v: var(--color-v, ${unsafeCSS(this.colors.v)}); ---color-sooner: var(--color-sooner, ${unsafeCSS(this.colors.sooner)}); ---color-later: var(--color-later, ${unsafeCSS(this.colors.later)}); ---color-larger: var(--color-larger, ${unsafeCSS(this.colors.larger)}); ---color-smaller: var(--color-smaller, ${unsafeCSS(this.colors.smaller)}); ---color-equal: var(--color-equal, ${unsafeCSS(this.colors.equal)}); ---color-nr: var(--color-nr, ${unsafeCSS(this.colors.nr)}); ---color-a-light: var(--color-a-light, ${unsafeCSS(this.lights.a)}); ---color-d-light: var(--color-d-light, ${unsafeCSS(this.lights.d)}); ---color-k-light: var(--color-k-light, ${unsafeCSS(this.lights.k)}); ---color-v-light: var(--color-v-light, ${unsafeCSS(this.lights.v)}); ---color-sooner-light: var(--color-sooner-light, ${unsafeCSS(this.lights.sooner)}); ---color-later-light: var(--color-later-light, ${unsafeCSS(this.lights.later)}); ---color-larger-light: var(--color-larger-light, ${unsafeCSS(this.lights.larger)}); ---color-smaller-light: var(--color-smaller-light, ${unsafeCSS(this.lights.smaller)}); ---color-equal-light: var(--color-equal-light, ${unsafeCSS(this.lights.equal)}); ---color-nr-light: var(--color-nr-light, ${unsafeCSS(this.lights.nr)}); ---color-a-dark: var(--color-a-dark, ${unsafeCSS(this.darks.a)}); ---color-d-dark: var(--color-d-dark, ${unsafeCSS(this.darks.d)}); ---color-k-dark: var(--color-k-dark, ${unsafeCSS(this.darks.k)}); ---color-v-dark: var(--color-v-dark, ${unsafeCSS(this.darks.v)}); ---color-sooner-dark: var(--color-sooner-dark, ${unsafeCSS(this.darks.sooner)}); ---color-later-dark: var(--color-later-dark, ${unsafeCSS(this.darks.later)}); ---color-larger-dark: var(--color-larger-dark, ${unsafeCSS(this.darks.larger)}); ---color-smaller-dark: var(--color-smaller-dark, ${unsafeCSS(this.darks.smaller)}); ---color-equal-dark: var(--color-equal-dark, ${unsafeCSS(this.darks.equal)}); ---color-nr-dark: var(--color-nr-dark, ${unsafeCSS(this.darks.nr)}); } `, ]; } }