UNPKG

handsontable

Version:

Handsontable is a JavaScript Data Grid available for React, Angular and Vue.

60 lines (55 loc) 1.55 kB
"use strict"; exports.__esModule = true; exports.createUniqueSet = createUniqueSet; var _function = require("../../helpers/function"); var _errors = require("../../helpers/errors"); const DEFAULT_ERROR_ITEM_EXISTS = item => `'${item}' value is already declared in a unique set.`; /** * @typedef {object} UniqueSet * @property {Function} addItem Adds items to the priority set. * @property {Function} getItems Gets items from the set in order of addition. */ /** * Creates a new unique set. * * @param {object} config The config for priority set. * @param {Function} config.errorItemExists The function to generate custom error message if item is already in the set. * @returns {UniqueSet} */ function createUniqueSet() { let { errorItemExists } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; const uniqueSet = new Set(); errorItemExists = (0, _function.isFunction)(errorItemExists) ? errorItemExists : DEFAULT_ERROR_ITEM_EXISTS; /** * Adds items to the unique set. Throws an error if `item` is already added. * * @param {*} item The adding item. */ function addItem(item) { if (uniqueSet.has(item)) { (0, _errors.throwWithCause)(errorItemExists(item)); } uniqueSet.add(item); } /** * Gets items from the set in order of addition. * * @returns {*} */ function getItems() { return [...uniqueSet]; } /** * Clears the unique set. */ function clear() { uniqueSet.clear(); } return { addItem, clear, getItems }; }