perspective-viewer 4.4.1

A data visualization and analytics component, especially well-suited for large and/or streaming datasets.
Documentation
/* ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
 * ┃ ██████ ██████ ██████       █      █      █      █      █ █▄  ▀███ █       ┃
 * ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█  ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄  ▀█ █ ▀▀▀▀▀ ┃
 * ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄   █ ▄▄▄▄▄ ┃
 * ┃ █      ██████ █  ▀█▄       █ ██████      █      ███▌▐███ ███████▄ █       ┃
 * ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
 * ┃ Copyright (c) 2017, the Perspective Authors.                              ┃
 * ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
 * ┃ This file is part of the Perspective library, distributed under the terms ┃
 * ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
 * ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
 */

:host {
    #column-style-container {
        outline: none;
        user-select: none;

        &.no-style {
            font-style: italic;
            background-color: var(--psp-placeholder--background);
        }

        .is-default-value .dropdown-width-container {
            background-color: var(--psp--background-color);
        }

        .dropdown-width-container {
            cursor: pointer;
            height: 24px;
            border: 1px solid transparent;
            border-radius: 2px;
            padding: 0 8px;
            border-radius: 2px;
            /* border: 1px solid transparent; */
            border-color: var(--psp-inactive--color, #666);

            &:hover {
                background-color: var(--psp--background-color);
            }
        }

        select {
            cursor: pointer;
            font-size: 10px;
            height: 22px;
            /* padding-bottom: 2px; */
            /* border-bottom: 1px solid var(--input--border-color, #ccc); */
            padding: 0 8px;
        }

        label {
            display: block;
            font-size: var(--label--font-size, 0.75em);
            margin: 4px 0 2px 0;
            width: 100%;
        }

        span.reset-default-style-disabled {
            margin-left: 4px;
            width: 14px;
            height: 14px;
            border: 1px solid var(--psp-inactive--border-color);
            border-radius: 2px;
        }

        span.reset-default-style {
            cursor: pointer;
            width: 22px;
            height: 22px;
            margin-right: -4px;
            display: inline-block;
            background-repeat: no-repeat;
            background-color: var(--psp--color);
            -webkit-mask-size: cover;
            mask-size: cover;
            -webkit-mask-image: var(--psp-icon--close--mask-image);
            mask-image: var(--psp-icon--close--mask-image);

            &:before {
                content: var(--psp-icon--close--mask-image);
                visibility: hidden;
            }
        }

        .is-default-value input.parameter {
            background-color: var(--psp--background-color);
        }

        input.parameter {
            background: none;
            color: inherit;
            border: 0px solid transparent;
            outline: none;
        }

        input.parameter[type="number"] {
            flex: 1 1 auto;
            text-align: left;
            font-family: inherit;
            width: 0;
            border-radius: 2px;
            font-size: 10px;
            height: 24px;
            padding-left: 8px;
            border-width: 1px;
            border-color: var(
                --input--border-color,
                var(--psp-inactive--color, inherit)
            );
        }

        input.parameter.parameter-min[type="number"] {
            border-radius: 2px 0 0 2px;
        }

        input.parameter.parameter-max[type="number"] {
            border-radius: 0 2px 2px 0;
            border-left-width: 0px;
        }

        input[type="number"]::-webkit-inner-spin-button,
        input[type="number"]::-webkit-outer-spin-button {
            opacity: 1;
            background: transparent;
            background-color: transparent;
        }

        .column-style-label {
            display: flex;
            padding: 4px 0px;
        }

        .indent {
            margin-left: 24px;
        }

        input[type="radio"] {
            appearance: none;
            display: inline-block;
            background-repeat: no-repeat;
            background-color: var(--psp--color);
            -webkit-mask-size: cover;
            mask-size: cover;
            -webkit-mask-image: var(--psp-icon--radio-off--mask-image);
            mask-image: var(--psp-icon--radio-off--mask-image);

            &:before {
                content: var(--psp-icon--radio-off--mask-image);
                visibility: hidden;
            }

            &:checked {
                -webkit-mask-image: var(--psp-icon--radio-on--mask-image);
                mask-image: var(--psp-icon--radio-on--mask-image);
            }

            &:hover {
                -webkit-mask-image: var(--psp-icon--radio-hover--mask-image);
                mask-image: var(--psp-icon--radio-hover--mask-image);
            }
        }

        div.section {
            display: flex;
            align-items: center;
            flex: 1 1 100%;
        }

        div.row {
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            margin-bottom: 10px;
        }

        fieldset {
            margin: 0;
        }

        fieldset.style-control {
            border: none;
            padding: 0px 0;
        }

        .color-gradient-container {
            display: flex;
            align-items: center;
            flex-wrap: nowrap;
            flex: 1 1 100%;
            .color-thermometer {
                flex: 1 1 auto;
                height: 24px;
            }
        }

        .color-selector {
            display: grid;

            input {
                grid-column: 1;
                grid-row: 1;
            }
            .color-label {
                display: flex;
                justify-content: center;
                align-items: center;
                font-size: 14px;
                grid-column: 1;
                grid-row: 1;
                margin: 0;
                font-family: var(--psp-button--font-family, inherit);
                color: var(--sign--color, white);
                width: 36px;
                height: 24px;
                text-align: center;
                z-index: 1;
            }
        }

        input[type="color"] {
            width: 100%;
            height: 24px;
            cursor: pointer;
            padding: 0;
            font-family: inherit;
            overflow: hidden;
            border-radius: 12px;

            &:hover {
                opacity: 0.8;
            }

            &.pos-color-param {
                width: 36px;
                border-radius: 12px 0 0 12px;
                margin: 0 1px 0 0;
            }

            &.neg-color-param {
                width: 36px;
                border-radius: 0 12px 12px 0;
                margin: 0 0 0 1px;
            }
        }

        ::-webkit-color-swatch-wrapper {
            padding: 0;
        }

        ::-webkit-color-swatch {
            border: 0;
            border-radius: 0;
        }

        ::-moz-color-swatch,
        ::-moz-focus-inner {
            border: 0;
        }

        ::-moz-focus-inner {
            padding: 0;
        }

        .operator {
            font-family: inherit;
            white-space: pre;
        }

        input[disabled]:before {
            opacity: 0.5;
        }

        input.parameter[disabled] {
            opacity: 0.5;
        }

        button#datetime_format {
            appearance: none;
            background: none;
            color: inherit;
            border: 1px solid var(--psp-inactive--color);
            border-radius: 3px;
            font-family: inherit;
            padding: 6px;
            font-size: 10px;
            width: 100%;
            cursor: pointer;

            &:before {
                content: attr(data-title);
            }

            &:hover {
                border-color: var(--psp--color);
                background-color: var(--psp--color);
                color: var(--psp--background-color);
            }

            &:hover:before {
                content: attr(data-title-hover);
            }
        }
    }
}