Source: icons/stocks.js

/**
 * @namespace qui.icons.stocks
 */

import Logger from '$qui/lib/logger.module.js'

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


const logger = Logger.get('qui.icons')

let stocks = {}
let stockMakers = []


function makeStocks() {
    Object.values(stockMakers).forEach(function ({name, stockMaker}) {
        logger.debug(`making stock "${name}"`)
        let stock = stocks[name] = stockMaker()
        stock.prepare()
    })
}


/**
 * Lookup and return an icon stock by its name.
 * @alias qui.icons.stocks.get
 * @param {String} name
 * @returns {qui.icons.Stock}
 */
export function get(name) {
    return stocks[name]
}

/**
 * Register an icon stock.
 * @alias qui.icons.stocks.register
 * @param {String} name stock name
 * @param {Function} stockMaker a function that creates the stock
 */
export function register(name, stockMaker) {
    stockMakers.push({name: name, stockMaker: stockMaker})
    logger.debug(`registering stock "${name}"`)
}

/**
 * Initialize icon stocks.
 * @alias qui.icons.stocks.init
 */
export function init() {
    makeStocks()

    Theme.changeSignal.connect(function () {
        stocks = {}
        makeStocks()
    })
}