Source: icons/default-stock.js

/**
 * A default icon stock.
 *
 * Defined names are:
 *  * `"plus"`
 *  * `"minus"`
 *  * `"close"`
 *  * `"fat-arrow"`
 *  * `"slim-arrow"`
 *  * `"info"`
 *  * `"qmark"`
 *  * `"exclam"`
 *  * `"check"`
 *  * `"wrench"`
 *  * `"sliders"`
 *  * `"key"`
 *  * `"user"`
 *  * `"sync"`
 *  * `"magnifier"`
 *  * `"full-screen"`
 *  * `"duplicate"`
 *  * `"envelope"`
 *  * `"gear"`
 *  * `"download"`
 *  * `"upload"`
 *  * `"file"`
 *  * `"menu"`
 *  * `"options"`
 *
 * Defined variants are:
 *  * `"darkgray"`
 *  * `"gray"`
 *  * `"lightgray"`
 *  * `"white"`
 *  * `"blue"`
 *  * `"magenta"`
 *  * `"red"`
 *  * `"orange"`
 *  * `"yellow"`
 *  * `"green"`
 *  * `"cyan"`
 *  * `"background"`
 *  * `"foreground"`
 *  * `"disabled"`
 *  * `"interactive"`
 *  * `"highlight"`
 *  * `"danger"`
 *  * `"info"`
 *  * `"warning"`
 *  * `"error"`
 *
 * Defined variant aliases are:
 *  * `"interactive-active" = "interactive brightness(80%)"`
 *  * `"highlight-active" = "highlight brightness(80%)"`
 *  * `"danger-active" = "danger brightness(80%)"`
 *  * `"warning-active" = "warning brightness(80%)"`
 *  * `"error-active" = "error brightness(80%)"`
 *
 * @namespace qui.icons.defaultstock
 */

/* eslint-disable quote-props */

import Config     from '$qui/config.js'
import * as Theme from '$qui/theme.js'

import Stock       from './stock.js'
import * as Stocks from './stocks.js'


/**
 * Default stock name, `"qui"`.
 * @alias qui.icons.defaultstock.NAME
 */
export const NAME = 'qui'


function getQUIStockNameXOffset(name) {
    let xOffset = Theme.getVar(`${name}-icon-x-offset`)
    if (xOffset) {
        return Math.abs(parseFloat(xOffset) / 2)
    }

    return null
}

function getQUIStockVariantYOffset(variant) {
    let yOffset = Theme.getVar(`${variant}-icon-y-offset`)
    if (yOffset) {
        return Math.abs(parseFloat(yOffset) / 2)
    }

    return null
}


/**
 * Return the default icon stock.
 * @alias qui.icons.defaultstock.get
 * @returns {qui.icons.Stock}
 */
export function get() {
    return Stocks.get(NAME)
}


Stocks.register(NAME, function () {
    return new Stock({
        src: `${Config.quiStaticURL}/img/qui-icons.svg`,
        unit: 'rem',
        size: 2,
        width: 80,
        height: 32,
        names: {
            'plus': getQUIStockNameXOffset('plus'),
            'minus': getQUIStockNameXOffset('minus'),
            'close': getQUIStockNameXOffset('close'),
            'fat-arrow': getQUIStockNameXOffset('fat-arrow'),
            'slim-arrow': getQUIStockNameXOffset('slim-arrow'),
            'info': getQUIStockNameXOffset('info'),
            'qmark': getQUIStockNameXOffset('qmark'),
            'exclam': getQUIStockNameXOffset('exclam'),
            'check': getQUIStockNameXOffset('check'),
            'wrench': getQUIStockNameXOffset('wrench'),
            'sliders': getQUIStockNameXOffset('sliders'),
            'key': getQUIStockNameXOffset('key'),
            'user': getQUIStockNameXOffset('user'),
            'sync': getQUIStockNameXOffset('sync'),
            'magnifier': getQUIStockNameXOffset('magnifier'),
            'full-screen': getQUIStockNameXOffset('full-screen'),
            'duplicate': getQUIStockNameXOffset('duplicate'),
            'envelope': getQUIStockNameXOffset('envelope'),
            'gear': getQUIStockNameXOffset('gear'),
            'download': getQUIStockNameXOffset('download'),
            'upload': getQUIStockNameXOffset('upload'),
            'file': getQUIStockNameXOffset('file'),
            'reset': getQUIStockNameXOffset('reset'),
            'menu': getQUIStockNameXOffset('menu'),
            'options': getQUIStockNameXOffset('options')
        },
        variants: {
            'darkgray': getQUIStockVariantYOffset('darkgray'),
            'gray': getQUIStockVariantYOffset('gray'),
            'lightgray': getQUIStockVariantYOffset('lightgray'),
            'white': getQUIStockVariantYOffset('white'),
            'blue': getQUIStockVariantYOffset('blue'),
            'magenta': getQUIStockVariantYOffset('magenta'),
            'red': getQUIStockVariantYOffset('red'),
            'orange': getQUIStockVariantYOffset('orange'),
            'yellow': getQUIStockVariantYOffset('yellow'),
            'green': getQUIStockVariantYOffset('green'),
            'cyan': getQUIStockVariantYOffset('cyan'),

            'background': getQUIStockVariantYOffset('background'),
            'foreground': getQUIStockVariantYOffset('foreground'),
            'foreground-interactive': getQUIStockVariantYOffset('foreground-interactive'),
            'disabled': getQUIStockVariantYOffset('disabled'),
            'interactive': getQUIStockVariantYOffset('interactive'),
            'highlight': getQUIStockVariantYOffset('highlight'),
            'danger': getQUIStockVariantYOffset('danger'),
            'info': getQUIStockVariantYOffset('info'),
            'warning': getQUIStockVariantYOffset('warning'),
            'error': getQUIStockVariantYOffset('error')
        },
        variantAliases: {
            'interactive-active': 'interactive brightness(80%)',
            'highlight-active': 'highlight brightness(80%)',
            'danger-active': 'danger brightness(80%)',
            'warning-active': 'warning brightness(80%)',
            'error-active': 'error brightness(80%)'
        }
    })
})