UNPKG

handsontable

Version:

Handsontable is a JavaScript Spreadsheet Component available for React, Angular and Vue.

70 lines (56 loc) 1.77 kB
"use strict"; require("core-js/modules/es.array.index-of.js"); exports.__esModule = true; exports.registerOverlayOnce = registerOverlayOnce; exports.createOverlay = createOverlay; exports.hasOverlay = hasOverlay; exports.isOverlayTypeOf = isOverlayTypeOf; var _constants = require("./constants"); var registeredOverlays = {}; /** * Register overlay class. If the Overlay under the same name is already registered * the class won't be registered. * * @param {Overlay} overlayClass Overlay class extended from base overlay class {@link Overlay}. */ function registerOverlayOnce(overlayClass) { var overlayName = overlayClass.OVERLAY_NAME; if (_constants.CLONE_TYPES.indexOf(overlayName) === -1) { throw new Error("Unsupported overlay (".concat(overlayName, ").")); } if (!hasOverlay(overlayName)) { registeredOverlays[overlayName] = overlayClass; } } /** * Create new instance of overlay type. * * @param {string} type Overlay type, one of the CLONE_TYPES value. * @param {Walkontable} wot The Walkontable instance. * @returns {Overlay} */ function createOverlay(type, wot) { return new registeredOverlays[type](wot); } /** * Check if specified overlay was registered. * * @param {string} type Overlay type, one of the CLONE_TYPES value. * @returns {boolean} */ function hasOverlay(type) { return registeredOverlays[type] !== void 0; } /** * Checks if overlay object (`overlay`) is instance of overlay type (`type`). * * @param {Overlay} overlay Overlay object. * @param {string} type Overlay type, one of the CLONE_TYPES value. * @returns {boolean} */ function isOverlayTypeOf(overlay, type) { if (!overlay || !registeredOverlays[type]) { return false; } return overlay instanceof registeredOverlays[type]; }