@reactual/handsontable
Version:
Spreadsheet-like data grid editor
170 lines (134 loc) • 5.34 kB
JavaScript
import 'babel-polyfill';
import './css/bootstrap.css';
import './css/handsontable.css';
import './css/mobile.handsontable.css';
import {getRegisteredEditorNames, registerEditor, getEditor} from './editors';
import {getRegisteredRendererNames, getRenderer, registerRenderer} from './renderers';
import {getRegisteredValidatorNames, getValidator, registerValidator} from './validators';
import {getRegisteredCellTypeNames, getCellType, registerCellType} from './cellTypes';
import Core from './core';
import jQueryWrapper from './helpers/wrappers/jquery';
import EventManager, {getListenersCounter} from './eventManager';
import Hooks from './pluginHooks';
import GhostTable from './utils/ghostTable';
import * as arrayHelpers from './helpers/array';
import * as browserHelpers from './helpers/browser';
import * as dataHelpers from './helpers/data';
import * as dateHelpers from './helpers/date';
import * as featureHelpers from './helpers/feature';
import * as functionHelpers from './helpers/function';
import * as mixedHelpers from './helpers/mixed';
import * as numberHelpers from './helpers/number';
import * as objectHelpers from './helpers/object';
import * as settingHelpers from './helpers/setting';
import * as stringHelpers from './helpers/string';
import * as unicodeHelpers from './helpers/unicode';
import * as domHelpers from './helpers/dom/element';
import * as domEventHelpers from './helpers/dom/event';
import * as plugins from './plugins/index';
import {registerPlugin} from './plugins';
import DefaultSettings from './defaultSettings';
import {rootInstanceSymbol} from './utils/rootInstance';
function Handsontable(rootElement, userSettings) {
const instance = new Core(rootElement, userSettings || {}, rootInstanceSymbol);
instance.init();
return instance;
}
jQueryWrapper(Handsontable);
Handsontable.Core = Core;
Handsontable.DefaultSettings = DefaultSettings;
Handsontable.EventManager = EventManager;
Handsontable._getListenersCounter = getListenersCounter; // For MemoryLeak tests
Handsontable.buildDate = process.env.HOT_BUILD_DATE;
Handsontable.packageName = process.env.HOT_PACKAGE_NAME;
Handsontable.version = process.env.HOT_VERSION;
const baseVersion = process.env.HOT_BASE_VERSION;
if (baseVersion) {
Handsontable.baseVersion = baseVersion;
}
// Export Hooks singleton
Handsontable.hooks = Hooks.getSingleton();
// TODO: Remove this exports after rewrite tests about this module
Handsontable.__GhostTable = GhostTable;
//
// Export all helpers to the Handsontable object
const HELPERS = [
arrayHelpers,
browserHelpers,
dataHelpers,
dateHelpers,
featureHelpers,
functionHelpers,
mixedHelpers,
numberHelpers,
objectHelpers,
settingHelpers,
stringHelpers,
unicodeHelpers,
];
const DOM = [
domHelpers,
domEventHelpers,
];
Handsontable.helper = {};
Handsontable.dom = {};
// Fill general helpers.
arrayHelpers.arrayEach(HELPERS, (helper) => {
arrayHelpers.arrayEach(Object.getOwnPropertyNames(helper), (key) => {
if (key.charAt(0) !== '_') {
Handsontable.helper[key] = helper[key];
}
});
});
// Fill DOM helpers.
arrayHelpers.arrayEach(DOM, (helper) => {
arrayHelpers.arrayEach(Object.getOwnPropertyNames(helper), (key) => {
if (key.charAt(0) !== '_') {
Handsontable.dom[key] = helper[key];
}
});
});
// Export cell types.
Handsontable.cellTypes = {};
arrayHelpers.arrayEach(getRegisteredCellTypeNames(), (cellTypeName) => {
Handsontable.cellTypes[cellTypeName] = getCellType(cellTypeName);
});
Handsontable.cellTypes.registerCellType = registerCellType;
Handsontable.cellTypes.getCellType = getCellType;
// Export all registered editors from the Handsontable.
Handsontable.editors = {};
arrayHelpers.arrayEach(getRegisteredEditorNames(), (editorName) => {
Handsontable.editors[`${stringHelpers.toUpperCaseFirst(editorName)}Editor`] = getEditor(editorName);
});
Handsontable.editors.registerEditor = registerEditor;
Handsontable.editors.getEditor = getEditor;
// Export all registered renderers from the Handsontable.
Handsontable.renderers = {};
arrayHelpers.arrayEach(getRegisteredRendererNames(), (rendererName) => {
const renderer = getRenderer(rendererName);
if (rendererName === 'base') {
Handsontable.renderers.cellDecorator = renderer;
}
Handsontable.renderers[`${stringHelpers.toUpperCaseFirst(rendererName)}Renderer`] = renderer;
});
Handsontable.renderers.registerRenderer = registerRenderer;
Handsontable.renderers.getRenderer = getRenderer;
// Export all registered validators from the Handsontable.
Handsontable.validators = {};
arrayHelpers.arrayEach(getRegisteredValidatorNames(), (validatorName) => {
Handsontable.validators[`${stringHelpers.toUpperCaseFirst(validatorName)}Validator`] = getValidator(validatorName);
});
Handsontable.validators.registerValidator = registerValidator;
Handsontable.validators.getValidator = getValidator;
// Export all registered plugins from the Handsontable.
Handsontable.plugins = {};
arrayHelpers.arrayEach(Object.getOwnPropertyNames(plugins), (pluginName) => {
const plugin = plugins[pluginName];
if (pluginName === 'Base') {
Handsontable.plugins[`${pluginName}Plugin`] = plugin;
} else {
Handsontable.plugins[pluginName] = plugin;
}
});
Handsontable.plugins.registerPlugin = registerPlugin;
export default Handsontable;