handsontable
Version:
Handsontable is a JavaScript Data Grid available for React, Angular and Vue.
89 lines (81 loc) • 2.45 kB
JavaScript
export const collection = new Map();
/**
* @param {string} namespace The namespace for the storage.
* @returns {object}
*/
export function staticRegister() {
let namespace = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'common';
if (!collection.has(namespace)) {
collection.set(namespace, new Map());
}
const subCollection = collection.get(namespace);
/**
* Register an item to the collection. If the item under the same was exist earlier then this item will be replaced with new one.
*
* @param {string} name Identification of the item.
* @param {*} item Item to save in the collection.
*/
function register(name, item) {
subCollection.set(name, item);
}
/**
* Retrieve the item from the collection.
*
* @param {string} name Identification of the item.
* @returns {*} Returns item which was saved in the collection.
*/
function getItem(name) {
return subCollection.get(name);
}
/**
* Check if item under specified name is exists.
*
* @param {string} name Identification of the item.
* @returns {boolean} Returns `true` or `false` depends on if element exists in the collection.
*/
function hasItem(name) {
return subCollection.has(name);
}
/**
* Retrieve list of names registered from the collection.
*
* @returns {Array} Returns an array of strings with all names under which objects are stored.
*/
function getNames() {
return [...subCollection.keys()];
}
/**
* Retrieve all registered values from the collection.
*
* @returns {Array} Returns an array with all values stored in the collection.
*/
function getValues() {
return [...subCollection.values()];
}
/**
* Clear the collection.
*/
function clear() {
collection.delete(namespace);
subCollection.clear();
}
return {
register,
getItem,
hasItem,
getNames,
getValues,
clear
};
}
/**
* Resolves item from the collection that is strictly connected with the Handsontable instance.
*
* @param {Core} hotInstance The Handsontable instance.
* @param {string} name The name of the item to retrieve.
* @returns {*}
*/
export function resolveWithInstance(hotInstance, name) {
var _collection$get;
return collection === null || collection === void 0 || (_collection$get = collection.get(hotInstance.guid)) === null || _collection$get === void 0 ? void 0 : _collection$get.get(name);
}