index.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. import 'core-js/modules/es6.map';
  2. import 'core-js/modules/es6.set';
  3. import 'core-js/modules/es6.weak-map';
  4. import 'core-js/modules/es6.weak-set';
  5. import 'core-js/modules/es6.promise';
  6. import 'core-js/modules/es6.symbol';
  7. import 'core-js/modules/es6.object.assign';
  8. import 'core-js/modules/es6.object.is';
  9. import 'core-js/modules/es6.object.set-prototype-of';
  10. import 'core-js/modules/es6.function.name';
  11. import 'core-js/modules/es6.string.raw';
  12. import 'core-js/modules/es6.string.from-code-point';
  13. import 'core-js/modules/es6.string.code-point-at';
  14. import 'core-js/modules/es6.string.repeat';
  15. import 'core-js/modules/es6.string.starts-with';
  16. import 'core-js/modules/es6.string.ends-with';
  17. import 'core-js/modules/es6.string.includes';
  18. import 'core-js/modules/es6.regexp.flags';
  19. import 'core-js/modules/es6.regexp.match';
  20. import 'core-js/modules/es6.regexp.replace';
  21. import 'core-js/modules/es6.regexp.split';
  22. import 'core-js/modules/es6.regexp.search';
  23. import 'core-js/modules/es6.array.from';
  24. import 'core-js/modules/es6.array.of';
  25. import 'core-js/modules/es6.array.copy-within';
  26. import 'core-js/modules/es6.array.find';
  27. import 'core-js/modules/es6.array.find-index';
  28. import 'core-js/modules/es6.array.fill';
  29. import 'core-js/modules/es6.array.iterator';
  30. import 'core-js/modules/es6.number.is-finite';
  31. import 'core-js/modules/es6.number.is-integer';
  32. import 'core-js/modules/es6.number.is-safe-integer';
  33. import 'core-js/modules/es6.number.is-nan';
  34. import 'core-js/modules/es6.number.epsilon';
  35. import 'core-js/modules/es6.number.min-safe-integer';
  36. import 'core-js/modules/es6.number.max-safe-integer';
  37. import 'core-js/modules/es7.array.includes';
  38. import 'core-js/modules/es7.object.values';
  39. import 'core-js/modules/es7.object.entries';
  40. import 'core-js/modules/es7.object.get-own-property-descriptors';
  41. import 'core-js/modules/es7.string.pad-start';
  42. import 'core-js/modules/es7.string.pad-end';
  43. import 'core-js/modules/web.immediate';
  44. import 'core-js/modules/web.dom.iterable';
  45. import { getRegisteredEditorNames, registerEditor, getEditor } from './editors';
  46. import { getRegisteredRendererNames, getRenderer, registerRenderer } from './renderers';
  47. import { getRegisteredValidatorNames, getValidator, registerValidator } from './validators';
  48. import { getRegisteredCellTypeNames, getCellType, registerCellType } from './cellTypes';
  49. import Core from './core';
  50. import jQueryWrapper from './helpers/wrappers/jquery';
  51. import EventManager, { getListenersCounter } from './eventManager';
  52. import Hooks from './pluginHooks';
  53. import GhostTable from './utils/ghostTable';
  54. import * as arrayHelpers from './helpers/array';
  55. import * as browserHelpers from './helpers/browser';
  56. import * as dataHelpers from './helpers/data';
  57. import * as dateHelpers from './helpers/date';
  58. import * as featureHelpers from './helpers/feature';
  59. import * as functionHelpers from './helpers/function';
  60. import * as mixedHelpers from './helpers/mixed';
  61. import * as numberHelpers from './helpers/number';
  62. import * as objectHelpers from './helpers/object';
  63. import * as settingHelpers from './helpers/setting';
  64. import * as stringHelpers from './helpers/string';
  65. import * as unicodeHelpers from './helpers/unicode';
  66. import * as domHelpers from './helpers/dom/element';
  67. import * as domEventHelpers from './helpers/dom/event';
  68. import * as plugins from './plugins/index';
  69. import { registerPlugin } from './plugins';
  70. import DefaultSettings from './defaultSettings';
  71. function Handsontable(rootElement, userSettings) {
  72. var instance = new Core(rootElement, userSettings || {});
  73. instance.init();
  74. return instance;
  75. }
  76. jQueryWrapper(Handsontable);
  77. Handsontable.Core = Core;
  78. Handsontable.DefaultSettings = DefaultSettings;
  79. Handsontable.EventManager = EventManager;
  80. Handsontable._getListenersCounter = getListenersCounter; // For MemoryLeak tests
  81. Handsontable.buildDate = __HOT_BUILD_DATE__;
  82. Handsontable.packageName = __HOT_PACKAGE_NAME__;
  83. Handsontable.version = __HOT_VERSION__;
  84. var baseVersion = __HOT_BASE_VERSION__;
  85. if (baseVersion) {
  86. Handsontable.baseVersion = baseVersion;
  87. }
  88. // Export Hooks singleton
  89. Handsontable.hooks = Hooks.getSingleton();
  90. // TODO: Remove this exports after rewrite tests about this module
  91. Handsontable.__GhostTable = GhostTable;
  92. //
  93. // Export all helpers to the Handsontable object
  94. var HELPERS = [arrayHelpers, browserHelpers, dataHelpers, dateHelpers, featureHelpers, functionHelpers, mixedHelpers, numberHelpers, objectHelpers, settingHelpers, stringHelpers, unicodeHelpers];
  95. var DOM = [domHelpers, domEventHelpers];
  96. Handsontable.helper = {};
  97. Handsontable.dom = {};
  98. // Fill general helpers.
  99. arrayHelpers.arrayEach(HELPERS, function (helper) {
  100. arrayHelpers.arrayEach(Object.getOwnPropertyNames(helper), function (key) {
  101. if (key.charAt(0) !== '_') {
  102. Handsontable.helper[key] = helper[key];
  103. }
  104. });
  105. });
  106. // Fill DOM helpers.
  107. arrayHelpers.arrayEach(DOM, function (helper) {
  108. arrayHelpers.arrayEach(Object.getOwnPropertyNames(helper), function (key) {
  109. if (key.charAt(0) !== '_') {
  110. Handsontable.dom[key] = helper[key];
  111. }
  112. });
  113. });
  114. // Export cell types.
  115. Handsontable.cellTypes = {};
  116. arrayHelpers.arrayEach(getRegisteredCellTypeNames(), function (cellTypeName) {
  117. Handsontable.cellTypes[cellTypeName] = getCellType(cellTypeName);
  118. });
  119. Handsontable.cellTypes.registerCellType = registerCellType;
  120. Handsontable.cellTypes.getCellType = getCellType;
  121. // Export all registered editors from the Handsontable.
  122. Handsontable.editors = {};
  123. arrayHelpers.arrayEach(getRegisteredEditorNames(), function (editorName) {
  124. Handsontable.editors[stringHelpers.toUpperCaseFirst(editorName) + 'Editor'] = getEditor(editorName);
  125. });
  126. Handsontable.editors.registerEditor = registerEditor;
  127. Handsontable.editors.getEditor = getEditor;
  128. // Export all registered renderers from the Handsontable.
  129. Handsontable.renderers = {};
  130. arrayHelpers.arrayEach(getRegisteredRendererNames(), function (rendererName) {
  131. var renderer = getRenderer(rendererName);
  132. if (rendererName === 'base') {
  133. Handsontable.renderers.cellDecorator = renderer;
  134. }
  135. Handsontable.renderers[stringHelpers.toUpperCaseFirst(rendererName) + 'Renderer'] = renderer;
  136. });
  137. Handsontable.renderers.registerRenderer = registerRenderer;
  138. Handsontable.renderers.getRenderer = getRenderer;
  139. // Export all registered validators from the Handsontable.
  140. Handsontable.validators = {};
  141. arrayHelpers.arrayEach(getRegisteredValidatorNames(), function (validatorName) {
  142. Handsontable.validators[stringHelpers.toUpperCaseFirst(validatorName) + 'Validator'] = getValidator(validatorName);
  143. });
  144. Handsontable.validators.registerValidator = registerValidator;
  145. Handsontable.validators.getValidator = getValidator;
  146. // Export all registered plugins from the Handsontable.
  147. Handsontable.plugins = {};
  148. arrayHelpers.arrayEach(Object.getOwnPropertyNames(plugins), function (pluginName) {
  149. var plugin = plugins[pluginName];
  150. if (pluginName === 'Base') {
  151. Handsontable.plugins[pluginName + 'Plugin'] = plugin;
  152. } else {
  153. Handsontable.plugins[pluginName] = plugin;
  154. }
  155. });
  156. Handsontable.plugins.registerPlugin = registerPlugin;
  157. // Export Handsontable
  158. module.exports = Handsontable;